)]}'
{"REVIEWING.rst":[{"author":{"_account_id":17896,"name":"Rick Bartra","email":"rickbartra@microsoft.com","username":"rb560u"},"change_message_id":"a8c9629d1205814c90c85b419022a99df63a01c0","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Ensuring code is executed"},{"line_number":8,"context_line":"-------------------------"},{"line_number":9,"context_line":"For any new or change to a test it has to be verified in the gate. This means"},{"line_number":10,"context_line":"that the first thing to check with any change is that a gate job actually runs"},{"line_number":11,"context_line":"it. Tests which aren\u0027t executed either because of configuration or skips should"},{"line_number":12,"context_line":"not be accepted."}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_b55cbc19","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":66},"updated":"2018-06-19 21:49:23.000000000","message":"Any new or change to an existing test has to be verified in the gate.","commit_id":"cf7728cea010602f5e58c057cdfe6ba96aa75061"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"b7c498cc1027efab4afec0fc0be88aa3ed46156f","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Ensuring code is executed"},{"line_number":8,"context_line":"-------------------------"},{"line_number":9,"context_line":"For any new or change to a test it has to be verified in the gate. This means"},{"line_number":10,"context_line":"that the first thing to check with any change is that a gate job actually runs"},{"line_number":11,"context_line":"it. Tests which aren\u0027t executed either because of configuration or skips should"},{"line_number":12,"context_line":"not be accepted."}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_72ecba91","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":66},"in_reply_to":"5f7c97a3_12e0e6f7","updated":"2018-07-18 03:02:17.000000000","message":"Done","commit_id":"cf7728cea010602f5e58c057cdfe6ba96aa75061"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"4c4b1349bcd27e2cf6267706cfe089d5d701cd08","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Ensuring code is executed"},{"line_number":8,"context_line":"-------------------------"},{"line_number":9,"context_line":"For any new or change to a test it has to be verified in the gate. This means"},{"line_number":10,"context_line":"that the first thing to check with any change is that a gate job actually runs"},{"line_number":11,"context_line":"it. Tests which aren\u0027t executed either because of configuration or skips should"},{"line_number":12,"context_line":"not be accepted."}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_12e0e6f7","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":66},"in_reply_to":"5f7c97a3_b55cbc19","updated":"2018-07-18 02:42:18.000000000","message":"This is copied over from Tempest so should fix there too","commit_id":"cf7728cea010602f5e58c057cdfe6ba96aa75061"},{"author":{"_account_id":17896,"name":"Rick Bartra","email":"rickbartra@microsoft.com","username":"rb560u"},"change_message_id":"a8c9629d1205814c90c85b419022a99df63a01c0","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Execution time"},{"line_number":16,"context_line":"--------------"},{"line_number":17,"context_line":"While checking in the job logs that a new test is actually executed, also"},{"line_number":18,"context_line":"pay attention to the execution time of that test. Patrole already runs hundreds"},{"line_number":19,"context_line":"of tests per job in its check and gate pipelines and it is important that the"},{"line_number":20,"context_line":"overall runtime of the jobs be constrained as much as possible. Consider"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_d595b889","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":67},"updated":"2018-06-19 21:49:23.000000000","message":"Along with checking that the jobs logs that a new test is actually executed,","commit_id":"cf7728cea010602f5e58c057cdfe6ba96aa75061"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"b7c498cc1027efab4afec0fc0be88aa3ed46156f","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Execution time"},{"line_number":16,"context_line":"--------------"},{"line_number":17,"context_line":"While checking in the job logs that a new test is actually executed, also"},{"line_number":18,"context_line":"pay attention to the execution time of that test. Patrole already runs hundreds"},{"line_number":19,"context_line":"of tests per job in its check and gate pipelines and it is important that the"},{"line_number":20,"context_line":"overall runtime of the jobs be constrained as much as possible. Consider"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_92f1566d","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":67},"in_reply_to":"5f7c97a3_92bdd6d8","updated":"2018-07-18 03:02:17.000000000","message":"Done","commit_id":"cf7728cea010602f5e58c057cdfe6ba96aa75061"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"4c4b1349bcd27e2cf6267706cfe089d5d701cd08","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Execution time"},{"line_number":16,"context_line":"--------------"},{"line_number":17,"context_line":"While checking in the job logs that a new test is actually executed, also"},{"line_number":18,"context_line":"pay attention to the execution time of that test. Patrole already runs hundreds"},{"line_number":19,"context_line":"of tests per job in its check and gate pipelines and it is important that the"},{"line_number":20,"context_line":"overall runtime of the jobs be constrained as much as possible. Consider"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_92bdd6d8","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":67},"in_reply_to":"5f7c97a3_d595b889","updated":"2018-07-18 02:42:18.000000000","message":"Ditto","commit_id":"cf7728cea010602f5e58c057cdfe6ba96aa75061"},{"author":{"_account_id":17896,"name":"Rick Bartra","email":"rickbartra@microsoft.com","username":"rb560u"},"change_message_id":"a8c9629d1205814c90c85b419022a99df63a01c0","unresolved":false,"context_lines":[{"line_number":16,"context_line":"--------------"},{"line_number":17,"context_line":"While checking in the job logs that a new test is actually executed, also"},{"line_number":18,"context_line":"pay attention to the execution time of that test. Patrole already runs hundreds"},{"line_number":19,"context_line":"of tests per job in its check and gate pipelines and it is important that the"},{"line_number":20,"context_line":"overall runtime of the jobs be constrained as much as possible. Consider"},{"line_number":21,"context_line":"applying the ``@decorators.attr(type\u003d\u0027slow\u0027)`` decorator to a test if its"},{"line_number":22,"context_line":"runtime is longer than 30 seconds."}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_55e76847","line":19,"range":{"start_line":19,"start_character":20,"end_line":19,"end_character":48},"updated":"2018-06-19 21:49:23.000000000","message":"its gate pipelines","commit_id":"cf7728cea010602f5e58c057cdfe6ba96aa75061"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"6874aecc3133c1c50f7472277625d391b9679798","unresolved":false,"context_lines":[{"line_number":16,"context_line":"--------------"},{"line_number":17,"context_line":"While checking in the job logs that a new test is actually executed, also"},{"line_number":18,"context_line":"pay attention to the execution time of that test. Patrole already runs hundreds"},{"line_number":19,"context_line":"of tests per job in its check and gate pipelines and it is important that the"},{"line_number":20,"context_line":"overall runtime of the jobs be constrained as much as possible. Consider"},{"line_number":21,"context_line":"applying the ``@decorators.attr(type\u003d\u0027slow\u0027)`` decorator to a test if its"},{"line_number":22,"context_line":"runtime is longer than 30 seconds."}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_25dcde6f","line":19,"range":{"start_line":19,"start_character":20,"end_line":19,"end_character":48},"in_reply_to":"5f7c97a3_55e76847","updated":"2018-07-16 22:08:29.000000000","message":"This is actually check and gate since check and gate are distinct Zuul pipelines. See .zuul.yaml where jobs are added underneath check/gate pipelines. More info here: \n\nFor instance, a “check” pipeline might describe the actions which should cause newly proposed changes to projects to be tested. A “gate” pipeline might implement Project Gating to automate merging changes to projects only if their tests pass. A “post” pipeline might update published documentation for a project when changes land.\n\nhttps://zuul-ci.org/docs/zuul/user/concepts.html\n\nSo we run some jobs during check, then add some additional jobs during gate post-approval to make sure whether the change will pass against the latest tip of the repo.","commit_id":"cf7728cea010602f5e58c057cdfe6ba96aa75061"},{"author":{"_account_id":17896,"name":"Rick Bartra","email":"rickbartra@microsoft.com","username":"rb560u"},"change_message_id":"a8c9629d1205814c90c85b419022a99df63a01c0","unresolved":false,"context_lines":[{"line_number":46,"context_line":"* part of a service that has not yet migrated to policy in code; or"},{"line_number":47,"context_line":"* legacy in the sense that they were created prior to policy in code"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"For the first bullet, the tests cannot be considered stable, but should be"},{"line_number":50,"context_line":"kept around to offer coverage. These tests are a best-effort attempt at"},{"line_number":51,"context_line":"offering RBAC test coverage for the service that has not yet migrated to"},{"line_number":52,"context_line":"policy in code."}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_956bc083","line":49,"range":{"start_line":49,"start_character":32,"end_line":49,"end_character":38},"updated":"2018-06-19 21:49:23.000000000","message":"should not","commit_id":"cf7728cea010602f5e58c057cdfe6ba96aa75061"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"b7c498cc1027efab4afec0fc0be88aa3ed46156f","unresolved":false,"context_lines":[{"line_number":46,"context_line":"* part of a service that has not yet migrated to policy in code; or"},{"line_number":47,"context_line":"* legacy in the sense that they were created prior to policy in code"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"For the first bullet, the tests cannot be considered stable, but should be"},{"line_number":50,"context_line":"kept around to offer coverage. These tests are a best-effort attempt at"},{"line_number":51,"context_line":"offering RBAC test coverage for the service that has not yet migrated to"},{"line_number":52,"context_line":"policy in code."}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_72759aff","line":49,"range":{"start_line":49,"start_character":32,"end_line":49,"end_character":38},"in_reply_to":"5f7c97a3_956bc083","updated":"2018-07-18 03:02:17.000000000","message":"Done","commit_id":"cf7728cea010602f5e58c057cdfe6ba96aa75061"},{"author":{"_account_id":17896,"name":"Rick Bartra","email":"rickbartra@microsoft.com","username":"rb560u"},"change_message_id":"a8c9629d1205814c90c85b419022a99df63a01c0","unresolved":false,"context_lines":[{"line_number":47,"context_line":"* legacy in the sense that they were created prior to policy in code"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"For the first bullet, the tests cannot be considered stable, but should be"},{"line_number":50,"context_line":"kept around to offer coverage. These tests are a best-effort attempt at"},{"line_number":51,"context_line":"offering RBAC test coverage for the service that has not yet migrated to"},{"line_number":52,"context_line":"policy in code."},{"line_number":53,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_750624d0","line":50,"range":{"start_line":50,"start_character":15,"end_line":50,"end_character":20},"updated":"2018-06-19 21:49:23.000000000","message":"maintain","commit_id":"cf7728cea010602f5e58c057cdfe6ba96aa75061"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"b7c498cc1027efab4afec0fc0be88aa3ed46156f","unresolved":false,"context_lines":[{"line_number":47,"context_line":"* legacy in the sense that they were created prior to policy in code"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"For the first bullet, the tests cannot be considered stable, but should be"},{"line_number":50,"context_line":"kept around to offer coverage. These tests are a best-effort attempt at"},{"line_number":51,"context_line":"offering RBAC test coverage for the service that has not yet migrated to"},{"line_number":52,"context_line":"policy in code."},{"line_number":53,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_52809ebe","line":50,"range":{"start_line":50,"start_character":15,"end_line":50,"end_character":20},"in_reply_to":"5f7c97a3_750624d0","updated":"2018-07-18 03:02:17.000000000","message":"Done","commit_id":"cf7728cea010602f5e58c057cdfe6ba96aa75061"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"4c4b1349bcd27e2cf6267706cfe089d5d701cd08","unresolved":false,"context_lines":[{"line_number":75,"context_line":"Test duplication means:"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"* testing an API endpoint in more than one test"},{"line_number":78,"context_line":"* testing the same policy in more than one test"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"If an API covered by a test enforces multiple policies, a best effort should"},{"line_number":81,"context_line":"be made to combine tests that test the same API endpoint against different"},{"line_number":82,"context_line":"policies by leveraging multi-policy support."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"Being explicit"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_52817ef9","line":82,"range":{"start_line":78,"start_character":0,"end_line":82,"end_character":44},"updated":"2018-07-18 02:42:18.000000000","message":"This requires some rewording, better clarification. We want to ensure we try to avoid testing the same policies. But this is not possible since policy granularity doesn\u0027t exist for all APIs. In cases where policy granularity doesn\u0027t exist, we want to make sure that the policy overlap only exists for the non-granular APIs.","commit_id":"cf7728cea010602f5e58c057cdfe6ba96aa75061"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"b7c498cc1027efab4afec0fc0be88aa3ed46156f","unresolved":false,"context_lines":[{"line_number":75,"context_line":"Test duplication means:"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"* testing an API endpoint in more than one test"},{"line_number":78,"context_line":"* testing the same policy in more than one test"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"If an API covered by a test enforces multiple policies, a best effort should"},{"line_number":81,"context_line":"be made to combine tests that test the same API endpoint against different"},{"line_number":82,"context_line":"policies by leveraging multi-policy support."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"Being explicit"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_12d466ba","line":82,"range":{"start_line":78,"start_character":0,"end_line":82,"end_character":44},"in_reply_to":"5f7c97a3_52817ef9","updated":"2018-07-18 03:02:17.000000000","message":"Done","commit_id":"cf7728cea010602f5e58c057cdfe6ba96aa75061"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"4c4b1349bcd27e2cf6267706cfe089d5d701cd08","unresolved":false,"context_lines":[{"line_number":113,"context_line":"When to approve"},{"line_number":114,"context_line":"---------------"},{"line_number":115,"context_line":"* Every patch needs two +2s before being approved."},{"line_number":116,"context_line":"* Its OK to hold off on an approval until a subject matter expert reviews it."},{"line_number":117,"context_line":"* If a patch has already been approved but requires a trivial rebase to merge,"},{"line_number":118,"context_line":"  you do not have to wait for a second +2, since the patch has already had"},{"line_number":119,"context_line":"  two +2s."}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_92907644","line":116,"range":{"start_line":116,"start_character":2,"end_line":116,"end_character":5},"updated":"2018-07-18 02:42:18.000000000","message":"It\u0027s","commit_id":"cf7728cea010602f5e58c057cdfe6ba96aa75061"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"b7c498cc1027efab4afec0fc0be88aa3ed46156f","unresolved":false,"context_lines":[{"line_number":113,"context_line":"When to approve"},{"line_number":114,"context_line":"---------------"},{"line_number":115,"context_line":"* Every patch needs two +2s before being approved."},{"line_number":116,"context_line":"* Its OK to hold off on an approval until a subject matter expert reviews it."},{"line_number":117,"context_line":"* If a patch has already been approved but requires a trivial rebase to merge,"},{"line_number":118,"context_line":"  you do not have to wait for a second +2, since the patch has already had"},{"line_number":119,"context_line":"  two +2s."}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_b2dc92e2","line":116,"range":{"start_line":116,"start_character":2,"end_line":116,"end_character":5},"in_reply_to":"5f7c97a3_92907644","updated":"2018-07-18 03:02:17.000000000","message":"Done","commit_id":"cf7728cea010602f5e58c057cdfe6ba96aa75061"}],"doc/source/REVIEWING.rst":[{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"bedafa04bd0a88025f10b4b7ae1b6b4dbee6a6c4","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Unit Tests"},{"line_number":26,"context_line":"----------"},{"line_number":27,"context_line":"For any change that adds new functionality to either common functionality or an"},{"line_number":28,"context_line":"unit tests are required. This is to ensure we don\u0027t introduce future"},{"line_number":29,"context_line":"regressions and to test conditions which we may not hit in the gate runs."},{"line_number":30,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f7c97a3_51008a34","line":27,"range":{"start_line":27,"start_character":77,"end_line":27,"end_character":79},"updated":"2018-06-12 03:14:56.000000000","message":"Incomplete sentence","commit_id":"bdc47f13f3f9301f3931fbba668463e97c1b016d"}]}
