Skip to content
Snippets Groups Projects
Commit dd43edd0 authored by Sören Henning's avatar Sören Henning
Browse files

Add test for Results class

parent c0877a5e
No related branches found
No related tags found
3 merge requests!159Re-implementation of Theodolite with Kotlin/Quarkus,!157Update Graal Image in CI pipeline,!83WIP: Re-implementation of Theodolite with Kotlin/Quarkus
......@@ -44,19 +44,21 @@ class Results {
* yet, a Resource with the constant value Int.MIN_VALUE is returned.
*/
fun getMinRequiredInstances(load: LoadDimension?): Resource? {
if (this.results.isEmpty()) return Resource(Int.MIN_VALUE, emptyList())
if (this.results.isEmpty()) {
return Resource(Int.MIN_VALUE, emptyList())
}
var requiredInstances: Resource? = Resource(Int.MAX_VALUE, emptyList())
var minRequiredInstances: Resource? = Resource(Int.MAX_VALUE, emptyList())
for (experiment in results) {
// Get all successful experiments for requested load
if (experiment.key.first == load && experiment.value) {
if (requiredInstances == null) {
requiredInstances = experiment.key.second
} else if (experiment.key.second.get() < requiredInstances.get()) {
requiredInstances = experiment.key.second
if (minRequiredInstances == null || experiment.key.second.get() < minRequiredInstances.get()) {
// Found new smallest resources
minRequiredInstances = experiment.key.second
}
}
}
return requiredInstances
return minRequiredInstances
}
/**
......
package theodolite.util
import io.quarkus.test.junit.QuarkusTest
import org.junit.jupiter.api.Assertions.*
import org.junit.jupiter.api.Disabled
import org.junit.jupiter.api.Test
@QuarkusTest
internal class ResultsTest {
@Test
fun testMinRequiredInstancesWhenSuccessful() {
val results = Results()
results.setResult(10000, 1, true)
results.setResult(20000, 2, true)
results.setResult(10000, 1, false)
results.setResult(20000, 2, true)
val minRequiredInstances = results.getMinRequiredInstances(LoadDimension(20000, emptyList()))
assertNotNull(minRequiredInstances)
assertEquals(2, minRequiredInstances!!.get())
}
@Test
@Disabled
fun testMinRequiredInstancesWhenNotSuccessful() {
// This test is currently not implemented this way, but might later be the desired behavior.
val results = Results()
results.setResult(10000, 1, true)
results.setResult(20000, 2, true)
results.setResult(10000, 1, false)
results.setResult(20000, 2, false)
val minRequiredInstances = results.getMinRequiredInstances(LoadDimension(20000, emptyList()))
assertNotNull(minRequiredInstances)
assertEquals(2, minRequiredInstances!!.get())
}
private fun Results.setResult(load: Int, resources: Int, successful: Boolean) {
this.setResult(
Pair(
LoadDimension(load, emptyList()),
Resource(resources, emptyList())
),
successful)
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment