blob: e4320efa577e84dfee8c5187947c07a74b7c31c5 [file] [log] [blame]
Paul Duffine2363012015-11-30 16:20:41 +00001/*
2 * Copyright (C) 2013 Google Inc.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
5 * in compliance with the License. You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software distributed under the License
10 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
11 * or implied. See the License for the specific language governing permissions and limitations under
12 * the License.
13 */
14
15package com.google.caliper.config;
16
17import static com.google.common.base.Charsets.UTF_8;
18import static java.util.logging.Level.INFO;
19import static org.junit.Assert.assertEquals;
20import static org.junit.Assert.assertTrue;
21import static org.mockito.Mockito.verify;
22import static org.mockito.Mockito.when;
23
24import com.google.caliper.model.Run;
25import com.google.common.io.Files;
26
27import org.joda.time.Instant;
28import org.joda.time.format.ISODateTimeFormat;
29import org.junit.Before;
30import org.junit.Rule;
31import org.junit.Test;
32import org.junit.rules.TemporaryFolder;
33import org.junit.runner.RunWith;
34import org.mockito.ArgumentCaptor;
35import org.mockito.Captor;
36import org.mockito.Mock;
37import org.mockito.runners.MockitoJUnitRunner;
38
39import java.io.File;
40import java.io.IOException;
41import java.util.UUID;
42import java.util.logging.FileHandler;
43import java.util.logging.Handler;
44import java.util.logging.LogManager;
45import java.util.logging.LogRecord;
46import java.util.logging.Logger;
47import java.util.logging.SimpleFormatter;
48
49/**
50 * Tests {@link LoggingConfigLoader}.
51 */
52
53@RunWith(MockitoJUnitRunner.class)
54public class LoggingConfigLoaderTest {
55 @Rule public TemporaryFolder folder = new TemporaryFolder();
56
57 @Mock LogManager logManager;
58 @Mock Logger logger;
59 @Captor ArgumentCaptor<Handler> handlerCaptor;
60
61 private LoggingConfigLoader loader;
62 private UUID runId = UUID.randomUUID();
63 private Instant startTime = new Instant();
64 private File caliperDirectory;
65
66 @Before public void setUp() throws IOException {
67 this.caliperDirectory = folder.newFolder();
68 this.loader = new LoggingConfigLoader(caliperDirectory, logManager, new Run.Builder(runId)
69 .label("fake run")
70 .startTime(startTime)
71 .build());
72 }
73
74 @Test public void testLoadDefaultLogConfiguration()
75 throws SecurityException, IOException {
76 when(logManager.getLogger("")).thenReturn(logger);
77 loader.maybeLoadDefaultLogConfiguration(logManager);
78 verify(logManager).reset();
79 verify(logger).addHandler(handlerCaptor.capture());
80 FileHandler fileHandler = (FileHandler) handlerCaptor.getValue();
81 assertEquals(UTF_8.name(), fileHandler.getEncoding());
82 assertTrue(fileHandler.getFormatter() instanceof SimpleFormatter);
83 fileHandler.publish(new LogRecord(INFO, "some message"));
84 File logFile = new File(new File(caliperDirectory, "log"),
85 ISODateTimeFormat.basicDateTimeNoMillis().print(startTime) + "." + runId + ".log");
86 assertTrue(logFile.isFile());
87 assertTrue(Files.toString(logFile, UTF_8).contains("some message"));
88 }
89}