)]}'
{"rally-jobs/rally.yaml":[{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"3fd5eda15029df0550b476c0d029b5859bb6185a","unresolved":false,"context_lines":[{"line_number":322,"context_line":"        sleep: 0.1"},{"line_number":323,"context_line":"      runner:"},{"line_number":324,"context_line":"        type: \"rps\""},{"line_number":325,"context_line":"        times: 40"},{"line_number":326,"context_line":"        rps: 0.5"},{"line_number":327,"context_line":"      sla:"},{"line_number":328,"context_line":"        failure_rate:"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"3acd31a7_a3f4e8f1","line":325,"updated":"2015-05-03 08:50:33.000000000","message":"This dummy test adds 80 seconds on each run! in gates.\nWe don\u0027t have so much time in gates. \n\n  Put here times: 5","commit_id":"241e952ba6e18d0a514d5bcf573c96624faf17f2"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"3fd5eda15029df0550b476c0d029b5859bb6185a","unresolved":false,"context_lines":[{"line_number":333,"context_line":"        sleep: 0.1"},{"line_number":334,"context_line":"      runner:"},{"line_number":335,"context_line":"        type: \"rps\""},{"line_number":336,"context_line":"        times: 10"},{"line_number":337,"context_line":"        rps: 0.2"},{"line_number":338,"context_line":"      sla:"},{"line_number":339,"context_line":"        failure_rate:"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"3acd31a7_43dab479","line":336,"updated":"2015-05-03 08:50:33.000000000","message":"put here times 5","commit_id":"241e952ba6e18d0a514d5bcf573c96624faf17f2"}],"rally/benchmark/runners/base.py":[{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"a19ae026dd782ca816376bcca8328f834d9a5a08","unresolved":false,"context_lines":[{"line_number":244,"context_line":"        self.aborted.set()"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    def _create_process_pool(self, processes_to_start, worker_process,"},{"line_number":247,"context_line":"                             worker_args_gen, add_kwargs\u003dNone):"},{"line_number":248,"context_line":"        \"\"\"Create a pool of processes with some defined target function."},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"        :param processes_to_start: number of processes to create in the pool"}],"source_content_type":"text/x-python","patch_set":6,"id":"3ab451fb_0809bd2c","line":247,"updated":"2015-04-17 19:22:04.000000000","message":"This variable need to be described in docstring","commit_id":"3add1a7c45bff1760589614607f2d8d99b0fba42"},{"author":{"_account_id":7126,"name":"Vadim Rovachev","email":"vrovachev@mirantis.com","username":"vrovachev"},"change_message_id":"568caa8687d7076845de4bd4bdb4c97865ee2640","unresolved":false,"context_lines":[{"line_number":244,"context_line":"        self.aborted.set()"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    def _create_process_pool(self, processes_to_start, worker_process,"},{"line_number":247,"context_line":"                             worker_args_gen, add_kwargs\u003dNone):"},{"line_number":248,"context_line":"        \"\"\"Create a pool of processes with some defined target function."},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"        :param processes_to_start: number of processes to create in the pool"}],"source_content_type":"text/x-python","patch_set":6,"id":"dac4157f_d4f56dcb","line":247,"in_reply_to":"3ab451fb_0809bd2c","updated":"2015-04-21 13:39:23.000000000","message":"Done","commit_id":"3add1a7c45bff1760589614607f2d8d99b0fba42"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"3fd5eda15029df0550b476c0d029b5859bb6185a","unresolved":false,"context_lines":[{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    @staticmethod"},{"line_number":247,"context_line":"    def _create_process_pool(processes_to_start, worker_process,"},{"line_number":248,"context_line":"                             worker_args_gen, add_kwargs\u003dNone):"},{"line_number":249,"context_line":"        \"\"\"Create a pool of processes with some defined target function."},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"        :param processes_to_start: number of processes to create in the pool"}],"source_content_type":"text/x-python","patch_set":8,"id":"3acd31a7_03e4bc38","line":248,"updated":"2015-05-03 08:50:33.000000000","message":"Remove this and pass always this information to all runners.","commit_id":"241e952ba6e18d0a514d5bcf573c96624faf17f2"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"02c4c60e6802891d21c9a15d7e872d6b6a690aa9","unresolved":false,"context_lines":[{"line_number":263,"context_line":"                         \"processes_counter\": i}"},{"line_number":264,"context_line":"            process \u003d multiprocessing.Process(target\u003dworker_process,"},{"line_number":265,"context_line":"                                              args\u003dnext(worker_args_gen),"},{"line_number":266,"context_line":"                                              kwargs\u003dkwrgs)"},{"line_number":267,"context_line":"            process.start()"},{"line_number":268,"context_line":"            process_pool.append(process)"},{"line_number":269,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3acd31a7_06172aee","line":266,"updated":"2015-05-03 09:06:37.000000000","message":"Let\u0027s do next: \n\n  for i in range(processes_to_start):\n    kwargs \u003d {\"info\": {\"amount_of_processes\": processes_to_start, \"process_id\": i}\n    process \u003d multiprocessing.Process(target\u003dworker_process,\n                                              args\u003dnext(worker_args_gen),\n\t                                      kwargs\u003dkwargs}","commit_id":"241e952ba6e18d0a514d5bcf573c96624faf17f2"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"42b88961420eff2bb422abf47cc4d6e3fd8db953","unresolved":false,"context_lines":[{"line_number":243,"context_line":"        \"\"\"Abort the execution of further benchmark scenario iterations.\"\"\""},{"line_number":244,"context_line":"        self.aborted.set()"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    @staticmethod"},{"line_number":247,"context_line":"    def _create_process_pool(processes_to_start, worker_process,"},{"line_number":248,"context_line":"                             worker_args_gen):"},{"line_number":249,"context_line":"        \"\"\"Create a pool of processes with some defined target function."}],"source_content_type":"text/x-python","patch_set":14,"id":"3acd31a7_ecc3b655","line":246,"updated":"2015-05-05 15:23:53.000000000","message":"Why you think it should be \u0027staicmethod\u0027?","commit_id":"bc74f263e42c1f02ffaecba15fadf5dba09e1327"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"62ec3a3740cc5e9b557ec780b21fbaf679599de7","unresolved":false,"context_lines":[{"line_number":243,"context_line":"        \"\"\"Abort the execution of further benchmark scenario iterations.\"\"\""},{"line_number":244,"context_line":"        self.aborted.set()"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    @staticmethod"},{"line_number":247,"context_line":"    def _create_process_pool(processes_to_start, worker_process,"},{"line_number":248,"context_line":"                             worker_args_gen):"},{"line_number":249,"context_line":"        \"\"\"Create a pool of processes with some defined target function."}],"source_content_type":"text/x-python","patch_set":14,"id":"3acd31a7_51ab5a75","line":246,"in_reply_to":"3acd31a7_22ce5582","updated":"2015-05-05 18:02:07.000000000","message":"Thanks","commit_id":"bc74f263e42c1f02ffaecba15fadf5dba09e1327"},{"author":{"_account_id":7126,"name":"Vadim Rovachev","email":"vrovachev@mirantis.com","username":"vrovachev"},"change_message_id":"98c1fb59cbe3785ca6eb9bb5df1f19591b8a77bc","unresolved":false,"context_lines":[{"line_number":243,"context_line":"        \"\"\"Abort the execution of further benchmark scenario iterations.\"\"\""},{"line_number":244,"context_line":"        self.aborted.set()"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    @staticmethod"},{"line_number":247,"context_line":"    def _create_process_pool(processes_to_start, worker_process,"},{"line_number":248,"context_line":"                             worker_args_gen):"},{"line_number":249,"context_line":"        \"\"\"Create a pool of processes with some defined target function."}],"source_content_type":"text/x-python","patch_set":14,"id":"3acd31a7_22ce5582","line":246,"in_reply_to":"3acd31a7_ecc3b655","updated":"2015-05-05 15:50:41.000000000","message":"Because this method is static. We don\u0027t use \u0027self\u0027 in method.","commit_id":"bc74f263e42c1f02ffaecba15fadf5dba09e1327"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"42b88961420eff2bb422abf47cc4d6e3fd8db953","unresolved":false,"context_lines":[{"line_number":256,"context_line":"        process_pool \u003d collections.deque()"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"        for i in range(processes_to_start):"},{"line_number":259,"context_line":"            kwrgs \u003d {\"processes_to_start\": processes_to_start,"},{"line_number":260,"context_line":"                     \"processes_counter\": i}"},{"line_number":261,"context_line":"            process \u003d multiprocessing.Process(target\u003dworker_process,"},{"line_number":262,"context_line":"                                              args\u003dnext(worker_args_gen),"},{"line_number":263,"context_line":"                                              kwargs\u003d{\"info\": kwrgs})"},{"line_number":264,"context_line":"            process.start()"},{"line_number":265,"context_line":"            process_pool.append(process)"},{"line_number":266,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"3acd31a7_0c75d230","line":263,"range":{"start_line":259,"start_character":0,"end_line":263,"end_character":69},"updated":"2015-05-05 15:23:53.000000000","message":"Looks like these changes are not related to commit message.\nPlease display them in one.","commit_id":"bc74f263e42c1f02ffaecba15fadf5dba09e1327"},{"author":{"_account_id":7126,"name":"Vadim Rovachev","email":"vrovachev@mirantis.com","username":"vrovachev"},"change_message_id":"98c1fb59cbe3785ca6eb9bb5df1f19591b8a77bc","unresolved":false,"context_lines":[{"line_number":260,"context_line":"                     \"processes_counter\": i}"},{"line_number":261,"context_line":"            process \u003d multiprocessing.Process(target\u003dworker_process,"},{"line_number":262,"context_line":"                                              args\u003dnext(worker_args_gen),"},{"line_number":263,"context_line":"                                              kwargs\u003d{\"info\": kwrgs})"},{"line_number":264,"context_line":"            process.start()"},{"line_number":265,"context_line":"            process_pool.append(process)"},{"line_number":266,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"3acd31a7_c291e148","line":263,"in_reply_to":"3acd31a7_0c75d230","updated":"2015-05-05 15:50:41.000000000","message":"Please read change history and Boris\u0027s comments.","commit_id":"bc74f263e42c1f02ffaecba15fadf5dba09e1327"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"62ec3a3740cc5e9b557ec780b21fbaf679599de7","unresolved":false,"context_lines":[{"line_number":260,"context_line":"                     \"processes_counter\": i}"},{"line_number":261,"context_line":"            process \u003d multiprocessing.Process(target\u003dworker_process,"},{"line_number":262,"context_line":"                                              args\u003dnext(worker_args_gen),"},{"line_number":263,"context_line":"                                              kwargs\u003d{\"info\": kwrgs})"},{"line_number":264,"context_line":"            process.start()"},{"line_number":265,"context_line":"            process_pool.append(process)"},{"line_number":266,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"3acd31a7_f1bca6bc","line":263,"in_reply_to":"3acd31a7_c291e148","updated":"2015-05-05 18:02:07.000000000","message":"Ok. Right. Sorry","commit_id":"bc74f263e42c1f02ffaecba15fadf5dba09e1327"}],"rally/benchmark/runners/constant.py":[{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"42b88961420eff2bb422abf47cc4d6e3fd8db953","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def _worker_process(queue, iteration_gen, timeout, concurrency, times, context,"},{"line_number":32,"context_line":"                    cls, method_name, args, aborted, info):"},{"line_number":33,"context_line":"    \"\"\"Start the scenario within threads."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    Spawn threads to support scenario execution for a fixed number of times."}],"source_content_type":"text/x-python","patch_set":14,"id":"3acd31a7_2ccace4e","line":32,"updated":"2015-05-05 15:23:53.000000000","message":"Unusable argument.\nAnd it\u0027s not related to commit message","commit_id":"bc74f263e42c1f02ffaecba15fadf5dba09e1327"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"82e713a014efbe11b2ceb580f74dd9d4266c3a0e","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def _worker_process(queue, iteration_gen, timeout, concurrency, times, context,"},{"line_number":32,"context_line":"                    cls, method_name, args, aborted, info):"},{"line_number":33,"context_line":"    \"\"\"Start the scenario within threads."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    Spawn threads to support scenario execution for a fixed number of times."}],"source_content_type":"text/x-python","patch_set":14,"id":"3acd31a7_478cc3d9","line":32,"in_reply_to":"3acd31a7_2ccace4e","updated":"2015-05-05 15:31:15.000000000","message":"Oleg please re-read the code changes","commit_id":"bc74f263e42c1f02ffaecba15fadf5dba09e1327"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"62ec3a3740cc5e9b557ec780b21fbaf679599de7","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def _worker_process(queue, iteration_gen, timeout, concurrency, times, context,"},{"line_number":32,"context_line":"                    cls, method_name, args, aborted, info):"},{"line_number":33,"context_line":"    \"\"\"Start the scenario within threads."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    Spawn threads to support scenario execution for a fixed number of times."}],"source_content_type":"text/x-python","patch_set":14,"id":"3acd31a7_711f7608","line":32,"in_reply_to":"3acd31a7_478cc3d9","updated":"2015-05-05 18:02:07.000000000","message":"Re-read carefully.\nIn this runner \u0027info\u0027 argument unusable. But ok. I\u0027m not sure, that i\u0027ve understood advantages of such implementation. But if it\u0027s realy has to be implemented this way - ok.","commit_id":"bc74f263e42c1f02ffaecba15fadf5dba09e1327"}],"rally/benchmark/runners/rps.py":[{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"7381af0225437f8ab9e142912d19eee1194c2c07","unresolved":false,"context_lines":[{"line_number":124,"context_line":"            \"rps\": {"},{"line_number":125,"context_line":"                \"type\": \"number\","},{"line_number":126,"context_line":"                \"exclusiveMinimum\": True,"},{"line_number":127,"context_line":"                \"minimum\": 0"},{"line_number":128,"context_line":"            },"},{"line_number":129,"context_line":"            \"timeout\": {"},{"line_number":130,"context_line":"                \"type\": \"number\","}],"source_content_type":"text/x-python","patch_set":4,"id":"9aa53dc9_6e373fe4","line":127,"updated":"2015-04-06 14:15:10.000000000","message":"As we talk before the issue is deeper..","commit_id":"f9692376c3da5610fd44b076d0b68ddce7349bc4"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"3a2837c559b87d6b599027636b912b0b4c57c863","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"def _worker_process(queue, iteration_gen, timeout, rps, times,"},{"line_number":31,"context_line":"                    max_concurrent, context, cls, method_name,"},{"line_number":32,"context_line":"                    args, aborted, processes_to_start\u003d1, processes_counter\u003d0):"},{"line_number":33,"context_line":"    \"\"\"Start scenario within threads."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    Spawn N threads per second. Each thread runs the scenario once, and appends"}],"source_content_type":"text/x-python","patch_set":7,"id":"dac4157f_6a08cc91","line":32,"updated":"2015-04-23 13:44:20.000000000","message":"This variable need too to be documented)","commit_id":"048314b9f5ca3043703c3df27d7999136196bc00"},{"author":{"_account_id":7227,"name":"Timur Nurlygayanov","email":"tnurlygayanov@mirantis.com","username":"tnurlygayanov"},"change_message_id":"cbb7b947076ef2b43407e85c32a6511fdb98b62c","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"def _worker_process(queue, iteration_gen, timeout, rps, times,"},{"line_number":31,"context_line":"                    max_concurrent, context, cls, method_name,"},{"line_number":32,"context_line":"                    args, aborted, processes_to_start\u003d1, processes_counter\u003d0):"},{"line_number":33,"context_line":"    \"\"\"Start scenario within threads."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    Spawn N threads per second. Each thread runs the scenario once, and appends"}],"source_content_type":"text/x-python","patch_set":7,"id":"7ad32947_36f198ce","line":32,"in_reply_to":"bab921fb_7ebc626c","updated":"2015-04-27 13:38:41.000000000","message":"Ok, let\u0027s do this :)","commit_id":"048314b9f5ca3043703c3df27d7999136196bc00"},{"author":{"_account_id":7126,"name":"Vadim Rovachev","email":"vrovachev@mirantis.com","username":"vrovachev"},"change_message_id":"8b3c63efb1d74ff8434623d871e66ab1e4493796","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"def _worker_process(queue, iteration_gen, timeout, rps, times,"},{"line_number":31,"context_line":"                    max_concurrent, context, cls, method_name,"},{"line_number":32,"context_line":"                    args, aborted, processes_to_start\u003d1, processes_counter\u003d0):"},{"line_number":33,"context_line":"    \"\"\"Start scenario within threads."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    Spawn N threads per second. Each thread runs the scenario once, and appends"}],"source_content_type":"text/x-python","patch_set":7,"id":"bab921fb_7ebc626c","line":32,"in_reply_to":"dac4157f_6a08cc91","updated":"2015-04-23 14:41:42.000000000","message":"Yes, I will add these tomorrow","commit_id":"048314b9f5ca3043703c3df27d7999136196bc00"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"ddbe33f6bf39679a9afd1449b05c7c4a1cd4d632","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    # Injecting timeout to exclude situations, where start time and"},{"line_number":61,"context_line":"    # actual time are negligible close"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    time.sleep((sleep * processes_counter) / processes_to_start)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    i \u003d 0"},{"line_number":66,"context_line":"    while i \u003c times and not aborted.is_set():"}],"source_content_type":"text/x-python","patch_set":7,"id":"bab921fb_490e8d35","line":63,"updated":"2015-04-23 13:51:44.000000000","message":"Is this solve note above? I don\u0027t think so. For example rps * process_count ~ process_to_start and time.sleep() would be small. Is this normal?I don\u0027t think so","commit_id":"048314b9f5ca3043703c3df27d7999136196bc00"},{"author":{"_account_id":7126,"name":"Vadim Rovachev","email":"vrovachev@mirantis.com","username":"vrovachev"},"change_message_id":"97b6284e07060f5bb600934c314319ade0df3296","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    # Injecting timeout to exclude situations, where start time and"},{"line_number":61,"context_line":"    # actual time are negligible close"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    time.sleep((sleep * processes_counter) / processes_to_start)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    i \u003d 0"},{"line_number":66,"context_line":"    while i \u003c times and not aborted.is_set():"}],"source_content_type":"text/x-python","patch_set":7,"id":"bab921fb_142b0532","line":63,"in_reply_to":"bab921fb_490e8d35","updated":"2015-04-23 15:05:19.000000000","message":"Example: we have 5 parallel processes and rps 0.2(run scenario one per 5 second). We should start new worker process on 0, 1, 2, 3 and 4 second.\n\nsleep \u003d 1/0.2 \u003d 5\n\nprocesses_counter \u003d (0,1,2,3,4)\n\nprocesses_to_start \u003d 5\n\non first iteration we have time.sleep( 5 * 0 / 5), time.sleep(0)\n\non second iteration we have time.sleep( 5 * 1 / 5), time.sleep(1)\n\non third iteration we have time.sleep( 5 * 2 / 5), time.sleep(2)\n\non fourth iteration we have time.sleep( 5 * 3 / 5), time.sleep(3)\n\non fifth iteration we have time.sleep( 5 * 4 / 5), time.sleep(4)","commit_id":"048314b9f5ca3043703c3df27d7999136196bc00"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"c0201799d20a5fc77832c0c84b78c8c6c674c64d","unresolved":false,"context_lines":[{"line_number":212,"context_line":"        process_pool \u003d self._create_process_pool("},{"line_number":213,"context_line":"            processes_to_start, _worker_process,"},{"line_number":214,"context_line":"            worker_args_gen(times_overhead, concurrency_overhead),"},{"line_number":215,"context_line":"            add_kwargs\u003dTrue)"},{"line_number":216,"context_line":"        self._join_processes(process_pool, result_queue)"}],"source_content_type":"text/x-python","patch_set":7,"id":"bab921fb_6e5a7785","line":215,"updated":"2015-04-23 13:45:30.000000000","message":"Why you use add_kwargs if you just change config schema?","commit_id":"048314b9f5ca3043703c3df27d7999136196bc00"},{"author":{"_account_id":7126,"name":"Vadim Rovachev","email":"vrovachev@mirantis.com","username":"vrovachev"},"change_message_id":"8b3c63efb1d74ff8434623d871e66ab1e4493796","unresolved":false,"context_lines":[{"line_number":212,"context_line":"        process_pool \u003d self._create_process_pool("},{"line_number":213,"context_line":"            processes_to_start, _worker_process,"},{"line_number":214,"context_line":"            worker_args_gen(times_overhead, concurrency_overhead),"},{"line_number":215,"context_line":"            add_kwargs\u003dTrue)"},{"line_number":216,"context_line":"        self._join_processes(process_pool, result_queue)"}],"source_content_type":"text/x-python","patch_set":7,"id":"bab921fb_fe02b23d","line":215,"in_reply_to":"bab921fb_6e5a7785","updated":"2015-04-23 14:41:42.000000000","message":"If you have other solution for add these parameters to base class from only rps class, i open for discussion.","commit_id":"048314b9f5ca3043703c3df27d7999136196bc00"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"3fd5eda15029df0550b476c0d029b5859bb6185a","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"def _worker_process(queue, iteration_gen, timeout, rps, times,"},{"line_number":31,"context_line":"                    max_concurrent, context, cls, method_name,"},{"line_number":32,"context_line":"                    args, aborted, processes_to_start\u003d1, processes_counter\u003d0):"},{"line_number":33,"context_line":"    \"\"\"Start scenario within threads."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    Spawn N threads per second. Each thread runs the scenario once, and appends"}],"source_content_type":"text/x-python","patch_set":8,"id":"3acd31a7_26afc682","line":32,"updated":"2015-05-03 08:50:33.000000000","message":"According to comment here:\n\n  https://review.openstack.org/#/c/170160/8/rally/benchmark/runners/base.py\n\nWe should get here: \n\n   args, aborted, info)\n\nInside info we will have various global information including: \n\n  total_processes and process_id","commit_id":"241e952ba6e18d0a514d5bcf573c96624faf17f2"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"3fd5eda15029df0550b476c0d029b5859bb6185a","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    # Injecting timeout to exclude situations, where start time and"},{"line_number":63,"context_line":"    # actual time are negligible close"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    time.sleep((sleep * processes_counter) / processes_to_start)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    i \u003d 0"},{"line_number":68,"context_line":"    while i \u003c times and not aborted.is_set():"}],"source_content_type":"text/x-python","patch_set":8,"id":"3acd31a7_86b45ad1","line":65,"updated":"2015-05-03 08:50:33.000000000","message":"time.sleep(sleep * info[\"process_id\"] / info[\"amount_of_processes\"])","commit_id":"241e952ba6e18d0a514d5bcf573c96624faf17f2"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"3fd5eda15029df0550b476c0d029b5859bb6185a","unresolved":false,"context_lines":[{"line_number":214,"context_line":"        process_pool \u003d self._create_process_pool("},{"line_number":215,"context_line":"            processes_to_start, _worker_process,"},{"line_number":216,"context_line":"            worker_args_gen(times_overhead, concurrency_overhead),"},{"line_number":217,"context_line":"            add_kwargs\u003dTrue)"},{"line_number":218,"context_line":"        self._join_processes(process_pool, result_queue)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3acd31a7_66a5bea0","line":217,"updated":"2015-05-03 08:50:33.000000000","message":"remove this, let\u0027s pass this information always in all runners","commit_id":"241e952ba6e18d0a514d5bcf573c96624faf17f2"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"42b88961420eff2bb422abf47cc4d6e3fd8db953","unresolved":false,"context_lines":[{"line_number":58,"context_line":"    base._log_worker_info(times\u003dtimes, rps\u003drps, timeout\u003dtimeout,"},{"line_number":59,"context_line":"                          cls\u003dcls, method_name\u003dmethod_name, args\u003dargs)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    # Injecting timeout to exclude situations, where start time and"},{"line_number":62,"context_line":"    # actual time are negligible close"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    time.sleep("},{"line_number":65,"context_line":"        (sleep * info[\"processes_counter\"]) / info[\"processes_to_start\"])"}],"source_content_type":"text/x-python","patch_set":14,"id":"3acd31a7_2795473e","line":62,"range":{"start_line":61,"start_character":4,"end_line":62,"end_character":38},"updated":"2015-05-05 15:23:53.000000000","message":"please, remove this comment if you reimplement \u0027time.sleep\u0027 argument calculation. Or you can update one.","commit_id":"bc74f263e42c1f02ffaecba15fadf5dba09e1327"},{"author":{"_account_id":7126,"name":"Vadim Rovachev","email":"vrovachev@mirantis.com","username":"vrovachev"},"change_message_id":"98c1fb59cbe3785ca6eb9bb5df1f19591b8a77bc","unresolved":false,"context_lines":[{"line_number":59,"context_line":"                          cls\u003dcls, method_name\u003dmethod_name, args\u003dargs)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    # Injecting timeout to exclude situations, where start time and"},{"line_number":62,"context_line":"    # actual time are negligible close"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    time.sleep("},{"line_number":65,"context_line":"        (sleep * info[\"processes_counter\"]) / info[\"processes_to_start\"])"}],"source_content_type":"text/x-python","patch_set":14,"id":"3acd31a7_42a6f1ae","line":62,"in_reply_to":"3acd31a7_2795473e","updated":"2015-05-05 15:50:41.000000000","message":"Done","commit_id":"bc74f263e42c1f02ffaecba15fadf5dba09e1327"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"42b88961420eff2bb422abf47cc4d6e3fd8db953","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    # Injecting timeout to exclude situations, where start time and"},{"line_number":62,"context_line":"    # actual time are negligible close"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    time.sleep("},{"line_number":65,"context_line":"        (sleep * info[\"processes_counter\"]) / info[\"processes_to_start\"])"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    i \u003d 0"},{"line_number":68,"context_line":"    while i \u003c times and not aborted.is_set():"}],"source_content_type":"text/x-python","patch_set":14,"id":"3acd31a7_07f00bc8","line":65,"range":{"start_line":64,"start_character":1,"end_line":65,"end_character":73},"updated":"2015-05-05 15:23:53.000000000","message":"So, if we have 4 CPUS (\"processes_to_start\" \u003d\u003d 4) and rps\u003d0.5\nsleep will be equal 2\nand time.sleep will be called with:\n0 for first process\n0.5 for second one\n1 for third\n1.5 for fourth\n\nWhy is it better then previous random sleep?","commit_id":"bc74f263e42c1f02ffaecba15fadf5dba09e1327"},{"author":{"_account_id":7126,"name":"Vadim Rovachev","email":"vrovachev@mirantis.com","username":"vrovachev"},"change_message_id":"98c1fb59cbe3785ca6eb9bb5df1f19591b8a77bc","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    # actual time are negligible close"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    time.sleep("},{"line_number":65,"context_line":"        (sleep * info[\"processes_counter\"]) / info[\"processes_to_start\"])"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    i \u003d 0"},{"line_number":68,"context_line":"    while i \u003c times and not aborted.is_set():"}],"source_content_type":"text/x-python","patch_set":14,"id":"3acd31a7_82e529dd","line":65,"in_reply_to":"3acd31a7_07f00bc8","updated":"2015-05-05 15:50:41.000000000","message":"Because previous sleep don\u0027t work with rps \u003c 1.","commit_id":"bc74f263e42c1f02ffaecba15fadf5dba09e1327"},{"author":{"_account_id":7126,"name":"Vadim Rovachev","email":"vrovachev@mirantis.com","username":"vrovachev"},"change_message_id":"e09bb3d6eff100d29fcab247c523ef9d593377b9","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    # actual time are negligible close"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    time.sleep("},{"line_number":65,"context_line":"        (sleep * info[\"processes_counter\"]) / info[\"processes_to_start\"])"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    i \u003d 0"},{"line_number":68,"context_line":"    while i \u003c times and not aborted.is_set():"}],"source_content_type":"text/x-python","patch_set":14,"id":"1aca2d91_45ffac01","line":65,"in_reply_to":"3acd31a7_110722cb","updated":"2015-05-06 10:26:59.000000000","message":"Use random for different start time of processes is very bad idea. This solution allows more evenly distribute the load to CPU.","commit_id":"bc74f263e42c1f02ffaecba15fadf5dba09e1327"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"62ec3a3740cc5e9b557ec780b21fbaf679599de7","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    # actual time are negligible close"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    time.sleep("},{"line_number":65,"context_line":"        (sleep * info[\"processes_counter\"]) / info[\"processes_to_start\"])"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    i \u003d 0"},{"line_number":68,"context_line":"    while i \u003c times and not aborted.is_set():"}],"source_content_type":"text/x-python","patch_set":14,"id":"3acd31a7_110722cb","line":65,"in_reply_to":"3acd31a7_82e529dd","updated":"2015-05-05 18:02:07.000000000","message":"according to this comment:\n\n# Injecting timeout to exclude situations, where start time and\n# actual time are negligible close\n\nwhy not just use, for example\n\n\u003e\u003e\u003e random.randrange(10, 20)/100.0\nfor calculation this initial pause?","commit_id":"bc74f263e42c1f02ffaecba15fadf5dba09e1327"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"42b88961420eff2bb422abf47cc4d6e3fd8db953","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        # start new thread (if we have concurrent slots available)"},{"line_number":87,"context_line":"        while i / (time.time() - start) \u003e rps or len(pool) \u003e\u003d max_concurrent:"},{"line_number":88,"context_line":"            if pool:"},{"line_number":89,"context_line":"                pool[0].join(0.001)"},{"line_number":90,"context_line":"                if not pool[0].isAlive():"},{"line_number":91,"context_line":"                    pool.popleft()"},{"line_number":92,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":14,"id":"3acd31a7_0c571227","line":89,"range":{"start_line":89,"start_character":29,"end_line":89,"end_character":34},"updated":"2015-05-05 15:23:53.000000000","message":"Hardcoding is not allowable. Please use variable here","commit_id":"bc74f263e42c1f02ffaecba15fadf5dba09e1327"},{"author":{"_account_id":7126,"name":"Vadim Rovachev","email":"vrovachev@mirantis.com","username":"vrovachev"},"change_message_id":"98c1fb59cbe3785ca6eb9bb5df1f19591b8a77bc","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        # start new thread (if we have concurrent slots available)"},{"line_number":87,"context_line":"        while i / (time.time() - start) \u003e rps or len(pool) \u003e\u003d max_concurrent:"},{"line_number":88,"context_line":"            if pool:"},{"line_number":89,"context_line":"                pool[0].join(0.001)"},{"line_number":90,"context_line":"                if not pool[0].isAlive():"},{"line_number":91,"context_line":"                    pool.popleft()"},{"line_number":92,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":14,"id":"3acd31a7_a20b858d","line":89,"in_reply_to":"3acd31a7_0c571227","updated":"2015-05-05 15:50:41.000000000","message":"I discuss it with Boris.","commit_id":"bc74f263e42c1f02ffaecba15fadf5dba09e1327"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"d4dd45281508ff087b32faa50d38f57351a8f778","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        # start new thread (if we have concurrent slots available)"},{"line_number":87,"context_line":"        while i / (time.time() - start) \u003e rps or len(pool) \u003e\u003d max_concurrent:"},{"line_number":88,"context_line":"            if pool:"},{"line_number":89,"context_line":"                pool[0].join(0.001)"},{"line_number":90,"context_line":"                if not pool[0].isAlive():"},{"line_number":91,"context_line":"                    pool.popleft()"},{"line_number":92,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":14,"id":"3acd31a7_e87a7f87","line":89,"in_reply_to":"3acd31a7_a20b858d","updated":"2015-05-05 16:00:49.000000000","message":"Oleg we don\u0027t need variables here.\nIt\u0027s just used to not consume 100% of CPU","commit_id":"bc74f263e42c1f02ffaecba15fadf5dba09e1327"},{"author":{"_account_id":9601,"name":"Oleh Anufriiev","email":"oanufriev@mirantis.com","username":"oanufriev"},"change_message_id":"42b88961420eff2bb422abf47cc4d6e3fd8db953","unresolved":false,"context_lines":[{"line_number":90,"context_line":"                if not pool[0].isAlive():"},{"line_number":91,"context_line":"                    pool.popleft()"},{"line_number":92,"context_line":"            else:"},{"line_number":93,"context_line":"                time.sleep(0.001)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    while pool:"},{"line_number":96,"context_line":"        thr \u003d pool.popleft()"}],"source_content_type":"text/x-python","patch_set":14,"id":"3acd31a7_8c39e2f4","line":93,"range":{"start_line":93,"start_character":27,"end_line":93,"end_character":32},"updated":"2015-05-05 15:23:53.000000000","message":"same as above","commit_id":"bc74f263e42c1f02ffaecba15fadf5dba09e1327"},{"author":{"_account_id":7126,"name":"Vadim Rovachev","email":"vrovachev@mirantis.com","username":"vrovachev"},"change_message_id":"98c1fb59cbe3785ca6eb9bb5df1f19591b8a77bc","unresolved":false,"context_lines":[{"line_number":90,"context_line":"                if not pool[0].isAlive():"},{"line_number":91,"context_line":"                    pool.popleft()"},{"line_number":92,"context_line":"            else:"},{"line_number":93,"context_line":"                time.sleep(0.001)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    while pool:"},{"line_number":96,"context_line":"        thr \u003d pool.popleft()"}],"source_content_type":"text/x-python","patch_set":14,"id":"3acd31a7_42fb9179","line":93,"in_reply_to":"3acd31a7_8c39e2f4","updated":"2015-05-05 15:50:41.000000000","message":"same as above","commit_id":"bc74f263e42c1f02ffaecba15fadf5dba09e1327"}]}
