diff options
| author | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2021-10-09 16:10:00 +0200 |
|---|---|---|
| committer | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2022-02-15 18:08:37 +0100 |
| commit | 02c215ad57e1e4d56c54d22be58e1845bdeebf25 (patch) | |
| tree | 7794b53ca3bb6fa197a118cee92114135be15def /opendc-compute/opendc-compute-simulator/src/test | |
| parent | 48c04fb74ee170f58f292b077c62b4da237f507e (diff) | |
refactor: Update OpenTelemetry to version 1.11
This change updates the OpenDC codebase to use OpenTelemetry v1.11,
which stabilizes the metrics API. This stabilization brings quite a few
breaking changes, so significant changes are necessary inside the OpenDC
codebase.
Diffstat (limited to 'opendc-compute/opendc-compute-simulator/src/test')
| -rw-r--r-- | opendc-compute/opendc-compute-simulator/src/test/kotlin/org/opendc/compute/simulator/SimHostTest.kt | 82 |
1 files changed, 42 insertions, 40 deletions
diff --git a/opendc-compute/opendc-compute-simulator/src/test/kotlin/org/opendc/compute/simulator/SimHostTest.kt b/opendc-compute/opendc-compute-simulator/src/test/kotlin/org/opendc/compute/simulator/SimHostTest.kt index 799a8cf0..dd13b60c 100644 --- a/opendc-compute/opendc-compute-simulator/src/test/kotlin/org/opendc/compute/simulator/SimHostTest.kt +++ b/opendc-compute/opendc-compute-simulator/src/test/kotlin/org/opendc/compute/simulator/SimHostTest.kt @@ -22,9 +22,7 @@ package org.opendc.compute.simulator -import io.opentelemetry.api.metrics.MeterProvider import io.opentelemetry.sdk.metrics.SdkMeterProvider -import io.opentelemetry.sdk.metrics.export.MetricProducer import io.opentelemetry.sdk.resources.Resource import kotlinx.coroutines.* import org.junit.jupiter.api.Assertions.assertEquals @@ -83,10 +81,26 @@ internal class SimHostTest { val hostResource = Resource.builder() .put(HOST_ID, hostId.toString()) .build() - val meterProvider: MeterProvider = SdkMeterProvider + + // Setup metric reader + val duration = 5 * 60L + val reader = CoroutineMetricReader( + this, + object : ComputeMetricExporter() { + override fun record(reader: HostTableReader) { + activeTime += reader.cpuActiveTime + idleTime += reader.cpuIdleTime + stealTime += reader.cpuStealTime + } + }, + exportInterval = Duration.ofSeconds(duration) + ) + + val meterProvider = SdkMeterProvider .builder() .setResource(hostResource) .setClock(clock.toOtelClock()) + .registerMetricReader(reader) .build() val engine = FlowEngine(coroutineContext, clock) @@ -100,7 +114,6 @@ internal class SimHostTest { meterProvider, SimFairShareHypervisorProvider() ) - val duration = 5 * 60L val vmImageA = MockImage( UUID.randomUUID(), "<unnamed>", @@ -136,19 +149,6 @@ internal class SimHostTest { val flavor = MockFlavor(2, 0) - // Setup metric reader - val reader = CoroutineMetricReader( - this, listOf(meterProvider as MetricProducer), - object : ComputeMetricExporter() { - override fun record(reader: HostTableReader) { - activeTime += reader.cpuActiveTime - idleTime += reader.cpuIdleTime - stealTime += reader.cpuStealTime - } - }, - exportInterval = Duration.ofSeconds(duration) - ) - coroutineScope { launch { virtDriver.spawn(MockServer(UUID.randomUUID(), "a", flavor, vmImageA)) } launch { virtDriver.spawn(MockServer(UUID.randomUUID(), "b", flavor, vmImageB)) } @@ -169,7 +169,7 @@ internal class SimHostTest { // Ensure last cycle is collected delay(1000L * duration) virtDriver.close() - reader.close() + meterProvider.close() assertAll( { assertEquals(658, activeTime, "Active time does not match") }, @@ -195,10 +195,32 @@ internal class SimHostTest { val hostResource = Resource.builder() .put(HOST_ID, hostId.toString()) .build() - val meterProvider: MeterProvider = SdkMeterProvider + + // Setup metric reader + val duration = 5 * 60L + val reader = CoroutineMetricReader( + this, + object : ComputeMetricExporter() { + override fun record(reader: HostTableReader) { + activeTime += reader.cpuActiveTime + idleTime += reader.cpuIdleTime + uptime += reader.uptime + downtime += reader.downtime + } + + override fun record(reader: ServerTableReader) { + guestUptime += reader.uptime + guestDowntime += reader.downtime + } + }, + exportInterval = Duration.ofSeconds(duration) + ) + + val meterProvider = SdkMeterProvider .builder() .setResource(hostResource) .setClock(clock.toOtelClock()) + .registerMetricReader(reader) .build() val engine = FlowEngine(coroutineContext, clock) @@ -212,7 +234,6 @@ internal class SimHostTest { meterProvider, SimFairShareHypervisorProvider() ) - val duration = 5 * 60L val image = MockImage( UUID.randomUUID(), "<unnamed>", @@ -232,25 +253,6 @@ internal class SimHostTest { val flavor = MockFlavor(2, 0) val server = MockServer(UUID.randomUUID(), "a", flavor, image) - // Setup metric reader - val reader = CoroutineMetricReader( - this, listOf(meterProvider as MetricProducer), - object : ComputeMetricExporter() { - override fun record(reader: HostTableReader) { - activeTime += reader.cpuActiveTime - idleTime += reader.cpuIdleTime - uptime += reader.uptime - downtime += reader.downtime - } - - override fun record(reader: ServerTableReader) { - guestUptime += reader.uptime - guestDowntime += reader.downtime - } - }, - exportInterval = Duration.ofSeconds(duration) - ) - coroutineScope { host.spawn(server) delay(5000L) @@ -273,7 +275,7 @@ internal class SimHostTest { // Ensure last cycle is collected delay(1000L * duration) - reader.close() + meterProvider.close() assertAll( { assertEquals(1175, idleTime, "Idle time does not match") }, |
