aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/ci/cover.awk25
-rw-r--r--tests/ci/cover.sh121
-rwxr-xr-xtests/ci/load_images.sh15
-rw-r--r--tests/unit/network_services/vnf_generic/vnf/test_base.py34
-rw-r--r--tests/unit/network_services/vnf_generic/vnf/test_sample_vnf.py73
5 files changed, 42 insertions, 226 deletions
diff --git a/tests/ci/cover.awk b/tests/ci/cover.awk
deleted file mode 100644
index e4bb816dc..000000000
--- a/tests/ci/cover.awk
+++ /dev/null
@@ -1,25 +0,0 @@
-BEGIN{
- template = "%6s %-75s\n"
- printf template, "Delta", "Module Path"
-}
-
-/^-/{
- s = substr($1, 2)
- x[s] = $3;
-};
-
-/^+/{
- s = substr($1, 2)
- d = $3
- if (s in x)
- d = d - x[s]
- y[s" "d] = d
-}
-
-END{
- asorti(y, z1, "@val_num_asc")
- for (i=1; i <= length(z1); i++){
- split(z1[i], z2, " ")
- printf template, z2[2], z2[1]
- }
-}
diff --git a/tests/ci/cover.sh b/tests/ci/cover.sh
deleted file mode 100644
index 780a85a22..000000000
--- a/tests/ci/cover.sh
+++ /dev/null
@@ -1,121 +0,0 @@
-#!/bin/bash
-##############################################################################
-# Copyright 2015: Mirantis Inc.
-# All Rights Reserved.
-#
-# 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.
-# yardstick comment: this is a modified copy of
-# rally/tests/ci/cover.sh
-##############################################################################
-
-if [[ -n $COVER_DIR_NAME ]]; then
- :
-elif [[ -n $_ ]]; then
- COVER_DIR_NAME=$( dirname $_ )
-else
- COVER_DIR_NAME=$( dirname $0 )
-fi
-
-show_diff () {
- diff -U 0 $1 $2 | awk -f $COVER_DIR_NAME/cover.awk
-}
-
-run_coverage_test() {
-
- ALLOWED_EXTRA_MISSING=10
- # enable debugging
- set -x
-
- # Stash uncommitted changes, checkout master and save coverage report
- uncommited=$(git status --porcelain | grep -v "^??")
- [[ -n ${uncommited} ]] && git stash > /dev/null
- git checkout HEAD^
-
- baseline_report=$(mktemp -t yardstick_coverageXXXXXXX)
- ls -l .testrepository
-
- # workaround 'db type could not be determined' bug
- # https://bugs.launchpad.net/testrepository/+bug/1229445
- rm -rf .testrepository
- find . -type f -name "*.pyc" -delete
-
- #python setup.py testr --coverage --testr-args=""
- python setup.py testr --coverage --slowest --testr-args="$*"
- testr failing
- coverage report > ${baseline_report}
-
- # debug awk
- tail -1 ${baseline_report}
- baseline_missing=$(awk 'END { if (int($3) > 0) print $3 }' ${baseline_report})
-
- if [[ -z $baseline_missing ]]; then
- echo "Failed to determine baseline missing"
- exit 1
- fi
-
- # Checkout back and unstash uncommitted changes (if any)
- git checkout -
- [[ -n ${uncommited} ]] && git stash pop > /dev/null
-
- # Generate and save coverage report
- current_report=$(mktemp -t yardstick_coverageXXXXXXX)
- ls -l .testrepository
-
- # workaround 'db type could not be determined' bug
- # https://bugs.launchpad.net/testrepository/+bug/1229445
- rm -rf .testrepository
- find . -type f -name "*.pyc" -delete
-
- #python setup.py testr --coverage --testr-args=""
- python setup.py testr --coverage --slowest --testr-args="$*"
- testr failing
- coverage report > ${current_report}
-
- rm -rf cover-$PY_VER
- coverage html -d cover-$PY_VER
-
- # debug awk
- tail -1 ${current_report}
- current_missing=$(awk 'END { if (int($3) > 0) print $3 }' ${current_report})
-
- if [[ -z $current_missing ]]; then
- echo "Failed to determine current missing"
- exit 1
- fi
-
- # Show coverage details
- new_missing=$((current_missing - baseline_missing))
-
- echo "Missing lines allowed to introduce : ${ALLOWED_EXTRA_MISSING}"
- echo "Missing lines introduced : ${new_missing}"
- echo "Missing lines in master : ${baseline_missing}"
- echo "Missing lines in proposed change : ${current_missing}"
-
- if [[ ${new_missing} -gt ${ALLOWED_EXTRA_MISSING} ]];
- then
- show_diff ${baseline_report} ${current_report}
- echo "Please write more unit tests, we should keep our test coverage :( "
- rm ${baseline_report} ${current_report}
- exit 1
-
- elif [[ ${new_missing} -gt 0 ]];
- then
- show_diff ${baseline_report} ${current_report}
- echo "I believe you can cover all your code with 100% coverage!"
-
- else
- echo "Thank you! You are awesome! Keep writing unit tests! :)"
- fi
-
- rm ${baseline_report} ${current_report}
-}
diff --git a/tests/ci/load_images.sh b/tests/ci/load_images.sh
index e73d7e800..666a78b40 100755
--- a/tests/ci/load_images.sh
+++ b/tests/ci/load_images.sh
@@ -63,11 +63,14 @@ build_yardstick_image()
fi
else
if [ ! -f "${QCOW_IMAGE}" ];then
- local cmd
- cmd="sudo $(which yardstick-img-modify) $(pwd)/tools/ubuntu-server-cloudimg-modify.sh"
-
- # Build the image. Retry once if the build fails
- $cmd || $cmd
+ ANSIBLE_SCRIPTS="${0%/*}/../../ansible"
+ cd ${ANSIBLE_SCRIPTS} &&\
+ ansible-playbook \
+ -e img_modify_playbook='ubuntu_server_cloudimg_modify.yml' \
+ -e target_os='Ubuntu' \
+ -e YARD_IMG_ARCH='amd64' \
+ -e ubuntu_img_file="${QCOW_IMAGE}" \
+ -vvv -i inventory.ini build_yardstick_image.yml
if [ ! -f "${QCOW_IMAGE}" ]; then
echo "Failed building QCOW image"
@@ -209,7 +212,7 @@ create_nova_flavor()
echo
echo "========== Creating yardstick-flavor =========="
# Create the nova flavor used by some sample test cases
- openstack ${SECURE} flavor create --id 100 --ram 1024 --disk 3 --vcpus 1 yardstick-flavor
+ openstack ${SECURE} flavor create --id 100 --ram 1024 --disk 10 --vcpus 1 yardstick-flavor
# DPDK-enabled OVS requires guest memory to be backed by large pages
if [[ $DEPLOY_SCENARIO == *[_-]ovs[_-]* ]]; then
openstack ${SECURE} flavor set --property hw:mem_page_size=large yardstick-flavor
diff --git a/tests/unit/network_services/vnf_generic/vnf/test_base.py b/tests/unit/network_services/vnf_generic/vnf/test_base.py
index 478ce186b..f812d67ef 100644
--- a/tests/unit/network_services/vnf_generic/vnf/test_base.py
+++ b/tests/unit/network_services/vnf_generic/vnf/test_base.py
@@ -243,31 +243,13 @@ class TestGenericVNF(unittest.TestCase):
class TestGenericTrafficGen(unittest.TestCase):
- def test___init__(self):
- vnfd = TestGenericVNF.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
- generic_traffic_gen = GenericTrafficGen('vnf1', vnfd)
- assert generic_traffic_gen.name == "vnf1"
-
- def test_listen_traffic(self):
- vnfd = TestGenericVNF.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
- generic_traffic_gen = GenericTrafficGen('vnf1', vnfd)
- traffic_profile = {}
- self.assertIsNone(generic_traffic_gen.listen_traffic(traffic_profile))
-
- def test_run_traffic(self):
- vnfd = TestGenericVNF.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
- generic_traffic_gen = GenericTrafficGen('vnf1', vnfd)
- traffic_profile = {}
- self.assertRaises(NotImplementedError,
- generic_traffic_gen.run_traffic, traffic_profile)
-
- def test_terminate(self):
- vnfd = TestGenericVNF.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
- generic_traffic_gen = GenericTrafficGen('vnf1', vnfd)
- self.assertRaises(NotImplementedError, generic_traffic_gen.terminate)
- def test_verify_traffic(self):
+ def test_definition(self):
+ """Make sure that the abstract class cannot be instantiated"""
vnfd = TestGenericVNF.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
- generic_traffic_gen = GenericTrafficGen('vnf1', vnfd)
- traffic_profile = {}
- self.assertIsNone(generic_traffic_gen.verify_traffic(traffic_profile))
+ name = 'vnf1'
+ with self.assertRaises(TypeError) as exc:
+ GenericTrafficGen(name, vnfd)
+ msg = ("Can't instantiate abstract class GenericTrafficGen with "
+ "abstract methods run_traffic, terminate")
+ self.assertEqual(msg, str(exc.exception))
diff --git a/tests/unit/network_services/vnf_generic/vnf/test_sample_vnf.py b/tests/unit/network_services/vnf_generic/vnf/test_sample_vnf.py
index 57f9fac61..85b10c5a9 100644
--- a/tests/unit/network_services/vnf_generic/vnf/test_sample_vnf.py
+++ b/tests/unit/network_services/vnf_generic/vnf/test_sample_vnf.py
@@ -2022,55 +2022,32 @@ class TestSampleVNFTrafficGen(unittest.TestCase):
sample_vnf_tg.terminate()
- @mock.patch('yardstick.network_services.vnf_generic.vnf.sample_vnf.time')
- @mock.patch('yardstick.network_services.vnf_generic.vnf.sample_vnf.LOG')
- def test_wait_for_instantiate(self, mock_logger, mock_time):
+ def test__wait_for_process(self):
sample_vnf_tg = SampleVNFTrafficGen('tg1', self.VNFD_0)
- sample_vnf_tg._check_status = mock.Mock(side_effect=iter([1, 0]))
- sample_vnf_tg._tg_process = mock.Mock()
- sample_vnf_tg._tg_process.is_alive.return_value = True
- sample_vnf_tg._tg_process.exitcode = 234
-
- self.assertEqual(sample_vnf_tg.wait_for_instantiate(), 234)
-
- @mock.patch('yardstick.network_services.vnf_generic.vnf.sample_vnf.time')
- @mock.patch('yardstick.network_services.vnf_generic.vnf.sample_vnf.LOG')
- def test_wait_for_instantiate_not_alive(self, mock_logger, mock_time):
+ with mock.patch.object(sample_vnf_tg, '_check_status',
+ return_value=0) as mock_status, \
+ mock.patch.object(sample_vnf_tg, '_tg_process') as mock_proc:
+ mock_proc.is_alive.return_value = True
+ mock_proc.exitcode = 234
+ self.assertEqual(sample_vnf_tg._wait_for_process(), 234)
+ mock_proc.is_alive.assert_called_once()
+ mock_status.assert_called_once()
+
+ def test__wait_for_process_not_alive(self):
sample_vnf_tg = SampleVNFTrafficGen('tg1', self.VNFD_0)
- sample_vnf_tg._check_status = mock.Mock(return_value=1)
- sample_vnf_tg._tg_process = mock.Mock()
- sample_vnf_tg._tg_process.is_alive.side_effect = iter([True, False])
- sample_vnf_tg._tg_process.exitcode = 234
-
- with self.assertRaises(RuntimeError):
- sample_vnf_tg.wait_for_instantiate()
-
- @mock.patch('yardstick.network_services.vnf_generic.vnf.sample_vnf.time')
- @mock.patch('yardstick.network_services.vnf_generic.vnf.sample_vnf.LOG')
- @mock.patch('yardstick.network_services.vnf_generic.vnf.sample_vnf.Process')
- def test_wait_for_instantiate_delayed(self, mock_process, mock_logger, mock_time):
- class MockClientStarted(mock.Mock):
-
- def __init__(self, *args, **kwargs):
- super(MockClientStarted, self).__init__(*args, **kwargs)
- self.iter = iter([0, 0, 1])
-
- @property
- def value(self):
- return next(self.iter)
-
- mock_traffic_profile = mock.Mock(autospec=TrafficProfile)
- mock_traffic_profile.get_traffic_definition.return_value = "64"
- mock_traffic_profile.execute_traffic.return_value = "64"
- mock_traffic_profile.params = self.TRAFFIC_PROFILE
+ with mock.patch.object(sample_vnf_tg, '_tg_process') as mock_proc:
+ mock_proc.is_alive.return_value = False
+ self.assertRaises(RuntimeError, sample_vnf_tg._wait_for_process)
+ mock_proc.is_alive.assert_called_once()
+ def test__wait_for_process_delayed(self):
sample_vnf_tg = SampleVNFTrafficGen('tg1', self.VNFD_0)
- sample_vnf_tg._check_status = mock.Mock(side_effect=iter([1, 0]))
- sample_vnf_tg._tg_process = mock.Mock()
- sample_vnf_tg._tg_process.is_alive.return_value = True
- sample_vnf_tg._tg_process.exitcode = 234
- sample_vnf_tg.resource_helper = mock.Mock()
- sample_vnf_tg.resource_helper.client_started = MockClientStarted()
-
- self.assertTrue(sample_vnf_tg.run_traffic(mock_traffic_profile))
- self.assertEqual(mock_time.sleep.call_count, 2)
+ with mock.patch.object(sample_vnf_tg, '_check_status',
+ side_effect=[1, 0]) as mock_status, \
+ mock.patch.object(sample_vnf_tg,
+ '_tg_process') as mock_proc:
+ mock_proc.is_alive.return_value = True
+ mock_proc.exitcode = 234
+ self.assertEqual(sample_vnf_tg._wait_for_process(), 234)
+ mock_proc.is_alive.assert_has_calls([mock.call(), mock.call()])
+ mock_status.assert_has_calls([mock.call(), mock.call()])