Package fitnesse.components

Source Code of fitnesse.components.LoggerTest

// Copyright (C) 2003-2009 by Object Mentor, Inc. All rights reserved.
// Released under the terms of the CPL Common Public License version 1.0.

package fitnesse.components;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Locale;
import java.util.TimeZone;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import util.FileUtil;

public class LoggerTest {
  private final String dirPath = "testLogs";
  private Logger l;
  private LogData ld;
  private String filename = "fitnesse20030306134205.log";
  private String logLine = "myHost - - [06/Mar/2003:13:42:05 -0100] \"request\" 42 666";
  private Locale saveLocale;

  @Before
  public void setUp() throws Exception {
    saveLocale = Locale.getDefault();
    Locale.setDefault(Locale.US);
    l = new Logger(dirPath);
    TimeZone z = TimeZone.getTimeZone("GMT-1:00");
    Calendar time = new GregorianCalendar(2003, 2, 6, 13, 42, 5);
    time.setTimeZone(z);
    ld = new LogData(
            "myHost",
            time,
            "request",
            42,
            666,
            null);
  }

  @After
  public void tearDown() throws Exception {
    l.close();
    FileUtil.deleteFileSystemDirectory(dirPath);
    Locale.setDefault(saveLocale);
  }

  @Test
  public void testTimeZoneHandling() {
    // let's figure out how this stuff works...
    Calendar calendar = new GregorianCalendar(2003, 0, 2, 3, 4, 5);
    calendar.setTimeZone(TimeZone.getTimeZone("GMT+2"));

    DateFormat format = new SimpleDateFormat("MMM dd, yyyy hh:mm:ss Z");

    DateFormat format2 = (DateFormat) format.clone();
    format2.setTimeZone(calendar.getTimeZone());

    assertEquals("Jan 02, 2003 03:04:05 +0200", format2.format(calendar.getTime()));
  }

  @Test
  public void testConstruction() throws Exception {
    assertEquals(dirPath, l.getDirectory().getName());
    File dir = new File(dirPath);
    assertEquals(true, dir.exists());
    assertEquals(true, dir.isDirectory());
  }

  @Test
  public void testLogFormat() throws Exception {
    String line = l.formatLogLine(ld);
    assertEquals(logLine, line);
  }

  @Test
  public void testLogFileName() throws Exception {
    String logName = Logger.makeLogFileName(ld.time);
    assertEquals(filename, logName);
  }

  @Test
  public void testLoggingOneLineInNewFile() throws Exception {
    l.log(ld);
    l.close();
    File dir = l.getDirectory();
    File file = new File(dir, filename);
    assertTrue(file.exists());
    String contents = FileUtil.getFileContent(file);
    assertEquals(logLine + System.getProperty("line.separator"), contents);
  }

  @Test
  public void testLogSecondLineInSameFile() throws Exception {
    l.log(ld);
    LogData ld2 = new LogData(
            "newHost",
            ld.time,
            ld.requestLine,
            ld.status,
            ld.size,
            ld.username);
    l.log(ld2);
    File dir = l.getDirectory();
    File file = new File(dir, filename);
    BufferedReader br = new BufferedReader(new FileReader(file));
    assertEquals(logLine, br.readLine());
    assertEquals("newHost - - [06/Mar/2003:13:42:05 -0100] \"request\" 42 666", br.readLine());
    assertTrue(br.readLine() == null);
    br.close();
  }

  @Test
  public void testLogLineInNewFile() throws Exception {
    Calendar time = (Calendar) ld.time.clone();
    time.add(Calendar.DATE, 1);
    LogData nextDay = new LogData(
            ld.host,
            time,
            ld.requestLine,
            ld.status,
            ld.size,
            ld.username);
    l.log(ld);
    l.log(nextDay);
    l.close();
    File firstFile = getLogFileFor(ld);
    File secondFile = getLogFileFor(nextDay);
    assertTrue(firstFile.exists());
    assertTrue(secondFile.exists());
    String firstContent = FileUtil.getFileContent(firstFile);
    assertEquals(l.formatLogLine(ld) + System.getProperty("line.separator"), firstContent);
    String secondContent = FileUtil.getFileContent(secondFile);
    assertEquals(l.formatLogLine(nextDay) + System.getProperty("line.separator"), secondContent);
  }

  @Test
  public void testLoggingIncludesUsername() throws Exception {
    ld = new LogData(
            ld.host,
            ld.time,
            ld.requestLine,
            ld.status,
            ld.size,
            "Joe");
    l.log(ld);
    l.close();
    File dir = l.getDirectory();
    File file = new File(dir, filename);
    assertTrue(file.exists());
    String contents = FileUtil.getFileContent(file);
    logLine = "myHost - Joe [06/Mar/2003:13:42:05 -0100] \"request\" 42 666";
    assertEquals(logLine + System.getProperty("line.separator"), contents);
  }

  private File getLogFileFor(LogData data) {
    return new File(l.getDirectory(), Logger.makeLogFileName(data.time));
  }
}
TOP

Related Classes of fitnesse.components.LoggerTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.