def _verify_console_interaction(self, server_id):
        body = self.servers_client.get_remote_console(server_id,
                                                      console_type='serial',
                                                      protocol='serial')
        console_url = body['remote_console']['url']
        data = "test_live_migration_serial_console"
        console_output = ''
        t = 0.0
        interval = 0.1

        ws = compute.create_websocket(console_url)
        try:
            # NOTE (markus_z): It can take a long time until the terminal
            # of the instance is available for interaction. Hence the
            # long timeout value.
            while data not in console_output and t <= 120.0:
                try:
                    ws.send_frame(data)
                    received = ws.receive_frame()
                    console_output += received
                except Exception:
                    # In case we had an issue with send/receive on the
                    # websocket connection, we create a new one.
                    ws = compute.create_websocket(console_url)
                time.sleep(interval)
                t += interval
        finally:
            ws.close()
        self.assertIn(data, console_output)
    def _verify_console_interaction(self, server_id):
        body = self.servers_client.get_remote_console(server_id,
                                                      console_type='serial',
                                                      protocol='serial')
        console_url = body['remote_console']['url']
        data = "test_live_migration_serial_console"
        console_output = ''
        t = 0.0
        interval = 0.1

        ws = compute.create_websocket(console_url)
        try:
            # NOTE (markus_z): It can take a long time until the terminal
            # of the instance is available for interaction. Hence the
            # long timeout value.
            while data not in console_output and t <= 120.0:
                try:
                    ws.send_frame(data)
                    received = ws.receive_frame()
                    console_output += received
                except Exception:
                    # In case we had an issue with send/receive on the
                    # websocket connection, we create a new one.
                    ws = compute.create_websocket(console_url)
                time.sleep(interval)
                t += interval
        finally:
            ws.close()
        self.assertIn(data, console_output)
Exemple #3
0
 def test_novnc_bad_token(self):
     if self.use_get_remote_console:
         body = self.client.get_remote_console(
             self.server['id'], console_type='novnc',
             protocol='vnc')['remote_console']
     else:
         body = self.client.get_vnc_console(self.server['id'],
                                            type='novnc')['console']
     self.assertEqual('novnc', body['type'])
     # Do the WebSockify HTTP Request to novncproxy with a bad token
     parts = urlparse.urlparse(body['url'])
     qparams = urlparse.parse_qs(parts.query)
     if 'path' in qparams:
         qparams['path'] = urlparse.unquote(qparams['path'][0]).replace(
             'token=', 'token=bad')
     elif 'token' in qparams:
         qparams['token'] = 'bad' + qparams['token'][0]
     new_query = urlparse.urlencode(qparams)
     new_parts = urlparse.ParseResult(parts.scheme, parts.netloc,
                                      parts.path, parts.params, new_query,
                                      parts.fragment)
     url = urlparse.urlunparse(new_parts)
     self._websocket = compute.create_websocket(url)
     # Make sure the novncproxy rejected the connection and closed it
     data = self._websocket.receive_frame()
     self.assertTrue(
         data is None or not data,
         "The novnc proxy actually sent us some data, but we "
         "expected it to close the connection.")
Exemple #4
0
 def test_novnc(self):
     body = self.client.get_vnc_console(self.server['id'],
                                        type='novnc')['console']
     self.assertEqual('novnc', body['type'])
     # Do the initial HTTP Request to novncproxy to get the NoVNC JavaScript
     self._validate_novnc_html(body['url'])
     # Do the WebSockify HTTP Request to novncproxy to do the RFB connection
     self._websocket = compute.create_websocket(body['url'])
     # Validate that we successfully connected and upgraded to Web Sockets
     self._validate_websocket_upgrade()
     # Validate the RFB Negotiation to determine if a valid VNC session
     self._validate_rfb_negotiation()
Exemple #5
0
 def test_novnc_bad_token(self):
     body = self.client.get_vnc_console(self.server['id'],
                                        type='novnc')['console']
     self.assertEqual('novnc', body['type'])
     # Do the WebSockify HTTP Request to novncproxy with a bad token
     url = body['url'].replace('token=', 'token=bad')
     self._websocket = compute.create_websocket(url)
     # Make sure the novncproxy rejected the connection and closed it
     data = self._websocket.receive_frame()
     self.assertTrue(data is None or not data,
                     "The novnc proxy actually sent us some data, but we "
                     "expected it to close the connection.")
Exemple #6
0
 def test_novnc(self):
     body = self.client.get_vnc_console(self.server['id'],
                                        type='novnc')['console']
     self.assertEqual('novnc', body['type'])
     # Do the initial HTTP Request to novncproxy to get the NoVNC JavaScript
     self._validate_novnc_html(body['url'])
     # Do the WebSockify HTTP Request to novncproxy to do the RFB connection
     self._websocket = compute.create_websocket(body['url'])
     # Validate that we succesfully connected and upgraded to Web Sockets
     self._validate_websocket_upgrade()
     # Validate the RFB Negotiation to determine if a valid VNC session
     self._validate_rfb_negotiation()
Exemple #7
0
 def test_novnc_bad_token(self):
     body = self.client.get_vnc_console(self.server['id'],
                                        type='novnc')['console']
     self.assertEqual('novnc', body['type'])
     # Do the WebSockify HTTP Request to novncproxy with a bad token
     url = body['url'].replace('token=', 'token=bad')
     self._websocket = compute.create_websocket(url)
     # Make sure the novncproxy rejected the connection and closed it
     data = self._websocket.receive_frame()
     self.assertTrue(data is None or not data,
                     "The novnc proxy actually sent us some data, but we "
                     "expected it to close the connection.")