This commit is contained in:
parent
f3d339a4a6
commit
9663660519
@ -5,6 +5,8 @@ import io.ktor.util.*
|
|||||||
import kotlinx.coroutines.*
|
import kotlinx.coroutines.*
|
||||||
import java.time.Duration
|
import java.time.Duration
|
||||||
import java.time.Instant
|
import java.time.Instant
|
||||||
|
import java.util.*
|
||||||
|
import kotlin.collections.LinkedHashMap
|
||||||
|
|
||||||
fun main(args: Array<String>): Unit = io.ktor.server.tomcat.EngineMain.main(args)
|
fun main(args: Array<String>): Unit = io.ktor.server.tomcat.EngineMain.main(args)
|
||||||
|
|
||||||
@ -14,28 +16,30 @@ fun main(args: Array<String>): Unit = io.ktor.server.tomcat.EngineMain.main(args
|
|||||||
fun Application.module(testing: Boolean = false) {
|
fun Application.module(testing: Boolean = false) {
|
||||||
runBlocking {
|
runBlocking {
|
||||||
var startTime: Instant
|
var startTime: Instant
|
||||||
var elapsed = Duration.ofSeconds(0)
|
var elapsed = Duration.ZERO
|
||||||
val targetTime = Duration.ofSeconds(System.getenv("WAITTIME").toLong())
|
val targetTime = Duration.ofSeconds(System.getenv("WAITTIME").toLong())
|
||||||
var currIter = 0
|
var currIter = 0
|
||||||
val timestamps = LinkedHashMap<Int, Instant>()
|
val timestamps = LinkedHashMap<Int, Instant>()
|
||||||
var currTimeStamp: Instant
|
val uploaders = LinkedList<Uploader>()
|
||||||
val uploader = Uploader()
|
|
||||||
val processResults = ProcessResults()
|
val processResults = ProcessResults()
|
||||||
environment.monitor.subscribe(ApplicationStarted) {
|
environment.monitor.subscribe(ApplicationStarted) {
|
||||||
println("Starting benchmark")
|
GlobalScope.launch {
|
||||||
startTime = Instant.now()
|
println("Starting benchmark")
|
||||||
while (elapsed < targetTime) {
|
startTime = Instant.now()
|
||||||
currIter += 1
|
while (elapsed < targetTime) {
|
||||||
GlobalScope.launch {
|
currIter += 1
|
||||||
uploader.uploadData(currIter)
|
uploaders.add(Uploader(currIter))
|
||||||
currTimeStamp = Instant.now()
|
|
||||||
timestamps[currIter] = currTimeStamp
|
|
||||||
elapsed = Duration.between(startTime, currTimeStamp)
|
|
||||||
}
|
}
|
||||||
|
for (uploader in uploaders) {
|
||||||
|
uploader.sendRequest()
|
||||||
|
}
|
||||||
|
for (uploader in uploaders){
|
||||||
|
timestamps[uploader.currIteration] = uploader.respInstant
|
||||||
|
}
|
||||||
|
println("Benchmark ended")
|
||||||
|
processResults.mapToProcess = timestamps
|
||||||
|
processResults.process()
|
||||||
}
|
}
|
||||||
println("Benchmark ended")
|
|
||||||
processResults.mapToProcess = timestamps
|
|
||||||
processResults.process()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -6,39 +6,45 @@ import io.ktor.client.*
|
|||||||
import io.ktor.client.engine.apache.*
|
import io.ktor.client.engine.apache.*
|
||||||
import io.ktor.client.request.*
|
import io.ktor.client.request.*
|
||||||
import io.ktor.client.request.forms.*
|
import io.ktor.client.request.forms.*
|
||||||
|
import io.ktor.client.statement.*
|
||||||
import io.ktor.http.*
|
import io.ktor.http.*
|
||||||
import io.ktor.http.content.*
|
import io.ktor.http.content.*
|
||||||
import io.ktor.util.*
|
import io.ktor.util.*
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
import java.time.Instant
|
||||||
|
|
||||||
class Uploader(){
|
class Uploader(currIteration: Int) {
|
||||||
private val gson = GsonBuilder().setPrettyPrinting().create()
|
private val gson = GsonBuilder().setPrettyPrinting().create()
|
||||||
private val inputSound = File("/app/wave.wav").readBytes()
|
private val inputSound = File("/app/wave.wav").readBytes()
|
||||||
val parts: List<PartData> = formData {
|
private lateinit var parts: List<PartData>
|
||||||
val headersBuilder = HeadersBuilder()
|
var respInstant : Instant = Instant.now()
|
||||||
headersBuilder[HttpHeaders.ContentType] = "audio/wave"
|
var currIteration : Int = 0
|
||||||
headersBuilder[HttpHeaders.ContentDisposition] = "filename=csirip.wav"
|
fun buildRequest() {
|
||||||
this.append(
|
parts = formData {
|
||||||
"file",
|
val headersBuilder = HeadersBuilder()
|
||||||
inputSound,
|
headersBuilder[HttpHeaders.ContentType] = "audio/wave"
|
||||||
headersBuilder.build()
|
headersBuilder[HttpHeaders.ContentDisposition] = "filename=csirip.wav"
|
||||||
)
|
this.append(
|
||||||
val inputSvcApi = InputSvcApi("2020-02-02T02:02:02", 1)
|
"file",
|
||||||
val jsonHeadersBuilder = HeadersBuilder()
|
inputSound,
|
||||||
jsonHeadersBuilder[HttpHeaders.ContentType] = "application/json"
|
headersBuilder.build()
|
||||||
this.append(
|
)
|
||||||
"description",
|
val inputSvcApi = InputSvcApi("2020-02-02T02:02:02", currIteration)
|
||||||
gson.toJson(inputSvcApi),
|
val jsonHeadersBuilder = HeadersBuilder()
|
||||||
jsonHeadersBuilder.build()
|
jsonHeadersBuilder[HttpHeaders.ContentType] = "application/json"
|
||||||
)
|
this.append(
|
||||||
}
|
"description",
|
||||||
@KtorExperimentalAPI
|
gson.toJson(inputSvcApi),
|
||||||
suspend fun uploadData(currIteration: Int) {
|
jsonHeadersBuilder.build()
|
||||||
HttpClient(Apache).use { client ->
|
)
|
||||||
|
|
||||||
client.submitFormWithBinaryData<Unit>(formData = parts) {
|
|
||||||
url(System.getenv("URL") ?: "https://birb.k8s.kmlabz.com/benchmark")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@KtorExperimentalAPI
|
||||||
|
suspend fun sendRequest() {
|
||||||
|
HttpClient(Apache).post<HttpResponse>(System.getenv("URL") ?: "https://birb.k8s.kmlabz.com/benchmark") {
|
||||||
|
body = parts
|
||||||
|
}
|
||||||
|
respInstant = Instant.now()
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user