def setUp(self): self._start_container() self.container.start_rel_from_url('res/deploy/r2coi.yml') self.ems = ExchangeManagementServiceClient() self.rr = ResourceRegistryServiceClient() orglist, _ = self.rr.find_resources(RT.Org) if len(orglist) < 1: raise StandardError("No orgs found") self.org_id = orglist[0]._id # we test actual exchange interaction in pyon, so it's fine to mock the broker interaction here self.container.ex_manager.create_xs = Mock() self.container.ex_manager.delete_xs = Mock() self.container.ex_manager.create_xp = Mock() self.container.ex_manager.delete_xp = Mock()
def setUp(self): self._start_container() self.container.start_rel_from_url('res/deploy/r2coi.yml') self.ems = ExchangeManagementServiceClient() self.rr = ResourceRegistryServiceClient() # we want the ex manager to do its thing, but without actual calls to broker # just mock out the transport self.container.ex_manager._priviledged_transport = Mock(BaseTransport)
def setUp(self): self._start_container() self.container.start_rel_from_url('res/deploy/r2coi.yml') self.ems = ExchangeManagementServiceClient() self.rr = ResourceRegistryServiceClient() orglist, _ = self.rr.find_resources(RT.Org) if not len(orglist) == 1: raise StandardError("Unexpected number of orgs found") self.org_id = orglist[0]._id # we test actual exchange interaction in pyon, so it's fine to mock the broker interaction here self.container.ex_manager = Mock(exchange.ExchangeManager)
class TestExchangeManagementServiceInt(IonIntegrationTestCase): def setUp(self): self._start_container() self.container.start_rel_from_url('res/deploy/r2coi.yml') self.ems = ExchangeManagementServiceClient() self.rr = ResourceRegistryServiceClient() orglist, _ = self.rr.find_resources(RT.Org) if not len(orglist) == 1: raise StandardError("Unexpected number of orgs found") self.org_id = orglist[0]._id # we test actual exchange interaction in pyon, so it's fine to mock the broker interaction here self.container.ex_manager = Mock(exchange.ExchangeManager) @attr('LOCOINT') @unittest.skipIf(os.getenv('CEI_LAUNCH_TEST', False),'Test reaches into container, doesn\'t work with CEI') def test_xs_create_delete(self): exchange_space = ExchangeSpace(name="bobo") esid = self.ems.create_exchange_space(exchange_space, self.org_id) # should be able to pull from RR an exchange space es2 = self.rr.read(esid) self.assertEquals(exchange_space.name, es2.name) # should have an exchange declared on the broker self.container.ex_manager.create_xs.assert_called_once_with('bobo', use_ems=False) # should have an assoc to an org orglist, _ = self.rr.find_subjects(RT.Org, PRED.hasExchangeSpace, esid, id_only=True) self.assertEquals(len(orglist), 1) self.assertEquals(orglist[0], self.org_id) self.ems.delete_exchange_space(esid) # should no longer have that id in the RR self.assertRaises(NotFound, self.rr.read, esid) # should no longer have an assoc to an org orglist2, _ = self.rr.find_subjects(RT.Org, PRED.hasExchangeSpace, esid, id_only=True) self.assertEquals(len(orglist2), 0) # should no longer have that exchange declared self.assertEquals(self.container.ex_manager.delete_xs.call_count, 1) self.assertIn('bobo', self.container.ex_manager.delete_xs.call_args[0][0].exchange) # prefixed with sysname def test_xs_delete_without_create(self): self.assertRaises(NotFound, self.ems.delete_exchange_space, '123') @attr('LOCOINT') @unittest.skipIf(os.getenv('CEI_LAUNCH_TEST', False),'Test reaches into container, doesn\'t work with CEI') def test_xp_create_delete(self): # xp needs an xs first exchange_space = ExchangeSpace(name="doink") esid = self.ems.create_exchange_space(exchange_space, self.org_id) exchange_point = ExchangePoint(name="hammer") epid = self.ems.create_exchange_point(exchange_point, esid) # should be in RR ep2 = self.rr.read(epid) self.assertEquals(exchange_point.name, ep2.name) # should be associated to the XS as well xslist, _ = self.rr.find_subjects(RT.ExchangeSpace, PRED.hasExchangePoint, epid, id_only=True) self.assertEquals(len(xslist), 1) self.assertEquals(xslist[0], esid) # should exist on broker (both xp and xs) self.container.ex_manager.create_xs.assert_called_once_with('doink', use_ems=False) self.assertIn('hammer', self.container.ex_manager.create_xp.call_args[0]) self.ems.delete_exchange_point(epid) self.ems.delete_exchange_space(esid) # should no longer be in RR self.assertRaises(NotFound, self.rr.read, epid) # should no longer be associated xslist2, _ = self.rr.find_subjects(RT.ExchangeSpace, PRED.hasExchangePoint, epid, id_only=True) self.assertEquals(len(xslist2), 0) # should no longer exist on broker (both xp and xs) def test_xp_create_then_delete_xs(self): # xp needs an xs first exchange_space = ExchangeSpace(name="doink") esid = self.ems.create_exchange_space(exchange_space, self.org_id) exchange_point = ExchangePoint(name="hammer") epid = self.ems.create_exchange_point(exchange_point, esid) # delete xs self.ems.delete_exchange_space(esid) # should no longer have an association xslist2, _ = self.rr.find_subjects(RT.ExchangeSpace, PRED.hasExchangePoint, epid, id_only=True) self.assertEquals(len(xslist2), 0) # TEST ONLY: have to clean up the xp or we leave junk on the broker # we have to do it manually because the xs is gone #self.ems.delete_exchange_point(epid) xs = exchange.ExchangeSpace(self.container.ex_manager, exchange_space.name) xp = exchange.ExchangePoint(self.container.ex_manager, exchange_point.name, xs, 'ttree') self.container.ex_manager.delete_xp(xp, use_ems=False) def test_xs_create_update(self): raise unittest.SkipTest("Test not implemented yet") def test_xn_declare_and_undeclare(self): # xn needs an xs first exchange_space = ExchangeSpace(name="bozo") esid = self.ems.create_exchange_space(exchange_space, self.org_id) exchange_name = ExchangeName(name='shoes', xn_type="XN_PROCESS") enid = self.ems.declare_exchange_name(exchange_name, esid) # should be in RR en2 = self.rr.read(enid) self.assertEquals(exchange_name.name, en2.name) # should have an assoc from XN to XS xnlist, _ = self.rr.find_subjects(RT.ExchangeSpace, PRED.hasExchangeName, enid, id_only=True) self.assertEquals(len(xnlist), 1) self.assertEquals(xnlist[0], esid) # container API got called, will have declared a queue self.ems.undeclare_exchange_name(enid) # canonical name = xn id in current impl def test_xn_declare_no_xs(self): exchange_name = ExchangeName(name="shoez", xn_type='XN_PROCESS') self.assertRaises(NotFound, self.ems.declare_exchange_name, exchange_name, '11') def test_xn_undeclare_without_declare(self): self.assertRaises(NotFound, self.ems.undeclare_exchange_name, 'some_non_id') def test_xn_declare_then_delete_xs(self): # xn needs an xs first exchange_space = ExchangeSpace(name="bozo") esid = self.ems.create_exchange_space(exchange_space, self.org_id) exchange_name = ExchangeName(name='shnoz', xn_type="XN_PROCESS") enid = self.ems.declare_exchange_name(exchange_name, esid) # delete the XS self.ems.delete_exchange_space(esid) # no longer should have assoc from XS to XN xnlist, _ = self.rr.find_subjects(RT.ExchangeSpace, PRED.hasExchangeName, enid, id_only=True) self.assertEquals(len(xnlist), 0)
class TestExchangeManagementServiceInt(IonIntegrationTestCase): def setUp(self): self._start_container() self.container.start_rel_from_url('res/deploy/r2coi.yml') self.ems = ExchangeManagementServiceClient() self.rr = ResourceRegistryServiceClient() orglist, _ = self.rr.find_resources(RT.Org) if len(orglist) < 1: raise StandardError("No orgs found") self.org_id = orglist[0]._id # we test actual exchange interaction in pyon, so it's fine to mock the broker interaction here self.container.ex_manager.create_xs = Mock() self.container.ex_manager.delete_xs = Mock() self.container.ex_manager.create_xp = Mock() self.container.ex_manager.delete_xp = Mock() @attr('LOCOINT') @unittest.skipIf(os.getenv('CEI_LAUNCH_TEST', False), 'Test reaches into container, doesn\'t work with CEI') def test_xs_create_delete(self): exchange_space = ExchangeSpace(name="bobo") esid = self.ems.create_exchange_space(exchange_space, self.org_id) # should be able to pull from RR an exchange space es2 = self.rr.read(esid) self.assertEquals(exchange_space.name, es2.name) # should have an exchange declared on the broker self.container.ex_manager.create_xs.assert_called_once_with( 'bobo', use_ems=False) # should have an assoc to an org orglist, _ = self.rr.find_subjects(RT.Org, PRED.hasExchangeSpace, esid, id_only=True) self.assertEquals(len(orglist), 1) self.assertEquals(orglist[0], self.org_id) self.ems.delete_exchange_space(esid) # should no longer have that id in the RR self.assertRaises(NotFound, self.rr.read, esid) # should no longer have an assoc to an org orglist2, _ = self.rr.find_subjects(RT.Org, PRED.hasExchangeSpace, esid, id_only=True) self.assertEquals(len(orglist2), 0) # should no longer have that exchange declared self.assertEquals(self.container.ex_manager.delete_xs.call_count, 1) self.assertIn('bobo', self.container.ex_manager.delete_xs.call_args[0] [0].exchange) # prefixed with sysname def test_xs_delete_without_create(self): self.assertRaises(NotFound, self.ems.delete_exchange_space, '123') @attr('LOCOINT') @unittest.skipIf(os.getenv('CEI_LAUNCH_TEST', False), 'Test reaches into container, doesn\'t work with CEI') def test_xp_create_delete(self): # xp needs an xs first exchange_space = ExchangeSpace(name="doink") esid = self.ems.create_exchange_space(exchange_space, self.org_id) exchange_point = ExchangePoint(name="hammer") epid = self.ems.create_exchange_point(exchange_point, esid) # should be in RR ep2 = self.rr.read(epid) self.assertEquals(exchange_point.name, ep2.name) # should be associated to the XS as well xslist, _ = self.rr.find_subjects(RT.ExchangeSpace, PRED.hasExchangePoint, epid, id_only=True) self.assertEquals(len(xslist), 1) self.assertEquals(xslist[0], esid) # should exist on broker (both xp and xs) self.container.ex_manager.create_xs.assert_called_once_with( 'doink', use_ems=False) self.assertIn('hammer', self.container.ex_manager.create_xp.call_args[0]) self.ems.delete_exchange_point(epid) self.ems.delete_exchange_space(esid) # should no longer be in RR self.assertRaises(NotFound, self.rr.read, epid) # should no longer be associated xslist2, _ = self.rr.find_subjects(RT.ExchangeSpace, PRED.hasExchangePoint, epid, id_only=True) self.assertEquals(len(xslist2), 0) # should no longer exist on broker (both xp and xs) @unittest.skipIf(os.getenv('CEI_LAUNCH_TEST', False), 'Test reaches into container, doesn\'t work with CEI') def test_xp_create_then_delete_xs(self): # xp needs an xs first exchange_space = ExchangeSpace(name="doink") esid = self.ems.create_exchange_space(exchange_space, self.org_id) exchange_point = ExchangePoint(name="hammer") epid = self.ems.create_exchange_point(exchange_point, esid) # delete xs self.ems.delete_exchange_space(esid) # should no longer have an association xslist2, _ = self.rr.find_subjects(RT.ExchangeSpace, PRED.hasExchangePoint, epid, id_only=True) self.assertEquals(len(xslist2), 0) # TEST ONLY: have to clean up the xp or we leave junk on the broker # we have to do it manually because the xs is gone #self.ems.delete_exchange_point(epid) # @TODO: reaching into ex manager for transport is clunky xs = exchange.ExchangeSpace( self.container.ex_manager, self.container.ex_manager._priviledged_transport, exchange_space.name) xp = exchange.ExchangePoint( self.container.ex_manager, self.container.ex_manager._priviledged_transport, exchange_point.name, xs, 'ttree') self.container.ex_manager.delete_xp(xp, use_ems=False) def test_xn_declare_and_undeclare(self): # xn needs an xs first exchange_space = ExchangeSpace(name="bozo") esid = self.ems.create_exchange_space(exchange_space, self.org_id) exchange_name = ExchangeName(name='shoes', xn_type="XN_PROCESS") enid = self.ems.declare_exchange_name(exchange_name, esid) # should be in RR en2 = self.rr.read(enid) self.assertEquals(exchange_name.name, en2.name) # should have an assoc from XN to XS xnlist, _ = self.rr.find_subjects(RT.ExchangeSpace, PRED.hasExchangeName, enid, id_only=True) self.assertEquals(len(xnlist), 1) self.assertEquals(xnlist[0], esid) # container API got called, will have declared a queue self.ems.undeclare_exchange_name( enid) # canonical name = xn id in current impl def test_xn_declare_no_xs(self): exchange_name = ExchangeName(name="shoez", xn_type='XN_PROCESS') self.assertRaises(NotFound, self.ems.declare_exchange_name, exchange_name, '11') def test_xn_undeclare_without_declare(self): self.assertRaises(NotFound, self.ems.undeclare_exchange_name, 'some_non_id') @unittest.skipIf(os.getenv('CEI_LAUNCH_TEST', False), 'Test reaches into container, doesn\'t work with CEI') def test_xn_declare_then_delete_xs(self): # xn needs an xs first exchange_space = ExchangeSpace(name="bozo") esid = self.ems.create_exchange_space(exchange_space, self.org_id) exchange_name = ExchangeName(name='shnoz', xn_type="XN_PROCESS") enid = self.ems.declare_exchange_name(exchange_name, esid) # delete the XS self.ems.delete_exchange_space(esid) # no longer should have assoc from XS to XN xnlist, _ = self.rr.find_subjects(RT.ExchangeSpace, PRED.hasExchangeName, enid, id_only=True) self.assertEquals(len(xnlist), 0) # cleanup: delete the XN (assoc already removed, so we reach into the implementation here) # @TODO: reaching into ex manager for transport is clunky self.rr.delete(enid) xs = exchange.ExchangeSpace( self.container.ex_manager, self.container.ex_manager._priviledged_transport, exchange_space.name) xn = exchange.ExchangeName( self.container.ex_manager, self.container.ex_manager._priviledged_transport, exchange_name.name, xs) self.container.ex_manager.delete_xn(xn, use_ems=False)