Skip to content

Commit 1025641

Browse files
committed
collector unit_test
Signed-off-by: hwassman <[email protected]>
1 parent 2ebb875 commit 1025641

File tree

2 files changed

+151
-9
lines changed

2 files changed

+151
-9
lines changed

source/collector.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,10 @@ def __init__(self, sensor: str, period: str):
152152
self.filtersMap = self._get_all_filters()
153153
self.labels = self._get_sensor_labels()
154154

155+
@property
156+
def md(self):
157+
return MetadataHandler()
158+
155159
def cleanup_metrics_values(self) -> None:
156160
for name in self.metrics.keys():
157161
self.metrics[name].timeseries = []
@@ -162,8 +166,7 @@ def setup_static_metrics_data(self, include_metrics: Optional[list] = None,
162166
include_metrics = include_metrics or []
163167
exclude_metrics = exclude_metrics or []
164168

165-
md = MetadataHandler()
166-
metrics = md.metaData.getSensorMetricNames(self.sensor)
169+
metrics = self.md.metaData.getSensorMetricNames(self.sensor)
167170
if len(metrics) < 1:
168171
return # this should not happen
169172

@@ -178,9 +181,8 @@ def setup_static_metrics_data(self, include_metrics: Optional[list] = None,
178181

179182
def _setup_static_metrics_data(self, metric_names: List[str]):
180183
mDict = {}
181-
md = MetadataHandler()
182-
spec = md.metricsDesc
183-
metricsTypes = md.metaData.metricsType
184+
spec = self.md.metricsDesc
185+
metricsTypes = self.md.metaData.metricsType
184186

185187
for name in metric_names:
186188
mtype = 'gauge'
@@ -195,12 +197,10 @@ def _setup_static_metrics_data(self, metric_names: List[str]):
195197
self.metrics = mDict
196198

197199
def _get_all_filters(self):
198-
md = MetadataHandler()
199-
return md.metaData.getAllFilterMapsForSensor(self.sensor)
200+
return self.md.metaData.getAllFilterMapsForSensor(self.sensor)
200201

201202
def _get_sensor_labels(self):
202-
md = MetadataHandler()
203-
return md.metaData.getSensorLabels(self.sensor)
203+
return self.md.metaData.getSensorLabels(self.sensor)
204204

205205

206206
@classattributes(dict(metricsaggr=None, filters=None, grouptags=None,

tests/test_collector.py

Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
import logging
2+
import os
3+
import json
4+
from unittest import mock
5+
from source.bridgeLogger import configureLogging
6+
from source.queryHandler.Topo import Topo
7+
from nose2.tools.decorators import with_setup
8+
from source.collector import QueryPolicy, SensorCollector
9+
10+
11+
def my_setup():
12+
global path, topo, logger, prometheus_attrs, pfilters, pquery_filters
13+
path = os.getcwd()
14+
topoStrFile = os.path.join(path, "tests", "test_data", 'topoStr.json')
15+
with open(topoStrFile) as f:
16+
topoStr = json.load(f)
17+
topo = Topo(topoStr)
18+
logger = configureLogging(path, None)
19+
prometheus_attrs = {'sensor': 'GPFSFilesystem', 'period': 300,
20+
'nsamples': 300, 'rawData': True}
21+
pfilters = {'node':'scale-16', 'gpfs_filesystem_name' : 'afmCacheFS'}
22+
pquery_filters = [ f"{k}={v}" for k, v in pfilters.items()]
23+
24+
25+
@with_setup(my_setup)
26+
def test_case01():
27+
with mock.patch('source.collector.QueryPolicy.md') as md:
28+
md_instance = md.return_value
29+
md_instance.includeDiskData.return_value = False
30+
md_instance.logger = logging.getLogger(__name__)
31+
request = QueryPolicy(**prometheus_attrs)
32+
query = request.get_zimon_query()
33+
query.includeDiskData = md_instance.includeDiskData.return_value
34+
queryString = 'get -j {0} {1} group {2} bucket_size {3} {4}'.format(
35+
'', '-z', prometheus_attrs.get('sensor'),
36+
prometheus_attrs.get('period'),
37+
f"last {prometheus_attrs.get('period')}")
38+
queryString += '\n'
39+
assert "group" in query.__str__()
40+
assert "last" in query.__str__()
41+
assert "from" not in query.__str__()
42+
assert queryString == query.__str__()
43+
44+
45+
@with_setup(my_setup)
46+
def test_case02():
47+
prometheus_attrs.update({'nsamples': 1, 'rawData': False})
48+
with mock.patch('source.collector.QueryPolicy.md') as md:
49+
md_instance = md.return_value
50+
md_instance.includeDiskData.return_value = False
51+
md_instance.logger = logging.getLogger(__name__)
52+
request = QueryPolicy(**prometheus_attrs)
53+
query = request.get_zimon_query()
54+
query.includeDiskData = md_instance.includeDiskData.return_value
55+
queryString = 'get -j {0} {1} group {2} bucket_size {3} {4}'.format(
56+
'', '', prometheus_attrs.get('sensor'),
57+
prometheus_attrs.get('period'),
58+
f"last {prometheus_attrs.get('nsamples')}")
59+
queryString += '\n'
60+
assert "group" in query.__str__()
61+
assert "last" in query.__str__()
62+
assert "from" not in query.__str__()
63+
64+
65+
@with_setup(my_setup)
66+
def test_case03():
67+
prometheus_attrs.update({'filters' : pfilters})
68+
with mock.patch('source.collector.QueryPolicy.md') as md:
69+
md_instance = md.return_value
70+
md_instance.includeDiskData.return_value = False
71+
md_instance.logger = logging.getLogger(__name__)
72+
request = QueryPolicy(**prometheus_attrs)
73+
query = request.get_zimon_query()
74+
query.includeDiskData = md_instance.includeDiskData.return_value
75+
queryString = 'get -j {0} {1} group {2} bucket_size {3} {4}'.format(
76+
'', '-z', prometheus_attrs.get('sensor'),
77+
prometheus_attrs.get('period'),
78+
f"last {prometheus_attrs.get('period')}")
79+
queryString += ' from ' + ",".join(pquery_filters)
80+
queryString += '\n'
81+
assert "group" in query.__str__()
82+
assert "last" in query.__str__()
83+
assert "from" in query.__str__()
84+
assert queryString == query.__str__()
85+
86+
87+
@with_setup(my_setup)
88+
def test_case04():
89+
prometheus_attrs.update({'filters' : pfilters})
90+
prometheus_attrs.update({'nsamples': 1, 'rawData': False})
91+
with mock.patch('source.collector.QueryPolicy.md') as md:
92+
md_instance = md.return_value
93+
md_instance.includeDiskData.return_value = False
94+
md_instance.logger = logging.getLogger(__name__)
95+
request = QueryPolicy(**prometheus_attrs)
96+
query = request.get_zimon_query()
97+
query.includeDiskData = md_instance.includeDiskData.return_value
98+
queryString = 'get -j {0} {1} group {2} bucket_size {3} {4}'.format(
99+
'', '', prometheus_attrs.get('sensor'),
100+
prometheus_attrs.get('period'),
101+
f"last {prometheus_attrs.get('nsamples')}")
102+
queryString += ' from ' + ",".join(pquery_filters)
103+
queryString += '\n'
104+
assert "group" in query.__str__()
105+
assert "last" in query.__str__()
106+
assert "from" in query.__str__()
107+
assert queryString == query.__str__()
108+
109+
110+
@with_setup(my_setup)
111+
@mock.patch('source.collector.QueryPolicy.md')
112+
@mock.patch('source.collector.SensorTimeSeries.md')
113+
@mock.patch('source.collector.SensorCollector.md')
114+
def test_case05(col_md, sts_md, md):
115+
sensor = prometheus_attrs.get('sensor')
116+
period = prometheus_attrs.get('period')
117+
logger = logging.getLogger(__name__)
118+
prometheus_attrs.update({'filters' : pfilters})
119+
prometheus_attrs.update({'nsamples': 1, 'rawData': False})
120+
121+
md_instance = md.return_value
122+
md_instance.includeDiskData.return_value = False
123+
md_instance.logger.return_value = logger
124+
md_instance.metaData.return_value = topo
125+
126+
md_instance1 = sts_md.return_value
127+
md_instance1.includeDiskData.return_value = False
128+
md_instance1.logger.return_value = logger
129+
md_instance1.metaData.return_value = topo
130+
131+
md_instance2 = col_md.return_value
132+
md_instance2.includeDiskData.return_value = False
133+
md_instance2.logger.return_value = logger
134+
md_instance2.metaData.return_value = topo
135+
136+
request = QueryPolicy(**prometheus_attrs)
137+
collector = SensorCollector(sensor, period, logger, request)
138+
assert collector.sensor == sensor
139+
assert collector.period == period
140+
assert collector.request == request
141+
assert collector.labels == topo.getSensorLabels(sensor)
142+

0 commit comments

Comments
 (0)