def test_delete_healthmonitor_cascade_deletion_of_associations(self): transaction = ctx.session.begin(subtransactions=True) try: # create a pool and a health monitor bound together pool_info = { 'id': uuidutils.generate_uuid(), 'name': 'test_pool', 'description': 'test_pool', 'subnet_id': self._subnet_id, 'tenant_id': self._tenant_id, 'protocol': 'TCP', 'lb_method': 'ROUND_ROBIN', 'admin_state_up': True, 'status': constants.PENDING_CREATE } pool = ldb.Pool(**pool_info) ctx.session.add(pool) monitor_info = { 'id': uuidutils.generate_uuid(), 'tenant_id': self._tenant_id, 'type': 'PING', 'delay': 30, 'max_retries': 10, 'timeout': 5, 'admin_state_up': True, 'status': constants.PENDING_CREATE } monitor = ldb.HealthMonitor(**monitor_info) ctx.session.add(monitor) ctx.session.flush() assoc = ldb.PoolMonitorAssociation(pool_id=pool.id, monitor_id=monitor.id) ctx.session.add(assoc) ctx.session.flush() # check if all Pool associations have been deleted by cascade self.plugin.delete_health_monitor(ctx, monitor.id) qry = ctx.session.query(ldb.PoolMonitorAssociation) qry = qry.filter_by(monitor_id=monitor.id) self.assertFalse(qry.all()) finally: transaction.rollback()