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 subprocess
|
||||
|
||||
from pathlib import Path
|
||||
from tempest import config
|
||||
from tempest import test
|
||||
|
||||
@ -121,3 +122,47 @@ class BaseMagnumTest(test.BaseTestCase):
|
||||
except Exception as e:
|
||||
cls.LOG.exception(e)
|
||||
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):
|
||||
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
|
||||
def setUp(cls):
|
||||
cls.set_admin_creds(config)
|
||||
@ -185,3 +193,5 @@ class Config(object):
|
||||
cls.set_cluster_template_id(config)
|
||||
cls.set_cluster_creation_timeout(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.
|
||||
# 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))
|
||||
|
||||
def tearDown(self):
|
||||
@ -256,6 +259,12 @@ users:
|
||||
except Exception as e:
|
||||
self.LOG.debug("kubectl exception: %s\n" % e)
|
||||
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
|
||||
self._delete_cluster(cluster_model.uuid)
|
||||
|
@ -86,4 +86,11 @@ MagnumGroup = [
|
||||
cfg.StrOpt("labels",
|
||||
default={},
|
||||
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