)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"5433bed250b520c236e3b8014e82b1347a9dd935","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Matthew Treinish \u003cmtreinish@kortar.org\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-12-17 18:05:50 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add script to create a subunit streams"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This commit adds a generate_subunit.py script which is used to"},{"line_number":10,"context_line":"generate a subunit stream with a single result for a period of time."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"fa69d971_89224700","line":7,"updated":"2016-01-03 15:12:23.000000000","message":"s/streams/stream/","commit_id":"59850528e4dc3a37df33788130438626611ec698"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"5433bed250b520c236e3b8014e82b1347a9dd935","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This commit adds a generate_subunit.py script which is used to"},{"line_number":10,"context_line":"generate a subunit stream with a single result for a period of time."},{"line_number":11,"context_line":"It takes it 2 mandatory args and 2 optional to specify the start time,"},{"line_number":12,"context_line":"stop time, and optionally the status (it defaults to sucecss) and an id"},{"line_number":13,"context_line":"for test (if one isn\u0027t provided \u0027devstack\u0027 is used) The resulting stream"},{"line_number":14,"context_line":"is written to STDOUT."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"fa69d971_2921dbfb","line":11,"updated":"2016-01-03 15:12:23.000000000","message":"s/it//","commit_id":"59850528e4dc3a37df33788130438626611ec698"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"5433bed250b520c236e3b8014e82b1347a9dd935","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This commit adds a generate_subunit.py script which is used to"},{"line_number":10,"context_line":"generate a subunit stream with a single result for a period of time."},{"line_number":11,"context_line":"It takes it 2 mandatory args and 2 optional to specify the start time,"},{"line_number":12,"context_line":"stop time, and optionally the status (it defaults to sucecss) and an id"},{"line_number":13,"context_line":"for test (if one isn\u0027t provided \u0027devstack\u0027 is used) The resulting stream"},{"line_number":14,"context_line":"is written to STDOUT."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"fa69d971_491c4fc1","line":12,"updated":"2016-01-03 15:12:23.000000000","message":"\"success\"","commit_id":"59850528e4dc3a37df33788130438626611ec698"}],"tools/generate_subunit.py":[{"author":{"_account_id":17377,"name":"Federico Ressi","email":"federico.ressi@intel.com","username":"fressi"},"change_message_id":"6b5bdf0863652392f61bc2aad89ca72d1ca05ef7","unresolved":false,"context_lines":[{"line_number":20,"context_line":"import subunit"},{"line_number":21,"context_line":"from subunit import iso8601"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"start_time \u003d datetime.datetime.fromtimestamp(float(sys.argv[1])).replace("},{"line_number":24,"context_line":"    tzinfo\u003diso8601.UTC)"},{"line_number":25,"context_line":"elapsed_time \u003d datetime.timedelta(seconds\u003dint(sys.argv[2]))"},{"line_number":26,"context_line":"stop_time \u003d start_time + elapsed_time"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa69d971_59642c48","line":23,"updated":"2016-01-01 19:35:37.000000000","message":"Everything from this line until the end of the file should be recollected inside a main function called from a conditional code that calls it only when this module is launched as a script, something like following:\n\n  def main():\n      # your code goes here\n      # ...\n\n  # at the end of your script file\n  if __name__ \u003d\u003d \u0027__main__\u0027:\n      # executed only when executed as a script\n      main()\n\nThis avoid problems with many code analysis tools and is recommended in most of the cases.","commit_id":"59850528e4dc3a37df33788130438626611ec698"},{"author":{"_account_id":17377,"name":"Federico Ressi","email":"federico.ressi@intel.com","username":"fressi"},"change_message_id":"6b5bdf0863652392f61bc2aad89ca72d1ca05ef7","unresolved":false,"context_lines":[{"line_number":40,"context_line":"# Write the subunit stream"},{"line_number":41,"context_line":"output \u003d subunit.v2.StreamResultToBytes(sys.stdout)"},{"line_number":42,"context_line":"output.startTestRun()"},{"line_number":43,"context_line":"kwargs[\u0027timestamp\u0027] \u003d start_time"},{"line_number":44,"context_line":"kwargs[\u0027test_id\u0027] \u003d test_id"},{"line_number":45,"context_line":"output.status(**kwargs)"},{"line_number":46,"context_line":"# Write the end of the test"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa69d971_397a98f2","line":43,"range":{"start_line":43,"start_character":0,"end_line":43,"end_character":6},"updated":"2016-01-01 19:35:37.000000000","message":"\"Barroque\" state-based code style: please keep it simpler and cleaner and avoid intermediate state when not required:\n\n  output.status(timestamp\u003dstart_time, test_id\u003dtest_id)","commit_id":"59850528e4dc3a37df33788130438626611ec698"},{"author":{"_account_id":17377,"name":"Federico Ressi","email":"federico.ressi@intel.com","username":"fressi"},"change_message_id":"6b5bdf0863652392f61bc2aad89ca72d1ca05ef7","unresolved":false,"context_lines":[{"line_number":46,"context_line":"# Write the end of the test"},{"line_number":47,"context_line":"kwargs[\u0027test_status\u0027] \u003d status"},{"line_number":48,"context_line":"kwargs[\u0027timestamp\u0027] \u003d stop_time"},{"line_number":49,"context_line":"output.status(**kwargs)"},{"line_number":50,"context_line":"output.stopTestRun()"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa69d971_d969fc26","line":49,"range":{"start_line":49,"start_character":0,"end_line":49,"end_character":6},"updated":"2016-01-01 19:35:37.000000000","message":"output.status(test_status\u003dstatus, timestamp\u003dstop_time)","commit_id":"59850528e4dc3a37df33788130438626611ec698"}]}
