Unify IXIA/Trex test cases results
[yardstick.git] / yardstick / tests / unit / network_services / traffic_profile / test_ixia_rfc2544.py
index ef16676..ddd1828 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (c) 2016-2017 Intel Corporation
+# Copyright (c) 2016-2019 Intel Corporation
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -487,7 +487,9 @@ class TestIXIARFC2544Profile(unittest.TestCase):
         result = r_f_c2544_profile._get_ixia_traffic_profile({})
         self.assertDictEqual(result, expected)
 
-    def test__ixia_traffic_generate(self):
+    @mock.patch.object(ixia_rfc2544.IXIARFC2544Profile,
+                       '_update_traffic_tracking_options')
+    def test__ixia_traffic_generate(self, mock_upd_tracking_opts):
         traffic_generator = mock.Mock(
             autospec=trex_traffic_profile.TrexProfile)
         traffic_generator.networks = {
@@ -502,19 +504,69 @@ class TestIXIARFC2544Profile(unittest.TestCase):
         r_f_c2544_profile = ixia_rfc2544.IXIARFC2544Profile(
             self.TRAFFIC_PROFILE)
         r_f_c2544_profile.rate = 100
-        result = r_f_c2544_profile._ixia_traffic_generate(traffic, ixia_obj)
+        result = r_f_c2544_profile._ixia_traffic_generate(traffic, ixia_obj,
+                                                          traffic_generator)
         self.assertIsNone(result)
+        mock_upd_tracking_opts.assert_called_once_with(traffic_generator)
+
+    def test__update_traffic_tracking_options(self):
+        mock_traffic_gen = mock.Mock()
+        rfc2544_profile = ixia_rfc2544.IXIARFC2544Profile(self.TRAFFIC_PROFILE)
+        rfc2544_profile._update_traffic_tracking_options(mock_traffic_gen)
+        mock_traffic_gen.update_tracking_options.assert_called_once()
+
+    def test__get_framesize(self):
+        traffic_profile = {
+            'uplink_0': {'ipv4': {'outer_l2': {'framesize': {'64B': 100}}}},
+            'downlink_0': {'ipv4': {'outer_l2': {'framesize': {'64B': 100}}}},
+            'uplink_1': {'ipv4': {'outer_l2': {'framesize': {'64B': 100}}}},
+            'downlink_1': {'ipv4': {'outer_l2': {'framesize': {'64B': 100}}}}
+        }
+        rfc2544_profile = ixia_rfc2544.IXIARFC2544Profile(self.TRAFFIC_PROFILE)
+        rfc2544_profile.params = traffic_profile
+        result = rfc2544_profile._get_framesize()
+        self.assertEqual(result, '64B')
+
+    def test__get_framesize_IMIX_traffic(self):
+        traffic_profile = {
+            'uplink_0': {'ipv4': {'outer_l2': {'framesize': {'64B': 50,
+                                                             '128B': 50}}}},
+            'downlink_0': {'ipv4': {'outer_l2': {'framesize': {'64B': 50,
+                                                               '128B': 50}}}},
+            'uplink_1': {'ipv4': {'outer_l2': {'framesize': {'64B': 50,
+                                                             '128B': 50}}}},
+            'downlink_1': {'ipv4': {'outer_l2': {'framesize': {'64B': 50,
+                                                               '128B': 50}}}}
+        }
+        rfc2544_profile = ixia_rfc2544.IXIARFC2544Profile(self.TRAFFIC_PROFILE)
+        rfc2544_profile.params = traffic_profile
+        result = rfc2544_profile._get_framesize()
+        self.assertEqual(result, 'IMIX')
+
+    def test__get_framesize_zero_pkt_size_weight(self):
+        traffic_profile = {
+            'uplink_0': {'ipv4': {'outer_l2': {'framesize': {'64B': 0}}}},
+            'downlink_0': {'ipv4': {'outer_l2': {'framesize': {'64B': 0}}}},
+            'uplink_1': {'ipv4': {'outer_l2': {'framesize': {'64B': 0}}}},
+            'downlink_1': {'ipv4': {'outer_l2': {'framesize': {'64B': 0}}}}
+        }
+        rfc2544_profile = ixia_rfc2544.IXIARFC2544Profile(self.TRAFFIC_PROFILE)
+        rfc2544_profile.params = traffic_profile
+        result = rfc2544_profile._get_framesize()
+        self.assertEqual(result, '')
 
     def test_execute_traffic_first_run(self):
         rfc2544_profile = ixia_rfc2544.IXIARFC2544Profile(self.TRAFFIC_PROFILE)
         rfc2544_profile.first_run = True
         rfc2544_profile.rate = 50
+        traffic_gen = mock.Mock()
+        traffic_gen.rfc_helper.iteration.value = 0
         with mock.patch.object(rfc2544_profile, '_get_ixia_traffic_profile') \
                 as mock_get_tp, \
                 mock.patch.object(rfc2544_profile, '_ixia_traffic_generate') \
                 as mock_tgenerate:
             mock_get_tp.return_value = 'fake_tprofile'
-            output = rfc2544_profile.execute_traffic(mock.ANY,
+            output = rfc2544_profile.execute_traffic(traffic_gen,
                                                      ixia_obj=mock.ANY)
 
         self.assertTrue(output)
@@ -529,13 +581,15 @@ class TestIXIARFC2544Profile(unittest.TestCase):
         rfc2544_profile.first_run = False
         rfc2544_profile.max_rate = 70
         rfc2544_profile.min_rate = 0
+        traffic_gen = mock.Mock()
+        traffic_gen.rfc_helper.iteration.value = 0
         with mock.patch.object(rfc2544_profile, '_get_ixia_traffic_profile') \
                 as mock_get_tp, \
                 mock.patch.object(rfc2544_profile, '_ixia_traffic_generate') \
                 as mock_tgenerate:
             mock_get_tp.return_value = 'fake_tprofile'
             rfc2544_profile.full_profile = mock.ANY
-            output = rfc2544_profile.execute_traffic(mock.ANY,
+            output = rfc2544_profile.execute_traffic(traffic_gen,
                                                      ixia_obj=mock.ANY)
 
         self.assertFalse(output)
@@ -573,43 +627,53 @@ class TestIXIARFC2544Profile(unittest.TestCase):
 
     def test_get_drop_percentage_completed(self):
         samples = {'iface_name_1':
-                       {'in_packets': 1000, 'out_packets': 1000,
-                        'Store-Forward_Avg_latency_ns': 20,
-                        'Store-Forward_Min_latency_ns': 15,
-                        'Store-Forward_Max_latency_ns': 25},
+                       {'InPackets': 1000, 'OutPackets': 1000,
+                        'InBytes': 64000, 'OutBytes': 64000,
+                        'LatencyAvg': 20,
+                        'LatencyMin': 15,
+                        'LatencyMax': 25},
                    'iface_name_2':
-                       {'in_packets': 1005, 'out_packets': 1007,
-                        'Store-Forward_Avg_latency_ns': 23,
-                        'Store-Forward_Min_latency_ns': 13,
-                        'Store-Forward_Max_latency_ns': 28}
+                       {'InPackets': 1005, 'OutPackets': 1007,
+                        'InBytes': 64320, 'OutBytes': 64448,
+                        'LatencyAvg': 23,
+                        'LatencyMin': 13,
+                        'LatencyMax': 28}
                    }
         rfc2544_profile = ixia_rfc2544.IXIARFC2544Profile(self.TRAFFIC_PROFILE)
+        rfc2544_profile.rate = 100.0
+        rfc2544_profile._get_next_rate = mock.Mock(return_value=100.0)
+        rfc2544_profile._get_framesize = mock.Mock(return_value='64B')
         completed, samples = rfc2544_profile.get_drop_percentage(
-            samples, 0, 1, 4)
+            samples, 0, 1, 4, 0.1)
         self.assertTrue(completed)
         self.assertEqual(66.9, samples['TxThroughput'])
         self.assertEqual(66.833, samples['RxThroughput'])
         self.assertEqual(0.099651, samples['DropPercentage'])
-        self.assertEqual(21.5, samples['latency_ns_avg'])
-        self.assertEqual(14.0, samples['latency_ns_min'])
-        self.assertEqual(26.5, samples['latency_ns_max'])
+        self.assertEqual(21.5, samples['LatencyAvg'])
+        self.assertEqual(13.0, samples['LatencyMin'])
+        self.assertEqual(28.0, samples['LatencyMax'])
+        self.assertEqual(100.0, samples['Rate'])
+        self.assertEqual('64B', samples['PktSize'])
 
     def test_get_drop_percentage_over_drop_percentage(self):
         samples = {'iface_name_1':
-                       {'in_packets': 1000, 'out_packets': 1000,
-                        'Store-Forward_Avg_latency_ns': 20,
-                        'Store-Forward_Min_latency_ns': 15,
-                        'Store-Forward_Max_latency_ns': 25},
+                       {'InPackets': 1000, 'OutPackets': 1000,
+                        'InBytes': 64000, 'OutBytes': 64000,
+                        'LatencyAvg': 20,
+                        'LatencyMin': 15,
+                        'LatencyMax': 25},
                    'iface_name_2':
-                       {'in_packets': 1005, 'out_packets': 1007,
-                        'Store-Forward_Avg_latency_ns': 20,
-                        'Store-Forward_Min_latency_ns': 15,
-                        'Store-Forward_Max_latency_ns': 25}
+                       {'InPackets': 1005, 'OutPackets': 1007,
+                        'InBytes': 64320, 'OutBytes': 64448,
+                        'LatencyAvg': 20,
+                        'LatencyMin': 15,
+                        'LatencyMax': 25}
                    }
         rfc2544_profile = ixia_rfc2544.IXIARFC2544Profile(self.TRAFFIC_PROFILE)
         rfc2544_profile.rate = 1000
+        rfc2544_profile._get_next_rate = mock.Mock(return_value=50.0)
         completed, samples = rfc2544_profile.get_drop_percentage(
-            samples, 0, 0.05, 4)
+            samples, 0, 0.05, 4, 0.1)
         self.assertFalse(completed)
         self.assertEqual(66.9, samples['TxThroughput'])
         self.assertEqual(66.833, samples['RxThroughput'])
@@ -618,20 +682,23 @@ class TestIXIARFC2544Profile(unittest.TestCase):
 
     def test_get_drop_percentage_under_drop_percentage(self):
         samples = {'iface_name_1':
-                       {'in_packets': 1000, 'out_packets': 1000,
-                        'Store-Forward_Avg_latency_ns': 20,
-                        'Store-Forward_Min_latency_ns': 15,
-                        'Store-Forward_Max_latency_ns': 25},
+                       {'InPackets': 1000, 'OutPackets': 1000,
+                        'InBytes': 64000, 'OutBytes': 64000,
+                        'LatencyAvg': 20,
+                        'LatencyMin': 15,
+                        'LatencyMax': 25},
                    'iface_name_2':
-                       {'in_packets': 1005, 'out_packets': 1007,
-                        'Store-Forward_Avg_latency_ns': 20,
-                        'Store-Forward_Min_latency_ns': 15,
-                        'Store-Forward_Max_latency_ns': 25}
+                       {'InPackets': 1005, 'OutPackets': 1007,
+                        'InBytes': 64320, 'OutBytes': 64448,
+                        'LatencyAvg': 20,
+                        'LatencyMin': 15,
+                        'LatencyMax': 25}
                    }
         rfc2544_profile = ixia_rfc2544.IXIARFC2544Profile(self.TRAFFIC_PROFILE)
         rfc2544_profile.rate = 1000
+        rfc2544_profile._get_next_rate = mock.Mock(return_value=50.0)
         completed, samples = rfc2544_profile.get_drop_percentage(
-            samples, 0.2, 1, 4)
+            samples, 0.2, 1, 4, 0.1)
         self.assertFalse(completed)
         self.assertEqual(66.9, samples['TxThroughput'])
         self.assertEqual(66.833, samples['RxThroughput'])
@@ -641,20 +708,23 @@ class TestIXIARFC2544Profile(unittest.TestCase):
     @mock.patch.object(ixia_rfc2544.LOG, 'info')
     def test_get_drop_percentage_not_flow(self, *args):
         samples = {'iface_name_1':
-                       {'in_packets': 1000, 'out_packets': 0,
-                        'Store-Forward_Avg_latency_ns': 20,
-                        'Store-Forward_Min_latency_ns': 15,
-                        'Store-Forward_Max_latency_ns': 25},
+                       {'InPackets': 1000, 'OutPackets': 0,
+                        'InBytes': 64000, 'OutBytes': 0,
+                        'LatencyAvg': 20,
+                        'LatencyMin': 15,
+                        'LatencyMax': 25},
                    'iface_name_2':
-                       {'in_packets': 1005, 'out_packets': 0,
-                        'Store-Forward_Avg_latency_ns': 20,
-                        'Store-Forward_Min_latency_ns': 15,
-                        'Store-Forward_Max_latency_ns': 25}
+                       {'InPackets': 1005, 'OutPackets': 0,
+                        'InBytes': 64320, 'OutBytes': 0,
+                        'LatencyAvg': 20,
+                        'LatencyMin': 15,
+                        'LatencyMax': 25}
                    }
         rfc2544_profile = ixia_rfc2544.IXIARFC2544Profile(self.TRAFFIC_PROFILE)
         rfc2544_profile.rate = 1000
+        rfc2544_profile._get_next_rate = mock.Mock(return_value=50.0)
         completed, samples = rfc2544_profile.get_drop_percentage(
-            samples, 0.2, 1, 4)
+            samples, 0.2, 1, 4, 0.1)
         self.assertFalse(completed)
         self.assertEqual(0.0, samples['TxThroughput'])
         self.assertEqual(66.833, samples['RxThroughput'])
@@ -663,25 +733,67 @@ class TestIXIARFC2544Profile(unittest.TestCase):
 
     def test_get_drop_percentage_first_run(self):
         samples = {'iface_name_1':
-                       {'in_packets': 1000, 'out_packets': 1000,
-                        'Store-Forward_Avg_latency_ns': 20,
-                        'Store-Forward_Min_latency_ns': 15,
-                        'Store-Forward_Max_latency_ns': 25},
+                       {'InPackets': 1000, 'OutPackets': 1000,
+                        'InBytes': 64000, 'OutBytes': 64000,
+                        'LatencyAvg': 20,
+                        'LatencyMin': 15,
+                        'LatencyMax': 25},
                    'iface_name_2':
-                       {'in_packets': 1005, 'out_packets': 1007,
-                        'Store-Forward_Avg_latency_ns': 20,
-                        'Store-Forward_Min_latency_ns': 15,
-                        'Store-Forward_Max_latency_ns': 25}
+                       {'InPackets': 1005, 'OutPackets': 1007,
+                        'InBytes': 64320, 'OutBytes': 64448,
+                        'LatencyAvg': 20,
+                        'LatencyMin': 15,
+                        'LatencyMax': 25}
                    }
         rfc2544_profile = ixia_rfc2544.IXIARFC2544Profile(self.TRAFFIC_PROFILE)
+        rfc2544_profile._get_next_rate = mock.Mock(return_value=50.0)
         completed, samples = rfc2544_profile.get_drop_percentage(
-            samples, 0, 1, 4, first_run=True)
+            samples, 0, 1, 4, 0.1, first_run=True)
         self.assertTrue(completed)
         self.assertEqual(66.9, samples['TxThroughput'])
         self.assertEqual(66.833, samples['RxThroughput'])
         self.assertEqual(0.099651, samples['DropPercentage'])
         self.assertEqual(33.45, rfc2544_profile.rate)
 
+    def test_get_drop_percentage_resolution(self):
+        rfc2544_profile = ixia_rfc2544.IXIARFC2544Profile(self.TRAFFIC_PROFILE)
+        rfc2544_profile._get_next_rate = mock.Mock(return_value=0.1)
+        samples = {'iface_name_1':
+                       {'InPackets': 1000, 'OutPackets': 1000,
+                        'InBytes': 64000, 'OutBytes': 64000,
+                        'LatencyAvg': 20,
+                        'LatencyMin': 15,
+                        'LatencyMax': 25},
+                   'iface_name_2':
+                       {'InPackets': 1005, 'OutPackets': 1007,
+                        'InBytes': 64320, 'OutBytes': 64448,
+                        'LatencyAvg': 20,
+                        'LatencyMin': 15,
+                        'LatencyMax': 25}
+                   }
+        rfc2544_profile.rate = 0.19
+        completed, _ = rfc2544_profile.get_drop_percentage(
+            samples, 0, 0.05, 4, 0.1)
+        self.assertTrue(completed)
+
+        samples = {'iface_name_1':
+                       {'InPackets': 1000, 'OutPackets': 1000,
+                        'InBytes': 64000, 'OutBytes': 64000,
+                        'LatencyAvg': 20,
+                        'LatencyMin': 15,
+                        'LatencyMax': 25},
+                   'iface_name_2':
+                       {'InPackets': 1005, 'OutPackets': 1007,
+                        'InBytes': 64320, 'OutBytes': 64448,
+                        'LatencyAvg': 20,
+                        'LatencyMin': 15,
+                        'LatencyMax': 25}
+                   }
+        rfc2544_profile.rate = 0.5
+        completed, _ = rfc2544_profile.get_drop_percentage(
+            samples, 0, 0.05, 4, 0.1)
+        self.assertFalse(completed)
+
 
 class TestIXIARFC2544PppoeScenarioProfile(unittest.TestCase):
 
@@ -701,6 +813,9 @@ class TestIXIARFC2544PppoeScenarioProfile(unittest.TestCase):
     def setUp(self):
         self.ixia_tp = ixia_rfc2544.IXIARFC2544PppoeScenarioProfile(
             self.TRAFFIC_PROFILE)
+        self.ixia_tp.rate = 100.0
+        self.ixia_tp._get_next_rate = mock.Mock(return_value=50.0)
+        self.ixia_tp._get_framesize = mock.Mock(return_value='64B')
 
     def test___init__(self):
         self.assertIsInstance(self.ixia_tp.full_profile,
@@ -715,3 +830,195 @@ class TestIXIARFC2544PppoeScenarioProfile(unittest.TestCase):
 
         self.ixia_tp._get_flow_groups_params()
         self.assertDictEqual(self.ixia_tp.full_profile, expected_tp)
+
+    @mock.patch.object(ixia_rfc2544.IXIARFC2544PppoeScenarioProfile,
+                       '_get_flow_groups_params')
+    def test_update_traffic_profile(self, mock_get_flow_groups_params):
+        networks = {
+            'uplink_0': 'data1',
+            'downlink_0': 'data2',
+            'uplink_1': 'data3',
+            'downlink_1': 'data4'
+        }
+        ports = ['xe0', 'xe1', 'xe2', 'xe3']
+        mock_traffic_gen = mock.Mock()
+        mock_traffic_gen.networks = networks
+        mock_traffic_gen.vnfd_helper.port_num.side_effect = ports
+        self.ixia_tp.update_traffic_profile(mock_traffic_gen)
+        mock_get_flow_groups_params.assert_called_once()
+        self.assertEqual(self.ixia_tp.ports, ports)
+
+    def test__get_prio_flows_drop_percentage(self):
+
+        input_stats = {
+            '0': {
+                'InPackets': 50,
+                'OutPackets': 100,
+                'Store-Forward_Avg_latency_ns': 10,
+                'Store-Forward_Min_latency_ns': 10,
+                'Store-Forward_Max_latency_ns': 10}}
+
+        result = self.ixia_tp._get_prio_flows_drop_percentage(input_stats)
+        self.assertIsNotNone(result['0'].get('DropPercentage'))
+        self.assertEqual(result['0'].get('DropPercentage'), 50.0)
+
+    def test__get_prio_flows_drop_percentage_traffic_not_flowing(self):
+        input_stats = {
+            '0': {
+                'InPackets': 0,
+                'OutPackets': 0,
+                'Store-Forward_Avg_latency_ns': 0,
+                'Store-Forward_Min_latency_ns': 0,
+                'Store-Forward_Max_latency_ns': 0}}
+
+        result = self.ixia_tp._get_prio_flows_drop_percentage(input_stats)
+        self.assertIsNotNone(result['0'].get('DropPercentage'))
+        self.assertEqual(result['0'].get('DropPercentage'), 100)
+
+    def test__get_summary_pppoe_subs_counters(self):
+        input_stats = {
+            'xe0': {
+                'OutPackets': 100,
+                'SessionsUp': 4,
+                'SessionsDown': 0,
+                'SessionsNotStarted': 0,
+                'SessionsTotal': 4},
+            'xe1': {
+                'OutPackets': 100,
+                'SessionsUp': 4,
+                'SessionsDown': 0,
+                'SessionsNotStarted': 0,
+                'SessionsTotal': 4}
+        }
+
+        expected_stats = {
+            'SessionsUp': 8,
+            'SessionsDown': 0,
+            'SessionsNotStarted': 0,
+            'SessionsTotal': 8
+        }
+
+        res = self.ixia_tp._get_summary_pppoe_subs_counters(input_stats)
+        self.assertDictEqual(res, expected_stats)
+
+    @mock.patch.object(ixia_rfc2544.IXIARFC2544PppoeScenarioProfile,
+                       '_get_prio_flows_drop_percentage')
+    @mock.patch.object(ixia_rfc2544.IXIARFC2544PppoeScenarioProfile,
+                       '_get_summary_pppoe_subs_counters')
+    def test_get_drop_percentage(self, mock_get_pppoe_subs,
+                                 mock_sum_prio_drop_rate):
+        samples = {
+            'priority_stats': {
+                '0': {
+                    'InPackets': 100,
+                    'OutPackets': 100,
+                    'InBytes': 6400,
+                    'OutBytes': 6400,
+                    'LatencyAvg': 10,
+                    'LatencyMin': 10,
+                    'LatencyMax': 10}},
+            'xe0': {
+                'InPackets': 100,
+                'OutPackets': 100,
+                'InBytes': 6400,
+                'OutBytes': 6400,
+                'LatencyAvg': 10,
+                'LatencyMin': 10,
+                'LatencyMax': 10}}
+
+        mock_get_pppoe_subs.return_value = {'SessionsUp': 1}
+        mock_sum_prio_drop_rate.return_value = {'0': {'DropPercentage': 0.0}}
+
+        self.ixia_tp._get_framesize = mock.Mock(return_value='64B')
+        status, res = self.ixia_tp.get_drop_percentage(
+            samples, tol_min=0.0, tolerance=0.0001, precision=0,
+            resolution=0.1, first_run=True)
+        self.assertIsNotNone(res.get('DropPercentage'))
+        self.assertIsNotNone(res.get('Priority'))
+        self.assertIsNotNone(res.get('SessionsUp'))
+        self.assertEqual(res['DropPercentage'], 0.0)
+        self.assertEqual(res['Rate'], 100.0)
+        self.assertEqual(res['PktSize'], '64B')
+        self.assertTrue(status)
+        mock_sum_prio_drop_rate.assert_called_once()
+        mock_get_pppoe_subs.assert_called_once()
+
+    @mock.patch.object(ixia_rfc2544.IXIARFC2544PppoeScenarioProfile,
+                       '_get_prio_flows_drop_percentage')
+    @mock.patch.object(ixia_rfc2544.IXIARFC2544PppoeScenarioProfile,
+                       '_get_summary_pppoe_subs_counters')
+    def test_get_drop_percentage_failed_status(self, mock_get_pppoe_subs,
+                                               mock_sum_prio_drop_rate):
+        samples = {
+            'priority_stats': {
+                '0': {
+                    'InPackets': 90,
+                    'OutPackets': 100,
+                    'InBytes': 5760,
+                    'OutBytes': 6400,
+                    'LatencyAvg': 10,
+                    'LatencyMin': 10,
+                    'LatencyMax': 10}},
+            'xe0': {
+                'InPackets': 90,
+                'OutPackets': 100,
+                'InBytes': 5760,
+                'OutBytes': 6400,
+                'LatencyAvg': 10,
+                'LatencyMin': 10,
+                'LatencyMax': 10}}
+
+        mock_get_pppoe_subs.return_value = {'SessionsUp': 1}
+        mock_sum_prio_drop_rate.return_value = {'0': {'DropPercentage': 0.0}}
+
+        status, res = self.ixia_tp.get_drop_percentage(
+            samples, tol_min=0.0, tolerance=0.0001, precision=0,
+            resolution=0.1, first_run=True)
+        self.assertIsNotNone(res.get('DropPercentage'))
+        self.assertIsNotNone(res.get('Priority'))
+        self.assertIsNotNone(res.get('SessionsUp'))
+        self.assertEqual(res['DropPercentage'], 10.0)
+        self.assertFalse(status)
+        mock_sum_prio_drop_rate.assert_called_once()
+        mock_get_pppoe_subs.assert_called_once()
+
+    @mock.patch.object(ixia_rfc2544.IXIARFC2544PppoeScenarioProfile,
+                       '_get_prio_flows_drop_percentage')
+    @mock.patch.object(ixia_rfc2544.IXIARFC2544PppoeScenarioProfile,
+                       '_get_summary_pppoe_subs_counters')
+    def test_get_drop_percentage_priority_flow_check(self, mock_get_pppoe_subs,
+                                                     mock_sum_prio_drop_rate):
+        samples = {
+            'priority_stats': {
+                '0': {
+                    'InPackets': 100,
+                    'OutPackets': 100,
+                    'InBytes': 6400,
+                    'OutBytes': 6400,
+                    'LatencyAvg': 10,
+                    'LatencyMin': 10,
+                    'LatencyMax': 10}},
+            'xe0': {
+                'InPackets': 90,
+                'OutPackets': 100,
+                'InBytes': 5760,
+                'OutBytes': 6400,
+                'LatencyAvg': 10,
+                'LatencyMin': 10,
+                'LatencyMax': 10
+        }}
+
+        mock_get_pppoe_subs.return_value = {'SessionsUp': 1}
+        mock_sum_prio_drop_rate.return_value = {'0': {'DropPercentage': 0.0}}
+
+        tc_rfc2544_opts = {'priority': '0',
+                           'allowed_drop_rate': '0.0001 - 0.0001'}
+        status, res = self.ixia_tp.get_drop_percentage(
+            samples, tol_min=15.0000, tolerance=15.0001, precision=0,
+            resolution=0.1, first_run=True, tc_rfc2544_opts=tc_rfc2544_opts)
+        self.assertIsNotNone(res.get('DropPercentage'))
+        self.assertIsNotNone(res.get('Priority'))
+        self.assertIsNotNone(res.get('SessionsUp'))
+        self.assertTrue(status)
+        mock_sum_prio_drop_rate.assert_called_once()
+        mock_get_pppoe_subs.assert_called_once()