def testGetRecordWorksWhenMultipleVDIsAreExposed(self): hostname, network, vdi1 = testsetup.setup_host_and_network(templates=1, vdi_mb=10) vdi2 = transferclient.create_vdi(hostname, 'Second Test VDI', 12 * 1024 * 1024) vdi3 = transferclient.create_vdi(hostname, 'Third Test VDI', 14 * 1024 * 1024) vdi4 = transferclient.create_vdi(hostname, 'Fourth Test VDI', 16 * 1024 * 1024) transferclient.expose(hostname, vdi_uuid=vdi2, network_uuid=network, transfer_mode='http') transferclient.expose(hostname, vdi_uuid=vdi3, network_uuid=network, transfer_mode='http') record1 = transferclient.get_record(hostname, vdi_uuid=vdi1) record2 = transferclient.get_record(hostname, vdi_uuid=vdi2) record3 = transferclient.get_record(hostname, vdi_uuid=vdi3) record4 = transferclient.get_record(hostname, vdi_uuid=vdi4) self.assertVdiStatus(record1, vdi1, 'unused') self.assertVdiStatus(record2, vdi2, 'exposed') self.assertVdiStatus(record3, vdi3, 'exposed') self.assertVdiStatus(record4, vdi4, 'unused') clean_up()
def testParallelExposes(self): parallelism = 3 hostname, network, firstvdi = testsetup.setup_host_and_network(templates=1, vdi_mb=10) vdis = [firstvdi] + [transferclient.create_vdi(hostname, 'Test VDI', 10*M) for i in xrange(parallelism - 1)] threads = [ExposeThread(hostname, network, vdi) for vdi in vdis] for t in threads: t.start() for t in threads: t.join() records = [transferclient.get_record(hostname, vdi_uuid=vdi) for vdi in vdis] for record in records: moreasserts.assertVdiIsZeroUsingHttpGet(self, record, 10)
def setup_host_and_network(templates=1, vdi_mb=None, dangerous_test=False, vdi_raw=False): """Sets up the test host with Transfer utility VM templates. If vdi_mb is given, a VDI is created as well. The host is wiped of all VMs, VDIs and other XenDB data: * every 10 setup calls, * when a different number of templates is requested, * before and after a dangerous_test, * when no VDI is requested, but some VDIs have been created already. Returns the hostname, a virtual network uuid, and if created, a vdi uuid. """ global VM_TEMPLATES_INSTALLED global VDIS_CREATED global TIMES_CALLED global LAST_TEST_WAS_DANGEROUS hostname = HOST if templates != 1 and not VMTEMPLATE: skipTest("Non-standard configuration") if (dangerous_test or LAST_TEST_WAS_DANGEROUS or TIMES_CALLED >= 10 or VM_TEMPLATES_INSTALLED != templates or (not vdi_mb and VDIS_CREATED)): TIMES_CALLED = 0 VDIS_CREATED = False if WIPE_HOST: wipe_host(hostname) else: clean_vms(hostname) deploy_plugin(hostname) for i in xrange(templates): deploy_vm_template(hostname) TIMES_CALLED += 1 VM_TEMPLATES_INSTALLED = templates LAST_TEST_WAS_DANGEROUS = dangerous_test if vdi_mb: sm_config = {} if vdi_raw: sm_config["type"] = "raw" vdi_uuid = transferclient.create_vdi(hostname, 'ABCDEF Test VDI', vdi_mb * 1024 * 1024, sm_config) VDIS_CREATED = True return hostname, transferclient.network_by_name(hostname, '0'), vdi_uuid else: return hostname, transferclient.network_by_name(hostname, '0')