blob: 5a171ab8bdc903b9a6e61221e24ecdccd392f0cf [file] [log] [blame]
package org.apache.maven.plugin.surefire.runorder;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import java.io.File;
import java.io.IOException;
import java.io.StringReader;
import java.util.Arrays;
import java.util.List;
import org.apache.maven.surefire.report.ReportEntry;
import org.apache.maven.surefire.report.SimpleReportEntry;
import junit.framework.TestCase;
/**
* @author Kristian Rosenvold
*/
public class RunEntryStatisticsMapTest
extends TestCase
{
public void testPrioritizedClassRuntime()
throws IOException
{
final RunEntryStatisticsMap runEntryStatisticsMap = RunEntryStatisticsMap.fromReader( getStatisticsFile() );
final List<Class<?>> list = Arrays.<Class<?>>asList( A.class, B.class, C.class );
final List<Class<?>> prioritizedTestsClassRunTime =
runEntryStatisticsMap.getPrioritizedTestsClassRunTime( list, 2 );
assertEquals( C.class, prioritizedTestsClassRunTime.get( 0 ) );
assertEquals( B.class, prioritizedTestsClassRunTime.get( 1 ) );
assertEquals( A.class, prioritizedTestsClassRunTime.get( 2 ) );
}
public void testPrioritizedFailureFirst()
throws IOException
{
final RunEntryStatisticsMap runEntryStatisticsMap = RunEntryStatisticsMap.fromReader( getStatisticsFile() );
final List<Class<?>> list = Arrays.<Class<?>>asList( A.class, B.class, NewClass.class, C.class );
final List<Class<?>> prioritizedTestsClassRunTime =
runEntryStatisticsMap.getPrioritizedTestsByFailureFirst( list );
assertEquals( A.class, prioritizedTestsClassRunTime.get( 0 ) );
assertEquals( NewClass.class, prioritizedTestsClassRunTime.get( 1 ) );
assertEquals( C.class, prioritizedTestsClassRunTime.get( 2 ) );
assertEquals( B.class, prioritizedTestsClassRunTime.get( 3 ) );
}
private StringReader getStatisticsFile()
{
String content = "0,17,testA(org.apache.maven.plugin.surefire.runorder.RunEntryStatisticsMapTest$A)\n" +
"2,42,testB(org.apache.maven.plugin.surefire.runorder.RunEntryStatisticsMapTest$B)\n" +
"1,100,testC(org.apache.maven.plugin.surefire.runorder.RunEntryStatisticsMapTest$C)\n";
return new StringReader( content );
}
public void testSerialize()
throws Exception
{
File data = File.createTempFile( "surefire-unit", "test" );
RunEntryStatisticsMap existingEntries = RunEntryStatisticsMap.fromFile( data );
RunEntryStatisticsMap newResults = new RunEntryStatisticsMap();
ReportEntry reportEntry1 = new SimpleReportEntry( "abc", "method1", 42 );
ReportEntry reportEntry2 = new SimpleReportEntry( "abc", "willFail", 17 );
ReportEntry reportEntry3 = new SimpleReportEntry( "abc", "method3", 100 );
newResults.add( existingEntries.createNextGeneration( reportEntry1 ) );
newResults.add( existingEntries.createNextGeneration( reportEntry2 ) );
newResults.add( existingEntries.createNextGeneration( reportEntry3 ) );
newResults.serialize( data );
RunEntryStatisticsMap nextRun = RunEntryStatisticsMap.fromFile( data );
newResults = new RunEntryStatisticsMap();
newResults.add( existingEntries.createNextGeneration( reportEntry1 ) );
newResults.add( existingEntries.createNextGenerationFailure( reportEntry2 ) );
newResults.add( existingEntries.createNextGeneration( reportEntry3 ) );
newResults.serialize( data );
}
class A
{
}
class B
{
}
class C
{
}
class NewClass
{
}
}