Last active
August 29, 2015 13:57
-
-
Save shaon/31092065dcc3deeb4079 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
## need to bundle an instance before running this test, | |
## there's too much hard coded data | |
#!/usr/bin/python | |
import time | |
from eucaops import Eucaops | |
from eutester.eutestcase import EutesterTestCase | |
import os | |
import re | |
class InstanceBasics(EutesterTestCase): | |
def __init__(self): | |
#### Pre-conditions | |
self.setuptestcase() | |
self.setup_parser() | |
self.parser.add_argument("--build-number") | |
self.get_args() | |
# Setup basic eutester object | |
self.tester = Eucaops( config_file=self.args.config, password=self.args.password ) | |
self.reservation = None | |
### Generate a group for the instance | |
self.group = self.tester.add_group(group_name="inst-kvm-grp-" + str(time.time()).replace(".", "") + self.tester.id_generator() + "-" + self.args.build_number) | |
self.tester.authorize_group_by_name(group_name=self.group.name) | |
self.tester.authorize_group_by_name(group_name=self.group.name, port=-1, protocol="icmp" ) | |
### Generate a keypair for the instance | |
self.keypair_name = "inst-kvm-" + str(time.time()).replace(".", "") + self.tester.id_generator() + "-" + self.args.build_number | |
self.keypair = self.tester.add_keypair(self.keypair_name) | |
### Get an image to work with | |
self.emi = "" | |
self.clc = self.tester.get_component_machines( "clc" ) | |
self.clc_component = self.clc[0] | |
self.image = self.tester.get_emi( self.get_new_emi( ) ) | |
def clean_method(self): | |
""" | |
Description: Attempts to clean up resources created in this test | |
""" | |
self.tester.cleanup_artifacts() | |
def get_new_emi(self): | |
bucket_name = "precise" + str(int(time.time())) | |
bundledmanifest = "/var/tmp/bundle-MiX3mR/precise-server-cloudimg-amd64-disk1.img.manifest.xml" | |
cmd_upload = "source /root/eucarc-10.111.5.83-eucalyptus-admin/eucarc && euca-upload-bundle -b " + bucket_name + " -m " + bundledmanifest | |
out = self.clc_component.cmd( cmd_upload, listformat=True ) | |
for line in out['output']: | |
line = str(line) | |
if re.search('Uploaded', line) and re.search('manifest', line): | |
uploadedmanifest = line.split().pop() | |
break | |
image_name = bucket_name + "img" | |
cmd_register = "source /root/eucarc-10.111.5.83-eucalyptus-admin/eucarc && euca-register -n " + image_name + " --virtualization-type hvm " + uploadedmanifest | |
out = self.clc_component.sys(cmd=cmd_register, code=0) | |
for line in out: | |
if re.search('IMAGE',line): | |
self.emi = line.split().pop().strip() | |
return self.emi | |
def DeregisterEmi(self): | |
cmd_deregister = "source /root/eucarc-10.111.5.83-eucalyptus-admin/eucarc && euca-deregister " + self.emi | |
self.clc_component.sys(cmd=cmd_deregister, code=0) | |
def MyTest(self): | |
""" | |
Description: This test will simply run an instance and check that it is reachable via ssh. | |
""" | |
self.reservation = self.tester.run_instance(self.image, zone="PARTI00", min=1, max=1,keypair=self.keypair_name, group=self.group, timeout=600) | |
for instance in self.reservation.instances: | |
assert self.tester.ping(instance.public_dns_name) | |
if __name__ == "__main__": | |
testcase = InstanceBasics() | |
### Use the list of tests passed from config/command line to determine what subset of tests to run | |
### or use a predefined list | |
list = testcase.args.tests or [ "MyTest", "DeregisterEmi"] | |
### Convert test suite methods to EutesterUnitTest objects | |
unit_list = [ ] | |
for test in list: | |
unit_list.append( testcase.create_testunit_by_name(test) ) | |
### Run the EutesterUnitTest objects | |
result = testcase.run_test_case_list(unit_list,clean_on_exit=True) | |
exit(result) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment