NSB "Prox" : Cleanup duplicated traffic profile 07/48907/1
authorAbhijit Sinha <abhijit.sinha@intel.com>
Thu, 16 Nov 2017 17:40:02 +0000 (17:40 +0000)
committerRoss Brattain <ross.b.brattain@intel.com>
Thu, 14 Dec 2017 04:18:22 +0000 (04:18 +0000)
JIRA: YARDSTICK-848

The NSB PROX MPLS test uses Binsearch traffic
profile and the mpls traffic profile is a duplicate.

Change-Id: Ie2124cebf306fd6917b70ecd7c23ae12ef4850dc
Signed-off-by: Abhijit Sinha <abhijit.sinha@intel.com>
(cherry picked from commit 1b9cc8a38a4866797bd49d006e22607b348f42ac)

samples/vnf_samples/traffic_profiles/prox_mpls_tag_untag.yaml
tests/unit/network_services/traffic_profile/test_prox_mpls.py [deleted file]
yardstick/network_services/traffic_profile/prox_mpls_tag_untag.py [deleted file]

index 9ac6e6e..b65fb05 100644 (file)
@@ -18,7 +18,7 @@ name:            prox_mpls_tag_untag
 description:     MPLS tag/untag for max no-drop throughput over given packet sizes
 
 traffic_profile:
-  traffic_type: ProxMplsTagUntagProfile
+  traffic_type: ProxBinSearchProfile
   tolerated_loss: 0.001
   test_precision: 0.1
 #  packet_sizes: [64, 128, 256, 512, 1024, 1280, 1518]
diff --git a/tests/unit/network_services/traffic_profile/test_prox_mpls.py b/tests/unit/network_services/traffic_profile/test_prox_mpls.py
deleted file mode 100644 (file)
index 00a690d..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-# Copyright (c) 2017 Intel Corporation
-#
-# 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.
-#
-
-from __future__ import absolute_import
-
-import unittest
-import mock
-
-from tests.unit import STL_MOCKS
-
-STLClient = mock.MagicMock()
-stl_patch = mock.patch.dict("sys.modules", STL_MOCKS)
-stl_patch.start()
-
-if stl_patch:
-    from yardstick.network_services.vnf_generic.vnf.prox_helpers import ProxTestDataTuple
-    from yardstick.network_services.traffic_profile.prox_mpls_tag_untag import ProxMplsTagUntagProfile
-
-
-class TestProxMplsTagUntagProfile(unittest.TestCase):
-
-    def test_mpls_1(self):
-        def target(*args, **kwargs):
-            runs.append(args[2])
-            if args[2] < 0 or args[2] > 100:
-                raise RuntimeError(' '.join([str(args), str(runs)]))
-            if args[2] > 75.0:
-                return fail_tuple, {}
-            return success_tuple, {}
-
-        tp_config = {
-            'traffic_profile': {
-                'packet_sizes': [200],
-            },
-        }
-
-        runs = []
-        success_tuple = ProxTestDataTuple(10.0, 1, 2, 3, 4, [5.1, 5.2, 5.3], 995, 1000, 123.4)
-        fail_tuple = ProxTestDataTuple(10.0, 1, 2, 3, 4, [5.6, 5.7, 5.8], 850, 1000, 123.4)
-
-        traffic_generator = mock.MagicMock()
-
-        profile = ProxMplsTagUntagProfile(tp_config)
-        profile.init(mock.MagicMock())
-        profile._profile_helper = profile_helper = mock.MagicMock()
-        profile_helper.run_test = target
-
-        profile.execute_traffic(traffic_generator)
-        self.assertEqual(round(profile.current_lower, 2), 74.69)
-        self.assertEqual(round(profile.current_upper, 2), 75.39)
-        self.assertEqual(len(runs), 8)
-
-    def test_mpls_2(self):
-        def target(*args, **kwargs):
-            runs.append(args[2])
-            if args[2] < 0 or args[2] > 100:
-                raise RuntimeError(' '.join([str(args), str(runs)]))
-            if args[2] > 25.0:
-                return fail_tuple, {}
-            return success_tuple, {}
-
-        tp_config = {
-            'traffic_profile': {
-                'packet_sizes': [200],
-                'test_precision': 2.0,
-            },
-        }
-
-        runs = []
-        success_tuple = ProxTestDataTuple(10.0, 1, 2, 3, 4, [5.1, 5.2, 5.3], 995, 1000, 123.4)
-        fail_tuple = ProxTestDataTuple(10.0, 1, 2, 3, 4, [5.6, 5.7, 5.8], 850, 1000, 123.4)
-
-        traffic_generator = mock.MagicMock()
-
-        profile = ProxMplsTagUntagProfile(tp_config)
-        profile.init(mock.MagicMock())
-        profile._profile_helper = profile_helper = mock.MagicMock()
-        profile_helper.run_test = target
-
-        profile.execute_traffic(traffic_generator)
-        self.assertEqual(round(profile.current_lower, 2), 24.06)
-        self.assertEqual(round(profile.current_upper, 2), 25.47)
-        self.assertEqual(len(runs), 7)
diff --git a/yardstick/network_services/traffic_profile/prox_mpls_tag_untag.py b/yardstick/network_services/traffic_profile/prox_mpls_tag_untag.py
deleted file mode 100644 (file)
index 0e1048b..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-# Copyright (c) 2016-2017 Intel Corporation
-#
-# 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.
-""" Fixed traffic profile definitions """
-
-from __future__ import absolute_import
-
-import logging
-
-from yardstick.network_services.traffic_profile.prox_profile import ProxProfile
-
-LOG = logging.getLogger(__name__)
-
-
-class ProxMplsTagUntagProfile(ProxProfile):
-    """
-    This profile adds a single stream at the beginning of the traffic session
-    """
-
-    def __init__(self, tp_config):
-        super(ProxMplsTagUntagProfile, self).__init__(tp_config)
-        self.current_lower = self.lower_bound
-        self.current_upper = self.upper_bound
-
-    @property
-    def delta(self):
-        return self.current_upper - self.current_lower
-
-    @property
-    def mid_point(self):
-        return (self.current_lower + self.current_upper) / 2
-
-    def bounds_iterator(self, logger=None):
-        self.current_lower = self.lower_bound
-        self.current_upper = self.upper_bound
-
-        test_value = self.current_upper
-        while abs(self.delta) >= self.precision:
-            if logger:
-                logger.debug("New interval [%s, %s), precision: %d", self.current_lower,
-                             self.current_upper, self.step_value)
-                logger.info("Testing with value %s", test_value)
-
-            yield test_value
-            test_value = self.mid_point
-
-    def run_test_with_pkt_size(self, traffic_gen, pkt_size, duration):
-        """Run the test for a single packet size.
-
-        :param traffic_gen: traffic generator instance
-        :type traffic_gen: TrafficGen
-        :param  pkt_size: The packet size to test with.
-        :type pkt_size: int
-        :param  duration: The duration for each try.
-        :type duration: int
-
-        """
-
-        LOG.info("Testing with packet size %d", pkt_size)
-
-        # Binary search assumes the lower value of the interval is
-        # successful and the upper value is a failure.
-        # The first value that is tested, is the maximum value. If that
-        # succeeds, no more searching is needed. If it fails, a regular
-        # binary search is performed.
-        #
-        # The test_value used for the first iteration of binary search
-        # is adjusted so that the delta between this test_value and the
-        # upper bound is a power-of-2 multiple of precision. In the
-        # optimistic situation where this first test_value results in a
-        # success, the binary search will complete on an integer multiple
-        # of the precision, rather than on a fraction of it.
-
-        # throughput and packet loss from the most recent successful test
-        successful_pkt_loss = 0.0
-        for test_value in self.bounds_iterator(LOG):
-            result, port_samples = self._profile_helper.run_test(pkt_size, duration,
-                                                                 test_value, self.tolerated_loss)
-
-            if result.success:
-                LOG.debug("Success! Increasing lower bound")
-                self.current_lower = test_value
-                successful_pkt_loss = result.pkt_loss
-            else:
-                LOG.debug("Failure... Decreasing upper bound")
-                self.current_upper = test_value
-
-            samples = result.get_samples(pkt_size, successful_pkt_loss, port_samples)
-            self.queue.put(samples)