43 lines
1.4 KiB
Kotlin
43 lines
1.4 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 {
|
|
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 {
|
|
println("Starting benchmark")
|
|
startTime = Instant.now()
|
|
while(elapsed < targetTime){
|
|
uploader.uploadData(currIter)
|
|
currIter+=1
|
|
currTimeStamp = Instant.now()
|
|
timestamps[currIter] = currTimeStamp
|
|
elapsed = Duration.between(startTime, currTimeStamp)
|
|
}
|
|
println("Benchmark ended")
|
|
processResults.mapToProcess = timestamps
|
|
processResults.process()
|
|
}
|
|
}
|
|
}
|
|
} |