Revision f752215c
b/snf-tools/synnefo_tools/burnin.py | ||
---|---|---|
576 | 576 |
self._insist_on_status_transition("BUILD", "ACTIVE", |
577 | 577 |
self.build_fail, self.build_warning) |
578 | 578 |
|
579 |
# def test_003a_get_server_oob_console(self):
|
|
580 |
# """Test getting OOB server console over VNC
|
|
579 |
def test_003a_get_server_oob_console(self): |
|
580 |
"""Test getting OOB server console over VNC |
|
581 | 581 |
|
582 |
# Implementation of RFB protocol follows
|
|
583 |
# http://www.realvnc.com/docs/rfbproto.pdf.
|
|
582 |
Implementation of RFB protocol follows |
|
583 |
http://www.realvnc.com/docs/rfbproto.pdf. |
|
584 | 584 |
|
585 |
# """
|
|
586 |
# console = self.cyclades.get_server_console(self.serverid)
|
|
587 |
# self.assertEquals(console['type'], "vnc")
|
|
588 |
# sock = self._insist_on_tcp_connection(socket.AF_INET,
|
|
589 |
# console["host"], console["port"])
|
|
590 |
|
|
591 |
# # Step 1. ProtocolVersion message (par. 6.1.1)
|
|
592 |
# version = sock.recv(1024)
|
|
593 |
# self.assertEquals(version, 'RFB 003.008\n')
|
|
594 |
# sock.send(version)
|
|
595 |
|
|
596 |
# # Step 2. Security (par 6.1.2): Only VNC Authentication supported
|
|
597 |
# sec = sock.recv(1024)
|
|
598 |
# self.assertEquals(list(sec), ['\x01', '\x02'])
|
|
599 |
|
|
600 |
# # Step 3. Request VNC Authentication (par 6.1.2)
|
|
601 |
# sock.send('\x02')
|
|
602 |
|
|
603 |
# # Step 4. Receive Challenge (par 6.2.2)
|
|
604 |
# challenge = sock.recv(1024)
|
|
605 |
# self.assertEquals(len(challenge), 16)
|
|
606 |
|
|
607 |
# # Step 5. DES-Encrypt challenge, use password as key (par 6.2.2)
|
|
608 |
# response = d3des_generate_response(
|
|
609 |
# (console["password"] + '\0' * 8)[:8], challenge)
|
|
610 |
# sock.send(response)
|
|
611 |
|
|
612 |
# # Step 6. SecurityResult (par 6.1.3)
|
|
613 |
# result = sock.recv(4)
|
|
614 |
# self.assertEquals(list(result), ['\x00', '\x00', '\x00', '\x00'])
|
|
615 |
# sock.close()
|
|
585 |
""" |
|
586 |
console = self.cyclades.get_server_console(self.serverid) |
|
587 |
self.assertEquals(console['type'], "vnc") |
|
588 |
sock = self._insist_on_tcp_connection(socket.AF_INET, |
|
589 |
console["host"], console["port"]) |
|
590 |
|
|
591 |
# Step 1. ProtocolVersion message (par. 6.1.1) |
|
592 |
version = sock.recv(1024) |
|
593 |
self.assertEquals(version, 'RFB 003.008\n') |
|
594 |
sock.send(version) |
|
595 |
|
|
596 |
# Step 2. Security (par 6.1.2): Only VNC Authentication supported |
|
597 |
sec = sock.recv(1024) |
|
598 |
self.assertEquals(list(sec), ['\x01', '\x02']) |
|
599 |
|
|
600 |
# Step 3. Request VNC Authentication (par 6.1.2) |
|
601 |
sock.send('\x02') |
|
602 |
|
|
603 |
# Step 4. Receive Challenge (par 6.2.2) |
|
604 |
challenge = sock.recv(1024) |
|
605 |
self.assertEquals(len(challenge), 16) |
|
606 |
|
|
607 |
# Step 5. DES-Encrypt challenge, use password as key (par 6.2.2) |
|
608 |
response = d3des_generate_response( |
|
609 |
(console["password"] + '\0' * 8)[:8], challenge) |
|
610 |
sock.send(response) |
|
611 |
|
|
612 |
# Step 6. SecurityResult (par 6.1.3) |
|
613 |
result = sock.recv(4) |
|
614 |
self.assertEquals(list(result), ['\x00', '\x00', '\x00', '\x00']) |
|
615 |
sock.close() |
|
616 | 616 |
|
617 | 617 |
def test_004_server_has_ipv4(self): |
618 | 618 |
"""Test active server has a valid IPv4 address""" |
... | ... | |
1438 | 1438 |
|
1439 | 1439 |
log.info(yellow + '* Starting testcase: %s' % msg + normal) |
1440 | 1440 |
|
1441 |
runner = unittest.TextTestRunner(f, verbosity=2, failfast = True) |
|
1441 |
runner = unittest.TextTestRunner(f, verbosity=2, failfast = True, resultclass=BurninTestResult)
|
|
1442 | 1442 |
suite = unittest.TestLoader().loadTestsFromTestCase(msg) |
1443 | 1443 |
result = runner.run(suite) |
1444 | 1444 |
|
... | ... | |
1587 | 1587 |
while True: |
1588 | 1588 |
servers = c.list_servers() |
1589 | 1589 |
stale = [s for s in servers if s["name"].startswith(SNF_TEST_PREFIX)] |
1590 |
for s in stale: |
|
1591 |
c.delete_server(s["id"]) |
|
1592 | 1590 |
|
1593 | 1591 |
if len(stale)==0: |
1594 | 1592 |
print >> sys.stderr, green + " ...done" + normal |
... | ... | |
1604 | 1602 |
print >> sys.stderr, "Use --delete-stale to delete them." |
1605 | 1603 |
|
1606 | 1604 |
|
1607 |
def cleanup_networks(timeout, query_interval, delete_stale=False): |
|
1605 |
def cleanup_networks(action_timeout, query_interval, delete_stale=False):
|
|
1608 | 1606 |
|
1609 | 1607 |
c = CycladesClient(API, TOKEN) |
1610 | 1608 |
|
... | ... | |
1633 | 1631 |
if delete_stale: |
1634 | 1632 |
print >> sys.stderr, "Deleting %d stale networks:" % len(stale) |
1635 | 1633 |
|
1636 |
fail_tmout = time.time() + timeout |
|
1634 |
fail_tmout = time.time() + action_timeout
|
|
1637 | 1635 |
|
1638 | 1636 |
for n in stale: |
1639 | 1637 |
c.delete_network(n["id"]) |
... | ... | |
1837 | 1835 |
|
1838 | 1836 |
# Cleanup stale servers from previous runs |
1839 | 1837 |
if opts.show_stale: |
1840 |
cleanup_servers(delete_stale=opts.delete_stale) |
|
1838 |
cleanup_servers(opts.action_timeout, opts.query_interval, delete_stale=opts.delete_stale)
|
|
1841 | 1839 |
cleanup_networks(opts.action_timeout, opts.query_interval, delete_stale=opts.delete_stale) |
1842 | 1840 |
|
1843 | 1841 |
return 0 |
... | ... | |
1935 | 1933 |
image_folder = os.path.join(test_folder, imageid) |
1936 | 1934 |
os.mkdir(image_folder) |
1937 | 1935 |
|
1938 |
log.info('Parallel spawn:') |
|
1939 |
|
|
1940 | 1936 |
_run_cases_in_parallel(seq_cases, opts.fanout, image_folder) |
1941 | 1937 |
|
1942 | 1938 |
if __name__ == "__main__": |
Also available in: Unified diff