)]}'
{"tempest/services/volume/json/snapshots_client.py":[{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"5dddd2011f160f020b99795fb171bc2271788430","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    def is_resource_deleted(self, id):"},{"line_number":128,"context_line":"        try:"},{"line_number":129,"context_line":"            snap \u003d self.get_snapshot(id)"},{"line_number":130,"context_line":"            if snap is None:"},{"line_number":131,"context_line":"                return True"},{"line_number":132,"context_line":"        except exceptions.NotFound:"},{"line_number":133,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_889d5f69","line":130,"updated":"2014-06-16 16:50:20.000000000","message":"Can you explain why is it required ?\n\nIt looks like a bug, in the services.","commit_id":"3550230fefb368e7db91aa6b45a786fb71ebc844"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"3a9461d94b97a0692bc3280c9f9a810ef72bc0e0","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    def is_resource_deleted(self, id):"},{"line_number":128,"context_line":"        try:"},{"line_number":129,"context_line":"            snap \u003d self.get_snapshot(id)"},{"line_number":130,"context_line":"            if snap is None:"},{"line_number":131,"context_line":"                return True"},{"line_number":132,"context_line":"        except exceptions.NotFound:"},{"line_number":133,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_e57ee0ae","line":130,"in_reply_to":"1ae5cdf2_889d5f69","updated":"2014-06-24 21:10:31.000000000","message":"It\u0027s perfectly fine to check to make sure something is deleted.","commit_id":"3550230fefb368e7db91aa6b45a786fb71ebc844"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"7a82a27f49f1c50bdd911465a84187f93879ba7b","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    def is_resource_deleted(self, id):"},{"line_number":128,"context_line":"        try:"},{"line_number":129,"context_line":"            snap \u003d self.get_snapshot(id)"},{"line_number":130,"context_line":"            if snap is None:"},{"line_number":131,"context_line":"                return True"},{"line_number":132,"context_line":"        except exceptions.NotFound:"},{"line_number":133,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_95a556b7","line":130,"in_reply_to":"1ae5cdf2_e57ee0ae","updated":"2014-07-02 05:30:19.000000000","message":"It is perfectly invalid/unexpected response for deleted resource. If something is deleted the response must be 404.\n\nThe \"null\", \"[]\", \"{}\" responses are considered as a bug.","commit_id":"3550230fefb368e7db91aa6b45a786fb71ebc844"}],"tempest/services/volume/json/volumes_client.py":[{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"5dddd2011f160f020b99795fb171bc2271788430","unresolved":false,"context_lines":[{"line_number":170,"context_line":"    def is_resource_deleted(self, id):"},{"line_number":171,"context_line":"        try:"},{"line_number":172,"context_line":"            vol \u003d self.get_volume(id)"},{"line_number":173,"context_line":"            if vol is None:"},{"line_number":174,"context_line":"                return True"},{"line_number":175,"context_line":"        except exceptions.NotFound:"},{"line_number":176,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_a89a1b6c","line":173,"updated":"2014-06-16 16:50:20.000000000","message":"Can you explain why is it required ?\n\nIt looks like a bug in the services.","commit_id":"3550230fefb368e7db91aa6b45a786fb71ebc844"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"7a82a27f49f1c50bdd911465a84187f93879ba7b","unresolved":false,"context_lines":[{"line_number":170,"context_line":"    def is_resource_deleted(self, id):"},{"line_number":171,"context_line":"        try:"},{"line_number":172,"context_line":"            vol \u003d self.get_volume(id)"},{"line_number":173,"context_line":"            if vol is None:"},{"line_number":174,"context_line":"                return True"},{"line_number":175,"context_line":"        except exceptions.NotFound:"},{"line_number":176,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_5572de49","line":173,"in_reply_to":"1ae5cdf2_a574d8d0","updated":"2014-07-02 05:30:19.000000000","message":"Because 404 is the expected response on deleted resource.\n\nWhen getting a resource by id and having something which even does not contains the id as part of the resource description seams an invalid response.","commit_id":"3550230fefb368e7db91aa6b45a786fb71ebc844"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"3a9461d94b97a0692bc3280c9f9a810ef72bc0e0","unresolved":false,"context_lines":[{"line_number":170,"context_line":"    def is_resource_deleted(self, id):"},{"line_number":171,"context_line":"        try:"},{"line_number":172,"context_line":"            vol \u003d self.get_volume(id)"},{"line_number":173,"context_line":"            if vol is None:"},{"line_number":174,"context_line":"                return True"},{"line_number":175,"context_line":"        except exceptions.NotFound:"},{"line_number":176,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_a574d8d0","line":173,"in_reply_to":"1ae5cdf2_a89a1b6c","updated":"2014-06-24 21:10:31.000000000","message":"Why is this a bug checking to make sure a volume is deleted?  This seems perfectly fine.","commit_id":"3550230fefb368e7db91aa6b45a786fb71ebc844"}],"tempest/stress/driver.py":[{"author":{"_account_id":6683,"name":"Pavel Sedlák","email":"psedlak@redhat.com","username":"psedlak"},"change_message_id":"6f8261e34e70238c548236378d256daf8a7d0f7d","unresolved":false,"context_lines":[{"line_number":214,"context_line":"        # NOTE(mkoderer): only the parent should register the handler"},{"line_number":215,"context_line":"        signal.signal(signal.SIGCHLD, sigchld_handler)"},{"line_number":216,"context_line":"    start_time \u003d time.time()"},{"line_number":217,"context_line":"    end_time \u003d start_time + duration"},{"line_number":218,"context_line":"    had_errors \u003d False"},{"line_number":219,"context_line":"    while True:"},{"line_number":220,"context_line":"        if max_runs is None:"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_3747f21e","line":217,"range":{"start_line":217,"start_character":4,"end_line":217,"end_character":12},"updated":"2014-07-24 16:43:43.000000000","message":"end_time seems unused here","commit_id":"3550230fefb368e7db91aa6b45a786fb71ebc844"},{"author":{"_account_id":6683,"name":"Pavel Sedlák","email":"psedlak@redhat.com","username":"psedlak"},"change_message_id":"6f8261e34e70238c548236378d256daf8a7d0f7d","unresolved":false,"context_lines":[{"line_number":257,"context_line":""},{"line_number":258,"context_line":"    # do the cleanup first so we can see"},{"line_number":259,"context_line":"    # the stats at the end of the log"},{"line_number":260,"context_line":"    if not had_errors:"},{"line_number":261,"context_line":"        LOG.info(\"cleaning up\")"},{"line_number":262,"context_line":"        cleanup.cleanup()"},{"line_number":263,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_fd99db6d","line":260,"updated":"2014-07-24 16:43:43.000000000","message":"below it depends also on CONF.stress.full_clean_stack,\nthat is ok to be ignored here?\n\nalso i would prefer to avoud the duplication here as a whole.\n\nmaybe following structure or like so, could be better here?:\n\n had_errors \u003d any([p[\u0027statistics\u0027][\u0027fails\u0027] for p in processes])\n\n if not had_errors and fullcleanstack:\n   cleanup //section moved from the bottom here\n\n for process in processes:\n  sum_runs, sum_fails, combine_stats\n  print_stats\n  LOG.info( Proc summary )\n\n print_total_stats\n print_total_summary\n print_total_duration\n return 1 if had_errors else 0","commit_id":"3550230fefb368e7db91aa6b45a786fb71ebc844"}],"tempest/stress/run_stress.py":[{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"19e5f1a165fe788ff69abeded5e28736815834f2","unresolved":false,"context_lines":[{"line_number":120,"context_line":"if __name__ \u003d\u003d \"__main__\":"},{"line_number":121,"context_line":"    try:"},{"line_number":122,"context_line":"        sys.exit(main(parser.parse_args()))"},{"line_number":123,"context_line":"    except Exception as e:"},{"line_number":124,"context_line":"        LOG.exception(\"Failure in the stress test framework: %s\", e)"},{"line_number":125,"context_line":"        print(e)"},{"line_number":126,"context_line":"        sys.exit(1)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7adec928_85264167","line":123,"updated":"2014-05-07 16:47:22.000000000","message":"The LOG.exception itself logs the current exception, so the \n%s\", e)\u0027 is not required.\n\nI see the print is useful if the error happens before the logging configured, or the log config itself is the buggy.","commit_id":"78c8b1012d96408577724a08e6ffbc85281b9466"},{"author":{"_account_id":6683,"name":"Pavel Sedlák","email":"psedlak@redhat.com","username":"psedlak"},"change_message_id":"6f8261e34e70238c548236378d256daf8a7d0f7d","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        sys.exit(main(parser.parse_args()))"},{"line_number":123,"context_line":"    except Exception as e:"},{"line_number":124,"context_line":"        LOG.exception(\"Failure in the stress test framework\")"},{"line_number":125,"context_line":"        print(e)"},{"line_number":126,"context_line":"        sys.exit(1)"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_a2d2e231","line":125,"range":{"start_line":125,"start_character":8,"end_line":125,"end_character":13},"updated":"2014-07-24 16:43:43.000000000","message":"is print needed here?\n\nLOG.exception should already log content of the `e`, including traceback (unlike print), if not provided (e), it is automatically obtained from the stack (so should be used in except block) https://docs.python.org/2/library/logging.html#logging.exception","commit_id":"3550230fefb368e7db91aa6b45a786fb71ebc844"}],"tempest/stress/stats.py":[{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"5dddd2011f160f020b99795fb171bc2271788430","unresolved":false,"context_lines":[{"line_number":21,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"def singleton(class_):"},{"line_number":25,"context_line":"    \"\"\"Create and ensure a singleton for an object."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    This ensures that only 1 instance of an class"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_689e5356","line":24,"updated":"2014-06-16 16:50:20.000000000","message":"I think we already have a singleton decorator.","commit_id":"3550230fefb368e7db91aa6b45a786fb71ebc844"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"7a82a27f49f1c50bdd911465a84187f93879ba7b","unresolved":false,"context_lines":[{"line_number":21,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"def singleton(class_):"},{"line_number":25,"context_line":"    \"\"\"Create and ensure a singleton for an object."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    This ensures that only 1 instance of an class"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_b59a5a61","line":24,"in_reply_to":"1ae5cdf2_45bdd466","updated":"2014-07-02 05:30:19.000000000","message":"tempest/common/utils/misc.py","commit_id":"3550230fefb368e7db91aa6b45a786fb71ebc844"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"3a9461d94b97a0692bc3280c9f9a810ef72bc0e0","unresolved":false,"context_lines":[{"line_number":21,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"def singleton(class_):"},{"line_number":25,"context_line":"    \"\"\"Create and ensure a singleton for an object."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    This ensures that only 1 instance of an class"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_45bdd466","line":24,"in_reply_to":"1ae5cdf2_689e5356","updated":"2014-06-24 21:10:31.000000000","message":"where?","commit_id":"3550230fefb368e7db91aa6b45a786fb71ebc844"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"5dddd2011f160f020b99795fb171bc2271788430","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    return class_w"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"@singleton"},{"line_number":57,"context_line":"class Stats(object):"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    \"\"\"This keeps track of the success/failure rate stats."}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_c82927f4","line":56,"updated":"2014-06-16 16:50:20.000000000","message":"Do we really need to use a singleton ?\nCannot bi initialized in the ``main``.","commit_id":"3550230fefb368e7db91aa6b45a786fb71ebc844"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"3a9461d94b97a0692bc3280c9f9a810ef72bc0e0","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    return class_w"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"@singleton"},{"line_number":57,"context_line":"class Stats(object):"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    \"\"\"This keeps track of the success/failure rate stats."}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_e590a0ef","line":56,"in_reply_to":"1ae5cdf2_c82927f4","updated":"2014-06-24 21:10:31.000000000","message":"If we don\u0027t use a singleton, we can\u0027t collect global statistics for all of the threads.","commit_id":"3550230fefb368e7db91aa6b45a786fb71ebc844"},{"author":{"_account_id":6683,"name":"Pavel Sedlák","email":"psedlak@redhat.com","username":"psedlak"},"change_message_id":"6f8261e34e70238c548236378d256daf8a7d0f7d","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    return class_w"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"@singleton"},{"line_number":57,"context_line":"class Stats(object):"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    \"\"\"This keeps track of the success/failure rate stats."}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_e2abfa6e","line":56,"in_reply_to":"1ae5cdf2_e590a0ef","updated":"2014-07-24 16:43:43.000000000","message":"why? i guess afazekas points to the way this is instantiated once somewhere in the \u0027\u0027main\u0027\u0027 (shared) section and passed/applied to all the thread results (...)","commit_id":"3550230fefb368e7db91aa6b45a786fb71ebc844"},{"author":{"_account_id":6683,"name":"Pavel Sedlák","email":"psedlak@redhat.com","username":"psedlak"},"change_message_id":"6f8261e34e70238c548236378d256daf8a7d0f7d","unresolved":false,"context_lines":[{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    \"\"\""},{"line_number":134,"context_line":"    def __init__(self, whitelist\u003d[]):"},{"line_number":135,"context_line":"        \"\"\"Initialize stat tracing with whitelisted methods."},{"line_number":136,"context_line":"        When white listed methods are found in the stack trace,"},{"line_number":137,"context_line":"        then no statistics are gathered."},{"line_number":138,"context_line":"        whitelist : list of method names to ignore in statistics tracking"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_02e8eeb1","line":135,"updated":"2014-07-24 16:43:43.000000000","message":"H405: missing empty line after first doc-comment line","commit_id":"3550230fefb368e7db91aa6b45a786fb71ebc844"},{"author":{"_account_id":6683,"name":"Pavel Sedlák","email":"psedlak@redhat.com","username":"psedlak"},"change_message_id":"6f8261e34e70238c548236378d256daf8a7d0f7d","unresolved":false,"context_lines":[{"line_number":151,"context_line":"    def decorate(self, cls):"},{"line_number":152,"context_line":"        \"\"\"Return the class with its public methods decorated."},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        Find the public methods defind by directly by the child class and"},{"line_number":155,"context_line":"        wrap them to track successfull and unsucessful calls."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_62444ab8","line":154,"updated":"2014-07-24 16:43:43.000000000","message":"by directly by","commit_id":"3550230fefb368e7db91aa6b45a786fb71ebc844"},{"author":{"_account_id":6683,"name":"Pavel Sedlák","email":"psedlak@redhat.com","username":"psedlak"},"change_message_id":"6f8261e34e70238c548236378d256daf8a7d0f7d","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        \"\"\"Return the class with its public methods decorated."},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        Find the public methods defind by directly by the child class and"},{"line_number":155,"context_line":"        wrap them to track successfull and unsucessful calls."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"        \"\"\""},{"line_number":158,"context_line":"        for name, m in inspect.getmembers(cls, inspect.ismethod):"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_a27822f9","line":155,"updated":"2014-07-24 16:43:43.000000000","message":"unsuccessful\n\n(vim :set spell)","commit_id":"3550230fefb368e7db91aa6b45a786fb71ebc844"}],"tempest/stress/stressaction.py":[{"author":{"_account_id":6683,"name":"Pavel Sedlák","email":"psedlak@redhat.com","username":"psedlak"},"change_message_id":"6f8261e34e70238c548236378d256daf8a7d0f7d","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def setUpTracking(self, trace):"},{"line_number":42,"context_line":"        \"\"\"add stats tracking decorator to services.\"\"\""},{"line_number":43,"context_line":"        if self.manager:"},{"line_number":44,"context_line":"            if self.manager.servers_client:"},{"line_number":45,"context_line":"                trace.decorate(self.manager.servers_client)"},{"line_number":46,"context_line":"            if self.manager.network_client:"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_9d361fb3","line":43,"updated":"2014-07-24 16:43:43.000000000","message":"isn\u0027t it possible to somehow loop over the manager clients, or would it be worth of adding?","commit_id":"3550230fefb368e7db91aa6b45a786fb71ebc844"}]}
