diff options
| -rw-r--r-- | opendc-kernel-omega/src/main/kotlin/com/atlarge/opendc/omega/OmegaKernel.kt | 4 | ||||
| -rw-r--r-- | opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/topology/container/Datacenter.kt | 5 | ||||
| -rw-r--r-- | opendc-model-odc/jpa/src/main/kotlin/com/atlarge/opendc/model/odc/JpaBootstrap.kt | 7 | ||||
| -rw-r--r-- | opendc-model-odc/jpa/src/main/kotlin/com/atlarge/opendc/model/odc/platform/JpaExperiment.kt | 24 | ||||
| -rw-r--r-- | opendc-model-odc/setup/Dockerfile | 5 | ||||
| -rw-r--r-- | opendc-model-odc/setup/build.gradle | 2 | ||||
| -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 |
