1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
##############################################################################
# Copyright (c) 2016 EMC and others.
#
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Apache License, Version 2.0
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
import unittest
import mock
from storperf.db.graphite_db import GraphiteDB
class MockResponse():
def __init__(self):
self.content = ""
self.status_code = 200
class GraphiteDBTest(unittest.TestCase):
def setUp(self):
self.graphdb = GraphiteDB()
self.graphdb._job_db = self
def test_wildcard_pattern(self):
workload = "job_id"
expected = "job_id.*.*.*.*.*.*"
actual = self.graphdb.make_fullname_pattern(workload)
self.assertEqual(expected, actual, actual)
def test_no_wildcard_pattern(self):
workload = "job_id.workload.host.queue-depth.1.block-size.16"
actual = self.graphdb.make_fullname_pattern(workload)
self.assertEqual(workload, actual, actual)
def test_fetch_averages(self):
# self.graphdb.fetch_averages(u'32d31724-fac1-44f3-9033-ca8e00066a36')
pass
@mock.patch("requests.get")
def test_fetch_series(self, mock_requests):
response = MockResponse()
response.content = """
[
{
"datapoints": [
[null,1480455880],
[null,1480455890],
[null,1480455900],
[205.345,1480455910],
[201.59,1480455920],
[205.76,1480455930],
[null,1480455940],
[null,1480455950],
[null,1480455960],
[215.655,1480455970],
[214.16,1480455980],
[213.57,1480455990],
[null,1480456000],
[null,1480456010],
[null,1480456020],
[219.37,1480456030],
[219.28,1480456040],
[217.75,1480456050],
[null,1480456060]
],
"target":"averageSeries(.8192.*.jobs.1.write.iops)"
}
]"""
expected = [[1480455910, 205.345],
[1480455920, 201.59],
[1480455930, 205.76],
[1480455970, 215.655],
[1480455980, 214.16],
[1480455990, 213.57],
[1480456030, 219.37],
[1480456040, 219.28],
[1480456050, 217.75]]
mock_requests.side_effect = (response,)
actual = self.graphdb.fetch_series("averageSeries",
"workload", "iops",
"write", 0, 600)
self.assertEqual(expected, actual)
def fetch_workloads(self, workload):
workloads = [[u'32d31724-fac1-44f3-9033-ca8e00066a36.'
u'_warm_up.queue-depth.32.block-size.8192.10-9-15-151',
u'1462379653', u'1462379893'],
[u'32d31724-fac1-44f3-9033-ca8e00066a36.'
u'_warm_up.queue-depth.32.block-size.8192.10-9-15-150',
u'1462379653', u'1462379898'],
[u'32d31724-fac1-44f3-9033-ca8e00066a36'
u'.rw.queue-depth.128.block-size.8192.10-9-15-151',
u'1462379898', u'1462380028'],
[u'32d31724-fac1-44f3-9033-ca8e00066a36'
u'.rw.queue-depth.128.block-size.8192.10-9-15-150',
u'1462379898', u'1462380032'],
[u'32d31724-fac1-44f3-9033-ca8e00066a36'
u'.rw.queue-depth.16.block-size.8192.10-9-15-151',
u'1462380032', u'1462380312'],
[u'32d31724-fac1-44f3-9033-ca8e00066a36'
u'.rw.queue-depth.16.block-size.8192.10-9-15-150',
u'1462380032', u'1462380329'],
]
return workloads
|