)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"65b793c97fa3515f5e240570a6ebe5347b1ae63f","unresolved":false,"context_lines":[{"line_number":12,"context_line":"This PS will result error during inputting of wrong concurrency"},{"line_number":13,"context_line":"value."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Partially-Implements: blueprint tempest-cli-unit-test-coverage"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: If6968c9908bc5ae764f6943dfc6194d5b28b7b34"},{"line_number":18,"context_line":"Closes-Bug: #1811349"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"3fa7e38b_1c699423","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":62},"updated":"2019-10-17 00:31:56.000000000","message":"you should keep this BP link","commit_id":"1a871ab0fd54493a19ac33fc5339f942396e7547"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"65b793c97fa3515f5e240570a6ebe5347b1ae63f","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Doug Schveninger \u003cds6901@att.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2019-10-08 14:05:46 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Test coverage of tempest account-generator for config and account file"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Adding test cases of tempest account-generator on basis of config"},{"line_number":10,"context_line":"and account parameters used in command."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"3fa7e38b_7c63e842","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":70},"updated":"2019-10-17 00:31:56.000000000","message":"This is doing error on negative concurrency also not only tests. we should include that change also in commit msg","commit_id":"839244ad34d723e03553cf11472fb94a676fdb74"}],"releasenotes/notes/bug-1811349-c249827545d9294e.yaml":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"8a5503c0359f40a22aa636e628961f0dafba48b2","unresolved":false,"context_lines":[{"line_number":3,"context_line":"    Fixed bug #1811349. ``tempest account-generator`` CLI will error if zero or negative value is"},{"line_number":4,"context_line":"    input to parameter -r/--concurrency. Earlier zero or negative values were accepting and that"},{"line_number":5,"context_line":"    is giving blank account.yaml file which is wrong behavior."},{"line_number":6,"context_line":"~                                                             "}],"source_content_type":"text/x-yaml","patch_set":1,"id":"bfdaf3ff_29ee05ed","line":6,"range":{"start_line":6,"start_character":0,"end_line":6,"end_character":1},"updated":"2019-01-17 15:57:54.000000000","message":"tab seems","commit_id":"cf737ff1ad7b186a80a5a57d5accbbc8fb487cd3"},{"author":{"_account_id":27078,"name":"Manik Bindlish","email":"manikbindlish19@gmail.com","username":"manik"},"change_message_id":"4943bc535d7659f52f286c90d1a35e8768303901","unresolved":false,"context_lines":[{"line_number":3,"context_line":"    Fixed bug #1811349. ``tempest account-generator`` CLI will error if zero or negative value is"},{"line_number":4,"context_line":"    input to parameter -r/--concurrency. Earlier zero or negative values were accepting and that"},{"line_number":5,"context_line":"    is giving blank account.yaml file which is wrong behavior."},{"line_number":6,"context_line":"~                                                             "}],"source_content_type":"text/x-yaml","patch_set":1,"id":"9fdfeff1_c59e9a06","line":6,"range":{"start_line":6,"start_character":0,"end_line":6,"end_character":1},"in_reply_to":"bfdaf3ff_29ee05ed","updated":"2019-01-22 07:02:04.000000000","message":"Done","commit_id":"cf737ff1ad7b186a80a5a57d5accbbc8fb487cd3"}],"tempest/cmd/account_generator.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"8a5503c0359f40a22aa636e628961f0dafba48b2","unresolved":false,"context_lines":[{"line_number":302,"context_line":"        LOG.warning(\"\u0027os-tenant-name\u0027 and \u0027OS_TENANT_NAME\u0027 are both \""},{"line_number":303,"context_line":"                    \"deprecated, please use \u0027os-project-name\u0027 or \""},{"line_number":304,"context_line":"                    \"\u0027OS_PROJECT_NAME\u0027 instead\")"},{"line_number":305,"context_line":"    if opts.concurrency \u003c\u003d 0:"},{"line_number":306,"context_line":"        raise ValueError(\"Concurrency value should be positive integer\")"},{"line_number":307,"context_line":"    resources \u003d []"},{"line_number":308,"context_line":"    for count in range(opts.concurrency):"}],"source_content_type":"text/x-python","patch_set":1,"id":"bfdaf3ff_09cea12d","line":305,"range":{"start_line":305,"start_character":28,"end_line":305,"end_character":29},"updated":"2019-01-17 15:57:54.000000000","message":"i was thinking to check the type as positive int while parse arg only but you end up defining func to check positive int. This lgtm","commit_id":"cf737ff1ad7b186a80a5a57d5accbbc8fb487cd3"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"df9f3a6f65922ca42d56aa603e97d14483680c3e","unresolved":false,"context_lines":[{"line_number":239,"context_line":"                        type\u003dint,"},{"line_number":240,"context_line":"                        required\u003dFalse,"},{"line_number":241,"context_line":"                        dest\u003d\u0027concurrency\u0027,"},{"line_number":242,"context_line":"                        help\u003d\u0027Concurrency count\u0027)"},{"line_number":243,"context_line":"    parser.add_argument(\u0027--with-admin\u0027,"},{"line_number":244,"context_line":"                        action\u003d\u0027store_true\u0027,"},{"line_number":245,"context_line":"                        dest\u003d\u0027admin\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_d9606738","line":242,"range":{"start_line":242,"start_character":30,"end_line":242,"end_character":47},"updated":"2019-08-29 21:00:12.000000000","message":"Would be best to document that concurrency must be \u003e 0 here, as in:\n\nConcurrency count (must be \u003e 0)","commit_id":"171336e3654a800ffb9b2d2e98698a5f2f9e2ad4"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"df9f3a6f65922ca42d56aa603e97d14483680c3e","unresolved":false,"context_lines":[{"line_number":303,"context_line":"                    \"deprecated, please use \u0027os-project-name\u0027 or \""},{"line_number":304,"context_line":"                    \"\u0027OS_PROJECT_NAME\u0027 instead\")"},{"line_number":305,"context_line":"    if opts.concurrency \u003c\u003d 0:"},{"line_number":306,"context_line":"        raise ValueError(\"Concurrency value should be positive integer\")"},{"line_number":307,"context_line":"    resources \u003d []"},{"line_number":308,"context_line":"    for count in range(opts.concurrency):"},{"line_number":309,"context_line":"        # Use N different cred_providers to obtain different sets of creds"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_596b171e","line":306,"range":{"start_line":306,"start_character":14,"end_line":306,"end_character":24},"updated":"2019-08-29 21:00:12.000000000","message":"nit: Would be better to raise OptionValueError which is what optparse library would do.","commit_id":"171336e3654a800ffb9b2d2e98698a5f2f9e2ad4"}],"tempest/tests/cmd/test_account_generator.py":[{"author":{"_account_id":6547,"name":"Andreas Jaeger","email":"jaegerandi@gmail.com","username":"jaegerandi"},"change_message_id":"396cb637b7bffd2825a1e939de596ef128d2bd71","unresolved":false,"context_lines":[{"line_number":488,"context_line":"            app\u003dmock.Mock(), app_args\u003dmock.Mock())"},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"        ex \u003d self.assertRaises(ValueError,"},{"line_number":491,"context_line":"                               account_generaor_object.take_action, self.opts)"},{"line_number":492,"context_line":"        self.assertIn(\"Concurrency value should be positive integer\", str(ex))"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_b98be0bd","line":491,"range":{"start_line":491,"start_character":31,"end_line":491,"end_character":54},"updated":"2019-08-03 08:10:24.000000000","message":"generaor -\u003e generator ?","commit_id":"0b00d77be9c01fcfbd21d50d4aa40093f0ad50d1"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"4a5a524ff90df4006ef6ccdfa8538b62e70d4ad1","unresolved":false,"context_lines":[{"line_number":350,"context_line":"    dynamic_creds \u003d (\u0027tempest.lib.common.dynamic_creds.\u0027"},{"line_number":351,"context_line":"                     \u0027DynamicCredentialProvider\u0027)"},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"    def setUp(self):"},{"line_number":354,"context_line":"        super(TestAccountGeneratorCliCheck, self).setUp()"},{"line_number":355,"context_line":"        self.mock_config_and_opts(self.identity_version)"},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"        self.user_create_fixture \u003d self.useFixture(fixtures.MockPatch("},{"line_number":358,"context_line":"            self.cred_client + \u0027.create_user\u0027,"},{"line_number":359,"context_line":"            return_value\u003ddict(id\u003d\u0027fake_user_id\u0027, name\u003d\u0027fake_user\u0027)))"},{"line_number":360,"context_line":"        self.useFixture(fixtures.MockPatch("},{"line_number":361,"context_line":"            self.cred_client + \u0027.create_project\u0027,"},{"line_number":362,"context_line":"            return_value\u003ddict(id\u003d\u0027fake_project_id\u0027, name\u003d\u0027fake_project\u0027)))"},{"line_number":363,"context_line":"        self.useFixture(fixtures.MockPatch("},{"line_number":364,"context_line":"            self.cred_client + \u0027.assign_user_role\u0027))"},{"line_number":365,"context_line":"        self.useFixture(fixtures.MockPatch("},{"line_number":366,"context_line":"            self.cred_client + \u0027._check_role_exists\u0027,"},{"line_number":367,"context_line":"            return_value\u003ddict(id\u003d\u0027fake_role_id\u0027, name\u003d\u0027fake_role\u0027)))"},{"line_number":368,"context_line":"        self.useFixture(fixtures.MockPatch("},{"line_number":369,"context_line":"            self.dynamic_creds + \u0027._create_network\u0027,"},{"line_number":370,"context_line":"            return_value\u003ddict(id\u003d\u0027fake_network_id\u0027, name\u003d\u0027fake_network\u0027)))"},{"line_number":371,"context_line":"        self.useFixture(fixtures.MockPatch("},{"line_number":372,"context_line":"            self.dynamic_creds + \u0027._create_subnet\u0027,"},{"line_number":373,"context_line":"            return_value\u003ddict(id\u003d\u0027fake_subnet_id\u0027, name\u003d\u0027fake_subnet\u0027)))"},{"line_number":374,"context_line":"        self.useFixture(fixtures.MockPatch("},{"line_number":375,"context_line":"            self.dynamic_creds + \u0027._create_router\u0027,"},{"line_number":376,"context_line":"            return_value\u003ddict(id\u003d\u0027fake_router_id\u0027, name\u003d\u0027fake_router\u0027)))"},{"line_number":377,"context_line":"        self.useFixture(fixtures.MockPatch("},{"line_number":378,"context_line":"            self.dynamic_creds + \u0027._add_router_interface\u0027,"},{"line_number":379,"context_line":"            return_value\u003ddict(id\u003d\u0027fake_interface_id\u0027, name\u003d\u0027fake_interface\u0027)))"},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"    def _setup_test_dirs(self):"},{"line_number":382,"context_line":"        self.directory \u003d tempfile.mkdtemp(prefix\u003d\u0027tempest-unit\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"df33271e_ba67804d","line":379,"range":{"start_line":353,"start_character":4,"end_line":379,"end_character":78},"updated":"2020-04-09 04:41:36.000000000","message":"I don\u0027t think any of this is actually required? MockHelpersMixin already does all this, and since you include this mixin here, this shouldn\u0027t be required.","commit_id":"d2cf2fb2ae495e76ec20c49f7c8092df8608706f"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"4a5a524ff90df4006ef6ccdfa8538b62e70d4ad1","unresolved":false,"context_lines":[{"line_number":387,"context_line":"        self.addCleanup(os.chdir, os.path.abspath(os.curdir))"},{"line_number":388,"context_line":"        os.chdir(self.directory)"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"    def test_account_generator_no_config_file(self):"},{"line_number":391,"context_line":"        self._setup_test_dirs()"},{"line_number":392,"context_line":"        account_generator.CONF._path \u003d \"\""},{"line_number":393,"context_line":"        self.opts.concurrency \u003d 1"}],"source_content_type":"text/x-python","patch_set":11,"id":"df33271e_3a53706d","line":390,"updated":"2020-04-09 04:41:36.000000000","message":"I think adding more unit test coverage is great, but this is kind of out of scope here. How about adding these tests in a separate patch set?","commit_id":"d2cf2fb2ae495e76ec20c49f7c8092df8608706f"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"4a5a524ff90df4006ef6ccdfa8538b62e70d4ad1","unresolved":false,"context_lines":[{"line_number":467,"context_line":"        self.assertEqual(1, data.count(\u0027  - admin\\n\u0027))"},{"line_number":468,"context_line":"        self.assertEqual(5, data.count(\u0027  resources:\\n\u0027))"},{"line_number":469,"context_line":""},{"line_number":470,"context_line":"    def test_account_generator_negative_concurrency(self):"},{"line_number":471,"context_line":"        self._setup_test_dirs()"},{"line_number":472,"context_line":"        _, path \u003d tempfile.mkstemp()"},{"line_number":473,"context_line":"        self.addCleanup(os.remove, path)"},{"line_number":474,"context_line":"        self.opts.concurrency \u003d -1"},{"line_number":475,"context_line":"        self.opts.config_file \u003d path"},{"line_number":476,"context_line":"        self.opts.admin \u003d \u0027admin\u0027"},{"line_number":477,"context_line":""},{"line_number":478,"context_line":"        account_generator_object \u003d account_generator.TempestAccountGenerator("},{"line_number":479,"context_line":"            app\u003dmock.Mock(), app_args\u003dmock.Mock())"},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"        ex \u003d self.assertRaises("},{"line_number":482,"context_line":"            OptionValueError,"},{"line_number":483,"context_line":"            account_generator_object.take_action, self.opts)"},{"line_number":484,"context_line":"        self.assertIn(\"Concurrency value should be positive integer\", str(ex))"}],"source_content_type":"text/x-python","patch_set":11,"id":"df33271e_9a4c3cc9","line":484,"range":{"start_line":470,"start_character":4,"end_line":484,"end_character":78},"updated":"2020-04-09 04:41:36.000000000","message":"++ this is great, we can keep this one","commit_id":"d2cf2fb2ae495e76ec20c49f7c8092df8608706f"}]}
