[FIR] Add logging to artifact in ModularizedTest for old frontend
This commit is contained in:
+16
@@ -11,6 +11,8 @@ import org.jetbrains.kotlin.types.AbstractTypeChecker
|
|||||||
import org.w3c.dom.Node
|
import org.w3c.dom.Node
|
||||||
import org.w3c.dom.NodeList
|
import org.w3c.dom.NodeList
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
import java.text.SimpleDateFormat
|
||||||
|
import java.util.*
|
||||||
import javax.xml.parsers.DocumentBuilderFactory
|
import javax.xml.parsers.DocumentBuilderFactory
|
||||||
|
|
||||||
data class ModuleData(
|
data class ModuleData(
|
||||||
@@ -37,9 +39,23 @@ private fun NodeList.toList(): List<Node> {
|
|||||||
private val Node.childNodesList get() = childNodes.toList()
|
private val Node.childNodesList get() = childNodes.toList()
|
||||||
|
|
||||||
abstract class AbstractModularizedTest : KtUsefulTestCase() {
|
abstract class AbstractModularizedTest : KtUsefulTestCase() {
|
||||||
|
private val folderDateFormat = SimpleDateFormat("yyyy-MM-dd")
|
||||||
|
private lateinit var startDate: Date
|
||||||
|
|
||||||
|
protected fun reportDir() = File(FIR_LOGS_PATH, folderDateFormat.format(startDate))
|
||||||
|
.also {
|
||||||
|
it.mkdirs()
|
||||||
|
}
|
||||||
|
|
||||||
|
protected val reportDateStr by lazy {
|
||||||
|
val reportDateFormat = SimpleDateFormat("yyyy-MM-dd__HH-mm")
|
||||||
|
reportDateFormat.format(startDate)
|
||||||
|
}
|
||||||
|
|
||||||
override fun setUp() {
|
override fun setUp() {
|
||||||
super.setUp()
|
super.setUp()
|
||||||
AbstractTypeChecker.RUN_SLOW_ASSERTIONS = false
|
AbstractTypeChecker.RUN_SLOW_ASSERTIONS = false
|
||||||
|
startDate = Date()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun tearDown() {
|
override fun tearDown() {
|
||||||
|
|||||||
+1
-21
@@ -26,15 +26,13 @@ import org.jetbrains.kotlin.test.TestJdkKind
|
|||||||
import java.io.File
|
import java.io.File
|
||||||
import java.io.FileOutputStream
|
import java.io.FileOutputStream
|
||||||
import java.io.PrintStream
|
import java.io.PrintStream
|
||||||
import java.text.SimpleDateFormat
|
|
||||||
import java.util.*
|
|
||||||
|
|
||||||
|
|
||||||
private const val FAIL_FAST = true
|
private const val FAIL_FAST = true
|
||||||
|
|
||||||
private const val FIR_DUMP_PATH = "tmp/firDump"
|
private const val FIR_DUMP_PATH = "tmp/firDump"
|
||||||
private const val FIR_HTML_DUMP_PATH = "tmp/firDump-html"
|
private const val FIR_HTML_DUMP_PATH = "tmp/firDump-html"
|
||||||
private const val FIR_LOGS_PATH = "tmp/fir-logs"
|
const val FIR_LOGS_PATH = "tmp/fir-logs"
|
||||||
|
|
||||||
private val DUMP_FIR = System.getProperty("fir.bench.dump", "true") == "true"
|
private val DUMP_FIR = System.getProperty("fir.bench.dump", "true") == "true"
|
||||||
internal val PASSES = System.getProperty("fir.bench.passes")?.toInt() ?: 3
|
internal val PASSES = System.getProperty("fir.bench.passes")?.toInt() ?: 3
|
||||||
@@ -151,24 +149,6 @@ class FirResolveModularizedTotalKotlinTest : AbstractModularizedTest() {
|
|||||||
printErrors(bestStatistics)
|
printErrors(bestStatistics)
|
||||||
}
|
}
|
||||||
|
|
||||||
private val folderDateFormat = SimpleDateFormat("yyyy-MM-dd")
|
|
||||||
private lateinit var startDate: Date
|
|
||||||
|
|
||||||
override fun setUp() {
|
|
||||||
startDate = Date()
|
|
||||||
super.setUp()
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun reportDir() = File(FIR_LOGS_PATH, folderDateFormat.format(startDate))
|
|
||||||
.also {
|
|
||||||
it.mkdirs()
|
|
||||||
}
|
|
||||||
|
|
||||||
private val reportDateStr by lazy {
|
|
||||||
val reportDateFormat = SimpleDateFormat("yyyy-MM-dd__HH-mm")
|
|
||||||
reportDateFormat.format(startDate)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun saveReport(pass: Int, statistics: FirResolveBench.TotalStatistics) {
|
private fun saveReport(pass: Int, statistics: FirResolveBench.TotalStatistics) {
|
||||||
if (DUMP_FIR) dump.finish()
|
if (DUMP_FIR) dump.finish()
|
||||||
printStatistics(statistics, "PASS $pass")
|
printStatistics(statistics, "PASS $pass")
|
||||||
|
|||||||
+15
-3
@@ -20,15 +20,17 @@ import org.jetbrains.kotlin.fir.scopes.ProcessorAction
|
|||||||
import org.jetbrains.kotlin.test.ConfigurationKind
|
import org.jetbrains.kotlin.test.ConfigurationKind
|
||||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||||
import org.jetbrains.kotlin.test.TestJdkKind
|
import org.jetbrains.kotlin.test.TestJdkKind
|
||||||
|
import java.io.FileOutputStream
|
||||||
|
import java.io.PrintStream
|
||||||
import kotlin.system.measureNanoTime
|
import kotlin.system.measureNanoTime
|
||||||
|
|
||||||
|
|
||||||
class NonFirResolveModularizedTotalKotlinTest : AbstractModularizedTest() {
|
class NonFirResolveModularizedTotalKotlinTest : AbstractModularizedTest() {
|
||||||
|
|
||||||
|
|
||||||
private var totalTime = 0L
|
private var totalTime = 0L
|
||||||
private var files = 0
|
private var files = 0
|
||||||
|
|
||||||
|
private val times = mutableListOf<Long>()
|
||||||
|
|
||||||
private fun runAnalysis(moduleData: ModuleData, environment: KotlinCoreEnvironment) {
|
private fun runAnalysis(moduleData: ModuleData, environment: KotlinCoreEnvironment) {
|
||||||
val project = environment.project
|
val project = environment.project
|
||||||
|
|
||||||
@@ -39,7 +41,12 @@ class NonFirResolveModularizedTotalKotlinTest : AbstractModularizedTest() {
|
|||||||
files += environment.getSourceFiles().size
|
files += environment.getSourceFiles().size
|
||||||
totalTime += time
|
totalTime += time
|
||||||
println("Time is ${time * 1e-6} ms")
|
println("Time is ${time * 1e-6} ms")
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun dumpTime(message: String, time: Long) {
|
||||||
|
PrintStream(FileOutputStream(reportDir().resolve("report-$reportDateStr.log"), true)).use { stream ->
|
||||||
|
stream.println("$message: ${time * 1e-6} ms")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun processModule(moduleData: ModuleData): ProcessorAction {
|
override fun processModule(moduleData: ModuleData): ProcessorAction {
|
||||||
@@ -104,8 +111,13 @@ class NonFirResolveModularizedTotalKotlinTest : AbstractModularizedTest() {
|
|||||||
fun testTotalKotlin() {
|
fun testTotalKotlin() {
|
||||||
for (i in 0 until PASSES) {
|
for (i in 0 until PASSES) {
|
||||||
runTestOnce(i)
|
runTestOnce(i)
|
||||||
println("Total time is ${totalTime * 1e-6} ms")
|
times += totalTime
|
||||||
|
dumpTime("Pass $i:", totalTime)
|
||||||
totalTime = 0L
|
totalTime = 0L
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val bestTime = times.min()!!
|
||||||
|
val bestPass = times.indexOf(bestTime)
|
||||||
|
dumpTime("Best pass: $bestPass", bestTime)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user