summaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
authorHarald Musum <musum@yahooinc.com>2022-10-06 08:00:14 +0200
committerHarald Musum <musum@yahooinc.com>2022-10-06 08:00:14 +0200
commit340c98470903faa343d03d0b7ad4abdc24c9d2ce (patch)
treea1df8a701135e601991c59a7efb166279ed26d68 /container-search
parent9b291caa34a2b61be45e63d5bb539c136df616e0 (diff)
Add test of failing transport call, should be retried
Diffstat (limited to 'container-search')
-rw-r--r--container-search/src/test/java/com/yahoo/search/logging/SpoolerTest.java49
1 files changed, 49 insertions, 0 deletions
diff --git a/container-search/src/test/java/com/yahoo/search/logging/SpoolerTest.java b/container-search/src/test/java/com/yahoo/search/logging/SpoolerTest.java
index 2413dac18d9..af371b7da93 100644
--- a/container-search/src/test/java/com/yahoo/search/logging/SpoolerTest.java
+++ b/container-search/src/test/java/com/yahoo/search/logging/SpoolerTest.java
@@ -51,6 +51,24 @@ public class SpoolerTest {
assertEquals(0, spooler.listFilesInPath(spooler.failuresPath()).size());
}
+ @Test
+ public void failingToTransportIsRetried() throws IOException {
+ Path spoolDir = tempDir.resolve("spool");
+ Spooler spooler = new Spooler(spoolDir);
+ FailingToTransportSecondEntryLogger logger = new FailingToTransportSecondEntryLogger(spooler);
+
+ assertTrue(sendEntry(logger, "Yo entry"));
+ logger.manualRun(); // Success for first message
+ assertEquals(1, spooler.listFilesInPath(spooler.successesPath()).size());
+
+ assertTrue(sendEntry(logger, "Yo entry 2"));
+ logger.manualRun(); // Failure for second message, so still just 1 file in successes path
+ assertEquals(1, spooler.listFilesInPath(spooler.successesPath()).size());
+
+ logger.manualRun(); // Success when retrying second message, so 2 files in successes path
+ assertEquals(2, spooler.listFilesInPath(spooler.successesPath()).size());
+ }
+
private boolean sendEntry(Logger logger, String x) {
return logger.newEntry()
.blob(x.getBytes())
@@ -110,4 +128,35 @@ public class SpoolerTest {
}
+ private static class FailingToTransportSecondEntryLogger extends AbstractSpoolingLogger {
+
+ private int transportCount = 0;
+
+ public FailingToTransportSecondEntryLogger(Spooler spooler) {
+ super(spooler);
+ }
+
+ @Override
+ public boolean send(LoggerEntry entry) {
+ spooler.write(entry);
+ return true;
+ }
+
+ @Override
+ boolean transport(LoggerEntry entry) {
+ transportCount++;
+ return transportCount != 2;
+ }
+
+ @Override
+ public void run() {
+ // do nothing
+ }
+
+ public void manualRun() {
+ super.run();
+ }
+
+ }
+
}