[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.NodeList
|
||||
import java.io.File
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.*
|
||||
import javax.xml.parsers.DocumentBuilderFactory
|
||||
|
||||
data class ModuleData(
|
||||
@@ -37,9 +39,23 @@ private fun NodeList.toList(): List<Node> {
|
||||
private val Node.childNodesList get() = childNodes.toList()
|
||||
|
||||
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() {
|
||||
super.setUp()
|
||||
AbstractTypeChecker.RUN_SLOW_ASSERTIONS = false
|
||||
startDate = Date()
|
||||
}
|
||||
|
||||
override fun tearDown() {
|
||||
|
||||
+1
-21
@@ -26,15 +26,13 @@ import org.jetbrains.kotlin.test.TestJdkKind
|
||||
import java.io.File
|
||||
import java.io.FileOutputStream
|
||||
import java.io.PrintStream
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.*
|
||||
|
||||
|
||||
private const val FAIL_FAST = true
|
||||
|
||||
private const val FIR_DUMP_PATH = "tmp/firDump"
|
||||
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"
|
||||
internal val PASSES = System.getProperty("fir.bench.passes")?.toInt() ?: 3
|
||||
@@ -151,24 +149,6 @@ class FirResolveModularizedTotalKotlinTest : AbstractModularizedTest() {
|
||||
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) {
|
||||
if (DUMP_FIR) dump.finish()
|
||||
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.KotlinTestUtils
|
||||
import org.jetbrains.kotlin.test.TestJdkKind
|
||||
import java.io.FileOutputStream
|
||||
import java.io.PrintStream
|
||||
import kotlin.system.measureNanoTime
|
||||
|
||||
|
||||
class NonFirResolveModularizedTotalKotlinTest : AbstractModularizedTest() {
|
||||
|
||||
|
||||
private var totalTime = 0L
|
||||
private var files = 0
|
||||
|
||||
private val times = mutableListOf<Long>()
|
||||
|
||||
private fun runAnalysis(moduleData: ModuleData, environment: KotlinCoreEnvironment) {
|
||||
val project = environment.project
|
||||
|
||||
@@ -39,7 +41,12 @@ class NonFirResolveModularizedTotalKotlinTest : AbstractModularizedTest() {
|
||||
files += environment.getSourceFiles().size
|
||||
totalTime += time
|
||||
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 {
|
||||
@@ -104,8 +111,13 @@ class NonFirResolveModularizedTotalKotlinTest : AbstractModularizedTest() {
|
||||
fun testTotalKotlin() {
|
||||
for (i in 0 until PASSES) {
|
||||
runTestOnce(i)
|
||||
println("Total time is ${totalTime * 1e-6} ms")
|
||||
times += totalTime
|
||||
dumpTime("Pass $i:", totalTime)
|
||||
totalTime = 0L
|
||||
}
|
||||
|
||||
val bestTime = times.min()!!
|
||||
val bestPass = times.indexOf(bestTime)
|
||||
dumpTime("Best pass: $bestPass", bestTime)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user