~andrewjbeach/juju-ci-tools/make-local-patcher

« back to all changes in this revision

Viewing changes to tests/test_generate_perfscale_results.py

  • Committer: Curtis Hovey
  • Date: 2015-06-11 19:35:22 UTC
  • mto: This revision was merged to the branch mainline in revision 983.
  • Revision ID: curtis@canonical.com-20150611193522-o2nqkqb04o2i75wv
Remove euca_dump_logs because it has not been used this year.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
"""Tests for assess_perf_test_simple module."""
2
 
 
3
 
from contextlib import contextmanager
4
 
from mock import patch, Mock
5
 
import StringIO
6
 
from textwrap import dedent
7
 
 
8
 
import generate_perfscale_results as gpr
9
 
import perf_graphing
10
 
from tests import (
11
 
    parse_error,
12
 
    TestCase,
13
 
)
14
 
 
15
 
 
16
 
class TestGenerateGraphImages(TestCase):
17
 
 
18
 
    @contextmanager
19
 
    def patch_generator(self, image):
20
 
        with patch.object(
21
 
                gpr, 'generate_graph_image',
22
 
                return_value=image, autospec=True) as m_ggi:
23
 
            yield m_ggi
24
 
 
25
 
    def test_generate_graph_image(self):
26
 
        image = Mock()
27
 
        base_dir = '/foo/test'
28
 
        results_dir = 'results'
29
 
        name = 'testing_name'
30
 
        generator = Mock()
31
 
        with patch.object(
32
 
                gpr, 'create_report_graph', return_value=image) as m_crg:
33
 
            self.assertEqual(
34
 
                image,
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)
39
 
 
40
 
    def test_generate_cpu_graph(self):
41
 
        image = Mock()
42
 
        with self.patch_generator(image) as m_ggi:
43
 
            self.assertEqual(
44
 
                image,
45
 
                gpr.generate_cpu_graph_image('/foo'))
46
 
        m_ggi.assert_called_once_with(
47
 
            '/foo', 'aggregation-cpu-average', 'cpu', perf_graphing.cpu_graph)
48
 
 
49
 
    def test_generate_memory_graph_calls_(self):
50
 
        image = Mock()
51
 
        with self.patch_generator(image) as m_ggi:
52
 
            self.assertEqual(
53
 
                image,
54
 
                gpr.generate_memory_graph_image('/foo'))
55
 
        m_ggi.assert_called_once_with(
56
 
            '/foo', 'memory', 'memory', perf_graphing.memory_graph)
57
 
 
58
 
    def test_generate_network_graph(self):
59
 
        image = Mock()
60
 
        with self.patch_generator(image) as m_ggi:
61
 
            self.assertEqual(
62
 
                image,
63
 
                gpr.generate_network_graph_image('/foo'))
64
 
        m_ggi.assert_called_once_with(
65
 
            '/foo', 'interface-eth0', 'network', perf_graphing.network_graph)
66
 
 
67
 
    def test_generate_mongo_query_graph(self):
68
 
        image = Mock()
69
 
        with self.patch_generator(image) as m_ggi:
70
 
            self.assertEqual(
71
 
                image,
72
 
                gpr.generate_mongo_query_graph_image('/foo'))
73
 
        m_ggi.assert_called_once_with(
74
 
            '/foo', 'mongodb', 'mongodb', perf_graphing.mongodb_graph)
75
 
 
76
 
    def test_generate_mongo_memory_graph(self):
77
 
        image = Mock()
78
 
        with self.patch_generator(image) as m_ggi:
79
 
            self.assertEqual(
80
 
                image,
81
 
                gpr.generate_mongo_memory_graph_image('/foo'))
82
 
        m_ggi.assert_called_once_with(
83
 
            '/foo',
84
 
            'mongodb',
85
 
            'mongodb_memory',
86
 
            perf_graphing.mongodb_memory_graph)
87
 
 
88
 
 
89
 
class TestFindActualStart(TestCase):
90
 
    example_output = dedent("""\
91
 
                         value
92
 
 
93
 
    1468551204: -nan
94
 
    1468554270: -nan
95
 
    1468554273: -nan
96
 
    1468554270: -nan
97
 
    1468554273: -nan
98
 
    1468554276: 1.7516817067e+08
99
 
    1468554279: 1.7500023467e+08
100
 
    1468554282: 1.7661269333e+08
101
 
    1468554285: 1.7819374933e+08""")
102
 
 
103
 
    example_multivalue_output = dedent("""\
104
 
                             value1    value2
105
 
 
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""")
114
 
 
115
 
    def test_doesnt_choke_on_non_timestamp_lines(self):
116
 
        try:
117
 
            gpr.find_actual_start(self.example_output)
118
 
            gpr.find_actual_start(self.example_multivalue_output)
119
 
        except Exception:
120
 
            self.fail('Unexpected exception raised.')
121
 
 
122
 
    def test_returns_actual_start_timestamp(self):
123
 
        self.assertEqual(
124
 
            gpr.find_actual_start(self.example_output),
125
 
            '1468554276')
126
 
 
127
 
        self.assertEqual(
128
 
            gpr.find_actual_start(self.example_multivalue_output),
129
 
            '1472708613')
130
 
 
131
 
 
132
 
class TestParseArgs(TestCase):
133
 
 
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)
142
 
 
143
 
    def test_help(self):
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())
150
 
 
151
 
 
152
 
class TestMain(TestCase):
153
 
    pass