Merge "StalenessChecker: Expose some more public methods"
This commit is contained in:
@@ -84,7 +84,7 @@ public class StalenessChecker {
|
||||
this.db = db;
|
||||
}
|
||||
|
||||
boolean isStale(Change.Id id) throws IOException, OrmException {
|
||||
public boolean isStale(Change.Id id) throws IOException, OrmException {
|
||||
ChangeIndex i = indexes.getSearchIndex();
|
||||
if (i == null) {
|
||||
return false; // No index; caller couldn't do anything if it is stale.
|
||||
@@ -100,17 +100,24 @@ public class StalenessChecker {
|
||||
return true; // Not in index, but caller wants it to be.
|
||||
}
|
||||
ChangeData cd = result.get();
|
||||
if (reviewDbChangeIsStale(
|
||||
cd.change(),
|
||||
ChangeNotes.readOneReviewDbChange(db.get(), cd.getId()))) {
|
||||
return true;
|
||||
}
|
||||
return isStale(repoManager, id, cd.change(),
|
||||
ChangeNotes.readOneReviewDbChange(db.get(), id),
|
||||
parseStates(cd), parsePatterns(cd));
|
||||
}
|
||||
|
||||
return isStale(repoManager, id, parseStates(cd), parsePatterns(cd));
|
||||
public static boolean isStale(
|
||||
GitRepositoryManager repoManager,
|
||||
Change.Id id,
|
||||
Change indexChange,
|
||||
@Nullable Change reviewDbChange,
|
||||
SetMultimap<Project.NameKey, RefState> states,
|
||||
Multimap<Project.NameKey, RefStatePattern> patterns) {
|
||||
return reviewDbChangeIsStale(indexChange, reviewDbChange)
|
||||
|| refsAreStale(repoManager, id, states, patterns);
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
static boolean isStale(GitRepositoryManager repoManager,
|
||||
static boolean refsAreStale(GitRepositoryManager repoManager,
|
||||
Change.Id id,
|
||||
SetMultimap<Project.NameKey, RefState> states,
|
||||
Multimap<Project.NameKey, RefStatePattern> patterns) {
|
||||
@@ -118,7 +125,7 @@ public class StalenessChecker {
|
||||
Sets.union(states.keySet(), patterns.keySet());
|
||||
|
||||
for (Project.NameKey p : projects) {
|
||||
if (isStale(repoManager, id, p, states, patterns)) {
|
||||
if (refsAreStale(repoManager, id, p, states, patterns)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -145,8 +152,7 @@ public class StalenessChecker {
|
||||
return parseStates(cd.getRefStates());
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
static SetMultimap<Project.NameKey, RefState> parseStates(
|
||||
public static SetMultimap<Project.NameKey, RefState> parseStates(
|
||||
Iterable<byte[]> states) {
|
||||
RefState.check(states != null, null);
|
||||
SetMultimap<Project.NameKey, RefState> result = HashMultimap.create();
|
||||
@@ -188,7 +194,7 @@ public class StalenessChecker {
|
||||
return result;
|
||||
}
|
||||
|
||||
private static boolean isStale(GitRepositoryManager repoManager,
|
||||
private static boolean refsAreStale(GitRepositoryManager repoManager,
|
||||
Change.Id id, Project.NameKey project,
|
||||
SetMultimap<Project.NameKey, RefState> allStates,
|
||||
Multimap<Project.NameKey, RefStatePattern> allPatterns) {
|
||||
|
||||
@@ -16,7 +16,7 @@ package com.google.gerrit.server.index.change;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static com.google.common.truth.Truth.assert_;
|
||||
import static com.google.gerrit.server.index.change.StalenessChecker.isStale;
|
||||
import static com.google.gerrit.server.index.change.StalenessChecker.refsAreStale;
|
||||
import static com.google.gerrit.testutil.TestChanges.newChange;
|
||||
import static java.nio.charset.StandardCharsets.UTF_8;
|
||||
import static java.util.stream.Collectors.toList;
|
||||
@@ -189,7 +189,7 @@ public class StalenessCheckerTest extends GerritBaseTests {
|
||||
|
||||
// Not stale.
|
||||
assertThat(
|
||||
isStale(
|
||||
refsAreStale(
|
||||
repoManager, C,
|
||||
ImmutableSetMultimap.of(
|
||||
P1, RefState.create(ref1, id1.name()),
|
||||
@@ -199,7 +199,7 @@ public class StalenessCheckerTest extends GerritBaseTests {
|
||||
|
||||
// Wrong ref value.
|
||||
assertThat(
|
||||
isStale(
|
||||
refsAreStale(
|
||||
repoManager, C,
|
||||
ImmutableSetMultimap.of(
|
||||
P1, RefState.create(ref1, SHA1),
|
||||
@@ -209,7 +209,7 @@ public class StalenessCheckerTest extends GerritBaseTests {
|
||||
|
||||
// Swapped repos.
|
||||
assertThat(
|
||||
isStale(
|
||||
refsAreStale(
|
||||
repoManager, C,
|
||||
ImmutableSetMultimap.of(
|
||||
P1, RefState.create(ref1, id2.name()),
|
||||
@@ -222,7 +222,7 @@ public class StalenessCheckerTest extends GerritBaseTests {
|
||||
ObjectId id3 = tr1.update(ref3, tr1.commit().message("commit 3"));
|
||||
tr1.update(ref3, id3);
|
||||
assertThat(
|
||||
isStale(
|
||||
refsAreStale(
|
||||
repoManager, C,
|
||||
ImmutableSetMultimap.of(
|
||||
P1, RefState.create(ref1, id1.name()),
|
||||
@@ -232,7 +232,7 @@ public class StalenessCheckerTest extends GerritBaseTests {
|
||||
|
||||
// Ignore ref not mentioned.
|
||||
assertThat(
|
||||
isStale(
|
||||
refsAreStale(
|
||||
repoManager, C,
|
||||
ImmutableSetMultimap.of(
|
||||
P1, RefState.create(ref1, id1.name())),
|
||||
@@ -241,7 +241,7 @@ public class StalenessCheckerTest extends GerritBaseTests {
|
||||
|
||||
// One ref wrong.
|
||||
assertThat(
|
||||
isStale(
|
||||
refsAreStale(
|
||||
repoManager, C,
|
||||
ImmutableSetMultimap.of(
|
||||
P1, RefState.create(ref1, id1.name()),
|
||||
@@ -257,7 +257,7 @@ public class StalenessCheckerTest extends GerritBaseTests {
|
||||
|
||||
// ref1 is only ref matching pattern.
|
||||
assertThat(
|
||||
isStale(
|
||||
refsAreStale(
|
||||
repoManager, C,
|
||||
ImmutableSetMultimap.of(
|
||||
P1, RefState.create(ref1, id1.name())),
|
||||
@@ -269,7 +269,7 @@ public class StalenessCheckerTest extends GerritBaseTests {
|
||||
String ref2 = "refs/heads/bar";
|
||||
ObjectId id2 = tr1.update(ref2, tr1.commit().message("commit 2"));
|
||||
assertThat(
|
||||
isStale(
|
||||
refsAreStale(
|
||||
repoManager, C,
|
||||
ImmutableSetMultimap.of(
|
||||
P1, RefState.create(ref1, id1.name())),
|
||||
@@ -277,7 +277,7 @@ public class StalenessCheckerTest extends GerritBaseTests {
|
||||
P1, RefStatePattern.create("refs/heads/*"))))
|
||||
.isTrue();
|
||||
assertThat(
|
||||
isStale(
|
||||
refsAreStale(
|
||||
repoManager, C,
|
||||
ImmutableSetMultimap.of(
|
||||
P1, RefState.create(ref1, id1.name()),
|
||||
@@ -295,7 +295,7 @@ public class StalenessCheckerTest extends GerritBaseTests {
|
||||
|
||||
// ref1 is only ref matching pattern.
|
||||
assertThat(
|
||||
isStale(
|
||||
refsAreStale(
|
||||
repoManager, C,
|
||||
ImmutableSetMultimap.of(
|
||||
P1, RefState.create(ref1, id1.name())),
|
||||
@@ -307,7 +307,7 @@ public class StalenessCheckerTest extends GerritBaseTests {
|
||||
String ref3 = "refs/other/foo";
|
||||
ObjectId id3 = tr1.update(ref3, tr1.commit().message("commit 3"));
|
||||
assertThat(
|
||||
isStale(
|
||||
refsAreStale(
|
||||
repoManager, C,
|
||||
ImmutableSetMultimap.of(
|
||||
P1, RefState.create(ref1, id1.name())),
|
||||
@@ -315,7 +315,7 @@ public class StalenessCheckerTest extends GerritBaseTests {
|
||||
P1, RefStatePattern.create("refs/*/foo"))))
|
||||
.isTrue();
|
||||
assertThat(
|
||||
isStale(
|
||||
refsAreStale(
|
||||
repoManager, C,
|
||||
ImmutableSetMultimap.of(
|
||||
P1, RefState.create(ref1, id1.name()),
|
||||
|
||||
Reference in New Issue
Block a user