shaker/tests/test_traffic_aggregator.py
Ilya Shakhat 9be6554a94 Added netperf-wrapper test suite and aggregate report
Change-Id: Iaaa504de674ada557ff3fbe1331f26e1d5de8650
2015-03-16 19:07:57 +03:00

132 lines
4.4 KiB
Python

# Copyright (c) 2015 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.
import copy
import testtools
from shaker.engine.aggregators import traffic
class TestTrafficAggregator(testtools.TestCase):
def test_agent_summary(self):
aggregator = traffic.TrafficAggregator(None)
original = {
"stderr": "", "stdout": '',
"meta": [["time", "s"], ["Ping ICMP", "ms"],
["TCP download", "bps"]],
"samples": [[0, 1.9, None],
[1, 2.4, None],
[2, 2.6, 60 * 1024 * 1024],
[3, 2.2, 65 * 1024 * 1024],
[4, 2.2, 61 * 1024 * 1024],
[5, 1.9, None]],
}
processed = copy.deepcopy(original)
aggregator.agent_summary(processed)
self.assertFalse('stdout' in processed)
expected_stats = {
'Ping ICMP': {
'max': 2.6,
'min': 1.9,
'mean': 2.2,
'unit': 'ms',
},
'TCP download': {
'max': 65.0,
'min': 60.0,
'mean': 62.0,
'unit': 'Mbps',
}
}
self.assertEqual(expected_stats, processed['stats'])
expected_chart = [['time', 0, 1, 2, 3, 4, 5],
['Ping ICMP', 1.9, 2.4, 2.6, 2.2, 2.2, 1.9],
['TCP download', None, None, 60.0, 65.0, 61.0, None]]
self.assertEqual(expected_chart, processed['chart'])
def test_iteration_summary(self):
aggregator = traffic.TrafficAggregator(None)
original = {
'results_per_agent': [
{
'agent': {'node': 'alpha'},
'stats': {
'Ping ICMP': {
'max': 2.6,
'min': 1.9,
'mean': 2.2,
'unit': 'ms',
},
'TCP download': {
'max': 65.0,
'min': 60.0,
'mean': 62.0,
'unit': 'Mbps',
}
},
'chart': [['time', 0, 1, 2, 3, 4, 5],
['Ping ICMP', 1.9, 2.4, 2.6, 2.2, 2.2, 1.9],
['TCP download', None, None, 60.0, 65.0, 61.0,
None]]
},
{
'agent': {'node': 'beta'},
'stats': {
'Ping ICMP': {
'max': 3.6,
'min': 2.9,
'mean': 3.2,
'unit': 'ms',
},
'TCP download': {
'max': 75.0,
'min': 70.0,
'mean': 72.0,
'unit': 'Mbps',
}
},
'chart': [['time', 0, 1, 2, 3, 4, 5],
['Ping ICMP', 2.9, 3.4, 3.6, 3.2, 3.2, 2.9],
['TCP download', None, None, 70.0, 75.0, 71.0,
None]]
},
]
}
processed = copy.deepcopy(original)
aggregator.iteration_summary(processed)
expected_stats = {
'Ping ICMP': {
'max': 3.6,
'min': 1.9,
'mean': 2.7,
'unit': 'ms',
},
'TCP download': {
'max': 75.0,
'min': 60.0,
'mean': 67.0,
'unit': 'Mbps',
}
}
self.assertEqual(expected_stats, processed['stats'])