)]}'
{"ceilometer/api/app.py":[{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"a6ffb714ab19f5fb02e760bd598aa0fd48d5d4bc","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"def start():"},{"line_number":111,"context_line":"    import socket"},{"line_number":112,"context_line":"    from wsgiref.simple_server import WSGIServer"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    service.prepare_service()"},{"line_number":115,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2B%2BMI%3D","line":112,"updated":"2014-01-20 08:43:59.000000000","message":"Any specific consideration to put the import here?","commit_id":"f248d0dcd84afc8e281ab72fffed43d934367fe9"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"015e40559c937fdcd36acaced4ce8c2c1aed6af8","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"def start():"},{"line_number":111,"context_line":"    import socket"},{"line_number":112,"context_line":"    from wsgiref.simple_server import WSGIServer"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    service.prepare_service()"},{"line_number":115,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2B9tU%3D","line":112,"updated":"2014-01-20 10:47:48.000000000","message":"I think this will not pass pep8 check since you\u0027re importing a class","commit_id":"f248d0dcd84afc8e281ab72fffed43d934367fe9"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"a6ffb714ab19f5fb02e760bd598aa0fd48d5d4bc","unresolved":false,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    # Create the WSGI server and start it"},{"line_number":120,"context_line":"    host, port \u003d cfg.CONF.api.host, cfg.CONF.api.port"},{"line_number":121,"context_line":"    if \u0027:\u0027 in host:"},{"line_number":122,"context_line":"        # (dzyu) make sure use IPv6 sockets if host is in IPv6 pattern"},{"line_number":123,"context_line":"        if getattr(WSGIServer, \u0027address_family\u0027) \u003d\u003d socket.AF_INET:"},{"line_number":124,"context_line":"            class WSGIServer(WSGIServer):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2B%2BMU%3D","line":121,"updated":"2014-01-20 08:43:59.000000000","message":"How about using netaddr.valid_ipv6(host) ?","commit_id":"f248d0dcd84afc8e281ab72fffed43d934367fe9"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"a6ffb714ab19f5fb02e760bd598aa0fd48d5d4bc","unresolved":false,"context_lines":[{"line_number":119,"context_line":"    # Create the WSGI server and start it"},{"line_number":120,"context_line":"    host, port \u003d cfg.CONF.api.host, cfg.CONF.api.port"},{"line_number":121,"context_line":"    if \u0027:\u0027 in host:"},{"line_number":122,"context_line":"        # (dzyu) make sure use IPv6 sockets if host is in IPv6 pattern"},{"line_number":123,"context_line":"        if getattr(WSGIServer, \u0027address_family\u0027) \u003d\u003d socket.AF_INET:"},{"line_number":124,"context_line":"            class WSGIServer(WSGIServer):"},{"line_number":125,"context_line":"                address_family \u003d socket.AF_INET"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2B%2BN4%3D","line":122,"updated":"2014-01-20 08:43:59.000000000","message":"(nit): I prefer the format   # NOTE(dzyu):","commit_id":"f248d0dcd84afc8e281ab72fffed43d934367fe9"},{"author":{"_account_id":6981,"name":"Yang Yu","email":"yangyu@vmware.com","username":"yuyangbj"},"change_message_id":"11d497305be416be141fa9de25438df253474422","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        # (dzyu) make sure use IPv6 sockets if host is in IPv6 pattern"},{"line_number":123,"context_line":"        if getattr(WSGIServer, \u0027address_family\u0027) \u003d\u003d socket.AF_INET:"},{"line_number":124,"context_line":"            class WSGIServer(WSGIServer):"},{"line_number":125,"context_line":"                address_family \u003d socket.AF_INET"},{"line_number":126,"context_line":"    srv \u003d simple_server.make_server(host, port, root, WSGIServer)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    LOG.info(_(\u0027Starting server in PID %s\u0027) % os.getpid())"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2B4Lo%3D","line":125,"updated":"2014-01-21 06:27:57.000000000","message":"should be AF_INET6","commit_id":"f248d0dcd84afc8e281ab72fffed43d934367fe9"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"195cecca59e08a0851b5b15674838199c253026d","unresolved":false,"context_lines":[{"line_number":118,"context_line":"    server_cls \u003d simple_server.WSGIServer"},{"line_number":119,"context_line":"    # Create the WSGI server and start it"},{"line_number":120,"context_line":"    host, port \u003d cfg.CONF.api.host, cfg.CONF.api.port"},{"line_number":121,"context_line":"    if netaddr.valid_ipv6(host):"},{"line_number":122,"context_line":"        # NOTE(dzyu) make sure use IPv6 sockets if host is in IPv6 pattern"},{"line_number":123,"context_line":"        if getattr(server_cls, \u0027address_family\u0027) \u003d\u003d socket.AF_INET:"},{"line_number":124,"context_line":"            class server_cls(server_cls):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAU3%2F%2F0eg%3D","line":121,"updated":"2014-02-24 16:38:09.000000000","message":"Put that lines into a function","commit_id":"7faba1995d0da6c4ddf85fc09f92f28de552d9e5"}],"ceilometer/tests/api/test_app.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"520058e0979c81a97b1a5573351b90be7e4a433b","unresolved":false,"context_lines":[{"line_number":36,"context_line":"            app, \u0027start\u0027,"},{"line_number":37,"context_line":"            side_effect\u003dself.fake_start))"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def fake_start(self):"},{"line_number":40,"context_line":"        host \u003d cfg.CONF.api.host"},{"line_number":41,"context_line":"        server_cls \u003d simple_server.WSGIServer"},{"line_number":42,"context_line":"        if netaddr.valid_ipv6(host):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUX%2F%2FtL0%3D","line":39,"updated":"2014-02-11 10:42:03.000000000","message":"@staticmethod","commit_id":"549c5ce48d8971e1c0c5ab6d9a2a40a52e5e8166"},{"author":{"_account_id":8278,"name":"Dazhao Yu","email":"dazhaoyu@gmail.com","username":"Dazhao"},"change_message_id":"e666e48d02af1b4d0370ad055c1d788dc0b5dc0b","unresolved":false,"context_lines":[{"line_number":36,"context_line":"            app, \u0027start\u0027,"},{"line_number":37,"context_line":"            side_effect\u003dself.fake_start))"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def fake_start(self):"},{"line_number":40,"context_line":"        host \u003d cfg.CONF.api.host"},{"line_number":41,"context_line":"        server_cls \u003d simple_server.WSGIServer"},{"line_number":42,"context_line":"        if netaddr.valid_ipv6(host):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUX%2F%2FmNQ%3D","line":39,"in_reply_to":"AAAAUX%2F%2FtL0%3D","updated":"2014-02-12 05:04:18.000000000","message":"Done","commit_id":"549c5ce48d8971e1c0c5ab6d9a2a40a52e5e8166"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"520058e0979c81a97b1a5573351b90be7e4a433b","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def fake_start(self):"},{"line_number":40,"context_line":"        host \u003d cfg.CONF.api.host"},{"line_number":41,"context_line":"        server_cls \u003d simple_server.WSGIServer"},{"line_number":42,"context_line":"        if netaddr.valid_ipv6(host):"},{"line_number":43,"context_line":"            if getattr(server_cls, \u0027address_family\u0027) \u003d\u003d socket.AF_INET:"},{"line_number":44,"context_line":"                class server_cls(server_cls):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUX%2F%2FtLI%3D","line":41,"updated":"2014-02-11 10:42:03.000000000","message":"The fact that the code is copy pasted does not help testing; if the code change in the application, the test won\u0027t test the new code","commit_id":"549c5ce48d8971e1c0c5ab6d9a2a40a52e5e8166"},{"author":{"_account_id":8278,"name":"Dazhao Yu","email":"dazhaoyu@gmail.com","username":"Dazhao"},"change_message_id":"e666e48d02af1b4d0370ad055c1d788dc0b5dc0b","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def fake_start(self):"},{"line_number":40,"context_line":"        host \u003d cfg.CONF.api.host"},{"line_number":41,"context_line":"        server_cls \u003d simple_server.WSGIServer"},{"line_number":42,"context_line":"        if netaddr.valid_ipv6(host):"},{"line_number":43,"context_line":"            if getattr(server_cls, \u0027address_family\u0027) \u003d\u003d socket.AF_INET:"},{"line_number":44,"context_line":"                class server_cls(server_cls):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUX%2F%2FmK0%3D","line":41,"in_reply_to":"AAAAUX%2F%2FtLI%3D","updated":"2014-02-12 05:04:18.000000000","message":"Hi Julien,\nthe purpose of the test is for verify if WSGIServer address family is suitable base on the provided host.\nIn the application, the true start() method will be called by ceilometer-api process, it is not easy to mock for me. Also the true start() method can not return WSGIServer class, it will be hard to judge the address family if is OK for us. Any suggest, please let me know, thanks!","commit_id":"549c5ce48d8971e1c0c5ab6d9a2a40a52e5e8166"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"195cecca59e08a0851b5b15674838199c253026d","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    def fake_start():"},{"line_number":41,"context_line":"        host \u003d cfg.CONF.api.host"},{"line_number":42,"context_line":"        server_cls \u003d simple_server.WSGIServer"},{"line_number":43,"context_line":"        if netaddr.valid_ipv6(host):"},{"line_number":44,"context_line":"            if getattr(server_cls, \u0027address_family\u0027) \u003d\u003d socket.AF_INET:"},{"line_number":45,"context_line":"                class server_cls(server_cls):"},{"line_number":46,"context_line":"                    address_family \u003d socket.AF_INET6"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAU3%2F%2F0eU%3D","line":43,"updated":"2014-02-24 16:38:09.000000000","message":"Use the function you will define with those lines.","commit_id":"7faba1995d0da6c4ddf85fc09f92f28de552d9e5"}]}
