diff options
author | Harald Musum <musum@yahooinc.com> | 2022-10-06 08:00:14 +0200 |
---|---|---|
committer | Harald Musum <musum@yahooinc.com> | 2022-10-06 08:00:14 +0200 |
commit | 340c98470903faa343d03d0b7ad4abdc24c9d2ce (patch) | |
tree | a1df8a701135e601991c59a7efb166279ed26d68 /container-search | |
parent | 9b291caa34a2b61be45e63d5bb539c136df616e0 (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.java | 49 |
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(); + } + + } + } |