def test03_run_external_program_pauw3_again(self): """ Run the third external program """ harness.isns_stage('pauw3-2', 'Run external program pauw3 (slow)') (res, msg) = harness.isns_external_test(self.client_config, ['tests/pauw3', '-n', '16']) self.assertTrue(res, msg) harness.vprint('*** SUCCESS ***')
def test03_get_client_eid(self): """ Get our eid (entity id) """ harness.isns_stage('query', 'Get our Entity ID (eid)') (res, eid) = harness.isns_query_eid(self.client_config) self.assertTrue(res, 'unable to get eid for client (%d)' % res) self.__class__.eid = eid harness.vprint('*** SUCCESS ***')
def test04_wait_for_esi_to_expire_again(self): """ Wait for ESI to come around """ harness.isns_stage('expired2', 'Wait for ESI to expire (5s)') harness.isns_idle(5) (res, msg) = harness.verify_db(self.server_config) self.assertTrue(res, msg) harness.vprint('*** SUCCESS ***')
def test03_verify_regitration_expires(self): """ Ensure the registration expires as the 20 second registration period """ harness.isns_stage('expired', 'Waiting for registration period to expire (25s)') harness.isns_idle(25) (res, msg) = harness.verify_db(self.server_config) self.assertTrue(res, msg) harness.vprint('*** SUCCESS ***')
def test06_query_object_node_type(self): """ Have the first initiator query for the target """ harness.isns_stage('query3', 'Querying client1 iscsi-node-type') (res, msg) = harness.isns_query_objects(self.client1_config, ['iscsi-node-type']) self.assertTrue(res, msg) (res, msg) = harness.verify_query_response(self.client1_config) self.assertTrue(res, msg) harness.vprint('*** SUCCESS ***')
def test03_query_object_eid(self): """ Run a simple query """ harness.isns_stage('query', 'Querying eid') (res, msg) = harness.isns_query_objects(self.client_config, ['eid']) self.assertTrue(res, msg) (res, msg) = harness.verify_query_response(self.client_config) self.assertTrue(res, msg) harness.vprint('*** SUCCESS ***')
def test08_query_discovery_domain_membersip(self): """ Get a list of the Discovery Domains (DDs) we are a member of """ harness.isns_stage('query4', 'Querying client1 dd-id') (res, msg) = harness.isns_query_objects(self.client1_config, ['dd-id']) self.assertTrue(res, msg) (res, msg) = harness.verify_query_response(self.client1_config) self.assertTrue(res, msg) harness.vprint('*** SUCCESS ***')
def test01_run_external_program_pauw4(self): """ Run the second external program """ harness.isns_stage('pauw2', 'Run external program pauw4') (res, msg) = harness.isns_external_test(self.client_config, ['tests/pauw4']) self.assertTrue(res, msg) (res, msg) = harness.verify_db(self.server_config) self.assertTrue(res, msg) harness.vprint('*** SUCCESS ***')
def test99_deregister_client(self): """ Deregister client """ harness.isns_stage('deregister', 'Deregister client') (res, msg) = harness.isns_deregister_client(self.client_config) self.assertTrue(res, msg) (res, msg) = harness.verify_db(self.server_config) self.assertTrue(res, msg) harness.vprint('*** SUCCESS ***')
def test04_deregister_client_name(self): """ As the iscsi node goes away, so should the whole entity """ harness.isns_stage('deregister2', 'Deregister Client by member-iscs-index') (res, msg) = harness.isns_deregister_client(self.client_config, ['iscsi-name=isns.client1']) self.assertTrue(res, msg) (res, msg) = harness.verify_db(self.server_config) self.assertTrue(res, msg) harness.vprint('*** SUCCESS ***')
def test03_restart_server_verify_ok(self): """ Restart the server and ensure the DB is still good """ harness.isns_stage('restart', 'Restart the server and ensure DB ok') new_pid = harness.isns_restart_server(self.server_config, self.server_pid) (res, msg) = harness.verify_db(self.server_config) self.assertTrue(res, msg) self.assertNotEqual(self.server_pid, new_pid, 'New PID same as old? (%d)' % new_pid) harness.vprint('*** SUCCESS ***')
def test05_register_discovery_domain(self): """ Register our DD """ harness.isns_stage('dd-registration1', 'Add Discovery Domain') (res, msg) = harness.isns_register_domain(self.client_config, ['member-name=isns.client1']) self.assertTrue(res, msg) (res, msg) = harness.verify_db(self.server_config) self.assertTrue(res, msg) harness.vprint('*** SUCCESS ***')
def test02_register_client_initiator_portal(self): """ Register an iniator with default port """ harness.isns_stage('registration', 'Register client initiator portal') (res, msg) = harness.isns_register_client(self.client_config, ['initiator', 'portal']) self.assertTrue(res, msg) (res, msg) = harness.verify_db(self.server_config) self.assertTrue(res, msg) harness.vprint('*** SUCCESS ***')
def test01_enroll_client(self): """ Enroll our client """ if self.security: harness.isns_stage('enroll', 'Enroll our cilent') self.assertEqual(harness.isns_enroll_client(self.client_config), 0) (res, msg) = harness.verify_db(self.server_config) self.assertTrue(res, msg) harness.vprint('*** SUCCESS ***') else: harness.vprint('*** Skipped (no security) ***')
def test03_deregister_client_portal(self): """ Unregistering the portal should leave the iscsi node and portal group active, and move the portal to state limbo. """ harness.isns_stage('deregister1', 'Deregister Client by portal') (res, msg) = harness.isns_deregister_client(self.client_config, ['portal=127.0.0.1:860']) self.assertTrue(res, msg) (res, msg) = harness.verify_db(self.server_config) self.assertTrue(res, msg) harness.vprint('*** SUCCESS ***')
def test04_register_discovery_domain(self): """ Register a discovery domain (DD) that links the two clients """ harness.isns_stage('dd-registration1', 'Add Discovery Domain') (res, msg) = harness.isns_register_domain(self.client1_config, ['member-name=isns.client1', 'member-name=isns.client2']) self.assertTrue(res, msg) (res, msg) = harness.verify_db(self.server_config) self.assertTrue(res, msg) harness.vprint('*** SUCCESS ***')
def test07_add_discovery_domain_member(self): """ Have the first initiator query for the target """ harness.isns_stage('dd-registration2', 'Add Discovery Domain Member') (res, msg) = harness.isns_register_domain(self.client1_config, ['dd-id=1', 'member-name=isns.client2', 'member-name=iqn.com.foobar:disk1']) self.assertTrue(res, msg) (res, msg) = harness.verify_db(self.server_config) self.assertTrue(res, msg) harness.vprint('*** SUCCESS ***')
def test09_remove_discovery_domain_entries(self): """ Remove some entries from the DD (and add one) """ harness.isns_stage('deregister1', 'Deregister Client by member-iscs-index') (res, msg) = harness.isns_deregister_domain(self.client1_config, ['1', 'member-iscsi-idx=10']) self.assertTrue(res, msg) (res, msg) = harness.verify_db(self.server_config) self.assertTrue(res, msg) harness.isns_stage('deregister2', 'Deregister Client by member-name') (res, msg) = harness.isns_deregister_domain(self.client1_config, ['1', 'member-name=iqn.com.foobar:disk1']) self.assertTrue(res, msg) (res, msg) = harness.verify_db(self.server_config) self.assertTrue(res, msg) harness.isns_stage('dd-registration3', 'Add Discovery Domain Member Again') (res, msg) = harness.isns_register_domain(self.client1_config, ['member-name=isns.client2']) self.assertTrue(res, msg) (res, msg) = harness.verify_db(self.server_config) self.assertTrue(res, msg) harness.isns_stage('deregister3', 'Deregister Domaon') (res, msg) = harness.isns_deregister_domain(self.client1_config, ['1']) self.assertTrue(res, msg) (res, msg) = harness.verify_db(self.server_config) self.assertTrue(res, msg) harness.vprint('*** SUCCESS ***')
def test03_query_object_eids_before(self): """ Run a simple query on each client -- clients will not see each other (yet) """ harness.isns_stage('query1-1', 'Querying client1 eid') (res, msg) = harness.isns_query_objects(self.client1_config, ['eid']) self.assertTrue(res, msg) (res, msg) = harness.verify_query_response(self.client1_config) self.assertTrue(res, msg) harness.isns_stage('query1-2', 'Querying client2 eid') (res, msg) = harness.isns_query_objects(self.client2_config, ['eid']) self.assertTrue(res, msg) (res, msg) = harness.verify_query_response(self.client2_config) self.assertTrue(res, msg) harness.vprint('*** SUCCESS ***')
def test06_replace_initiator_portal_with_dd(self): """ Replace the portal again. Now the object index of the initiator should not change, since it is a domain member now """ harness.isns_stage('registration3', 'Replace initiator portal') (res, msg) = harness.isns_register_client(self.client_config, ['--replace', 'entity=%s' % self.__class__.eid, 'initiator', 'portal=192.168.1.1:860']) self.assertTrue(res, msg) (res, msg) = harness.verify_db(self.server_config) self.assertTrue(res, msg) harness.vprint('*** SUCCESS ***')
def test03_register_client_two_portals(self): """ Register a simple initiator with two portals, one with ESI and one without. When the ESI-monitored portal expires, this should still take down the whole network entity. """ harness.isns_stage('registration2', 'Register client with two portals') (res, msg) = harness.isns_register_client(self.client_config, ['initiator', 'portal,esi-port=65535,esi-interval=5', 'portal=127.0.0.1:1']) harness.isns_stage('expired2', 'Wait for ESI to expire again (15s)') harness.isns_idle(15) (res, msg) = harness.verify_db(self.server_config) self.assertTrue(res, msg) harness.vprint('*** SUCCESS ***')
def test02_register_client_initiator_portal(self): """ Register a simple initiator with one portal, then wait for ESI to expire """ harness.isns_stage('registration1', 'Register client initiator portal') (res, msg) = harness.isns_register_client(self.client_config, ['initiator', 'portal,esi-port=65535,esi-interval=5']) self.assertTrue(res, msg) (res, msg) = harness.verify_db(self.server_config) self.assertTrue(res, msg) harness.isns_stage('expired1', 'Wait for ESI to expire (15s)') harness.isns_idle(15) (res, msg) = harness.verify_db(self.server_config) self.assertTrue(res, msg) harness.vprint('*** SUCCESS ***')
def test05_query_object_eids_after(self): """ Run a simple query on each client -- clients should be able to see each other now """ harness.isns_stage('query2-1', 'Querying client1 eid') (res, msg) = harness.isns_query_objects(self.client1_config, ['eid']) self.assertTrue(res, msg) (res, msg) = harness.verify_query_response(self.client1_config) self.assertTrue(res, msg) harness.isns_stage('query2-2', 'Querying client2 eid') (res, msg) = harness.isns_query_objects(self.client2_config, ['eid']) self.assertTrue(res, msg) (res, msg) = harness.verify_query_response(self.client2_config) self.assertTrue(res, msg) harness.vprint('*** SUCCESS ***')
def test02_register_client_portals(self): """ Register iniator and target portals """ harness.isns_stage('registration1', 'Register client1: initiator portals') (res, msg) = harness.isns_register_client(self.client1_config, ['initiator', 'portal']) self.assertTrue(res, msg) (res, msg) = harness.verify_db(self.server_config) self.assertTrue(res, msg) harness.isns_stage('registration2', 'Register client2: target portals') (res, msg) = harness.isns_register_client(self.client2_config, ['target', 'portal']) self.assertTrue(res, msg) (res, msg) = harness.verify_db(self.server_config) self.assertTrue(res, msg) harness.vprint('*** SUCCESS ***')
def test01_enroll_clients(self): """ Enroll the test client """ if self.security: harness.isns_stage('enroll1', 'Enroll client 1') self.assertEqual(harness.isns_enroll_client(self.client1_config), 0) (res, msg) = harness.verify_db(self.server_config) self.assertTrue(res, msg) harness.isns_stage('enroll2', 'Enroll client 2') self.assertEqual(harness.isns_enroll_client(self.client2_config, ['node-type=target']), 0) (res, msg) = harness.verify_db(self.server_config) self.assertTrue(res, msg) harness.vprint('*** SUCCESS ***') else: harness.vprint('*** Skipped (no security) ***')
def test08_deregister_and_reregister(self): """ Deregister the whole client, and re-register. Portal and Client index should remain the same """ harness.isns_stage('deregister', 'Deregister our client') (res, msg) = harness.isns_deregister_client(self.client_config, ['eid=%s' % self.__class__.eid]) self.assertTrue(res, msg) (res, msg) = harness.verify_db(self.server_config) self.assertTrue(res, msg) harness.isns_stage('registration6', 'Re-Register the client') (res, msg) = harness.isns_register_client(self.client_config, ['initiator', 'portal=192.168.1.1:860']) self.assertTrue(res, msg) (res, msg) = harness.verify_db(self.server_config) self.assertTrue(res, msg) harness.vprint('*** SUCCESS ***')
def test07_make_portal_dd_member(self): """ Make the portal a domain member too. Now even the portal index should stay the same. Note that we do not replace whole entity now, but just the portal """ harness.isns_stage('dd-registration2', 'Register port in Discovery Domain') (res, msg) = harness.isns_register_domain(self.client_config, ['dd-id=1', 'member-addr=192.168.1.1', 'member-port=860']) self.assertTrue(res, msg) (res, msg) = harness.verify_db(self.server_config) self.assertTrue(res, msg) harness.isns_stage('registration4', 'Replace whole entity') (res, msg) = harness.isns_register_client(self.client_config, ['--replace', '--key', 'portal=192.168.1.1:860', 'portal=192.168.1.2:860']) self.assertTrue(res, msg) harness.isns_stage('registration5', 'Replace whole entity again') (res, msg) = harness.isns_register_client(self.client_config, ['--replace', '--key', 'portal=192.168.1.2:860', 'portal=192.168.1.1:860']) self.assertTrue(res, msg) harness.vprint('*** SUCCESS ***')
def test04_replace_initiator_portal(self): """ Replace the portal with different values """ harness.isns_stage('registration2-1', 'Replace initiator portal') # set portal to 192.168.1.1, then override with 192.168.1.2 (res, msg) = harness.isns_register_client(self.client_config, ['--replace', 'entity=%s' % self.__class__.eid, 'initiator', 'portal=192.168.1.1:860']) self.assertTrue(res, msg) (res, msg) = harness.verify_db(self.server_config) harness.isns_stage('registration2-2', 'Replace initiator portal') (res, msg) = harness.isns_register_client(self.client_config, ['--replace', 'entity=%s' % self.__class__.eid, 'initiator', 'portal=192.168.1.2:860']) self.assertTrue(res, msg) (res, msg) = harness.verify_db(self.server_config) self.assertTrue(res, msg) harness.vprint('*** SUCCESS ***')