9be6554a94
Change-Id: Iaaa504de674ada557ff3fbe1331f26e1d5de8650
132 lines
4.4 KiB
Python
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'])
|