summaryrefslogtreecommitdiff
path: root/opendc-trace/opendc-trace-opendc/src/test
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2022-04-14 15:26:22 +0200
committerFabian Mastenbroek <mail.fabianm@gmail.com>2022-04-22 20:04:21 +0200
commit938f60832d6a500fee74b5f44838287c5432a74e (patch)
tree27ccf67f33030dfb8a91cee9731fc1dca229402f /opendc-trace/opendc-trace-opendc/src/test
parent0f1be7a820d5e3b279e68209a5bb6219d176b732 (diff)
feat(trace/opendc): Incorporate interference model in trace format
This change updates the OpenDC VM trace format to incorporate the VM interference model in the trace format itself. This makes sense since the model is tightly coupled to the actual trace that is being simulated. This approach has as benefit that we can directly load the interference model from the workload trace, without having to resolve the model seperately (as we did before).
Diffstat (limited to 'opendc-trace/opendc-trace-opendc/src/test')
-rw-r--r--opendc-trace/opendc-trace-opendc/src/test/kotlin/org/opendc/trace/opendc/OdcVmTraceFormatTest.kt31
-rw-r--r--opendc-trace/opendc-trace-opendc/src/test/resources/trace-v2.1/interference-model.json20
2 files changed, 50 insertions, 1 deletions
diff --git a/opendc-trace/opendc-trace-opendc/src/test/kotlin/org/opendc/trace/opendc/OdcVmTraceFormatTest.kt b/opendc-trace/opendc-trace-opendc/src/test/kotlin/org/opendc/trace/opendc/OdcVmTraceFormatTest.kt
index bfe0f881..2b678ff5 100644
--- a/opendc-trace/opendc-trace-opendc/src/test/kotlin/org/opendc/trace/opendc/OdcVmTraceFormatTest.kt
+++ b/opendc-trace/opendc-trace-opendc/src/test/kotlin/org/opendc/trace/opendc/OdcVmTraceFormatTest.kt
@@ -41,7 +41,7 @@ internal class OdcVmTraceFormatTest {
fun testTables() {
val path = Paths.get("src/test/resources/trace-v2.1")
- assertEquals(listOf(TABLE_RESOURCES, TABLE_RESOURCE_STATES), format.getTables(path))
+ assertEquals(listOf(TABLE_RESOURCES, TABLE_RESOURCE_STATES, TABLE_INTERFERENCE_GROUPS), format.getTables(path))
}
@Test
@@ -93,4 +93,33 @@ internal class OdcVmTraceFormatTest {
reader.close()
}
+
+ @Test
+ fun testInterferenceGroups() {
+ val path = Paths.get("src/test/resources/trace-v2.1")
+ val reader = format.newReader(path, TABLE_INTERFERENCE_GROUPS)
+
+ assertAll(
+ { assertTrue(reader.nextRow()) },
+ { assertEquals(setOf("1019", "1023", "1052"), reader.get(INTERFERENCE_GROUP_MEMBERS)) },
+ { assertEquals(0.0, reader.get(INTERFERENCE_GROUP_TARGET)) },
+ { assertEquals(0.8830158730158756, reader.get(INTERFERENCE_GROUP_SCORE)) },
+ { assertTrue(reader.nextRow()) },
+ { assertEquals(setOf("1023", "1052", "1073"), reader.get(INTERFERENCE_GROUP_MEMBERS)) },
+ { assertEquals(0.0, reader.get(INTERFERENCE_GROUP_TARGET)) },
+ { assertEquals(0.7133055555552751, reader.get(INTERFERENCE_GROUP_SCORE)) },
+ { assertFalse(reader.nextRow()) }
+ )
+
+ reader.close()
+ }
+
+ @Test
+ fun testInterferenceGroupsEmpty() {
+ val path = Paths.get("src/test/resources/trace-v2.0")
+ val reader = format.newReader(path, TABLE_INTERFERENCE_GROUPS)
+
+ assertFalse(reader.nextRow())
+ reader.close()
+ }
}
diff --git a/opendc-trace/opendc-trace-opendc/src/test/resources/trace-v2.1/interference-model.json b/opendc-trace/opendc-trace-opendc/src/test/resources/trace-v2.1/interference-model.json
new file mode 100644
index 00000000..6a0616d9
--- /dev/null
+++ b/opendc-trace/opendc-trace-opendc/src/test/resources/trace-v2.1/interference-model.json
@@ -0,0 +1,20 @@
+[
+ {
+ "vms": [
+ "1019",
+ "1023",
+ "1052"
+ ],
+ "minServerLoad": 0.0,
+ "performanceScore": 0.8830158730158756
+ },
+ {
+ "vms": [
+ "1023",
+ "1052",
+ "1073"
+ ],
+ "minServerLoad": 0.0,
+ "performanceScore": 0.7133055555552751
+ }
+]