summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--opendc-kernel-omega/src/main/kotlin/com/atlarge/opendc/omega/OmegaKernel.kt4
-rw-r--r--opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/topology/container/Datacenter.kt5
-rw-r--r--opendc-model-odc/jpa/src/main/kotlin/com/atlarge/opendc/model/odc/JpaBootstrap.kt7
-rw-r--r--opendc-model-odc/jpa/src/main/kotlin/com/atlarge/opendc/model/odc/platform/JpaExperiment.kt24
-rw-r--r--opendc-model-odc/setup/Dockerfile5
-rw-r--r--opendc-model-odc/setup/build.gradle2
-rw-r--r--opendc-model-odc/setup/src/main/kotlin/com/atlarge/opendc/model/odc/platform/JpaPlatformRunner.kt (renamed from opendc-model-odc/setup/src/main/kotlin/platform/JpaPlatformRunner.kt)2
7 files changed, 29 insertions, 20 deletions
diff --git a/opendc-kernel-omega/src/main/kotlin/com/atlarge/opendc/omega/OmegaKernel.kt b/opendc-kernel-omega/src/main/kotlin/com/atlarge/opendc/omega/OmegaKernel.kt
index 91150078..6ece73aa 100644
--- a/opendc-kernel-omega/src/main/kotlin/com/atlarge/opendc/omega/OmegaKernel.kt
+++ b/opendc-kernel-omega/src/main/kotlin/com/atlarge/opendc/omega/OmegaKernel.kt
@@ -122,7 +122,7 @@ internal class OmegaKernel<M>(bootstrap: Bootstrap<M>) : Kernel<M>, Bootstrap.Co
break
} else if (delivery < time) {
// Tick has already occurred
- logger.warn { "message processed out of order" }
+ logger.warn { "Message processed out of order" }
}
queue.poll()
@@ -270,7 +270,7 @@ internal class OmegaKernel<M>(bootstrap: Bootstrap<M>) : Kernel<M>, Bootstrap.Co
override suspend fun Entity<*, *>.send(msg: Any, delay: Duration) = send(msg, process, delay)
override suspend fun Entity<*, *>.send(msg: Any, sender: Entity<*, *>, delay: Duration) =
- schedule(prepare(msg, sender, delay = delay))
+ schedule(prepare(msg, this, sender, delay))
override suspend fun Entity<*, *>.interrupt() = send(Interrupt)
diff --git a/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/topology/container/Datacenter.kt b/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/topology/container/Datacenter.kt
index b9b804d3..7293d9f7 100644
--- a/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/topology/container/Datacenter.kt
+++ b/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/topology/container/Datacenter.kt
@@ -26,6 +26,7 @@ package com.atlarge.opendc.model.odc.topology.container
import com.atlarge.opendc.model.odc.platform.scheduler.Scheduler
import com.atlarge.opendc.model.odc.platform.workload.Task
+import com.atlarge.opendc.model.odc.platform.workload.TaskState
import com.atlarge.opendc.model.odc.topology.machine.Machine
import com.atlarge.opendc.model.topology.Topology
import com.atlarge.opendc.model.topology.destinations
@@ -88,6 +89,10 @@ interface Datacenter : Process<Unit, Topology> {
while (queue.isNotEmpty()) {
val msg = queue.poll()
if (msg is Task) {
+ if (msg.state != TaskState.Underway) {
+ logger.warn { "Received invalid task $msg"}
+ continue
+ }
msg.arrive(time)
scheduler.submit(msg)
}
diff --git a/opendc-model-odc/jpa/src/main/kotlin/com/atlarge/opendc/model/odc/JpaBootstrap.kt b/opendc-model-odc/jpa/src/main/kotlin/com/atlarge/opendc/model/odc/JpaBootstrap.kt
index 09d8f4b3..8c32c54d 100644
--- a/opendc-model-odc/jpa/src/main/kotlin/com/atlarge/opendc/model/odc/JpaBootstrap.kt
+++ b/opendc-model-odc/jpa/src/main/kotlin/com/atlarge/opendc/model/odc/JpaBootstrap.kt
@@ -5,6 +5,7 @@ import com.atlarge.opendc.model.odc.integration.jpa.schema.Task
import com.atlarge.opendc.model.odc.topology.JpaTopologyFactory
import com.atlarge.opendc.model.topology.bootstrap
import com.atlarge.opendc.simulator.Bootstrap
+import mu.KotlinLogging
/**
* A [Bootstrap] procedure for experiments retrieved from a JPA data store.
@@ -13,6 +14,11 @@ import com.atlarge.opendc.simulator.Bootstrap
*/
class JpaBootstrap(val experiment: Experiment) : Bootstrap<JpaModel> {
/**
+ * The logging instance.
+ */
+ private val logger = KotlinLogging.logger {}
+
+ /**
* Bootstrap a model `M` for a kernel in the given context.
*
* @param context The context to bootstrap to model in.
@@ -35,6 +41,7 @@ class JpaBootstrap(val experiment: Experiment) : Bootstrap<JpaModel> {
// Schedule all messages in the trace
tasks.forEach { task ->
if (task is Task) {
+ logger.info { "Scheduling $task" }
context.schedule(task, section.datacenter, delay = task.startTime)
}
}
diff --git a/opendc-model-odc/jpa/src/main/kotlin/com/atlarge/opendc/model/odc/platform/JpaExperiment.kt b/opendc-model-odc/jpa/src/main/kotlin/com/atlarge/opendc/model/odc/platform/JpaExperiment.kt
index 6c3ad5e8..74f96ccb 100644
--- a/opendc-model-odc/jpa/src/main/kotlin/com/atlarge/opendc/model/odc/platform/JpaExperiment.kt
+++ b/opendc-model-odc/jpa/src/main/kotlin/com/atlarge/opendc/model/odc/platform/JpaExperiment.kt
@@ -115,22 +115,20 @@ class JpaExperiment(private val manager: EntityManager,
manager.persist(wrapped)
}
- trace.jobs.asSequence()
- .flatMap { it.tasks.asSequence() }
- .forEach { task ->
- val state = InternalTaskState(0,
- task as com.atlarge.opendc.model.odc.integration.jpa.schema.Task,
- experiment,
- simulation.time,
- task.remaining.toInt(),
- 1
- )
- manager.persist(state)
- }
+ tasks.forEach { task ->
+ val state = InternalTaskState(0,
+ task as com.atlarge.opendc.model.odc.integration.jpa.schema.Task,
+ experiment,
+ simulation.time,
+ task.remaining.toInt(),
+ 1
+ )
+ manager.persist(state)
+ }
}
// Run next simulation cycle
- simulation.run(simulation.time + 1)
+ simulation.step()
}
// Set the experiment state
diff --git a/opendc-model-odc/setup/Dockerfile b/opendc-model-odc/setup/Dockerfile
index 70e6fe11..bfebc044 100644
--- a/opendc-model-odc/setup/Dockerfile
+++ b/opendc-model-odc/setup/Dockerfile
@@ -17,7 +17,7 @@ USER root
WORKDIR $APP_HOME
# Build the application
-RUN gradle --no-daemon :opendc-model-odc:setup:installDist
+RUN gradle --no-daemon assemble installDist
# Fix permissions
RUN chown -R gradle:gradle $APP_HOME
@@ -26,5 +26,4 @@ RUN chown -R gradle:gradle $APP_HOME
USER gradle
# Start the Gradle application on run
-CMD opendc-odc-model/setup/build/install/setup/bin/setup
-
+CMD opendc-model-odc/setup/build/install/setup/bin/setup
diff --git a/opendc-model-odc/setup/build.gradle b/opendc-model-odc/setup/build.gradle
index ddb5860b..1cca2a6e 100644
--- a/opendc-model-odc/setup/build.gradle
+++ b/opendc-model-odc/setup/build.gradle
@@ -44,7 +44,7 @@ apply plugin: 'application'
apply plugin: 'kotlin'
apply plugin: 'org.jetbrains.dokka'
-mainClassName = "nl.atlarge.opendc.model.odc.platform.JpaPlatformRunnerKt"
+mainClassName = "com.atlarge.opendc.model.odc.platform.JpaPlatformRunnerKt"
compileKotlin {
kotlinOptions {
diff --git a/opendc-model-odc/setup/src/main/kotlin/platform/JpaPlatformRunner.kt b/opendc-model-odc/setup/src/main/kotlin/com/atlarge/opendc/model/odc/platform/JpaPlatformRunner.kt
index 8fe49844..eb819a5b 100644
--- a/opendc-model-odc/setup/src/main/kotlin/platform/JpaPlatformRunner.kt
+++ b/opendc-model-odc/setup/src/main/kotlin/com/atlarge/opendc/model/odc/platform/JpaPlatformRunner.kt
@@ -22,7 +22,7 @@
* SOFTWARE.
*/
-package platform
+package com.atlarge.opendc.model.odc.platform
import com.atlarge.opendc.model.odc.platform.JpaExperimentManager
import com.atlarge.opendc.omega.OmegaKernelFactory