package com.lassekoskela.maven.buildevents;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThat;
import java.util.ArrayList;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import com.lassekoskela.maven.logging.ChainedLogger;
public class BuildEventLogReport_SimpleProjectTest extends
AbstractBuildEventLogReportTest {
@Before
public void setUp() throws Exception {
List<BuildStep> steps = new ArrayList<BuildStep>();
steps.add(step("phase-A", "goal-A1", 100));
steps.add(step("phase-B", "goal-B1", 2000));
steps.add(step("phase-B", "goal-B2", 300));
steps.add(step("phase-C", "goal-C1", 20));
steps.add(step("phase-C", "goal-C2", 300));
steps.add(step("phase-C", "goal-C3", 10));
report = new BuildEventLogReport(new ChainedLogger(logger), steps);
}
@Test
public void calculatesTotalDurationForBuild() {
assertEquals(2730, report.totalDuration());
}
@Test
public void calculatesTotalDurationForPhase() {
assertEquals(100, report.totalDurationOfPhase("phase-A"));
assertEquals(2300, report.totalDurationOfPhase("phase-B"));
assertEquals(330, report.totalDurationOfPhase("phase-C"));
}
@Test
public void calculatesTotalDurationForProject() {
assertEquals(2730, report.totalDurationOfProject("project"));
}
@Test
public void reportsDurationsByGoal() throws Exception {
report.report();
assertThat(
logger.output(),
containsInOrder("BUILD STEP DURATIONS",
goalStatsLine("goal-A1", 0.1, 100),
goalStatsLine("goal-B1", 2.0, 86),
goalStatsLine("goal-B2", 0.3, 13),
goalStatsLine("goal-C1", 0.02, 6),
goalStatsLine("goal-C2", 0.3, 90),
goalStatsLine("goal-C3", 0.01, 3)));
}
@Test
public void reportsDurationsByPhase() throws Exception {
report.report();
assertThat(
logger.output(),
containsInOrder("BUILD STEP DURATIONS",
phaseStatsLine("phase-A", 0.1, 3),
phaseStatsLine("phase-B", 2.3, 84),
phaseStatsLine("phase-C", 0.3, 12)));
}
}