summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaushik Lingarkar <kaushik.lingarkar@linaro.org>2022-09-14 10:34:14 -0700
committerKaushik Lingarkar <kaushik.lingarkar@linaro.org>2022-09-14 10:41:58 -0700
commit068990cb2a33d1f2801ad429fb63168a2d8f8e91 (patch)
tree15ab617713aa91693ef9e2e542507ddbde4f3886
parent1f0a20d24ccad92ea548c1892b381dee7adc05d4 (diff)
Improve test coverage for no-limit query pagination
no-limit query pagination was introduced in Ifb1f6f54 but a test could not be added in that change as the fake index implementation did not allow it. Release-Notes: skip Change-Id: If088f45597b9d2bcdbe8f9a7ea2d0d3e4c2744ed
-rw-r--r--javatests/com/google/gerrit/server/query/change/FakeQueryChangesTest.java31
1 files changed, 31 insertions, 0 deletions
diff --git a/javatests/com/google/gerrit/server/query/change/FakeQueryChangesTest.java b/javatests/com/google/gerrit/server/query/change/FakeQueryChangesTest.java
index ef7a3fbd09..01ae9601e5 100644
--- a/javatests/com/google/gerrit/server/query/change/FakeQueryChangesTest.java
+++ b/javatests/com/google/gerrit/server/query/change/FakeQueryChangesTest.java
@@ -15,13 +15,16 @@
package com.google.gerrit.server.query.change;
import static com.google.common.truth.Truth.assertThat;
+import static com.google.gerrit.acceptance.testsuite.project.TestProjectUpdate.allowCapability;
import static com.google.gerrit.acceptance.testsuite.project.TestProjectUpdate.block;
+import static com.google.gerrit.common.data.GlobalCapability.QUERY_LIMIT;
import static com.google.gerrit.server.group.SystemGroupBackend.REGISTERED_USERS;
import com.google.gerrit.acceptance.UseClockStep;
import com.google.gerrit.entities.Permission;
import com.google.gerrit.entities.Project;
import com.google.gerrit.index.testing.AbstractFakeIndex;
+import com.google.gerrit.server.config.AllProjectsName;
import com.google.gerrit.server.index.change.ChangeIndexCollection;
import com.google.gerrit.testing.InMemoryModule;
import com.google.gerrit.testing.InMemoryRepositoryManager;
@@ -40,6 +43,7 @@ import org.junit.Test;
*/
public abstract class FakeQueryChangesTest extends AbstractQueryChangesTest {
@Inject private ChangeIndexCollection changeIndexCollection;
+ @Inject protected AllProjectsName allProjects;
@Override
protected Injector createInjector() {
@@ -74,4 +78,31 @@ public abstract class FakeQueryChangesTest extends AbstractQueryChangesTest {
// only 1 index search is expected.
assertThat(idx.getQueryCount()).isEqualTo(1);
}
+
+ @Test
+ @UseClockStep
+ @SuppressWarnings("unchecked")
+ public void noLimitQueryPaginates() throws Exception {
+ TestRepository<InMemoryRepositoryManager.Repo> testRepo = createProject("repo");
+ // create 4 changes
+ insert(testRepo, newChange(testRepo));
+ insert(testRepo, newChange(testRepo));
+ insert(testRepo, newChange(testRepo));
+ insert(testRepo, newChange(testRepo));
+
+ // Set queryLimit to 2
+ projectOperations
+ .project(allProjects)
+ .forUpdate()
+ .add(allowCapability(QUERY_LIMIT).group(REGISTERED_USERS).range(0, 2))
+ .update();
+
+ AbstractFakeIndex idx = (AbstractFakeIndex) changeIndexCollection.getSearchIndex();
+
+ // 2 index searches are expected. The first index search will run with size 2 (i.e.
+ // the configured query-limit), and then we will paginate to get the remaining 2
+ // changes with the second index search.
+ newQuery("status:new").withNoLimit().get();
+ assertThat(idx.getQueryCount()).isEqualTo(2);
+ }
}