)]}'
{"rally/api.py":[{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"a348b67ec4b51af33fff2844ca351e666b54d6cc","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        benchmark_engine.validate()"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    @classmethod"},{"line_number":171,"context_line":"    def start(cls, deployment, config, task\u003dNone, stop_on_sla\u003dFalse):"},{"line_number":172,"context_line":"        \"\"\"Start a task."},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"        Task is a list of benchmarks that will be called one by one, results of"}],"source_content_type":"text/x-python","patch_set":25,"id":"da86d52c_8b0ae0cf","line":171,"updated":"2015-02-12 22:40:10.000000000","message":"stop_on_sla_failure otherwise it\u0027s absolutely unclear","commit_id":"fa149c955aa3491ce251bda24461d64a94f6e372"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"1d3c9968b0ec4b3d58560d7715fd9c5512f76ae9","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        benchmark_engine.validate()"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    @classmethod"},{"line_number":171,"context_line":"    def start(cls, deployment, config, task\u003dNone, stop_on_sla\u003dFalse):"},{"line_number":172,"context_line":"        \"\"\"Start a task."},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"        Task is a list of benchmarks that will be called one by one, results of"}],"source_content_type":"text/x-python","patch_set":25,"id":"da86d52c_111e22bb","line":171,"in_reply_to":"da86d52c_8b0ae0cf","updated":"2015-02-13 00:15:21.000000000","message":"Agreed on --abort-on-sla-failure to be consistent with the runner.abort() naming","commit_id":"fa149c955aa3491ce251bda24461d64a94f6e372"}],"rally/benchmark/engine.py":[{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"8b4d6d24769db4691dcd756c59aed0d48e67bc25","unresolved":false,"context_lines":[{"line_number":272,"context_line":"            else:"},{"line_number":273,"context_line":"                time.sleep(0.1)"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"        sla_results \u003d sla_checker.results()"},{"line_number":276,"context_line":"        task.append_results(key, {\"raw\": results,"},{"line_number":277,"context_line":"                                  \"load_duration\": self.duration,"},{"line_number":278,"context_line":"                                  \"full_duration\": self.full_duration,"}],"source_content_type":"text/x-python","patch_set":12,"id":"da86d52c_07122958","line":275,"updated":"2015-02-09 10:33:50.000000000","message":"please don\u0027t create useless variables it makes code reading harder. \n\nwhy not just? \n\n  task.append_results(key, {\"raw\": results,\n                            \"load_duration\": self.duration,\n                            \"full_duration\": self.full_duration,\n                            \"sla\": sla_checker.results()})","commit_id":"4aa84587c47432323437e39cd8deab448978624a"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"bd9d57683d09b4d2ee5247fbe551eae1be56c36b","unresolved":false,"context_lines":[{"line_number":272,"context_line":"            else:"},{"line_number":273,"context_line":"                time.sleep(0.1)"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"        sla_results \u003d sla_checker.results()"},{"line_number":276,"context_line":"        task.append_results(key, {\"raw\": results,"},{"line_number":277,"context_line":"                                  \"load_duration\": self.duration,"},{"line_number":278,"context_line":"                                  \"full_duration\": self.full_duration,"}],"source_content_type":"text/x-python","patch_set":12,"id":"da86d52c_93e81b18","line":275,"in_reply_to":"da86d52c_07122958","updated":"2015-02-09 11:36:11.000000000","message":"Done","commit_id":"4aa84587c47432323437e39cd8deab448978624a"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"8a8b7bd38aab77839073e2ecd44984471536f678","unresolved":false,"context_lines":[{"line_number":224,"context_line":"                is_done \u003d threading.Event()"},{"line_number":225,"context_line":"                consumer \u003d threading.Thread("},{"line_number":226,"context_line":"                    target\u003dself.consume_results,"},{"line_number":227,"context_line":"                    args\u003d(key, self.task, runner.result_queue, is_done,"},{"line_number":228,"context_line":"                          runner))"},{"line_number":229,"context_line":"                consumer.start()"},{"line_number":230,"context_line":"                context_obj \u003d self._prepare_context(kw.get(\"context\", {}),"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_53a94323","line":227,"updated":"2015-02-09 12:56:38.000000000","message":"Since we added a `runner\u0027 to args, we can remove argument `runner.result_queue\u0027 (see my comment at line 247)","commit_id":"119ad60f6d0916ac4a00c78b2e34bbbfbb4b8385"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"f65d68f3b26b3426d563bb7d1e14d20a6091bf6e","unresolved":false,"context_lines":[{"line_number":224,"context_line":"                is_done \u003d threading.Event()"},{"line_number":225,"context_line":"                consumer \u003d threading.Thread("},{"line_number":226,"context_line":"                    target\u003dself.consume_results,"},{"line_number":227,"context_line":"                    args\u003d(key, self.task, runner.result_queue, is_done,"},{"line_number":228,"context_line":"                          runner))"},{"line_number":229,"context_line":"                consumer.start()"},{"line_number":230,"context_line":"                context_obj \u003d self._prepare_context(kw.get(\"context\", {}),"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_305f5774","line":227,"in_reply_to":"da86d52c_53a94323","updated":"2015-02-09 16:58:28.000000000","message":"Done","commit_id":"119ad60f6d0916ac4a00c78b2e34bbbfbb4b8385"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"8a8b7bd38aab77839073e2ecd44984471536f678","unresolved":false,"context_lines":[{"line_number":244,"context_line":"                    consumer.join()"},{"line_number":245,"context_line":"        self.task.update_status(consts.TaskStatus.FINISHED)"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    def consume_results(self, key, task, result_queue, is_done, runner):"},{"line_number":248,"context_line":"        \"\"\"Consume scenario runner results from queue and send them to db."},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"        Has to be run from different thread simultaneously with the runner.run"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_3373efe8","line":247,"updated":"2015-02-09 12:56:38.000000000","message":"Remove `result_queue\u0027 argument from args list (this is runner.result_queue):\n\n def consume_results(self, key, task, is_done, runner):\n     ...\n     if runner.result_queue:\n         result \u003d runner.result_queue.popleft()\n     ...","commit_id":"119ad60f6d0916ac4a00c78b2e34bbbfbb4b8385"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"f65d68f3b26b3426d563bb7d1e14d20a6091bf6e","unresolved":false,"context_lines":[{"line_number":244,"context_line":"                    consumer.join()"},{"line_number":245,"context_line":"        self.task.update_status(consts.TaskStatus.FINISHED)"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    def consume_results(self, key, task, result_queue, is_done, runner):"},{"line_number":248,"context_line":"        \"\"\"Consume scenario runner results from queue and send them to db."},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"        Has to be run from different thread simultaneously with the runner.run"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_105a5383","line":247,"in_reply_to":"da86d52c_3373efe8","updated":"2015-02-09 16:58:28.000000000","message":"Done","commit_id":"119ad60f6d0916ac4a00c78b2e34bbbfbb4b8385"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"ae6198baa7cf36642b211813ec949c48419d1176","unresolved":false,"context_lines":[{"line_number":258,"context_line":"        results \u003d []"},{"line_number":259,"context_line":"        sla_checker \u003d base_sla.SLAChecker(key[\"kw\"])"},{"line_number":260,"context_line":"        while True:"},{"line_number":261,"context_line":"            if runner.result_queue and not runner.is_aborted():"},{"line_number":262,"context_line":"                result \u003d runner.result_queue.popleft()"},{"line_number":263,"context_line":"                results.append(result)"},{"line_number":264,"context_line":"                success \u003d sla_checker.add_iteration(result)"}],"source_content_type":"text/x-python","patch_set":23,"id":"da86d52c_1ace8e2e","line":261,"updated":"2015-02-11 14:55:08.000000000","message":"If we put this check \"not runner.is_aborted()\" all results after runner.abort() won\u0027t be stored. \n\nNot sure that this behaviour is what we actually would like.","commit_id":"9bc9db6fc6079821eb163383319ea0870598f890"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"c2429a887fdfb91d28d613e4f4b2e4796aa430ed","unresolved":false,"context_lines":[{"line_number":258,"context_line":"        results \u003d []"},{"line_number":259,"context_line":"        sla_checker \u003d base_sla.SLAChecker(key[\"kw\"])"},{"line_number":260,"context_line":"        while True:"},{"line_number":261,"context_line":"            if runner.result_queue and not runner.is_aborted():"},{"line_number":262,"context_line":"                result \u003d runner.result_queue.popleft()"},{"line_number":263,"context_line":"                results.append(result)"},{"line_number":264,"context_line":"                success \u003d sla_checker.add_iteration(result)"}],"source_content_type":"text/x-python","patch_set":23,"id":"da86d52c_291a29c6","line":261,"in_reply_to":"da86d52c_1ace8e2e","updated":"2015-02-11 23:22:23.000000000","message":"I think it would be more logical not to store the results after runner.abort(), because the user expects that the execution will stop after the first SLA fail. But okay, I have removed this","commit_id":"9bc9db6fc6079821eb163383319ea0870598f890"}],"rally/benchmark/sla/base.py":[{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"2dac68e9e0f30b8f5b5e7ac297b2d87cc39052ce","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        \"\"\""},{"line_number":59,"context_line":"        for sla in self.sla:"},{"line_number":60,"context_line":"            sla.add_result(result)"},{"line_number":61,"context_line":"            if not sla.sla_result().success:"},{"line_number":62,"context_line":"                self.failed \u003d True"},{"line_number":63,"context_line":"                return"},{"line_number":64,"context_line":"        self.failed \u003d False"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_1ba5af46","line":61,"updated":"2015-02-04 16:22:14.000000000","message":"This look dirty I would prefer to see something like: \n\n  if not sla.is_failed():\n    do something.","commit_id":"4f4def02193b798bc28164e8ee814a72507b585a"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"2dac68e9e0f30b8f5b5e7ac297b2d87cc39052ce","unresolved":false,"context_lines":[{"line_number":60,"context_line":"            sla.add_result(result)"},{"line_number":61,"context_line":"            if not sla.sla_result().success:"},{"line_number":62,"context_line":"                self.failed \u003d True"},{"line_number":63,"context_line":"                return"},{"line_number":64,"context_line":"        self.failed \u003d False"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def is_failed(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_1b44cfb5","line":63,"updated":"2015-02-04 16:22:14.000000000","message":"This code won\u0027t work properly. \nYou should put here: \n\n  continue","commit_id":"4f4def02193b798bc28164e8ee814a72507b585a"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"2dac68e9e0f30b8f5b5e7ac297b2d87cc39052ce","unresolved":false,"context_lines":[{"line_number":61,"context_line":"            if not sla.sla_result().success:"},{"line_number":62,"context_line":"                self.failed \u003d True"},{"line_number":63,"context_line":"                return"},{"line_number":64,"context_line":"        self.failed \u003d False"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def is_failed(self):"},{"line_number":67,"context_line":"        \"\"\"Return whether any of the SLA checks failed so far.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_9b3effd8","line":64,"updated":"2015-02-04 16:22:14.000000000","message":"This code should be written properly and in one line:\n\n  self.failed \u003d all(sla.add_result(result) for sla in  self.sla)\n\n\nadd_result() should return True/False depending on new status of sla checker.","commit_id":"4f4def02193b798bc28164e8ee814a72507b585a"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"130e54375dbf0fdaf6a4711a5c2f974bc3ac6c0c","unresolved":false,"context_lines":[{"line_number":61,"context_line":"            if not sla.sla_result().success:"},{"line_number":62,"context_line":"                self.failed \u003d True"},{"line_number":63,"context_line":"                return"},{"line_number":64,"context_line":"        self.failed \u003d False"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def is_failed(self):"},{"line_number":67,"context_line":"        \"\"\"Return whether any of the SLA checks failed so far.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_91db254e","line":64,"in_reply_to":"da86d52c_9b3effd8","updated":"2015-02-05 08:30:51.000000000","message":"Done","commit_id":"4f4def02193b798bc28164e8ee814a72507b585a"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"26427eb32755bd23916e453cf6f59aa4de1f8a19","unresolved":false,"context_lines":[{"line_number":208,"context_line":"        success \u003d avg \u003c\u003d self.criterion_value"},{"line_number":209,"context_line":"        msg \u003d (_(\"Maximum average duration of one iteration %ss, actual %ss\")"},{"line_number":210,"context_line":"               % (self.criterion_value, avg))"},{"line_number":211,"context_line":"        self.result \u003d SLAResult(success, msg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_9e298d39","line":211,"updated":"2015-02-04 16:30:32.000000000","message":"This interface looks quite bad. You are creating billions of SLAResult objects, and this translated lines and every time doing formatting. It will take a loot of time. \n\n\nyou should have 3 methods: \n\n\n  class BaseSLAClass(object):\n\n    def __init__(self, config):\n        self.config \u003d config\n        self.failed \u003d True\n\n    def add_iteration():\n       pass\n\n    def result(): \n       pass\n\n    def is_failed():\n      return self.failed\n\n\nnow you should use it properly: \n\n\nclass MaxAverageDuration(SLA):\n\n   def __init__(self, criterion_value):\n       super(MaxAverageDuration, self).__init__(criterion_value)\n       self.total_duration \u003d 0\n       self.total_iterations \u003d 0\n\n   def add_iteration(self, value): \n       self.total_duration +\u003d value[\"duration\"]\n       self.total_itartions +\u003d 1\n       self.avg \u003d self.total_duration / self.total_iterations\n       self.failed \u003d self.avg \u003e self.config\n\n  def result():\n      avg \u003d sefl.total_duration / self.total_iterations\n     \n     msg \u003d (_(\"Maximum average duration of one iteration %ss, actual %ss\")\n               % (self.config, self.avg))\n     return SLAResult(not self.failed, msg)","commit_id":"4f4def02193b798bc28164e8ee814a72507b585a"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"130e54375dbf0fdaf6a4711a5c2f974bc3ac6c0c","unresolved":false,"context_lines":[{"line_number":208,"context_line":"        success \u003d avg \u003c\u003d self.criterion_value"},{"line_number":209,"context_line":"        msg \u003d (_(\"Maximum average duration of one iteration %ss, actual %ss\")"},{"line_number":210,"context_line":"               % (self.criterion_value, avg))"},{"line_number":211,"context_line":"        self.result \u003d SLAResult(success, msg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_b1e029fb","line":211,"in_reply_to":"da86d52c_9e298d39","updated":"2015-02-05 08:30:51.000000000","message":"Done","commit_id":"4f4def02193b798bc28164e8ee814a72507b585a"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"8b4d6d24769db4691dcd756c59aed0d48e67bc25","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def __init__(self, config):"},{"line_number":44,"context_line":"        self.config \u003d config"},{"line_number":45,"context_line":"        self.sla \u003d []"},{"line_number":46,"context_line":"        for name, criterion_value in six.iteritems(config.get(\"sla\", {})):"},{"line_number":47,"context_line":"            self.sla.append(SLA.get_by_name(name)(criterion_value))"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"da86d52c_271c8d13","line":45,"updated":"2015-02-09 10:33:50.000000000","message":"I would prefer to call this variable more reasonable. First of all \"sla\" doesn\u0027t sound like an array. The second thing is it\u0027s not clear that it points to single instance of sla. \n\nso what about: \n\n  self.sla_instances \u003d []\n\nor\n\n  self.sla_criterias \u003d []","commit_id":"4aa84587c47432323437e39cd8deab448978624a"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"bd9d57683d09b4d2ee5247fbe551eae1be56c36b","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def __init__(self, config):"},{"line_number":44,"context_line":"        self.config \u003d config"},{"line_number":45,"context_line":"        self.sla \u003d []"},{"line_number":46,"context_line":"        for name, criterion_value in six.iteritems(config.get(\"sla\", {})):"},{"line_number":47,"context_line":"            self.sla.append(SLA.get_by_name(name)(criterion_value))"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"da86d52c_f3f797f3","line":45,"in_reply_to":"da86d52c_271c8d13","updated":"2015-02-09 11:36:11.000000000","message":"Done","commit_id":"4aa84587c47432323437e39cd8deab448978624a"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"8b4d6d24769db4691dcd756c59aed0d48e67bc25","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        \"\"\""},{"line_number":57,"context_line":"        sla_successes \u003d [sla.add_iteration(iteration) for sla in self.sla]"},{"line_number":58,"context_line":"        success \u003d all(sla_successes)"},{"line_number":59,"context_line":"        return success"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def results(self):"},{"line_number":62,"context_line":"        results \u003d []"}],"source_content_type":"text/x-python","patch_set":12,"id":"da86d52c_6772054b","line":59,"updated":"2015-02-09 10:33:50.000000000","message":"Why not one line: \n\n  return all([sla.add_iteration(iteration) for sla in self.sla])","commit_id":"4aa84587c47432323437e39cd8deab448978624a"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"bd9d57683d09b4d2ee5247fbe551eae1be56c36b","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        \"\"\""},{"line_number":57,"context_line":"        sla_successes \u003d [sla.add_iteration(iteration) for sla in self.sla]"},{"line_number":58,"context_line":"        success \u003d all(sla_successes)"},{"line_number":59,"context_line":"        return success"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def results(self):"},{"line_number":62,"context_line":"        results \u003d []"}],"source_content_type":"text/x-python","patch_set":12,"id":"da86d52c_13f8abc3","line":59,"in_reply_to":"da86d52c_6772054b","updated":"2015-02-09 11:36:11.000000000","message":"I don\u0027t like one-liners when they turn into a kind of intellectual challenge for the code reader.\n\n    sla_successes \u003d [sla.add_iteration(iteration) for sla in self.sla]\n    success \u003d all(sla_successes)\n    return success\n\nthis IMO makes it very clear for the code reader that each of the sla.add_iteration() methods returns the success status for one sla, and that the overall success is only when every single SLA is successfull. So I\u0027d prefer keeping this.","commit_id":"4aa84587c47432323437e39cd8deab448978624a"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"8b4d6d24769db4691dcd756c59aed0d48e67bc25","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def __init__(self, criterion_value):"},{"line_number":76,"context_line":"        self.criterion_value \u003d criterion_value"},{"line_number":77,"context_line":"        self.success \u003d False"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    @staticmethod"},{"line_number":80,"context_line":"    def validate(config):"}],"source_content_type":"text/x-python","patch_set":12,"id":"da86d52c_a7087d92","line":77,"updated":"2015-02-09 10:33:50.000000000","message":"IMHO by default it should be: \n\n  self.success \u003d True","commit_id":"4aa84587c47432323437e39cd8deab448978624a"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"bd9d57683d09b4d2ee5247fbe551eae1be56c36b","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def __init__(self, criterion_value):"},{"line_number":76,"context_line":"        self.criterion_value \u003d criterion_value"},{"line_number":77,"context_line":"        self.success \u003d False"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    @staticmethod"},{"line_number":80,"context_line":"    def validate(config):"}],"source_content_type":"text/x-python","patch_set":12,"id":"da86d52c_d3dc5349","line":77,"in_reply_to":"da86d52c_a7087d92","updated":"2015-02-09 11:36:11.000000000","message":"Okay, done, but we are the behaviour compared with the previous patch in this way","commit_id":"4aa84587c47432323437e39cd8deab448978624a"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"8b58abd26407548804e6c1db5ff805a6687ad349","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def __init__(self, criterion_value):"},{"line_number":76,"context_line":"        self.criterion_value \u003d criterion_value"},{"line_number":77,"context_line":"        self.success \u003d False"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    @staticmethod"},{"line_number":80,"context_line":"    def validate(config):"}],"source_content_type":"text/x-python","patch_set":12,"id":"da86d52c_d3e7f3aa","line":77,"in_reply_to":"da86d52c_d3dc5349","updated":"2015-02-09 11:37:29.000000000","message":"*we are changing","commit_id":"4aa84587c47432323437e39cd8deab448978624a"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"8b4d6d24769db4691dcd756c59aed0d48e67bc25","unresolved":false,"context_lines":[{"line_number":165,"context_line":"        return self.success"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    def result(self):"},{"line_number":168,"context_line":"        msg \u003d (_(\"Maximum failure rate percent %s%% failures, minimum failure \""},{"line_number":169,"context_line":"               \"rate percent %s%% failures, actual %s%%\") %"},{"line_number":170,"context_line":"               (self.max_percent, self.min_percent, self.error_rate))"},{"line_number":171,"context_line":"        return SLAResult(self.success, msg)"}],"source_content_type":"text/x-python","patch_set":12,"id":"da86d52c_82ba8708","line":168,"updated":"2015-02-09 10:33:50.000000000","message":"Okay as you are refactoring this piece. I dislike this message it\u0027s too long and it\u0027s too hard to understand it. \n\nWhat about something shorter, \n\n  Failure rate criteria min_value \u003c\u003d actual_failure_rate \u003c\u003d max_value Passed|Failed","commit_id":"4aa84587c47432323437e39cd8deab448978624a"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"bd9d57683d09b4d2ee5247fbe551eae1be56c36b","unresolved":false,"context_lines":[{"line_number":165,"context_line":"        return self.success"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    def result(self):"},{"line_number":168,"context_line":"        msg \u003d (_(\"Maximum failure rate percent %s%% failures, minimum failure \""},{"line_number":169,"context_line":"               \"rate percent %s%% failures, actual %s%%\") %"},{"line_number":170,"context_line":"               (self.max_percent, self.min_percent, self.error_rate))"},{"line_number":171,"context_line":"        return SLAResult(self.success, msg)"}],"source_content_type":"text/x-python","patch_set":12,"id":"da86d52c_d3e613e8","line":168,"in_reply_to":"da86d52c_82ba8708","updated":"2015-02-09 11:36:11.000000000","message":"Done","commit_id":"4aa84587c47432323437e39cd8deab448978624a"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"8b4d6d24769db4691dcd756c59aed0d48e67bc25","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        return self.success"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    def result(self):"},{"line_number":191,"context_line":"        msg \u003d (_(\"Maximum seconds per iteration %ss, actual %ss\") %"},{"line_number":192,"context_line":"                (self.criterion_value, self.max_iteration_time))"},{"line_number":193,"context_line":"        return SLAResult(self.success, msg)"},{"line_number":194,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"da86d52c_42ac0f36","line":191,"updated":"2015-02-09 10:33:50.000000000","message":"Use here the same approach as above to create a bit easier to read message","commit_id":"4aa84587c47432323437e39cd8deab448978624a"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"bd9d57683d09b4d2ee5247fbe551eae1be56c36b","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        return self.success"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    def result(self):"},{"line_number":191,"context_line":"        msg \u003d (_(\"Maximum seconds per iteration %ss, actual %ss\") %"},{"line_number":192,"context_line":"                (self.criterion_value, self.max_iteration_time))"},{"line_number":193,"context_line":"        return SLAResult(self.success, msg)"},{"line_number":194,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"da86d52c_13d0abf6","line":191,"in_reply_to":"da86d52c_42ac0f36","updated":"2015-02-09 11:36:11.000000000","message":"Done","commit_id":"4aa84587c47432323437e39cd8deab448978624a"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"8b4d6d24769db4691dcd756c59aed0d48e67bc25","unresolved":false,"context_lines":[{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    def result(self):"},{"line_number":217,"context_line":"        msg \u003d (_(\"Maximum average duration of one iteration %ss, actual %ss\")"},{"line_number":218,"context_line":"               % (self.criterion_value, self.avg))"},{"line_number":219,"context_line":"        return SLAResult(self.success, msg)"}],"source_content_type":"text/x-python","patch_set":12,"id":"da86d52c_e26c230b","line":218,"updated":"2015-02-09 10:33:50.000000000","message":"here the same","commit_id":"4aa84587c47432323437e39cd8deab448978624a"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"bd9d57683d09b4d2ee5247fbe551eae1be56c36b","unresolved":false,"context_lines":[{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    def result(self):"},{"line_number":217,"context_line":"        msg \u003d (_(\"Maximum average duration of one iteration %ss, actual %ss\")"},{"line_number":218,"context_line":"               % (self.criterion_value, self.avg))"},{"line_number":219,"context_line":"        return SLAResult(self.success, msg)"}],"source_content_type":"text/x-python","patch_set":12,"id":"da86d52c_33cdaf5e","line":218,"in_reply_to":"da86d52c_e26c230b","updated":"2015-02-09 11:36:11.000000000","message":"Done","commit_id":"4aa84587c47432323437e39cd8deab448978624a"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"8a8b7bd38aab77839073e2ecd44984471536f678","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def __init__(self, config):"},{"line_number":44,"context_line":"        self.config \u003d config"},{"line_number":45,"context_line":"        self.sla_criteria \u003d []"},{"line_number":46,"context_line":"        for name, criterion_value in six.iteritems(config.get(\"sla\", {})):"},{"line_number":47,"context_line":"            self.sla_criteria.append(SLA.get_by_name(name)(criterion_value))"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_f3dcf61a","line":45,"updated":"2015-02-09 12:56:38.000000000","message":"I suggest to construct `self.sla_criteria\u0027 with single list-comprehension statement:\n\n self.sla_criteria \u003d [SLA.get_by_name(name)(criterion)\n                      for name, criterion in config.get(\"sla\", {}).items()]\n\nNOTE: use items() here because we need iteritems() only in case of very long values list (memory usage optimization) or expecting interruption during the cycling. So items() will work perfect here","commit_id":"119ad60f6d0916ac4a00c78b2e34bbbfbb4b8385"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"f65d68f3b26b3426d563bb7d1e14d20a6091bf6e","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def __init__(self, config):"},{"line_number":44,"context_line":"        self.config \u003d config"},{"line_number":45,"context_line":"        self.sla_criteria \u003d []"},{"line_number":46,"context_line":"        for name, criterion_value in six.iteritems(config.get(\"sla\", {})):"},{"line_number":47,"context_line":"            self.sla_criteria.append(SLA.get_by_name(name)(criterion_value))"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_50884bc6","line":45,"in_reply_to":"da86d52c_f3dcf61a","updated":"2015-02-09 16:58:28.000000000","message":"Done","commit_id":"119ad60f6d0916ac4a00c78b2e34bbbfbb4b8385"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"8a8b7bd38aab77839073e2ecd44984471536f678","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        sla_successes \u003d [sla.add_iteration(iteration) for sla in"},{"line_number":58,"context_line":"                         self.sla_criteria]"},{"line_number":59,"context_line":"        success \u003d all(sla_successes)"},{"line_number":60,"context_line":"        return success"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def results(self):"},{"line_number":63,"context_line":"        results \u003d []"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_336dae05","line":60,"updated":"2015-02-09 12:56:38.000000000","message":"Just `return all(sla_successes)\u0027","commit_id":"119ad60f6d0916ac4a00c78b2e34bbbfbb4b8385"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"f65d68f3b26b3426d563bb7d1e14d20a6091bf6e","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        sla_successes \u003d [sla.add_iteration(iteration) for sla in"},{"line_number":58,"context_line":"                         self.sla_criteria]"},{"line_number":59,"context_line":"        success \u003d all(sla_successes)"},{"line_number":60,"context_line":"        return success"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def results(self):"},{"line_number":63,"context_line":"        results \u003d []"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_70738fe7","line":60,"in_reply_to":"da86d52c_336dae05","updated":"2015-02-09 16:58:28.000000000","message":"Done","commit_id":"119ad60f6d0916ac4a00c78b2e34bbbfbb4b8385"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"865b2056916442557d97b046663c8f18ba16ebb6","unresolved":false,"context_lines":[{"line_number":165,"context_line":"        return self.success"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    def result(self):"},{"line_number":168,"context_line":"        success_str \u003d \"Passed\" if self.success else \"Failed\""},{"line_number":169,"context_line":"        msg \u003d (_(\"Failure rate criteria %s%% \u003c\u003d %s%% \u003c\u003d %s%% %s\") %"},{"line_number":170,"context_line":"               (self.min_percent, self.error_rate, self.max_percent,"},{"line_number":171,"context_line":"                success_str))"}],"source_content_type":"text/x-python","patch_set":16,"id":"da86d52c_16422110","line":168,"updated":"2015-02-10 12:08:50.000000000","message":"Just a recommendation, if there will be further patch sets:\n\nThis line repeated several times, so we can create reusable method:\n\n class SLA(object):\n     def success_status(self):\n         return self.success and \"Passed\" or \"Failed\"\n     # Or even this, in single line:\n     # success_status \u003d lambda ins: ins.success and \"Passed\" or \"Failed\"\n\n\nThen use this:\n\n    ...\n    msg \u003d (_(\"Failure rate criteria %s%% \u003c\u003d %s%% \u003c\u003d %s%% %s\") %\n               (self.min_percent, self.error_rate, self.max_percent,\n                self.success_status()))","commit_id":"d35877abe9535b64c05926c6d6c628dfd1f44adb"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"51268c25fe6fdaaaef06cca1dbf2f91b9e460cf3","unresolved":false,"context_lines":[{"line_number":165,"context_line":"        return self.success"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    def result(self):"},{"line_number":168,"context_line":"        success_str \u003d \"Passed\" if self.success else \"Failed\""},{"line_number":169,"context_line":"        msg \u003d (_(\"Failure rate criteria %s%% \u003c\u003d %s%% \u003c\u003d %s%% %s\") %"},{"line_number":170,"context_line":"               (self.min_percent, self.error_rate, self.max_percent,"},{"line_number":171,"context_line":"                success_str))"}],"source_content_type":"text/x-python","patch_set":16,"id":"da86d52c_901eec0a","line":168,"in_reply_to":"da86d52c_16422110","updated":"2015-02-11 08:31:43.000000000","message":"Done","commit_id":"d35877abe9535b64c05926c6d6c628dfd1f44adb"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"ae6198baa7cf36642b211813ec949c48419d1176","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        \"\"\""},{"line_number":57,"context_line":"        sla_successes \u003d [sla.add_iteration(iteration) for sla in"},{"line_number":58,"context_line":"                         self.sla_criteria]"},{"line_number":59,"context_line":"        return all(sla_successes)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def results(self):"},{"line_number":62,"context_line":"        results \u003d []"}],"source_content_type":"text/x-python","patch_set":23,"id":"da86d52c_357a84f1","line":59,"updated":"2015-02-11 14:55:08.000000000","message":"One funking line please here\n\n  return  all([sla.add_iteration(iteration) for sla in self.sla_critera])","commit_id":"9bc9db6fc6079821eb163383319ea0870598f890"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"c2429a887fdfb91d28d613e4f4b2e4796aa430ed","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        \"\"\""},{"line_number":57,"context_line":"        sla_successes \u003d [sla.add_iteration(iteration) for sla in"},{"line_number":58,"context_line":"                         self.sla_criteria]"},{"line_number":59,"context_line":"        return all(sla_successes)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def results(self):"},{"line_number":62,"context_line":"        results \u003d []"}],"source_content_type":"text/x-python","patch_set":23,"id":"da86d52c_e9f57183","line":59,"in_reply_to":"da86d52c_357a84f1","updated":"2015-02-11 23:22:23.000000000","message":"Why are you so nervous about these lines?? I\u0027ve already explained in patchset 12 why I think that 2-3 lines would be more readable here than one line. But okay, I will remove it if you insist.","commit_id":"9bc9db6fc6079821eb163383319ea0870598f890"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"ae6198baa7cf36642b211813ec949c48419d1176","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    def results(self):"},{"line_number":62,"context_line":"        results \u003d []"},{"line_number":63,"context_line":"        for sla in self.sla_criteria:"},{"line_number":64,"context_line":"            sla_result \u003d sla.result()"},{"line_number":65,"context_line":"            results.append({\"criterion\": sla.OPTION_NAME,"},{"line_number":66,"context_line":"                            \"success\": sla_result.success,"},{"line_number":67,"context_line":"                            \"detail\": sla_result.msg})"}],"source_content_type":"text/x-python","patch_set":23,"id":"da86d52c_95b89076","line":64,"updated":"2015-02-11 14:55:08.000000000","message":"def results(self): \n    return [sla.result() for sla in self.sla_criterai]\n\n\n and change result() method to return this dict","commit_id":"9bc9db6fc6079821eb163383319ea0870598f890"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"c2429a887fdfb91d28d613e4f4b2e4796aa430ed","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    def results(self):"},{"line_number":62,"context_line":"        results \u003d []"},{"line_number":63,"context_line":"        for sla in self.sla_criteria:"},{"line_number":64,"context_line":"            sla_result \u003d sla.result()"},{"line_number":65,"context_line":"            results.append({\"criterion\": sla.OPTION_NAME,"},{"line_number":66,"context_line":"                            \"success\": sla_result.success,"},{"line_number":67,"context_line":"                            \"detail\": sla_result.msg})"}],"source_content_type":"text/x-python","patch_set":23,"id":"da86d52c_622c2503","line":64,"in_reply_to":"da86d52c_95b89076","updated":"2015-02-11 23:22:23.000000000","message":"Done","commit_id":"9bc9db6fc6079821eb163383319ea0870598f890"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"525d4ff01a083fd0ac7af30fde9d689c3e101545","unresolved":false,"context_lines":[{"line_number":169,"context_line":"        return self.success"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    def result(self):"},{"line_number":172,"context_line":"        msg \u003d (_(\"Failure rate criteria %s%% \u003c\u003d %s%% \u003c\u003d %s%% %s\") %"},{"line_number":173,"context_line":"               (self.min_percent, self.error_rate, self.max_percent,"},{"line_number":174,"context_line":"                self.status()))"},{"line_number":175,"context_line":"        return SLAResult(self.success, msg)"}],"source_content_type":"text/x-python","patch_set":23,"id":"da86d52c_baef42b0","line":172,"updated":"2015-02-11 13:31:08.000000000","message":"%%% looks like http://rs2img.memecdn.com/mixer-in-the-eyes_o_988950.jpg","commit_id":"9bc9db6fc6079821eb163383319ea0870598f890"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"7526e8a8891e0cddad4b2f3beaaddbf154110175","unresolved":false,"context_lines":[{"line_number":169,"context_line":"        return self.success"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    def result(self):"},{"line_number":172,"context_line":"        msg \u003d (_(\"Failure rate criteria %s%% \u003c\u003d %s%% \u003c\u003d %s%% %s\") %"},{"line_number":173,"context_line":"               (self.min_percent, self.error_rate, self.max_percent,"},{"line_number":174,"context_line":"                self.status()))"},{"line_number":175,"context_line":"        return SLAResult(self.success, msg)"}],"source_content_type":"text/x-python","patch_set":23,"id":"da86d52c_b88909cc","line":172,"in_reply_to":"da86d52c_baef42b0","updated":"2015-02-11 14:40:27.000000000","message":"Lol","commit_id":"9bc9db6fc6079821eb163383319ea0870598f890"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"a348b67ec4b51af33fff2844ca351e666b54d6cc","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        :param iteration: iteration result object"},{"line_number":49,"context_line":"        \"\"\""},{"line_number":50,"context_line":"        return all(sla.add_iteration(iteration) for sla in self.sla_criteria)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def results(self):"},{"line_number":53,"context_line":"        return [sla.result() for sla in self.sla_criteria]"}],"source_content_type":"text/x-python","patch_set":25,"id":"da86d52c_6bd5ac1a","line":50,"updated":"2015-02-12 22:40:10.000000000","message":"I asked another line:\n\n  return all([sla.add_iteration(iteration) for sla in self.sla_criteria])\n\nTake a look at my previous comment:\n\n  https://review.openstack.org/#/c/152459/23..25/rally/benchmark/sla/base.py","commit_id":"fa149c955aa3491ce251bda24461d64a94f6e372"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"1d3c9968b0ec4b3d58560d7715fd9c5512f76ae9","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        :param iteration: iteration result object"},{"line_number":49,"context_line":"        \"\"\""},{"line_number":50,"context_line":"        return all(sla.add_iteration(iteration) for sla in self.sla_criteria)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def results(self):"},{"line_number":53,"context_line":"        return [sla.result() for sla in self.sla_criteria]"}],"source_content_type":"text/x-python","patch_set":25,"id":"da86d52c_f13b4e35","line":50,"in_reply_to":"da86d52c_6bd5ac1a","updated":"2015-02-13 00:15:21.000000000","message":"Done","commit_id":"fa149c955aa3491ce251bda24461d64a94f6e372"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"cb8ecb09f07a663363619a47d2ef44795455ee67","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        The call to add_iteration() will return True if all the SLA checks"},{"line_number":46,"context_line":"        passed, and False otherwise."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        :param iteration: iteration result object"},{"line_number":49,"context_line":"        \"\"\""},{"line_number":50,"context_line":"        return all([sla.add_iteration(iteration) for sla in self.sla_criteria])"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":32,"id":"da86d52c_315062d4","line":48,"updated":"2015-02-13 17:09:22.000000000","message":":param iteration: ScenarioRunnerResult","commit_id":"1fc89d3931b5c3c855b4be2655d5bd6b199eef51"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"fb8ded1455cca78c92103409b66873e7166c4768","unresolved":false,"context_lines":[{"line_number":183,"context_line":"        return self.success"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    def details(self):"},{"line_number":186,"context_line":"        return (_(\"Maximum seconds per iteration %.2fs\u003c\u003d %.2fs - %s\") %"},{"line_number":187,"context_line":"                (self.max_iteration_time, self.criterion_value, self.status()))"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":""}],"source_content_type":"text/x-python","patch_set":32,"id":"da86d52c_c623ca04","line":186,"updated":"2015-02-13 16:58:02.000000000","message":"Extra whitespace would be nice:\n\n s/%.2fs\u003c\u003d/%.2fs \u003c\u003d/\n\nThis will fix messages like:\n\n Maximum seconds per iteration 0.35s\u003c\u003d 0.30s - Failed\n                                   ^^","commit_id":"1fc89d3931b5c3c855b4be2655d5bd6b199eef51"}],"rally/cmd/commands/task.py":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"8a8b7bd38aab77839073e2ecd44984471536f678","unresolved":false,"context_lines":[{"line_number":196,"context_line":"                               is jinja2 template."},{"line_number":197,"context_line":"        :param deployment: UUID or name of a deployment"},{"line_number":198,"context_line":"        :param tag: optional tag for this task"},{"line_number":199,"context_line":"        :param do_use: if True, the new task wil be stored as the default one"},{"line_number":200,"context_line":"                       for future operations"},{"line_number":201,"context_line":"        :param stop_on_sla: if True, the execution of a benchmark scenario will"},{"line_number":202,"context_line":"                            stop when any SLA check for it fails"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_f3179652","line":199,"updated":"2015-02-09 12:56:38.000000000","message":"s/wil/will/","commit_id":"119ad60f6d0916ac4a00c78b2e34bbbfbb4b8385"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"f65d68f3b26b3426d563bb7d1e14d20a6091bf6e","unresolved":false,"context_lines":[{"line_number":196,"context_line":"                               is jinja2 template."},{"line_number":197,"context_line":"        :param deployment: UUID or name of a deployment"},{"line_number":198,"context_line":"        :param tag: optional tag for this task"},{"line_number":199,"context_line":"        :param do_use: if True, the new task wil be stored as the default one"},{"line_number":200,"context_line":"                       for future operations"},{"line_number":201,"context_line":"        :param stop_on_sla: if True, the execution of a benchmark scenario will"},{"line_number":202,"context_line":"                            stop when any SLA check for it fails"}],"source_content_type":"text/x-python","patch_set":14,"id":"da86d52c_f04e9f95","line":199,"in_reply_to":"da86d52c_f3179652","updated":"2015-02-09 16:58:28.000000000","message":"Done","commit_id":"119ad60f6d0916ac4a00c78b2e34bbbfbb4b8385"}],"tests/functional/test_cli_task.py":[{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"a348b67ec4b51af33fff2844ca351e666b54d6cc","unresolved":false,"context_lines":[{"line_number":244,"context_line":"            r\"(?P\u003ctask_id\u003e[0-9a-f\\-]{36}): started\", output)"},{"line_number":245,"context_line":"        self.assertIsNotNone(result)"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    def test_start_stop_on_sla_success(self):"},{"line_number":248,"context_line":"        times \u003d 100"},{"line_number":249,"context_line":"        cfg \u003d {"},{"line_number":250,"context_line":"            \"Dummy.dummy\": ["}],"source_content_type":"text/x-python","patch_set":25,"id":"da86d52c_956843f6","line":247,"updated":"2015-02-12 22:40:10.000000000","message":"You are testing argument \"--stop-on-sla-failure\" only for constant runner. \n\nWe should test this for all runners. (in all cases that you added)\n\nSo make from these methods base methods that accept configuration and expected value. And run it for all runners.","commit_id":"fa149c955aa3491ce251bda24461d64a94f6e372"},{"author":{"_account_id":8507,"name":"Mikhail Dubov","email":"mdubov@mirantis.com","username":"msdubov"},"change_message_id":"1d3c9968b0ec4b3d58560d7715fd9c5512f76ae9","unresolved":false,"context_lines":[{"line_number":244,"context_line":"            r\"(?P\u003ctask_id\u003e[0-9a-f\\-]{36}): started\", output)"},{"line_number":245,"context_line":"        self.assertIsNotNone(result)"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    def test_start_stop_on_sla_success(self):"},{"line_number":248,"context_line":"        times \u003d 100"},{"line_number":249,"context_line":"        cfg \u003d {"},{"line_number":250,"context_line":"            \"Dummy.dummy\": ["}],"source_content_type":"text/x-python","patch_set":25,"id":"da86d52c_31bde6b1","line":247,"in_reply_to":"da86d52c_956843f6","updated":"2015-02-13 00:15:21.000000000","message":"Done, except for constant_for_duration (since we can\u0027t check for a specific number of iterations for that runner)","commit_id":"fa149c955aa3491ce251bda24461d64a94f6e372"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"ac185b88e77ec87c810920722ca9e3d57df8d5f3","unresolved":false,"context_lines":[{"line_number":244,"context_line":"            r\"(?P\u003ctask_id\u003e[0-9a-f\\-]{36}): started\", output)"},{"line_number":245,"context_line":"        self.assertIsNotNone(result)"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    def _test_start_abort_on_sla_failure_success(self, cfg, times):"},{"line_number":248,"context_line":"        rally \u003d utils.Rally()"},{"line_number":249,"context_line":"        with mock.patch.dict(\"os.environ\", utils.TEST_ENV):"},{"line_number":250,"context_line":"            deployment_id \u003d envutils.get_global(\"RALLY_DEPLOYMENT\")"}],"source_content_type":"text/x-python","patch_set":32,"id":"da86d52c_dd5b9d53","line":247,"updated":"2015-02-13 16:11:36.000000000","message":"This doesn\u0027t generate properly results reports. But as it is not related to your code let\u0027s fix it later in some other patch.","commit_id":"1fc89d3931b5c3c855b4be2655d5bd6b199eef51"}]}
