)]}'
{"tempest/api/compute/admin/test_aggregates_negative.py":[{"author":{"_account_id":17887,"name":"Doug Schveninger","email":"ds6901@att.com","username":"Doug.Schveninger"},"change_message_id":"7cfbf08ded2c782f5e2cb09abed30bd2d7561f5a","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    @decorators.attr(type\u003d[\u0027negative\u0027])"},{"line_number":50,"context_line":"    @decorators.idempotent_id(\u002786a1cb14-da37-4a70-b056-903fd56dfe29\u0027)"},{"line_number":51,"context_line":"    def test_aggregate_create_as_user(self):"},{"line_number":52,"context_line":"        \"\"\"Regular user is not allowed to create an aggregate\"\"\""},{"line_number":53,"context_line":"        aggregate_name \u003d data_utils.rand_name(self.aggregate_name_prefix)"},{"line_number":54,"context_line":"        self.assertRaises(lib_exc.Forbidden,"},{"line_number":55,"context_line":"                          self.aggregates_client.create_aggregate,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_4457c103","line":52,"range":{"start_line":52,"start_character":8,"end_line":52,"end_character":64},"updated":"2020-07-29 01:30:17.000000000","message":"I was wondering if we would want to do some thing like\n\n.. versionadded:: stein\n.. versionchanged:: victoria\nor\n.. versionadded:: 24.0\n.. versionchanged:: 25.0\n\nSo we can see how old the test and it last change without blame of is history is enough?","commit_id":"4810d887ffe0038b44adf1be1d906a841769b074"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"6cc4755b5e05311f6e874addaa5b20a8fec229ca","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    @decorators.attr(type\u003d[\u0027negative\u0027])"},{"line_number":50,"context_line":"    @decorators.idempotent_id(\u002786a1cb14-da37-4a70-b056-903fd56dfe29\u0027)"},{"line_number":51,"context_line":"    def test_aggregate_create_as_user(self):"},{"line_number":52,"context_line":"        \"\"\"Regular user is not allowed to create an aggregate\"\"\""},{"line_number":53,"context_line":"        aggregate_name \u003d data_utils.rand_name(self.aggregate_name_prefix)"},{"line_number":54,"context_line":"        self.assertRaises(lib_exc.Forbidden,"},{"line_number":55,"context_line":"                          self.aggregates_client.create_aggregate,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_4e77d303","line":52,"range":{"start_line":52,"start_character":8,"end_line":52,"end_character":64},"in_reply_to":"9f560f44_4457c103","updated":"2020-07-29 14:20:00.000000000","message":"You\u0027re suggesting that we should mention a release the test was added in under each test? How often do we need to check that kind of information? When I have the source code already opened, git blame is just one click/one command more.","commit_id":"4810d887ffe0038b44adf1be1d906a841769b074"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"0037131465952e69616c21513561a755d273f21e","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    @decorators.attr(type\u003d[\u0027negative\u0027])"},{"line_number":50,"context_line":"    @decorators.idempotent_id(\u002786a1cb14-da37-4a70-b056-903fd56dfe29\u0027)"},{"line_number":51,"context_line":"    def test_aggregate_create_as_user(self):"},{"line_number":52,"context_line":"        \"\"\"Regular user is not allowed to create an aggregate\"\"\""},{"line_number":53,"context_line":"        aggregate_name \u003d data_utils.rand_name(self.aggregate_name_prefix)"},{"line_number":54,"context_line":"        self.assertRaises(lib_exc.Forbidden,"},{"line_number":55,"context_line":"                          self.aggregates_client.create_aggregate,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_797c1feb","line":52,"range":{"start_line":52,"start_character":8,"end_line":52,"end_character":64},"in_reply_to":"9f560f44_4e77d303","updated":"2020-07-29 14:50:53.000000000","message":"I like the idea. In interop certification also sometime we need to know when this test was introduced. As we do not cover the test addition in reno, having \"what are new tests\" per Tempest tags will be great to have in the documentation. \n\nwe should have a list of tests per tempest tag with some dropdown or as list (like nova microvesion doc). Let\u0027s discuss this more and how to implement it. Anyways that needs to be done separately and once we decide how to do it an feed on doc side then we can start adding the tests from git blame.","commit_id":"4810d887ffe0038b44adf1be1d906a841769b074"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"4d1dbf13b48096155cd8594395e9becf9f9bf32d","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    @decorators.attr(type\u003d[\u0027negative\u0027])"},{"line_number":50,"context_line":"    @decorators.idempotent_id(\u002786a1cb14-da37-4a70-b056-903fd56dfe29\u0027)"},{"line_number":51,"context_line":"    def test_aggregate_create_as_user(self):"},{"line_number":52,"context_line":"        \"\"\"Regular user is not allowed to create an aggregate\"\"\""},{"line_number":53,"context_line":"        aggregate_name \u003d data_utils.rand_name(self.aggregate_name_prefix)"},{"line_number":54,"context_line":"        self.assertRaises(lib_exc.Forbidden,"},{"line_number":55,"context_line":"                          self.aggregates_client.create_aggregate,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_d400926a","line":52,"range":{"start_line":52,"start_character":8,"end_line":52,"end_character":64},"in_reply_to":"9f560f44_797c1feb","updated":"2020-07-29 15:33:22.000000000","message":"ok, when you say it that it makes sense .. we can discuss that in the next PTG and plan it for the next cycle then","commit_id":"4810d887ffe0038b44adf1be1d906a841769b074"}],"tempest/api/network/admin/test_floating_ips_admin_actions.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"7e0390ba89a4fc30db0157618e767af38b09101e","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    @decorators.idempotent_id(\u002764f2100b-5471-4ded-b46c-ddeeeb4f231b\u0027)"},{"line_number":59,"context_line":"    def test_list_floating_ips_from_admin_and_nonadmin(self):"},{"line_number":60,"context_line":"        \"\"\"Test listing floating ips from admin and non admin users\"\"\""},{"line_number":61,"context_line":"        # Create floating ip from admin user"},{"line_number":62,"context_line":"        floating_ip_admin \u003d self.admin_floating_ips_client.create_floatingip("},{"line_number":63,"context_line":"            floating_network_id\u003dself.ext_net_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff570b3c_81a883db","line":60,"range":{"start_line":60,"start_character":0,"end_line":60,"end_character":70},"updated":"2020-05-13 23:46:32.000000000","message":"this is good but i is more of same as test name. let\u0027s add some more details, something like.\n\n         \"\"\"Test listing floating ips from admin and non admin users.\n\nThis test performs below operations:\n 1. Create couple if floating ips for admin and non-admin users\n  2. Verify if admin can access all floating ips including other user and non-admin user can only access its own floating ips\"\"\"","commit_id":"bb10255ede4baba921e8db47f9c8af54e6ffb4c9"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"f3b3a232aae2fe8c955a904de005e92d6f1dda1c","unresolved":false,"context_lines":[{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    @decorators.idempotent_id(\u002732727cc3-abe2-4485-a16e-48f2d54c14f2\u0027)"},{"line_number":101,"context_line":"    def test_create_list_show_floating_ip_with_tenant_id_by_admin(self):"},{"line_number":102,"context_line":"        \"\"\"Test create/list/show floating ip with tenant id\"\"\""},{"line_number":103,"context_line":"        # Creates a floating IP"},{"line_number":104,"context_line":"        body \u003d self.admin_floating_ips_client.create_floatingip("},{"line_number":105,"context_line":"            floating_network_id\u003dself.ext_net_id,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_afaa2482","line":102,"range":{"start_line":102,"start_character":8,"end_line":102,"end_character":62},"updated":"2020-07-26 21:19:42.000000000","message":"\"\"\"Verify if admin user can create/list/show floating ip with tenant id\"\"\"","commit_id":"73d3a03a6a1289a3b2a07ae216e29540494603f5"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"6b3494138ada806599ca687b6c21eda777058c14","unresolved":false,"context_lines":[{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    @decorators.idempotent_id(\u002732727cc3-abe2-4485-a16e-48f2d54c14f2\u0027)"},{"line_number":101,"context_line":"    def test_create_list_show_floating_ip_with_tenant_id_by_admin(self):"},{"line_number":102,"context_line":"        \"\"\"Test create/list/show floating ip with tenant id\"\"\""},{"line_number":103,"context_line":"        # Creates a floating IP"},{"line_number":104,"context_line":"        body \u003d self.admin_floating_ips_client.create_floatingip("},{"line_number":105,"context_line":"            floating_network_id\u003dself.ext_net_id,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_e5ad5deb","line":102,"range":{"start_line":102,"start_character":8,"end_line":102,"end_character":62},"in_reply_to":"9f560f44_afaa2482","updated":"2020-07-27 02:49:52.000000000","message":"Done","commit_id":"73d3a03a6a1289a3b2a07ae216e29540494603f5"}],"tempest/api/network/admin/test_routers_negative.py":[{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"a1058143f06681e18b92aae415b45814f0ce345a","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class RoutersAdminNegativeTest(base.BaseAdminNetworkTest):"},{"line_number":30,"context_line":"    \"\"\"Negative tests os routers\"\"\""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @classmethod"},{"line_number":33,"context_line":"    def skip_checks(cls):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_a5f690f8","line":30,"range":{"start_line":30,"start_character":22,"end_line":30,"end_character":24},"updated":"2020-05-12 22:26:24.000000000","message":"of?\n\nAlso consider mentioning that it\u0027s admin: \"Admin negative tests of routers\"","commit_id":"d4f22378e730673adb8875774d3ebb1c600bdd56"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"00844204573f0afd3afefcf7a5f2f1784c3a5650","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class RoutersAdminNegativeTest(base.BaseAdminNetworkTest):"},{"line_number":30,"context_line":"    \"\"\"Negative tests os routers\"\"\""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    @classmethod"},{"line_number":33,"context_line":"    def skip_checks(cls):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_f68fa02b","line":30,"range":{"start_line":30,"start_character":22,"end_line":30,"end_character":24},"in_reply_to":"ff570b3c_a5f690f8","updated":"2020-05-13 02:06:04.000000000","message":"oops, done","commit_id":"d4f22378e730673adb8875774d3ebb1c600bdd56"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"a1058143f06681e18b92aae415b45814f0ce345a","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    @testtools.skipUnless(CONF.network.public_network_id,"},{"line_number":43,"context_line":"                          \u0027The public_network_id option must be specified.\u0027)"},{"line_number":44,"context_line":"    def test_router_set_gateway_used_ip_returns_409(self):"},{"line_number":45,"context_line":"        \"\"\"Test creating router with gateway set to used ip will fail\"\"\""},{"line_number":46,"context_line":"        # At first create a address from public_network_id"},{"line_number":47,"context_line":"        port \u003d self.admin_ports_client.create_port("},{"line_number":48,"context_line":"            name\u003ddata_utils.rand_name(self.__class__.__name__),"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_25bba00e","line":45,"range":{"start_line":45,"start_character":60,"end_line":45,"end_character":64},"updated":"2020-05-12 22:26:24.000000000","message":"nit: should, but this is semantics :)","commit_id":"d4f22378e730673adb8875774d3ebb1c600bdd56"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"00844204573f0afd3afefcf7a5f2f1784c3a5650","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    @testtools.skipUnless(CONF.network.public_network_id,"},{"line_number":43,"context_line":"                          \u0027The public_network_id option must be specified.\u0027)"},{"line_number":44,"context_line":"    def test_router_set_gateway_used_ip_returns_409(self):"},{"line_number":45,"context_line":"        \"\"\"Test creating router with gateway set to used ip will fail\"\"\""},{"line_number":46,"context_line":"        # At first create a address from public_network_id"},{"line_number":47,"context_line":"        port \u003d self.admin_ports_client.create_port("},{"line_number":48,"context_line":"            name\u003ddata_utils.rand_name(self.__class__.__name__),"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_569f6c5e","line":45,"range":{"start_line":45,"start_character":60,"end_line":45,"end_character":64},"in_reply_to":"ff570b3c_25bba00e","updated":"2020-05-13 02:06:04.000000000","message":"done:)","commit_id":"d4f22378e730673adb8875774d3ebb1c600bdd56"}],"tempest/api/network/test_extensions.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"f3b3a232aae2fe8c955a904de005e92d6f1dda1c","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    @decorators.attr(type\u003d\u0027smoke\u0027)"},{"line_number":33,"context_line":"    @decorators.idempotent_id(\u0027ef28c7e6-e646-4979-9d67-deb207bc5564\u0027)"},{"line_number":34,"context_line":"    def test_list_show_extensions(self):"},{"line_number":35,"context_line":"        \"\"\"List available extensions for the project\"\"\""},{"line_number":36,"context_line":"        expected_alias \u003d [\u0027security-group\u0027, \u0027l3_agent_scheduler\u0027,"},{"line_number":37,"context_line":"                          \u0027ext-gw-mode\u0027, \u0027binding\u0027, \u0027quotas\u0027,"},{"line_number":38,"context_line":"                          \u0027agent\u0027, \u0027dhcp_agent_scheduler\u0027, \u0027provider\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_ef937c5b","line":35,"range":{"start_line":35,"start_character":8,"end_line":35,"end_character":55},"updated":"2020-07-26 21:19:42.000000000","message":"\"\"\"List available extensions and show the detail of specific extension\"\"\"","commit_id":"73d3a03a6a1289a3b2a07ae216e29540494603f5"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"6b3494138ada806599ca687b6c21eda777058c14","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    @decorators.attr(type\u003d\u0027smoke\u0027)"},{"line_number":33,"context_line":"    @decorators.idempotent_id(\u0027ef28c7e6-e646-4979-9d67-deb207bc5564\u0027)"},{"line_number":34,"context_line":"    def test_list_show_extensions(self):"},{"line_number":35,"context_line":"        \"\"\"List available extensions for the project\"\"\""},{"line_number":36,"context_line":"        expected_alias \u003d [\u0027security-group\u0027, \u0027l3_agent_scheduler\u0027,"},{"line_number":37,"context_line":"                          \u0027ext-gw-mode\u0027, \u0027binding\u0027, \u0027quotas\u0027,"},{"line_number":38,"context_line":"                          \u0027agent\u0027, \u0027dhcp_agent_scheduler\u0027, \u0027provider\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_25b8f528","line":35,"range":{"start_line":35,"start_character":8,"end_line":35,"end_character":55},"in_reply_to":"9f560f44_ef937c5b","updated":"2020-07-27 02:49:52.000000000","message":"Done","commit_id":"73d3a03a6a1289a3b2a07ae216e29540494603f5"}],"tempest/api/network/test_floating_ips.py":[{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"a1058143f06681e18b92aae415b45814f0ce345a","unresolved":false,"context_lines":[{"line_number":236,"context_line":"    def test_create_update_floatingip_with_port_multiple_ip_address(self):"},{"line_number":237,"context_line":"        \"\"\"Test updating floating ip\u0027s fixed_ips to another ip of same port"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"        First we create a port with 2 fixed ips, then we create a floating ip"},{"line_number":240,"context_line":"        with one of the fixed ips, and then we update the floating ip to"},{"line_number":241,"context_line":"        another fixed ip of that port."},{"line_number":242,"context_line":"        \"\"\""},{"line_number":243,"context_line":"        # Find out ips that can be used for tests"},{"line_number":244,"context_line":"        list_ips \u003d net_utils.get_unused_ip_addresses("}],"source_content_type":"text/x-python","patch_set":1,"id":"ff570b3c_054bfc2a","line":241,"range":{"start_line":239,"start_character":8,"end_line":241,"end_character":38},"updated":"2020-05-12 22:26:24.000000000","message":"++","commit_id":"d4f22378e730673adb8875774d3ebb1c600bdd56"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"f3b3a232aae2fe8c955a904de005e92d6f1dda1c","unresolved":false,"context_lines":[{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    @decorators.idempotent_id(\u0027e1f6bffd-442f-4668-b30e-df13f2705e77\u0027)"},{"line_number":136,"context_line":"    def test_floating_ip_delete_port(self):"},{"line_number":137,"context_line":"        \"\"\"Test updating floating ip\u0027s port and then delete the port\"\"\""},{"line_number":138,"context_line":"        # Create a floating IP"},{"line_number":139,"context_line":"        body \u003d self.floating_ips_client.create_floatingip("},{"line_number":140,"context_line":"            floating_network_id\u003dself.ext_net_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_cf903852","line":137,"range":{"start_line":137,"start_character":16,"end_line":137,"end_character":24},"updated":"2020-07-26 21:19:42.000000000","message":"s/updating/creating","commit_id":"73d3a03a6a1289a3b2a07ae216e29540494603f5"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"6b3494138ada806599ca687b6c21eda777058c14","unresolved":false,"context_lines":[{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    @decorators.idempotent_id(\u0027e1f6bffd-442f-4668-b30e-df13f2705e77\u0027)"},{"line_number":136,"context_line":"    def test_floating_ip_delete_port(self):"},{"line_number":137,"context_line":"        \"\"\"Test updating floating ip\u0027s port and then delete the port\"\"\""},{"line_number":138,"context_line":"        # Create a floating IP"},{"line_number":139,"context_line":"        body \u003d self.floating_ips_client.create_floatingip("},{"line_number":140,"context_line":"            floating_network_id\u003dself.ext_net_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_65d14d58","line":137,"range":{"start_line":137,"start_character":16,"end_line":137,"end_character":24},"in_reply_to":"9f560f44_cf903852","updated":"2020-07-27 02:49:52.000000000","message":"I read the test steps again, and it seems the main purpose is to \"delete the port from the floating ip\", so I add the step details to avoid the confusion.","commit_id":"73d3a03a6a1289a3b2a07ae216e29540494603f5"}]}
