summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorgios Andreadis <g.andreadis@student.tudelft.nl>2020-03-30 17:30:55 +0200
committerGeorgios Andreadis <g.andreadis@student.tudelft.nl>2020-03-30 17:30:55 +0200
commitd37900e09e225b1738920fa0d5478feb892294c1 (patch)
tree080aedee013ca42139274d06a10a77fc77151626
parentbbba1d507f27b19a74e5c87e0e9e7250fb796957 (diff)
parent58d4ae5c152aac53d66f91a7d322b807db48b943 (diff)
Merge branch 'feat/2.x-failure-flag' into '2.x'
Add support for enabling/disable failures See merge request opendc/opendc-simulator!48
-rw-r--r--opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/TestExperiment.kt18
1 files changed, 11 insertions, 7 deletions
diff --git a/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/TestExperiment.kt b/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/TestExperiment.kt
index ed971df5..e6fd5a3a 100644
--- a/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/TestExperiment.kt
+++ b/opendc/opendc-experiments-sc20/src/main/kotlin/com/atlarge/opendc/experiments/sc20/TestExperiment.kt
@@ -72,6 +72,7 @@ class ExperimentParameters(parser: ArgParser) {
parseVMs(FileReader(File(this)).readText())
}
.default { emptyList() }
+ val failures by parser.flagging("-x", "--failures", help = "enable (correlated) machine failures")
fun getSelectedVmList(): List<String> {
return if (selectedVms.isEmpty()) {
@@ -179,14 +180,17 @@ fun main(args: Array<String>) {
.launchIn(this)
}
- root.newDomain(name = "failures").launch {
- chan.receive()
- val injectors = mutableMapOf<String, FaultInjector>()
+ if (failures) {
+ println("ENABLE Failures")
+ root.newDomain(name = "failures").launch {
+ chan.receive()
+ val injectors = mutableMapOf<String, FaultInjector>()
- for (node in bareMetalProvisioner.nodes()) {
- val cluster = node.metadata[NODE_CLUSTER] as String
- val injector = injectors.getOrPut(cluster) { createFaultInjector(simulationContext.domain) }
- injector.enqueue(node.metadata["driver"] as FailureDomain)
+ for (node in bareMetalProvisioner.nodes()) {
+ val cluster = node.metadata[NODE_CLUSTER] as String
+ val injector = injectors.getOrPut(cluster) { createFaultInjector(simulationContext.domain) }
+ injector.enqueue(node.metadata["driver"] as FailureDomain)
+ }
}
}