Enhance progress logging in FIR total resolve tests

This commit is contained in:
Mikhail Glukhikh
2019-03-18 14:47:24 +03:00
parent a334ca6224
commit 741bdccca5
3 changed files with 17 additions and 17 deletions
@@ -68,7 +68,7 @@ class FirResolveTestTotalKotlin : AbstractFirResolveWithSessionTestCase() {
val builder = RawFirBuilder(session, stubMode = true)
val totalTransformer = FirTotalResolveTransformer()
val firFiles = ktFiles.map {
val firFiles = ktFiles.toList().progress("Loading FIR").map {
val firFile = builder.buildFirFile(it)
(session.service<FirProvider>() as FirProviderImpl).recordFile(firFile)
firFile
@@ -32,8 +32,9 @@ fun doFirResolveTestBench(firFiles: List<FirFile>, transformers: List<FirTransfo
try {
for (transformer in transformers) {
for (firFile in firFiles) {
for ((stage, transformer) in transformers.withIndex()) {
println("Starting stage #$stage. $transformer")
for (firFile in firFiles.progress(" ~ ")) {
val time = measureNanoTime {
try {
transformer.transformFile(firFile, null)
@@ -116,4 +117,15 @@ fun doFirResolveTestBench(firFiles: List<FirFile>, transformers: List<FirTransfo
println("${transformer.simpleName}, TIME: ${time * 1e-6} ms, TIME PER FILE: ${(time / counter) * 1e-6} ms, FILES: $counter")
}
}
}
}
fun <T> Collection<T>.progress(label: String, step: Double = 0.1): Sequence<T> {
val intStep = (this.size * step).toInt()
var progress = 0
return asSequence().onEach {
if (progress % intStep == 0) {
println("$label: ${progress * 100 / size}% ($progress/${this.size})")
}
progress++
}
}
@@ -24,6 +24,7 @@ import org.jetbrains.kotlin.fir.declarations.FirFile
import org.jetbrains.kotlin.fir.doFirResolveTestBench
import org.jetbrains.kotlin.fir.java.FirJavaModuleBasedSession
import org.jetbrains.kotlin.fir.java.FirProjectSessionProvider
import org.jetbrains.kotlin.fir.progress
import org.jetbrains.kotlin.fir.resolve.FirProvider
import org.jetbrains.kotlin.fir.resolve.impl.FirProviderImpl
import org.jetbrains.kotlin.fir.resolve.transformers.FirTotalResolveTransformer
@@ -33,7 +34,6 @@ import org.jetbrains.kotlin.idea.caches.project.*
import org.jetbrains.kotlin.idea.fir.IdeFirDependenciesSymbolProvider
import org.jetbrains.kotlin.psi.KtFile
import java.io.File
import kotlin.math.ceil
class FirTotalKotlinResolveInIdeTest : ModuleTestCase() {
private val projectRootFile = File(".")
@@ -57,18 +57,6 @@ class FirTotalKotlinResolveInIdeTest : ModuleTestCase() {
)
}
private fun <T> Collection<T>.progress(label: String, step: Double = 0.1): Sequence<T> {
val intStep = (this.size * step).toInt()
val percentStep = ceil(this.size * 0.01).toInt()
var progress = 0
return asSequence().onEach {
if (progress % intStep == 0) {
println("$label: ${progress / percentStep}% ($progress/${this.size})")
}
progress++
}
}
override fun setUp() {
super.setUp()
sessionProvider = FirProjectSessionProvider(project)