| --- |
| title: Contribute | Post-commit test policies |
| layout: default |
| --- |
| |
| <!-- Marketing messaging and featurettes |
| ================================================== --> |
| <!-- Wrap the rest of the page in another container to center all the content. --> |
| |
| <div class="container"> |
| <!-- CONTRIBUTE --> |
| <div class="row mb-5 mt-5 pt-3"> |
| <div class="col-2 sidenav-menu pt-3"> |
| <div class="pb-3 text-uppercase"><strong>Contribute</strong></div> |
| <ul class="list-unstyled mb-3"> |
| <li><a href="contribute.html">Get started contributing</a></li> |
| <li class="sidenav-menu-sub-title">Technical Docs</li> |
| <li> |
| <ul class="list-unstyled sidenav-menu-sub-list"> |
| <li><a href="contribute-testing.html">Testing guide</a></li> |
| <li><a href="contribute-dependencies-guide.html">Dependencies guide</a></li> |
| </ul> |
| </li> |
| <li class="sidenav-menu-sub-title">Policies</li> |
| <li> |
| <ul class="list-unstyled sidenav-menu-sub-list"> |
| <li><a href="contribute-pre-commit-test-policies.html">Pre-commit test policies</a></li> |
| <li><a href="contribute-post-commit-test-policies.html">Post-commit test policies</a></li> |
| </ul> |
| </li> |
| <li class="sidenav-menu-sub-title">Committers</li> |
| <li> |
| <ul class="list-unstyled sidenav-menu-sub-list"> |
| <li><a href="contribute-become-a-committer.html">Become a committer</a></li> |
| <li><a href="contribute-committer-guide.html">Committer guide</a></li> |
| <li><a href="contribute-release-guide.html">Release guide</a></li> |
| </ul> |
| </li> |
| </ul> |
| </div> |
| <div class="col-8 pt-3 offset-4"> |
| <h2>Post-commit tests policies</h2> |
| |
| <p>Post-commit tests validate that Unomi works correctly in a live environment. The tests also catch errors that are hard to predict in the design and implementation stages</p> |
| |
| <p>Even though post-commit tests run after the code is merged into the repository, it is important that the tests pass reliably. Jenkins executes post-commit tests against the HEAD of the master branch. If post-commit tests fail, there is a problem with the HEAD build. In addition, post-commit tests are time consuming to run, and it is often hard to triage test failures.</p> |
| |
| <h3>Policies</h3> |
| |
| <p>To ensure that Unomi's post-commit tests are reliable and healthy, the Unomi community follows these post-commit test policies:</p> |
| |
| <ul> |
| <li><a href="contribute-post-commit-policies-details.html#rollback_first">Rollback first</a></li> |
| <li><a href="contribute-post-commit-policies-details.html#failing_test_is_critical_bug">A failing test is a critical bug</a></li> |
| <li><a href="contribute-post-commit-policies-details.html#flake_is_failing">A flaky test is a critical bug</a></li> |
| <li><a href="contribute-post-commit-policies-details.html#remove_flake">Flaky tests must either be fixed or removed</a></li> |
| <li><a href="contribute-post-commit-policies-details.html#precommit_for_postcommit">Fixes for post-commit failures should include a corresponding new pre-commit test</a></li> |
| </ul> |
| |
| <h3>Post-commit test failure scenarios</h3> |
| |
| <p>When a post-commit test fails, follow the provided steps for your situation.</p> |
| |
| <h4>I found a test failure</h4> |
| |
| <ol> |
| <li>Create a <a target="_blank" href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20UNOMI%20AND%20component%20%3D%20test-failures">JIRA issue</a> and assign it to yourself.</li> |
| <li>Do high level triage of the failure.</li> |
| <li><a href="contribute-post-commit-guides.html#find_specialist">Assign the JIRA issue to a relevant person</a>.</li> |
| </ol> |
| |
| <h4>I was assigned a JIRA issue for a test failure</h4> |
| |
| <ol> |
| <li><a href="contribute-post-commit-guides.html#rollback">Rollback the culprit change</a>.</li> |
| <li>If you determine that rollback will take longer than 8 hours, <a href="contribute-post-commit-guides.html#disabling">disable the test temporarily</a> while you rollback or create a fix.</li> |
| </ol> |
| |
| <blockquote> |
| <p>Note: Rollback is always the first course of action. If a fix is trivial, open a pull request with the proposed fix while doing rollback.</p> |
| </blockquote> |
| |
| <h4>My change was rolled back due to a test failure</h4> |
| |
| <ol> |
| <li>Look at the JIRA issue to find the reason for the rollback.</li> |
| <li>Fix your code and re-run the post-commit tests.</li> |
| <li>Implement new pre-commit tests that will catch similar bugs before future code is merged into the repository.</li> |
| <li>Open a new PR that contains your fix and the new pre-commit tests.</li> |
| </ol> |
| |
| <h3>Useful links</h3> |
| |
| <ul> |
| <li><a href="contribute-testing.html#best_practices">Best practices for writing tests</a></li> |
| </ul> |
| </div> |
| </div> |
| </div> |