Coverage for tests/routers/test_monitor_router.py: 100%

149 statements  

« prev     ^ index     » next       coverage.py v7.9.1, created at 2025-06-25 05:47 +0000

1import json 

2import pytest 

3from zenossapi.apiclient import ZenossAPIClientError 

4from zenossapi.routers.monitor import MonitorRouter, ZenossHub, ZenossCollector 

5import monitor_resp 

6 

7 

8pytest_plugins = "pytest-responses" 

9url = 'https://zenoss/zport/dmd' 

10headers = dict( 

11 ContentType='application/json' 

12) 

13resp_body_template = dict( 

14 result=dict( 

15 success=True, 

16 data=[], 

17 ) 

18) 

19 

20 

21def request_callback(request): 

22 rdata = json.loads(request.body) 

23 resp_headers = dict(ContentType='application/json') 

24 

25 def getTree(rdata): 

26 return monitor_resp.tree 

27 

28 def getInfo(rdata): 

29 if rdata['id'] == "newcollector": 

30 return monitor_resp.newcollector 

31 return monitor_resp.testcollector 

32 

33 def getCollector(rdata): 

34 return monitor_resp.params 

35 

36 def addCollector(rdata): 

37 return monitor_resp.add 

38 

39 method = locals()[rdata['method']] 

40 resp_body = method(rdata['data'][0]) 

41 

42 return (200, resp_headers, json.dumps(resp_body)) 

43 

44 

45def responses_callback(responses): 

46 responses.add_callback( 

47 responses.POST, 

48 '{0}/monitor_router'.format(url), 

49 callback=request_callback, 

50 content_type='application/json', 

51 ) 

52 

53 

54class TestMonitorRouter(object): 

55 

56 def test_monitor_router_init(self): 

57 mr = MonitorRouter(url, headers, False) 

58 assert mr.id is None 

59 

60 def test_monitor_router_tree(self, responses): 

61 responses_callback(responses) 

62 

63 mr = MonitorRouter(url, headers, False) 

64 resp = mr.tree() 

65 assert len(resp) == 2 

66 assert len(resp[0]['children']) == 1 

67 assert resp[0]['name'] == "localhost" 

68 assert resp[1]['name'] == "testhub" 

69 

70 def test_monitor_router_list_hubs(self, responses): 

71 responses_callback(responses) 

72 

73 mr = MonitorRouter(url, headers, False) 

74 resp = mr.list_hubs() 

75 assert len(resp) == 2 

76 assert resp[0]['name'] == "localhost" 

77 assert resp[1]['name'] == "testhub" 

78 assert resp[0]['uid'] == "Monitors/Hub/localhost" 

79 assert resp[1]['uid'] == "Monitors/Hub/testhub" 

80 

81 def test_monitor_router_list_collectors(self, responses): 

82 responses_callback(responses) 

83 

84 mr = MonitorRouter(url, headers, False) 

85 resp = mr.list_collectors() 

86 assert len(resp) == 2 

87 assert resp[0]['name'] == "localhost" 

88 assert resp[0]['devcount'] == 0 

89 assert resp[0]['hub'] == "localhost" 

90 assert resp[0]['uid'] == "Monitors/Performance/localhost" 

91 assert resp[1]['name'] == "testcollector" 

92 assert resp[1]['devcount'] == 179 

93 assert resp[1]['hub'] == "testhub" 

94 assert resp[1]['uid'] == "Monitors/Performance/testcollector" 

95 

96 def test_monitor_router_get_hubs(self, responses): 

97 responses_callback(responses) 

98 

99 mr = MonitorRouter(url, headers, False) 

100 resp = mr.get_hubs() 

101 assert len(resp) == 2 

102 assert isinstance(resp[0], ZenossHub) 

103 assert isinstance(resp[1], ZenossHub) 

104 

105 def test_monitor_router_get_hub(self, responses): 

106 responses_callback(responses) 

107 

108 mr = MonitorRouter(url, headers, False) 

109 resp = mr.get_hub('testhub') 

110 assert isinstance(resp, ZenossHub) 

111 assert resp.name == "testhub" 

112 assert resp.devcount == 0 

113 assert len(resp.collectors) == 1 

114 

115 def test_monitor_router_get_bad_hub(self, responses): 

116 responses_callback(responses) 

117 

118 mr = MonitorRouter(url, headers, False) 

119 resp = mr.get_hub('badhub') 

120 assert resp is None 

121 

122 def test_monitor_router_zenosshub_get_collectors(self, responses): 

123 responses_callback(responses) 

124 

125 mr = MonitorRouter(url, headers, False) 

126 zh = mr.get_hub('testhub') 

127 resp = zh.get_collectors() 

128 assert len(resp) == 1 

129 assert isinstance(resp[0], ZenossCollector) 

130 assert resp[0].name == "testcollector" 

131 

132 def test_monitor_router_zenosshub_get_collector(self, responses): 

133 responses_callback(responses) 

134 

135 mr = MonitorRouter(url, headers, False) 

136 zh = mr.get_hub('testhub') 

137 resp = zh.get_collector('testcollector') 

138 assert isinstance(resp, ZenossCollector) 

139 assert resp.name == "testcollector" 

140 assert resp.devcount == 179 

141 assert resp.text == "testcollector" 

142 assert resp.path == "/zport/dmd/Monitors/Performance/testcollector" 

143 assert resp.id == ".zport.dmd.Monitors.Performance.testcollector" 

144 assert resp.configCycleInterval == 360 

145 assert resp.pingCycleInterval == 60 

146 assert resp.discoveryNetworks == "" 

147 assert resp.description == "" 

148 assert resp.modelerCycleInterval == 720 

149 assert resp.processCycleInterval == 180 

150 assert resp.meta_type == "PerformanceConf" 

151 assert resp.wmiqueryTimeout == 100 

152 assert resp.statusCycleInterval == 60 

153 assert resp.eventlogCycleInterval == 60 

154 assert resp.wmibatchSize == 10 

155 assert resp.pingTimeOut == 1.5 

156 assert resp.winCycleInterval == 60 

157 assert resp.pingTries == 2 

158 assert resp.inspector_type == "PerformanceConf" 

159 assert resp.zenProcessParallelJobs == 10 

160 

161 def test_monitor_router_zenosshub_get_bad_collector(self, responses): 

162 responses_callback(responses) 

163 

164 mr = MonitorRouter(url, headers, False) 

165 zh = mr.get_hub('testhub') 

166 resp = zh.get_collector('badcollector') 

167 assert resp is None 

168 

169 def test_monitor_router_zenosshub_add_collector(self, responses): 

170 responses_callback(responses) 

171 

172 mr = MonitorRouter(url, headers, False) 

173 zh = mr.get_hub('testhub') 

174 resp = zh.add_collector('newcollector', source='testcollector', pool='TEST') 

175 assert isinstance(resp, ZenossCollector) 

176 assert resp.name == "newcollector" 

177 assert resp.devcount == 0 

178 assert resp.text == "newcollector" 

179 assert resp.path == "/zport/dmd/Monitors/Performance/newcollector" 

180 assert resp.id == ".zport.dmd.Monitors.Performance.newcollector" 

181 assert resp.configCycleInterval == 360 

182 assert resp.pingCycleInterval == 60 

183 assert resp.discoveryNetworks == "" 

184 assert resp.description == "" 

185 assert resp.modelerCycleInterval == 720 

186 assert resp.processCycleInterval == 180 

187 assert resp.meta_type == "PerformanceConf" 

188 assert resp.wmiqueryTimeout == 100 

189 assert resp.statusCycleInterval == 60 

190 assert resp.eventlogCycleInterval == 60 

191 assert resp.wmibatchSize == 10 

192 assert resp.pingTimeOut == 1.5 

193 assert resp.winCycleInterval == 60 

194 assert resp.pingTries == 2 

195 assert resp.inspector_type == "PerformanceConf" 

196 assert resp.zenProcessParallelJobs == 10