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