Move tests into a ./tests folder

- K8sClient moved from ./models to ./managers
- all YAMLs placed to ./tests/fixtures/templates
- all tests placed to ./tests/ into separated folders depending
  on tests types
- ssh_manager removed from helpers (unused)
- main folder 'mcp_tests' renamed to 'fuel_ccp_tests'
- conftest.py moved to the ./tests/system and ./tests/component
  folder because of failed unit tests (we use fixtures with
  autouse=True which fail unit tests).
- empty conftest.py added to the root of fuel_ccp_tests module
  to get unit tests passed

Change-Id: I25671dd7d6f3ee294a4e4146f9f2c2ba4d9b2d06
This commit is contained in:
Dennis Dmitriev 2016-08-24 00:33:41 +03:00
parent 0253ed827e
commit b36041e4ce
80 changed files with 205 additions and 174 deletions

View File

@ -0,0 +1,3 @@
# DO NOT EDIT THIS FILE!
# To include new fixtures, please use conftest.py files
# located in the appropriate ./tests/* folders.

View File

@ -13,8 +13,8 @@
# under the License.
import pytest
from mcp_tests.helpers import ext
from mcp_tests.managers import ccpmanager
from fuel_ccp_tests.helpers import ext
from fuel_ccp_tests.managers import ccpmanager
@pytest.fixture(scope='session')

View File

@ -17,8 +17,8 @@ import time
import pytest
from mcp_tests import logger
from mcp_tests.helpers import utils
from fuel_ccp_tests import logger
from fuel_ccp_tests.helpers import utils
LOG = logger.logger
@ -41,7 +41,8 @@ def pytest_runtest_makereport(item, call):
def pytest_runtest_setup(item):
item.cls._current_test = item.function
if item.cls is not None:
item.cls._current_test = item.function
item._start_time = time.time()
head = "<" * 5 + "#" * 30 + "[ {} ]" + "#" * 30 + ">" * 5
head = head.format(item.function.__name__)

View File

@ -12,7 +12,7 @@
# License for the specific language governing permissions and limitations
# under the License.
import pytest
from mcp_tests import settings_oslo
from fuel_ccp_tests import settings_oslo
@pytest.fixture(scope='session')

View File

@ -14,9 +14,9 @@
import pytest
from mcp_tests.helpers import ext
from mcp_tests import settings
from mcp_tests.managers import k8smanager
from fuel_ccp_tests.helpers import ext
from fuel_ccp_tests import settings
from fuel_ccp_tests.managers import k8smanager
@pytest.fixture(scope='session')

View File

@ -13,10 +13,10 @@
# under the License.
import pytest
from mcp_tests import logger
from mcp_tests.managers import envmanager_devops
from mcp_tests.managers import envmanager_empty
from mcp_tests.managers import underlay_ssh_manager
from fuel_ccp_tests import logger
from fuel_ccp_tests.managers import envmanager_devops
from fuel_ccp_tests.managers import envmanager_empty
from fuel_ccp_tests.managers import underlay_ssh_manager
LOG = logger.logger

View File

@ -14,7 +14,7 @@
from __future__ import division
from mcp_tests import logger
from fuel_ccp_tests import logger
LOG = logger.logger

View File

@ -21,8 +21,8 @@ import re
from devops.helpers import templates
import yaml
from mcp_tests.helpers import mcp_tests_exceptions
from mcp_tests import logger
from fuel_ccp_tests.helpers import exceptions
from fuel_ccp_tests import logger
LOG = logger.logger
@ -53,7 +53,7 @@ def fix_devops_config(config):
:returns: config dict
"""
if not isinstance(config, dict):
raise mcp_tests_exceptions.DevopsConfigTypeError(
raise exceptions.DevopsConfigTypeError(
type_name=type(config).__name__
)
if 'template' in config:
@ -283,7 +283,7 @@ class EnvironmentConfig(object):
it's possible simply set value by keypath
"""
if self.config is None:
raise mcp_tests_exceptions.DevopsConfigIsNone()
raise exceptions.DevopsConfigIsNone()
conf = self._config['template']['devops_settings']
set_value_for_dict_by_keypath(conf, keypath, value)
@ -293,7 +293,7 @@ class EnvironmentConfig(object):
:param filename: string
"""
if self._config is None:
raise mcp_tests_exceptions.DevopsConfigIsNone()
raise exceptions.DevopsConfigIsNone()
with open(filename, 'w') as f:
f.write(
yaml.dump(

View File

@ -22,8 +22,8 @@ import traceback
import yaml
from mcp_tests import logger
from mcp_tests import settings
from fuel_ccp_tests import logger
from fuel_ccp_tests import settings
LOG = logger.logger

View File

@ -16,7 +16,7 @@ import logging
import os
import traceback
from mcp_tests import settings
from fuel_ccp_tests import settings
if not os.path.exists(settings.LOGS_DIR):
os.makedirs(settings.LOGS_DIR)

View File

@ -12,9 +12,9 @@
# License for the specific language governing permissions and limitations
# under the License.
from mcp_tests.helpers import mcp_tests_exceptions
from mcp_tests import settings
from mcp_tests import logger
from fuel_ccp_tests.helpers import exceptions
from fuel_ccp_tests import settings
from fuel_ccp_tests import logger
LOG = logger.logger
@ -72,7 +72,7 @@ class CCPManager(object):
def update_service(self, service_name):
if not settings.SERVICE_PATH:
raise mcp_tests_exceptions.VariableNotSet('SERVICE_PATH')
raise exceptions.VariableNotSet('SERVICE_PATH')
with self.__underlay.remote(
host=self.__config.k8s.kube_host) as remote:
remote.execute(

View File

@ -17,11 +17,11 @@ from devops.helpers import helpers
from devops import models
from django import db
from mcp_tests import settings
from mcp_tests.helpers import env_config
from mcp_tests.helpers import ext
from mcp_tests.helpers import mcp_tests_exceptions as exc
from mcp_tests import logger
from fuel_ccp_tests import settings
from fuel_ccp_tests.helpers import env_config
from fuel_ccp_tests.helpers import ext
from fuel_ccp_tests.helpers import exceptions
from fuel_ccp_tests import logger
LOG = logger.logger
@ -64,7 +64,7 @@ class EnvironmentManager(object):
def _devops_config(self, conf):
"""Setter for self.__devops_config
:param conf: mcp_tests.helpers.env_config.EnvironmentConfig
:param conf: fuel_ccp_tests.helpers.env_config.EnvironmentConfig
"""
if not isinstance(conf, env_config.EnvironmentConfig):
msg = ("Unexpected type of devops config. Got '{0}' " +
@ -126,7 +126,7 @@ class EnvironmentManager(object):
self._env.snapshot(name, description=description, force=True)
self._env.resume()
else:
raise exc.EnvironmentIsNotSet()
raise exceptions.EnvironmentIsNotSet()
def revert_snapshot(self, name):
"""Revert snapshot by name
@ -139,7 +139,7 @@ class EnvironmentManager(object):
LOG.info("Resuming environment after revert")
self._env.resume()
else:
raise exc.EnvironmentIsNotSet()
raise exceptions.EnvironmentIsNotSet()
self.__config.hardware.current_snapshot = name
def _create_environment(self):
@ -149,7 +149,7 @@ class EnvironmentManager(object):
otherwise we tries to generate config from self.config_file,
"""
if self._devops_config.config is None:
raise exc.DevopsConfigPathIsNotSet()
raise exceptions.DevopsConfigPathIsNotSet()
settings = self._devops_config
env_name = settings['env_name']
LOG.debug(
@ -157,7 +157,7 @@ class EnvironmentManager(object):
)
if env_name is None:
LOG.error('Environment name is not set!')
raise exc.EnvironmentNameIsNotSet()
raise exceptions.EnvironmentNameIsNotSet()
try:
self._env = models.Environment.create_environment(
settings.config
@ -166,7 +166,7 @@ class EnvironmentManager(object):
LOG.error(
'Seems like environment {0} already exists.'.format(env_name)
)
raise exc.EnvironmentAlreadyExists(env_name)
raise exceptions.EnvironmentAlreadyExists(env_name)
self._env.define()
self._start_environment()
LOG.info(
@ -178,7 +178,7 @@ class EnvironmentManager(object):
"""
if self._env is None:
raise exc.EnvironmentIsNotSet()
raise exceptions.EnvironmentIsNotSet()
self._env.start()
for node in self.k8s_nodes:
LOG.debug("Waiting for SSH on node '{}...'".format(node.name))
@ -194,19 +194,19 @@ class EnvironmentManager(object):
def resume(self):
"""Resume environment"""
if self._env is None:
raise exc.EnvironmentIsNotSet()
raise exceptions.EnvironmentIsNotSet()
self._env.resume()
def suspend(self):
"""Suspend environment"""
if self._env is None:
raise exc.EnvironmentIsNotSet()
raise exceptions.EnvironmentIsNotSet()
self._env.suspend()
def stop(self):
"""Stop environment"""
if self._env is None:
raise exc.EnvironmentIsNotSet()
raise exceptions.EnvironmentIsNotSet()
self._env.destroy()
def has_snapshot(self, name):

View File

@ -13,7 +13,7 @@
import urllib3
from mcp_tests.models.k8s.cluster import K8sCluster
from fuel_ccp_tests.managers.k8s.cluster import K8sCluster
__all__ = ['K8sCluster']

View File

@ -20,30 +20,31 @@ from k8sclient.client.apis import apiv_api
from k8sclient.client.apis import apisextensionsvbeta_api
from k8sclient.client.apis import apisbatchv_api
from mcp_tests.models.k8s.componentstatuses import \
from fuel_ccp_tests.managers.k8s.componentstatuses import \
K8sComponentStatusManager
from mcp_tests.models.k8s.daemonsets import K8sDaemonSetManager
from mcp_tests.models.k8s.deployments import K8sDeploymentManager
from mcp_tests.models.k8s.endpoints import K8sEndpointManager
from mcp_tests.models.k8s.events import K8sEventManager
from mcp_tests.models.k8s.horizontalpodautoscalers import \
from fuel_ccp_tests.managers.k8s.daemonsets import K8sDaemonSetManager
from fuel_ccp_tests.managers.k8s.deployments import K8sDeploymentManager
from fuel_ccp_tests.managers.k8s.endpoints import K8sEndpointManager
from fuel_ccp_tests.managers.k8s.events import K8sEventManager
from fuel_ccp_tests.managers.k8s.horizontalpodautoscalers import \
K8sHorizontalPodAutoscalerManager
from mcp_tests.models.k8s.ingresses import K8sIngressManager
from mcp_tests.models.k8s.jobs import K8sJobManager
from mcp_tests.models.k8s.limitranges import K8sLimitRangeManager
from mcp_tests.models.k8s.namespaces import K8sNamespaceManager
from mcp_tests.models.k8s.nodes import K8sNodeManager
from mcp_tests.models.k8s.persistentvolumeclaims import \
from fuel_ccp_tests.managers.k8s.ingresses import K8sIngressManager
from fuel_ccp_tests.managers.k8s.jobs import K8sJobManager
from fuel_ccp_tests.managers.k8s.limitranges import K8sLimitRangeManager
from fuel_ccp_tests.managers.k8s.namespaces import K8sNamespaceManager
from fuel_ccp_tests.managers.k8s.nodes import K8sNodeManager
from fuel_ccp_tests.managers.k8s.persistentvolumeclaims import \
K8sPersistentVolumeClaimManager
from mcp_tests.models.k8s.persistentvolumes import \
from fuel_ccp_tests.managers.k8s.persistentvolumes import \
K8sPersistentVolumeManager
from mcp_tests.models.k8s.pods import K8sPodManager
from mcp_tests.models.k8s.replicationcontrollers import \
from fuel_ccp_tests.managers.k8s.pods import K8sPodManager
from fuel_ccp_tests.managers.k8s.replicationcontrollers import \
K8sReplicationControllerManager
from mcp_tests.models.k8s.resourcequotas import K8sResourceQuotaManager
from mcp_tests.models.k8s.secrets import K8sSecretManager
from mcp_tests.models.k8s.serviceaccounts import K8sServiceAccountManager
from mcp_tests.models.k8s.services import K8sServiceManager
from fuel_ccp_tests.managers.k8s.resourcequotas import K8sResourceQuotaManager
from fuel_ccp_tests.managers.k8s.secrets import K8sSecretManager
from fuel_ccp_tests.managers.k8s.serviceaccounts import \
K8sServiceAccountManager
from fuel_ccp_tests.managers.k8s.services import K8sServiceManager
class K8sCluster(object):

View File

@ -12,8 +12,8 @@
# License for the specific language governing permissions and limitations
from mcp_tests.models.k8s.base import K8sBaseResource
from mcp_tests.models.k8s.base import K8sBaseManager
from fuel_ccp_tests.managers.k8s.base import K8sBaseResource
from fuel_ccp_tests.managers.k8s.base import K8sBaseManager
class K8sComponentStatus(K8sBaseResource):

View File

@ -12,8 +12,8 @@
# License for the specific language governing permissions and limitations
from mcp_tests.models.k8s.base import K8sBaseResource
from mcp_tests.models.k8s.base import K8sBaseManager
from fuel_ccp_tests.managers.k8s.base import K8sBaseResource
from fuel_ccp_tests.managers.k8s.base import K8sBaseManager
class K8sDaemonSet(K8sBaseResource):

View File

@ -12,8 +12,8 @@
# License for the specific language governing permissions and limitations
from mcp_tests.models.k8s.base import K8sBaseResource
from mcp_tests.models.k8s.base import K8sBaseManager
from fuel_ccp_tests.managers.k8s.base import K8sBaseResource
from fuel_ccp_tests.managers.k8s.base import K8sBaseManager
class K8sDeployment(K8sBaseResource):

View File

@ -12,8 +12,8 @@
# License for the specific language governing permissions and limitations
from mcp_tests.models.k8s.base import K8sBaseResource
from mcp_tests.models.k8s.base import K8sBaseManager
from fuel_ccp_tests.managers.k8s.base import K8sBaseResource
from fuel_ccp_tests.managers.k8s.base import K8sBaseManager
class K8sEndpoint(K8sBaseResource):

View File

@ -12,8 +12,8 @@
# License for the specific language governing permissions and limitations
from mcp_tests.models.k8s.base import K8sBaseResource
from mcp_tests.models.k8s.base import K8sBaseManager
from fuel_ccp_tests.managers.k8s.base import K8sBaseResource
from fuel_ccp_tests.managers.k8s.base import K8sBaseManager
class K8sEvent(K8sBaseResource):

View File

@ -12,8 +12,8 @@
# License for the specific language governing permissions and limitations
from mcp_tests.models.k8s.base import K8sBaseResource
from mcp_tests.models.k8s.base import K8sBaseManager
from fuel_ccp_tests.managers.k8s.base import K8sBaseResource
from fuel_ccp_tests.managers.k8s.base import K8sBaseManager
class K8sHorizontalPodAutoscaler(K8sBaseResource):

View File

@ -12,8 +12,8 @@
# License for the specific language governing permissions and limitations
from mcp_tests.models.k8s.base import K8sBaseResource
from mcp_tests.models.k8s.base import K8sBaseManager
from fuel_ccp_tests.managers.k8s.base import K8sBaseResource
from fuel_ccp_tests.managers.k8s.base import K8sBaseManager
class K8sIngress(K8sBaseResource):

View File

@ -12,8 +12,8 @@
# License for the specific language governing permissions and limitations
from mcp_tests.models.k8s.base import K8sBaseResource
from mcp_tests.models.k8s.base import K8sBaseManager
from fuel_ccp_tests.managers.k8s.base import K8sBaseResource
from fuel_ccp_tests.managers.k8s.base import K8sBaseManager
class K8sJob(K8sBaseResource):

View File

@ -12,8 +12,8 @@
# License for the specific language governing permissions and limitations
from mcp_tests.models.k8s.base import K8sBaseResource
from mcp_tests.models.k8s.base import K8sBaseManager
from fuel_ccp_tests.managers.k8s.base import K8sBaseResource
from fuel_ccp_tests.managers.k8s.base import K8sBaseManager
class K8sLimitRange(K8sBaseResource):

View File

@ -12,8 +12,8 @@
# License for the specific language governing permissions and limitations
from mcp_tests.models.k8s.base import K8sBaseResource
from mcp_tests.models.k8s.base import K8sBaseManager
from fuel_ccp_tests.managers.k8s.base import K8sBaseResource
from fuel_ccp_tests.managers.k8s.base import K8sBaseManager
class K8sNamespace(K8sBaseResource):

View File

@ -12,8 +12,8 @@
# License for the specific language governing permissions and limitations
from mcp_tests.models.k8s.base import K8sBaseResource
from mcp_tests.models.k8s.base import K8sBaseManager
from fuel_ccp_tests.managers.k8s.base import K8sBaseResource
from fuel_ccp_tests.managers.k8s.base import K8sBaseManager
class K8sNode(K8sBaseResource):

View File

@ -12,8 +12,8 @@
# License for the specific language governing permissions and limitations
from mcp_tests.models.k8s.base import K8sBaseResource
from mcp_tests.models.k8s.base import K8sBaseManager
from fuel_ccp_tests.managers.k8s.base import K8sBaseResource
from fuel_ccp_tests.managers.k8s.base import K8sBaseManager
class K8sPersistentVolumeClaim(K8sBaseResource):

View File

@ -12,8 +12,8 @@
# License for the specific language governing permissions and limitations
from mcp_tests.models.k8s.base import K8sBaseResource
from mcp_tests.models.k8s.base import K8sBaseManager
from fuel_ccp_tests.managers.k8s.base import K8sBaseResource
from fuel_ccp_tests.managers.k8s.base import K8sBaseManager
class K8sPersistentVolume(K8sBaseResource):

View File

@ -12,8 +12,8 @@
# License for the specific language governing permissions and limitations
from mcp_tests.models.k8s.base import K8sBaseResource
from mcp_tests.models.k8s.base import K8sBaseManager
from fuel_ccp_tests.managers.k8s.base import K8sBaseResource
from fuel_ccp_tests.managers.k8s.base import K8sBaseManager
class K8sPod(K8sBaseResource):

View File

@ -12,8 +12,8 @@
# License for the specific language governing permissions and limitations
from mcp_tests.models.k8s.base import K8sBaseResource
from mcp_tests.models.k8s.base import K8sBaseManager
from fuel_ccp_tests.managers.k8s.base import K8sBaseResource
from fuel_ccp_tests.managers.k8s.base import K8sBaseManager
class K8sReplicationController(K8sBaseResource):

View File

@ -12,8 +12,8 @@
# License for the specific language governing permissions and limitations
from mcp_tests.models.k8s.base import K8sBaseResource
from mcp_tests.models.k8s.base import K8sBaseManager
from fuel_ccp_tests.managers.k8s.base import K8sBaseResource
from fuel_ccp_tests.managers.k8s.base import K8sBaseManager
class K8sResourceQuota(K8sBaseResource):

View File

@ -12,8 +12,8 @@
# License for the specific language governing permissions and limitations
from mcp_tests.models.k8s.base import K8sBaseResource
from mcp_tests.models.k8s.base import K8sBaseManager
from fuel_ccp_tests.managers.k8s.base import K8sBaseResource
from fuel_ccp_tests.managers.k8s.base import K8sBaseManager
class K8sSecret(K8sBaseResource):

View File

@ -12,8 +12,8 @@
# License for the specific language governing permissions and limitations
from mcp_tests.models.k8s.base import K8sBaseResource
from mcp_tests.models.k8s.base import K8sBaseManager
from fuel_ccp_tests.managers.k8s.base import K8sBaseResource
from fuel_ccp_tests.managers.k8s.base import K8sBaseManager
class K8sServiceAccount(K8sBaseResource):

View File

@ -12,8 +12,8 @@
# License for the specific language governing permissions and limitations
from mcp_tests.models.k8s.base import K8sBaseResource
from mcp_tests.models.k8s.base import K8sBaseManager
from fuel_ccp_tests.managers.k8s.base import K8sBaseResource
from fuel_ccp_tests.managers.k8s.base import K8sBaseManager
class K8sService(K8sBaseResource):

View File

@ -17,10 +17,9 @@ import os
import yaml
from mcp_tests import logger
from mcp_tests import settings
from mcp_tests.models.k8s import cluster
from fuel_ccp_tests import logger
from fuel_ccp_tests import settings
from fuel_ccp_tests.managers.k8s import cluster
LOG = logger.logger
@ -104,21 +103,23 @@ class K8SManager(object):
host=self.__config.k8s.kube_host)
return k8sclient
# NEW
@classmethod
def create_registry(cls, remote):
registry_pod = os.getcwd() + '/mcp_tests/templates/' \
def create_registry(self):
registry_pod = os.getcwd() + '/fuel_ccp_tests/templates/' \
'registry_templates/registry-pod.yaml'
service_registry = os.getcwd() + '/mcp_tests/templates/' \
service_registry = os.getcwd() + '/fuel_ccp_tests/templates/' \
'registry_templates/' \
'service-registry.yaml'
for item in registry_pod, service_registry:
remote.upload(item, './')
command = [
'kubectl create -f ~/{0}'.format(registry_pod.split('/')[-1]),
'kubectl create'
' -f ~/{0}'.format(service_registry.split('/')[-1]), ]
with remote.get_sudo(remote):
for cmd in command:
result = remote.execute(cmd)
assert result['exit_code'] == 0, "Registry wasn't created"
with self.__underlay.remote(
host=self.__config.k8s.kube_host) as remote:
for item in registry_pod, service_registry:
remote.upload(item, './')
command = [
'kubectl create -f ~/{0}'.format(registry_pod.split('/')[-1]),
'kubectl create'
' -f ~/{0}'.format(service_registry.split('/')[-1]), ]
with remote.get_sudo(remote):
for cmd in command:
result = remote.execute(cmd)
assert result['exit_code'] == 0, "Registry wasn't created"

View File

@ -197,7 +197,7 @@ class UnderlaySSHManager(object):
:type error_info: str
:type expected: list
:type raise_on_err: bool
:rtype: ExecResult
:rtype: list stdout
:raises: DevopsCalledProcessError
"""
remote = self.remote(node_name=node_name, host=host,

View File

@ -20,13 +20,13 @@ _boolean_states = {'1': True, 'yes': True, 'true': True, 'on': True,
_default_conf = pkg_resources.resource_filename(
__name__, 'templates/default.yaml')
# _default_conf = os.getcwd() + '/mcp_tests/templates/default.yaml'
def get_var_as_bool(name, default):
value = os.environ.get(name, '')
return _boolean_states.get(value.lower(), default)
LOGS_DIR = os.environ.get('LOGS_DIR', os.getcwd())
TIMESTAT_PATH_YAML = os.environ.get(
'TIMESTAT_PATH_YAML', os.path.join(

View File

@ -15,9 +15,8 @@ import copy
import pkg_resources
from oslo_config import cfg
from mcp_tests.helpers import oslo_cfg_types as ct
from mcp_tests.helpers import ext
from fuel_ccp_tests.helpers import oslo_cfg_types as ct
from fuel_ccp_tests.helpers import ext
_default_conf = pkg_resources.resource_filename(
__name__, 'templates/default.yaml')

View File

@ -12,8 +12,8 @@
# License for the specific language governing permissions and limitations
# under the License.
pytest_plugins = ['common_fixtures',
'config_fixtures',
'underlay_fixtures',
'k8s_fixtures',
'ccp_fixtures']
pytest_plugins = ['fuel_ccp_tests.fixtures.common_fixtures',
'fuel_ccp_tests.fixtures.config_fixtures',
'fuel_ccp_tests.fixtures.underlay_fixtures',
'fuel_ccp_tests.fixtures.k8s_fixtures',
'fuel_ccp_tests.fixtures.ccp_fixtures']

View File

@ -19,9 +19,9 @@ import docker
from devops.helpers import helpers
import pytest
from mcp_tests.helpers import containers as cs
from mcp_tests import logger
from mcp_tests import settings
from fuel_ccp_tests.helpers import containers as cs
from fuel_ccp_tests import logger
from fuel_ccp_tests import settings
LOG = logger.logger

View File

View File

@ -11,12 +11,13 @@
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from devops.helpers import helpers
import pytest
import yaml
from mcp_tests import logger
from mcp_tests import settings
from fuel_ccp_tests import logger
from fuel_ccp_tests import settings
LOG = logger.logger
LOG.addHandler(logger.console)
@ -28,8 +29,7 @@ class SystemBaseTest(object):
def calico_ipip_exists(self, underlay):
"""Check if ipip is in calico pool config
:param node: devops.models.Node
:param env: mcp_tests.models.envmanager.EnvironmentManager
:param underlay: fuel_ccp_tests.managers.UnderlaySSHManager
"""
cmd = "calicoctl pool show | grep ipip"
for node_name in underlay.node_names():
@ -38,8 +38,8 @@ class SystemBaseTest(object):
def required_images_exists(self, node_name, underlay, required_images):
"""Check if there are all base containers on node
:param node: devops.models.Node
:param env: mcp_tests.models.envmanager.EnvironmentManager
:param node_name: string
:param underlay: fuel_ccp_tests.managers.UnderlaySSHManager
:param required_images: list
"""
cmd = "docker ps --no-trunc --format '{{.Image}}'"
@ -51,7 +51,7 @@ class SystemBaseTest(object):
def check_list_required_images(self, underlay, required_images):
"""Check running containers on each node
:param env: mcp_tests.models.envmanager.EnvironmentManager
:param underlay: fuel_ccp_tests.managers.UnderlaySSHManager
:param required_images: list
"""
LOG.info("Check that required containers exist")
@ -86,8 +86,8 @@ class SystemBaseTest(object):
def check_pod_delete(self, k8s_pod, k8sclient):
"""Deleting pod from k8s
:param k8s_pod: mcp_tests.models.k8s.nodes.K8sNode
:param k8sclient: mcp_tests.models.k8s.cluster.K8sCluster
:param k8s_pod: fuel_ccp_tests.managers.k8s.nodes.K8sNode
:param k8sclient: fuel_ccp_tests.managers.k8s.cluster.K8sCluster
"""
LOG.info("Deleting pod '{}'".format(k8s_pod.name))
LOG.debug("Pod status:\n{}".format(k8s_pod.status))

View File

@ -0,0 +1,19 @@
# Copyright 2016 Mirantis, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
pytest_plugins = ['fuel_ccp_tests.fixtures.common_fixtures',
'fuel_ccp_tests.fixtures.config_fixtures',
'fuel_ccp_tests.fixtures.underlay_fixtures',
'fuel_ccp_tests.fixtures.k8s_fixtures',
'fuel_ccp_tests.fixtures.ccp_fixtures']

View File

@ -14,10 +14,10 @@
import os
import pytest
from mcp_tests import logger
from mcp_tests import settings
from mcp_tests.helpers import post_os_deploy_checks
from mcp_tests.helpers import ext
from fuel_ccp_tests import logger
from fuel_ccp_tests import settings
from fuel_ccp_tests.helpers import post_os_deploy_checks
from fuel_ccp_tests.helpers import ext
LOG = logger.logger
LOG.addHandler(logger.console)
@ -59,7 +59,7 @@ class TestServiceHorizon(object):
k8scluster.create_registry(remote)
ccpcluster.do_build('builder_push',
registry_address=settings.REGISTRY)
topology_path = os.getcwd() + '/mcp_tests/templates/' \
topology_path = os.getcwd() + '/fuel_ccp_tests/templates/' \
'k8s_templates/k8s_topology.yaml'
remote.upload(topology_path, './')
ccpcluster.do_deploy(registry_address=settings.REGISTRY,
@ -74,7 +74,7 @@ class TestServiceHorizon(object):
"kubectl get service --namespace ccp horizon -o yaml |"
" awk '/nodePort: / {print $NF}'")['stdout'])
remote.upload(
os.getcwd() + '/mcp_tests/templates/misc/local-horizon.conf',
os.getcwd() + '/fuel_ccp_tests/templates/misc/local-horizon.conf',
"/tmp/horizon-tests")
remote.execute(
r"sed -i '/dashboard_url=/c\dashboard_url=http://{0}:{1}'"

View File

@ -14,7 +14,7 @@
import pytest
from mcp_tests.logger import logger
from fuel_ccp_tests.logger import logger
@pytest.yield_fixture(scope='module')

View File

@ -14,9 +14,9 @@
import pytest
import base_test
from mcp_tests import logger
from mcp_tests import settings
from mcp_tests.helpers import ext
from fuel_ccp_tests import logger
from fuel_ccp_tests import settings
from fuel_ccp_tests.helpers import ext
LOG = logger.logger
@ -41,7 +41,7 @@ class TestFuelCCPInstaller(base_test.SystemBaseTest,
def get_nginx_spec(k8s_node=None):
"""Create spec for k8s pod creation
:param k8s_node: mcp_tests.models.k8s.nodes.K8sNode
:param k8s_node: fuel_ccp_tests.managers.k8s.nodes.K8sNode
"""
pod = {
"apiVersion": "v1",
@ -63,9 +63,9 @@ class TestFuelCCPInstaller(base_test.SystemBaseTest,
def check_nginx_pod_is_reached(underlay, ip, node_name=None):
"""Simple check that nginx could be reached
:param env: mcp_tests.models.envmanager.EnvironmentManager
:param underlay: fuel_ccp_tests.managers.UnderlaySSHManager
:param ip: string
:param node: devops.models.node.Node
:param node_name: string
"""
env_node = node_name or underlay.node_names()[0]
cmd = "curl http://{}".format(ip)

View File

@ -16,11 +16,11 @@ import pytest
import yaml
import base_test
from mcp_tests import logger
from mcp_tests import settings
from mcp_tests.helpers import post_install_k8s_checks
from mcp_tests.helpers import post_os_deploy_checks
from mcp_tests.helpers import ext
from fuel_ccp_tests import logger
from fuel_ccp_tests import settings
from fuel_ccp_tests.helpers import post_install_k8s_checks
from fuel_ccp_tests.helpers import post_os_deploy_checks
from fuel_ccp_tests.helpers import ext
LOG = logger.logger
@ -47,11 +47,13 @@ class TestDeployOpenstack(base_test.SystemBaseTest):
return params
def create_registry(self, remote):
registry_pod = os.getcwd() + '/mcp_tests/templates/' \
'registry_templates/registry-pod.yaml'
service_registry = os.getcwd() + '/mcp_tests/templates/' \
'registry_templates/' \
'service-registry.yaml'
registry_pod = os.path.join(
os.getcwd(),
'/fuel_ccp_tests/templates/registry_templates/registry-pod.yaml')
service_registry = os.path.join(
os.getcwd(),
'/fuel_ccp_tests/templates/registry_templates/'
'service-registry.yaml')
for item in registry_pod, service_registry:
remote.upload(item, './')
command = [
@ -70,8 +72,9 @@ class TestDeployOpenstack(base_test.SystemBaseTest):
assert result['exit_code'] == 0
def pre_build_deploy_step(self, remote):
topology_path = os.getcwd() + '/mcp_tests/templates/' \
'k8s_templates/k8s_topology.yaml'
topology_path = os.path.join(
os.getcwd(),
'/fuel_ccp_tests/templates/k8s_templates/k8s_topology.yaml')
remote.upload(topology_path, './')
command = '>/var/log/microservices.log'
with remote.get_sudo(remote):
@ -111,8 +114,10 @@ class TestDeployOpenstack(base_test.SystemBaseTest):
registry = '127.0.0.1:31500'
self.create_registry(remote)
exclude_list = ['deploy']
yaml_path = os.getcwd() + '/mcp_tests/templates/' \
'k8s_templates/build-deploy_cluster.yaml'
yaml_path = os.path.join(
os.getcwd(),
'/fuel_ccp_tests/templates/'
'k8s_templates/build-deploy_cluster.yaml')
with open(yaml_path, 'r') as yaml_path:
params_list = yaml.load(yaml_path)['ccp-microservices-options']
params = self.get_params(params_list, exclude_list)
@ -142,8 +147,10 @@ class TestDeployOpenstack(base_test.SystemBaseTest):
"current value {0}".format(settings.REGISTRY))
exclude_list = ['build', '--builder-push', '--builder-workers 1']
yaml_path = os.getcwd() + '/mcp_tests/templates/k8s_templates/' \
'build-deploy_cluster.yaml'
yaml_path = os.path.join(
os.getcwd(),
'/fuel_ccp_tests/templates/'
'k8s_templates/build-deploy_cluster.yaml')
with open(yaml_path, 'r') as yaml_path:
params_list = yaml.load(yaml_path)['ccp-microservices-options']

View File

@ -2,7 +2,7 @@ import copy
import pytest
from mcp_tests.helpers import env_config as funcs
from fuel_ccp_tests.helpers import env_config as funcs
# Test data for funcs.return_obj
testdata1 = [

View File

@ -1,3 +1,3 @@
[pytest]
addopts = -vvv -s -p no:django -p no:ipdb --junit-xml=nosetests.xml
testpaths = mcp_tests
testpaths = fuel_ccp_tests

View File

@ -5,16 +5,16 @@
[tox]
skipsdist = True
envlist = pep8, py27eters = True
envlist = py35,py34,py27,pypy,pep8
[testenv]
install_command = pip install --allow-external -U {opts} {packages}
deps =
setuptools
-r{toxinidir}/mcp_tests/requirements.txt
-r{toxinidir}/fuel_ccp_tests/requirements.txt
-r{toxinidir}/test-requirements.txt
usedevelop = False
commands = py.test -s -vvv mcp_tests/tests
commands = py.test -s -vvv fuel_ccp_tests/tests/unit
[testenv:venv]
commands = {posargs}