def setUp(self): """Setup our tests""" # Initialize cdb and credentials db.configure_db({'sql_connection': 'sqlite:///:memory:'}) cdb.initialize() creds.Store.initialize() # Create the ucs inventory object self._ucs_inventory = UCSInventory() self.inventory = self._ucs_inventory._inventory # Create a plugin instance to create networks/ports self._l2network = L2Network()
class TestUCSInventory(unittest.TestCase): """ Tests for the UCS Inventory. Each high-level operation should return some information about which devices to perform the action on. """ def setUp(self): """Setup our tests""" # Initialize cdb and credentials db.configure_db({'sql_connection': 'sqlite:///:memory:'}) cdb.initialize() creds.Store.initialize() # Create the ucs inventory object self._ucs_inventory = UCSInventory() self.inventory = self._ucs_inventory._inventory # Create a plugin instance to create networks/ports self._l2network = L2Network() def assertValidUCM(self, ip_address): """Asserts that the given ip is in the UCS inventory""" if ip_address in self.inventory.keys(): assert(1) return assert(0) def assertPortNotFound(self, cmd, args): """Asserts that the given command raises a PortNotFound exception""" cmd = getattr(self._ucs_inventory, cmd) self.assertRaises(exc.PortNotFound, cmd, args) def _test_get_all_ucms(self, cmd): """Runs tests for commands that expect a list of all UCMS""" LOG.debug("test_%s - START", cmd) results = getattr(self._ucs_inventory, cmd)([]) self.assertEqual(results[const.DEVICE_IP], self.inventory.keys()) LOG.debug("test_%s - END", cmd) def _test_with_port_creation(self, cmd, params=None): """Tests commands that requires a port to exist""" LOG.debug("test_%s - START", cmd) net = self._l2network.create_network(tenant, net_name) port = self._l2network.create_port(tenant, net[const.NET_ID], port_state, state=port_state) args = [tenant, net[const.NET_ID], port[const.PORT_ID]] if params is not None: args.extend(params) ip_address = getattr(self._ucs_inventory, cmd)(args) ip_address = ip_address[const.DEVICE_IP][0] self.assertValidUCM(ip_address) # Clean up created network and port try: self._l2network.unplug_interface( tenant, net[const.NET_ID], port[const.PORT_ID]) except: pass self._l2network.delete_port(tenant, net[const.NET_ID], port[const.PORT_ID]) self._l2network.delete_network(tenant, net[const.NET_ID]) db.clear_db() LOG.debug("test_%s - END", cmd) def _test_port_not_found(self, cmd, params=None): """Tests commands that should raise a PortNotFound exception""" # Figure out the correct name of this test name = cmd if name[-5:] == "_port": name += "_not_found" else: name += "_port_not_found" LOG.debug("test_%s - START", name) args = [tenant, 1, 1] if params is not None: args.extend(params) self.assertPortNotFound(cmd, args) LOG.debug("test_%s - END", name) def test_create_port(self): """Test that the UCS Inventory returns the correct devices to use""" LOG.debug("test_create_port - START") results = self._ucs_inventory.create_port([]) results = results[const.LEAST_RSVD_BLADE_DICT] ip_address = results[const.LEAST_RSVD_BLADE_UCSM] chassis = results[const.LEAST_RSVD_BLADE_CHASSIS] blade = results[const.LEAST_RSVD_BLADE_ID] if blade not in self.inventory[ip_address][chassis]: self.assertEqual(0, 1) self.assertEqual(1, 1) LOG.debug("test_create_port - END") def test_get_all_networks(self): """Test that the UCS Inventory returns the correct devices to use""" self._test_get_all_ucms('get_all_networks') def test_create_network(self): """Test that the UCS Inventory returns the correct devices to use""" self._test_get_all_ucms('create_network') def test_delete_network(self): """Test that the UCS Inventory returns the correct devices to use""" self._test_get_all_ucms('delete_network') def test_get_network_details(self): """Test that the UCS Inventory returns the correct devices to use""" self._test_get_all_ucms('get_network_details') def test_update_network(self): """Test that the UCS Inventory returns the correct devices to use""" self._test_get_all_ucms('update_network') def test_get_all_ports(self): """Test that the UCS Inventory returns the correct devices to use""" self._test_get_all_ucms('get_all_ports') def test_delete_port(self): """Test that the UCS Inventory returns a valid UCM""" self._test_with_port_creation('delete_port') def test_get_port_details(self): """Test that the UCS Inventory returns a valid UCM""" self._test_with_port_creation('get_port_details') def test_update_port(self): """Test that the UCS Inventory returns a valid UCM""" self._test_with_port_creation('update_port', [port_state]) def test_plug_interface(self): """Test that the UCS Inventory returns a valid UCM""" self._test_with_port_creation('plug_interface', [interface_id]) def test_unplug_interface(self): """Test that the UCS Inventory returns a valid UCM""" self._test_with_port_creation('unplug_interface') def test_update_port_not_found(self): """Test that the UCS Inventory raises a PortNotFound exception""" self._test_port_not_found('update_port') def test_get_port_details_port_not_found(self): """Test that the UCS Inventory raises a PortNotFound exception""" self._test_port_not_found('get_port_details') def test_plug_interface_port_not_found(self): """Test that the UCS Inventory raises a PortNotFound exception""" self._test_port_not_found('plug_interface', [interface_id]) def test_unplug_interface_port_not_found(self): """Test that the UCS Inventory raises a PortNotFound exception""" self._test_port_not_found('unplug_interface')
class TestUCSInventory(unittest.TestCase): """ Tests for the UCS Inventory. Each high-level operation should return some information about which devices to perform the action on. """ def setUp(self): """Setup our tests""" # Initialize cdb and credentials db.configure_db({'sql_connection': 'sqlite:///:memory:'}) cdb.initialize() creds.Store.initialize() # Create the ucs inventory object self._ucs_inventory = UCSInventory() self.inventory = self._ucs_inventory._inventory # Create a plugin instance to create networks/ports self._l2network = L2Network() def assertValidUCM(self, ip_address): """Asserts that the given ip is in the UCS inventory""" if ip_address in self.inventory.keys(): assert (1) return assert (0) def assertPortNotFound(self, cmd, args): """Asserts that the given command raises a PortNotFound exception""" cmd = getattr(self._ucs_inventory, cmd) self.assertRaises(exc.PortNotFound, cmd, args) def _test_get_all_ucms(self, cmd): """Runs tests for commands that expect a list of all UCMS""" LOG.debug("test_%s - START", cmd) results = getattr(self._ucs_inventory, cmd)([]) self.assertEqual(results[const.DEVICE_IP], self.inventory.keys()) LOG.debug("test_%s - END", cmd) def _test_with_port_creation(self, cmd, params=None): """Tests commands that requires a port to exist""" LOG.debug("test_%s - START", cmd) net = self._l2network.create_network(tenant, net_name) port = self._l2network.create_port(tenant, net[const.NET_ID], port_state, state=port_state) args = [tenant, net[const.NET_ID], port[const.PORT_ID]] if params is not None: args.extend(params) ip_address = getattr(self._ucs_inventory, cmd)(args) ip_address = ip_address[const.DEVICE_IP][0] self.assertValidUCM(ip_address) # Clean up created network and port try: self._l2network.unplug_interface(tenant, net[const.NET_ID], port[const.PORT_ID]) except: pass self._l2network.delete_port(tenant, net[const.NET_ID], port[const.PORT_ID]) self._l2network.delete_network(tenant, net[const.NET_ID]) db.clear_db() LOG.debug("test_%s - END", cmd) def _test_port_not_found(self, cmd, params=None): """Tests commands that should raise a PortNotFound exception""" # Figure out the correct name of this test name = cmd if name[-5:] == "_port": name += "_not_found" else: name += "_port_not_found" LOG.debug("test_%s - START", name) args = [tenant, 1, 1] if params is not None: args.extend(params) self.assertPortNotFound(cmd, args) LOG.debug("test_%s - END", name) def test_create_port(self): """Test that the UCS Inventory returns the correct devices to use""" LOG.debug("test_create_port - START") results = self._ucs_inventory.create_port([]) results = results[const.LEAST_RSVD_BLADE_DICT] ip_address = results[const.LEAST_RSVD_BLADE_UCSM] chassis = results[const.LEAST_RSVD_BLADE_CHASSIS] blade = results[const.LEAST_RSVD_BLADE_ID] if blade not in self.inventory[ip_address][chassis]: self.assertEqual(0, 1) self.assertEqual(1, 1) LOG.debug("test_create_port - END") def test_get_all_networks(self): """Test that the UCS Inventory returns the correct devices to use""" self._test_get_all_ucms('get_all_networks') def test_create_network(self): """Test that the UCS Inventory returns the correct devices to use""" self._test_get_all_ucms('create_network') def test_delete_network(self): """Test that the UCS Inventory returns the correct devices to use""" self._test_get_all_ucms('delete_network') def test_get_network_details(self): """Test that the UCS Inventory returns the correct devices to use""" self._test_get_all_ucms('get_network_details') def test_update_network(self): """Test that the UCS Inventory returns the correct devices to use""" self._test_get_all_ucms('update_network') def test_get_all_ports(self): """Test that the UCS Inventory returns the correct devices to use""" self._test_get_all_ucms('get_all_ports') def test_delete_port(self): """Test that the UCS Inventory returns a valid UCM""" self._test_with_port_creation('delete_port') def test_get_port_details(self): """Test that the UCS Inventory returns a valid UCM""" self._test_with_port_creation('get_port_details') def test_update_port(self): """Test that the UCS Inventory returns a valid UCM""" self._test_with_port_creation('update_port', [port_state]) def test_plug_interface(self): """Test that the UCS Inventory returns a valid UCM""" self._test_with_port_creation('plug_interface', [interface_id]) def test_unplug_interface(self): """Test that the UCS Inventory returns a valid UCM""" self._test_with_port_creation('unplug_interface') def test_update_port_not_found(self): """Test that the UCS Inventory raises a PortNotFound exception""" self._test_port_not_found('update_port') def test_get_port_details_port_not_found(self): """Test that the UCS Inventory raises a PortNotFound exception""" self._test_port_not_found('get_port_details') def test_plug_interface_port_not_found(self): """Test that the UCS Inventory raises a PortNotFound exception""" self._test_port_not_found('plug_interface', [interface_id]) def test_unplug_interface_port_not_found(self): """Test that the UCS Inventory raises a PortNotFound exception""" self._test_port_not_found('unplug_interface')