summaryrefslogtreecommitdiff
path: root/opendc-compute/opendc-compute-simulator/src/test
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2021-10-09 16:10:00 +0200
committerFabian Mastenbroek <mail.fabianm@gmail.com>2022-02-15 18:08:37 +0100
commit02c215ad57e1e4d56c54d22be58e1845bdeebf25 (patch)
tree7794b53ca3bb6fa197a118cee92114135be15def /opendc-compute/opendc-compute-simulator/src/test
parent48c04fb74ee170f58f292b077c62b4da237f507e (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.kt82
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") },