Run sonobuoy on tests
Supported modes by sonobuoy are: certified-conformance conformance-lite non-disruptive-conformance quick Default to quick Change-Id: I75cef50d022b3145719bb4271969297b5fd1beba
This commit is contained in:
parent
b3c601735b
commit
41a4875323
@ -14,6 +14,7 @@ import logging
|
|||||||
import os
|
import os
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
|
from pathlib import Path
|
||||||
from tempest import config
|
from tempest import config
|
||||||
from tempest import test
|
from tempest import test
|
||||||
|
|
||||||
@ -121,3 +122,47 @@ class BaseMagnumTest(test.BaseTestCase):
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
cls.LOG.exception(e)
|
cls.LOG.exception(e)
|
||||||
raise
|
raise
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def run_sonobuoy(cls, sonobuoy_mode="quick"):
|
||||||
|
"""Run sonobuoy
|
||||||
|
|
||||||
|
This method will run sonobuoy tests,
|
||||||
|
expects a kube.config file under /tmp/magnum-nodes/
|
||||||
|
"""
|
||||||
|
|
||||||
|
try:
|
||||||
|
cls.LOG.debug("running sonobuoy")
|
||||||
|
subprocess.check_call(["/opt/stack/bin/sonobuoy",
|
||||||
|
"run",
|
||||||
|
"--mode",
|
||||||
|
sonobuoy_mode,
|
||||||
|
"--wait",
|
||||||
|
"--kubeconfig",
|
||||||
|
"/tmp/magnum-nodes/kube.conf"])
|
||||||
|
except Exception as e:
|
||||||
|
cls.LOG.exception(e)
|
||||||
|
raise
|
||||||
|
|
||||||
|
if sonobuoy_mode != "quick":
|
||||||
|
try:
|
||||||
|
cls.LOG.debug("retrieving sonobuoy logs")
|
||||||
|
Path("/tmp/magnum-nodes/sonobuoy").mkdir(parents=True,
|
||||||
|
exist_ok=True)
|
||||||
|
subprocess.check_call(["/opt/stack/bin/sonobuoy",
|
||||||
|
"retrieve",
|
||||||
|
"--extract",
|
||||||
|
"--retrieve-path",
|
||||||
|
"/tmp/magnum-nodes/sonobuoy",
|
||||||
|
"--kubeconfig",
|
||||||
|
"/tmp/magnum-nodes/kube.conf"])
|
||||||
|
except Exception as e:
|
||||||
|
cls.LOG.exception(e)
|
||||||
|
cls.LOG.debug("Getting aggregator logs")
|
||||||
|
aggregator = subprocess.check_call(["/opt/stack/bin/kubectl",
|
||||||
|
"logs",
|
||||||
|
"sonobuoy",
|
||||||
|
"-nsonobuoy"])
|
||||||
|
with open("/tmp/magnum-nodes/sonobuoy_logs.txt") as outfile:
|
||||||
|
outfile.write(aggregator)
|
||||||
|
raise
|
||||||
|
@ -161,6 +161,14 @@ class Config(object):
|
|||||||
def set_labels(cls, config):
|
def set_labels(cls, config):
|
||||||
cls.labels = ast.literal_eval(CONF.magnum.labels)
|
cls.labels = ast.literal_eval(CONF.magnum.labels)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def set_run_sonobuoy(cls, config):
|
||||||
|
cls.run_sonobuoy = CONF.magnum.run_sonobuoy
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def set_sonobuoy_mode(cls, config):
|
||||||
|
cls.sonobuoy_mode = CONF.magnum.sonobuoy_mode
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def setUp(cls):
|
def setUp(cls):
|
||||||
cls.set_admin_creds(config)
|
cls.set_admin_creds(config)
|
||||||
@ -185,3 +193,5 @@ class Config(object):
|
|||||||
cls.set_cluster_template_id(config)
|
cls.set_cluster_template_id(config)
|
||||||
cls.set_cluster_creation_timeout(config)
|
cls.set_cluster_creation_timeout(config)
|
||||||
cls.set_labels(config)
|
cls.set_labels(config)
|
||||||
|
cls.set_run_sonobuoy(config)
|
||||||
|
cls.set_sonobuoy_mode(config)
|
||||||
|
@ -79,7 +79,10 @@ class ClusterTestTemplate(base.BaseTempestTest):
|
|||||||
|
|
||||||
# NOTE (dimtruck) by default tempest sets timeout to 20 mins.
|
# NOTE (dimtruck) by default tempest sets timeout to 20 mins.
|
||||||
# We need more time.
|
# We need more time.
|
||||||
test_timeout = 3600
|
if config.Config.run_sonobuoy:
|
||||||
|
test_timeout = 7200
|
||||||
|
else:
|
||||||
|
test_timeout = 3600
|
||||||
self.useFixture(fixtures.Timeout(test_timeout, gentle=True))
|
self.useFixture(fixtures.Timeout(test_timeout, gentle=True))
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
@ -256,6 +259,12 @@ users:
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.LOG.debug("kubectl exception: %s\n" % e)
|
self.LOG.debug("kubectl exception: %s\n" % e)
|
||||||
raise
|
raise
|
||||||
|
if config.Config.run_sonobuoy:
|
||||||
|
try:
|
||||||
|
self.run_sonobuoy(config.Config.sonobuoy_mode)
|
||||||
|
except Exception as e:
|
||||||
|
self.LOG.debug("sonobuoy exception: %s\n" % e)
|
||||||
|
raise
|
||||||
|
|
||||||
# test cluster delete
|
# test cluster delete
|
||||||
self._delete_cluster(cluster_model.uuid)
|
self._delete_cluster(cluster_model.uuid)
|
||||||
|
@ -86,4 +86,11 @@ MagnumGroup = [
|
|||||||
cfg.StrOpt("labels",
|
cfg.StrOpt("labels",
|
||||||
default={},
|
default={},
|
||||||
help="A dict of labels to be defined in cluster template"),
|
help="A dict of labels to be defined in cluster template"),
|
||||||
|
cfg.BoolOpt("run_sonobuoy",
|
||||||
|
default=True,
|
||||||
|
help="Specify whether to run sonobuoy in cluster creation "
|
||||||
|
"test"),
|
||||||
|
cfg.StrOpt("sonobuoy_mode",
|
||||||
|
default="conformance-lite",
|
||||||
|
help="Sonobuoy mode, default is quick"),
|
||||||
]
|
]
|
||||||
|
Loading…
Reference in New Issue
Block a user