1
"""Tests for assess_perf_test_simple module."""
3
from contextlib import contextmanager
4
from mock import patch, Mock
6
from textwrap import dedent
8
import generate_perfscale_results as gpr
16
class TestGenerateGraphImages(TestCase):
19
def patch_generator(self, image):
21
gpr, 'generate_graph_image',
22
return_value=image, autospec=True) as m_ggi:
25
def test_generate_graph_image(self):
27
base_dir = '/foo/test'
28
results_dir = 'results'
32
gpr, 'create_report_graph', return_value=image) as m_crg:
35
gpr.generate_graph_image(
36
base_dir, results_dir, name, generator))
37
m_crg.assert_called_once_with(
38
'/foo/test/results', base_dir, name, generator)
40
def test_generate_cpu_graph(self):
42
with self.patch_generator(image) as m_ggi:
45
gpr.generate_cpu_graph_image('/foo'))
46
m_ggi.assert_called_once_with(
47
'/foo', 'aggregation-cpu-average', 'cpu', perf_graphing.cpu_graph)
49
def test_generate_memory_graph_calls_(self):
51
with self.patch_generator(image) as m_ggi:
54
gpr.generate_memory_graph_image('/foo'))
55
m_ggi.assert_called_once_with(
56
'/foo', 'memory', 'memory', perf_graphing.memory_graph)
58
def test_generate_network_graph(self):
60
with self.patch_generator(image) as m_ggi:
63
gpr.generate_network_graph_image('/foo'))
64
m_ggi.assert_called_once_with(
65
'/foo', 'interface-eth0', 'network', perf_graphing.network_graph)
67
def test_generate_mongo_query_graph(self):
69
with self.patch_generator(image) as m_ggi:
72
gpr.generate_mongo_query_graph_image('/foo'))
73
m_ggi.assert_called_once_with(
74
'/foo', 'mongodb', 'mongodb', perf_graphing.mongodb_graph)
76
def test_generate_mongo_memory_graph(self):
78
with self.patch_generator(image) as m_ggi:
81
gpr.generate_mongo_memory_graph_image('/foo'))
82
m_ggi.assert_called_once_with(
86
perf_graphing.mongodb_memory_graph)
89
class TestFindActualStart(TestCase):
90
example_output = dedent("""\
98
1468554276: 1.7516817067e+08
99
1468554279: 1.7500023467e+08
100
1468554282: 1.7661269333e+08
101
1468554285: 1.7819374933e+08""")
103
example_multivalue_output = dedent("""\
106
1472708601: -nan -nan
107
1472708604: -nan -nan
108
1472708607: -nan -nan
109
1472708610: -nan -nan
110
1472708613: 7.5466666667e+02 5.8166666667e+02
111
1472708616: 2.5555555556e+02 1.9833333333e+02
112
1472708619: 1.3333333333e+01 1.1555555556e+01
113
1472708622: 2.7444444444e+01 2.6222222222e+01""")
115
def test_doesnt_choke_on_non_timestamp_lines(self):
117
gpr.find_actual_start(self.example_output)
118
gpr.find_actual_start(self.example_multivalue_output)
120
self.fail('Unexpected exception raised.')
122
def test_returns_actual_start_timestamp(self):
124
gpr.find_actual_start(self.example_output),
128
gpr.find_actual_start(self.example_multivalue_output),
132
class TestParseArgs(TestCase):
134
def test_common_args(self):
135
args = gpr.parse_args(
136
["an-env", "/bin/juju", "/tmp/logs", "an-env-mod"])
137
self.assertEqual("an-env", args.env)
138
self.assertEqual("/bin/juju", args.juju_bin)
139
self.assertEqual("/tmp/logs", args.logs)
140
self.assertEqual("an-env-mod", args.temp_env_name)
141
self.assertEqual(False, args.debug)
144
fake_stdout = StringIO.StringIO()
145
with parse_error(self) as fake_stderr:
146
with patch("sys.stdout", fake_stdout):
147
gpr.parse_args(["--help"])
148
self.assertEqual("", fake_stderr.getvalue())
149
self.assertNotIn("TODO", fake_stdout.getvalue())
152
class TestMain(TestCase):