)]}'
{"tempest/api/compute/servers/test_novnc.py":[{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"aef7510d7557ab27bb7435e1117bfb8f2da1ccfe","unresolved":false,"context_lines":[{"line_number":238,"context_line":"        # We are choosing to use binary even though browser may do Base64"},{"line_number":239,"context_line":"        reqdata +\u003d \u0027Sec-WebSocket-Protocol: binary\\r\\n\\r\\n\u0027"},{"line_number":240,"context_line":"        # Send the HTTP GET request and get the response back"},{"line_number":241,"context_line":"        self._socket.sendall(six.binary_type(reqdata.encode(\u0027utf8\u0027)))"},{"line_number":242,"context_line":"        self.response \u003d data \u003d self._socket.recv(4096)"},{"line_number":243,"context_line":"        # Loop through \u0026 concatenate all of the data in the response body"},{"line_number":244,"context_line":"        while len(data) \u003e 0 and self.response.find(\u0027\\r\\n\\r\\n\u0027) \u003c 0:"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a430d35_d3b2bf93","line":241,"updated":"2017-02-07 11:16:27.000000000","message":"This is a bit redundant: \u0027encode\u0027 is bound to return bytes,  not need to wrap with binary_type()","commit_id":"2c52e5b34aad92037bc483b621319571264b8c56"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"59ea5edfb551efc89c777565b0a52651328df86d","unresolved":false,"context_lines":[{"line_number":238,"context_line":"        # We are choosing to use binary even though browser may do Base64"},{"line_number":239,"context_line":"        reqdata +\u003d \u0027Sec-WebSocket-Protocol: binary\\r\\n\\r\\n\u0027"},{"line_number":240,"context_line":"        # Send the HTTP GET request and get the response back"},{"line_number":241,"context_line":"        self._socket.sendall(six.binary_type(reqdata.encode(\u0027utf8\u0027)))"},{"line_number":242,"context_line":"        self.response \u003d data \u003d self._socket.recv(4096)"},{"line_number":243,"context_line":"        # Loop through \u0026 concatenate all of the data in the response body"},{"line_number":244,"context_line":"        while len(data) \u003e 0 and self.response.find(\u0027\\r\\n\\r\\n\u0027) \u003c 0:"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a430d35_4c8f0475","line":241,"in_reply_to":"1a430d35_d3b2bf93","updated":"2017-02-07 15:47:39.000000000","message":"Done","commit_id":"2c52e5b34aad92037bc483b621319571264b8c56"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"aef7510d7557ab27bb7435e1117bfb8f2da1ccfe","unresolved":false,"context_lines":[{"line_number":241,"context_line":"        self._socket.sendall(six.binary_type(reqdata.encode(\u0027utf8\u0027)))"},{"line_number":242,"context_line":"        self.response \u003d data \u003d self._socket.recv(4096)"},{"line_number":243,"context_line":"        # Loop through \u0026 concatenate all of the data in the response body"},{"line_number":244,"context_line":"        while len(data) \u003e 0 and self.response.find(\u0027\\r\\n\\r\\n\u0027) \u003c 0:"},{"line_number":245,"context_line":"            data \u003d self._socket.recv(4096)"},{"line_number":246,"context_line":"            self.response +\u003d data"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a430d35_13e447aa","line":244,"updated":"2017-02-07 11:16:27.000000000","message":"I suggest self.response.find(b\u0027\\r\\n\\r\\n\u0027) \u003c 0:","commit_id":"2c52e5b34aad92037bc483b621319571264b8c56"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"59ea5edfb551efc89c777565b0a52651328df86d","unresolved":false,"context_lines":[{"line_number":241,"context_line":"        self._socket.sendall(six.binary_type(reqdata.encode(\u0027utf8\u0027)))"},{"line_number":242,"context_line":"        self.response \u003d data \u003d self._socket.recv(4096)"},{"line_number":243,"context_line":"        # Loop through \u0026 concatenate all of the data in the response body"},{"line_number":244,"context_line":"        while len(data) \u003e 0 and self.response.find(\u0027\\r\\n\\r\\n\u0027) \u003c 0:"},{"line_number":245,"context_line":"            data \u003d self._socket.recv(4096)"},{"line_number":246,"context_line":"            self.response +\u003d data"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a430d35_ecf6f0f7","line":244,"in_reply_to":"1a430d35_13e447aa","updated":"2017-02-07 15:47:39.000000000","message":"Done","commit_id":"2c52e5b34aad92037bc483b621319571264b8c56"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"af53cdc7e3c7bf31d9e8cabd740ccaa4ac7bcedc","unresolved":false,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    def _validate_websocket_upgrade(self):"},{"line_number":128,"context_line":"        self.assertTrue("},{"line_number":129,"context_line":"            self._websocket.response.startswith(\u0027HTTP/1.1 101 Switching \u0027"},{"line_number":130,"context_line":"                                                \u0027Protocols\\r\\n\u0027),"},{"line_number":131,"context_line":"            \u0027Did not get the expected 101 on the websockify call: \u0027"},{"line_number":132,"context_line":"            + six.text_type(self._websocket.response))"},{"line_number":133,"context_line":"        self.assertTrue("},{"line_number":134,"context_line":"            self._websocket.response.find(\u0027Server: WebSockify\u0027) \u003e 0,"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a430d35_0069f3f8","line":131,"range":{"start_line":129,"start_character":0,"end_line":131,"end_character":67},"updated":"2017-02-09 02:42:11.000000000","message":"The received data is\n\n b\u0027HTTP/1.1 101 Switching Protocols\\r\\nServer: WebSockify Python/3.5.2\\r\\nDate: Wed, 08 Feb 2017 23:00:29 GMT\\r\\nUpgrade: websocket\\r\\nConnection: Upgrade\\r\\nSec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk\u003d\\r\\nSec-WebSocket-Protocol: binary\\r\\n\\r\\n\u0027b\u0027\u0027\n\nI feel the original expecting response seems a little weird by comparing the above receiving data.. That seems warning message.","commit_id":"08550c0208ec395382b7c3cb16abd9dfa2dae38c"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"880e02d60439f05339521ad26fb0637925e2dca9","unresolved":false,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    def _validate_websocket_upgrade(self):"},{"line_number":128,"context_line":"        self.assertTrue("},{"line_number":129,"context_line":"            self._websocket.response.startswith(\u0027HTTP/1.1 101 Switching \u0027"},{"line_number":130,"context_line":"                                                \u0027Protocols\\r\\n\u0027),"},{"line_number":131,"context_line":"            \u0027Did not get the expected 101 on the websockify call: \u0027"},{"line_number":132,"context_line":"            + six.text_type(self._websocket.response))"},{"line_number":133,"context_line":"        self.assertTrue("},{"line_number":134,"context_line":"            self._websocket.response.find(\u0027Server: WebSockify\u0027) \u003e 0,"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa31d9ce_463cae93","line":131,"range":{"start_line":129,"start_character":0,"end_line":131,"end_character":67},"in_reply_to":"1a430d35_0069f3f8","updated":"2017-02-10 12:13:30.000000000","message":"I am not sure I understand what you mean here. Sorry If I +2ed too early.","commit_id":"08550c0208ec395382b7c3cb16abd9dfa2dae38c"},{"author":{"_account_id":17716,"name":"Luz Cazares","email":"luz.cazares@intel.com","username":"luzcazares"},"change_message_id":"c38173d59da47971bab4fe5dedbef05986ccb2a4","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        # and greater than or equal to 3.3"},{"line_number":86,"context_line":"        version \u003d float(\"%d.%d\" % (int(data[4:7], base\u003d10),"},{"line_number":87,"context_line":"                                   int(data[8:11], base\u003d10)))"},{"line_number":88,"context_line":"        self.assertTrue(version \u003e\u003d 3.3, \u0027Bad RFB Version: \u0027 + str(version))"},{"line_number":89,"context_line":"        # Send our RFB version to the server, which we will just go with 3.3"},{"line_number":90,"context_line":"        self._websocket.send_frame(str(data))"},{"line_number":91,"context_line":"        # Get the sever authentication type and make sure None is supported"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa31d9ce_268def31","line":88,"range":{"start_line":88,"start_character":62,"end_line":88,"end_character":74},"updated":"2017-02-10 16:19:29.000000000","message":"should this one be changed too?","commit_id":"5d0c3e2f027ced3c950c64640ea8dd2cfecbfb08"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"41d8b558748f9be903765c52fe6eac0e452123d8","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        # and greater than or equal to 3.3"},{"line_number":86,"context_line":"        version \u003d float(\"%d.%d\" % (int(data[4:7], base\u003d10),"},{"line_number":87,"context_line":"                                   int(data[8:11], base\u003d10)))"},{"line_number":88,"context_line":"        self.assertTrue(version \u003e\u003d 3.3, \u0027Bad RFB Version: \u0027 + str(version))"},{"line_number":89,"context_line":"        # Send our RFB version to the server, which we will just go with 3.3"},{"line_number":90,"context_line":"        self._websocket.send_frame(str(data))"},{"line_number":91,"context_line":"        # Get the sever authentication type and make sure None is supported"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa31d9ce_b49ab461","line":88,"in_reply_to":"fa31d9ce_268def31","updated":"2017-02-13 10:26:22.000000000","message":"This one only affects the log message of the assert, should not be relevant I think.","commit_id":"5d0c3e2f027ced3c950c64640ea8dd2cfecbfb08"},{"author":{"_account_id":17716,"name":"Luz Cazares","email":"luz.cazares@intel.com","username":"luzcazares"},"change_message_id":"c38173d59da47971bab4fe5dedbef05986ccb2a4","unresolved":false,"context_lines":[{"line_number":87,"context_line":"                                   int(data[8:11], base\u003d10)))"},{"line_number":88,"context_line":"        self.assertTrue(version \u003e\u003d 3.3, \u0027Bad RFB Version: \u0027 + str(version))"},{"line_number":89,"context_line":"        # Send our RFB version to the server, which we will just go with 3.3"},{"line_number":90,"context_line":"        self._websocket.send_frame(str(data))"},{"line_number":91,"context_line":"        # Get the sever authentication type and make sure None is supported"},{"line_number":92,"context_line":"        data \u003d self._websocket.receive_frame()"},{"line_number":93,"context_line":"        self.assertIsNotNone(data, \u0027Expected authentication type None.\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa31d9ce_e673d74b","line":90,"range":{"start_line":90,"start_character":35,"end_line":90,"end_character":44},"updated":"2017-02-10 16:19:29.000000000","message":"ditto","commit_id":"5d0c3e2f027ced3c950c64640ea8dd2cfecbfb08"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"41d8b558748f9be903765c52fe6eac0e452123d8","unresolved":false,"context_lines":[{"line_number":87,"context_line":"                                   int(data[8:11], base\u003d10)))"},{"line_number":88,"context_line":"        self.assertTrue(version \u003e\u003d 3.3, \u0027Bad RFB Version: \u0027 + str(version))"},{"line_number":89,"context_line":"        # Send our RFB version to the server, which we will just go with 3.3"},{"line_number":90,"context_line":"        self._websocket.send_frame(str(data))"},{"line_number":91,"context_line":"        # Get the sever authentication type and make sure None is supported"},{"line_number":92,"context_line":"        data \u003d self._websocket.receive_frame()"},{"line_number":93,"context_line":"        self.assertIsNotNone(data, \u0027Expected authentication type None.\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa31d9ce_b48474d4","line":90,"in_reply_to":"fa31d9ce_e673d74b","updated":"2017-02-13 10:26:22.000000000","message":"But this one may indeed cause an issue like the error we are seeing on PS7. I\u0027m not sure though how this should be changed, data contains the frame that was received, so maybe we should send it out without any conversion? I.e. just do\n\n    self._websocket.send_frame(data)","commit_id":"5d0c3e2f027ced3c950c64640ea8dd2cfecbfb08"}]}
