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

« back to all changes in this revision

Viewing changes to tests/test_perf_graphing.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 perf_graphing support module."""
2
 
 
3
 
from mock import mock_open, patch, Mock
4
 
import StringIO
5
 
 
6
 
import perf_graphing as pg
7
 
from tests import TestCase
8
 
 
9
 
 
10
 
class TestCreateMongodbRRDFiles(TestCase):
11
 
 
12
 
    def test_raises_SourceFileNotFound_for_missing_file(self):
13
 
        with self.assertRaises(pg.SourceFileNotFound):
14
 
            pg.create_mongodb_rrd_files('/foo', '/bar')
15
 
 
16
 
    def test_create_mongodb_rrd_files(self):
17
 
        results_dir = '/foo/test/'
18
 
        destination_dir = '/bar/test/'
19
 
        start_ts = '0000'
20
 
        end_ts = '9999'
21
 
        all_data = [Mock()]
22
 
        stat_data = (start_ts, end_ts, all_data)
23
 
        m_open = mock_open()
24
 
        with patch.object(pg, 'open', m_open):
25
 
            with patch.object(
26
 
                    pg, 'get_mongodb_stat_data',
27
 
                    autospec=True, return_value=stat_data) as m_gmst:
28
 
                with patch.object(
29
 
                        pg, '_create_mongodb_memory_database',
30
 
                        autospec=True) as m_mdb:
31
 
                    with patch.object(
32
 
                            pg, '_create_mongodb_query_database',
33
 
                            autospec=True) as m_qdb:
34
 
                        pg.create_mongodb_rrd_files(
35
 
                            results_dir, destination_dir)
36
 
        file_handle = m_open()
37
 
        m_gmst.assert_called_once_with(file_handle)
38
 
        m_mdb.assert_called_once_with(
39
 
            '/bar/test/mongodb_memory.rrd', start_ts, all_data)
40
 
        m_qdb.assert_called_once_with(
41
 
            '/bar/test/mongodb.rrd', start_ts, all_data)
42
 
 
43
 
 
44
 
class TestGetMongodbStatData(TestCase):
45
 
 
46
 
    def get_test_file_data(self):
47
 
        file_data = StringIO.StringIO()
48
 
        file_data.write(
49
 
            '    41   322     28     12       1    59|0     0.4    0.5       '
50
 
            '0  792M 103M   0|0   0|0  114k   199k   24 juju  PRI '
51
 
            '2016-10-05T22:54:23Z\n')
52
 
        file_data.write(
53
 
            '    11   231      9     *0       0     9|0     0.1    0.6       '
54
 
            '0  792M 105M   0|0   0|0 51.6k   131k   24 juju  '
55
 
            'PRI 2016-10-05T22:55:08Z\n')
56
 
        file_data.seek(0)
57
 
        return file_data
58
 
 
59
 
    def test_returns_populated_MongoStatsData_object(self):
60
 
        file_data = self.get_test_file_data()
61
 
        _, _, data = pg.get_mongodb_stat_data(file_data)
62
 
 
63
 
        self.assertEqual(data[0].timestamp, 1475708063)
64
 
        self.assertEqual(data[0].insert, 41)
65
 
        self.assertEqual(data[0].query, 322)
66
 
        self.assertEqual(data[0].update, 28)
67
 
        self.assertEqual(data[0].delete, 12)
68
 
        self.assertEqual(data[0].vsize, 792000000)
69
 
        self.assertEqual(data[0].res, 103000000)
70
 
 
71
 
    def test_returns_first_and_last_timestamps(self):
72
 
        file_data = self.get_test_file_data()
73
 
 
74
 
        first, last, _ = pg.get_mongodb_stat_data(file_data)
75
 
        self.assertEqual(first, 1475708063)
76
 
        self.assertEqual(last, 1475708108)
77
 
 
78
 
    def test_returns_multiple_results(self):
79
 
        file_data = self.get_test_file_data()
80
 
        first, last, data = pg.get_mongodb_stat_data(file_data)
81
 
 
82
 
        self.assertEqual(len(data), 2)
83
 
        self.assertEqual(data[0].timestamp, 1475708063)
84
 
        self.assertEqual(data[1].timestamp, 1475708108)
85
 
 
86
 
 
87
 
class TestValueToBytes(TestCase):
88
 
 
89
 
    def test_keeps_already_bytes(self):
90
 
        self.assertEqual(pg.value_to_bytes('0'), 0)
91
 
        self.assertEqual(pg.value_to_bytes('100'), 100)
92
 
 
93
 
    def test_converts_Kvalues_to_bytes(self):
94
 
        self.assertEqual(pg.value_to_bytes('1K'), 1000)
95
 
        self.assertEqual(pg.value_to_bytes('1.5K'), 1500)
96
 
 
97
 
    def test_converts_Mvalues_to_bytes(self):
98
 
        self.assertEqual(pg.value_to_bytes('1M'), 1000000)
99
 
        self.assertEqual(pg.value_to_bytes('2.5M'), 2500000)
100
 
 
101
 
    def test_converts_Gvalues_to_bytes(self):
102
 
        self.assertEqual(pg.value_to_bytes('1G'), 1000000000)
103
 
        self.assertEqual(pg.value_to_bytes('2.5G'), 2500000000)
104
 
 
105
 
    def test_raises_exception_on_unknown(self):
106
 
        with self.assertRaises(ValueError):
107
 
            pg.value_to_bytes('abc')
108
 
 
109
 
    def test_returns_inttype(self):
110
 
        self.assertIsInstance(pg.value_to_bytes('1M'), int)
111
 
 
112
 
 
113
 
class TestMongoStatsData(TestCase):
114
 
 
115
 
    def test_values_are_int_type(self):
116
 
        test_stats = pg.MongoStatsData(None, '*1', '*1', '*1', '*1', '1', '1')
117
 
        self.assertIsInstance(test_stats.insert, int)
118
 
        self.assertIsInstance(test_stats.query, int)
119
 
        self.assertIsInstance(test_stats.update, int)
120
 
        self.assertIsInstance(test_stats.delete, int)
121
 
        self.assertIsInstance(test_stats.vsize, int)
122
 
        self.assertIsInstance(test_stats.res, int)
123
 
 
124
 
    def test_converts_MandG_values_to_bytes(self):
125
 
        test_stats = pg.MongoStatsData(None, '0', '0', '0', '0', '1M', '1G')
126
 
 
127
 
        self.assertEqual(test_stats.vsize, 1000000)
128
 
        self.assertEqual(test_stats.res, 1000000000)
129
 
 
130
 
    def test_removes_star_indicators(self):
131
 
        test_stats = pg.MongoStatsData(None, '*1', '*1', '*1', '*1', '0', '0')
132
 
        self.assertEqual(test_stats.insert, 1)
133
 
        self.assertEqual(test_stats.query, 1)
134
 
        self.assertEqual(test_stats.update, 1)
135
 
        self.assertEqual(test_stats.delete, 1)
136
 
 
137
 
    def test_stores_timestamp(self):
138
 
        test_stats = pg.MongoStatsData(1234, '0', '0', '0', '0', '0', '0')
139
 
        self.assertEqual(test_stats.timestamp, 1234)