Revision 1c3231aa test/py/ganeti.rpc_unittest.py
b/test/py/ganeti.rpc_unittest.py | ||
---|---|---|
341 | 341 |
ssc = GetFakeSimpleStoreClass(lambda _: node_addr_list) |
342 | 342 |
result = rpc._SsconfResolver(True, node_list, NotImplemented, |
343 | 343 |
ssc=ssc, nslookup_fn=NotImplemented) |
344 |
self.assertEqual(result, zip(node_list, addr_list)) |
|
344 |
self.assertEqual(result, zip(node_list, addr_list, node_list))
|
|
345 | 345 |
|
346 | 346 |
def testNsLookup(self): |
347 | 347 |
addr_list = ["192.0.2.%d" % n for n in range(0, 255, 13)] |
... | ... | |
351 | 351 |
nslookup_fn = lambda name, family=None: node_addr_map.get(name) |
352 | 352 |
result = rpc._SsconfResolver(True, node_list, NotImplemented, |
353 | 353 |
ssc=ssc, nslookup_fn=nslookup_fn) |
354 |
self.assertEqual(result, zip(node_list, addr_list)) |
|
354 |
self.assertEqual(result, zip(node_list, addr_list, node_list))
|
|
355 | 355 |
|
356 | 356 |
def testDisabledSsconfIp(self): |
357 | 357 |
addr_list = ["192.0.2.%d" % n for n in range(0, 255, 13)] |
... | ... | |
361 | 361 |
nslookup_fn = lambda name, family=None: node_addr_map.get(name) |
362 | 362 |
result = rpc._SsconfResolver(False, node_list, NotImplemented, |
363 | 363 |
ssc=ssc, nslookup_fn=nslookup_fn) |
364 |
self.assertEqual(result, zip(node_list, addr_list)) |
|
364 |
self.assertEqual(result, zip(node_list, addr_list, node_list))
|
|
365 | 365 |
|
366 | 366 |
def testBothLookups(self): |
367 | 367 |
addr_list = ["192.0.2.%d" % n for n in range(0, 255, 13)] |
... | ... | |
373 | 373 |
nslookup_fn = lambda name, family=None: node_addr_map.get(name) |
374 | 374 |
result = rpc._SsconfResolver(True, node_list, NotImplemented, |
375 | 375 |
ssc=ssc, nslookup_fn=nslookup_fn) |
376 |
self.assertEqual(result, zip(node_list, addr_list)) |
|
376 |
self.assertEqual(result, zip(node_list, addr_list, node_list))
|
|
377 | 377 |
|
378 | 378 |
def testAddressLookupIPv6(self): |
379 | 379 |
addr_list = ["2001:db8::%d" % n for n in range(0, 255, 11)] |
... | ... | |
382 | 382 |
ssc = GetFakeSimpleStoreClass(lambda _: node_addr_list) |
383 | 383 |
result = rpc._SsconfResolver(True, node_list, NotImplemented, |
384 | 384 |
ssc=ssc, nslookup_fn=NotImplemented) |
385 |
self.assertEqual(result, zip(node_list, addr_list)) |
|
385 |
self.assertEqual(result, zip(node_list, addr_list, node_list))
|
|
386 | 386 |
|
387 | 387 |
|
388 | 388 |
class TestStaticResolver(unittest.TestCase): |
... | ... | |
390 | 390 |
addresses = ["192.0.2.%d" % n for n in range(0, 123, 7)] |
391 | 391 |
nodes = ["node%s.example.com" % n for n in range(0, 123, 7)] |
392 | 392 |
res = rpc._StaticResolver(addresses) |
393 |
self.assertEqual(res(nodes, NotImplemented), zip(nodes, addresses)) |
|
393 |
self.assertEqual(res(nodes, NotImplemented), zip(nodes, addresses, nodes))
|
|
394 | 394 |
|
395 | 395 |
def testWrongLength(self): |
396 | 396 |
res = rpc._StaticResolver([]) |
... | ... | |
399 | 399 |
|
400 | 400 |
class TestNodeConfigResolver(unittest.TestCase): |
401 | 401 |
@staticmethod |
402 |
def _GetSingleOnlineNode(name): |
|
403 |
assert name == "node90.example.com" |
|
404 |
return objects.Node(name=name, offline=False, primary_ip="192.0.2.90") |
|
402 |
def _GetSingleOnlineNode(uuid): |
|
403 |
assert uuid == "node90-uuid" |
|
404 |
return objects.Node(name="node90.example.com", |
|
405 |
uuid=uuid, |
|
406 |
offline=False, |
|
407 |
primary_ip="192.0.2.90") |
|
405 | 408 |
|
406 | 409 |
@staticmethod |
407 |
def _GetSingleOfflineNode(name): |
|
408 |
assert name == "node100.example.com" |
|
409 |
return objects.Node(name=name, offline=True, primary_ip="192.0.2.100") |
|
410 |
def _GetSingleOfflineNode(uuid): |
|
411 |
assert uuid == "node100-uuid" |
|
412 |
return objects.Node(name="node100.example.com", |
|
413 |
uuid=uuid, |
|
414 |
offline=True, |
|
415 |
primary_ip="192.0.2.100") |
|
410 | 416 |
|
411 | 417 |
def testSingleOnline(self): |
412 | 418 |
self.assertEqual(rpc._NodeConfigResolver(self._GetSingleOnlineNode, |
413 | 419 |
NotImplemented, |
414 |
["node90.example.com"], None),
|
|
415 |
[("node90.example.com", "192.0.2.90")]) |
|
420 |
["node90-uuid"], None),
|
|
421 |
[("node90.example.com", "192.0.2.90", "node90-uuid")])
|
|
416 | 422 |
|
417 | 423 |
def testSingleOffline(self): |
418 | 424 |
self.assertEqual(rpc._NodeConfigResolver(self._GetSingleOfflineNode, |
419 | 425 |
NotImplemented, |
420 |
["node100.example.com"], None),
|
|
421 |
[("node100.example.com", rpc._OFFLINE)]) |
|
426 |
["node100-uuid"], None),
|
|
427 |
[("node100.example.com", rpc._OFFLINE, "node100-uuid")])
|
|
422 | 428 |
|
423 | 429 |
def testSingleOfflineWithAcceptOffline(self): |
424 | 430 |
fn = self._GetSingleOfflineNode |
425 |
assert fn("node100.example.com").offline
|
|
431 |
assert fn("node100-uuid").offline
|
|
426 | 432 |
self.assertEqual(rpc._NodeConfigResolver(fn, NotImplemented, |
427 |
["node100.example.com"],
|
|
433 |
["node100-uuid"],
|
|
428 | 434 |
rpc_defs.ACCEPT_OFFLINE_NODE), |
429 |
[("node100.example.com", "192.0.2.100")]) |
|
435 |
[("node100.example.com", "192.0.2.100", "node100-uuid")])
|
|
430 | 436 |
for i in [False, True, "", "Hello", 0, 1]: |
431 | 437 |
self.assertRaises(AssertionError, rpc._NodeConfigResolver, |
432 | 438 |
fn, NotImplemented, ["node100.example.com"], i) |
... | ... | |
434 | 440 |
def testUnknownSingleNode(self): |
435 | 441 |
self.assertEqual(rpc._NodeConfigResolver(lambda _: None, NotImplemented, |
436 | 442 |
["node110.example.com"], None), |
437 |
[("node110.example.com", "node110.example.com")]) |
|
443 |
[("node110.example.com", "node110.example.com", |
|
444 |
"node110.example.com")]) |
|
438 | 445 |
|
439 | 446 |
def testMultiEmpty(self): |
440 | 447 |
self.assertEqual(rpc._NodeConfigResolver(NotImplemented, |
... | ... | |
443 | 450 |
[]) |
444 | 451 |
|
445 | 452 |
def testMultiSomeOffline(self): |
446 |
nodes = dict(("node%s.example.com" % i,
|
|
453 |
nodes = dict(("node%s-uuid" % i,
|
|
447 | 454 |
objects.Node(name="node%s.example.com" % i, |
448 | 455 |
offline=((i % 3) == 0), |
449 |
primary_ip="192.0.2.%s" % i)) |
|
456 |
primary_ip="192.0.2.%s" % i, |
|
457 |
uuid="node%s-uuid" % i)) |
|
450 | 458 |
for i in range(1, 255)) |
451 | 459 |
|
452 | 460 |
# Resolve no names |
... | ... | |
458 | 466 |
# Offline, online and unknown hosts |
459 | 467 |
self.assertEqual(rpc._NodeConfigResolver(NotImplemented, |
460 | 468 |
lambda: nodes, |
461 |
["node3.example.com",
|
|
462 |
"node92.example.com",
|
|
463 |
"node54.example.com",
|
|
469 |
["node3-uuid",
|
|
470 |
"node92-uuid",
|
|
471 |
"node54-uuid",
|
|
464 | 472 |
"unknown.example.com",], |
465 | 473 |
None), [ |
466 |
("node3.example.com", rpc._OFFLINE), |
|
467 |
("node92.example.com", "192.0.2.92"), |
|
468 |
("node54.example.com", rpc._OFFLINE), |
|
469 |
("unknown.example.com", "unknown.example.com"), |
|
474 |
("node3.example.com", rpc._OFFLINE, "node3-uuid"),
|
|
475 |
("node92.example.com", "192.0.2.92", "node92-uuid"),
|
|
476 |
("node54.example.com", rpc._OFFLINE, "node54-uuid"),
|
|
477 |
("unknown.example.com", "unknown.example.com", "unknown.example.com"),
|
|
470 | 478 |
]) |
471 | 479 |
|
472 | 480 |
|
... | ... | |
672 | 680 |
def _Resolver(expected, hosts, options): |
673 | 681 |
self.assertEqual(hosts, nodes) |
674 | 682 |
self.assertEqual(options, expected) |
675 |
return zip(hosts, nodes) |
|
683 |
return zip(hosts, nodes, hosts)
|
|
676 | 684 |
|
677 | 685 |
def _DynamicResolverOptions((arg0, )): |
678 | 686 |
return sum(arg0) |
Also available in: Unified diff