summaryrefslogtreecommitdiff
path: root/opendc-experiments/opendc-experiments-capelin
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2022-10-06 15:34:19 +0200
committerGitHub <noreply@github.com>2022-10-06 15:34:19 +0200
commit7ba3b953300c46b4e3afcde17cd3dd14b1af8406 (patch)
tree950ba678869ec868c26ab3b95b57e4cabadb23c7 /opendc-experiments/opendc-experiments-capelin
parentc2047d09b27b0c05f5c203509dde524e17d3b729 (diff)
parent47357afd16f928260db34d4dd3e686fb9ee7c5ff (diff)
merge: Update build and runtime dependencies (#107)
This pull request updates the build and runtime dependencies used by OpenDC to their latest version compatible with the project. ## Implementation Notes :hammer_and_pick: * Update simulator dependency versions * Remove unused distribution conventions * Update next version to 3.0 * Eliminate use of wildcard imports * Switch to Spotless for formatting
Diffstat (limited to 'opendc-experiments/opendc-experiments-capelin')
-rw-r--r--opendc-experiments/opendc-experiments-capelin/src/jmh/kotlin/org/opendc/experiments/capelin/CapelinBenchmarks.kt18
-rw-r--r--opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/CapelinCli.kt16
-rw-r--r--opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/CapelinRunner.kt15
-rw-r--r--opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/topology/TopologyFactories.kt4
-rw-r--r--opendc-experiments/opendc-experiments-capelin/src/test/kotlin/org/opendc/experiments/capelin/CapelinIntegrationTest.kt24
5 files changed, 58 insertions, 19 deletions
diff --git a/opendc-experiments/opendc-experiments-capelin/src/jmh/kotlin/org/opendc/experiments/capelin/CapelinBenchmarks.kt b/opendc-experiments/opendc-experiments-capelin/src/jmh/kotlin/org/opendc/experiments/capelin/CapelinBenchmarks.kt
index ef3deeb2..3e3d758d 100644
--- a/opendc-experiments/opendc-experiments-capelin/src/jmh/kotlin/org/opendc/experiments/capelin/CapelinBenchmarks.kt
+++ b/opendc-experiments/opendc-experiments-capelin/src/jmh/kotlin/org/opendc/experiments/capelin/CapelinBenchmarks.kt
@@ -29,13 +29,25 @@ import org.opendc.compute.service.scheduler.filters.RamFilter
import org.opendc.compute.service.scheduler.filters.VCpuFilter
import org.opendc.compute.service.scheduler.weights.CoreRamWeigher
import org.opendc.experiments.capelin.topology.clusterTopology
-import org.opendc.experiments.compute.*
+import org.opendc.experiments.compute.ComputeWorkloadLoader
+import org.opendc.experiments.compute.VirtualMachine
+import org.opendc.experiments.compute.replay
+import org.opendc.experiments.compute.setupComputeService
+import org.opendc.experiments.compute.setupHosts
import org.opendc.experiments.compute.topology.HostSpec
+import org.opendc.experiments.compute.trace
import org.opendc.experiments.provisioner.Provisioner
import org.opendc.simulator.kotlin.runSimulation
-import org.openjdk.jmh.annotations.*
+import org.openjdk.jmh.annotations.Benchmark
+import org.openjdk.jmh.annotations.Fork
+import org.openjdk.jmh.annotations.Measurement
+import org.openjdk.jmh.annotations.Param
+import org.openjdk.jmh.annotations.Scope
+import org.openjdk.jmh.annotations.Setup
+import org.openjdk.jmh.annotations.State
+import org.openjdk.jmh.annotations.Warmup
import java.io.File
-import java.util.*
+import java.util.Random
import java.util.concurrent.TimeUnit
/**
diff --git a/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/CapelinCli.kt b/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/CapelinCli.kt
index 875ae0dc..402d1f3b 100644
--- a/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/CapelinCli.kt
+++ b/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/CapelinCli.kt
@@ -21,11 +21,16 @@
*/
@file:JvmName("CapelinCli")
+
package org.opendc.experiments.capelin
import com.github.ajalt.clikt.core.CliktCommand
import com.github.ajalt.clikt.parameters.arguments.argument
-import com.github.ajalt.clikt.parameters.options.*
+import com.github.ajalt.clikt.parameters.options.associate
+import com.github.ajalt.clikt.parameters.options.default
+import com.github.ajalt.clikt.parameters.options.defaultLazy
+import com.github.ajalt.clikt.parameters.options.flag
+import com.github.ajalt.clikt.parameters.options.option
import com.github.ajalt.clikt.parameters.types.choice
import com.github.ajalt.clikt.parameters.types.file
import com.github.ajalt.clikt.parameters.types.int
@@ -33,7 +38,12 @@ import com.github.ajalt.clikt.parameters.types.long
import me.tongfei.progressbar.ProgressBarBuilder
import me.tongfei.progressbar.ProgressBarStyle
import org.opendc.experiments.capelin.model.Scenario
-import org.opendc.experiments.capelin.portfolio.*
+import org.opendc.experiments.capelin.portfolio.CompositeWorkloadPortfolio
+import org.opendc.experiments.capelin.portfolio.HorVerPortfolio
+import org.opendc.experiments.capelin.portfolio.MoreHpcPortfolio
+import org.opendc.experiments.capelin.portfolio.MoreVelocityPortfolio
+import org.opendc.experiments.capelin.portfolio.OperationalPhenomenaPortfolio
+import org.opendc.experiments.capelin.portfolio.TestPortfolio
import java.io.File
import java.util.concurrent.ForkJoinPool
import java.util.stream.LongStream
@@ -104,7 +114,7 @@ internal class CapelinCommand : CliktCommand(name = "capelin") {
"hor-ver" to { HorVerPortfolio() },
"more-hpc" to { MoreHpcPortfolio() },
"more-velocity" to { MoreVelocityPortfolio() },
- "op-phen" to { OperationalPhenomenaPortfolio() },
+ "op-phen" to { OperationalPhenomenaPortfolio() }
)
/**
diff --git a/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/CapelinRunner.kt b/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/CapelinRunner.kt
index 7461038d..2c3573dc 100644
--- a/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/CapelinRunner.kt
+++ b/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/CapelinRunner.kt
@@ -25,13 +25,19 @@ package org.opendc.experiments.capelin
import org.opendc.compute.service.ComputeService
import org.opendc.experiments.capelin.model.Scenario
import org.opendc.experiments.capelin.topology.clusterTopology
-import org.opendc.experiments.compute.*
+import org.opendc.experiments.compute.ComputeWorkloadLoader
+import org.opendc.experiments.compute.createComputeScheduler
import org.opendc.experiments.compute.export.parquet.ParquetComputeMonitor
+import org.opendc.experiments.compute.grid5000
+import org.opendc.experiments.compute.registerComputeMonitor
+import org.opendc.experiments.compute.replay
+import org.opendc.experiments.compute.setupComputeService
+import org.opendc.experiments.compute.setupHosts
import org.opendc.experiments.provisioner.Provisioner
import org.opendc.simulator.kotlin.runSimulation
import java.io.File
import java.time.Duration
-import java.util.*
+import java.util.Random
import kotlin.math.roundToLong
/**
@@ -84,10 +90,11 @@ public class CapelinRunner(
val vms = scenario.workload.source.resolve(workloadLoader, Random(seed))
val operationalPhenomena = scenario.operationalPhenomena
val failureModel =
- if (operationalPhenomena.failureFrequency > 0)
+ if (operationalPhenomena.failureFrequency > 0) {
grid5000(Duration.ofSeconds((operationalPhenomena.failureFrequency * 60).roundToLong()))
- else
+ } else {
null
+ }
service.replay(clock, vms, seed, failureModel = failureModel, interference = operationalPhenomena.hasInterference)
}
diff --git a/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/topology/TopologyFactories.kt b/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/topology/TopologyFactories.kt
index 054adfcd..08d4a7e0 100644
--- a/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/topology/TopologyFactories.kt
+++ b/opendc-experiments/opendc-experiments-capelin/src/main/kotlin/org/opendc/experiments/capelin/topology/TopologyFactories.kt
@@ -21,6 +21,7 @@
*/
@file:JvmName("TopologyFactories")
+
package org.opendc.experiments.capelin.topology
import org.opendc.experiments.compute.topology.HostSpec
@@ -33,7 +34,8 @@ import org.opendc.simulator.compute.power.PowerModel
import org.opendc.simulator.compute.power.SimplePowerDriver
import java.io.File
import java.io.InputStream
-import java.util.*
+import java.util.Random
+import java.util.UUID
import kotlin.math.roundToLong
/**
diff --git a/opendc-experiments/opendc-experiments-capelin/src/test/kotlin/org/opendc/experiments/capelin/CapelinIntegrationTest.kt b/opendc-experiments/opendc-experiments-capelin/src/test/kotlin/org/opendc/experiments/capelin/CapelinIntegrationTest.kt
index 238a5f87..70363b6c 100644
--- a/opendc-experiments/opendc-experiments-capelin/src/test/kotlin/org/opendc/experiments/capelin/CapelinIntegrationTest.kt
+++ b/opendc-experiments/opendc-experiments-capelin/src/test/kotlin/org/opendc/experiments/capelin/CapelinIntegrationTest.kt
@@ -33,16 +33,24 @@ import org.opendc.compute.service.scheduler.filters.RamFilter
import org.opendc.compute.service.scheduler.filters.VCpuFilter
import org.opendc.compute.service.scheduler.weights.CoreRamWeigher
import org.opendc.experiments.capelin.topology.clusterTopology
-import org.opendc.experiments.compute.*
+import org.opendc.experiments.compute.ComputeWorkloadLoader
+import org.opendc.experiments.compute.VirtualMachine
+import org.opendc.experiments.compute.grid5000
+import org.opendc.experiments.compute.registerComputeMonitor
+import org.opendc.experiments.compute.replay
+import org.opendc.experiments.compute.sampleByLoad
+import org.opendc.experiments.compute.setupComputeService
+import org.opendc.experiments.compute.setupHosts
import org.opendc.experiments.compute.telemetry.ComputeMonitor
import org.opendc.experiments.compute.telemetry.table.HostTableReader
import org.opendc.experiments.compute.telemetry.table.ServiceTableReader
import org.opendc.experiments.compute.topology.HostSpec
+import org.opendc.experiments.compute.trace
import org.opendc.experiments.provisioner.Provisioner
import org.opendc.simulator.kotlin.runSimulation
import java.io.File
import java.time.Duration
-import java.util.*
+import java.util.Random
/**
* An integration test suite for the Capelin experiments.
@@ -90,7 +98,7 @@ class CapelinIntegrationTest {
provisioner.runSteps(
setupComputeService(serviceDomain = "compute.opendc.org", { computeScheduler }),
registerComputeMonitor(serviceDomain = "compute.opendc.org", monitor),
- setupHosts(serviceDomain = "compute.opendc.org", topology),
+ setupHosts(serviceDomain = "compute.opendc.org", topology)
)
val service = provisioner.registry.resolve("compute.opendc.org", ComputeService::class.java)!!
@@ -116,7 +124,7 @@ class CapelinIntegrationTest {
{ assertEquals(66977508, monitor.activeTime) { "Incorrect active time" } },
{ assertEquals(3160381, monitor.stealTime) { "Incorrect steal time" } },
{ assertEquals(0, monitor.lostTime) { "Incorrect lost time" } },
- { assertEquals(5.840939264814157E9, monitor.energyUsage, 0.01) { "Incorrect power draw" } },
+ { assertEquals(5.840939264814157E9, monitor.energyUsage, 0.01) { "Incorrect power draw" } }
)
}
@@ -134,7 +142,7 @@ class CapelinIntegrationTest {
provisioner.runSteps(
setupComputeService(serviceDomain = "compute.opendc.org", { computeScheduler }),
registerComputeMonitor(serviceDomain = "compute.opendc.org", monitor),
- setupHosts(serviceDomain = "compute.opendc.org", topology),
+ setupHosts(serviceDomain = "compute.opendc.org", topology)
)
val service = provisioner.registry.resolve("compute.opendc.org", ComputeService::class.java)!!
@@ -173,7 +181,7 @@ class CapelinIntegrationTest {
provisioner.runSteps(
setupComputeService(serviceDomain = "compute.opendc.org", { computeScheduler }),
registerComputeMonitor(serviceDomain = "compute.opendc.org", monitor),
- setupHosts(serviceDomain = "compute.opendc.org", topology),
+ setupHosts(serviceDomain = "compute.opendc.org", topology)
)
val service = provisioner.registry.resolve("compute.opendc.org", ComputeService::class.java)!!
@@ -212,7 +220,7 @@ class CapelinIntegrationTest {
provisioner.runSteps(
setupComputeService(serviceDomain = "compute.opendc.org", { computeScheduler }),
registerComputeMonitor(serviceDomain = "compute.opendc.org", monitor),
- setupHosts(serviceDomain = "compute.opendc.org", topology),
+ setupHosts(serviceDomain = "compute.opendc.org", topology)
)
val service = provisioner.registry.resolve("compute.opendc.org", ComputeService::class.java)!!
@@ -225,7 +233,7 @@ class CapelinIntegrationTest {
{ assertEquals(8539158, monitor.activeTime) { "Active time incorrect" } },
{ assertEquals(0, monitor.stealTime) { "Steal time incorrect" } },
{ assertEquals(0, monitor.lostTime) { "Lost time incorrect" } },
- { assertEquals(2328039558, monitor.uptime) { "Uptime incorrect" } },
+ { assertEquals(2328039558, monitor.uptime) { "Uptime incorrect" } }
)
}