class Euca3460(unittest.TestCase): def setUp(self): self.conf = "cloud.conf" self.imgName = "windowsserver2003r2_ent_x64.kvm.img" self.tester = Eucaops( config_file=self.conf, password="******" ) self.source = "source " + self.tester.credpath + "/eucarc && " self.clc1 = self.tester.service_manager.get_enabled_clc() self.iu = ImageUtils(tester=self.tester, config_file=self.conf ) self.iu.create_emi_from_url( "http://192.168.7.65/windows_images/" + self.imgName ) self.doAuth() def doAuth(self): self.keypair = self.tester.add_keypair() self.group = self.tester.add_group() self.tester.authorize_group(self.group) self.tester.authorize_group(self.group, port=3389, protocol="tcp") self.skey = self.tester.get_secret_key() self.akey = self.tester.get_access_key() def test_EUCA_3460(self): self.emi = self.tester.get_emi(location=self.imgName) #Start the windows instance self.reservation = self.tester.run_instance(self.emi,type="m1.large", keypair=self.keypair.name, group=self.group, is_reachable=False,timeout=720) # Make sure the windows instance is running for instance in self.reservation.instances: if instance.state == "running": self.ip = instance.public_dns_name self.instanceid = instance.id # Attempt to bundle the running windows instance print "Access = " + self.akey print "Secret = " + self.skey self.cmd = "euca-bundle-instance " + self.instanceid + " -b " + str(self.keypair) + " -p windows -o " + self.akey + " -w " + self.skey self.out = self.clc1.machine.cmd(self.source + self.cmd) # Check for Bundle ID match = re.search(r'bun-........', self.out["output"]) if match: self.tester.debug("Passed test_EUCA_3460: Bundle ID = " + match.group()) else: self.fail("Failed test_EUCA_3460: Bundle ID not returned") def tearDown(self): if self.reservation is not None: self.tester.terminate_instances(self.reservation) self.tester.delete_keypair(self.keypair) self.tester.local("rm " + self.keypair.name + ".pem") shutil.rmtree(self.tester.credpath) if __name__ == '__main__': unittest.main("Euca3460")
class Euca2244(unittest.TestCase): def setUp(self): self.conf = "cloud.conf" self.bucket = "test-bucket" self.imgName = "bfebs-centos-vmwaretools-i386.img" self.imgUrl = "http://mirror.qa.eucalyptus-systems.com/bfebs-image/vmware/" self.tester = Eucaops( config_file=self.conf, password="******" ) self.source = "source " + self.tester.credpath + "/eucarc && " self.iu = ImageUtils(tester=self.tester, config_file=self.conf ) self.doAuth() def tearDown(self): self.tester.sys(self.source + "euca-deregister " + self.emi) self.tester.sys(self.source + "euca-delete-bundle -b " + self.imgName + "test0") self.tester.delete_keypair(self.keypair) self.tester.local("rm " + self.keypair.name + ".pem") shutil.rmtree(self.tester.credpath) def doAuth(self): self.keypair = self.tester.add_keypair() self.group = self.tester.add_group() self.tester.authorize_group(self.group) def testName(self): self.emi = self.iu.create_emi_from_url( self.imgUrl + self.imgName) self.out = self.tester.sys(self.source + "euca-describe-images " + self.emi) self.count = str(self.out).count("private") if self.count==1: self.tester.debug("SUCCESS The default image availability is private") pass else: self.fail("FAIL The default image availability is public not private")
class Euca1057(unittest.TestCase): def setUp(self): self.conf = "cloud.conf" self.tester = Eucaops(config_file=self.conf, password="******") self.iu = ImageUtils(tester=self.tester, config_file=self.conf) self.imgName = "bfebs-centos-vmwaretools-i386.img" self.imgUrl = "http://mirror.qa.eucalyptus-systems.com/bfebs-image/vmware/" self.errorMsg = "all associated instances must be in the terminated state." self.count = 0 self.doAuth() def tearDown(self): if self.reservation is not None: self.tester.terminate_instances(self.reservation) self.out = self.runSysCmd("euca-deregister " + self.emi) self.tester.delete_keypair(self.keypair) self.tester.local("rm " + self.keypair.name + ".pem") shutil.rmtree(self.tester.credpath) def runSysCmd(self, cmd): self.source = "source " + self.tester.credpath + "/eucarc && " self.out = self.tester.sys(self.source + cmd) def doAuth(self): self.keypair = self.tester.add_keypair() self.group = self.tester.add_group() self.tester.authorize_group(self.group) def testName(self): self.emi = self.iu.create_emi_from_url(self.imgUrl + self.imgName) self.reservation = self.tester.run_instance(image=self.emi, is_reachable=False) self.runSysCmd("euca-deregister " + self.emi) self.count = +str(self.out).count(self.errorMsg) if self.count == 1: self.tester.debug("SUCCESS proper error thrown ") pass else: self.fail("FAIL incorrect error thrown ")
class EucaTest(unittest.TestCase): def setUp(self): self.start_total_time = time.time() self.conf = 'cloud.conf' self.tester = Eucaops(config_file=self.conf, password='******') self.doAuth() self.OK = '\033[1m\033[37m\033[42m' self.ENDC = '\033[0m' self.imgName = "windowsserver2003r2_ent_x64.kvm.img" def tearDown(self): self.tester.terminate_instances(self.reservation) self.tester.modify_property('cloud.vmstate.instance_timeout', '720') self.tester.modify_property('cloud.vmstate.terminated_time', '60') self.tester.delete_keypair(self.keypair) self.tester.local('rm ' + self.keypair.name + '.pem') shutil.rmtree(self.tester.credpath) def get_windows_image(self): # Check for windows image if there is not one get it. try: self.emi = self.tester.get_emi(location='windows') except: self.iu = ImageUtils(tester=self.tester, config_file=self.conf) self.iu.create_emi_from_url( "http://mirror.eucalyptus-systems.com/images/windows_images/" + self.imgName) self.emi = self.tester.get_emi(location='windows') def runInstances(self, numMax): self.emi = self.tester.get_emi(location='windows') #Start the windows instance self.reservation = self.tester.run_instance(self.emi, type="m1.large", keypair=self.keypair.name, group=self.group, is_reachable=False, timeout=720) # Make sure the windows instance is running for instance in self.reservation.instances: if instance.state == "running": self.ip = instance.public_dns_name self.instanceid = instance.id self.instance = instance def doAuth(self): self.keypair = self.tester.add_keypair() self.group = self.tester.add_group() self.tester.authorize_group(self.group) def print_time(self, start): elapsed = time.time() - start minutes = int(elapsed / 60) seconds = int(elapsed % 60) print self.OK + "Elapsed time = " + str(minutes) + ' min ' + str( seconds) + ' sec ' + self.ENDC def test(self): self.get_windows_image() self.tester.modify_property('cloud.vmstate.instance_timeout', '5') self.tester.modify_property('cloud.vmstate.terminated_time', '1') self.eunode = self.tester.service_manager.get_all_node_controllers()[0] #start an instance self.runInstances(1) #stop the node controller self.eunode.stop() # wait for instance to terminate, this can take about 12 minutes. self.start = time.time() while (str(self.instance.state) != 'terminated'): self.tester.debug("Waiting for instance to terminate") self.instance.update() self.tester.debug("Instance State = " + str(self.instance.state)) self.tester.sleep(30) self.print_time(self.start) # wait terminated instance to be cleared from euca-describe-instances output. self.start = time.time() while (str( self.tester.sys('euca-describe-instances ' + self.instanceid)) != '[]'): self.tester.debug( str( self.tester.sys('euca-describe-instances ' + self.instanceid))) self.tester.debug("Waiting terminate to clear") self.tester.sleep(10) self.print_time(self.start) # start the node controller self.eunode.start() # wait for instance to restore, this should not take more than 5 minutes self.start = time.time() while (str( self.tester.sys('euca-describe-instances ' + self.instanceid)) == '[]'): self.tester.debug( str( self.tester.sys('euca-describe-instances ' + self.instanceid))) self.tester.debug("Waiting for instance to restore.") self.tester.sleep(10) self.print_time(self.start) elapsed = time.time() - self.start assert int(elapsed / 60) < 5 print self.OK + 'Total Time' + self.ENDC self.print_time(self.start_total_time)