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_MultimoduleProjectTest extends AbstractBuildEventLogReportTest { @Before public void setUp() throws Exception { List<BuildStep> steps = new ArrayList<BuildStep>(); steps.add(step("project-1", "phase-A", "goal-1A1", 100)); steps.add(step("project-1", "phase-B", "goal-1B1", 2000)); steps.add(step("project-1", "phase-B", "goal-1B2", 300)); steps.add(step("project-2", "phase-A", "goal-2A1", 20)); steps.add(step("project-2", "phase-A", "goal-2A2", 300)); steps.add(step("project-2", "phase-B", "goal-2B1", 10)); report = new BuildEventLogReport(new ChainedLogger(logger), steps); } @Test public void calculatesTotalDurationForBuild() { assertEquals(2730, report.totalDuration()); } @Test public void calculatesTotalDurationForPhase() { assertEquals(100, report.totalDurationOfPhase("project-1", "phase-A")); assertEquals(2300, report.totalDurationOfPhase("project-1", "phase-B")); assertEquals(320, report.totalDurationOfPhase("project-2", "phase-A")); assertEquals(10, report.totalDurationOfPhase("project-2", "phase-B")); } @Test public void calculatesTotalDurationForProject() { assertEquals(2400, report.totalDurationOfProject("project-1")); assertEquals(330, report.totalDurationOfProject("project-2")); } @Test public void reportsDurationsByProject() throws Exception { report.report(); assertThat( logger.output(), containsInOrder("BUILD STEP DURATIONS", projectStatsLine("project-1", 2.4, 87), projectStatsLine("project-2", 0.33, 12))); } @Test public void reportsDurationsByPhase() throws Exception { report.report(); assertThat( logger.output(), containsInOrder("BUILD STEP DURATIONS", projectStatsLine("project-1", 2.4, 87), phaseStatsLine("phase-A", 0.1, 4), phaseStatsLine("phase-B", 2.3, 95), projectStatsLine("project-2", 0.33, 12), phaseStatsLine("phase-A", 0.3, 96), phaseStatsLine("phase-B", 0.01, 3))); } @Test public void reportsDurationsByGoal() throws Exception { report.report(); assertThat( logger.output(), containsInOrder("BUILD STEP DURATIONS", projectStatsLine("project-1", 2.4, 87), phaseStatsLine("phase-A", 0.1, 4), goalStatsLine("goal-1A1", 0.1, 100), phaseStatsLine("phase-B", 2.3, 95), goalStatsLine("goal-1B1", 2.0, 86), goalStatsLine("goal-1B2", 0.3, 13), projectStatsLine("project-2", 0.33, 12), phaseStatsLine("phase-A", 0.3, 96), goalStatsLine("goal-2A1", 0.02, 6), goalStatsLine("goal-2A2", 0.3, 93), phaseStatsLine("phase-B", 0.01, 3), goalStatsLine("goal-2B1", 0.01, 100))); } }