)]}'
{"nova/pci/stats.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a12b9d52ed9e6dd9b1111a4fea7271c81dbd4650","unresolved":false,"context_lines":[{"line_number":410,"context_line":"    def __eq__(self, other):"},{"line_number":411,"context_line":"        return self.pools \u003d\u003d other.pools"},{"line_number":412,"context_line":""},{"line_number":413,"context_line":"    if six.PY2:"},{"line_number":414,"context_line":"        def __ne__(self, other):"},{"line_number":415,"context_line":"            return not (self \u003d\u003d other)"},{"line_number":416,"context_line":""},{"line_number":417,"context_line":"    def to_device_pools_obj(self):"},{"line_number":418,"context_line":"        \"\"\"Return the contents of the pools as a PciDevicePoolList object.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"ff570b3c_71d62c52","side":"PARENT","line":415,"range":{"start_line":413,"start_character":0,"end_line":415,"end_character":38},"updated":"2020-05-11 10:31:50.000000000","message":"There might be a lot more of these \u0027__ne__\u0027 functions that we can remove, since !\u003d is negation of \u003d\u003d by default in Python 3 [1]\n\n[1] https://stackoverflow.com/a/30676267/613428","commit_id":"7dfe999180633a36d5f795605a3206af983d7db1"}],"nova/tests/unit/test_wsgi.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a12b9d52ed9e6dd9b1111a4fea7271c81dbd4650","unresolved":false,"context_lines":[{"line_number":225,"context_line":"            server.stop()"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"@testtools.skip(\"bug/1482633: test hangs on Python 3\")"},{"line_number":229,"context_line":"class TestWSGIServerWithSSL(test.NoDBTestCase):"},{"line_number":230,"context_line":"    \"\"\"WSGI server with SSL tests.\"\"\""},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    def setUp(self):"},{"line_number":233,"context_line":"        super(TestWSGIServerWithSSL, self).setUp()"},{"line_number":234,"context_line":"        self.flags(enabled_ssl_apis\u003d[\u0027fake_ssl\u0027])"},{"line_number":235,"context_line":"        self.flags("},{"line_number":236,"context_line":"                ssl_cert_file\u003dos.path.join(SSL_CERT_DIR, \u0027certificate.crt\u0027),"},{"line_number":237,"context_line":"                ssl_key_file\u003dos.path.join(SSL_CERT_DIR, \u0027privatekey.key\u0027),"},{"line_number":238,"context_line":"                group\u003d\u0027wsgi\u0027)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    def test_ssl_server(self):"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"        def test_app(env, start_response):"},{"line_number":243,"context_line":"            start_response(\u0027200 OK\u0027, {})"},{"line_number":244,"context_line":"            return [\u0027PONG\u0027]"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"        fake_ssl_server \u003d nova.wsgi.Server(\"fake_ssl\", test_app,"},{"line_number":247,"context_line":"                                           host\u003d\"127.0.0.1\", port\u003d0,"},{"line_number":248,"context_line":"                                           use_ssl\u003dTrue)"},{"line_number":249,"context_line":"        fake_ssl_server.start()"},{"line_number":250,"context_line":"        self.assertNotEqual(0, fake_ssl_server.port)"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"        response \u003d requests.post("},{"line_number":253,"context_line":"            \u0027https://127.0.0.1:%s/\u0027 % fake_ssl_server.port,"},{"line_number":254,"context_line":"            verify\u003dos.path.join(SSL_CERT_DIR, \u0027ca.crt\u0027), data\u003d\u0027PING\u0027)"},{"line_number":255,"context_line":"        self.assertEqual(response.text, \u0027PONG\u0027)"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        fake_ssl_server.stop()"},{"line_number":258,"context_line":"        fake_ssl_server.wait()"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"    def test_two_servers(self):"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"        def test_app(env, start_response):"},{"line_number":263,"context_line":"            start_response(\u0027200 OK\u0027, {})"},{"line_number":264,"context_line":"            return [\u0027PONG\u0027]"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"        fake_ssl_server \u003d nova.wsgi.Server(\"fake_ssl\", test_app,"},{"line_number":267,"context_line":"            host\u003d\"127.0.0.1\", port\u003d0, use_ssl\u003dTrue)"},{"line_number":268,"context_line":"        fake_ssl_server.start()"},{"line_number":269,"context_line":"        self.assertNotEqual(0, fake_ssl_server.port)"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"        fake_server \u003d nova.wsgi.Server(\"fake\", test_app,"},{"line_number":272,"context_line":"            host\u003d\"127.0.0.1\", port\u003d0)"},{"line_number":273,"context_line":"        fake_server.start()"},{"line_number":274,"context_line":"        self.assertNotEqual(0, fake_server.port)"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        response \u003d requests.post("},{"line_number":277,"context_line":"            \u0027https://127.0.0.1:%s/\u0027 % fake_ssl_server.port,"},{"line_number":278,"context_line":"            verify\u003dos.path.join(SSL_CERT_DIR, \u0027ca.crt\u0027), data\u003d\u0027PING\u0027)"},{"line_number":279,"context_line":"        self.assertEqual(response.text, \u0027PONG\u0027)"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"        response \u003d requests.post(\u0027http://127.0.0.1:%s/\u0027 % fake_server.port,"},{"line_number":282,"context_line":"                                 data\u003d\u0027PING\u0027)"},{"line_number":283,"context_line":"        self.assertEqual(response.text, \u0027PONG\u0027)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"        fake_ssl_server.stop()"},{"line_number":286,"context_line":"        fake_ssl_server.wait()"},{"line_number":287,"context_line":"        fake_server.stop()"},{"line_number":288,"context_line":"        fake_server.wait()"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"    @testtools.skipIf(not utils.is_linux(), \u0027SO_REUSEADDR behaves differently \u0027"},{"line_number":291,"context_line":"                                            \u0027on OSX and BSD, see bugs \u0027"},{"line_number":292,"context_line":"                                            \u00271436895 and 1467145\u0027)"},{"line_number":293,"context_line":"    def test_socket_options_for_ssl_server(self):"},{"line_number":294,"context_line":"        # test normal socket options has set properly"},{"line_number":295,"context_line":"        self.flags(tcp_keepidle\u003d500, group\u003d\u0027wsgi\u0027)"},{"line_number":296,"context_line":"        server \u003d nova.wsgi.Server(\"test_socket_options\", None,"},{"line_number":297,"context_line":"                                  host\u003d\"127.0.0.1\", port\u003d0,"},{"line_number":298,"context_line":"                                  use_ssl\u003dTrue)"},{"line_number":299,"context_line":"        server.start()"},{"line_number":300,"context_line":"        sock \u003d server._socket"},{"line_number":301,"context_line":"        self.assertEqual(1, sock.getsockopt(socket.SOL_SOCKET,"},{"line_number":302,"context_line":"                                            socket.SO_REUSEADDR))"},{"line_number":303,"context_line":"        self.assertEqual(1, sock.getsockopt(socket.SOL_SOCKET,"},{"line_number":304,"context_line":"                                            socket.SO_KEEPALIVE))"},{"line_number":305,"context_line":"        if hasattr(socket, \u0027TCP_KEEPIDLE\u0027):"},{"line_number":306,"context_line":"            self.assertEqual(CONF.wsgi.tcp_keepidle,"},{"line_number":307,"context_line":"                             sock.getsockopt(socket.IPPROTO_TCP,"},{"line_number":308,"context_line":"                                             socket.TCP_KEEPIDLE))"},{"line_number":309,"context_line":"        server.stop()"},{"line_number":310,"context_line":"        server.wait()"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"    @testtools.skipIf(not utils.is_ipv6_supported(), \"no ipv6 support\")"},{"line_number":313,"context_line":"    def test_app_using_ipv6_and_ssl(self):"},{"line_number":314,"context_line":"        greetings \u003d \u0027Hello, World!!!\u0027"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"        @webob.dec.wsgify"},{"line_number":317,"context_line":"        def hello_world(req):"},{"line_number":318,"context_line":"            return greetings"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"        server \u003d nova.wsgi.Server(\"fake_ssl\","},{"line_number":321,"context_line":"                                  hello_world,"},{"line_number":322,"context_line":"                                  host\u003d\"::1\","},{"line_number":323,"context_line":"                                  port\u003d0,"},{"line_number":324,"context_line":"                                  use_ssl\u003dTrue)"},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"        server.start()"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"        response \u003d requests.get(\u0027https://[::1]:%d/\u0027 % server.port,"},{"line_number":329,"context_line":"                                verify\u003dos.path.join(SSL_CERT_DIR, \u0027ca.crt\u0027))"},{"line_number":330,"context_line":"        self.assertEqual(greetings, response.text)"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"        server.stop()"},{"line_number":333,"context_line":"        server.wait()"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff570b3c_b145641a","line":333,"range":{"start_line":228,"start_character":0,"end_line":333,"end_character":21},"updated":"2020-05-11 10:31:50.000000000","message":"Can we just delete this?","commit_id":"4dec45efa82c448ea58ef4bd5648eb7c93548b92"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"80e400e50504b1c35eaadc9c929d92e9176a929b","unresolved":false,"context_lines":[{"line_number":225,"context_line":"            server.stop()"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"@testtools.skip(\"bug/1482633: test hangs on Python 3\")"},{"line_number":229,"context_line":"class TestWSGIServerWithSSL(test.NoDBTestCase):"},{"line_number":230,"context_line":"    \"\"\"WSGI server with SSL tests.\"\"\""},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    def setUp(self):"},{"line_number":233,"context_line":"        super(TestWSGIServerWithSSL, self).setUp()"},{"line_number":234,"context_line":"        self.flags(enabled_ssl_apis\u003d[\u0027fake_ssl\u0027])"},{"line_number":235,"context_line":"        self.flags("},{"line_number":236,"context_line":"                ssl_cert_file\u003dos.path.join(SSL_CERT_DIR, \u0027certificate.crt\u0027),"},{"line_number":237,"context_line":"                ssl_key_file\u003dos.path.join(SSL_CERT_DIR, \u0027privatekey.key\u0027),"},{"line_number":238,"context_line":"                group\u003d\u0027wsgi\u0027)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    def test_ssl_server(self):"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"        def test_app(env, start_response):"},{"line_number":243,"context_line":"            start_response(\u0027200 OK\u0027, {})"},{"line_number":244,"context_line":"            return [\u0027PONG\u0027]"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"        fake_ssl_server \u003d nova.wsgi.Server(\"fake_ssl\", test_app,"},{"line_number":247,"context_line":"                                           host\u003d\"127.0.0.1\", port\u003d0,"},{"line_number":248,"context_line":"                                           use_ssl\u003dTrue)"},{"line_number":249,"context_line":"        fake_ssl_server.start()"},{"line_number":250,"context_line":"        self.assertNotEqual(0, fake_ssl_server.port)"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"        response \u003d requests.post("},{"line_number":253,"context_line":"            \u0027https://127.0.0.1:%s/\u0027 % fake_ssl_server.port,"},{"line_number":254,"context_line":"            verify\u003dos.path.join(SSL_CERT_DIR, \u0027ca.crt\u0027), data\u003d\u0027PING\u0027)"},{"line_number":255,"context_line":"        self.assertEqual(response.text, \u0027PONG\u0027)"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        fake_ssl_server.stop()"},{"line_number":258,"context_line":"        fake_ssl_server.wait()"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"    def test_two_servers(self):"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"        def test_app(env, start_response):"},{"line_number":263,"context_line":"            start_response(\u0027200 OK\u0027, {})"},{"line_number":264,"context_line":"            return [\u0027PONG\u0027]"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"        fake_ssl_server \u003d nova.wsgi.Server(\"fake_ssl\", test_app,"},{"line_number":267,"context_line":"            host\u003d\"127.0.0.1\", port\u003d0, use_ssl\u003dTrue)"},{"line_number":268,"context_line":"        fake_ssl_server.start()"},{"line_number":269,"context_line":"        self.assertNotEqual(0, fake_ssl_server.port)"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"        fake_server \u003d nova.wsgi.Server(\"fake\", test_app,"},{"line_number":272,"context_line":"            host\u003d\"127.0.0.1\", port\u003d0)"},{"line_number":273,"context_line":"        fake_server.start()"},{"line_number":274,"context_line":"        self.assertNotEqual(0, fake_server.port)"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        response \u003d requests.post("},{"line_number":277,"context_line":"            \u0027https://127.0.0.1:%s/\u0027 % fake_ssl_server.port,"},{"line_number":278,"context_line":"            verify\u003dos.path.join(SSL_CERT_DIR, \u0027ca.crt\u0027), data\u003d\u0027PING\u0027)"},{"line_number":279,"context_line":"        self.assertEqual(response.text, \u0027PONG\u0027)"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"        response \u003d requests.post(\u0027http://127.0.0.1:%s/\u0027 % fake_server.port,"},{"line_number":282,"context_line":"                                 data\u003d\u0027PING\u0027)"},{"line_number":283,"context_line":"        self.assertEqual(response.text, \u0027PONG\u0027)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"        fake_ssl_server.stop()"},{"line_number":286,"context_line":"        fake_ssl_server.wait()"},{"line_number":287,"context_line":"        fake_server.stop()"},{"line_number":288,"context_line":"        fake_server.wait()"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"    @testtools.skipIf(not utils.is_linux(), \u0027SO_REUSEADDR behaves differently \u0027"},{"line_number":291,"context_line":"                                            \u0027on OSX and BSD, see bugs \u0027"},{"line_number":292,"context_line":"                                            \u00271436895 and 1467145\u0027)"},{"line_number":293,"context_line":"    def test_socket_options_for_ssl_server(self):"},{"line_number":294,"context_line":"        # test normal socket options has set properly"},{"line_number":295,"context_line":"        self.flags(tcp_keepidle\u003d500, group\u003d\u0027wsgi\u0027)"},{"line_number":296,"context_line":"        server \u003d nova.wsgi.Server(\"test_socket_options\", None,"},{"line_number":297,"context_line":"                                  host\u003d\"127.0.0.1\", port\u003d0,"},{"line_number":298,"context_line":"                                  use_ssl\u003dTrue)"},{"line_number":299,"context_line":"        server.start()"},{"line_number":300,"context_line":"        sock \u003d server._socket"},{"line_number":301,"context_line":"        self.assertEqual(1, sock.getsockopt(socket.SOL_SOCKET,"},{"line_number":302,"context_line":"                                            socket.SO_REUSEADDR))"},{"line_number":303,"context_line":"        self.assertEqual(1, sock.getsockopt(socket.SOL_SOCKET,"},{"line_number":304,"context_line":"                                            socket.SO_KEEPALIVE))"},{"line_number":305,"context_line":"        if hasattr(socket, \u0027TCP_KEEPIDLE\u0027):"},{"line_number":306,"context_line":"            self.assertEqual(CONF.wsgi.tcp_keepidle,"},{"line_number":307,"context_line":"                             sock.getsockopt(socket.IPPROTO_TCP,"},{"line_number":308,"context_line":"                                             socket.TCP_KEEPIDLE))"},{"line_number":309,"context_line":"        server.stop()"},{"line_number":310,"context_line":"        server.wait()"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"    @testtools.skipIf(not utils.is_ipv6_supported(), \"no ipv6 support\")"},{"line_number":313,"context_line":"    def test_app_using_ipv6_and_ssl(self):"},{"line_number":314,"context_line":"        greetings \u003d \u0027Hello, World!!!\u0027"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"        @webob.dec.wsgify"},{"line_number":317,"context_line":"        def hello_world(req):"},{"line_number":318,"context_line":"            return greetings"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"        server \u003d nova.wsgi.Server(\"fake_ssl\","},{"line_number":321,"context_line":"                                  hello_world,"},{"line_number":322,"context_line":"                                  host\u003d\"::1\","},{"line_number":323,"context_line":"                                  port\u003d0,"},{"line_number":324,"context_line":"                                  use_ssl\u003dTrue)"},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"        server.start()"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"        response \u003d requests.get(\u0027https://[::1]:%d/\u0027 % server.port,"},{"line_number":329,"context_line":"                                verify\u003dos.path.join(SSL_CERT_DIR, \u0027ca.crt\u0027))"},{"line_number":330,"context_line":"        self.assertEqual(greetings, response.text)"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"        server.stop()"},{"line_number":333,"context_line":"        server.wait()"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff570b3c_53994c6c","line":333,"range":{"start_line":228,"start_character":0,"end_line":333,"end_character":21},"in_reply_to":"ff570b3c_b145641a","updated":"2020-05-12 15:10:47.000000000","message":"If bug 1482633 is fixed, this tests can be enabled.\nSo IMO, it had better keep them.","commit_id":"4dec45efa82c448ea58ef4bd5648eb7c93548b92"}]}
