some modifications in test (command line options were added to integration.py)

This commit is contained in:
Vladimir Kozhukalov 2012-06-14 15:15:11 +04:00
parent 1744e71da1
commit d2356c43ed
3 changed files with 82 additions and 32 deletions

View File

@ -1,31 +1,64 @@
import os.path
import os
import sys
import logging
logging.basicConfig(level=logging.DEBUG)
from optparse import OptionParser
paths = [
os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'devops'),
]
sys.path[:0] = paths
import nose
import nose.config
import integration
iso = os.environ.get('NAILGUN_ISO', '/var/www/nailgun-ubuntu-12.04-amd64.last.iso')
ci = integration.Ci()
ci.teardown = lambda:None
ci.iso = iso
ci.env()
#ci.destroy()
integration.ci = ci
logger = logging.getLogger('integration')
def prepare(ci, destroy_after=False, iso=None):
if not destroy_after:
ci.tearDown = lambda:None
if iso:
ci.iso = iso
nc = nose.config.Config()
nc.verbosity = 3
nose.run(module=integration, config=nc)
if __name__ == "__main__":
parser = OptionParser()
parser.add_option("-i", "--iso", dest="iso",
help="iso image path or http://url", default=None)
parser.add_option("-l", "--level", dest="log_level", type="choice",
help="log level", choices=["DEBUG", "INFO", "WARNING", "ERROR"],
default="ERROR", metavar="LEVEL")
parser.add_option("-d", "--destroy-after", dest="destroy_after", action="store_true",
help="destroy environment after testing", default=False)
parser.add_option("-c", "--destroy-before", dest="destroy_before", action="store_true",
help="destroy environment before testing", default=False)
parser.add_option("-n", "--dry-run", dest="dry_run", action="store_true",
help="do not run real testing", default=False)
(options, args) = parser.parse_args()
optdict = options.__dict__
print sys.argv
numeric_level = getattr(logging, options.log_level.upper())
logging.basicConfig(level=numeric_level)
for o, v in optdict.items():
logger.debug("Parsed option: %s = %s" % (o, v))
ci = integration.Ci()
if optdict["destroy_before"]:
ci.destroy()
if not optdict["dry_run"]:
logger.debug("Preparing for real testing")
prepare(ci, destroy_after=optdict["destroy_after"], iso=optdict["iso"])
integration.ci = ci
nc = nose.config.Config()
nc.verbosity = 3
nose.main(module=integration, config=nc, argv=[__file__])

View File

@ -10,14 +10,30 @@ logger = logging.getLogger('integration.ci')
class Ci:
envname = 'ci'
hostname = 'nailgun'
domain = 'mirantis.com'
iso = None
def __init__(self):
self.teardown = self.destroy
self.controller = Controller(Libvirt())
def setUp(self):
logger.debug("Preparing devops environment")
self.devops_env()
logger.debug("Starting admin node")
self.environment.node['admin'].start()
if not self.is_admin_installed(timeout=30):
logger.debug("Admin node seems not installed")
self.admin_install()
logger.info("Waiting for completion of admin node installation")
self.is_admin_installed()
logger.info("Admin node seems installed")
def env(self):
def tearDown(self):
logger.debug("Destroying devops environment")
self.destroy()
def devops_env(self):
found = self.controller.search_environments(self.envname)
if found:
environment = self.controller.load_environment(found[0])
@ -51,9 +67,9 @@ class Ci:
return True
def admin_install(self):
if not self.is_admin_installed(timeout=40):
logger.info("Admin node is not installed. Trying to install.")
self.environment.node['admin'].send_keys("""<Esc><Enter>
logger.info("Installing admin node.")
logger.info("Sending keys to install admin node.")
self.environment.node['admin'].send_keys("""<Esc><Enter>
<Wait>
/install/vmlinuz initrd=/install/initrd.gz
priority=critical
@ -65,12 +81,14 @@ class Ci:
netcfg/get_gateway=%(gw)s
netcfg/get_nameservers=%(gw)s
netcfg/confirm_static=true
netcfg/get_hostname=nailgun
netcfg/get_domai=mirantis.com
netcfg/get_hostname=%(hostname)s
netcfg/get_domai=%(domain)s
<Enter>
""" % { 'ip': self.environment.network['default'].ip_addresses[2],
'mask': self.environment.network['default'].ip_addresses.netmask,
'gw': self.environment.network['default'].ip_addresses[1] })
'gw': self.environment.network['default'].ip_addresses[1],
'hostname': self.hostname,
'domain': self.domain})
def destroy(self):
ens = self.controller.search_environments(self.envname)
@ -80,12 +98,11 @@ class Ci:
env = self.controller.load_environment(en)
self.controller.destroy_environment(env)
ci = None
def setUp():
ci.environment.node['admin'].start()
ci.admin_install()
ci.is_admin_installed()
ci.setUp()
def tearDown():
ci.teardown()
ci.tearDown()

View File

@ -7,12 +7,12 @@ class TestCobbler:
def setUp(self):
pass
# def test_cobbler_alive(self):
# wait(lambda: http(host=ci.environment.node['admin'].ip_address, url='/cobbler_api', waited_code=501))
# server = xmlrpclib.Server('http://%s/cobbler_api' % ci.environment.node['admin'].ip_address)
# token = server.login('cobbler', 'cobbler')
# found = server.find_system({'name':'default'}, token)
# assert found[0]['name'] == 'default'
def test_cobbler_xmlrpc(self):
wait(lambda: http(host=ci.environment.node['admin'].ip_address, url='/cobbler_api', waited_code=501))
server = xmlrpclib.Server('http://%s/cobbler_api' % ci.environment.node['admin'].ip_address)
token = server.login('cobbler', 'cobbler')
found = server.find_system({'name':'default'}, token)
assert found[0]['name'] == 'default'
def test_cobbler_alive(self):
assert True