aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test
diff options
context:
space:
mode:
authorGravatar arostovtsev <arostovtsev@google.com>2018-08-10 00:26:27 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-08-10 00:28:36 -0700
commitf11a0f70394746b11ea12bffd820d1983321b52d (patch)
tree376581ba52b3d812eb66bde5875bb74968887e55 /src/test
parentdf16c77a501ba634b30a1e3d6f76023ac9ea93a9 (diff)
Introduce a retriever for logging handler properties.
We want a way for Bazel to find a logging handler's current log file without direct dependencies on the exact handler class. We do this with an abstract parent class whose concrete child class (to be used as a singleton) will be given in startup_options, i.e. in the same place as the server logging configuration. RELNOTES: None. PiperOrigin-RevId: 208171084
Diffstat (limited to 'src/test')
-rw-r--r--src/test/java/com/google/devtools/build/lib/BUILD1
-rw-r--r--src/test/java/com/google/devtools/build/lib/util/SimpleLogHandlerTest.java53
2 files changed, 54 insertions, 0 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/BUILD b/src/test/java/com/google/devtools/build/lib/BUILD
index f030b0abe0..50d954e62e 100644
--- a/src/test/java/com/google/devtools/build/lib/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/BUILD
@@ -324,6 +324,7 @@ java_test(
"//src/main/java/com/google/devtools/build/lib/vfs",
"//src/main/java/com/google/devtools/build/lib/vfs/inmemoryfs",
"//src/main/java/com/google/devtools/common/options",
+ "//third_party:truth8",
],
)
diff --git a/src/test/java/com/google/devtools/build/lib/util/SimpleLogHandlerTest.java b/src/test/java/com/google/devtools/build/lib/util/SimpleLogHandlerTest.java
index a8f95727f7..4b889508af 100644
--- a/src/test/java/com/google/devtools/build/lib/util/SimpleLogHandlerTest.java
+++ b/src/test/java/com/google/devtools/build/lib/util/SimpleLogHandlerTest.java
@@ -15,10 +15,12 @@
package com.google.devtools.build.lib.util;
import static com.google.common.truth.Truth.assertThat;
+import static com.google.common.truth.Truth8.assertThat;
import static com.google.devtools.build.lib.testutil.MoreAsserts.assertThrows;
import static java.nio.charset.StandardCharsets.UTF_8;
import com.google.common.base.Strings;
+import com.google.devtools.build.lib.util.SimpleLogHandler.HandlerQuerier;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
@@ -39,9 +41,11 @@ import java.util.Arrays;
import java.util.Date;
import java.util.Optional;
import java.util.TimeZone;
+import java.util.logging.FileHandler;
import java.util.logging.Formatter;
import java.util.logging.Level;
import java.util.logging.LogRecord;
+import java.util.logging.Logger;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
@@ -386,4 +390,53 @@ public final class SimpleLogHandlerTest {
assertThat(Files.exists(kept)).isTrue();
assertThat(Files.exists(currentLogPath)).isTrue();
}
+
+ @Test
+ public void getLoggerFilePath_onSimpleLogHandler_withFile_returnsPath() throws Exception {
+ HandlerQuerier handlerQuerier = new HandlerQuerier();
+ SimpleLogHandler handler =
+ SimpleLogHandler.builder().setPrefix(tmp.getRoot() + File.separator + "hello").build();
+ Logger logger = Logger.getAnonymousLogger();
+ logger.addHandler(handler);
+ handler.publish(new LogRecord(Level.SEVERE, "Hello world")); // Ensure log file is opened.
+
+ Optional<Path> retrievedLogPath = handlerQuerier.getLoggerFilePath(logger);
+
+ assertThat(retrievedLogPath).isPresent();
+ assertThat(retrievedLogPath.get().toString())
+ .startsWith(tmp.getRoot() + File.separator + "hello");
+
+ handler.close();
+ }
+
+ @Test
+ public void getLoggerFilePath_onSimpleLogHandler_withoutFile_returnsEmpty() throws Exception {
+ HandlerQuerier handlerQuerier = new HandlerQuerier();
+ SimpleLogHandler handler =
+ SimpleLogHandler.builder().setPrefix(tmp.getRoot() + File.separator + "hello").build();
+ Logger logger = Logger.getAnonymousLogger();
+ logger.addHandler(handler);
+
+ assertThat(handlerQuerier.getLoggerFilePath(logger)).isEmpty();
+ }
+
+ @Test
+ public void getLoggerFilePath_onUnsupportedLogHandler_fails() throws Exception {
+ HandlerQuerier handlerQuerier = new HandlerQuerier();
+ FileHandler unsupportedHandler = new FileHandler(tmp.getRoot() + File.separator + "hello");
+ Logger logger = Logger.getAnonymousLogger();
+ logger.addHandler(unsupportedHandler);
+
+ assertThrows(IllegalArgumentException.class, () -> handlerQuerier.getLoggerFilePath(logger));
+
+ unsupportedHandler.close();
+ }
+
+ @Test
+ public void getLoggerFilePath_onMissingLogHandler_fails() throws Exception {
+ HandlerQuerier handlerQuerier = new HandlerQuerier();
+ Logger logger = Logger.getAnonymousLogger();
+
+ assertThrows(IllegalArgumentException.class, () -> handlerQuerier.getLoggerFilePath(logger));
+ }
}