some modifications in test (command line options were added to integration.py)
This commit is contained in:
parent
1744e71da1
commit
d2356c43ed
|
@ -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__])
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue