def test_map_bidi(self): host = '192.168.122.10' address = '{}:A'.format(host) user = '******' password = '******' src_port = '{}/1/003'.format(address) dst_port = '{}/1/004'.format(address) self.driver_commands._mapping_check_delay = 0.1 connected_port_show_a = set_port_connected('E3', 'W4', PORT_SHOW_MATRIX_A) connected_port_show_a = set_port_connected('E4', 'W3', connected_port_show_a) emu = CliEmulator([ Command('', DEFAULT_PROMPT), Command('port show', PORT_SHOW_MATRIX_A), Command( 'connection create A3 to A4', '''ROME[TECH]# connection create A3 to A4 OK - request added to pending queue (A3-A4) ROME[TECH]# 08-06-2019 09:01 CONNECTING... 08-06-2019 09:01 CONNECTION OPERATION SUCCEEDED:E3[1AE3]<->W4[1AW4] OP:connect 08-06-2019 09:01 CONNECTION OPERATION SUCCEEDED:E4[1AE2]<->W3[1AW3] OP:connect 08-06-2019 09:01 Connection A3<->A4 completed successfully '''), Command('connection show pending', CONNECTION_PENDING_EMPTY), Command('port show', connected_port_show_a), ]) self.send_line_func_map[host] = emu.send_line self.receive_all_func_map[host] = emu.receive_all self.driver_commands.login(address, user, password) self.driver_commands.map_bidi(src_port, dst_port) emu.check_calls()
def test_map_clear_to_matrix_b(self): host = '192.168.122.10' address = '{}:B'.format(host) user = '******' password = '******' src_port = '{}/1/249'.format(address) dst_ports = ['{}/1/253'.format(address)] self.driver_commands._mapping_check_delay = 0.1 disconnected_port_show_b = set_port_disconnected( 'E249', PORT_SHOW_MATRIX_B) disconnected_port_show_b = set_port_disconnected( 'W249', disconnected_port_show_b) emu = CliEmulator([ Command('', DEFAULT_PROMPT), Command('port show', PORT_SHOW_MATRIX_B), Command( 'connection disconnect E249 from W253', '''ROME[TECH]# connection disconnect E249 from W253 OK - request added to pending queue (E249-W253) ROME[TECH]# 08-05-2019 12:19 DISCONNECTING... 08-05-2019 12:19 CONNECTION OPERATION SUCCEEDED:E249[1AE249]<->W253[1AW253] OP:disconnect '''), Command('connection show pending', CONNECTION_PENDING_EMPTY), Command('port show', disconnected_port_show_b), ]) self.send_line_func_map[host] = emu.send_line self.receive_all_func_map[host] = emu.receive_all self.driver_commands.login(address, user, password) self.driver_commands.map_clear_to(src_port, dst_ports) emu.check_calls()
def test_map_bidi_one_connection(self): host = '192.168.122.10' address = '{}:A'.format(host) user = '******' password = '******' src_port = '{}/1/001'.format(address) dst_port = '{}/1/002'.format(address) self.driver_commands._mapping_check_delay = 0.1 connected_port_show_a = set_port_connected('E2', 'W1', PORT_SHOW_MATRIX_A) emu = CliEmulator([ Command('', DEFAULT_PROMPT), Command('port show', PORT_SHOW_MATRIX_A), Command( 'connection create A1 to A2', '''ROME[TECH]# connection create A1 to A2 OK - request added to pending queue (A1-A2) ROME[TECH]# 08-06-2019 09:01 CONNECTING... 08-06-2019 09:01 CONNECTION OPERATION SKIPPED(already done):E1[1AE1]<->W2[1AW2] OP:connect 08-06-2019 09:01 CONNECTION OPERATION SUCCEEDED:E2[1AE2]<->W1[1AW1] OP:connect 08-06-2019 09:01 Connection A1<->A2 completed successfully '''), Command('connection show pending', CONNECTION_PENDING_EMPTY), Command('port show', connected_port_show_a), ]) self.send_line_func_map[host] = emu.send_line self.receive_all_func_map[host] = emu.receive_all self.driver_commands.login(address, user, password) self.driver_commands.map_bidi(src_port, dst_port) emu.check_calls()
def test_map_bidi_q_ports(self): host = '192.168.122.10' address = '{}:Q'.format(host) user = '******' password = '******' src_port = '{}/1/003'.format(address) dst_port = '{}/1/004'.format(address) self.driver_commands._mapping_check_delay = 0.1 connected_port_show = set_port_connected('E5', 'W8', PORT_SHOW_MATRIX_Q) connected_port_show = set_port_connected('E6', 'W7', connected_port_show) connected_port_show = set_port_connected('E133', 'W136', connected_port_show) connected_port_show = set_port_connected('E134', 'W135', connected_port_show) connected_port_show = set_port_connected('E7', 'W6', connected_port_show) connected_port_show = set_port_connected('E8', 'W5', connected_port_show) connected_port_show = set_port_connected('E135', 'W134', connected_port_show) connected_port_show = set_port_connected('E136', 'W133', connected_port_show) emu = CliEmulator([ Command('', DEFAULT_PROMPT), Command('port show', PORT_SHOW_MATRIX_Q), Command( 'connection create Q3 to Q4', '''ROME[TECH]# connection create Q3 to Q4 OK - request added to pending queue (Q3-Q4) ROME[TECH]# 08-06-2019 09:01 CONNECTING... 08-06-2019 09:01 CONNECTION OPERATION SUCCEEDED:E5[1AE5]<->W8[1AW8] OP:connect 08-06-2019 09:01 CONNECTION OPERATION SUCCEEDED:E6[1AE5]<->W7[1AW7] OP:connect 08-06-2019 09:01 CONNECTION OPERATION SUCCEEDED:E133[1BE133]<->W136[1BW136] OP:connect 08-06-2019 09:01 CONNECTION OPERATION SUCCEEDED:E134[1BE134]<->W135[1BW135] OP:connect 08-06-2019 09:01 CONNECTION OPERATION SUCCEEDED:E7[1AE7]<->W6[1AW6] OP:connect 08-06-2019 09:01 CONNECTION OPERATION SUCCEEDED:E8[1AE8]<->W5[1AW5] OP:connect 08-06-2019 09:01 CONNECTION OPERATION SUCCEEDED:E135[1AB135]<->W134[1BW134] OP:connect 08-06-2019 09:01 CONNECTION OPERATION SUCCEEDED:E136[1AB136]<->W133[1BW133] OP:connect 08-06-2019 09:01 Connection Q3<->Q4 completed successfully '''), Command('connection show pending', CONNECTION_PENDING_EMPTY), Command('port show', connected_port_show), ]) self.send_line_func_map[host] = emu.send_line self.receive_all_func_map[host] = emu.receive_all self.driver_commands.login(address, user, password) self.driver_commands.map_bidi(src_port, dst_port) emu.check_calls()
def test_map_clear_to_matrix_q(self): host = '192.168.122.10' address = '{}:Q'.format(host) user = '******' password = '******' src_port = '{}/1/1'.format(address) dst_ports = ['{}/1/2'.format(address)] self.driver_commands._mapping_check_delay = 0.1 disconnected_ports_show = set_port_disconnected( 'E1', PORT_SHOW_MATRIX_Q) disconnected_ports_show = set_port_disconnected( 'E2', disconnected_ports_show) disconnected_ports_show = set_port_disconnected( 'E129', disconnected_ports_show) disconnected_ports_show = set_port_disconnected( 'E130', disconnected_ports_show) emu = CliEmulator([ Command('', DEFAULT_PROMPT), Command('port show', PORT_SHOW_MATRIX_Q), Command( 'connection disconnect E1 from W4', '''ROME[TECH]# connection disconnect E1 from W4 OK - request added to pending queue (E1-W4) ROME[TECH]# 08-05-2019 12:19 DISCONNECTING... 08-05-2019 12:19 CONNECTION OPERATION SUCCEEDED:E1[1AE1]<->W4[1AW4] OP:disconnect '''), Command( 'connection disconnect E129 from W132', '''ROME[TECH]# connection disconnect E129 from W132 OK - request added to pending queue (E129-W132) ROME[TECH]# 08-05-2019 12:19 DISCONNECTING... 08-05-2019 12:19 CONNECTION OPERATION SUCCEEDED:E129[1AE129]<->W2[1AW132] OP:disconnect '''), Command( 'connection disconnect E130 from W131', '''ROME[TECH]# connection disconnect E130 from W131 OK - request added to pending queue (E130-W131) ROME[TECH]# 08-05-2019 12:19 DISCONNECTING... 08-05-2019 12:19 CONNECTION OPERATION SUCCEEDED:E130[1AE130]<->W131[1AW131] OP:disconnect '''), Command( 'connection disconnect E2 from W3', '''ROME[TECH]# connection disconnect E2 from W3 OK - request added to pending queue (E2-W3) ROME[TECH]# 08-05-2019 12:19 DISCONNECTING... 08-05-2019 12:19 CONNECTION OPERATION SUCCEEDED:E2[1AE2]<->W3[1AW3] OP:disconnect '''), Command('connection show pending', CONNECTION_PENDING_EMPTY), Command('port show', disconnected_ports_show), ]) self.send_line_func_map[host] = emu.send_line self.receive_all_func_map[host] = emu.receive_all self.driver_commands.login(address, user, password) self.driver_commands.map_clear_to(src_port, dst_ports) emu.check_calls()
def test_map_bidi_with_connected_ports(self): host = '192.168.122.10' address = '{}:B'.format(host) user = '******' password = '******' src_port = '{}/1/249'.format(address) dst_port = '{}/1/253'.format(address) emu = CliEmulator([ Command('', DEFAULT_PROMPT), Command('port show', PORT_SHOW_MATRIX_B), ]) self.send_line_func_map[host] = emu.send_line self.receive_all_func_map[host] = emu.receive_all self.driver_commands.login(address, user, password) self.driver_commands.map_bidi(src_port, dst_port) emu.check_calls()
def test_map_uni_a_few_checks(self): host = '192.168.122.10' address = '{}:A'.format(host) user = '******' password = '******' src_port = '{}/1/003'.format(address) dst_ports = ['{}/1/004'.format(address)] self.driver_commands._mapping_check_delay = 0.1 connected_port_show_a = set_port_connected('E3', 'W4', PORT_SHOW_MATRIX_A) emu = CliEmulator([ Command('', DEFAULT_PROMPT), Command('port show', PORT_SHOW_MATRIX_A), Command('connection create E3 to W4', '''ROME[TECH]# connection create E3 to W4'''), Command( 'connection show pending', get_connection_pending('E3', 'W4'), ), Command('connection show pending', CONNECTION_PENDING_EMPTY), Command('port show', connected_port_show_a), ]) self.send_line_func_map[host] = emu.send_line self.receive_all_func_map[host] = emu.receive_all self.driver_commands.login(address, user, password) self.driver_commands.map_uni(src_port, dst_ports) emu.check_calls()
def test_autoload_matrix_q_choosed_another_matrix(self): host = "192.168.122.10" address = "{}:A".format(host) user = "******" password = "******" emu = CliEmulator([ Command("", DEFAULT_PROMPT), Command( "port show", PORT_SHOW_MATRIX_Q, ), Command("show board", SHOW_BOARD), ]) self.send_line_func_map[host] = emu.send_line self.receive_all_func_map[host] = emu.receive_all self.driver_commands.login(address, user, password) with self.assertRaisesRegexp(BaseRomeException, r"You should specify MatrixQ"): self.driver_commands.get_resource_description(address) emu.check_calls()
def test_map_uni_failed(self): host = '192.168.122.10' address = '{}:A'.format(host) user = '******' password = '******' src_port = '{}/1/006'.format(address) dst_ports = ['{}/1/004'.format(address)] self.driver_commands._mapping_timeout = 0.1 self.driver_commands._mapping_check_delay = 0.1 emu = CliEmulator([ Command('', DEFAULT_PROMPT), Command('port show', PORT_SHOW_MATRIX_A), Command( 'connection create E6 to W4', '''ROME[TECH]# 08-05-2019 09:32 Ports details: [E6[1AE6]] [W4[1AW4]] 08-05-2019 09:32 OPERATION VALIDATION FAILED:E6-W4 requestType=connect ROME[TECH]# '''), Command('connection show pending', CONNECTION_PENDING_EMPTY), Command('port show', PORT_SHOW_MATRIX_A), ]) self.send_line_func_map[host] = emu.send_line self.receive_all_func_map[host] = emu.receive_all self.driver_commands.login(address, user, password) with self.assertRaisesRegexp(ConnectionPortsError, 'Cannot connect port A6 to port A4'): self.driver_commands.map_uni(src_port, dst_ports) emu.check_calls()
def test_map_bidi_failed(self): host = '192.168.122.10' address = '{}:A'.format(host) user = '******' password = '******' src_port = '{}/1/003'.format(address) dst_port = '{}/1/004'.format(address) self.driver_commands._mapping_check_delay = 0.1 connected_port_show_a = set_port_connected('E3', 'W4', PORT_SHOW_MATRIX_A) emu = CliEmulator([ Command('', DEFAULT_PROMPT), Command('port show', PORT_SHOW_MATRIX_A), Command( 'connection create A3 to A4', '''ROME[TECH]# connection create A3 to A4 OK - request added to pending queue (A3-A4) ROME[TECH]# 08-06-2019 09:01 CONNECTING... 08-06-2019 09:01 CONNECTION OPERATION SUCCEEDED:E3[1AE3]<->W4[1AW4] OP:connect 08-06-2019 09:01 CONNECTION OPERATION FAILED:E4[1AE2]<->W3[1AW3] OP:connect '''), Command('connection show pending', CONNECTION_PENDING_EMPTY), Command('port show', connected_port_show_a), Command( 'connection disconnect A3 from A4', '''ROME[TECH]# connection disconnect A3 from A4 OK - request added to pending queue (A3-A4) ROME[TECH]# 08-05-2019 12:19 DISCONNECTING... 08-05-2019 12:19 CONNECTION OPERATION SUCCEEDED:E3[1AE3]<->W4[1AW4] OP:disconnect '''), Command('connection show pending', CONNECTION_PENDING_EMPTY), ]) self.send_line_func_map[host] = emu.send_line self.receive_all_func_map[host] = emu.receive_all self.driver_commands.login(address, user, password) with self.assertRaisesRegexp(ConnectionPortsError, 'Cannot connect port A3 to port A4'): self.driver_commands.map_bidi(src_port, dst_port) emu.check_calls()
def test_autoload_matrix_b(self): host = "192.168.122.10" address = "{}:B".format(host) user = "******" password = "******" expected_ports_str_range = [str(i).zfill(3) for i in range(129, 257)] emu = CliEmulator([ Command("", DEFAULT_PROMPT), Command( "port show", PORT_SHOW_MATRIX_B, ), Command("show board", SHOW_BOARD), ]) self.send_line_func_map[host] = emu.send_line self.receive_all_func_map[host] = emu.receive_all self.driver_commands.login(address, user, password) info = self.driver_commands.get_resource_description(address) self.assertIsNotNone(info) self.assertEqual(1, len(info.resource_info_list)) chassis = info.resource_info_list[0] self.assertIsInstance(chassis, Chassis) self.assertEqual("9727-4733-2222", chassis.serial_number) self.assertEqual("Rome Chassis", chassis.model_name) self.assertEqual(address, chassis.address) self.assertEqual(1, len(chassis.child_resources)) blade = chassis.child_resources.values()[0] self.assertIsInstance(blade, Blade) self.assertEqual("Rome Matrix B", blade.model_name) self.assertEqual("NA", blade.serial_number) self.assertEqual("Blade B", blade.name) self.assertEqual(address + "/B", blade.address) self.assertEqual(128, len(blade.child_resources)) self.assertItemsEqual( expected_ports_str_range, blade.child_resources.keys(), ) self.assertItemsEqual( map("Port B{}".format, expected_ports_str_range), (port.name for port in blade.child_resources.values()), ) self.assertItemsEqual( map((address + "/B/{}").format, expected_ports_str_range), (port.address for port in blade.child_resources.values()), ) connected_ports = [] for port_id, port in blade.child_resources.items(): self.assertIsInstance(port, Port) self.assertEqual("Port B{}".format(port.resource_id), port.name) if port.mapping: connected_ports.append(port) self.assertEqual(3, len(connected_ports)) self.assertDictEqual( { "Port B247": "Port B246", "Port B249": "Port B253", "Port B253": "Port B249", }, {p.name: p.mapping.name for p in connected_ports}, ) emu.check_calls()
def test_autoload_matrix_a(self): host = '192.168.122.10' address = '{}:A'.format(host) user = '******' password = '******' expected_ports_str_range = [str(i).zfill(3) for i in range(1, 129)] emu = CliEmulator([ Command('', DEFAULT_PROMPT), Command( 'port show', PORT_SHOW_MATRIX_A, ), Command('show board', SHOW_BOARD), ]) self.send_line_func_map[host] = emu.send_line self.receive_all_func_map[host] = emu.receive_all self.driver_commands.login(address, user, password) info = self.driver_commands.get_resource_description(address) self.assertIsNotNone(info) self.assertEqual(1, len(info.resource_info_list)) chassis = info.resource_info_list[0] self.assertIsInstance(chassis, Chassis) self.assertEqual('9727-4733-2222', chassis.serial_number) self.assertEqual('Rome Chassis', chassis.model_name) self.assertEqual(address, chassis.address) self.assertEqual(1, len(chassis.child_resources)) blade = chassis.child_resources.values()[0] self.assertIsInstance(blade, Blade) self.assertEqual('Rome Matrix A', blade.model_name) self.assertEqual('NA', blade.serial_number) self.assertEqual('Blade A', blade.name) self.assertEqual(address + '/A', blade.address) self.assertEqual(128, len(blade.child_resources)) self.assertItemsEqual( expected_ports_str_range, blade.child_resources.keys(), ) self.assertItemsEqual( map('Port A{}'.format, expected_ports_str_range), (port.name for port in blade.child_resources.values()), ) self.assertItemsEqual( map((address + '/A/{}').format, expected_ports_str_range), (port.address for port in blade.child_resources.values()), ) connected_ports = [] for port_id, port in blade.child_resources.items(): self.assertIsInstance(port, Port) self.assertEqual('Port A{}'.format(port.resource_id), port.name) if port.mapping: connected_ports.append(port) self.assertEqual(len(connected_ports), 1) self.assertDictEqual( {'Port A002': 'Port A001'}, {p.name: p.mapping.name for p in connected_ports}, ) emu.check_calls()
def test_autoload_matrix_q128(self): first_host = '192.168.122.10' second_host = '192.168.122.11' address = '{first_host}:{second_host}:q'.format(**locals()) user = '******' password = '******' expected_ports_str_range = [str(i).zfill(3) for i in range(1, 129)] emu1 = CliEmulator([ Command('', DEFAULT_PROMPT), Command( 'port show', PORT_SHOW_MATRIX_Q128_1, ), Command('show board', SHOW_BOARD), ], ) emu2 = CliEmulator([ Command('', DEFAULT_PROMPT), Command( 'port show', PORT_SHOW_MATRIX_Q128_2, ), Command('show board', SHOW_BOARD), ]) self.send_line_func_map.update({ first_host: emu1.send_line, second_host: emu2.send_line }) self.receive_all_func_map.update({ first_host: emu1.receive_all, second_host: emu2.receive_all }) with self.patch_sessions(): self.driver_commands.login(address, user, password) info = self.driver_commands.get_resource_description(address) self.assertIsNotNone(info) self.assertEqual(1, len(info.resource_info_list)) chassis = info.resource_info_list[0] self.assertIsInstance(chassis, Chassis) self.assertEqual('9727-4733-2222', chassis.serial_number) self.assertEqual('Rome Chassis', chassis.model_name) self.assertEqual(address, chassis.address) self.assertEqual(1, len(chassis.child_resources)) blade = chassis.child_resources.values()[0] self.assertIsInstance(blade, Blade) self.assertEqual('Rome Matrix Q', blade.model_name) self.assertEqual('NA', blade.serial_number) self.assertEqual('Blade Q', blade.name) self.assertEqual(address + '/Q', blade.address) self.assertEqual(128, len(blade.child_resources)) self.assertItemsEqual( expected_ports_str_range, blade.child_resources.keys(), ) self.assertItemsEqual( map('Port Q{}'.format, expected_ports_str_range), (port.name for port in blade.child_resources.values()), ) self.assertItemsEqual( map((address + '/Q/{}').format, expected_ports_str_range), (port.address for port in blade.child_resources.values()), ) connected_ports = [] for port_id, port in blade.child_resources.items(): self.assertIsInstance(port, Port) self.assertEqual('Port Q{}'.format(port.resource_id), port.name) if port.mapping: connected_ports.append(port) self.assertEqual(2, len(connected_ports)) self.assertDictEqual( { 'Port Q001': 'Port Q002', 'Port Q002': 'Port Q001', }, {p.name: p.mapping.name for p in connected_ports}, ) emu1.check_calls() emu2.check_calls()
def test_map_clear_matrix_q128(self): first_host = '192.168.122.10' second_host = '192.168.122.11' address = '{}:{}:Q'.format(first_host, second_host) user = '******' password = '******' ports = ['{}/1/1'.format(address)] self.driver_commands._mapping_check_delay = 0.1 ports_show_1 = set_port_disconnected('E1', PORT_SHOW_MATRIX_Q128_1) ports_show_1 = set_port_disconnected('E2', ports_show_1) ports_show_1 = set_port_disconnected('E129', ports_show_1) ports_show_1 = set_port_disconnected('E130', ports_show_1) ports_show_2 = set_port_disconnected('E1', PORT_SHOW_MATRIX_Q128_2) ports_show_2 = set_port_disconnected('E2', ports_show_2) ports_show_2 = set_port_disconnected('E129', ports_show_2) ports_show_2 = set_port_disconnected('E130', ports_show_2) emu1 = CliEmulator([ Command('', DEFAULT_PROMPT), Command('port show', PORT_SHOW_MATRIX_Q128_1), Command( 'connection disconnect E1 from W2', '''ROME[TECH]# connection disconnect E1 from W2 OK - request added to pending queue (E1-W2) ROME[TECH]# 08-05-2019 12:19 DISCONNECTING... 08-05-2019 12:19 CONNECTION OPERATION SUCCEEDED:E1[1AE1]<->W2[1AW2] OP:disconnect ''', ), Command( 'connection disconnect E129 from W130', '''ROME[TECH]# connection disconnect E129 from W130 OK - request added to pending queue (E129-W130) ROME[TECH]# 08-05-2019 12:19 DISCONNECTING... 08-05-2019 12:19 CONNECTION OPERATION SUCCEEDED:E129[1BE129]<->W130[1BW130] OP:disconnect ''', ), Command( 'connection disconnect E130 from W129', '''ROME[TECH]# connection disconnect E130 from W129 OK - request added to pending queue (E130-W129) ROME[TECH]# 08-05-2019 12:19 DISCONNECTING... 08-05-2019 12:19 CONNECTION OPERATION SUCCEEDED:E130[1BE130]<->W129[1BW129] OP:disconnect '''), Command( 'connection disconnect E2 from W1', '''ROME[TECH]# connection disconnect E2 from W1 OK - request added to pending queue (E2-W1) ROME[TECH]# 08-05-2019 12:19 DISCONNECTING... 08-05-2019 12:19 CONNECTION OPERATION SUCCEEDED:E2[1AE2]<->W1[1AW1] OP:disconnect ''', ), Command('connection show pending', CONNECTION_PENDING_EMPTY), Command('port show', ports_show_1), ]) emu2 = CliEmulator([ Command('', DEFAULT_PROMPT), Command('port show', PORT_SHOW_MATRIX_Q128_2), Command( 'connection disconnect E1 from W2', '''ROME[TECH]# connection disconnect E1 from W2 OK - request added to pending queue (E1-W2) ROME[TECH]# 08-05-2019 12:19 DISCONNECTING... 08-05-2019 12:19 CONNECTION OPERATION SUCCEEDED:E1[1AE1]<->W2[1AW2] OP:disconnect ''', ), Command( 'connection disconnect E129 from W130', '''ROME[TECH]# connection disconnect E129 from W130 OK - request added to pending queue (E129-W130) ROME[TECH]# 08-05-2019 12:19 DISCONNECTING... 08-05-2019 12:19 CONNECTION OPERATION SUCCEEDED:E129[1BE129]<->W130[1BW130] OP:disconnect ''', ), Command( 'connection disconnect E130 from W129', '''ROME[TECH]# connection disconnect E130 from W129 OK - request added to pending queue (E130-W129) ROME[TECH]# 08-05-2019 12:19 DISCONNECTING... 08-05-2019 12:19 CONNECTION OPERATION SUCCEEDED:E130[1BE130]<->W129[1BW129] OP:disconnect '''), Command( 'connection disconnect E2 from W1', '''ROME[TECH]# connection disconnect E2 from W1 OK - request added to pending queue (E2-W1) ROME[TECH]# 08-05-2019 12:19 DISCONNECTING... 08-05-2019 12:19 CONNECTION OPERATION SUCCEEDED:E2[1AE2]<->W1[1AW1] OP:disconnect ''', ), Command('connection show pending', CONNECTION_PENDING_EMPTY), Command('port show', ports_show_2), ]) self.send_line_func_map.update({ first_host: emu1.send_line, second_host: emu2.send_line }) self.receive_all_func_map.update({ first_host: emu1.receive_all, second_host: emu2.receive_all }) with self.patch_sessions(): self.driver_commands.login(address, user, password) self.driver_commands.map_clear(ports) emu1.check_calls() emu2.check_calls()
def test_autoload_matrix_q128_changed_ports(self): first_host = "192.168.122.10" second_host = "192.168.122.11" address = "{first_host}:{second_host}:q".format(**locals()) user = "******" password = "******" expected_ports_str_range = [str(i).zfill(3) for i in range(1, 129)] emu1 = CliEmulator([ Command("", DEFAULT_PROMPT), Command( "port show", PORT_SHOW_MATRIX_Q128_1, ), Command("show board", SHOW_BOARD), ], ) emu2 = CliEmulator([ Command("", DEFAULT_PROMPT), Command( "port show", PORT_SHOW_MATRIX_Q128_2_CHANGED_PORT, ), Command("show board", SHOW_BOARD), ]) self.send_line_func_map.update({ first_host: emu1.send_line, second_host: emu2.send_line }) self.receive_all_func_map.update({ first_host: emu1.receive_all, second_host: emu2.receive_all }) with self.patch_sessions(): self.driver_commands.login(address, user, password) info = self.driver_commands.get_resource_description(address) self.assertIsNotNone(info) self.assertEqual(1, len(info.resource_info_list)) chassis = info.resource_info_list[0] self.assertIsInstance(chassis, Chassis) self.assertEqual("9727-4733-2222", chassis.serial_number) self.assertEqual("Rome Chassis", chassis.model_name) self.assertEqual(address, chassis.address) self.assertEqual(1, len(chassis.child_resources)) blade = chassis.child_resources.values()[0] self.assertIsInstance(blade, Blade) self.assertEqual("Rome Matrix Q", blade.model_name) self.assertEqual("NA", blade.serial_number) self.assertEqual("Blade Q", blade.name) self.assertEqual(address + "/Q", blade.address) self.assertEqual(128, len(blade.child_resources)) self.assertItemsEqual( expected_ports_str_range, blade.child_resources.keys(), ) self.assertItemsEqual( map("Port Q{}".format, expected_ports_str_range), (port.name for port in blade.child_resources.values()), ) self.assertItemsEqual( map((address + "/Q/{}").format, expected_ports_str_range), (port.address for port in blade.child_resources.values()), ) connected_ports = [] for port_id, port in blade.child_resources.items(): self.assertIsInstance(port, Port) self.assertEqual("Port Q{}".format(port.resource_id), port.name) if port.mapping: connected_ports.append(port) self.assertEqual(2, len(connected_ports)) self.assertDictEqual( { "Port Q001": "Port Q002", "Port Q002": "Port Q001" }, {p.name: p.mapping.name for p in connected_ports}, ) emu1.check_calls() emu2.check_calls()
def test_autoload_matrix_xy_changed_port(self): host = "192.168.122.10" address = "{}:XY".format(host) user = "******" password = "******" expected_ports_str_range = [str(i).zfill(3) for i in range(1, 129)] emu = CliEmulator([ Command("", DEFAULT_PROMPT), Command( "port show", PORT_SHOW_MATRIX_XY_CHANGED_PORT, ), Command("show board", SHOW_BOARD), ]) self.send_line_func_map[host] = emu.send_line self.receive_all_func_map[host] = emu.receive_all self.driver_commands.login(address, user, password) info = self.driver_commands.get_resource_description(address) # One chassis self.assertIsNotNone(info) self.assertEqual(1, len(info.resource_info_list)) chassis = info.resource_info_list[0] self.assertIsInstance(chassis, Chassis) self.assertEqual("9727-4733-2222", chassis.serial_number) self.assertEqual("Rome Chassis", chassis.model_name) self.assertEqual(address, chassis.address) self.assertEqual(2, len(chassis.child_resources)) # blade X blade_x = chassis.child_resources["X"] self.assertIsInstance(blade_x, Blade) self.assertEqual("Rome Matrix X", blade_x.model_name) self.assertEqual("NA", blade_x.serial_number) self.assertEqual("Blade X", blade_x.name) self.assertEqual(address + "/X", blade_x.address) self.assertEqual(128, len(blade_x.child_resources)) self.assertItemsEqual( expected_ports_str_range, blade_x.child_resources.keys(), ) self.assertItemsEqual( map("Port X{}".format, expected_ports_str_range), (port.name for port in blade_x.child_resources.values()), ) self.assertItemsEqual( map((address + "/X/{}").format, expected_ports_str_range), (port.address for port in blade_x.child_resources.values()), ) # blade Y blade_y = chassis.child_resources["Y"] self.assertIsInstance(blade_y, Blade) self.assertEqual("Rome Matrix Y", blade_y.model_name) self.assertEqual("NA", blade_y.serial_number) self.assertEqual("Blade Y", blade_y.name) self.assertEqual(address + "/Y", blade_y.address) self.assertEqual(128, len(blade_y.child_resources)) self.assertItemsEqual( expected_ports_str_range, blade_y.child_resources.keys(), ) self.assertItemsEqual( map("Port Y{}".format, expected_ports_str_range), (port.name for port in blade_y.child_resources.values()), ) self.assertItemsEqual( map((address + "/Y/{}").format, expected_ports_str_range), (port.address for port in blade_y.child_resources.values()), ) connected_ports = [] for port_id, port in chain(blade_x.child_resources.items(), blade_y.child_resources.items()): self.assertIsInstance(port, Port) blade_letter = port.name.split(" ", 1)[1][0] self.assertIn(blade_letter, "XY") self.assertEqual( "Port {}{}".format(blade_letter, port.resource_id), port.name) if port.mapping: connected_ports.append(port) self.assertEqual(7, len(connected_ports)) self.assertDictEqual( { "Port X001": "Port Y001", "Port Y001": "Port X001", "Port X002": "Port Y002", "Port Y002": "Port X002", "Port X004": "Port Y004", "Port Y004": "Port X004", "Port Y007": "Port X007", }, {p.name: p.mapping.name for p in connected_ports}, ) emu.check_calls()
def test_map_bidi_q128_failed(self): first_host = '192.168.122.10' second_host = '192.168.122.11' address = '{}:{}:Q'.format(first_host, second_host) user = '******' password = '******' src_port = '{}/1/003'.format(address) dst_port = '{}/1/004'.format(address) self.driver_commands._mapping_check_delay = 0.1 port_show_q1 = set_port_connected('E3', 'W4', PORT_SHOW_MATRIX_Q128_1) port_show_q1 = set_port_connected('E131', 'W132', port_show_q1) port_show_q1 = set_port_connected('E4', 'W3', port_show_q1) port_show_q1 = set_port_connected('E132', 'W131', port_show_q1) emu1 = CliEmulator([ Command('', DEFAULT_PROMPT), Command('port show', PORT_SHOW_MATRIX_Q128_1), Command( 'connection create P3 to P4', '''ROME[TECH]# connection create P3 to P4 OK - request added to pending queue (P3-P4) ROME[TECH]# 08-06-2019 09:01 CONNECTING... 08-06-2019 09:01 CONNECTION OPERATION SUCCEEDED:E3[1AE3]<->W4[1AW4] OP:connect 08-06-2019 09:01 CONNECTION OPERATION SUCCEEDED:E131[1BE131]<->W132[1BW132] OP:connect 08-06-2019 09:01 CONNECTION OPERATION SUCCEEDED:E4[1AE4]<->W3[1AW3] OP:connect 08-06-2019 09:01 CONNECTION OPERATION SUCCEEDED:E132[1BE132]<->W131[1BW131] OP:connect 08-06-2019 09:01 Connection P3<->P4 completed successfully '''), Command('connection show pending', CONNECTION_PENDING_EMPTY), Command('port show', port_show_q1), Command( 'connection disconnect P3 from P4', '''ROME[TECH]# connection disconnect E1 from W2 OK - request added to pending queue (E1-W2) ROME[TECH]# 08-05-2019 12:19 DISCONNECTING... 08-05-2019 12:19 CONNECTION OPERATION SUCCEEDED:E1[1AE1]<->W2[1AW2] OP:disconnect 08-05-2019 12:19 CONNECTION OPERATION SUCCEEDED:E129[1BE129]<->W130[1BW130] OP:disconnect 08-05-2019 12:19 CONNECTION OPERATION SUCCEEDED:E130[1BE130]<->W129[1BW129] OP:disconnect 08-05-2019 12:19 CONNECTION OPERATION SUCCEEDED:E2[1AE2]<->W1[1AW1] OP:disconnect '''), Command('connection show pending', CONNECTION_PENDING_EMPTY), ]) emu2 = CliEmulator([ Command('', DEFAULT_PROMPT), Command('port show', PORT_SHOW_MATRIX_Q128_2), Command('connection create P3 to P4', DEFAULT_PROMPT), Command('connection show pending', CONNECTION_PENDING_EMPTY), Command('port show', PORT_SHOW_MATRIX_Q128_2), Command('connection disconnect P3 from P4', DEFAULT_PROMPT), Command('connection show pending', CONNECTION_PENDING_EMPTY), ]) self.send_line_func_map.update({ first_host: emu1.send_line, second_host: emu2.send_line }) self.receive_all_func_map.update({ first_host: emu1.receive_all, second_host: emu2.receive_all }) with self.patch_sessions(): self.driver_commands.login(address, user, password) with self.assertRaisesRegexp(ConnectionPortsError, 'Cannot connect port P3 to port P4'): self.driver_commands.map_bidi(src_port, dst_port) emu1.check_calls() emu2.check_calls()