changeset 0:52921ec5367a

Initial load
author duke
date Wed, 27 Mar 2013 13:52:35 -0700
parents
children 9e78b879b0a5
files jmh-core-it/LICENSE jmh-core-it/pom.xml jmh-core-it/src/test/java/org/openjdk/jmh/it/Fixtures.java jmh-core-it/src/test/java/org/openjdk/jmh/it/IterationCountAnnTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/IterationCountCmdTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/SingleShotTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/WarmupIterationCountAnnTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/WarmupIterationCountCmdTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/ccontrol/CompilerControlDontInlineTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/ccontrol/CompilerControlExcludeTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/ccontrol/CompilerControlInlineTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/BlackholeApiTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/GroupLabelTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/MultipleBenchmarkStateTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/MultipleExecGroupStateTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/MultipleGroupStateTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/MultipleThreadStateTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/OperationsPerInvocationTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/StrictFPClassTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/StrictFPMethodTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/blackhole/BlackholeTypesTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/exceptions/BenchmarkBenchExceptionSignaturesTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/exceptions/BenchmarkStateExceptionSignaturesTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/exceptions/GroupBenchExceptionSignaturesTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/exceptions/GroupStateExceptionSignaturesTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/exceptions/ThreadBenchExceptionSignaturesTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/exceptions/ThreadStateExceptionSignaturesTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingBenchmarkBenchSetupTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingBenchmarkBenchTearDownTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingBenchmarkBenchTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingBenchmarkStateSetupTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingBenchmarkStateTearDownTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingForkedBenchTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingForkedSetupTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingForkedTearDownTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingGroupBenchSetupTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingGroupBenchTearDownTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingGroupBenchTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingGroupStateSetupTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingGroupStateTearDownTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingThreadBenchSetupTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingThreadBenchTearDownTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingThreadBenchTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingThreadStateSetupTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingThreadStateTearDownTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractBenchmarkBenchSetupTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractBenchmarkBenchTearDownTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractBenchmarkStateSetupTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractBenchmarkStateTearDownTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractGroupBenchSetupTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractGroupBenchTearDownTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractGroupStateSetupTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractGroupStateTearDownTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractSetupBase.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractTearDownBase.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractThreadBenchSetupTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractThreadBenchTearDownTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractThreadStateSetupTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractThreadStateTearDownTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritBenchmarkBenchSetupTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritBenchmarkBenchTearDownTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritBenchmarkStateSetupTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritBenchmarkStateTearDownTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritGroupBenchSetupTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritGroupBenchTearDownTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritGroupStateSetupTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritGroupStateTearDownTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritThreadBenchSetupTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritThreadBenchTearDownTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritThreadStateSetupTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritThreadStateTearDownTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritableBenchmarkSetupState.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritableBenchmarkTearDownState.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritableGroupSetupState.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritableGroupTearDownState.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritableThreadSetupState.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritableThreadTearDownState.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/AnnotatedClassForkedTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/AnnotatedForkedTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/AnnotatedForkedTest2.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/ForkedJvmAppendPrependArgsTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/ForkedJvmArgsTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/ForkedTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_D_D_Test.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_D_F0_Test.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_D_F1_Test.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_D_F_Test.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F0_D_Test.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F0_F0_Test.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F0_F1_Test.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F0_F_Test.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F1_D_Test.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F1_F0_Test.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F1_F1_Test.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F1_F_Test.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F_D_Test.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F_F0_Test.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F_F1_Test.java jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F_F_Test.java jmh-core-it/src/test/java/org/openjdk/jmh/it/generated/GeneratedWarmupModeTest0.java jmh-core-it/src/test/java/org/openjdk/jmh/it/generated/GeneratedWarmupModeTest1.java jmh-core-it/src/test/java/org/openjdk/jmh/it/generated/GeneratedWarmupModeTest2.java jmh-core-it/src/test/java/org/openjdk/jmh/it/generated/GeneratedWarmupModeTest3.java jmh-core-it/src/test/java/org/openjdk/jmh/it/generated/GeneratedWarmupModeTest4.java jmh-core-it/src/test/java/org/openjdk/jmh/it/generated/GeneratedWarmupModeTest5.java jmh-core-it/src/test/java/org/openjdk/jmh/it/generated/GeneratedWarmupModeTest6.java jmh-core-it/src/test/java/org/openjdk/jmh/it/generated/GeneratedWarmupModeTest7.java jmh-core-it/src/test/java/org/openjdk/jmh/it/generated/GeneratedWarmupModeTest8.java jmh-core-it/src/test/java/org/openjdk/jmh/it/interorder/BenchmarkBenchOrderTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/interorder/BenchmarkStateOrderTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/interorder/GroupBenchOrderTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/interorder/GroupStateOrderTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/interorder/ThreadBenchOrderTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/interorder/ThreadStateOrderTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/intraorder/BenchmarkBenchSetupOrderTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/intraorder/BenchmarkBenchTearDownOrderTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/intraorder/BenchmarkStateSetupOrderTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/intraorder/BenchmarkStateTearDownOrderTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/intraorder/GroupBenchSetupOrderTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/intraorder/GroupBenchTearDownOrderTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/intraorder/GroupStateSetupOrderTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/intraorder/GroupStateTearDownOrderTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/intraorder/ThreadBenchSetupOrderTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/intraorder/ThreadBenchTearDownOrderTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/intraorder/ThreadStateSetupOrderTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/intraorder/ThreadStateTearDownOrderTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/races/RaceBenchmarkStateInvocationTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/races/RaceBenchmarkStateIterationTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/races/RaceBenchmarkStateRunTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/races/RaceGroupStateInvocationTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/races/RaceGroupStateIterationTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/races/RaceGroupStateRunTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/races/RaceThreadStateInvocationTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/races/RaceThreadStateIterationTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/races/RaceThreadStateRunTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/sharing/BenchmarkBenchSharingTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/sharing/BenchmarkStateSharingTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/sharing/GroupBenchSharingTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/sharing/GroupDefaultBenchSharingTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/sharing/GroupDefaultStateSharingTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/sharing/GroupStateSharingTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/sharing/ThreadBenchSharingTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/sharing/ThreadStateSharingTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/threads/BenchmarkBenchSameThreadTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/threads/BenchmarkStateSameThreadTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/threads/GroupBenchSameThreadTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/threads/GroupStateSameThreadTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/threads/ThreadBenchSameThreadTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/threads/ThreadStateSameThreadTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/times/BenchmarkBenchHelperTimesTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/times/BenchmarkStateHelperTimesTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/times/GroupBenchHelperTimesTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/times/GroupStateHelperTimesTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/times/ThreadBenchHelperTimesTest.java jmh-core-it/src/test/java/org/openjdk/jmh/it/times/ThreadStateHelperTimesTest.java jmh-core-it/src/test/resources/LICENSE jmh-core/LICENSE jmh-core/THIRD-PARTY jmh-core/pom.xml jmh-core/src/main/java/org/openjdk/jmh/ForkedMain.java jmh-core/src/main/java/org/openjdk/jmh/Main.java jmh-core/src/main/java/org/openjdk/jmh/annotations/BenchmarkType.java jmh-core/src/main/java/org/openjdk/jmh/annotations/CompilerControl.java jmh-core/src/main/java/org/openjdk/jmh/annotations/Fork.java jmh-core/src/main/java/org/openjdk/jmh/annotations/GenerateMicroBenchmark.java jmh-core/src/main/java/org/openjdk/jmh/annotations/Group.java jmh-core/src/main/java/org/openjdk/jmh/annotations/Level.java jmh-core/src/main/java/org/openjdk/jmh/annotations/Measurement.java jmh-core/src/main/java/org/openjdk/jmh/annotations/MicroBenchmark.java jmh-core/src/main/java/org/openjdk/jmh/annotations/OperationsPerInvocation.java jmh-core/src/main/java/org/openjdk/jmh/annotations/OutputTimeUnit.java jmh-core/src/main/java/org/openjdk/jmh/annotations/Scope.java jmh-core/src/main/java/org/openjdk/jmh/annotations/Setup.java jmh-core/src/main/java/org/openjdk/jmh/annotations/State.java jmh-core/src/main/java/org/openjdk/jmh/annotations/TearDown.java jmh-core/src/main/java/org/openjdk/jmh/annotations/Threads.java jmh-core/src/main/java/org/openjdk/jmh/annotations/Warmup.java jmh-core/src/main/java/org/openjdk/jmh/logic/BlackHole.java jmh-core/src/main/java/org/openjdk/jmh/logic/Control.java jmh-core/src/main/java/org/openjdk/jmh/logic/Loop.java jmh-core/src/main/java/org/openjdk/jmh/logic/results/AggregateRule.java jmh-core/src/main/java/org/openjdk/jmh/logic/results/Aggregator.java jmh-core/src/main/java/org/openjdk/jmh/logic/results/AverageTimePerOp.java jmh-core/src/main/java/org/openjdk/jmh/logic/results/IterationData.java jmh-core/src/main/java/org/openjdk/jmh/logic/results/OpsPerTimeUnit.java jmh-core/src/main/java/org/openjdk/jmh/logic/results/RawResultPair.java jmh-core/src/main/java/org/openjdk/jmh/logic/results/Result.java jmh-core/src/main/java/org/openjdk/jmh/logic/results/SampleTimePerOp.java jmh-core/src/main/java/org/openjdk/jmh/logic/results/SingleShotTime.java jmh-core/src/main/java/org/openjdk/jmh/logic/results/internal/IterationResult.java jmh-core/src/main/java/org/openjdk/jmh/logic/results/internal/RunResult.java jmh-core/src/main/java/org/openjdk/jmh/output/OutputFormatFactory.java jmh-core/src/main/java/org/openjdk/jmh/output/OutputFormatType.java jmh-core/src/main/java/org/openjdk/jmh/output/format/AbstractOutputFormat.java jmh-core/src/main/java/org/openjdk/jmh/output/format/CsvFormat.java jmh-core/src/main/java/org/openjdk/jmh/output/format/OutputFormat.java jmh-core/src/main/java/org/openjdk/jmh/output/format/PrettyPrintFormat.java jmh-core/src/main/java/org/openjdk/jmh/output/format/SilentFormat.java jmh-core/src/main/java/org/openjdk/jmh/output/format/TextReportFormat.java jmh-core/src/main/java/org/openjdk/jmh/output/format/internal/BinaryOutputFormatReader.java jmh-core/src/main/java/org/openjdk/jmh/output/format/internal/BinaryOutputFormatWriter.java jmh-core/src/main/java/org/openjdk/jmh/output/format/internal/CallInfo.java jmh-core/src/main/java/org/openjdk/jmh/output/format/internal/ClassConventions.java jmh-core/src/main/java/org/openjdk/jmh/processor/internal/CompilerControlProcessor.java jmh-core/src/main/java/org/openjdk/jmh/processor/internal/GenerateMicroBenchmarkProcessor.java jmh-core/src/main/java/org/openjdk/jmh/processor/internal/HelperMethodInvocation.java jmh-core/src/main/java/org/openjdk/jmh/processor/internal/HelperMethodValidationProcessor.java jmh-core/src/main/java/org/openjdk/jmh/processor/internal/HelperType.java jmh-core/src/main/java/org/openjdk/jmh/processor/internal/MethodGroup.java jmh-core/src/main/java/org/openjdk/jmh/processor/internal/MethodInvocation.java jmh-core/src/main/java/org/openjdk/jmh/processor/internal/MicroBenchmarkProcessor.java jmh-core/src/main/java/org/openjdk/jmh/processor/internal/StateObject.java jmh-core/src/main/java/org/openjdk/jmh/processor/internal/StateObjectHandler.java jmh-core/src/main/java/org/openjdk/jmh/profile/AbstractHotspotProfiler.java jmh-core/src/main/java/org/openjdk/jmh/profile/ClassloaderProfiler.java jmh-core/src/main/java/org/openjdk/jmh/profile/CompilerProfiler.java jmh-core/src/main/java/org/openjdk/jmh/profile/EmptyResult.java jmh-core/src/main/java/org/openjdk/jmh/profile/GCProfiler.java jmh-core/src/main/java/org/openjdk/jmh/profile/HotspotClassloadingProfiler.java jmh-core/src/main/java/org/openjdk/jmh/profile/HotspotCompilationProfiler.java jmh-core/src/main/java/org/openjdk/jmh/profile/HotspotMemoryProfiler.java jmh-core/src/main/java/org/openjdk/jmh/profile/HotspotRuntimeProfiler.java jmh-core/src/main/java/org/openjdk/jmh/profile/HotspotThreadProfiler.java jmh-core/src/main/java/org/openjdk/jmh/profile/JFRProfiler.java jmh-core/src/main/java/org/openjdk/jmh/profile/Profiler.java jmh-core/src/main/java/org/openjdk/jmh/profile/ProfilerFactory.java jmh-core/src/main/java/org/openjdk/jmh/profile/ProfilerResult.java jmh-core/src/main/java/org/openjdk/jmh/profile/StackProfiler.java jmh-core/src/main/java/org/openjdk/jmh/runner/AbstractResourceReader.java jmh-core/src/main/java/org/openjdk/jmh/runner/Arbiter.java jmh-core/src/main/java/org/openjdk/jmh/runner/BaseMicroBenchmarkHandler.java jmh-core/src/main/java/org/openjdk/jmh/runner/BaseRunner.java jmh-core/src/main/java/org/openjdk/jmh/runner/CompilerHints.java jmh-core/src/main/java/org/openjdk/jmh/runner/ForkedRunner.java jmh-core/src/main/java/org/openjdk/jmh/runner/HarnessThreadFactory.java jmh-core/src/main/java/org/openjdk/jmh/runner/LoopMicroBenchmarkHandler.java jmh-core/src/main/java/org/openjdk/jmh/runner/MicroBenchmarkHandler.java jmh-core/src/main/java/org/openjdk/jmh/runner/MicroBenchmarkHandlers.java jmh-core/src/main/java/org/openjdk/jmh/runner/MicroBenchmarkList.java jmh-core/src/main/java/org/openjdk/jmh/runner/NoopArbiter.java jmh-core/src/main/java/org/openjdk/jmh/runner/Runner.java jmh-core/src/main/java/org/openjdk/jmh/runner/RunnerException.java jmh-core/src/main/java/org/openjdk/jmh/runner/ShotMicroBenchmarkHandler.java jmh-core/src/main/java/org/openjdk/jmh/runner/SynchronizeIterationsArbiter.java jmh-core/src/main/java/org/openjdk/jmh/runner/options/BaseOptions.java jmh-core/src/main/java/org/openjdk/jmh/runner/options/ForkedOptions.java jmh-core/src/main/java/org/openjdk/jmh/runner/options/HarnessOptions.java jmh-core/src/main/java/org/openjdk/jmh/runner/options/handlers/BooleanOptionHandler.java jmh-core/src/main/java/org/openjdk/jmh/runner/options/handlers/ForkOptionHandler.java jmh-core/src/main/java/org/openjdk/jmh/runner/options/handlers/ProfilersOptionHandler.java jmh-core/src/main/java/org/openjdk/jmh/runner/options/handlers/ThreadCountsOptionHandler.java jmh-core/src/main/java/org/openjdk/jmh/runner/options/handlers/ThreadsOptionHandler.java jmh-core/src/main/java/org/openjdk/jmh/runner/options/handlers/TimeValueOptionHandler.java jmh-core/src/main/java/org/openjdk/jmh/runner/parameters/Defaults.java jmh-core/src/main/java/org/openjdk/jmh/runner/parameters/IterationParams.java jmh-core/src/main/java/org/openjdk/jmh/runner/parameters/MicroBenchmarkParameters.java jmh-core/src/main/java/org/openjdk/jmh/runner/parameters/MicroBenchmarkParametersFactory.java jmh-core/src/main/java/org/openjdk/jmh/runner/parameters/ThreadIterationParams.java jmh-core/src/main/java/org/openjdk/jmh/runner/parameters/TimeValue.java jmh-core/src/main/java/org/openjdk/jmh/util/ClassUtils.java jmh-core/src/main/java/org/openjdk/jmh/util/FileUtils.java jmh-core/src/main/java/org/openjdk/jmh/util/InputStreamDrainer.java jmh-core/src/main/java/org/openjdk/jmh/util/internal/BootstrappedStatistics.java jmh-core/src/main/java/org/openjdk/jmh/util/internal/CollectionUtils.java jmh-core/src/main/java/org/openjdk/jmh/util/internal/HashMultimap.java jmh-core/src/main/java/org/openjdk/jmh/util/internal/HashMultiset.java jmh-core/src/main/java/org/openjdk/jmh/util/internal/HashsetMultimap.java jmh-core/src/main/java/org/openjdk/jmh/util/internal/Multimap.java jmh-core/src/main/java/org/openjdk/jmh/util/internal/Multiset.java jmh-core/src/main/java/org/openjdk/jmh/util/internal/Multisets.java jmh-core/src/main/java/org/openjdk/jmh/util/internal/SampleBuffer.java jmh-core/src/main/java/org/openjdk/jmh/util/internal/Statistics.java jmh-core/src/main/java/org/openjdk/jmh/util/internal/TreeMultimap.java jmh-core/src/main/java/org/openjdk/jmh/util/internal/TreesetMultimap.java jmh-core/src/main/resources/LICENSE jmh-core/src/main/resources/META-INF/services/javax.annotation.processing.Processor jmh-core/src/main/resources/THIRD-PARTY jmh-core/src/main/resources/checkstyle.xml jmh-core/src/main/resources/findbugs.xml jmh-core/src/test/java/org/openjdk/jmh/TestMain.java jmh-core/src/test/java/org/openjdk/jmh/logic/TestLoop.java jmh-core/src/test/java/org/openjdk/jmh/logic/results/TestAggregateResult.java jmh-core/src/test/java/org/openjdk/jmh/logic/results/TestAverageTimePerOp.java jmh-core/src/test/java/org/openjdk/jmh/logic/results/TestOpsPerTimeUnit.java jmh-core/src/test/java/org/openjdk/jmh/logic/results/TestSampleTimePerOp.java jmh-core/src/test/java/org/openjdk/jmh/logic/results/TestSingleShotTime.java jmh-core/src/test/java/org/openjdk/jmh/runner/TestMicroBenchmarkList.java jmh-core/src/test/java/org/openjdk/jmh/runner/options/TestOptions.java jmh-core/src/test/java/org/openjdk/jmh/util/TestClassUtils.java jmh-core/src/test/java/org/openjdk/jmh/util/TestFileUtils.java jmh-core/src/test/java/org/openjdk/jmh/util/TestStatistics.java jmh-core/src/test/resources/org/openjdk/jmh/runner/MicroBenchmarks jmh-samples/LICENSE jmh-samples/pom.xml jmh-samples/src/main/java/org/openjdk/jmh/samples/JMHSample_01_HelloWorld.java jmh-samples/src/main/java/org/openjdk/jmh/samples/JMHSample_02_BenchmarkTypes.java jmh-samples/src/main/java/org/openjdk/jmh/samples/JMHSample_03_States.java jmh-samples/src/main/java/org/openjdk/jmh/samples/JMHSample_04_DefaultState.java jmh-samples/src/main/java/org/openjdk/jmh/samples/JMHSample_05_StateFixtures.java jmh-samples/src/main/java/org/openjdk/jmh/samples/JMHSample_06_FixtureLevel.java jmh-samples/src/main/java/org/openjdk/jmh/samples/JMHSample_07_FixtureLevelInvocation.java jmh-samples/src/main/java/org/openjdk/jmh/samples/JMHSample_08_DeadCode.java jmh-samples/src/main/java/org/openjdk/jmh/samples/JMHSample_09_Blackholes.java jmh-samples/src/main/java/org/openjdk/jmh/samples/JMHSample_10_ConstantFold.java jmh-samples/src/main/java/org/openjdk/jmh/samples/JMHSample_11_Loops.java jmh-samples/src/main/java/org/openjdk/jmh/samples/JMHSample_12_Forking.java jmh-samples/src/main/java/org/openjdk/jmh/samples/JMHSample_13_RunToRun.java jmh-samples/src/main/java/org/openjdk/jmh/samples/JMHSample_15_Asymmetric.java jmh-samples/src/main/java/org/openjdk/jmh/samples/JMHSample_16_CompilerControl.java jmh-samples/src/main/java/org/openjdk/jmh/samples/JMHSample_17_SyncIterations.java jmh-samples/src/main/java/org/openjdk/jmh/samples/JMHSample_18_Control.java jmh-samples/src/main/java/org/openjdk/jmh/samples/JMHSample_20_Annotations.java jmh-samples/src/main/resources/LICENSE pom.xml src/license/gpl_cpe/header.txt src/license/gpl_cpe/license.txt
diffstat 316 files changed, 34622 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/LICENSE	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,347 @@
+The GNU General Public License (GPL)
+
+Version 2, June 1991
+
+Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+Everyone is permitted to copy and distribute verbatim copies of this license
+document, but changing it is not allowed.
+
+Preamble
+
+The licenses for most software are designed to take away your freedom to share
+and change it.  By contrast, the GNU General Public License is intended to
+guarantee your freedom to share and change free software--to make sure the
+software is free for all its users.  This General Public License applies to
+most of the Free Software Foundation's software and to any other program whose
+authors commit to using it.  (Some other Free Software Foundation software is
+covered by the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+When we speak of free software, we are referring to freedom, not price.  Our
+General Public Licenses are designed to make sure that you have the freedom to
+distribute copies of free software (and charge for this service if you wish),
+that you receive source code or can get it if you want it, that you can change
+the software or use pieces of it in new free programs; and that you know you
+can do these things.
+
+To protect your rights, we need to make restrictions that forbid anyone to deny
+you these rights or to ask you to surrender the rights.  These restrictions
+translate to certain responsibilities for you if you distribute copies of the
+software, or if you modify it.
+
+For example, if you distribute copies of such a program, whether gratis or for
+a fee, you must give the recipients all the rights that you have.  You must
+make sure that they, too, receive or can get the source code.  And you must
+show them these terms so they know their rights.
+
+We protect your rights with two steps: (1) copyright the software, and (2)
+offer you this license which gives you legal permission to copy, distribute
+and/or modify the software.
+
+Also, for each author's protection and ours, we want to make certain that
+everyone understands that there is no warranty for this free software.  If the
+software is modified by someone else and passed on, we want its recipients to
+know that what they have is not the original, so that any problems introduced
+by others will not reflect on the original authors' reputations.
+
+Finally, any free program is threatened constantly by software patents.  We
+wish to avoid the danger that redistributors of a free program will
+individually obtain patent licenses, in effect making the program proprietary.
+To prevent this, we have made it clear that any patent must be licensed for
+everyone's free use or not licensed at all.
+
+The precise terms and conditions for copying, distribution and modification
+follow.
+
+TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+0. This License applies to any program or other work which contains a notice
+placed by the copyright holder saying it may be distributed under the terms of
+this General Public License.  The "Program", below, refers to any such program
+or work, and a "work based on the Program" means either the Program or any
+derivative work under copyright law: that is to say, a work containing the
+Program or a portion of it, either verbatim or with modifications and/or
+translated into another language.  (Hereinafter, translation is included
+without limitation in the term "modification".) Each licensee is addressed as
+"you".
+
+Activities other than copying, distribution and modification are not covered by
+this License; they are outside its scope.  The act of running the Program is
+not restricted, and the output from the Program is covered only if its contents
+constitute a work based on the Program (independent of having been made by
+running the Program).  Whether that is true depends on what the Program does.
+
+1. You may copy and distribute verbatim copies of the Program's source code as
+you receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice and
+disclaimer of warranty; keep intact all the notices that refer to this License
+and to the absence of any warranty; and give any other recipients of the
+Program a copy of this License along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and you may
+at your option offer warranty protection in exchange for a fee.
+
+2. You may modify your copy or copies of the Program or any portion of it, thus
+forming a work based on the Program, and copy and distribute such modifications
+or work under the terms of Section 1 above, provided that you also meet all of
+these conditions:
+
+    a) You must cause the modified files to carry prominent notices stating
+    that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in whole or
+    in part contains or is derived from the Program or any part thereof, to be
+    licensed as a whole at no charge to all third parties under the terms of
+    this License.
+
+    c) If the modified program normally reads commands interactively when run,
+    you must cause it, when started running for such interactive use in the
+    most ordinary way, to print or display an announcement including an
+    appropriate copyright notice and a notice that there is no warranty (or
+    else, saying that you provide a warranty) and that users may redistribute
+    the program under these conditions, and telling the user how to view a copy
+    of this License.  (Exception: if the Program itself is interactive but does
+    not normally print such an announcement, your work based on the Program is
+    not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If identifiable
+sections of that work are not derived from the Program, and can be reasonably
+considered independent and separate works in themselves, then this License, and
+its terms, do not apply to those sections when you distribute them as separate
+works.  But when you distribute the same sections as part of a whole which is a
+work based on the Program, the distribution of the whole must be on the terms
+of this License, whose permissions for other licensees extend to the entire
+whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest your
+rights to work written entirely by you; rather, the intent is to exercise the
+right to control the distribution of derivative or collective works based on
+the Program.
+
+In addition, mere aggregation of another work not based on the Program with the
+Program (or with a work based on the Program) on a volume of a storage or
+distribution medium does not bring the other work under the scope of this
+License.
+
+3. You may copy and distribute the Program (or a work based on it, under
+Section 2) in object code or executable form under the terms of Sections 1 and
+2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable source
+    code, which must be distributed under the terms of Sections 1 and 2 above
+    on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three years, to
+    give any third party, for a charge no more than your cost of physically
+    performing source distribution, a complete machine-readable copy of the
+    corresponding source code, to be distributed under the terms of Sections 1
+    and 2 above on a medium customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer to
+    distribute corresponding source code.  (This alternative is allowed only
+    for noncommercial distribution and only if you received the program in
+    object code or executable form with such an offer, in accord with
+    Subsection b above.)
+
+The source code for a work means the preferred form of the work for making
+modifications to it.  For an executable work, complete source code means all
+the source code for all modules it contains, plus any associated interface
+definition files, plus the scripts used to control compilation and installation
+of the executable.  However, as a special exception, the source code
+distributed need not include anything that is normally distributed (in either
+source or binary form) with the major components (compiler, kernel, and so on)
+of the operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the source
+code from the same place counts as distribution of the source code, even though
+third parties are not compelled to copy the source along with the object code.
+
+4. You may not copy, modify, sublicense, or distribute the Program except as
+expressly provided under this License.  Any attempt otherwise to copy, modify,
+sublicense or distribute the Program is void, and will automatically terminate
+your rights under this License.  However, parties who have received copies, or
+rights, from you under this License will not have their licenses terminated so
+long as such parties remain in full compliance.
+
+5. You are not required to accept this License, since you have not signed it.
+However, nothing else grants you permission to modify or distribute the Program
+or its derivative works.  These actions are prohibited by law if you do not
+accept this License.  Therefore, by modifying or distributing the Program (or
+any work based on the Program), you indicate your acceptance of this License to
+do so, and all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+6. Each time you redistribute the Program (or any work based on the Program),
+the recipient automatically receives a license from the original licensor to
+copy, distribute or modify the Program subject to these terms and conditions.
+You may not impose any further restrictions on the recipients' exercise of the
+rights granted herein.  You are not responsible for enforcing compliance by
+third parties to this License.
+
+7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues), conditions
+are imposed on you (whether by court order, agreement or otherwise) that
+contradict the conditions of this License, they do not excuse you from the
+conditions of this License.  If you cannot distribute so as to satisfy
+simultaneously your obligations under this License and any other pertinent
+obligations, then as a consequence you may not distribute the Program at all.
+For example, if a patent license would not permit royalty-free redistribution
+of the Program by all those who receive copies directly or indirectly through
+you, then the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply and
+the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any patents or
+other property right claims or to contest validity of any such claims; this
+section has the sole purpose of protecting the integrity of the free software
+distribution system, which is implemented by public license practices.  Many
+people have made generous contributions to the wide range of software
+distributed through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing to
+distribute software through any other system and a licensee cannot impose that
+choice.
+
+This section is intended to make thoroughly clear what is believed to be a
+consequence of the rest of this License.
+
+8. If the distribution and/or use of the Program is restricted in certain
+countries either by patents or by copyrighted interfaces, the original
+copyright holder who places the Program under this License may add an explicit
+geographical distribution limitation excluding those countries, so that
+distribution is permitted only in or among countries not thus excluded.  In
+such case, this License incorporates the limitation as if written in the body
+of this License.
+
+9. The Free Software Foundation may publish revised and/or new versions of the
+General Public License from time to time.  Such new versions will be similar in
+spirit to the present version, but may differ in detail to address new problems
+or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any later
+version", you have the option of following the terms and conditions either of
+that version or of any later version published by the Free Software Foundation.
+If the Program does not specify a version number of this License, you may
+choose any version ever published by the Free Software Foundation.
+
+10. If you wish to incorporate parts of the Program into other free programs
+whose distribution conditions are different, write to the author to ask for
+permission.  For software which is copyrighted by the Free Software Foundation,
+write to the Free Software Foundation; we sometimes make exceptions for this.
+Our decision will be guided by the two goals of preserving the free status of
+all derivatives of our free software and of promoting the sharing and reuse of
+software generally.
+
+NO WARRANTY
+
+11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
+THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN OTHERWISE
+STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE
+PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND
+PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE,
+YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL
+ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE
+PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
+INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA
+BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER
+OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+END OF TERMS AND CONDITIONS
+
+How to Apply These Terms to Your New Programs
+
+If you develop a new program, and you want it to be of the greatest possible
+use to the public, the best way to achieve this is to make it free software
+which everyone can redistribute and change under these terms.
+
+To do so, attach the following notices to the program.  It is safest to attach
+them to the start of each source file to most effectively convey the exclusion
+of warranty; and each file should have at least the "copyright" line and a
+pointer to where the full notice is found.
+
+    One line to give the program's name and a brief idea of what it does.
+
+    Copyright (C) <year> <name of author>
+
+    This program is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the Free
+    Software Foundation; either version 2 of the License, or (at your option)
+    any later version.
+
+    This program is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+    more details.
+
+    You should have received a copy of the GNU General Public License along
+    with this program; if not, write to the Free Software Foundation, Inc., 59
+    Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this when it
+starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author Gnomovision comes
+    with ABSOLUTELY NO WARRANTY; for details type 'show w'.  This is free
+    software, and you are welcome to redistribute it under certain conditions;
+    type 'show c' for details.
+
+The hypothetical commands 'show w' and 'show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may be
+called something other than 'show w' and 'show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.  Here
+is a sample; alter the names:
+
+    Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+    'Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+    signature of Ty Coon, 1 April 1989
+
+    Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General Public
+License instead of this License.
+
+
+"CLASSPATH" EXCEPTION TO THE GPL
+
+Certain source files distributed by Oracle America and/or its affiliates are
+subject to the following clarification and special exception to the GPL, but
+only where Oracle has expressly included in the particular source file's header
+the words "Oracle designates this particular file as subject to the "Classpath"
+exception as provided by Oracle in the LICENSE file that accompanied this code."
+
+    Linking this library statically or dynamically with other modules is making
+    a combined work based on this library.  Thus, the terms and conditions of
+    the GNU General Public License cover the whole combination.
+
+    As a special exception, the copyright holders of this library give you
+    permission to link this library with independent modules to produce an
+    executable, regardless of the license terms of these independent modules,
+    and to copy and distribute the resulting executable under terms of your
+    choice, provided that you also meet, for each linked independent module,
+    the terms and conditions of the license of that module.  An independent
+    module is a module which is not derived from or based on this library.  If
+    you modify this library, you may extend this exception to your version of
+    the library, but you are not obligated to do so.  If you do not wish to do
+    so, delete this exception statement from your version.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/pom.xml	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,132 @@
+<!--
+Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+This code is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License version 2 only, as
+published by the Free Software Foundation.  Oracle designates this
+particular file as subject to the "Classpath" exception as provided
+by Oracle in the LICENSE file that accompanied this code.
+
+This code is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+version 2 for more details (a copy is included in the LICENSE file that
+accompanied this code).
+
+You should have received a copy of the GNU General Public License version
+2 along with this work; if not, write to the Free Software Foundation,
+Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.openjdk.jmh</groupId>
+    <artifactId>jmh-core-it</artifactId>
+    <packaging>jar</packaging>
+    <version>1.0-SNAPSHOT</version>
+    <name>Java Microbenchmark Harness Integration Tests</name>
+
+    <organization>
+        <name>Oracle and/or its affiliates. All rights reserved.</name>
+        <url>http://openjdk.org/</url>
+    </organization>
+    <inceptionYear>2012</inceptionYear>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.openjdk.jmh</groupId>
+            <artifactId>jmh-core</artifactId>
+            <version>1.1-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.10</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <prerequisites>
+        <maven>3.0</maven>
+    </prerequisites>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>2.3.2</version>
+                <configuration>
+                    <compilerVersion>1.7</compilerVersion>
+                    <source>1.7</source>
+                    <target>1.7</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <version>2.12</version>
+                <configuration>
+                    <forkMode>always</forkMode>
+                    <redirectTestOutputToFile>true</redirectTestOutputToFile>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-shade-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>shade</goal>
+                        </goals>
+                        <configuration>
+                            <finalName>microbenchmarks</finalName>
+                            <transformers>
+                                <transformer
+                                        implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
+                                    <mainClass>org.openjdk.jmh.Main</mainClass>
+                                </transformer>
+                            </transformers>
+                            <filters>
+                                <!-- Remove annotation processor files -->
+                                <filter>
+                                    <artifact>oracle.micro:MicroBenchmarkAnnotationProcessor</artifact>
+                                    <excludes>
+                                        <exclude>*/**</exclude>
+                                    </excludes>
+                                </filter>
+                            </filters>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+
+            <plugin>
+                <groupId>com.mycila.maven-license-plugin</groupId>
+                <artifactId>maven-license-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>format</goal>
+                        </goals>
+                        <phase>process-sources</phase>
+                        <configuration>
+                            <header>file:///${project.basedir}/../src/license/gpl_cpe/header.txt</header>
+                            <skipExistingHeaders>false</skipExistingHeaders>
+                            <strictCheck>true</strictCheck>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+
+        </plugins>
+    </build>
+
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/Fixtures.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,44 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it;
+
+import java.util.concurrent.TimeUnit;
+
+public class Fixtures {
+
+    public static String getTestMask(Class<?> klass) {
+        return ".*" + klass.getCanonicalName().replaceAll("org\\.openjdk\\.jmh\\.it", "").replaceAll("\\.",".*\\\\.") + ".*";
+    }
+
+    public static void work() {
+        // courtesy for parallel-running tests
+        try {
+            TimeUnit.MILLISECONDS.sleep(10);
+        } catch (InterruptedException e) {
+            throw new IllegalStateException(e);
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/IterationCountAnnTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,73 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Level;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Setup;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.TearDown;
+import org.openjdk.jmh.annotations.Warmup;
+
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicInteger;
+
+/**
+ * Tests if harness favors the iteration count annotations.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+@State
+public class IterationCountAnnTest {
+
+    private final AtomicInteger count = new AtomicInteger();
+
+    @Setup(Level.Iteration)
+    public void setup() {
+        count.incrementAndGet();
+    }
+
+    @TearDown
+    public void tearDown() {
+        Assert.assertEquals("Single iteration expected", 1, count.get());
+    }
+
+    @GenerateMicroBenchmark
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 1, timeUnit = TimeUnit.MILLISECONDS)
+    public void test() throws InterruptedException {
+        Fixtures.work();
+    }
+
+    @Test
+    public void invoke() {
+        Main.testMain(Fixtures.getTestMask(this.getClass()) + "  -foe -v");
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/IterationCountCmdTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,71 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Level;
+import org.openjdk.jmh.annotations.Setup;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.TearDown;
+
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicInteger;
+
+/**
+ * Tests if harness favors the iteration count cmdline parameters.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+@State
+public class IterationCountCmdTest {
+
+    private final AtomicInteger count = new AtomicInteger();
+
+    @Setup(Level.Iteration)
+    public void setup() {
+        count.incrementAndGet();
+    }
+
+    @TearDown
+    public void tearDown() {
+        Assert.assertEquals("Single iteration expected", 1, count.get());
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    public void test() throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+    }
+
+    @Test
+    public void invoke() {
+        Main.testMain(Fixtures.getTestMask(this.getClass()) + "  -foe -v -i 1 -wi 0");
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/SingleShotTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,72 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicInteger;
+
+/**
+ * Tests if harness had indeed executed different tests in different JVMs.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+public class SingleShotTest {
+
+    private static final AtomicInteger test1executed = new AtomicInteger();
+    private static final AtomicInteger test2executed = new AtomicInteger();
+
+    @GenerateMicroBenchmark(BenchmarkType.SingleShotTime)
+    public void test1() throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(10);
+        Assert.assertEquals(1, test1executed.incrementAndGet());
+        Assert.assertEquals(0, test2executed.get());
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.SingleShotTime)
+    public void test2() throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+        Assert.assertEquals(1, test2executed.incrementAndGet());
+        Assert.assertEquals(0, test1executed.get());
+    }
+
+    @Test
+    public void invoke() {
+        Main.testMain(Fixtures.getTestMask(this.getClass()) + "  -foe -f");
+    }
+
+    @Test
+    public void invoke1() {
+        Main.testMain(Fixtures.getTestMask(this.getClass()) + "  -foe -f 2");
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/WarmupIterationCountAnnTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,74 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Level;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Setup;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.TearDown;
+import org.openjdk.jmh.annotations.Warmup;
+
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicInteger;
+
+/**
+ * Tests if harness honors warmup annotation settings.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+@State
+public class WarmupIterationCountAnnTest {
+
+    private final AtomicInteger count = new AtomicInteger();
+
+    @Setup(Level.Iteration)
+    public void setup() {
+        count.incrementAndGet();
+    }
+
+    @TearDown
+    public void tearDown() {
+        Assert.assertEquals("Four iterations expected", 4, count.get());
+    }
+
+    @GenerateMicroBenchmark
+    @Warmup(iterations = 3, time = 1)
+    @Measurement(iterations = 1, time = 1)
+    public void test() throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+    }
+
+    @Test
+    public void invoke() {
+        Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -v");
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/WarmupIterationCountCmdTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,70 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Level;
+import org.openjdk.jmh.annotations.Setup;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.TearDown;
+
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicInteger;
+
+/**
+ * Tests if harness honors warmup command line settings.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+@State
+public class WarmupIterationCountCmdTest {
+
+    private final AtomicInteger count = new AtomicInteger();
+
+    @Setup(Level.Iteration)
+    public void setup() {
+        count.incrementAndGet();
+    }
+
+    @TearDown
+    public void tearDown() {
+        Assert.assertEquals("Four iterations expected", 4, count.get());
+    }
+
+    @GenerateMicroBenchmark
+    public void test() throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+    }
+
+    @Test
+    public void invoke() {
+        Main.testMain(Fixtures.getTestMask(this.getClass()) + "  -foe -v -w 1 -r 1 -i 1 -wi 3");
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/ccontrol/CompilerControlDontInlineTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,52 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.ccontrol;
+
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.CompilerControl;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+public class CompilerControlDontInlineTest {
+
+    @GenerateMicroBenchmark
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 1, timeUnit = TimeUnit.MILLISECONDS)
+    @CompilerControl(CompilerControl.Mode.DONT_INLINE)
+    public void test() {
+        Fixtures.work();
+    }
+
+    @Test
+    public void invoke() {
+        Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -v");
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/ccontrol/CompilerControlExcludeTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,52 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.ccontrol;
+
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.CompilerControl;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+public class CompilerControlExcludeTest {
+
+    @GenerateMicroBenchmark
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 1, timeUnit = TimeUnit.MILLISECONDS)
+    @CompilerControl(CompilerControl.Mode.EXCLUDE)
+    public void test() {
+        Fixtures.work();
+    }
+
+    @Test
+    public void invoke() {
+        Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -v");
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/ccontrol/CompilerControlInlineTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,52 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.ccontrol;
+
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.CompilerControl;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+public class CompilerControlInlineTest {
+
+    @GenerateMicroBenchmark
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 1, timeUnit = TimeUnit.MILLISECONDS)
+    @CompilerControl(CompilerControl.Mode.INLINE)
+    public void test() {
+        Fixtures.work();
+    }
+
+    @Test
+    public void invoke() {
+        Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -v");
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/BlackholeApiTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,81 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.compile;
+
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.logic.BlackHole;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Tests basic blackholing API.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+public class BlackholeApiTest {
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    public void testNothing() throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    public Object testReturnObject() throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+        return null;
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    public int testReturnInt() throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+        return 0;
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    public void testBH(BlackHole bh) throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    public Object testBH_ReturnObject(BlackHole bh) throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+        return null;
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    public int testBH_ReturnInt(BlackHole bh) throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+        return 0;
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/GroupLabelTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,38 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.compile;
+
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Group;
+
+public class GroupLabelTest {
+
+    @GenerateMicroBenchmark
+    @Group("my_%_forbidden-java-identifier")
+    public void test() {
+
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/MultipleBenchmarkStateTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,57 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.compile;
+
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.State;
+
+public class MultipleBenchmarkStateTest {
+
+    @State(Scope.Benchmark)
+    public static class G1 {}
+
+    @State(Scope.Benchmark)
+    public static class G2 {}
+
+    @State(Scope.Benchmark)
+    public static class G3 {}
+
+    @GenerateMicroBenchmark
+    public void test1(G1 g1) {
+
+    }
+
+    @GenerateMicroBenchmark
+    public void test2(G1 g1, G2 g2) {
+
+    }
+
+    @GenerateMicroBenchmark
+    public void test3(G1 g1, G2 g2, G3 g3) {
+
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/MultipleExecGroupStateTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,61 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.compile;
+
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Group;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.State;
+
+public class MultipleExecGroupStateTest {
+
+    @State(Scope.Group)
+    public static class G1 {}
+
+    @State(Scope.Group)
+    public static class G2 {}
+
+    @State(Scope.Group)
+    public static class G3 {}
+
+    @GenerateMicroBenchmark
+    @Group("group")
+    public void test1(G1 g1) {
+
+    }
+
+    @GenerateMicroBenchmark
+    @Group("group")
+    public void test2(G1 g1, G2 g2) {
+
+    }
+
+    @GenerateMicroBenchmark
+    @Group("group")
+    public void test3(G1 g1, G2 g2, G3 g3) {
+
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/MultipleGroupStateTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,57 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.compile;
+
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.State;
+
+public class MultipleGroupStateTest {
+
+    @State(Scope.Group)
+    public static class G1 {}
+
+    @State(Scope.Group)
+    public static class G2 {}
+
+    @State(Scope.Group)
+    public static class G3 {}
+
+    @GenerateMicroBenchmark
+    public void test1(G1 g1) {
+
+    }
+
+    @GenerateMicroBenchmark
+    public void test2(G1 g1, G2 g2) {
+
+    }
+
+    @GenerateMicroBenchmark
+    public void test3(G1 g1, G2 g2, G3 g3) {
+
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/MultipleThreadStateTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,57 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.compile;
+
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.State;
+
+public class MultipleThreadStateTest {
+
+    @State(Scope.Thread)
+    public static class G1 {}
+
+    @State(Scope.Thread)
+    public static class G2 {}
+
+    @State(Scope.Thread)
+    public static class G3 {}
+
+    @GenerateMicroBenchmark
+    public void test1(G1 g1) {
+
+    }
+
+    @GenerateMicroBenchmark
+    public void test2(G1 g1, G2 g2) {
+
+    }
+
+    @GenerateMicroBenchmark
+    public void test3(G1 g1, G2 g2, G3 g3) {
+
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/OperationsPerInvocationTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,56 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.compile;
+
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.OperationsPerInvocation;
+
+public class OperationsPerInvocationTest {
+
+    @GenerateMicroBenchmark
+    @OperationsPerInvocation(1)
+    public void test1() {
+
+    }
+
+    @GenerateMicroBenchmark
+    @OperationsPerInvocation(10)
+    public void test2() {
+
+    }
+
+    @GenerateMicroBenchmark
+    @OperationsPerInvocation(Integer.MAX_VALUE)
+    public void test3() {
+
+    }
+
+    @GenerateMicroBenchmark
+    @OperationsPerInvocation(Long.MAX_VALUE/2)
+    public void test4() {
+
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/StrictFPClassTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,37 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.compile;
+
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+
+public strictfp class StrictFPClassTest {
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    public void test() {
+        // intentionally blank
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/StrictFPMethodTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,37 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.compile;
+
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+
+public class StrictFPMethodTest {
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    public strictfp void test() {
+        // intentionally blank
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/blackhole/BlackholeTypesTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,142 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.compile.blackhole;
+
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.logic.BlackHole;
+
+@State(Scope.Thread)
+public class BlackholeTypesTest {
+
+    public byte b;
+    public boolean bool;
+    public char c;
+    public short s;
+    public int i;
+    public long l;
+    public float f;
+    public double d;
+    public Object o;
+    public Object[] os;
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    public void baseline() {
+        // do nothing
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    public byte implicit_testByte() {
+        return b;
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    public boolean implicit_testBoolean() {
+        return bool;
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    public char implicit_testChar() {
+        return c;
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    public int implicit_testInt() {
+        return i;
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    public long implicit_testLong() {
+        return l;
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    public float implicit_testFloat() {
+        return f;
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    public double implicit_testDouble() {
+        return d;
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    public Object implicit_testObject() {
+        return o;
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    public Object[] implicit_testArray() {
+        return os;
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    public void explicit_testByte(BlackHole bh) {
+        bh.consume(b);
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    public void explicit_testBoolean(BlackHole bh) {
+        bh.consume(bool);
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    public void explicit_testChar(BlackHole bh) {
+        bh.consume(c);
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    public void explicit_testInt(BlackHole bh) {
+        bh.consume(i);
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    public void explicit_testLong(BlackHole bh) {
+        bh.consume(l);
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    public void explicit_testFloat(BlackHole bh) {
+        bh.consume(f);
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    public void explicit_testDouble(BlackHole bh) {
+        bh.consume(d);
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    public void explicit_testObject(BlackHole bh) {
+        bh.consume(o);
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    public void explicit_testArray(BlackHole bh) {
+        bh.consume(os);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/exceptions/BenchmarkBenchExceptionSignaturesTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.compile.exceptions;
+
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Level;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.Setup;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.TearDown;
+
+@State(Scope.Benchmark)
+public class BenchmarkBenchExceptionSignaturesTest {
+
+    @Setup(Level.Trial)
+    public void setup1() throws Exception {}
+
+    @Setup(Level.Iteration)
+    public void setup2() throws Exception {}
+
+    @Setup(Level.Invocation)
+    public void setup3() throws Exception {}
+
+    @TearDown(Level.Trial)
+    public void tearDown1() throws Exception {}
+
+    @TearDown(Level.Iteration)
+    public void tearDown2() throws Exception {}
+
+    @TearDown(Level.Invocation)
+    public void tearDown3() throws Exception {}
+
+    @GenerateMicroBenchmark
+    public void test() throws Exception {}
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/exceptions/BenchmarkStateExceptionSignaturesTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,68 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.compile.exceptions;
+
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Level;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.Setup;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.TearDown;
+
+public class BenchmarkStateExceptionSignaturesTest {
+
+    @State(Scope.Benchmark)
+    public static class MyState {
+
+        @Setup(Level.Trial)
+        public void setup1() throws Exception {
+        }
+
+        @Setup(Level.Iteration)
+        public void setup2() throws Exception {
+        }
+
+        @Setup(Level.Invocation)
+        public void setup3() throws Exception {
+        }
+
+        @TearDown(Level.Trial)
+        public void tearDown1() throws Exception {
+        }
+
+        @TearDown(Level.Iteration)
+        public void tearDown2() throws Exception {
+        }
+
+        @TearDown(Level.Invocation)
+        public void tearDown3() throws Exception {
+        }
+    }
+
+    @GenerateMicroBenchmark
+    public void test(MyState s) throws Exception {
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/exceptions/GroupBenchExceptionSignaturesTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.compile.exceptions;
+
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Level;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.Setup;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.TearDown;
+
+@State(Scope.Group)
+public class GroupBenchExceptionSignaturesTest {
+
+    @Setup(Level.Trial)
+    public void setup1() throws Exception {}
+
+    @Setup(Level.Iteration)
+    public void setup2() throws Exception {}
+
+    @Setup(Level.Invocation)
+    public void setup3() throws Exception {}
+
+    @TearDown(Level.Trial)
+    public void tearDown1() throws Exception {}
+
+    @TearDown(Level.Iteration)
+    public void tearDown2() throws Exception {}
+
+    @TearDown(Level.Invocation)
+    public void tearDown3() throws Exception {}
+
+    @GenerateMicroBenchmark
+    public void test() throws Exception {}
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/exceptions/GroupStateExceptionSignaturesTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,68 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.compile.exceptions;
+
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Level;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.Setup;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.TearDown;
+
+public class GroupStateExceptionSignaturesTest {
+
+    @State(Scope.Group)
+    public static class MyState {
+
+        @Setup(Level.Trial)
+        public void setup1() throws Exception {
+        }
+
+        @Setup(Level.Iteration)
+        public void setup2() throws Exception {
+        }
+
+        @Setup(Level.Invocation)
+        public void setup3() throws Exception {
+        }
+
+        @TearDown(Level.Trial)
+        public void tearDown1() throws Exception {
+        }
+
+        @TearDown(Level.Iteration)
+        public void tearDown2() throws Exception {
+        }
+
+        @TearDown(Level.Invocation)
+        public void tearDown3() throws Exception {
+        }
+    }
+
+    @GenerateMicroBenchmark
+    public void test(MyState s) throws Exception {
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/exceptions/ThreadBenchExceptionSignaturesTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.compile.exceptions;
+
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Level;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.Setup;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.TearDown;
+
+@State(Scope.Thread)
+public class ThreadBenchExceptionSignaturesTest {
+
+    @Setup(Level.Trial)
+    public void setup1() throws Exception {}
+
+    @Setup(Level.Iteration)
+    public void setup2() throws Exception {}
+
+    @Setup(Level.Invocation)
+    public void setup3() throws Exception {}
+
+    @TearDown(Level.Trial)
+    public void tearDown1() throws Exception {}
+
+    @TearDown(Level.Iteration)
+    public void tearDown2() throws Exception {}
+
+    @TearDown(Level.Invocation)
+    public void tearDown3() throws Exception {}
+
+    @GenerateMicroBenchmark
+    public void test() throws Exception {}
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/compile/exceptions/ThreadStateExceptionSignaturesTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,68 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.compile.exceptions;
+
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Level;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.Setup;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.TearDown;
+
+public class ThreadStateExceptionSignaturesTest {
+
+    @State(Scope.Thread)
+    public static class MyState {
+
+        @Setup(Level.Trial)
+        public void setup1() throws Exception {
+        }
+
+        @Setup(Level.Iteration)
+        public void setup2() throws Exception {
+        }
+
+        @Setup(Level.Invocation)
+        public void setup3() throws Exception {
+        }
+
+        @TearDown(Level.Trial)
+        public void tearDown1() throws Exception {
+        }
+
+        @TearDown(Level.Iteration)
+        public void tearDown2() throws Exception {
+        }
+
+        @TearDown(Level.Invocation)
+        public void tearDown3() throws Exception {
+        }
+    }
+
+    @GenerateMicroBenchmark
+    public void test(MyState s) throws Exception {
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingBenchmarkBenchSetupTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,77 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.Setup;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.Threads;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Baseline test:
+ * Checks if assertions are propagated back to integration tests.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+@State(Scope.Benchmark)
+public class FailingBenchmarkBenchSetupTest {
+
+    @Setup
+    public void setup() {
+        Assert.fail();
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 1)
+    @Threads(1)
+    public void test() throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+    }
+
+    @Test
+    public void invoke() {
+        boolean failed;
+        try {
+            Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -v -w 1 -r 1 -f false");
+            failed = false;
+        } catch (Throwable t) {
+            failed = true;
+        }
+        junit.framework.Assert.assertTrue("Should have failed", failed);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingBenchmarkBenchTearDownTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,77 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.TearDown;
+import org.openjdk.jmh.annotations.Threads;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Baseline test:
+ * Checks if assertions are propagated back to integration tests.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+@State(Scope.Benchmark)
+public class FailingBenchmarkBenchTearDownTest {
+
+    @TearDown
+    public void tearDown() {
+        Assert.fail();
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 1)
+    @Threads(1)
+    public void test() throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+    }
+
+    @Test
+    public void invoke() {
+        boolean failed;
+        try {
+            Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -v -w 1 -r 1 -f false");
+            failed = false;
+        } catch (Throwable t) {
+            failed = true;
+        }
+        junit.framework.Assert.assertTrue("Should have failed", failed);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingBenchmarkBenchTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,69 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails;
+
+import junit.framework.Assert;
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.Threads;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+/**
+ * Baseline test:
+ * Checks if assertions are propagated back to integration tests.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+@State(Scope.Benchmark)
+public class FailingBenchmarkBenchTest {
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 1)
+    @Threads(1)
+    public void doTest() {
+        Assert.fail();
+    }
+
+    @Test
+    public void invoke() {
+        boolean failed;
+        try {
+            Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -v -w 1 -r 1 -f false");
+            failed = false;
+        } catch (Throwable t) {
+            failed = true;
+        }
+        Assert.assertTrue("Should have failed", failed);
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingBenchmarkStateSetupTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,79 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.Setup;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.Threads;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Baseline test:
+ * Checks if assertions are propagated back to integration tests.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+public class FailingBenchmarkStateSetupTest {
+
+    @State(Scope.Benchmark)
+    public static class MyState {
+        @Setup
+        public void setup() {
+            Assert.fail();
+        }
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 1)
+    @Threads(1)
+    public void test(MyState state) throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+    }
+
+    @Test
+    public void invoke() {
+        boolean failed;
+        try {
+            Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -v -w 1 -r 1 -f false");
+            failed = false;
+        } catch (Throwable t) {
+            failed = true;
+        }
+        junit.framework.Assert.assertTrue("Should have failed", failed);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingBenchmarkStateTearDownTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,79 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.TearDown;
+import org.openjdk.jmh.annotations.Threads;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Baseline test:
+ * Checks if assertions are propagated back to integration tests.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+public class FailingBenchmarkStateTearDownTest {
+
+    @State(Scope.Benchmark)
+    public static class MyState {
+        @TearDown
+        public void tearDown() {
+            Assert.fail();
+        }
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 1)
+    @Threads(1)
+    public void test(MyState state) throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+    }
+
+    @Test
+    public void invoke() {
+        boolean failed;
+        try {
+            Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -v -w 1 -r 1 -f false");
+            failed = false;
+        } catch (Throwable t) {
+            failed = true;
+        }
+        junit.framework.Assert.assertTrue("Should have failed", failed);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingForkedBenchTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,68 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails;
+
+import junit.framework.Assert;
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.Threads;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+/**
+ * Baseline test:
+ * Checks if assertions are propagated back to integration tests.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+@State
+public class FailingForkedBenchTest {
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 1)
+    @Threads(1)
+    public void doTest() {
+        Assert.fail();
+    }
+
+    @Test
+    public void invoke() {
+        boolean failed;
+        try {
+            Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -v -w 1 -r 1 -f");
+            failed = false;
+        } catch (Throwable t) {
+            failed = true;
+        }
+        Assert.assertTrue("Should have failed", failed);
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingForkedSetupTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,76 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Setup;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.Threads;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Baseline test:
+ * Checks if assertions are propagated back to integration tests.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+@State
+public class FailingForkedSetupTest {
+
+    @Setup
+    public void setup() {
+        Assert.fail();
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 1)
+    @Threads(1)
+    public void test() throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+    }
+
+    @Test
+    public void invoke() {
+        boolean failed;
+        try {
+            Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -v -w 1 -r 1 -f");
+            failed = false;
+        } catch (Throwable t) {
+            failed = true;
+        }
+        junit.framework.Assert.assertTrue("Should have failed", failed);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingForkedTearDownTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,77 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.TearDown;
+import org.openjdk.jmh.annotations.Threads;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Baseline test:
+ * Checks if assertions are propagated back to integration tests.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+@State
+public class FailingForkedTearDownTest {
+
+    @TearDown
+    public void tearDown() {
+        Assert.fail();
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 1)
+    @Threads(1)
+    public void test() throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+    }
+
+    @Test
+    public void invoke() {
+        boolean failed;
+        try {
+            Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -v -w 1 -r 1 -f");
+            failed = false;
+        } catch (Throwable t) {
+            failed = true;
+        }
+        junit.framework.Assert.assertTrue("Should have failed", failed);
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingGroupBenchSetupTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,77 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.Setup;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.Threads;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Baseline test:
+ * Checks if assertions are propagated back to integration tests.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+@State(Scope.Group)
+public class FailingGroupBenchSetupTest {
+
+    @Setup
+    public void setup() {
+        Assert.fail();
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 1)
+    @Threads(1)
+    public void test() throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+    }
+
+    @Test
+    public void invoke() {
+        boolean failed;
+        try {
+            Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -v -w 1 -r 1 -f false");
+            failed = false;
+        } catch (Throwable t) {
+            failed = true;
+        }
+        junit.framework.Assert.assertTrue("Should have failed", failed);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingGroupBenchTearDownTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,77 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.TearDown;
+import org.openjdk.jmh.annotations.Threads;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Baseline test:
+ * Checks if assertions are propagated back to integration tests.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+@State(Scope.Group)
+public class FailingGroupBenchTearDownTest {
+
+    @TearDown
+    public void tearDown() {
+        Assert.fail();
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 1)
+    @Threads(1)
+    public void test() throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+    }
+
+    @Test
+    public void invoke() {
+        boolean failed;
+        try {
+            Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -v -w 1 -r 1 -f false");
+            failed = false;
+        } catch (Throwable t) {
+            failed = true;
+        }
+        junit.framework.Assert.assertTrue("Should have failed", failed);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingGroupBenchTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,69 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails;
+
+import junit.framework.Assert;
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.Threads;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+/**
+ * Baseline test:
+ * Checks if assertions are propagated back to integration tests.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+@State(Scope.Group)
+public class FailingGroupBenchTest {
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 1)
+    @Threads(1)
+    public void doTest() {
+        Assert.fail();
+    }
+
+    @Test
+    public void invoke() {
+        boolean failed;
+        try {
+            Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -v -w 1 -r 1 -f false");
+            failed = false;
+        } catch (Throwable t) {
+            failed = true;
+        }
+        Assert.assertTrue("Should have failed", failed);
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingGroupStateSetupTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,79 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.Setup;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.Threads;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Baseline test:
+ * Checks if assertions are propagated back to integration tests.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+public class FailingGroupStateSetupTest {
+
+    @State(Scope.Group)
+    public static class MyState {
+        @Setup
+        public void setup() {
+            Assert.fail();
+        }
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 1)
+    @Threads(1)
+    public void test(MyState state) throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+    }
+
+    @Test
+    public void invoke() {
+        boolean failed;
+        try {
+            Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -v -w 1 -r 1 -f false");
+            failed = false;
+        } catch (Throwable t) {
+            failed = true;
+        }
+        junit.framework.Assert.assertTrue("Should have failed", failed);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingGroupStateTearDownTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,79 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.TearDown;
+import org.openjdk.jmh.annotations.Threads;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Baseline test:
+ * Checks if assertions are propagated back to integration tests.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+public class FailingGroupStateTearDownTest {
+
+    @State(Scope.Group)
+    public static class MyState {
+        @TearDown
+        public void tearDown() {
+            Assert.fail();
+        }
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 1)
+    @Threads(1)
+    public void test(MyState state) throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+    }
+
+    @Test
+    public void invoke() {
+        boolean failed;
+        try {
+            Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -v -w 1 -r 1 -f false");
+            failed = false;
+        } catch (Throwable t) {
+            failed = true;
+        }
+        junit.framework.Assert.assertTrue("Should have failed", failed);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingThreadBenchSetupTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,77 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.Setup;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.Threads;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Baseline test:
+ * Checks if assertions are propagated back to integration tests.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+@State(Scope.Thread)
+public class FailingThreadBenchSetupTest {
+
+    @Setup
+    public void setup() {
+        Assert.fail();
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 1)
+    @Threads(1)
+    public void test() throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+    }
+
+    @Test
+    public void invoke() {
+        boolean failed;
+        try {
+            Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -v -w 1 -r 1 -f false");
+            failed = false;
+        } catch (Throwable t) {
+            failed = true;
+        }
+        junit.framework.Assert.assertTrue("Should have failed", failed);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingThreadBenchTearDownTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,77 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.TearDown;
+import org.openjdk.jmh.annotations.Threads;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Baseline test:
+ * Checks if assertions are propagated back to integration tests.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+@State(Scope.Thread)
+public class FailingThreadBenchTearDownTest {
+
+    @TearDown
+    public void tearDown() {
+        Assert.fail();
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 1)
+    @Threads(1)
+    public void test() throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+    }
+
+    @Test
+    public void invoke() {
+        boolean failed;
+        try {
+            Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -v -w 1 -r 1 -f false");
+            failed = false;
+        } catch (Throwable t) {
+            failed = true;
+        }
+        junit.framework.Assert.assertTrue("Should have failed", failed);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingThreadBenchTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,69 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails;
+
+import junit.framework.Assert;
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.Threads;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+/**
+ * Baseline test:
+ * Checks if assertions are propagated back to integration tests.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+@State(Scope.Thread)
+public class FailingThreadBenchTest {
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 1)
+    @Threads(1)
+    public void doTest() {
+        Assert.fail();
+    }
+
+    @Test
+    public void invoke() {
+        boolean failed;
+        try {
+            Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -v -w 1 -r 1 -f false");
+            failed = false;
+        } catch (Throwable t) {
+            failed = true;
+        }
+        junit.framework.Assert.assertTrue("Should have failed", failed);
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingThreadStateSetupTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,79 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.Setup;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.Threads;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Baseline test:
+ * Checks if assertions are propagated back to integration tests.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+public class FailingThreadStateSetupTest {
+
+    @State(Scope.Thread)
+    public static class MyState {
+        @Setup
+        public void setup() {
+            Assert.fail();
+        }
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 1)
+    @Threads(1)
+    public void test(MyState state) throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+    }
+
+    @Test
+    public void invoke() {
+        boolean failed;
+        try {
+            Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -v -w 1 -r 1 -f false");
+            failed = false;
+        } catch (Throwable t) {
+            failed = true;
+        }
+        junit.framework.Assert.assertTrue("Should have failed", failed);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/FailingThreadStateTearDownTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,79 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.TearDown;
+import org.openjdk.jmh.annotations.Threads;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Baseline test:
+ * Checks if assertions are propagated back to integration tests.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+public class FailingThreadStateTearDownTest {
+
+    @State(Scope.Thread)
+    public static class MyState {
+        @TearDown
+        public void tearDown() {
+            Assert.fail();
+        }
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 1)
+    @Threads(1)
+    public void test(MyState state) throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+    }
+
+    @Test
+    public void invoke() {
+        boolean failed;
+        try {
+            Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -v -w 1 -r 1 -f false");
+            failed = false;
+        } catch (Throwable t) {
+            failed = true;
+        }
+        junit.framework.Assert.assertTrue("Should have failed", failed);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractBenchmarkBenchSetupTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,70 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails.inherit;
+
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.Threads;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Baseline test:
+ * Checks if assertions are propagated back to integration tests.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+@State(Scope.Benchmark)
+public class AbstractBenchmarkBenchSetupTest extends AbstractSetupBase {
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 1)
+    @Threads(1)
+    public void test() throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+    }
+
+    @Test
+    public void invoke() {
+        boolean failed;
+        try {
+            Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -f false");
+            failed = false;
+        } catch (Throwable t) {
+            failed = true;
+        }
+        junit.framework.Assert.assertTrue("Should have failed", failed);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractBenchmarkBenchTearDownTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,70 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails.inherit;
+
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.Threads;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Baseline test:
+ * Checks if assertions are propagated back to integration tests.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+@State(Scope.Benchmark)
+public class AbstractBenchmarkBenchTearDownTest extends AbstractTearDownBase {
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 1)
+    @Threads(1)
+    public void test() throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+    }
+
+    @Test
+    public void invoke() {
+        boolean failed;
+        try {
+            Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -f false");
+            failed = false;
+        } catch (Throwable t) {
+            failed = true;
+        }
+        junit.framework.Assert.assertTrue("Should have failed", failed);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractBenchmarkStateSetupTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,72 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails.inherit;
+
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.Threads;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Baseline test:
+ * Checks if assertions are propagated back to integration tests.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+public class AbstractBenchmarkStateSetupTest {
+
+    @State(Scope.Benchmark)
+    public static class MyState extends AbstractSetupBase {}
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 1)
+    @Threads(1)
+    public void test(MyState state) throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+    }
+
+    @Test
+    public void invoke() {
+        boolean failed;
+        try {
+            Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -f false");
+            failed = false;
+        } catch (Throwable t) {
+            failed = true;
+        }
+        junit.framework.Assert.assertTrue("Should have failed", failed);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractBenchmarkStateTearDownTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,72 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails.inherit;
+
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.Threads;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Baseline test:
+ * Checks if assertions are propagated back to integration tests.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+public class AbstractBenchmarkStateTearDownTest {
+
+    @State(Scope.Benchmark)
+    public static class MyState extends AbstractTearDownBase {}
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 1)
+    @Threads(1)
+    public void test(MyState state) throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+    }
+
+    @Test
+    public void invoke() {
+        boolean failed;
+        try {
+            Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -f false");
+            failed = false;
+        } catch (Throwable t) {
+            failed = true;
+        }
+        junit.framework.Assert.assertTrue("Should have failed", failed);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractGroupBenchSetupTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,70 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails.inherit;
+
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.Threads;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Baseline test:
+ * Checks if assertions are propagated back to integration tests.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+@State(Scope.Group)
+public class AbstractGroupBenchSetupTest extends AbstractSetupBase {
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 1)
+    @Threads(1)
+    public void test() throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+    }
+
+    @Test
+    public void invoke() {
+        boolean failed;
+        try {
+            Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -f false");
+            failed = false;
+        } catch (Throwable t) {
+            failed = true;
+        }
+        junit.framework.Assert.assertTrue("Should have failed", failed);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractGroupBenchTearDownTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,70 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails.inherit;
+
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.Threads;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Baseline test:
+ * Checks if assertions are propagated back to integration tests.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+@State(Scope.Group)
+public class AbstractGroupBenchTearDownTest extends AbstractTearDownBase {
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 1)
+    @Threads(1)
+    public void test() throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+    }
+
+    @Test
+    public void invoke() {
+        boolean failed;
+        try {
+            Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -f false");
+            failed = false;
+        } catch (Throwable t) {
+            failed = true;
+        }
+        junit.framework.Assert.assertTrue("Should have failed", failed);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractGroupStateSetupTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,72 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails.inherit;
+
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.Threads;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Baseline test:
+ * Checks if assertions are propagated back to integration tests.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+public class AbstractGroupStateSetupTest {
+
+    @State(Scope.Group)
+    public static class MyState extends AbstractSetupBase {}
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 1)
+    @Threads(1)
+    public void test(MyState state) throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+    }
+
+    @Test
+    public void invoke() {
+        boolean failed;
+        try {
+            Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -f false");
+            failed = false;
+        } catch (Throwable t) {
+            failed = true;
+        }
+        junit.framework.Assert.assertTrue("Should have failed", failed);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractGroupStateTearDownTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,72 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails.inherit;
+
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.Threads;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Baseline test:
+ * Checks if assertions are propagated back to integration tests.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+public class AbstractGroupStateTearDownTest {
+
+    @State(Scope.Group)
+    public static class MyState extends AbstractTearDownBase {}
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 1)
+    @Threads(1)
+    public void test(MyState state) throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+    }
+
+    @Test
+    public void invoke() {
+        boolean failed;
+        try {
+            Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -f false");
+            failed = false;
+        } catch (Throwable t) {
+            failed = true;
+        }
+        junit.framework.Assert.assertTrue("Should have failed", failed);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractSetupBase.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,35 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails.inherit;
+
+import org.junit.Assert;
+import org.openjdk.jmh.annotations.Setup;
+
+public abstract class AbstractSetupBase {
+    @Setup
+    public void setup() {
+        Assert.fail();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractTearDownBase.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,35 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails.inherit;
+
+import org.junit.Assert;
+import org.openjdk.jmh.annotations.TearDown;
+
+public abstract class AbstractTearDownBase {
+    @TearDown
+    public void tearDown() {
+        Assert.fail();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractThreadBenchSetupTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,70 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails.inherit;
+
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.Threads;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Baseline test:
+ * Checks if assertions are propagated back to integration tests.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+@State(Scope.Thread)
+public class AbstractThreadBenchSetupTest extends AbstractSetupBase {
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 1)
+    @Threads(1)
+    public void test() throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+    }
+
+    @Test
+    public void invoke() {
+        boolean failed;
+        try {
+            Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -f false");
+            failed = false;
+        } catch (Throwable t) {
+            failed = true;
+        }
+        junit.framework.Assert.assertTrue("Should have failed", failed);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractThreadBenchTearDownTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,70 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails.inherit;
+
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.Threads;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Baseline test:
+ * Checks if assertions are propagated back to integration tests.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+@State(Scope.Thread)
+public class AbstractThreadBenchTearDownTest extends AbstractTearDownBase {
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 1)
+    @Threads(1)
+    public void test() throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+    }
+
+    @Test
+    public void invoke() {
+        boolean failed;
+        try {
+            Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -f false");
+            failed = false;
+        } catch (Throwable t) {
+            failed = true;
+        }
+        junit.framework.Assert.assertTrue("Should have failed", failed);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractThreadStateSetupTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,72 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails.inherit;
+
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.Threads;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Baseline test:
+ * Checks if assertions are propagated back to integration tests.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+public class AbstractThreadStateSetupTest {
+
+    @State(Scope.Thread)
+    public static class MyState extends AbstractSetupBase {}
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 1)
+    @Threads(1)
+    public void test(MyState state) throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+    }
+
+    @Test
+    public void invoke() {
+        boolean failed;
+        try {
+            Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -f false");
+            failed = false;
+        } catch (Throwable t) {
+            failed = true;
+        }
+        junit.framework.Assert.assertTrue("Should have failed", failed);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/AbstractThreadStateTearDownTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,72 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails.inherit;
+
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.Threads;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Baseline test:
+ * Checks if assertions are propagated back to integration tests.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+public class AbstractThreadStateTearDownTest {
+
+    @State(Scope.Thread)
+    public static class MyState extends AbstractTearDownBase {}
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 1)
+    @Threads(1)
+    public void test(MyState state) throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+    }
+
+    @Test
+    public void invoke() {
+        boolean failed;
+        try {
+            Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -f false");
+            failed = false;
+        } catch (Throwable t) {
+            failed = true;
+        }
+        junit.framework.Assert.assertTrue("Should have failed", failed);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritBenchmarkBenchSetupTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,67 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails.inherit;
+
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Threads;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Baseline test:
+ * Checks if assertions are propagated back to integration tests.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+public class InheritBenchmarkBenchSetupTest extends InheritableBenchmarkSetupState {
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 1)
+    @Threads(1)
+    public void test() throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+    }
+
+    @Test
+    public void invoke() {
+        boolean failed;
+        try {
+            Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -f false");
+            failed = false;
+        } catch (Throwable t) {
+            failed = true;
+        }
+        junit.framework.Assert.assertTrue("Should have failed", failed);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritBenchmarkBenchTearDownTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,67 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails.inherit;
+
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Threads;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Baseline test:
+ * Checks if assertions are propagated back to integration tests.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+public class InheritBenchmarkBenchTearDownTest extends InheritableBenchmarkTearDownState {
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 1)
+    @Threads(1)
+    public void test() throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+    }
+
+    @Test
+    public void invoke() {
+        boolean failed;
+        try {
+            Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -f false");
+            failed = false;
+        } catch (Throwable t) {
+            failed = true;
+        }
+        junit.framework.Assert.assertTrue("Should have failed", failed);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritBenchmarkStateSetupTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,69 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails.inherit;
+
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Threads;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Baseline test:
+ * Checks if assertions are propagated back to integration tests.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+public class InheritBenchmarkStateSetupTest {
+
+    public static class MyState extends InheritableBenchmarkSetupState {}
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 1)
+    @Threads(1)
+    public void test(MyState state) throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+    }
+
+    @Test
+    public void invoke() {
+        boolean failed;
+        try {
+            Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -f false");
+            failed = false;
+        } catch (Throwable t) {
+            failed = true;
+        }
+        junit.framework.Assert.assertTrue("Should have failed", failed);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritBenchmarkStateTearDownTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,69 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails.inherit;
+
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Threads;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Baseline test:
+ * Checks if assertions are propagated back to integration tests.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+public class InheritBenchmarkStateTearDownTest {
+
+    public static class MyState extends InheritableBenchmarkTearDownState {}
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 1)
+    @Threads(1)
+    public void test(MyState state) throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+    }
+
+    @Test
+    public void invoke() {
+        boolean failed;
+        try {
+            Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -f false");
+            failed = false;
+        } catch (Throwable t) {
+            failed = true;
+        }
+        junit.framework.Assert.assertTrue("Should have failed", failed);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritGroupBenchSetupTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,67 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails.inherit;
+
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Threads;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Baseline test:
+ * Checks if assertions are propagated back to integration tests.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+public class InheritGroupBenchSetupTest extends InheritableGroupSetupState {
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 1)
+    @Threads(1)
+    public void test() throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+    }
+
+    @Test
+    public void invoke() {
+        boolean failed;
+        try {
+            Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -f false");
+            failed = false;
+        } catch (Throwable t) {
+            failed = true;
+        }
+        junit.framework.Assert.assertTrue("Should have failed", failed);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritGroupBenchTearDownTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,67 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails.inherit;
+
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Threads;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Baseline test:
+ * Checks if assertions are propagated back to integration tests.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+public class InheritGroupBenchTearDownTest extends InheritableGroupTearDownState {
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 1)
+    @Threads(1)
+    public void test() throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+    }
+
+    @Test
+    public void invoke() {
+        boolean failed;
+        try {
+            Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -f false");
+            failed = false;
+        } catch (Throwable t) {
+            failed = true;
+        }
+        junit.framework.Assert.assertTrue("Should have failed", failed);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritGroupStateSetupTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,69 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails.inherit;
+
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Threads;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Baseline test:
+ * Checks if assertions are propagated back to integration tests.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+public class InheritGroupStateSetupTest {
+
+    public static class MyState extends InheritableGroupSetupState {}
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 1)
+    @Threads(1)
+    public void test(MyState state) throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+    }
+
+    @Test
+    public void invoke() {
+        boolean failed;
+        try {
+            Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -f false");
+            failed = false;
+        } catch (Throwable t) {
+            failed = true;
+        }
+        junit.framework.Assert.assertTrue("Should have failed", failed);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritGroupStateTearDownTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,69 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails.inherit;
+
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Threads;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Baseline test:
+ * Checks if assertions are propagated back to integration tests.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+public class InheritGroupStateTearDownTest {
+
+    public static class MyState extends InheritableGroupTearDownState {}
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 1)
+    @Threads(1)
+    public void test(MyState state) throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+    }
+
+    @Test
+    public void invoke() {
+        boolean failed;
+        try {
+            Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -f false");
+            failed = false;
+        } catch (Throwable t) {
+            failed = true;
+        }
+        junit.framework.Assert.assertTrue("Should have failed", failed);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritThreadBenchSetupTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,67 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails.inherit;
+
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Threads;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Baseline test:
+ * Checks if assertions are propagated back to integration tests.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+public class InheritThreadBenchSetupTest extends InheritableThreadSetupState {
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 1)
+    @Threads(1)
+    public void test() throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+    }
+
+    @Test
+    public void invoke() {
+        boolean failed;
+        try {
+            Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -f false");
+            failed = false;
+        } catch (Throwable t) {
+            failed = true;
+        }
+        junit.framework.Assert.assertTrue("Should have failed", failed);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritThreadBenchTearDownTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,67 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails.inherit;
+
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Threads;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Baseline test:
+ * Checks if assertions are propagated back to integration tests.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+public class InheritThreadBenchTearDownTest extends InheritableThreadTearDownState {
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 1)
+    @Threads(1)
+    public void test() throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+    }
+
+    @Test
+    public void invoke() {
+        boolean failed;
+        try {
+            Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -f false");
+            failed = false;
+        } catch (Throwable t) {
+            failed = true;
+        }
+        junit.framework.Assert.assertTrue("Should have failed", failed);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritThreadStateSetupTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,69 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails.inherit;
+
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Threads;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Baseline test:
+ * Checks if assertions are propagated back to integration tests.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+public class InheritThreadStateSetupTest {
+
+    public static class MyState extends InheritableThreadSetupState {}
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 1)
+    @Threads(1)
+    public void test(MyState state) throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+    }
+
+    @Test
+    public void invoke() {
+        boolean failed;
+        try {
+            Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -f false");
+            failed = false;
+        } catch (Throwable t) {
+            failed = true;
+        }
+        junit.framework.Assert.assertTrue("Should have failed", failed);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritThreadStateTearDownTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,69 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails.inherit;
+
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Threads;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Baseline test:
+ * Checks if assertions are propagated back to integration tests.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+public class InheritThreadStateTearDownTest {
+
+    public static class MyState extends InheritableThreadTearDownState {}
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 1)
+    @Threads(1)
+    public void test(MyState state) throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(100);
+    }
+
+    @Test
+    public void invoke() {
+        boolean failed;
+        try {
+            Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -f false");
+            failed = false;
+        } catch (Throwable t) {
+            failed = true;
+        }
+        junit.framework.Assert.assertTrue("Should have failed", failed);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritableBenchmarkSetupState.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,38 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails.inherit;
+
+import org.junit.Assert;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.Setup;
+import org.openjdk.jmh.annotations.State;
+
+@State(Scope.Benchmark)
+public class InheritableBenchmarkSetupState {
+    @Setup
+    public void setup() {
+        Assert.fail();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritableBenchmarkTearDownState.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,38 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails.inherit;
+
+import org.junit.Assert;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.TearDown;
+
+@State(Scope.Benchmark)
+public class InheritableBenchmarkTearDownState {
+    @TearDown
+    public void tearDown() {
+        Assert.fail();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritableGroupSetupState.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,38 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails.inherit;
+
+import org.junit.Assert;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.Setup;
+import org.openjdk.jmh.annotations.State;
+
+@State(Scope.Group)
+public class InheritableGroupSetupState {
+    @Setup
+    public void setup() {
+        Assert.fail();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritableGroupTearDownState.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,38 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails.inherit;
+
+import org.junit.Assert;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.TearDown;
+
+@State(Scope.Group)
+public class InheritableGroupTearDownState {
+    @TearDown
+    public void tearDown() {
+        Assert.fail();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritableThreadSetupState.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,38 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails.inherit;
+
+import org.junit.Assert;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.Setup;
+import org.openjdk.jmh.annotations.State;
+
+@State(Scope.Thread)
+public class InheritableThreadSetupState {
+    @Setup
+    public void setup() {
+        Assert.fail();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fails/inherit/InheritableThreadTearDownState.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,38 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fails.inherit;
+
+import org.junit.Assert;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.TearDown;
+
+@State(Scope.Thread)
+public class InheritableThreadTearDownState {
+    @TearDown
+    public void tearDown() {
+        Assert.fail();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/AnnotatedClassForkedTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,73 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fork;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.Fork;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Tests if harness had indeed executed different tests in different JVMs.
+ *
+ * @author Sergey Kuksenko (sergey.kuksenko@oracle.com)
+ */
+@Fork
+public class AnnotatedClassForkedTest {
+
+    private static volatile boolean test1executed;
+    private static volatile boolean test2executed;
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 100, timeUnit = TimeUnit.MILLISECONDS)
+    public void test1() throws InterruptedException {
+        Fixtures.work();
+        test1executed = true;
+        Assert.assertFalse(test2executed);
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 100, timeUnit = TimeUnit.MILLISECONDS)
+    public void test2() throws InterruptedException {
+        Fixtures.work();
+        test2executed = true;
+        Assert.assertFalse(test1executed);
+    }
+
+    @Test
+    public void invoke() {
+        Main.testMain(Fixtures.getTestMask(this.getClass()) + "  -foe");
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/AnnotatedForkedTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,78 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fork;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.Fork;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Tests if harness had indeed executed different tests in different JVMs.
+ *
+ * @author Sergey Kuksenko (sergey.kuksenko@oracle.com)
+ */
+public class AnnotatedForkedTest {
+
+    private static volatile boolean test1executed;
+    private static volatile boolean test2executed;
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 100, timeUnit = TimeUnit.MILLISECONDS)
+    public void test1() throws InterruptedException {
+        Fixtures.work();
+        test1executed = true;
+        Assert.assertFalse(test2executed);
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 100, timeUnit = TimeUnit.MILLISECONDS)
+    @Fork(2)
+    public void test2() throws InterruptedException {
+        Fixtures.work();
+        test2executed = true;
+        Assert.assertFalse(test1executed);
+    }
+
+    @Test
+    public void invoke() {
+        Main.testMain(Fixtures.getTestMask(this.getClass()) + "  -foe");
+    }
+
+    @Test
+    public void invoke5() {
+        Main.testMain(Fixtures.getTestMask(this.getClass()) + "  -foe -f");
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/AnnotatedForkedTest2.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,76 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fork;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.Fork;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Tests if harness had indeed executed different tests in different JVMs.
+ *
+ * @author Sergey Kuksenko (sergey.kuksenko@oracle.com)
+ */
+public class AnnotatedForkedTest2 {
+
+    private static volatile boolean test1executed;
+    private static volatile boolean test2executed;
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 100, timeUnit = TimeUnit.MILLISECONDS)
+    @Fork()
+    public void test1() throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(10);
+        test1executed = true;
+        Assert.assertFalse(test2executed);
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 100, timeUnit = TimeUnit.MILLISECONDS)
+    @Fork(value = 2, warmups = 1)
+    public void test2() throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(10);
+        test2executed = true;
+        Assert.assertFalse(test1executed);
+    }
+
+    @Test
+    public void invoke() {
+        Main.testMain(Fixtures.getTestMask(this.getClass()) + "  -foe");
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/ForkedJvmAppendPrependArgsTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,98 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fork;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.Fork;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+public class ForkedJvmAppendPrependArgsTest {
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 100, timeUnit = TimeUnit.MILLISECONDS)
+    @Fork(jvmArgs = "-Dreplaced", jvmArgsAppend = "-Dappended", jvmArgsPrepend = "-Dprepended")
+    public void test1() throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(10);
+        Assert.assertNotNull(System.getProperty("replaced"));
+        Assert.assertNull(System.getProperty("appended"));
+        Assert.assertNull(System.getProperty("prepended"));
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 100, timeUnit = TimeUnit.MILLISECONDS)
+    @Fork(jvmArgsAppend = "-Dappended", jvmArgsPrepend = "-Dprepended")
+    public void test2() throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(10);
+        Assert.assertNull(System.getProperty("replaced"));
+        Assert.assertNotNull(System.getProperty("appended"));
+        Assert.assertNotNull(System.getProperty("prepended"));
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 100, timeUnit = TimeUnit.MILLISECONDS)
+    @Fork(jvmArgsPrepend = "-Dprepended")
+    public void test3() throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(10);
+        Assert.assertNull(System.getProperty("replaced"));
+        Assert.assertNull(System.getProperty("appended"));
+        Assert.assertNotNull(System.getProperty("prepended"));
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 100, timeUnit = TimeUnit.MILLISECONDS)
+    @Fork(jvmArgsAppend = "-Dappended")
+    public void test4() throws InterruptedException {
+        // courtesy for parallel-running tests
+        TimeUnit.MILLISECONDS.sleep(10);
+        Assert.assertNull(System.getProperty("replaced"));
+        Assert.assertNotNull(System.getProperty("appended"));
+        Assert.assertNull(System.getProperty("prepended"));
+    }
+
+    @Test
+    public void invoke() {
+        Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe");
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/ForkedJvmArgsTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,70 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fork;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.Fork;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+public class ForkedJvmArgsTest {
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 100, timeUnit = TimeUnit.MILLISECONDS)
+    @Fork(jvmArgs = "-Dtest1")
+    public void test1() throws InterruptedException {
+        Fixtures.work();
+        Assert.assertNotNull(System.getProperty("test1"));
+        Assert.assertNull(System.getProperty("test2"));
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 100, timeUnit = TimeUnit.MILLISECONDS)
+    @Fork(jvmArgs = "-Dtest2")
+    public void test2() throws InterruptedException {
+        Fixtures.work();
+        Assert.assertNull(System.getProperty("test1"));
+        Assert.assertNotNull(System.getProperty("test2"));
+    }
+
+    @Test
+    public void invoke() {
+        Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe");
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/ForkedTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,76 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fork;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Tests if harness had indeed executed different tests in different JVMs.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+public class ForkedTest {
+
+    private static volatile boolean test1executed;
+    private static volatile boolean test2executed;
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 100, timeUnit = TimeUnit.MILLISECONDS)
+    public void test1() throws InterruptedException {
+        Fixtures.work();
+        test1executed = true;
+        Assert.assertFalse(test2executed);
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 100, timeUnit = TimeUnit.MILLISECONDS)
+    public void test2() throws InterruptedException {
+        Fixtures.work();
+        test2executed = true;
+        Assert.assertFalse(test1executed);
+    }
+
+    @Test
+    public void invoke() {
+        Main.testMain(Fixtures.getTestMask(this.getClass()) + "  -foe -f");
+    }
+
+    @Test
+    public void invoke1() {
+        Main.testMain(Fixtures.getTestMask(this.getClass()) + "  -foe -f 1");
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_D_D_Test.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,63 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fork.override;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Tests if harness had indeed executed different tests in different JVMs.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+public class ForkOverride_D_D_Test {
+
+    private static volatile boolean sameVM;
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 100, timeUnit = TimeUnit.MILLISECONDS)
+    public void test1() throws InterruptedException {
+        Fixtures.work();
+        sameVM = true;
+    }
+
+    @Test
+    public void invoke() {
+        Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe");
+
+        // should execute in another VM.
+        Assert.assertEquals(false, sameVM);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_D_F0_Test.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,63 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fork.override;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Tests if harness had indeed executed different tests in different JVMs.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+public class ForkOverride_D_F0_Test {
+
+    private static volatile boolean sameVM;
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 100, timeUnit = TimeUnit.MILLISECONDS)
+    public void test1() throws InterruptedException {
+        Fixtures.work();
+        sameVM = true;
+    }
+
+    @Test
+    public void invoke() {
+        Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -f 0");
+
+        // should execute in the same VM.
+        Assert.assertEquals(true, sameVM);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_D_F1_Test.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,63 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fork.override;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Tests if harness had indeed executed different tests in different JVMs.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+public class ForkOverride_D_F1_Test {
+
+    private static volatile boolean sameVM;
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 100, timeUnit = TimeUnit.MILLISECONDS)
+    public void test1() throws InterruptedException {
+        Fixtures.work();
+        sameVM = true;
+    }
+
+    @Test
+    public void invoke() {
+        Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -f 1");
+
+        // should execute in another VM.
+        Assert.assertEquals(false, sameVM);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_D_F_Test.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,63 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fork.override;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Tests if harness had indeed executed different tests in different JVMs.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+public class ForkOverride_D_F_Test {
+
+    private static volatile boolean sameVM;
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 100, timeUnit = TimeUnit.MILLISECONDS)
+    public void test1() throws InterruptedException {
+        Fixtures.work();
+        sameVM = true;
+    }
+
+    @Test
+    public void invoke() {
+        Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -f");
+
+        // should execute in another VM.
+        Assert.assertEquals(false, sameVM);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F0_D_Test.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,65 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fork.override;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.Fork;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Tests if harness had indeed executed different tests in different JVMs.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+public class ForkOverride_F0_D_Test {
+
+    private static volatile boolean sameVM;
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Fork(0)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 100, timeUnit = TimeUnit.MILLISECONDS)
+    public void test1() throws InterruptedException {
+        Fixtures.work();
+        sameVM = true;
+    }
+
+    @Test
+    public void invoke() {
+        Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe");
+
+        // should execute in the same VM.
+        Assert.assertEquals(true, sameVM);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F0_F0_Test.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,65 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fork.override;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.Fork;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Tests if harness had indeed executed different tests in different JVMs.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+public class ForkOverride_F0_F0_Test {
+
+    private static volatile boolean sameVM;
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Fork(0)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 100, timeUnit = TimeUnit.MILLISECONDS)
+    public void test1() throws InterruptedException {
+        Fixtures.work();
+        sameVM = true;
+    }
+
+    @Test
+    public void invoke() {
+        Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -f 0");
+
+        // should execute in same VM.
+        Assert.assertEquals(true, sameVM);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F0_F1_Test.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,65 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fork.override;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.Fork;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Tests if harness had indeed executed different tests in different JVMs.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+public class ForkOverride_F0_F1_Test {
+
+    private static volatile boolean sameVM;
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Fork(0)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 100, timeUnit = TimeUnit.MILLISECONDS)
+    public void test1() throws InterruptedException {
+        Fixtures.work();
+        sameVM = true;
+    }
+
+    @Test
+    public void invoke() {
+        Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -f 1");
+
+        // should execute in another VM.
+        Assert.assertEquals(false, sameVM);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F0_F_Test.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,65 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fork.override;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.Fork;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Tests if harness had indeed executed different tests in different JVMs.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+public class ForkOverride_F0_F_Test {
+
+    private static volatile boolean sameVM;
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Fork(0)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 100, timeUnit = TimeUnit.MILLISECONDS)
+    public void test1() throws InterruptedException {
+        Fixtures.work();
+        sameVM = true;
+    }
+
+    @Test
+    public void invoke() {
+        Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -f");
+
+        // should execute in another VM.
+        Assert.assertEquals(false, sameVM);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F1_D_Test.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,65 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fork.override;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.Fork;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Tests if harness had indeed executed different tests in different JVMs.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+public class ForkOverride_F1_D_Test {
+
+    private static volatile boolean sameVM;
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Fork(1)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 100, timeUnit = TimeUnit.MILLISECONDS)
+    public void test1() throws InterruptedException {
+        Fixtures.work();
+        sameVM = true;
+    }
+
+    @Test
+    public void invoke() {
+        Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe");
+
+        // should execute in another VM.
+        Assert.assertEquals(false, sameVM);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F1_F0_Test.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,65 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fork.override;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.Fork;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Tests if harness had indeed executed different tests in different JVMs.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+public class ForkOverride_F1_F0_Test {
+
+    private static volatile boolean sameVM;
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Fork(1)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 100, timeUnit = TimeUnit.MILLISECONDS)
+    public void test1() throws InterruptedException {
+        Fixtures.work();
+        sameVM = true;
+    }
+
+    @Test
+    public void invoke() {
+        Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -f 0");
+
+        // should execute in same VM.
+        Assert.assertEquals(true, sameVM);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F1_F1_Test.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,65 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fork.override;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.Fork;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Tests if harness had indeed executed different tests in different JVMs.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+public class ForkOverride_F1_F1_Test {
+
+    private static volatile boolean sameVM;
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Fork(1)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 100, timeUnit = TimeUnit.MILLISECONDS)
+    public void test1() throws InterruptedException {
+        Fixtures.work();
+        sameVM = true;
+    }
+
+    @Test
+    public void invoke() {
+        Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -f 1");
+
+        // should execute in another VM.
+        Assert.assertEquals(false, sameVM);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F1_F_Test.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,65 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fork.override;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.Fork;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Tests if harness had indeed executed different tests in different JVMs.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+public class ForkOverride_F1_F_Test {
+
+    private static volatile boolean sameVM;
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Fork(1)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 100, timeUnit = TimeUnit.MILLISECONDS)
+    public void test1() throws InterruptedException {
+        Fixtures.work();
+        sameVM = true;
+    }
+
+    @Test
+    public void invoke() {
+        Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -f");
+
+        // should execute in another VM.
+        Assert.assertEquals(false, sameVM);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F_D_Test.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,65 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fork.override;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.Fork;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Tests if harness had indeed executed different tests in different JVMs.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+public class ForkOverride_F_D_Test {
+
+    private static volatile boolean sameVM;
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Fork
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 100, timeUnit = TimeUnit.MILLISECONDS)
+    public void test1() throws InterruptedException {
+        Fixtures.work();
+        sameVM = true;
+    }
+
+    @Test
+    public void invoke() {
+        Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe");
+
+        // should execute in another VM.
+        Assert.assertEquals(false, sameVM);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F_F0_Test.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,65 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fork.override;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.Fork;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Tests if harness had indeed executed different tests in different JVMs.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+public class ForkOverride_F_F0_Test {
+
+    private static volatile boolean sameVM;
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Fork
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 100, timeUnit = TimeUnit.MILLISECONDS)
+    public void test1() throws InterruptedException {
+        Fixtures.work();
+        sameVM = true;
+    }
+
+    @Test
+    public void invoke() {
+        Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -f 0");
+
+        // should execute in the same VM.
+        Assert.assertEquals(true, sameVM);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F_F1_Test.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,65 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fork.override;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.Fork;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Tests if harness had indeed executed different tests in different JVMs.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+public class ForkOverride_F_F1_Test {
+
+    private static volatile boolean sameVM;
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Fork
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 100, timeUnit = TimeUnit.MILLISECONDS)
+    public void test1() throws InterruptedException {
+        Fixtures.work();
+        sameVM = true;
+    }
+
+    @Test
+    public void invoke() {
+        Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -f 1");
+
+        // should execute in another VM.
+        Assert.assertEquals(false, sameVM);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/fork/override/ForkOverride_F_F_Test.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,65 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.fork.override;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.BenchmarkType;
+import org.openjdk.jmh.annotations.Fork;
+import org.openjdk.jmh.annotations.GenerateMicroBenchmark;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Tests if harness had indeed executed different tests in different JVMs.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+public class ForkOverride_F_F_Test {
+
+    private static volatile boolean sameVM;
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Fork
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 100, timeUnit = TimeUnit.MILLISECONDS)
+    public void test1() throws InterruptedException {
+        Fixtures.work();
+        sameVM = true;
+    }
+
+    @Test
+    public void invoke() {
+        Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -f");
+
+        // should execute in another VM.
+        Assert.assertEquals(false, sameVM);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/generated/GeneratedWarmupModeTest0.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,104 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.generated;
+
+
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.MicroBenchmark;
+import org.openjdk.jmh.it.Fixtures;
+import org.openjdk.jmh.logic.Loop;
+import org.openjdk.jmh.logic.results.AverageTimePerOp;
+import org.openjdk.jmh.logic.results.Result;
+
+import java.util.Queue;
+import java.util.concurrent.ConcurrentLinkedQueue;
+import java.util.concurrent.TimeUnit;
+
+import static junit.framework.Assert.assertEquals;
+
+/**
+ * Tests if harness honors warmup command line settings like:
+ * -wmb
+ * -wm
+ * -frw
+ * ....
+ *
+ * @author Sergey Kuksenko (sergey.kuksenko@oracle.com)
+ */
+public class GeneratedWarmupModeTest0 {
+
+    private static Queue<String> testSequence = new ConcurrentLinkedQueue<String>();
+
+    @MicroBenchmark
+    public Result testBig(Loop loop) throws InterruptedException {
+        if (loop.getDuration() == 1000) { // warmup
+            testSequence.add("W");
+        } else if (loop.getDuration() == 2000) {  // iteration
+            testSequence.add("I");
+        }
+        loop.start();
+        while (!loop.done()) {
+            // courtesy for parallel-running tests
+            TimeUnit.MILLISECONDS.sleep(100);
+        }
+
+        return new AverageTimePerOp("test", 1, 42, TimeUnit.NANOSECONDS);
+    }
+
+
+    @MicroBenchmark
+    public Result testSmall(Loop loop) throws InterruptedException {
+        if (loop.getDuration() == 1000) { // warmup
+            testSequence.add("w");
+        } else if (loop.getDuration() == 2000) {  // iteration
+            testSequence.add("i");
+        }
+        loop.start();
+        while (!loop.done()) {
+            // courtesy for parallel-running tests
+            TimeUnit.MILLISECONDS.sleep(100);
+        }
+
+        return new AverageTimePerOp("test", 1, 42, TimeUnit.NANOSECONDS);
+    }
+
+
+    private static String getSequence() {
+        StringBuilder sb = new StringBuilder();
+        for (String s : testSequence) {
+            sb.append(s);
+        }
+        return sb.toString();
+    }
+
+    @Test
+    public void invoke0() {
+        testSequence.clear();
+        Main.testMain(Fixtures.getTestMask(this.getClass()) + ".testBig.* -foe -w 1 -r 2 -t 1 -i 1 -wi 2 -f false");
+        assertEquals("WWI", getSequence());
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/generated/GeneratedWarmupModeTest1.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,103 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.generated;
+
+
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.MicroBenchmark;
+import org.openjdk.jmh.it.Fixtures;
+import org.openjdk.jmh.logic.Loop;
+import org.openjdk.jmh.logic.results.AverageTimePerOp;
+import org.openjdk.jmh.logic.results.Result;
+
+import java.util.Queue;
+import java.util.concurrent.ConcurrentLinkedQueue;
+import java.util.concurrent.TimeUnit;
+
+import static junit.framework.Assert.assertEquals;
+
+/**
+ * Tests if harness honors warmup command line settings like:
+ * -wmb
+ * -wm
+ * -frw
+ * ....
+ *
+ * @author Sergey Kuksenko (sergey.kuksenko@oracle.com)
+ */
+public class GeneratedWarmupModeTest1 {
+
+    private static Queue<String> testSequence = new ConcurrentLinkedQueue<String>();
+
+    @MicroBenchmark
+    public Result testBig(Loop loop) throws InterruptedException {
+        if (loop.getDuration() == 1000) { // warmup
+            testSequence.add("W");
+        } else if (loop.getDuration() == 2000) {  // iteration
+            testSequence.add("I");
+        }
+        loop.start();
+        while (!loop.done()) {
+            // courtesy for parallel-running tests
+            TimeUnit.MILLISECONDS.sleep(100);
+        }
+
+        return new AverageTimePerOp("test", 1, 42, TimeUnit.NANOSECONDS);
+    }
+
+
+    @MicroBenchmark
+    public Result testSmall(Loop loop) throws InterruptedException {
+        if (loop.getDuration() == 1000) { // warmup
+            testSequence.add("w");
+        } else if (loop.getDuration() == 2000) {  // iteration
+            testSequence.add("i");
+        }
+        loop.start();
+        while (!loop.done()) {
+            // courtesy for parallel-running tests
+            TimeUnit.MILLISECONDS.sleep(100);
+        }
+
+        return new AverageTimePerOp("test", 1, 42, TimeUnit.NANOSECONDS);
+    }
+
+
+    private static String getSequence() {
+        StringBuilder sb = new StringBuilder();
+        for (String s : testSequence) {
+            sb.append(s);
+        }
+        return sb.toString();
+    }
+
+    @Test
+    public void invoke1() {
+        testSequence.clear();
+        Main.testMain(Fixtures.getTestMask(this.getClass()) + ".testSmall.* -foe -w 1 -r 2 -t 1 -i 1 -wi 2 -f false");
+        assertEquals("wwi", getSequence());
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/generated/GeneratedWarmupModeTest2.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,103 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.generated;
+
+
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.MicroBenchmark;
+import org.openjdk.jmh.it.Fixtures;
+import org.openjdk.jmh.logic.Loop;
+import org.openjdk.jmh.logic.results.AverageTimePerOp;
+import org.openjdk.jmh.logic.results.Result;
+
+import java.util.Queue;
+import java.util.concurrent.ConcurrentLinkedQueue;
+import java.util.concurrent.TimeUnit;
+
+import static junit.framework.Assert.assertEquals;
+
+/**
+ * Tests if harness honors warmup command line settings like:
+ * -wmb
+ * -wm
+ * -frw
+ * ....
+ *
+ * @author Sergey Kuksenko (sergey.kuksenko@oracle.com)
+ */
+public class GeneratedWarmupModeTest2 {
+
+    private static Queue<String> testSequence = new ConcurrentLinkedQueue<String>();
+
+    @MicroBenchmark
+    public Result testBig(Loop loop) throws InterruptedException {
+        if (loop.getDuration() == 1000) { // warmup
+            testSequence.add("W");
+        } else if (loop.getDuration() == 2000) {  // iteration
+            testSequence.add("I");
+        }
+        loop.start();
+        while (!loop.done()) {
+            // courtesy for parallel-running tests
+            TimeUnit.MILLISECONDS.sleep(100);
+        }
+
+        return new AverageTimePerOp("test", 1, 42, TimeUnit.NANOSECONDS);
+    }
+
+
+    @MicroBenchmark
+    public Result testSmall(Loop loop) throws InterruptedException {
+        if (loop.getDuration() == 1000) { // warmup
+            testSequence.add("w");
+        } else if (loop.getDuration() == 2000) {  // iteration
+            testSequence.add("i");
+        }
+        loop.start();
+        while (!loop.done()) {
+            // courtesy for parallel-running tests
+            TimeUnit.MILLISECONDS.sleep(100);
+        }
+
+        return new AverageTimePerOp("test", 1, 42, TimeUnit.NANOSECONDS);
+    }
+
+
+    private static String getSequence() {
+        StringBuilder sb = new StringBuilder();
+        for (String s : testSequence) {
+            sb.append(s);
+        }
+        return sb.toString();
+    }
+
+    @Test
+    public void invoke2() {
+        testSequence.clear();
+        Main.testMain(Fixtures.getTestMask(this.getClass()) + ".testBig.* -foe -w 1 -r 2 -t 2 -i 1 -wi 2 -f false");
+        assertEquals("WWWWII", getSequence());
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/generated/GeneratedWarmupModeTest3.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,103 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.generated;
+
+
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.MicroBenchmark;
+import org.openjdk.jmh.it.Fixtures;
+import org.openjdk.jmh.logic.Loop;
+import org.openjdk.jmh.logic.results.AverageTimePerOp;
+import org.openjdk.jmh.logic.results.Result;
+
+import java.util.Queue;
+import java.util.concurrent.ConcurrentLinkedQueue;
+import java.util.concurrent.TimeUnit;
+
+import static junit.framework.Assert.assertEquals;
+
+/**
+ * Tests if harness honors warmup command line settings like:
+ * -wmb
+ * -wm
+ * -frw
+ * ....
+ *
+ * @author Sergey Kuksenko (sergey.kuksenko@oracle.com)
+ */
+public class GeneratedWarmupModeTest3 {
+
+    private static Queue<String> testSequence = new ConcurrentLinkedQueue<String>();
+
+    @MicroBenchmark
+    public Result testBig(Loop loop) throws InterruptedException {
+        if (loop.getDuration() == 1000) { // warmup
+            testSequence.add("W");
+        } else if (loop.getDuration() == 2000) {  // iteration
+            testSequence.add("I");
+        }
+        loop.start();
+        while (!loop.done()) {
+            // courtesy for parallel-running tests
+            TimeUnit.MILLISECONDS.sleep(100);
+        }
+
+        return new AverageTimePerOp("test", 1, 42, TimeUnit.NANOSECONDS);
+    }
+
+
+    @MicroBenchmark
+    public Result testSmall(Loop loop) throws InterruptedException {
+        if (loop.getDuration() == 1000) { // warmup
+            testSequence.add("w");
+        } else if (loop.getDuration() == 2000) {  // iteration
+            testSequence.add("i");
+        }
+        loop.start();
+        while (!loop.done()) {
+            // courtesy for parallel-running tests
+            TimeUnit.MILLISECONDS.sleep(100);
+        }
+
+        return new AverageTimePerOp("test", 1, 42, TimeUnit.NANOSECONDS);
+    }
+
+
+    private static String getSequence() {
+        StringBuilder sb = new StringBuilder();
+        for (String s : testSequence) {
+            sb.append(s);
+        }
+        return sb.toString();
+    }
+
+    @Test
+    public void invoke3() {
+        testSequence.clear();
+        Main.testMain(Fixtures.getTestMask(this.getClass()) + "  -foe -w 1 -r 2 -t 2 -i 1 -wi 2 -f false");
+        assertEquals("WWWWIIwwwwii", getSequence());
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/generated/GeneratedWarmupModeTest4.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,103 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.generated;
+
+
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.MicroBenchmark;
+import org.openjdk.jmh.it.Fixtures;
+import org.openjdk.jmh.logic.Loop;
+import org.openjdk.jmh.logic.results.AverageTimePerOp;
+import org.openjdk.jmh.logic.results.Result;
+
+import java.util.Queue;
+import java.util.concurrent.ConcurrentLinkedQueue;
+import java.util.concurrent.TimeUnit;
+
+import static junit.framework.Assert.assertEquals;
+
+/**
+ * Tests if harness honors warmup command line settings like:
+ * -wmb
+ * -wm
+ * -frw
+ * ....
+ *
+ * @author Sergey Kuksenko (sergey.kuksenko@oracle.com)
+ */
+public class GeneratedWarmupModeTest4 {
+
+    private static Queue<String> testSequence = new ConcurrentLinkedQueue<String>();
+
+    @MicroBenchmark
+    public Result testBig(Loop loop) throws InterruptedException {
+        if (loop.getDuration() == 1000) { // warmup
+            testSequence.add("W");
+        } else if (loop.getDuration() == 2000) {  // iteration
+            testSequence.add("I");
+        }
+        loop.start();
+        while (!loop.done()) {
+            // courtesy for parallel-running tests
+            TimeUnit.MILLISECONDS.sleep(100);
+        }
+
+        return new AverageTimePerOp("test", 1, 42, TimeUnit.NANOSECONDS);
+    }
+
+
+    @MicroBenchmark
+    public Result testSmall(Loop loop) throws InterruptedException {
+        if (loop.getDuration() == 1000) { // warmup
+            testSequence.add("w");
+        } else if (loop.getDuration() == 2000) {  // iteration
+            testSequence.add("i");
+        }
+        loop.start();
+        while (!loop.done()) {
+            // courtesy for parallel-running tests
+            TimeUnit.MILLISECONDS.sleep(100);
+        }
+
+        return new AverageTimePerOp("test", 1, 42, TimeUnit.NANOSECONDS);
+    }
+
+
+    private static String getSequence() {
+        StringBuilder sb = new StringBuilder();
+        for (String s : testSequence) {
+            sb.append(s);
+        }
+        return sb.toString();
+    }
+
+    @Test
+    public void invoke4() {
+        testSequence.clear();
+        Main.testMain(Fixtures.getTestMask(this.getClass()) + "  -foe -w 1 -r 2 -t 1 -i 1 -wi 2 -f false");
+        assertEquals("WWIwwi", getSequence());
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/generated/GeneratedWarmupModeTest5.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,104 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.generated;
+
+
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.MicroBenchmark;
+import org.openjdk.jmh.it.Fixtures;
+import org.openjdk.jmh.logic.Loop;
+import org.openjdk.jmh.logic.results.AverageTimePerOp;
+import org.openjdk.jmh.logic.results.Result;
+
+import java.util.Queue;
+import java.util.concurrent.ConcurrentLinkedQueue;
+import java.util.concurrent.TimeUnit;
+
+import static junit.framework.Assert.assertEquals;
+
+/**
+ * Tests if harness honors warmup command line settings like:
+ * -wmb
+ * -wm
+ * -frw
+ * ....
+ *
+ * @author Sergey Kuksenko (sergey.kuksenko@oracle.com)
+ */
+public class GeneratedWarmupModeTest5 {
+
+    private static Queue<String> testSequence = new ConcurrentLinkedQueue<String>();
+
+    @MicroBenchmark
+    public Result testBig(Loop loop) throws InterruptedException {
+        if (loop.getDuration() == 1000) { // warmup
+            testSequence.add("W");
+        } else if (loop.getDuration() == 2000) {  // iteration
+            testSequence.add("I");
+        }
+        loop.start();
+        while (!loop.done()) {
+            // courtesy for parallel-running tests
+            TimeUnit.MILLISECONDS.sleep(100);
+        }
+
+        return new AverageTimePerOp("test", 1, 42, TimeUnit.NANOSECONDS);
+    }
+
+
+    @MicroBenchmark
+    public Result testSmall(Loop loop) throws InterruptedException {
+        if (loop.getDuration() == 1000) { // warmup
+            testSequence.add("w");
+        } else if (loop.getDuration() == 2000) {  // iteration
+            testSequence.add("i");
+        }
+        loop.start();
+        while (!loop.done()) {
+            // courtesy for parallel-running tests
+            TimeUnit.MILLISECONDS.sleep(100);
+        }
+
+        return new AverageTimePerOp("test", 1, 42, TimeUnit.NANOSECONDS);
+    }
+
+
+    private static String getSequence() {
+        StringBuilder sb = new StringBuilder();
+        for (String s : testSequence) {
+            sb.append(s);
+        }
+        return sb.toString();
+    }
+
+    @Test
+    public void invoke5() {
+        testSequence.clear();
+        Main.testMain(Fixtures.getTestMask(this.getClass()) + "  -foe -w 1 -r 2 -t 1 -i 1 -wi 2 -wm beforeeach -f false");
+        assertEquals("WWIwwi", getSequence());
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/generated/GeneratedWarmupModeTest6.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,103 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.generated;
+
+
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.MicroBenchmark;
+import org.openjdk.jmh.it.Fixtures;
+import org.openjdk.jmh.logic.Loop;
+import org.openjdk.jmh.logic.results.AverageTimePerOp;
+import org.openjdk.jmh.logic.results.Result;
+
+import java.util.Queue;
+import java.util.concurrent.ConcurrentLinkedQueue;
+import java.util.concurrent.TimeUnit;
+
+import static junit.framework.Assert.assertEquals;
+
+/**
+ * Tests if harness honors warmup command line settings like:
+ * -wmb
+ * -wm
+ * -frw
+ * ....
+ *
+ * @author Sergey Kuksenko (sergey.kuksenko@oracle.com)
+ */
+public class GeneratedWarmupModeTest6 {
+
+    private static Queue<String> testSequence = new ConcurrentLinkedQueue<String>();
+
+    @MicroBenchmark
+    public Result testBig(Loop loop) throws InterruptedException {
+        if (loop.getDuration() == 1000) { // warmup
+            testSequence.add("W");
+        } else if (loop.getDuration() == 2000) {  // iteration
+            testSequence.add("I");
+        }
+        loop.start();
+        while (!loop.done()) {
+            // courtesy for parallel-running tests
+            TimeUnit.MILLISECONDS.sleep(100);
+        }
+
+        return new AverageTimePerOp("test", 1, 42, TimeUnit.NANOSECONDS);
+    }
+
+
+    @MicroBenchmark
+    public Result testSmall(Loop loop) throws InterruptedException {
+        if (loop.getDuration() == 1000) { // warmup
+            testSequence.add("w");
+        } else if (loop.getDuration() == 2000) {  // iteration
+            testSequence.add("i");
+        }
+        loop.start();
+        while (!loop.done()) {
+            // courtesy for parallel-running tests
+            TimeUnit.MILLISECONDS.sleep(100);
+        }
+
+        return new AverageTimePerOp("test", 1, 42, TimeUnit.NANOSECONDS);
+    }
+
+
+    private static String getSequence() {
+        StringBuilder sb = new StringBuilder();
+        for (String s : testSequence) {
+            sb.append(s);
+        }
+        return sb.toString();
+    }
+
+    @Test
+    public void invoke6() {
+        testSequence.clear();
+        Main.testMain(Fixtures.getTestMask(this.getClass()) + "  -foe -w 1 -r 2 -t 1 -i 1 -wi 2 -wm beforeany -f false");
+        assertEquals("WWwwIi", getSequence());
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/generated/GeneratedWarmupModeTest7.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,104 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.generated;
+
+
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.MicroBenchmark;
+import org.openjdk.jmh.it.Fixtures;
+import org.openjdk.jmh.logic.Loop;
+import org.openjdk.jmh.logic.results.AverageTimePerOp;
+import org.openjdk.jmh.logic.results.Result;
+
+import java.util.Queue;
+import java.util.concurrent.ConcurrentLinkedQueue;
+import java.util.concurrent.TimeUnit;
+
+import static junit.framework.Assert.assertEquals;
+
+/**
+ * Tests if harness honors warmup command line settings like:
+ * -wmb
+ * -wm
+ * -frw
+ * ....
+ *
+ * @author Sergey Kuksenko (sergey.kuksenko@oracle.com)
+ */
+public class GeneratedWarmupModeTest7 {
+
+    private static Queue<String> testSequence = new ConcurrentLinkedQueue<String>();
+
+    @MicroBenchmark
+    public Result testBig(Loop loop) throws InterruptedException {
+        if (loop.getDuration() == 1000) { // warmup
+            testSequence.add("W");
+        } else if (loop.getDuration() == 2000) {  // iteration
+            testSequence.add("I");
+        }
+        loop.start();
+        while (!loop.done()) {
+            // courtesy for parallel-running tests
+            TimeUnit.MILLISECONDS.sleep(100);
+        }
+
+        return new AverageTimePerOp("test", 1, 42, TimeUnit.NANOSECONDS);
+    }
+
+
+    @MicroBenchmark
+    public Result testSmall(Loop loop) throws InterruptedException {
+        if (loop.getDuration() == 1000) { // warmup
+            testSequence.add("w");
+        } else if (loop.getDuration() == 2000) {  // iteration
+            testSequence.add("i");
+        }
+        loop.start();
+        while (!loop.done()) {
+            // courtesy for parallel-running tests
+            TimeUnit.MILLISECONDS.sleep(100);
+        }
+
+        return new AverageTimePerOp("test", 1, 42, TimeUnit.NANOSECONDS);
+    }
+
+
+    private static String getSequence() {
+        StringBuilder sb = new StringBuilder();
+        for (String s : testSequence) {
+            sb.append(s);
+        }
+        return sb.toString();
+    }
+
+    @Test
+    public void invoke7() {
+        testSequence.clear();
+        Main.testMain(Fixtures.getTestMask(this.getClass()) + ".testBig.* -foe -w 1 -r 2 -tc 1,2,3 -i 1 -wi 2 -f false");
+        assertEquals("WWIIIIII", getSequence());
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/generated/GeneratedWarmupModeTest8.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,104 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.generated;
+
+
+import org.junit.Test;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.MicroBenchmark;
+import org.openjdk.jmh.it.Fixtures;
+import org.openjdk.jmh.logic.Loop;
+import org.openjdk.jmh.logic.results.AverageTimePerOp;
+import org.openjdk.jmh.logic.results.Result;
+
+import java.util.Queue;
+import java.util.concurrent.ConcurrentLinkedQueue;
+import java.util.concurrent.TimeUnit;
+
+import static junit.framework.Assert.assertEquals;
+
+/**
+ * Tests if harness honors warmup command line settings like:
+ * -wmb
+ * -wm
+ * -frw
+ * ....
+ *
+ * @author Sergey Kuksenko (sergey.kuksenko@oracle.com)
+ */
+public class GeneratedWarmupModeTest8 {
+
+    private static Queue<String> testSequence = new ConcurrentLinkedQueue<String>();
+
+    @MicroBenchmark
+    public Result testBig(Loop loop) throws InterruptedException {
+        if (loop.getDuration() == 1000) { // warmup
+            testSequence.add("W");
+        } else if (loop.getDuration() == 2000) {  // iteration
+            testSequence.add("I");
+        }
+        loop.start();
+        while (!loop.done()) {
+            // courtesy for parallel-running tests
+            TimeUnit.MILLISECONDS.sleep(100);
+        }
+
+        return new AverageTimePerOp("test", 1, 42, TimeUnit.NANOSECONDS);
+    }
+
+
+    @MicroBenchmark
+    public Result testSmall(Loop loop) throws InterruptedException {
+        if (loop.getDuration() == 1000) { // warmup
+            testSequence.add("w");
+        } else if (loop.getDuration() == 2000) {  // iteration
+            testSequence.add("i");
+        }
+        loop.start();
+        while (!loop.done()) {
+            // courtesy for parallel-running tests
+            TimeUnit.MILLISECONDS.sleep(100);
+        }
+
+        return new AverageTimePerOp("test", 1, 42, TimeUnit.NANOSECONDS);
+    }
+
+
+    private static String getSequence() {
+        StringBuilder sb = new StringBuilder();
+        for (String s : testSequence) {
+            sb.append(s);
+        }
+        return sb.toString();
+    }
+
+    @Test
+    public void invoke8() {
+        testSequence.clear();
+        Main.testMain(Fixtures.getTestMask(this.getClass()) + ".testBig.* -foe -w 1 -r 2 -tc 1,2,3 -i 1 -wi 2 -frw -f false");
+        assertEquals("WWIWWWWIIWWWWWWIII", getSequence());
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jmh-core-it/src/test/java/org/openjdk/jmh/it/interorder/BenchmarkBenchOrderTest.java	Wed Mar 27 13:52:35 2013 -0700
@@ -0,0 +1,101 @@
+/**
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jmh.it.interorder;
+
+import junit.framework.Assert;
+import org.openjdk.jmh.Main;
+import org.openjdk.jmh.annotations.*;
+import org.openjdk.jmh.it.Fixtures;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Tests global setup -> run -> tearDown sequence.
+ *
+ * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
+ */
+@State(Scope.Benchmark)
+public class BenchmarkBenchOrderTest {
+
+    private volatile long tickSetInstance;
+    private volatile long tickSetIteration;
+    private volatile long tickSetInvocation;
+    private volatile long tickTearInstance;
+    private volatile long tickTearIteration;
+    private volatile long tickTearInvocation;
+    private volatile long tickRun;
+
+    @Setup(Level.Trial)
+    public void setupInstance() {
+        tickSetInstance = System.nanoTime();
+    }
+
+    @Setup(Level.Iteration)
+    public void setupIteration() {
+        tickSetIteration = System.nanoTime();
+    }
+
+    @Setup(Level.Invocation)
+    public void setupInvocation() {
+        tickSetInvocation = System.nanoTime();
+    }
+
+    @TearDown(Level.Invocation)
+    public void tearDownInvocation() {
+        tickTearInvocation = System.nanoTime();
+    }
+
+    @TearDown(Level.Iteration)
+    public void tearDownIteration() {
+        tickTearIteration = System.nanoTime();
+    }
+
+    @TearDown(Level.Trial)
+    public void tearDownInstance() {
+        tickTearInstance = System.nanoTime();
+
+        Assert.assertTrue("Setup/instance called before setup/iteration", tickSetInstance < tickSetIteration);
+        Assert.assertTrue("Setup/iteration called before setup/invocation", tickSetIteration < tickSetInvocation);
+        Assert.assertTrue("Setup/invocation called before run", tickSetInvocation < tickRun);
+        Assert.assertTrue("Run called before tear/invocation", tickRun < tickTearInvocation);
+        Assert.assertTrue("Tear/invocation called before tear/iteration", tickTearInvocation < tickTearIteration);
+        Assert.assertTrue("Tear/iteration called before tear/instance", tickTearIteration < tickTearInstance);
+    }
+
+    @GenerateMicroBenchmark(BenchmarkType.All)
+    @Warmup(iterations = 0)
+    @Measurement(iterations = 1, time = 100, timeUnit = TimeUnit.MILLISECONDS)
+    @Threads(1)
+    public void test() {
+        tickRun = System.nanoTime();
+        Fixtures.work();
+    }
+
+    @org.junit.Test
+    public void invoke() {
+        Main.testMain(Fixtures.getTestMask(this.getClass()) + " -foe -v -si false");
+    }