From 60f17c3adf8fb9c5f7b434db8b061f3c6927955b Mon Sep 17 00:00:00 2001 From: Vladimir Dolzhenko Date: Mon, 10 Feb 2020 10:59:55 +0100 Subject: [PATCH] Modularization of performance tests --- build.gradle.kts | 2 +- idea/build.gradle.kts | 59 +--------- idea/performanceTests/build.gradle.kts | 78 ++++++++++++++ .../perf/AbstractPerformanceAddImportTest.kt | 0 ...stractPerformanceCompletionHandlerTests.kt | 0 ...ormanceCompletionIncrementalResolveTest.kt | 0 .../AbstractPerformanceHighlightingTest.kt | 0 .../perf/AbstractPerformanceImportTest.kt | 0 ...anceJavaToKotlinCopyPasteConversionTest.kt | 0 ...manceLiteralKotlinToKotlinCopyPasteTest.kt | 0 ...eNewJavaToKotlinCopyPasteConversionTest.kt | 0 .../perf/AbstractPerformanceProjectsTest.kt | 102 ++++++++++-------- .../kotlin/idea/perf/PerfTestBuilder.kt | 0 .../PerformanceAddImportTestGenerated.java | 0 ...ceBasicCompletionHandlerTestGenerated.java | 0 ...anceCompletionCharFilterTestGenerated.java | 0 ...letionIncrementalResolveTestGenerated.java | 0 .../PerformanceHighlightingTestGenerated.java | 0 ...otlinCopyPasteConversionTestGenerated.java | 0 ...KeywordCompletionHandlerTestGenerated.java | 0 ...lKotlinToKotlinCopyPasteTestGenerated.java | 0 ...otlinCopyPasteConversionTestGenerated.java | 0 .../idea/perf/PerformanceProjectsTest.kt | 21 +++- ...ceSmartCompletionHandlerTestGenerated.java | 0 .../org/jetbrains/kotlin/idea/perf/Stats.kt | 0 .../idea/perf/WholeProjectFileProvider.kt | 0 .../idea/perf/WholeProjectInspectionTest.kt | 0 .../perf/WholeProjectJavaInspectionTest.kt | 0 .../perf/WholeProjectKotlinFileProvider.kt | 0 .../perf/WholeProjectKotlinInspectionTest.kt | 0 .../idea/perf/WholeProjectLightClassTest.kt | 0 .../idea/perf/WholeProjectPerformanceTest.kt | 0 .../perf/WholeProjectUltraLightClassTest.kt | 0 .../idea/perf/profilers/PhaseProfiler.kt | 0 .../idea/perf/profilers/ProfilerHandler.kt | 0 .../profilers/async/AsyncProfilerHandler.kt | 0 .../kotlin/idea/testFramework/Fixture.kt | 14 ++- .../idea/testFramework/gradleRoutines.kt | 0 .../idea/testFramework/gradleRoutines.kt.191 | 0 .../idea/testFramework/projectRoutines.kt | 0 .../idea/testFramework/projectRoutines.kt.191 | 0 .../idea/testFramework/projectRoutines.kt.192 | 0 settings.gradle | 1 + 43 files changed, 165 insertions(+), 112 deletions(-) create mode 100644 idea/performanceTests/build.gradle.kts rename idea/performanceTests/{ => test}/org/jetbrains/kotlin/idea/perf/AbstractPerformanceAddImportTest.kt (100%) rename idea/performanceTests/{ => test}/org/jetbrains/kotlin/idea/perf/AbstractPerformanceCompletionHandlerTests.kt (100%) rename idea/performanceTests/{ => test}/org/jetbrains/kotlin/idea/perf/AbstractPerformanceCompletionIncrementalResolveTest.kt (100%) rename idea/performanceTests/{ => test}/org/jetbrains/kotlin/idea/perf/AbstractPerformanceHighlightingTest.kt (100%) rename idea/performanceTests/{ => test}/org/jetbrains/kotlin/idea/perf/AbstractPerformanceImportTest.kt (100%) rename idea/performanceTests/{ => test}/org/jetbrains/kotlin/idea/perf/AbstractPerformanceJavaToKotlinCopyPasteConversionTest.kt (100%) rename idea/performanceTests/{ => test}/org/jetbrains/kotlin/idea/perf/AbstractPerformanceLiteralKotlinToKotlinCopyPasteTest.kt (100%) rename idea/performanceTests/{ => test}/org/jetbrains/kotlin/idea/perf/AbstractPerformanceNewJavaToKotlinCopyPasteConversionTest.kt (100%) rename idea/performanceTests/{ => test}/org/jetbrains/kotlin/idea/perf/AbstractPerformanceProjectsTest.kt (89%) rename idea/performanceTests/{ => test}/org/jetbrains/kotlin/idea/perf/PerfTestBuilder.kt (100%) rename idea/performanceTests/{ => test}/org/jetbrains/kotlin/idea/perf/PerformanceAddImportTestGenerated.java (100%) rename idea/performanceTests/{ => test}/org/jetbrains/kotlin/idea/perf/PerformanceBasicCompletionHandlerTestGenerated.java (100%) rename idea/performanceTests/{ => test}/org/jetbrains/kotlin/idea/perf/PerformanceCompletionCharFilterTestGenerated.java (100%) rename idea/performanceTests/{ => test}/org/jetbrains/kotlin/idea/perf/PerformanceCompletionIncrementalResolveTestGenerated.java (100%) rename idea/performanceTests/{ => test}/org/jetbrains/kotlin/idea/perf/PerformanceHighlightingTestGenerated.java (100%) rename idea/performanceTests/{ => test}/org/jetbrains/kotlin/idea/perf/PerformanceJavaToKotlinCopyPasteConversionTestGenerated.java (100%) rename idea/performanceTests/{ => test}/org/jetbrains/kotlin/idea/perf/PerformanceKeywordCompletionHandlerTestGenerated.java (100%) rename idea/performanceTests/{ => test}/org/jetbrains/kotlin/idea/perf/PerformanceLiteralKotlinToKotlinCopyPasteTestGenerated.java (100%) rename idea/performanceTests/{ => test}/org/jetbrains/kotlin/idea/perf/PerformanceNewJavaToKotlinCopyPasteConversionTestGenerated.java (100%) rename idea/performanceTests/{ => test}/org/jetbrains/kotlin/idea/perf/PerformanceProjectsTest.kt (94%) rename idea/performanceTests/{ => test}/org/jetbrains/kotlin/idea/perf/PerformanceSmartCompletionHandlerTestGenerated.java (100%) rename idea/performanceTests/{ => test}/org/jetbrains/kotlin/idea/perf/Stats.kt (100%) rename idea/performanceTests/{ => test}/org/jetbrains/kotlin/idea/perf/WholeProjectFileProvider.kt (100%) rename idea/performanceTests/{ => test}/org/jetbrains/kotlin/idea/perf/WholeProjectInspectionTest.kt (100%) rename idea/performanceTests/{ => test}/org/jetbrains/kotlin/idea/perf/WholeProjectJavaInspectionTest.kt (100%) rename idea/performanceTests/{ => test}/org/jetbrains/kotlin/idea/perf/WholeProjectKotlinFileProvider.kt (100%) rename idea/performanceTests/{ => test}/org/jetbrains/kotlin/idea/perf/WholeProjectKotlinInspectionTest.kt (100%) rename idea/performanceTests/{ => test}/org/jetbrains/kotlin/idea/perf/WholeProjectLightClassTest.kt (100%) rename idea/performanceTests/{ => test}/org/jetbrains/kotlin/idea/perf/WholeProjectPerformanceTest.kt (100%) rename idea/performanceTests/{ => test}/org/jetbrains/kotlin/idea/perf/WholeProjectUltraLightClassTest.kt (100%) rename idea/performanceTests/{ => test}/org/jetbrains/kotlin/idea/perf/profilers/PhaseProfiler.kt (100%) rename idea/performanceTests/{ => test}/org/jetbrains/kotlin/idea/perf/profilers/ProfilerHandler.kt (100%) rename idea/performanceTests/{ => test}/org/jetbrains/kotlin/idea/perf/profilers/async/AsyncProfilerHandler.kt (100%) rename idea/performanceTests/{ => test}/org/jetbrains/kotlin/idea/testFramework/Fixture.kt (96%) rename idea/performanceTests/{ => test}/org/jetbrains/kotlin/idea/testFramework/gradleRoutines.kt (100%) rename idea/performanceTests/{ => test}/org/jetbrains/kotlin/idea/testFramework/gradleRoutines.kt.191 (100%) rename idea/performanceTests/{ => test}/org/jetbrains/kotlin/idea/testFramework/projectRoutines.kt (100%) rename idea/performanceTests/{ => test}/org/jetbrains/kotlin/idea/testFramework/projectRoutines.kt.191 (100%) rename idea/performanceTests/{ => test}/org/jetbrains/kotlin/idea/testFramework/projectRoutines.kt.192 (100%) diff --git a/build.gradle.kts b/build.gradle.kts index 02ccfe6a4ea..c464b3d2c29 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -660,7 +660,7 @@ tasks { register("idea-plugin-performance-tests") { dependsOn("dist") dependsOn( - ":idea:performanceTest" + ":idea:performanceTests:performanceTest" ) } diff --git a/idea/build.gradle.kts b/idea/build.gradle.kts index 9ce1a8e0c63..22846191771 100644 --- a/idea/build.gradle.kts +++ b/idea/build.gradle.kts @@ -28,25 +28,6 @@ sourceSets { "idea-live-templates/tests" ) } - - "performanceTest" { - java.srcDirs("performanceTests") - } -} - -val performanceTestCompile by configurations -performanceTestCompile.apply { - extendsFrom(configurations["testCompile"]) -} - -val performanceTestCompileOnly by configurations -performanceTestCompileOnly.apply { - extendsFrom(configurations["testCompileOnly"]) -} - -val performanceTestRuntime by configurations -performanceTestRuntime.apply { - extendsFrom(configurations["testRuntime"]) } dependencies { @@ -189,13 +170,6 @@ dependencies { testRuntime(intellijPluginDep("google-cloud-tools-core-as")) testRuntime(intellijPluginDep("google-login-as")) } - - performanceTestCompile(sourceSets["test"].output) - performanceTestCompile(sourceSets["main"].output) - performanceTestCompile(project(":nj2k")) - performanceTestCompile(project(":idea:idea-gradle-tooling-api")) - performanceTestCompile(intellijPluginDep("gradle")) - performanceTestRuntime(sourceSets["performanceTest"].output) } tasks.named("processResources") { @@ -209,35 +183,6 @@ projectTest(parallel = true) { workingDir = rootDir } -projectTest(taskName = "performanceTest") { - dependsOn(":dist") - dependsOn(performanceTestRuntime) - - testClassesDirs = sourceSets["performanceTest"].output.classesDirs - classpath = performanceTestRuntime + files("${System.getenv("ASYNC_PROFILER_HOME")}/build/async-profiler.jar") - workingDir = rootDir - - jvmArgs?.removeAll { it.startsWith("-Xmx") } - - maxHeapSize = "3g" - jvmArgs("-Didea.debug.mode=true") - jvmArgs("-XX:SoftRefLRUPolicyMSPerMB=50") - jvmArgs( - "-XX:ReservedCodeCacheSize=240m", - "-XX:+UseCompressedOops", - "-XX:+UseConcMarkSweepGC" - ) - - doFirst { - systemProperty("idea.home.path", intellijRootDir().canonicalPath) - project.findProperty("cacheRedirectorEnabled")?.let { - systemProperty("kotlin.test.gradle.import.arguments", "-PcacheRedirectorEnabled=$it") - } - } -} - -testsJar { - from(sourceSets["performanceTest"].output) -} - configureFormInstrumentation() + +testsJar() \ No newline at end of file diff --git a/idea/performanceTests/build.gradle.kts b/idea/performanceTests/build.gradle.kts new file mode 100644 index 00000000000..dff5e0b3e62 --- /dev/null +++ b/idea/performanceTests/build.gradle.kts @@ -0,0 +1,78 @@ + +description = "Kotlin IDE Performance Tests" + +plugins { + kotlin("jvm") + id("jps-compatible") +} + +dependencies { + testRuntimeOnly(intellijDep()) + testRuntimeOnly(intellijRuntimeAnnotations()) + testRuntimeOnly(project(":kotlin-reflect")) + testRuntimeOnly(project(":plugins:android-extensions-ide")) + testRuntimeOnly(project(":plugins:kapt3-idea")) + testRuntimeOnly(project(":sam-with-receiver-ide-plugin")) + testRuntimeOnly(project(":noarg-ide-plugin")) + testRuntimeOnly(project(":allopen-ide-plugin")) + testRuntimeOnly(project(":kotlin-scripting-idea")) + testRuntimeOnly(project(":kotlinx-serialization-ide-plugin")) + testRuntimeOnly(project(":nj2k:nj2k-services")) + testRuntimeOnly(project(":kotlin-reflect")) + testRuntimeOnly(project(":idea:kotlin-gradle-tooling")) + testRuntimeOnly(project(":idea:idea-gradle-tooling-api")) + + testImplementation(intellijPluginDep("gradle")) + testImplementation(project(":compiler:backend")) + testImplementation(project(":idea:idea-jvm")) + testImplementation(project(":kotlin-test:kotlin-test-junit")) + testImplementation(projectTests(":compiler:tests-common")) + testImplementation(projectTests(":idea:idea-test-framework")) { isTransitive = false } + testImplementation(projectTests(":idea")) + testImplementation(commonDep("junit:junit")) + + Platform[192].orHigher { + testCompileOnly(intellijPluginDep("java")) + testRuntimeOnly(intellijPluginDep("java")) + } + + testCompileOnly(intellijDep()) + testCompileOnly(project(":nj2k")) + testCompileOnly(project(":idea:idea-gradle-tooling-api")) + testCompileOnly(intellijDep()) { includeJars("slf4j-api-1.7.25") } +} + +sourceSets { + "test" { projectDefault() } +} + +runtimeJar() + +sourcesJar() + +javadocJar() + +apply(from = "$rootDir/gradle/kotlinPluginPublication.gradle.kts") + +projectTest(taskName = "performanceTest") { + classpath += files("${System.getenv("ASYNC_PROFILER_HOME")}/build/async-profiler.jar") + workingDir = rootDir + + jvmArgs?.removeAll { it.startsWith("-Xmx") } + + maxHeapSize = "3g" + jvmArgs("-Didea.debug.mode=true") + jvmArgs("-XX:SoftRefLRUPolicyMSPerMB=50") + jvmArgs( + "-XX:ReservedCodeCacheSize=240m", + "-XX:+UseCompressedOops", + "-XX:+UseConcMarkSweepGC" + ) + + doFirst { + systemProperty("idea.home.path", intellijRootDir().canonicalPath) + project.findProperty("cacheRedirectorEnabled")?.let { + systemProperty("kotlin.test.gradle.import.arguments", "-PcacheRedirectorEnabled=$it") + } + } +} diff --git a/idea/performanceTests/org/jetbrains/kotlin/idea/perf/AbstractPerformanceAddImportTest.kt b/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/AbstractPerformanceAddImportTest.kt similarity index 100% rename from idea/performanceTests/org/jetbrains/kotlin/idea/perf/AbstractPerformanceAddImportTest.kt rename to idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/AbstractPerformanceAddImportTest.kt diff --git a/idea/performanceTests/org/jetbrains/kotlin/idea/perf/AbstractPerformanceCompletionHandlerTests.kt b/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/AbstractPerformanceCompletionHandlerTests.kt similarity index 100% rename from idea/performanceTests/org/jetbrains/kotlin/idea/perf/AbstractPerformanceCompletionHandlerTests.kt rename to idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/AbstractPerformanceCompletionHandlerTests.kt diff --git a/idea/performanceTests/org/jetbrains/kotlin/idea/perf/AbstractPerformanceCompletionIncrementalResolveTest.kt b/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/AbstractPerformanceCompletionIncrementalResolveTest.kt similarity index 100% rename from idea/performanceTests/org/jetbrains/kotlin/idea/perf/AbstractPerformanceCompletionIncrementalResolveTest.kt rename to idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/AbstractPerformanceCompletionIncrementalResolveTest.kt diff --git a/idea/performanceTests/org/jetbrains/kotlin/idea/perf/AbstractPerformanceHighlightingTest.kt b/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/AbstractPerformanceHighlightingTest.kt similarity index 100% rename from idea/performanceTests/org/jetbrains/kotlin/idea/perf/AbstractPerformanceHighlightingTest.kt rename to idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/AbstractPerformanceHighlightingTest.kt diff --git a/idea/performanceTests/org/jetbrains/kotlin/idea/perf/AbstractPerformanceImportTest.kt b/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/AbstractPerformanceImportTest.kt similarity index 100% rename from idea/performanceTests/org/jetbrains/kotlin/idea/perf/AbstractPerformanceImportTest.kt rename to idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/AbstractPerformanceImportTest.kt diff --git a/idea/performanceTests/org/jetbrains/kotlin/idea/perf/AbstractPerformanceJavaToKotlinCopyPasteConversionTest.kt b/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/AbstractPerformanceJavaToKotlinCopyPasteConversionTest.kt similarity index 100% rename from idea/performanceTests/org/jetbrains/kotlin/idea/perf/AbstractPerformanceJavaToKotlinCopyPasteConversionTest.kt rename to idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/AbstractPerformanceJavaToKotlinCopyPasteConversionTest.kt diff --git a/idea/performanceTests/org/jetbrains/kotlin/idea/perf/AbstractPerformanceLiteralKotlinToKotlinCopyPasteTest.kt b/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/AbstractPerformanceLiteralKotlinToKotlinCopyPasteTest.kt similarity index 100% rename from idea/performanceTests/org/jetbrains/kotlin/idea/perf/AbstractPerformanceLiteralKotlinToKotlinCopyPasteTest.kt rename to idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/AbstractPerformanceLiteralKotlinToKotlinCopyPasteTest.kt diff --git a/idea/performanceTests/org/jetbrains/kotlin/idea/perf/AbstractPerformanceNewJavaToKotlinCopyPasteConversionTest.kt b/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/AbstractPerformanceNewJavaToKotlinCopyPasteConversionTest.kt similarity index 100% rename from idea/performanceTests/org/jetbrains/kotlin/idea/perf/AbstractPerformanceNewJavaToKotlinCopyPasteConversionTest.kt rename to idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/AbstractPerformanceNewJavaToKotlinCopyPasteConversionTest.kt diff --git a/idea/performanceTests/org/jetbrains/kotlin/idea/perf/AbstractPerformanceProjectsTest.kt b/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/AbstractPerformanceProjectsTest.kt similarity index 89% rename from idea/performanceTests/org/jetbrains/kotlin/idea/perf/AbstractPerformanceProjectsTest.kt rename to idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/AbstractPerformanceProjectsTest.kt index 095afac1254..34dfd5a674a 100644 --- a/idea/performanceTests/org/jetbrains/kotlin/idea/perf/AbstractPerformanceProjectsTest.kt +++ b/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/AbstractPerformanceProjectsTest.kt @@ -55,10 +55,12 @@ import org.jetbrains.kotlin.idea.test.ConfigLibraryUtil import org.jetbrains.kotlin.idea.test.invalidateLibraryCache import org.jetbrains.kotlin.idea.testFramework.* import org.jetbrains.kotlin.idea.testFramework.Fixture.Companion.cleanupCaches +import org.jetbrains.kotlin.idea.testFramework.Fixture.Companion.close import org.jetbrains.kotlin.idea.testFramework.Fixture.Companion.isAKotlinScriptFile import org.jetbrains.kotlin.idea.testFramework.Fixture.Companion.openFileInEditor import org.jetbrains.kotlin.idea.testFramework.Fixture.Companion.openFixture import org.jetbrains.kotlin.idea.util.getProjectJdkTableSafe +import org.jetbrains.kotlin.psi.KtFile import java.io.File import java.nio.file.Paths @@ -229,8 +231,8 @@ abstract class AbstractPerformanceProjectsTest : UsefulTestCase() { // close all project but last - we're going to return and use it further if (counter < warmUpIterations + iterations - 1) { - closeProject(project) myApplication.setDataProvider(null) + closeProject(project) } counter++ } @@ -306,61 +308,64 @@ abstract class AbstractPerformanceProjectsTest : UsefulTestCase() { note: String = "" ) { assertTrue("lookupElements has to be not empty", lookupElements.isNotEmpty()) - performanceTest, Array> { - name("typeAndAutocomplete ${notePrefix(note)}$fileName") - stats(stats) - warmUpIterations(8) - iterations(15) - setUp { - val fixture = openFixture(project, fileName) - val editor = fixture.editor + openFixture(project, fileName).use { fixture -> + val editor = fixture.editor - val initialText = editor.document.text - updateScriptDependenciesIfNeeded(fileName, fixture, project) + val initialText = editor.document.text + updateScriptDependenciesIfNeeded(fileName, fixture, project) + val scriptConfigurationManager = ScriptConfigurationManager.getInstance(fixture.project) + val configuration = scriptConfigurationManager.getConfiguration(fixture.psiFile as KtFile) + //scriptConfigurationManager.reloadScriptDefinitions() + //scriptConfigurationManager.forceReloadConfiguration(fixture.vFile, loaderForOutOfProjectScripts) - val tasksIdx = editor.document.text.indexOf(marker) - assertTrue("marker '$marker' not found in $fileName", tasksIdx > 0) - if (typeAfterMarker) { - editor.caretModel.moveToOffset(tasksIdx + marker.length + 1) - } else { - editor.caretModel.moveToOffset(tasksIdx - 1) - } + performanceTest, Array> { + name("typeAndAutocomplete ${notePrefix(note)}$fileName") + stats(stats) + warmUpIterations(8) + iterations(15) + profileEnabled(true) + setUp { + val tasksIdx = editor.document.text.indexOf(marker) + assertTrue("marker '$marker' not found in $fileName", tasksIdx > 0) + if (typeAfterMarker) { + editor.caretModel.moveToOffset(tasksIdx + marker.length + 1) + } else { + editor.caretModel.moveToOffset(tasksIdx - 1) + } - for (surroundItem in surroundItems) { - EditorTestUtil.performTypingAction(editor, surroundItem) - } - - editor.caretModel.moveToOffset(editor.caretModel.offset - if (typeAfterMarker) 1 else 2) - - if (!typeAfterMarker) { for (surroundItem in surroundItems) { EditorTestUtil.performTypingAction(editor, surroundItem) } - editor.caretModel.moveToOffset(editor.caretModel.offset - 2) + + editor.caretModel.moveToOffset(editor.caretModel.offset - if (typeAfterMarker) 1 else 2) + + if (!typeAfterMarker) { + for (surroundItem in surroundItems) { + EditorTestUtil.performTypingAction(editor, surroundItem) + } + editor.caretModel.moveToOffset(editor.caretModel.offset - 2) + } + + fixture.type(insertString) + + it.setUpValue = Pair(initialText, fixture) } - - fixture.type(insertString) - - it.setUpValue = Pair(initialText, fixture) - } - test { - val fixture = it.setUpValue!!.second - it.value = fixture.complete() - } - tearDown { - val items = it.value?.map { e -> e.lookupString }?.toList() ?: emptyList() - try { - for (lookupElement in lookupElements) { - assertTrue("'$lookupElement' has to be present in items", items.contains(lookupElement)) + test { + val fixture = it.setUpValue!!.second + it.value = fixture.complete() + } + tearDown { + val items = it.value?.map { e -> e.lookupString }?.toList() ?: emptyList() + try { + for (lookupElement in lookupElements) { + assertTrue("'$lookupElement' has to be present in items $items", items.contains(lookupElement)) + } + } finally { + fixture.revertChanges(revertChangesAtTheEnd, initialText) + commitAllDocuments() } - } finally { - it.setUpValue?.let { pair -> - pair.second.revertChanges(revertChangesAtTheEnd, pair.first) - } - commitAllDocuments() } } - profileEnabled(true) } } @@ -624,7 +629,10 @@ abstract class AbstractPerformanceProjectsTest : UsefulTestCase() { it.value = it.setUpValue } tearDown { - it.setUpValue?.let { ef -> cleanupCaches(project, ef.psiFile.virtualFile) } + it.setUpValue?.let { ef -> + cleanupCaches(project) + close(project, ef.psiFile.virtualFile) + } it.value?.let { v -> assertNotNull(v) } } profileEnabled(true) diff --git a/idea/performanceTests/org/jetbrains/kotlin/idea/perf/PerfTestBuilder.kt b/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/PerfTestBuilder.kt similarity index 100% rename from idea/performanceTests/org/jetbrains/kotlin/idea/perf/PerfTestBuilder.kt rename to idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/PerfTestBuilder.kt diff --git a/idea/performanceTests/org/jetbrains/kotlin/idea/perf/PerformanceAddImportTestGenerated.java b/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/PerformanceAddImportTestGenerated.java similarity index 100% rename from idea/performanceTests/org/jetbrains/kotlin/idea/perf/PerformanceAddImportTestGenerated.java rename to idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/PerformanceAddImportTestGenerated.java diff --git a/idea/performanceTests/org/jetbrains/kotlin/idea/perf/PerformanceBasicCompletionHandlerTestGenerated.java b/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/PerformanceBasicCompletionHandlerTestGenerated.java similarity index 100% rename from idea/performanceTests/org/jetbrains/kotlin/idea/perf/PerformanceBasicCompletionHandlerTestGenerated.java rename to idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/PerformanceBasicCompletionHandlerTestGenerated.java diff --git a/idea/performanceTests/org/jetbrains/kotlin/idea/perf/PerformanceCompletionCharFilterTestGenerated.java b/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/PerformanceCompletionCharFilterTestGenerated.java similarity index 100% rename from idea/performanceTests/org/jetbrains/kotlin/idea/perf/PerformanceCompletionCharFilterTestGenerated.java rename to idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/PerformanceCompletionCharFilterTestGenerated.java diff --git a/idea/performanceTests/org/jetbrains/kotlin/idea/perf/PerformanceCompletionIncrementalResolveTestGenerated.java b/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/PerformanceCompletionIncrementalResolveTestGenerated.java similarity index 100% rename from idea/performanceTests/org/jetbrains/kotlin/idea/perf/PerformanceCompletionIncrementalResolveTestGenerated.java rename to idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/PerformanceCompletionIncrementalResolveTestGenerated.java diff --git a/idea/performanceTests/org/jetbrains/kotlin/idea/perf/PerformanceHighlightingTestGenerated.java b/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/PerformanceHighlightingTestGenerated.java similarity index 100% rename from idea/performanceTests/org/jetbrains/kotlin/idea/perf/PerformanceHighlightingTestGenerated.java rename to idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/PerformanceHighlightingTestGenerated.java diff --git a/idea/performanceTests/org/jetbrains/kotlin/idea/perf/PerformanceJavaToKotlinCopyPasteConversionTestGenerated.java b/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/PerformanceJavaToKotlinCopyPasteConversionTestGenerated.java similarity index 100% rename from idea/performanceTests/org/jetbrains/kotlin/idea/perf/PerformanceJavaToKotlinCopyPasteConversionTestGenerated.java rename to idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/PerformanceJavaToKotlinCopyPasteConversionTestGenerated.java diff --git a/idea/performanceTests/org/jetbrains/kotlin/idea/perf/PerformanceKeywordCompletionHandlerTestGenerated.java b/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/PerformanceKeywordCompletionHandlerTestGenerated.java similarity index 100% rename from idea/performanceTests/org/jetbrains/kotlin/idea/perf/PerformanceKeywordCompletionHandlerTestGenerated.java rename to idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/PerformanceKeywordCompletionHandlerTestGenerated.java diff --git a/idea/performanceTests/org/jetbrains/kotlin/idea/perf/PerformanceLiteralKotlinToKotlinCopyPasteTestGenerated.java b/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/PerformanceLiteralKotlinToKotlinCopyPasteTestGenerated.java similarity index 100% rename from idea/performanceTests/org/jetbrains/kotlin/idea/perf/PerformanceLiteralKotlinToKotlinCopyPasteTestGenerated.java rename to idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/PerformanceLiteralKotlinToKotlinCopyPasteTestGenerated.java diff --git a/idea/performanceTests/org/jetbrains/kotlin/idea/perf/PerformanceNewJavaToKotlinCopyPasteConversionTestGenerated.java b/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/PerformanceNewJavaToKotlinCopyPasteConversionTestGenerated.java similarity index 100% rename from idea/performanceTests/org/jetbrains/kotlin/idea/perf/PerformanceNewJavaToKotlinCopyPasteConversionTestGenerated.java rename to idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/PerformanceNewJavaToKotlinCopyPasteConversionTestGenerated.java diff --git a/idea/performanceTests/org/jetbrains/kotlin/idea/perf/PerformanceProjectsTest.kt b/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/PerformanceProjectsTest.kt similarity index 94% rename from idea/performanceTests/org/jetbrains/kotlin/idea/perf/PerformanceProjectsTest.kt rename to idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/PerformanceProjectsTest.kt index 908a5b1ffe9..1cecf63c55e 100644 --- a/idea/performanceTests/org/jetbrains/kotlin/idea/perf/PerformanceProjectsTest.kt +++ b/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/PerformanceProjectsTest.kt @@ -152,16 +152,29 @@ class PerformanceProjectsTest : AbstractPerformanceProjectsTest() { perfOpenKotlinProjectFast(stat) } +// runAndMeasure("type and autocomplete") { +// perfTypeAndAutocomplete( +// stat, +// "build.gradle.kts", +// "tasks {", +// "default", +// lookupElements = listOf("defaultJvmTarget"), +// note = "tasks-create" +// ) +// } + runAndMeasure("type and autocomplete") { perfTypeAndAutocomplete( stat, "build.gradle.kts", "tasks {", - "crea", - lookupElements = listOf("create"), + "reg", + lookupElements = listOf("register"), note = "tasks-create" ) } + + } } } @@ -319,7 +332,9 @@ class PerformanceProjectsTest : AbstractPerformanceProjectsTest() { extraTimingsNs.add(mapOf(TEST_KEY to (timer.get() - v.first))) } - cleanupCaches(project, fixture.vFile) + fixture.use { + cleanupCaches(project) + } } } } diff --git a/idea/performanceTests/org/jetbrains/kotlin/idea/perf/PerformanceSmartCompletionHandlerTestGenerated.java b/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/PerformanceSmartCompletionHandlerTestGenerated.java similarity index 100% rename from idea/performanceTests/org/jetbrains/kotlin/idea/perf/PerformanceSmartCompletionHandlerTestGenerated.java rename to idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/PerformanceSmartCompletionHandlerTestGenerated.java diff --git a/idea/performanceTests/org/jetbrains/kotlin/idea/perf/Stats.kt b/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/Stats.kt similarity index 100% rename from idea/performanceTests/org/jetbrains/kotlin/idea/perf/Stats.kt rename to idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/Stats.kt diff --git a/idea/performanceTests/org/jetbrains/kotlin/idea/perf/WholeProjectFileProvider.kt b/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/WholeProjectFileProvider.kt similarity index 100% rename from idea/performanceTests/org/jetbrains/kotlin/idea/perf/WholeProjectFileProvider.kt rename to idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/WholeProjectFileProvider.kt diff --git a/idea/performanceTests/org/jetbrains/kotlin/idea/perf/WholeProjectInspectionTest.kt b/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/WholeProjectInspectionTest.kt similarity index 100% rename from idea/performanceTests/org/jetbrains/kotlin/idea/perf/WholeProjectInspectionTest.kt rename to idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/WholeProjectInspectionTest.kt diff --git a/idea/performanceTests/org/jetbrains/kotlin/idea/perf/WholeProjectJavaInspectionTest.kt b/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/WholeProjectJavaInspectionTest.kt similarity index 100% rename from idea/performanceTests/org/jetbrains/kotlin/idea/perf/WholeProjectJavaInspectionTest.kt rename to idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/WholeProjectJavaInspectionTest.kt diff --git a/idea/performanceTests/org/jetbrains/kotlin/idea/perf/WholeProjectKotlinFileProvider.kt b/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/WholeProjectKotlinFileProvider.kt similarity index 100% rename from idea/performanceTests/org/jetbrains/kotlin/idea/perf/WholeProjectKotlinFileProvider.kt rename to idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/WholeProjectKotlinFileProvider.kt diff --git a/idea/performanceTests/org/jetbrains/kotlin/idea/perf/WholeProjectKotlinInspectionTest.kt b/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/WholeProjectKotlinInspectionTest.kt similarity index 100% rename from idea/performanceTests/org/jetbrains/kotlin/idea/perf/WholeProjectKotlinInspectionTest.kt rename to idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/WholeProjectKotlinInspectionTest.kt diff --git a/idea/performanceTests/org/jetbrains/kotlin/idea/perf/WholeProjectLightClassTest.kt b/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/WholeProjectLightClassTest.kt similarity index 100% rename from idea/performanceTests/org/jetbrains/kotlin/idea/perf/WholeProjectLightClassTest.kt rename to idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/WholeProjectLightClassTest.kt diff --git a/idea/performanceTests/org/jetbrains/kotlin/idea/perf/WholeProjectPerformanceTest.kt b/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/WholeProjectPerformanceTest.kt similarity index 100% rename from idea/performanceTests/org/jetbrains/kotlin/idea/perf/WholeProjectPerformanceTest.kt rename to idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/WholeProjectPerformanceTest.kt diff --git a/idea/performanceTests/org/jetbrains/kotlin/idea/perf/WholeProjectUltraLightClassTest.kt b/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/WholeProjectUltraLightClassTest.kt similarity index 100% rename from idea/performanceTests/org/jetbrains/kotlin/idea/perf/WholeProjectUltraLightClassTest.kt rename to idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/WholeProjectUltraLightClassTest.kt diff --git a/idea/performanceTests/org/jetbrains/kotlin/idea/perf/profilers/PhaseProfiler.kt b/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/profilers/PhaseProfiler.kt similarity index 100% rename from idea/performanceTests/org/jetbrains/kotlin/idea/perf/profilers/PhaseProfiler.kt rename to idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/profilers/PhaseProfiler.kt diff --git a/idea/performanceTests/org/jetbrains/kotlin/idea/perf/profilers/ProfilerHandler.kt b/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/profilers/ProfilerHandler.kt similarity index 100% rename from idea/performanceTests/org/jetbrains/kotlin/idea/perf/profilers/ProfilerHandler.kt rename to idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/profilers/ProfilerHandler.kt diff --git a/idea/performanceTests/org/jetbrains/kotlin/idea/perf/profilers/async/AsyncProfilerHandler.kt b/idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/profilers/async/AsyncProfilerHandler.kt similarity index 100% rename from idea/performanceTests/org/jetbrains/kotlin/idea/perf/profilers/async/AsyncProfilerHandler.kt rename to idea/performanceTests/test/org/jetbrains/kotlin/idea/perf/profilers/async/AsyncProfilerHandler.kt diff --git a/idea/performanceTests/org/jetbrains/kotlin/idea/testFramework/Fixture.kt b/idea/performanceTests/test/org/jetbrains/kotlin/idea/testFramework/Fixture.kt similarity index 96% rename from idea/performanceTests/org/jetbrains/kotlin/idea/testFramework/Fixture.kt rename to idea/performanceTests/test/org/jetbrains/kotlin/idea/testFramework/Fixture.kt index 5c575b7e994..d044d30db11 100644 --- a/idea/performanceTests/org/jetbrains/kotlin/idea/testFramework/Fixture.kt +++ b/idea/performanceTests/test/org/jetbrains/kotlin/idea/testFramework/Fixture.kt @@ -46,9 +46,10 @@ import org.jetbrains.kotlin.idea.core.script.ScriptDefinitionsManager import org.jetbrains.kotlin.idea.core.script.settings.KotlinScriptingSettings import org.jetbrains.kotlin.idea.core.util.toPsiFile import org.jetbrains.kotlin.parsing.KotlinParserDefinition +import java.io.Closeable -class Fixture(val project: Project, val editor: Editor, val psiFile: PsiFile, val vFile: VirtualFile = psiFile.virtualFile) { +class Fixture(val project: Project, val editor: Editor, val psiFile: PsiFile, val vFile: VirtualFile = psiFile.virtualFile) : Closeable { private var delegate = EditorTestFixture(project, editor, vFile) val document: Document @@ -76,7 +77,7 @@ class Fixture(val project: Project, val editor: Editor, val psiFile: PsiFile, va applyText(text) } } finally { - cleanupCaches(project, vFile) + cleanupCaches(project) } } @@ -103,16 +104,21 @@ class Fixture(val project: Project, val editor: Editor, val psiFile: PsiFile, va dispatchAllInvocationEvents() } + override fun close() = close(project, vFile) + companion object { // quite simple impl - good so far fun isAKotlinScriptFile(fileName: String) = fileName.endsWith(KotlinParserDefinition.STD_SCRIPT_EXT) - fun cleanupCaches(project: Project, vFile: VirtualFile) { + fun cleanupCaches(project: Project) { commitAllDocuments() - FileEditorManager.getInstance(project).closeFile(vFile) PsiManager.getInstance(project).dropPsiCaches() } + fun close(project: Project, file: VirtualFile) { + FileEditorManager.getInstance(project).closeFile(file) + } + fun enableAnnotatorsAndLoadDefinitions(project: Project) { ReferenceProvidersRegistry.getInstance() // pre-load tons of classes InjectedLanguageManager.getInstance(project) // zillion of Dom Sem classes diff --git a/idea/performanceTests/org/jetbrains/kotlin/idea/testFramework/gradleRoutines.kt b/idea/performanceTests/test/org/jetbrains/kotlin/idea/testFramework/gradleRoutines.kt similarity index 100% rename from idea/performanceTests/org/jetbrains/kotlin/idea/testFramework/gradleRoutines.kt rename to idea/performanceTests/test/org/jetbrains/kotlin/idea/testFramework/gradleRoutines.kt diff --git a/idea/performanceTests/org/jetbrains/kotlin/idea/testFramework/gradleRoutines.kt.191 b/idea/performanceTests/test/org/jetbrains/kotlin/idea/testFramework/gradleRoutines.kt.191 similarity index 100% rename from idea/performanceTests/org/jetbrains/kotlin/idea/testFramework/gradleRoutines.kt.191 rename to idea/performanceTests/test/org/jetbrains/kotlin/idea/testFramework/gradleRoutines.kt.191 diff --git a/idea/performanceTests/org/jetbrains/kotlin/idea/testFramework/projectRoutines.kt b/idea/performanceTests/test/org/jetbrains/kotlin/idea/testFramework/projectRoutines.kt similarity index 100% rename from idea/performanceTests/org/jetbrains/kotlin/idea/testFramework/projectRoutines.kt rename to idea/performanceTests/test/org/jetbrains/kotlin/idea/testFramework/projectRoutines.kt diff --git a/idea/performanceTests/org/jetbrains/kotlin/idea/testFramework/projectRoutines.kt.191 b/idea/performanceTests/test/org/jetbrains/kotlin/idea/testFramework/projectRoutines.kt.191 similarity index 100% rename from idea/performanceTests/org/jetbrains/kotlin/idea/testFramework/projectRoutines.kt.191 rename to idea/performanceTests/test/org/jetbrains/kotlin/idea/testFramework/projectRoutines.kt.191 diff --git a/idea/performanceTests/org/jetbrains/kotlin/idea/testFramework/projectRoutines.kt.192 b/idea/performanceTests/test/org/jetbrains/kotlin/idea/testFramework/projectRoutines.kt.192 similarity index 100% rename from idea/performanceTests/org/jetbrains/kotlin/idea/testFramework/projectRoutines.kt.192 rename to idea/performanceTests/test/org/jetbrains/kotlin/idea/testFramework/projectRoutines.kt.192 diff --git a/settings.gradle b/settings.gradle index 98d3c265e4a..7a7603ee14e 100644 --- a/settings.gradle +++ b/settings.gradle @@ -154,6 +154,7 @@ include ":kotlin-build-common", ":idea:idea-test-framework", ":idea:idea-native", ":idea:idea-gradle-native", + ":idea:performanceTests", ":idea", ":idea-runner", ":idea:jvm-debugger:eval4j",