Try to fix flaky test KillTaskIT#killTask()
The test was listing all tasks and then tried to kill the first task
from the list. Sometimes this was a short-living task that didn't exist
anymore when the delete was executed. In this case the response was 404
and not as expected 204, so that the test failed with:
killTaskTests_inOrder(com.google.gerrit.acceptance.rest.config.KillTaskIT)
java.lang.AssertionError: Expected status code 204: Not true that <404> is equal to <204>
at com.google.gerrit.acceptance.RestResponse.assertStatus(RestResponse.java:45)
at com.google.gerrit.acceptance.RestResponse.assertNoContent(RestResponse.java:65)
at com.google.gerrit.acceptance.rest.config.KillTaskIT.killTask(KillTaskIT.java:37)
at com.google.gerrit.acceptance.rest.config.KillTaskIT.killTaskTests_inOrder(KillTaskIT.java:60)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
...
Instead of attempting to delete the first task from the list, always
delete the "Log File Compressor" task, which should be always present.
Change-Id: I46708710769a70eea81336e3c6a9ac8febf2b52a
Signed-off-by: Edwin Kempin <ekempin@google.com>
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/config/KillTaskIT.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/config/KillTaskIT.java
index ece30e9..f05ecce 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/config/KillTaskIT.java
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/config/KillTaskIT.java
@@ -15,12 +15,15 @@
package com.google.gerrit.acceptance.rest.config;
import static com.google.common.truth.Truth.assertThat;
+import static java.util.stream.Collectors.toSet;
import com.google.gerrit.acceptance.AbstractDaemonTest;
import com.google.gerrit.acceptance.RestResponse;
import com.google.gerrit.server.config.ListTasks.TaskInfo;
import com.google.gson.reflect.TypeToken;
import java.util.List;
+import java.util.Optional;
+import java.util.Set;
import org.junit.Test;
public class KillTaskIT extends AbstractDaemonTest {
@@ -30,17 +33,24 @@
List<TaskInfo> result =
newGson().fromJson(r.getReader(), new TypeToken<List<TaskInfo>>() {}.getType());
r.consume();
- int taskCount = result.size();
- assertThat(taskCount).isGreaterThan(0);
- r = adminRestSession.delete("/config/server/tasks/" + result.get(0).id);
+ Optional<String> id =
+ result
+ .stream()
+ .filter(t -> "Log File Compressor".equals(t.command))
+ .map(t -> t.id)
+ .findFirst();
+ assertThat(id.isPresent()).isTrue();
+
+ r = adminRestSession.delete("/config/server/tasks/" + id.get());
r.assertNoContent();
r.consume();
r = adminRestSession.get("/config/server/tasks/");
result = newGson().fromJson(r.getReader(), new TypeToken<List<TaskInfo>>() {}.getType());
r.consume();
- assertThat(result).hasSize(taskCount - 1);
+ Set<String> ids = result.stream().map(t -> t.id).collect(toSet());
+ assertThat(ids).doesNotContain(id.get());
}
private void killTask_NotFound() throws Exception {