summaryrefslogtreecommitdiff
path: root/opendc-web/opendc-web-runner/src
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2022-10-10 11:15:40 +0200
committerFabian Mastenbroek <mail.fabianm@gmail.com>2022-10-10 15:29:24 +0200
commit3624e37c847f6b4d45ad1abd6437c6e7cdb28dcd (patch)
treed89ec81af2c5ef8474fe95c1ac681d63435f7b2c /opendc-web/opendc-web-runner/src
parent6c896a4a29147a863d797ac5bd5a210d4a9a78ef (diff)
fix(web/runner): Fix service metric reporting
This change resolves an issue in the web runner where the finished VMs would always be reported as zero.
Diffstat (limited to 'opendc-web/opendc-web-runner/src')
-rw-r--r--opendc-web/opendc-web-runner/src/main/kotlin/org/opendc/web/runner/internal/WebComputeMonitor.kt33
1 files changed, 12 insertions, 21 deletions
diff --git a/opendc-web/opendc-web-runner/src/main/kotlin/org/opendc/web/runner/internal/WebComputeMonitor.kt b/opendc-web/opendc-web-runner/src/main/kotlin/org/opendc/web/runner/internal/WebComputeMonitor.kt
index 4db70d3d..d6722115 100644
--- a/opendc-web/opendc-web-runner/src/main/kotlin/org/opendc/web/runner/internal/WebComputeMonitor.kt
+++ b/opendc-web/opendc-web-runner/src/main/kotlin/org/opendc/web/runner/internal/WebComputeMonitor.kt
@@ -24,8 +24,9 @@ package org.opendc.web.runner.internal
import org.opendc.experiments.compute.telemetry.ComputeMonitor
import org.opendc.experiments.compute.telemetry.table.HostTableReader
+import org.opendc.experiments.compute.telemetry.table.ServiceData
import org.opendc.experiments.compute.telemetry.table.ServiceTableReader
-import kotlin.math.max
+import org.opendc.experiments.compute.telemetry.table.toServiceData
import kotlin.math.roundToLong
/**
@@ -76,30 +77,20 @@ internal class WebComputeMonitor : ComputeMonitor {
val count: Long
)
- private var serviceMetrics: AggregateServiceMetrics = AggregateServiceMetrics()
+ private lateinit var serviceData: ServiceData
override fun record(reader: ServiceTableReader) {
- serviceMetrics = AggregateServiceMetrics(
- max(reader.attemptsSuccess, serviceMetrics.vmTotalCount),
- max(reader.serversPending, serviceMetrics.vmWaitingCount),
- max(reader.serversActive, serviceMetrics.vmActiveCount),
- max(0, serviceMetrics.vmInactiveCount),
- max(reader.attemptsFailure, serviceMetrics.vmFailedCount)
- )
+ serviceData = reader.toServiceData()
}
- private data class AggregateServiceMetrics(
- val vmTotalCount: Int = 0,
- val vmWaitingCount: Int = 0,
- val vmActiveCount: Int = 0,
- val vmInactiveCount: Int = 0,
- val vmFailedCount: Int = 0
- )
-
/**
* Collect the results of the simulation.
*/
fun collectResults(): Results {
+ val hostAggregateMetrics = hostAggregateMetrics
+ val hostMetrics = hostMetrics
+ val serviceData = serviceData
+
return Results(
hostAggregateMetrics.totalActiveTime,
hostAggregateMetrics.totalIdleTime,
@@ -112,10 +103,10 @@ internal class WebComputeMonitor : ComputeMonitor {
hostAggregateMetrics.totalPowerDraw,
hostAggregateMetrics.totalFailureSlices.roundToLong(),
hostAggregateMetrics.totalFailureVmSlices.roundToLong(),
- serviceMetrics.vmTotalCount,
- serviceMetrics.vmWaitingCount,
- serviceMetrics.vmInactiveCount,
- serviceMetrics.vmFailedCount
+ serviceData.serversTotal,
+ serviceData.serversPending,
+ serviceData.serversTotal - serviceData.serversPending - serviceData.serversActive,
+ serviceData.attemptsError + serviceData.attemptsFailure
)
}