birb-integrated-bench/src/Application.kt

46 lines
1.6 KiB
Kotlin

package com.kmlabz.k8s
import com.google.gson.GsonBuilder
import io.ktor.application.*
import io.ktor.util.*
import kotlinx.coroutines.*
import java.io.File
import java.time.Duration
import java.time.Instant
fun main(args: Array<String>): Unit = io.ktor.server.tomcat.EngineMain.main(args)
@KtorExperimentalAPI
@Suppress("unused")
@kotlin.jvm.JvmOverloads
fun Application.module(testing: Boolean = false) {
runBlocking {
val cachedFile = File("/app/wave.wav").readBytes()
val gson = GsonBuilder().setPrettyPrinting().create()
var startTime : Instant
var elapsed = Duration.ofSeconds(0)
val targetTime = Duration.ofSeconds(System.getenv("WAITTIME").toLong())
var currIter = 1
val timestamps = LinkedHashMap<Int,Instant>()
var currTimeStamp : Instant
val uploader = Uploader()
val processResults = ProcessResults()
environment.monitor.subscribe(ApplicationStarted) {
val job = GlobalScope.launch {
delay(3000L)
println("Starting benchmark")
startTime = Instant.now()
while(elapsed < targetTime){
uploader.uploadData(currIter, gson, cachedFile)
currIter+=1
currTimeStamp = Instant.now()
timestamps[currIter] = currTimeStamp
elapsed = Duration.between(startTime, currTimeStamp)
}
println("Benchmark ended")
processResults.mapToProcess = timestamps
processResults.process()
}
}
}
}