diff options
-rw-r--r-- | docker/features/testcases.yaml | 12 | ||||
-rw-r--r-- | functest/core/singlevm.py | 15 | ||||
-rw-r--r-- | functest/opnfv_tests/openstack/vgpu/__init__.py | 0 | ||||
-rw-r--r-- | functest/opnfv_tests/openstack/vgpu/vgpu.py | 54 |
4 files changed, 78 insertions, 3 deletions
diff --git a/docker/features/testcases.yaml b/docker/features/testcases.yaml index 23cd4d4a0..3912b3d8f 100644 --- a/docker/features/testcases.yaml +++ b/docker/features/testcases.yaml @@ -82,3 +82,15 @@ tiers: args: suites: - /src/fds/testing/robot + - + case_name: vgpu + project_name: functest + criteria: 100 + blocking: false + description: >- + Test suite for the OpenStack vGPU feature + dependencies: + - DEPLOY_SCENARIO: 'vgpu' + run: + module: 'functest.opnfv_tests.openstack.vgpu.vgpu' + class: 'vGPU' diff --git a/functest/core/singlevm.py b/functest/core/singlevm.py index 1de355e0d..f6abb7427 100644 --- a/functest/core/singlevm.py +++ b/functest/core/singlevm.py @@ -46,9 +46,11 @@ class VmReady1(tenantnetwork.TenantNetwork1): flavor_ram = 512 flavor_vcpus = 1 flavor_disk = 1 + flavor_extra_specs = {} flavor_alt_ram = 1024 flavor_alt_vcpus = 1 flavor_alt_disk = 1 + flavor_alt_extra_specs = {} create_server_timeout = 180 def __init__(self, **kwargs): @@ -138,8 +140,11 @@ class VmReady1(tenantnetwork.TenantNetwork1): getattr(config.CONF, '{}_flavor_disk'.format(self.case_name), self.flavor_disk)) self.__logger.debug("flavor: %s", flavor) - self.orig_cloud.set_flavor_specs( - flavor.id, getattr(config.CONF, 'flavor_extra_specs', {})) + flavor_extra_specs_updated = self.flavor_extra_specs.copy() + flavor_extra_specs_updated.update( + getattr(config.CONF, + '{}_flavor_extra_specs'.format(self.case_name), {})) + self.orig_cloud.set_flavor_specs(flavor.id, flavor_extra_specs_updated) return flavor def create_flavor_alt(self, name=None): @@ -163,8 +168,12 @@ class VmReady1(tenantnetwork.TenantNetwork1): getattr(config.CONF, '{}_flavor_alt_disk'.format(self.case_name), self.flavor_alt_disk)) self.__logger.debug("flavor: %s", flavor) + flavor_alt_extra_specs_updated = self.flavor_alt_extra_specs.copy() + flavor_alt_extra_specs_updated.update( + getattr(config.CONF, + '{}_flavor_alt_extra_specs'.format(self.case_name), {})) self.orig_cloud.set_flavor_specs( - flavor.id, getattr(config.CONF, 'flavor_extra_specs', {})) + flavor.id, flavor_alt_extra_specs_updated) return flavor def boot_vm(self, name=None, **kwargs): diff --git a/functest/opnfv_tests/openstack/vgpu/__init__.py b/functest/opnfv_tests/openstack/vgpu/__init__.py new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/functest/opnfv_tests/openstack/vgpu/__init__.py diff --git a/functest/opnfv_tests/openstack/vgpu/vgpu.py b/functest/opnfv_tests/openstack/vgpu/vgpu.py new file mode 100644 index 000000000..a900eb203 --- /dev/null +++ b/functest/opnfv_tests/openstack/vgpu/vgpu.py @@ -0,0 +1,54 @@ +#!/usr/bin/env python + +# Copyright (c) 2018 Kontron and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 + +"""vGPU testcase implementation.""" + +from __future__ import division + +import logging + +from functest.core import singlevm + + +class vGPU(singlevm.SingleVm2): + """OpenStack vGPU Test Case.""" + + __logger = logging.getLogger(__name__) + + filename = ('/home/opnfv/functest/images/' + 'ubuntu-16.04-server-cloudimg-amd64-disk1.img') + flavor_ram = 4096 + flavor_vcpus = 2 + flavor_disk = 40 + flavor_extra_specs = {'resources:VGPU': '1'} + username = 'ubuntu' + ssh_connect_loops = 12 + create_server_timeout = 300 + + def __init__(self, **kwargs): + """Initialize vGPU testcase object.""" + if "case_name" not in kwargs: + kwargs["case_name"] = "vgpu" + super(vGPU, self).__init__(**kwargs) + + def execute(self): + """ + Test if the vGPU exist. + """ + (_, stdout, stderr) = self.ssh.exec_command('lspci') + lspci_output = stdout.read() + self.__logger.debug("output:\n%s", stdout.read()) + self.__logger.debug("error:\n%s", stderr.read()) + if ('VGA compatible controller: Intel' in lspci_output or + 'VGA compatible controller: Nvidia' in lspci_output): + self.__logger.info("The VM have a vGPU") + return 0 + else: + self.__logger.error("The VM haven't any vGPU") + return 1 |