Testing updates

Bodhi’s primary use case is to gate proposed software updates based on testing feedback. Feedback can be provided automatically by CI systems, or can be provided by humans through comments and karma.

Karma

Authenticated users may post positive or negative karma onto an update, along with a comment to describe their experience. Once the update reaches its karma threshold (set by the packager), it may be pushed out to the stable repositories. This will happen automatically if the update is configured to use Bodhi’s autokarma system, or manually by the packager if it is not.

Some updates are associated with Bugzilla tickets, and these updates will allow the tester to mark whether they think the given bug is addressed by the update. Updates may also be linked to Wiki documents that describe a testing plan for the associated packages, and the tester may provide feedback for each of the wiki test pages as well.

Automated tests

Bodhi may also provide feedback from automated test systems if it is configured to do so. To view this feedback, click on the update’s “Automated Tests” tab.

Bodhi may also be configured to query Greenwave for automated test based gating decisions on updates. If this is enabled, the update’s web page will display the current status of Greenwave’s gating decision.

Stable push

An update can be pushed to stable repository either manually or automatically, through Bodhi’s autotime or autokarma features.

For becoming pushable to stable an update must fulfill some criteria set by the associated release. Typically, each release has critpath.mandatory_days_in_testing, mandatory_days_in_testing and min_karma values that define thresholds for associated updates to be pushed to stable. The mandatory_days_in_testing settings define an amount of days of waiting in the updates repository for critical path and non-critical-path updates respectively. The min_karma setting specifies a karma total threshold. An update can be manually pushed to stable by its submitter or anyone else with edit privileges on the update when either threshold is reached. For example, if a release has a min_karma of 2, an update which reaches +2 karma can be pushed to stable even if it hasn’t reached the `mandatory_days_in_testing`.

When submitting an update, the user can enable the autotime and the autokarma features and set the related values stable_days and stable_karma for that specific update. The stable_days value defines an amount of days the update must spend in testing repository before the autopush is done. It must be equal to or greater than the mandatory_days_in_testing value that applies to the update. The stable_karma value defines a karma total the update must reach before the autopush is done. It must be equal to or greater than the release min_karma. Autopush will happen as soon as either threshold is reached. For example, if a release has a mandatory_days_in_testing of 7, an update which has autotime enabled and stable_days set to 10 will be pushable after 7 days by manual action, but the autopush will be performed after 3 more days. If an update has both autotime and autokarma enabled, with thresholds of 7 days and 3 karma respectively, it will be pushed stable as soon as it reaches +3 karma, even if 7 days have not yet passed; or it will be pushed stable after 7 days have passed, even if it has not yet reached +3 karma.