74 |
74 |
http_proc = _FakeRequestProcessor(self._GetVersionResponse)
|
75 |
75 |
proc = rpc._RpcProcessor(resolver, 24094)
|
76 |
76 |
result = proc(["localhost"], "version", {"localhost": ""}, 60,
|
77 |
|
_req_process_fn=http_proc)
|
|
77 |
NotImplemented, _req_process_fn=http_proc)
|
78 |
78 |
self.assertEqual(result.keys(), ["localhost"])
|
79 |
79 |
lhresp = result["localhost"]
|
80 |
80 |
self.assertFalse(lhresp.offline)
|
... | ... | |
100 |
100 |
proc = rpc._RpcProcessor(resolver, 19176)
|
101 |
101 |
host = "node31856"
|
102 |
102 |
body = {host: ""}
|
103 |
|
result = proc([host], "version", body, 12356, _req_process_fn=http_proc)
|
|
103 |
result = proc([host], "version", body, 12356, NotImplemented,
|
|
104 |
_req_process_fn=http_proc)
|
104 |
105 |
self.assertEqual(result.keys(), [host])
|
105 |
106 |
lhresp = result[host]
|
106 |
107 |
self.assertFalse(lhresp.offline)
|
... | ... | |
117 |
118 |
proc = rpc._RpcProcessor(resolver, 30668)
|
118 |
119 |
host = "n17296"
|
119 |
120 |
body = {host: ""}
|
120 |
|
result = proc([host], "version", body, 60, _req_process_fn=http_proc)
|
|
121 |
result = proc([host], "version", body, 60, NotImplemented,
|
|
122 |
_req_process_fn=http_proc)
|
121 |
123 |
self.assertEqual(result.keys(), [host])
|
122 |
124 |
lhresp = result[host]
|
123 |
125 |
self.assertTrue(lhresp.offline)
|
... | ... | |
148 |
150 |
resolver = rpc._StaticResolver(nodes)
|
149 |
151 |
http_proc = _FakeRequestProcessor(self._GetMultiVersionResponse)
|
150 |
152 |
proc = rpc._RpcProcessor(resolver, 23245)
|
151 |
|
result = proc(nodes, "version", body, 60, _req_process_fn=http_proc,)
|
|
153 |
result = proc(nodes, "version", body, 60, NotImplemented,
|
|
154 |
_req_process_fn=http_proc)
|
152 |
155 |
self.assertEqual(sorted(result.keys()), sorted(nodes))
|
153 |
156 |
|
154 |
157 |
for name in nodes:
|
... | ... | |
177 |
180 |
errinfo))
|
178 |
181 |
host = "aef9ur4i.example.com"
|
179 |
182 |
body = {host: ""}
|
180 |
|
result = proc(body.keys(), "version", body, 60,
|
|
183 |
result = proc(body.keys(), "version", body, 60, NotImplemented,
|
181 |
184 |
_req_process_fn=http_proc)
|
182 |
185 |
self.assertEqual(result.keys(), [host])
|
183 |
186 |
lhresp = result[host]
|
... | ... | |
227 |
230 |
http_proc = \
|
228 |
231 |
_FakeRequestProcessor(compat.partial(self._GetHttpErrorResponse,
|
229 |
232 |
httperrnodes, failnodes))
|
230 |
|
result = proc(nodes, "vg_list", body, rpc._TMO_URGENT,
|
|
233 |
result = proc(nodes, "vg_list", body, rpc._TMO_URGENT, NotImplemented,
|
231 |
234 |
_req_process_fn=http_proc)
|
232 |
235 |
self.assertEqual(sorted(result.keys()), sorted(nodes))
|
233 |
236 |
|
... | ... | |
272 |
275 |
http_proc = _FakeRequestProcessor(fn)
|
273 |
276 |
host = "oqo7lanhly.example.com"
|
274 |
277 |
body = {host: ""}
|
275 |
|
result = proc([host], "version", body, 60,
|
|
278 |
result = proc([host], "version", body, 60, NotImplemented,
|
276 |
279 |
_req_process_fn=http_proc)
|
277 |
280 |
self.assertEqual(result.keys(), [host])
|
278 |
281 |
lhresp = result[host]
|
... | ... | |
304 |
307 |
proc = rpc._RpcProcessor(resolver, 18700)
|
305 |
308 |
host = "node19759"
|
306 |
309 |
body = {host: serializer.DumpJson(test_data)}
|
307 |
|
result = proc([host], "upload_file", body, 30, _req_process_fn=http_proc)
|
|
310 |
result = proc([host], "upload_file", body, 30, NotImplemented,
|
|
311 |
_req_process_fn=http_proc)
|
308 |
312 |
self.assertEqual(result.keys(), [host])
|
309 |
313 |
lhresp = result[host]
|
310 |
314 |
self.assertFalse(lhresp.offline)
|
... | ... | |
322 |
326 |
node_list = ["node%d.example.com" % n for n in range(0, 255, 13)]
|
323 |
327 |
node_addr_list = [" ".join(t) for t in zip(node_list, addr_list)]
|
324 |
328 |
ssc = GetFakeSimpleStoreClass(lambda _: node_addr_list)
|
325 |
|
result = rpc._SsconfResolver(node_list, ssc=ssc, nslookup_fn=NotImplemented)
|
|
329 |
result = rpc._SsconfResolver(node_list, NotImplemented,
|
|
330 |
ssc=ssc, nslookup_fn=NotImplemented)
|
326 |
331 |
self.assertEqual(result, zip(node_list, addr_list))
|
327 |
332 |
|
328 |
333 |
def testNsLookup(self):
|
... | ... | |
331 |
336 |
ssc = GetFakeSimpleStoreClass(lambda _: [])
|
332 |
337 |
node_addr_map = dict(zip(node_list, addr_list))
|
333 |
338 |
nslookup_fn = lambda name, family=None: node_addr_map.get(name)
|
334 |
|
result = rpc._SsconfResolver(node_list, ssc=ssc, nslookup_fn=nslookup_fn)
|
|
339 |
result = rpc._SsconfResolver(node_list, NotImplemented,
|
|
340 |
ssc=ssc, nslookup_fn=nslookup_fn)
|
335 |
341 |
self.assertEqual(result, zip(node_list, addr_list))
|
336 |
342 |
|
337 |
343 |
def testBothLookups(self):
|
... | ... | |
342 |
348 |
ssc = GetFakeSimpleStoreClass(lambda _: node_addr_list)
|
343 |
349 |
node_addr_map = dict(zip(node_list[:n], addr_list[:n]))
|
344 |
350 |
nslookup_fn = lambda name, family=None: node_addr_map.get(name)
|
345 |
|
result = rpc._SsconfResolver(node_list, ssc=ssc, nslookup_fn=nslookup_fn)
|
|
351 |
result = rpc._SsconfResolver(node_list, NotImplemented,
|
|
352 |
ssc=ssc, nslookup_fn=nslookup_fn)
|
346 |
353 |
self.assertEqual(result, zip(node_list, addr_list))
|
347 |
354 |
|
348 |
355 |
def testAddressLookupIPv6(self):
|
... | ... | |
350 |
357 |
node_list = ["node%d.example.com" % n for n in range(0, 255, 11)]
|
351 |
358 |
node_addr_list = [" ".join(t) for t in zip(node_list, addr_list)]
|
352 |
359 |
ssc = GetFakeSimpleStoreClass(lambda _: node_addr_list)
|
353 |
|
result = rpc._SsconfResolver(node_list, ssc=ssc, nslookup_fn=NotImplemented)
|
|
360 |
result = rpc._SsconfResolver(node_list, NotImplemented,
|
|
361 |
ssc=ssc, nslookup_fn=NotImplemented)
|
354 |
362 |
self.assertEqual(result, zip(node_list, addr_list))
|
355 |
363 |
|
356 |
364 |
|
... | ... | |
359 |
367 |
addresses = ["192.0.2.%d" % n for n in range(0, 123, 7)]
|
360 |
368 |
nodes = ["node%s.example.com" % n for n in range(0, 123, 7)]
|
361 |
369 |
res = rpc._StaticResolver(addresses)
|
362 |
|
self.assertEqual(res(nodes), zip(nodes, addresses))
|
|
370 |
self.assertEqual(res(nodes, NotImplemented), zip(nodes, addresses))
|
363 |
371 |
|
364 |
372 |
def testWrongLength(self):
|
365 |
373 |
res = rpc._StaticResolver([])
|
366 |
|
self.assertRaises(AssertionError, res, ["abc"])
|
|
374 |
self.assertRaises(AssertionError, res, ["abc"], NotImplemented)
|
367 |
375 |
|
368 |
376 |
|
369 |
377 |
class TestNodeConfigResolver(unittest.TestCase):
|
... | ... | |
380 |
388 |
def testSingleOnline(self):
|
381 |
389 |
self.assertEqual(rpc._NodeConfigResolver(self._GetSingleOnlineNode,
|
382 |
390 |
NotImplemented,
|
383 |
|
["node90.example.com"]),
|
|
391 |
["node90.example.com"], None),
|
384 |
392 |
[("node90.example.com", "192.0.2.90")])
|
385 |
393 |
|
386 |
394 |
def testSingleOffline(self):
|
387 |
395 |
self.assertEqual(rpc._NodeConfigResolver(self._GetSingleOfflineNode,
|
388 |
396 |
NotImplemented,
|
389 |
|
["node100.example.com"]),
|
|
397 |
["node100.example.com"], None),
|
390 |
398 |
[("node100.example.com", rpc._OFFLINE)])
|
391 |
399 |
|
392 |
400 |
def testUnknownSingleNode(self):
|
393 |
401 |
self.assertEqual(rpc._NodeConfigResolver(lambda _: None, NotImplemented,
|
394 |
|
["node110.example.com"]),
|
|
402 |
["node110.example.com"], None),
|
395 |
403 |
[("node110.example.com", "node110.example.com")])
|
396 |
404 |
|
397 |
405 |
def testMultiEmpty(self):
|
398 |
406 |
self.assertEqual(rpc._NodeConfigResolver(NotImplemented,
|
399 |
407 |
lambda: {},
|
400 |
|
[]),
|
|
408 |
[], None),
|
401 |
409 |
[])
|
402 |
410 |
|
403 |
411 |
def testMultiSomeOffline(self):
|
... | ... | |
410 |
418 |
# Resolve no names
|
411 |
419 |
self.assertEqual(rpc._NodeConfigResolver(NotImplemented,
|
412 |
420 |
lambda: nodes,
|
413 |
|
[]),
|
|
421 |
[], None),
|
414 |
422 |
[])
|
415 |
423 |
|
416 |
424 |
# Offline, online and unknown hosts
|
... | ... | |
419 |
427 |
["node3.example.com",
|
420 |
428 |
"node92.example.com",
|
421 |
429 |
"node54.example.com",
|
422 |
|
"unknown.example.com",]), [
|
|
430 |
"unknown.example.com",],
|
|
431 |
None), [
|
423 |
432 |
("node3.example.com", rpc._OFFLINE),
|
424 |
433 |
("node92.example.com", "192.0.2.92"),
|
425 |
434 |
("node54.example.com", rpc._OFFLINE),
|