Skip to content

Commit fb93421

Browse files
fix: call gateway peering function (#75)
#74 fix: update tests for peering Signed-off-by: Ricky Moorhouse <[email protected]>
1 parent 10c97ae commit fb93421

File tree

2 files changed

+50
-22
lines changed

2 files changed

+50
-22
lines changed

datapower_net.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,7 @@ def gather_metrics(self):
211211
self.fetch_data('LogTargetStatus', 'logtarget')
212212
self.object_counts()
213213
self.fetch_document_cache_summary()
214+
self.gateway_peering_status()
214215
if self.v5c:
215216
self.fetch_data('WSMAgentStatus', 'wsm')
216217
# Needs statistics enabled:
@@ -220,7 +221,6 @@ def gather_metrics(self):
220221
for api in self.api_tests:
221222
self.invoke_api(api)
222223

223-
224224
def fetch_data(self, provider, label, suffix=''):
225225
""" fetch data from a status provider """
226226
try:

test_trawler.py

Lines changed: 49 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,37 @@
3535
)
3636
)
3737

38+
peering_mock = """
39+
{
40+
"GatewayPeeringStatus": [
41+
{
42+
"Address": "127.0.0.1",
43+
"Name": "rate-limit",
44+
"PendingUpdates": 0,
45+
"ReplicationOffset": 170111082,
46+
"LinkStatus": "ok",
47+
"Primary": "yes"
48+
}
49+
]
50+
}
51+
"""
52+
log_target_mock = """
53+
{
54+
"_links" : {
55+
"self" : {"href" : "/mgmt/status/default/LogTargetStatus"},
56+
"doc" : {"href" : "/mgmt/docs/status/LogTargetStatus"}},
57+
"LogTargetStatus" : {
58+
"LogTarget" : {"value": "default-log",
59+
"href" : "/mgmt/config/default/LogTarget/default-log"},
60+
"Status" : "active",
61+
"EventsProcessed" : 210938,
62+
"EventsDropped" : 0,
63+
"EventsPending" : 2,
64+
"ErrorInfo" : "none",
65+
"RequestedMemory" : 16}}
66+
"""
67+
68+
v6 = '{"APIConnectGatewayService":{"V5CompatibilityMode":"off"}}'
3869

3970

4071
def test_check_nosettings():
@@ -99,16 +130,28 @@ def test_trawler_gauge_additional_labels(mocker, caplog):
99130
# Lookup values from prometheus client
100131
assert prometheus_client.REGISTRY.get_sample_value('labels_add_additional', labels={"pod": "pod_name", "group": "labels"}) == 1
101132

133+
102134
def test_datapower_fishing(mocker):
103135
""" test the pod finding """
104136
mocker.patch('kubernetes.config.load_incluster_config')
105137
mocker.patch('kubernetes.client.CoreV1Api.list_pod_for_all_namespaces',
106138
return_value=kubernetes.client.V1PodList(items=[fake_pod])
107139
)
108140
mocker.patch('datapower_net.DataPowerNet.load_password_from_secret', return_value='password')
109-
new_net = datapower_net.DataPowerNet({}, boaty)
110-
new_net.fish()
111-
assert config.load_incluster_config.called
141+
with requests_mock.mock() as m:
142+
m.get('https://127.0.0.1:5554/mgmt/config/apiconnect/APIConnectGatewayService/default', text=v6)
143+
m.get('https://127.0.0.1:5554/mgmt/config/apiconnect/Statistics', text=statistics_enabled)
144+
145+
m.get('https://127.0.0.1:5554/mgmt/status/apiconnect/GatewayPeeringStatus', text=peering_mock)
146+
m.get('https://127.0.0.1:5554/mgmt/status/apiconnect/AnalyticsEndpointStatus', text="")
147+
m.get('https://127.0.0.1:5554/mgmt/status/apiconnect/TCPSummary', text="")
148+
m.get('https://127.0.0.1:5554/mgmt/status/apiconnect/LogTargetStatus', text=log_target_mock)
149+
m.get('https://127.0.0.1:5554/mgmt/status/apiconnect/ObjectStatus', text="")
150+
m.get('https://127.0.0.1:5554/mgmt/status/apiconnect/APIDocumentCachingSummary', text="")
151+
m.get('https://127.0.0.1:5554/mgmt/status/apiconnect/HTTPTransactions2', text="")
152+
new_net = datapower_net.DataPowerNet({}, boaty)
153+
new_net.fish()
154+
assert config.load_incluster_config.called
112155

113156

114157
def test_datapower_fishing_error(mocker, caplog):
@@ -131,22 +174,7 @@ def test_datapower_instance(mocker, caplog):
131174
assert dp.ip == '127.0.0.1'
132175
assert dp.v5c
133176
# Mock data
134-
mock_data = """
135-
{
136-
"_links" : {
137-
"self" : {"href" : "/mgmt/status/default/LogTargetStatus"},
138-
"doc" : {"href" : "/mgmt/docs/status/LogTargetStatus"}},
139-
"LogTargetStatus" : {
140-
"LogTarget" : {"value": "default-log",
141-
"href" : "/mgmt/config/default/LogTarget/default-log"},
142-
"Status" : "active",
143-
"EventsProcessed" : 210938,
144-
"EventsDropped" : 0,
145-
"EventsPending" : 2,
146-
"ErrorInfo" : "none",
147-
"RequestedMemory" : 16}}
148-
"""
149-
m.get('https://127.0.0.1:5554/mgmt/status/apiconnect/LogTargetStatus', text=mock_data)
177+
m.get('https://127.0.0.1:5554/mgmt/status/apiconnect/LogTargetStatus', text=log_target_mock)
150178
m.get('/mgmt/config/apiconnect/Statistics', text=statistics_enabled)
151179

152180
dp.fetch_data('LogTargetStatus', 'test')
@@ -162,6 +190,7 @@ def test_datapower_instance(mocker, caplog):
162190
'datapower_test_EventsPending',
163191
labels={"pod": "myDp", "namespace": "namespace"}) == 2
164192

193+
165194
def test_datapower_peering(mocker, caplog):
166195
caplog.set_level(logging.INFO)
167196
with requests_mock.mock() as m:
@@ -191,9 +220,8 @@ def test_datapower_peering(mocker, caplog):
191220

192221
m.get('https://127.0.0.1:5554/mgmt/status/apiconnect/GatewayPeeringStatus', text=mock_data)
193222

194-
195223
dp.gateway_peering_status()
196-
assert 'Creating gauge ' in caplog.text
224+
197225
# Lookup values from prometheus client
198226
assert prometheus_client.REGISTRY.get_sample_value(
199227
'datapower_gateway_peering_primary_info',

0 commit comments

Comments
 (0)