From 4eb04af01ecf0c8d4b87824e30814a197ca1dcec Mon Sep 17 00:00:00 2001 From: Vladimir Dolzhenko Date: Wed, 19 Feb 2020 12:35:59 +0100 Subject: [PATCH] Add checkStability to perf tests --- .../idea/perf/AbstractPerformanceProjectsTest.kt | 5 +++-- .../jetbrains/kotlin/idea/perf/PerfTestBuilder.kt | 8 +++++++- .../test/org/jetbrains/kotlin/idea/perf/Stats.kt | 14 +++++++++----- 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/AbstractPerformanceProjectsTest.kt b/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/AbstractPerformanceProjectsTest.kt index 34dfd5a674a..26e2130673f 100644 --- a/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/AbstractPerformanceProjectsTest.kt +++ b/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/AbstractPerformanceProjectsTest.kt @@ -152,8 +152,8 @@ abstract class AbstractPerformanceProjectsTest : UsefulTestCase() { assertTrue("path $path does not exist, check README.md", File(projectPath).exists()) - val warmUpIterations = if (fast) 0 else 1 - val iterations = if (fast) 1 else 3 + val warmUpIterations = if (fast) 0 else 5 + val iterations = if (fast) 1 else 5 val projectManagerEx = ProjectManagerEx.getInstanceEx() var lastProject: Project? = null @@ -164,6 +164,7 @@ abstract class AbstractPerformanceProjectsTest : UsefulTestCase() { stats(stats) warmUpIterations(warmUpIterations) iterations(iterations) + checkStability(!fast) test { val project = if (!simpleModule) { val project = loadProjectWithName(name = name, path = path) diff --git a/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/PerfTestBuilder.kt b/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/PerfTestBuilder.kt index b862db23e9d..6ac0ae64974 100644 --- a/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/PerfTestBuilder.kt +++ b/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/PerfTestBuilder.kt @@ -14,6 +14,7 @@ class PerfTestBuilder { private lateinit var test: (TestData) -> Unit private var tearDown: (TestData) -> Unit = { } private var profileEnabled: Boolean = false + private var checkStability: Boolean = true fun run() { stats.perfTest( @@ -23,7 +24,8 @@ class PerfTestBuilder { setUp = setUp, test = test, tearDown = tearDown, - profileEnabled = profileEnabled + profileEnabled = profileEnabled, + checkStability = checkStability ) } @@ -58,6 +60,10 @@ class PerfTestBuilder { fun profileEnabled(profileEnabled: Boolean) { this.profileEnabled = profileEnabled } + + fun checkStability(checkStability: Boolean) { + this.checkStability = checkStability + } } fun performanceTest(initializer: PerfTestBuilder.() -> Unit) { diff --git a/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/Stats.kt b/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/Stats.kt index 2429351ae7c..8701b4cdde3 100644 --- a/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/Stats.kt +++ b/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/Stats.kt @@ -20,8 +20,8 @@ typealias StatInfos = Map? class Stats( val name: String = "", - val header: Array = arrayOf("Name", "ValueMS", "StdDev"), - val acceptanceStabilityLevel: Int = 25 + private val header: Array = arrayOf("Name", "ValueMS", "StdDev"), + private val acceptanceStabilityLevel: Int = 25 ) : Closeable { private val perfTestRawDataMs = mutableListOf() @@ -124,7 +124,8 @@ class Stats( setUp: (TestData) -> Unit = { }, test: (TestData) -> Unit, tearDown: (TestData) -> Unit = { }, - profileEnabled: Boolean = false + profileEnabled: Boolean = false, + checkStability: Boolean = true ) { val warmPhaseData = PhaseData( @@ -161,10 +162,13 @@ class Stats( val stable = stabilityPercentage <= acceptanceStabilityLevel printTestStarted(stabilityName) printStatValue(stabilityName, stabilityPercentage) - if (stable) { + if (stable or !checkStability) { printTestFinished(stabilityName) } else { - printTestFailed(stabilityName, "stability above $stabilityPercentage %") + printTestFailed( + stabilityName, + "$testName stability is $stabilityPercentage %, above accepted level of $acceptanceStabilityLevel %" + ) } } } else {