in javatests/com/google/gerrit/plugins/checks/acceptance/api/QueryPendingChecksIT.java [696:783]
public void queryPendingChecksWithScheme() throws Exception {
// create a check with a scheme that we expect to never be returned.
CheckerUuid checkerUuidOtherScheme =
checkerOperations
.newChecker()
.uuid(CheckerUuid.parse("otherscheme:checker-1"))
.repository(project)
.create();
checkOperations
.newCheck(CheckKey.create(project, patchSetId, checkerUuidOtherScheme))
.state(CheckState.NOT_STARTED)
.upsert();
CheckerUuid checkerUuid =
checkerOperations
.newChecker()
.uuid(CheckerUuid.parse("test:checker-1"))
.repository(project)
.create();
// Create a check with state "NOT_STARTED" that we expect to be returned.
checkOperations
.newCheck(CheckKey.create(project, patchSetId, checkerUuid))
.state(CheckState.NOT_STARTED)
.upsert();
// Create a check with state "SCHEDULED" that we expect to be returned.
PatchSet.Id patchSetId2 = createChange().getPatchSetId();
checkOperations
.newCheck(CheckKey.create(project, patchSetId2, checkerUuid))
.state(CheckState.SCHEDULED)
.upsert();
// Create a check with state "SUCCESSFUL" that we expect to be ignored.
PatchSet.Id patchSetId3 = createChange().getPatchSetId();
checkOperations
.newCheck(CheckKey.create(project, patchSetId3, checkerUuid))
.state(CheckState.SUCCESSFUL)
.upsert();
// Create a check with state "SUCCESSFUL" that we expect to be ignored, for patchsetId.
// by default, patchSetId2 and patchSetId3 should be NOT_STARTED, and should be returned.
CheckerUuid checkerUuid2 =
checkerOperations
.newChecker()
.uuid(CheckerUuid.parse("test:checker-2"))
.repository(project)
.create();
assertThat(checkerUuid2.scheme()).isEqualTo("test");
checkOperations
.newCheck(CheckKey.create(project, patchSetId, checkerUuid2))
.state(CheckState.FAILED)
.upsert();
List<PendingChecksInfo> pendingChecksList =
queryPendingChecks("test", CheckState.NOT_STARTED, CheckState.SCHEDULED);
assertThat(pendingChecksList).hasSize(4);
// The sorting of the pendingChecksList matches the sorting in which the matching changes are
// returned from the change index, which is by last updated timestamp. Use this knowledge here
// to do the assertions although the REST endpoint doesn't document a guaranteed sort order.
PendingChecksInfo pendingChecksChange = pendingChecksList.get(0);
assertThat(pendingChecksChange).hasRepository(project);
assertThat(pendingChecksChange).hasPatchSet(patchSetId2);
assertThat(pendingChecksChange)
.hasPendingChecksMapThat()
.containsExactly(checkerUuid.get(), new PendingCheckInfo(CheckState.SCHEDULED));
pendingChecksChange = pendingChecksList.get(1);
assertThat(pendingChecksChange).hasRepository(project);
assertThat(pendingChecksChange).hasPatchSet(patchSetId);
assertThat(pendingChecksChange)
.hasPendingChecksMapThat()
.containsExactly(checkerUuid.get(), new PendingCheckInfo(CheckState.NOT_STARTED));
pendingChecksChange = pendingChecksList.get(2);
assertThat(pendingChecksChange).hasRepository(project);
assertThat(pendingChecksChange).hasPatchSet(patchSetId3);
assertThat(pendingChecksChange)
.hasPendingChecksMapThat()
.containsExactly(checkerUuid2.get(), new PendingCheckInfo(CheckState.NOT_STARTED));
pendingChecksChange = pendingChecksList.get(3);
assertThat(pendingChecksChange).hasRepository(project);
assertThat(pendingChecksChange).hasPatchSet(patchSetId2);
assertThat(pendingChecksChange)
.hasPendingChecksMapThat()
.containsExactly(checkerUuid2.get(), new PendingCheckInfo(CheckState.NOT_STARTED));
}