summaryrefslogtreecommitdiff
path: root/opendc-model-odc/core/src/main
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2018-02-12 14:26:44 +0100
committerFabian Mastenbroek <mail.fabianm@gmail.com>2018-02-12 14:29:39 +0100
commite97d9bf3f2cccf19a21631e26d55d60c9f4d7c7a (patch)
tree518a0924578d12394f6117a416ac7787f729be63 /opendc-model-odc/core/src/main
parent67c8bc6cdd421262c4f59ce03506463a830af6e6 (diff)
refactor(#18): Align formatting with official Kotlin Style Guide
This change aligns the code formatting of the project with the official Kotlin Style Guide. They can be found at http://kotlinlang.org/docs/reference/coding-conventions.html.
Diffstat (limited to 'opendc-model-odc/core/src/main')
-rw-r--r--opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/OdcModel.kt2
-rw-r--r--opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/platform/scheduler/FifoScheduler.kt140
-rw-r--r--opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/platform/scheduler/Scheduler.kt62
-rw-r--r--opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/platform/scheduler/SrtfScheduler.kt126
-rw-r--r--opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/platform/workload/Job.kt34
-rw-r--r--opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/platform/workload/Task.kt96
-rw-r--r--opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/platform/workload/TaskState.kt64
-rw-r--r--opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/platform/workload/Trace.kt8
-rw-r--r--opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/platform/workload/User.kt16
-rw-r--r--opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/topology/container/Datacenter.kt106
-rw-r--r--opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/topology/container/Rack.kt2
-rw-r--r--opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/topology/container/Room.kt2
-rw-r--r--opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/topology/machine/Machine.kt146
-rw-r--r--opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/topology/machine/ProcessingUnit.kt26
-rw-r--r--opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/topology/network/NetworkUnit.kt2
-rw-r--r--opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/topology/power/PowerUnit.kt2
-rw-r--r--opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/topology/storage/StorageUnit.kt2
17 files changed, 418 insertions, 418 deletions
diff --git a/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/OdcModel.kt b/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/OdcModel.kt
index 01ffbd2c..298a14cf 100644
--- a/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/OdcModel.kt
+++ b/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/OdcModel.kt
@@ -7,4 +7,4 @@ import com.atlarge.opendc.model.topology.MutableTopology
*
* @author Fabian Mastenbroek (f.s.mastenbroek@student.tudelft.nl)
*/
-interface OdcModel: MutableTopology
+interface OdcModel : MutableTopology
diff --git a/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/platform/scheduler/FifoScheduler.kt b/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/platform/scheduler/FifoScheduler.kt
index d2cbcdfe..e743586c 100644
--- a/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/platform/scheduler/FifoScheduler.kt
+++ b/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/platform/scheduler/FifoScheduler.kt
@@ -24,9 +24,9 @@
package com.atlarge.opendc.model.odc.platform.scheduler
-import com.atlarge.opendc.simulator.Context
import com.atlarge.opendc.model.odc.platform.workload.Task
import com.atlarge.opendc.model.odc.topology.machine.Machine
+import com.atlarge.opendc.simulator.Context
import java.util.*
/**
@@ -35,84 +35,84 @@ import java.util.*
* @author Fabian Mastenbroek (f.s.mastenbroek@student.tudelft.nl)
*/
class FifoScheduler : Scheduler {
- /**
- * The name of this scheduler.
- */
- override val name: String = "FIFO"
+ /**
+ * The name of this scheduler.
+ */
+ override val name: String = "FIFO"
- /**
- * The set of machines the scheduler knows of.
- */
- val machines: MutableSet<Machine> = HashSet()
+ /**
+ * The set of machines the scheduler knows of.
+ */
+ private val machines: MutableSet<Machine> = HashSet()
- /**
- * The queue of [Task]s that need to be scheduled.
- */
- val queue: Queue<Task> = ArrayDeque()
+ /**
+ * The queue of [Task]s that need to be scheduled.
+ */
+ private val queue: Queue<Task> = ArrayDeque()
- /**
- * (Re)schedule the tasks submitted to the scheduler over the specified set of machines.
- */
- override suspend fun <S, M> Context<S, M>.schedule() {
- if (queue.isEmpty()) {
- return
- }
+ /**
+ * (Re)schedule the tasks submitted to the scheduler over the specified set of machines.
+ */
+ override suspend fun <S, M> Context<S, M>.schedule() {
+ if (queue.isEmpty()) {
+ return
+ }
- // The tasks that need to be rescheduled
- val rescheduled = ArrayDeque<Task>()
- val iterator = queue.iterator()
+ // The tasks that need to be rescheduled
+ val rescheduled = ArrayDeque<Task>()
+ val iterator = queue.iterator()
- machines
- .filter { it.state.status != Machine.Status.HALT }
- .forEach { machine ->
- while (iterator.hasNext()) {
- val task = iterator.next()
+ machines
+ .filter { it.state.status != Machine.Status.HALT }
+ .forEach { machine ->
+ while (iterator.hasNext()) {
+ val task = iterator.next()
- // TODO What to do with tasks that are not ready yet to be processed
- if (!task.ready) {
- iterator.remove()
- rescheduled.add(task)
- continue
- } else if (task.finished) {
- iterator.remove()
- continue
- }
+ // TODO What to do with tasks that are not ready yet to be processed
+ if (!task.ready) {
+ iterator.remove()
+ rescheduled.add(task)
+ continue
+ } else if (task.finished) {
+ iterator.remove()
+ continue
+ }
- machine.send(task)
- break
- }
- }
+ machine.send(task)
+ break
+ }
+ }
- // Reschedule all tasks that are not ready yet
- while (!rescheduled.isEmpty()) {
- queue.add(rescheduled.poll())
- }
- }
+ // Reschedule all tasks that are not ready yet
+ while (!rescheduled.isEmpty()) {
+ queue.add(rescheduled.poll())
+ }
+ }
- /**
- * Submit a [Task] to this scheduler.
- *
- * @param task The task to submit to the scheduler.
- */
- override fun submit(task: Task) {
- queue.add(task)
- }
+ /**
+ * Submit a [Task] to this scheduler.
+ *
+ * @param task The task to submit to the scheduler.
+ */
+ override fun submit(task: Task) {
+ queue.add(task)
+ }
- /**
- * Register a [Machine] to this scheduler.
- *
- * @param machine The machine to register.
- */
- override fun register(machine: Machine) {
- machines.add(machine)
- }
+ /**
+ * Register a [Machine] to this scheduler.
+ *
+ * @param machine The machine to register.
+ */
+ override fun register(machine: Machine) {
+ machines.add(machine)
+ }
- /**
- * Deregister a [Machine] from this scheduler.
- *
- * @param machine The machine to deregister.
- */
- override fun deregister(machine: Machine) {
- machines.remove(machine)
- }
+ /**
+ * Deregister a [Machine] from this scheduler.
+ *
+ * @param machine The machine to deregister.
+ */
+ override fun deregister(machine: Machine) {
+ machines.remove(machine)
+ }
}
diff --git a/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/platform/scheduler/Scheduler.kt b/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/platform/scheduler/Scheduler.kt
index ee965af9..79486ee6 100644
--- a/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/platform/scheduler/Scheduler.kt
+++ b/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/platform/scheduler/Scheduler.kt
@@ -24,10 +24,10 @@
package com.atlarge.opendc.model.odc.platform.scheduler
-import com.atlarge.opendc.simulator.Context
-import com.atlarge.opendc.simulator.Entity
import com.atlarge.opendc.model.odc.platform.workload.Task
import com.atlarge.opendc.model.odc.topology.machine.Machine
+import com.atlarge.opendc.simulator.Context
+import com.atlarge.opendc.simulator.Entity
/**
* A task scheduler that is coupled to an [Entity] in the topology of the cloud network.
@@ -35,37 +35,37 @@ import com.atlarge.opendc.model.odc.topology.machine.Machine
* @author Fabian Mastenbroek (f.s.mastenbroek@student.tudelft.nl)
*/
interface Scheduler {
- /**
- * The name of this scheduler.
- */
- val name: String
+ /**
+ * The name of this scheduler.
+ */
+ val name: String
- /**
- * (Re)schedule the tasks submitted to the scheduler over the specified set of machines.
- *
- * This method should be invoked at some interval to allow the scheduler to reschedule existing tasks and schedule
- * new tasks.
- */
- suspend fun <S, M> Context<S, M>.schedule()
+ /**
+ * (Re)schedule the tasks submitted to the scheduler over the specified set of machines.
+ *
+ * This method should be invoked at some interval to allow the scheduler to reschedule existing tasks and schedule
+ * new tasks.
+ */
+ suspend fun <S, M> Context<S, M>.schedule()
- /**
- * Submit a [Task] to this scheduler.
- *
- * @param task The task to submit to the scheduler.
- */
- fun submit(task: Task)
+ /**
+ * Submit a [Task] to this scheduler.
+ *
+ * @param task The task to submit to the scheduler.
+ */
+ fun submit(task: Task)
- /**
- * Register a [Machine] to this scheduler.
- *
- * @param machine The machine to register.
- */
- fun register(machine: Machine)
+ /**
+ * Register a [Machine] to this scheduler.
+ *
+ * @param machine The machine to register.
+ */
+ fun register(machine: Machine)
- /**
- * Deregister a [Machine] from this scheduler.
- *
- * @param machine The machine to deregister.
- */
- fun deregister(machine: Machine)
+ /**
+ * Deregister a [Machine] from this scheduler.
+ *
+ * @param machine The machine to deregister.
+ */
+ fun deregister(machine: Machine)
}
diff --git a/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/platform/scheduler/SrtfScheduler.kt b/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/platform/scheduler/SrtfScheduler.kt
index 0e497b56..d3f067df 100644
--- a/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/platform/scheduler/SrtfScheduler.kt
+++ b/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/platform/scheduler/SrtfScheduler.kt
@@ -24,9 +24,9 @@
package com.atlarge.opendc.model.odc.platform.scheduler
-import com.atlarge.opendc.simulator.Context
import com.atlarge.opendc.model.odc.platform.workload.Task
import com.atlarge.opendc.model.odc.topology.machine.Machine
+import com.atlarge.opendc.simulator.Context
import java.util.*
/**
@@ -35,76 +35,76 @@ import java.util.*
* @author Fabian Mastenbroek (f.s.mastenbroek@student.tudelft.nl)
*/
class SrtfScheduler : Scheduler {
- /**
- * The name of this scheduler.
- */
- override val name: String = "SRTF"
+ /**
+ * The name of this scheduler.
+ */
+ override val name: String = "SRTF"
- /**
- * The set of machines the scheduler knows of.
- */
- val machines: MutableSet<Machine> = HashSet()
+ /**
+ * The set of machines the scheduler knows of.
+ */
+ private val machines: MutableSet<Machine> = HashSet()
- /**
- * The set of [Task]s that need to be scheduled.
- */
- val tasks: MutableSet<Task> = HashSet()
+ /**
+ * The set of [Task]s that need to be scheduled.
+ */
+ private val tasks: MutableSet<Task> = HashSet()
- /**
- * (Re)schedule the tasks submitted to the scheduler over the specified set of machines.
- */
- override suspend fun <S, M> Context<S, M>.schedule() {
- if (tasks.isEmpty()) {
- return
- }
+ /**
+ * (Re)schedule the tasks submitted to the scheduler over the specified set of machines.
+ */
+ override suspend fun <S, M> Context<S, M>.schedule() {
+ if (tasks.isEmpty()) {
+ return
+ }
- val iterator = tasks.sortedBy { it.remaining }.iterator()
+ val iterator = tasks.sortedBy { it.remaining }.iterator()
- machines
- .filter { it.state.status != Machine.Status.HALT }
- .forEach { machine ->
- while (iterator.hasNext()) {
- val task = iterator.next()
+ machines
+ .filter { it.state.status != Machine.Status.HALT }
+ .forEach { machine ->
+ while (iterator.hasNext()) {
+ val task = iterator.next()
- // TODO What to do with tasks that are not ready yet to be processed
- if (!task.ready) {
- tasks.add(task)
- continue
- } else if (task.finished) {
- tasks.remove(task)
- continue
- }
+ // TODO What to do with tasks that are not ready yet to be processed
+ if (!task.ready) {
+ tasks.add(task)
+ continue
+ } else if (task.finished) {
+ tasks.remove(task)
+ continue
+ }
- machine.send(task)
- break
- }
- }
- }
+ machine.send(task)
+ break
+ }
+ }
+ }
- /**
- * Submit a [Task] to this scheduler.
- *
- * @param task The task to submit to the scheduler.
- */
- override fun submit(task: Task) {
- tasks.add(task)
- }
+ /**
+ * Submit a [Task] to this scheduler.
+ *
+ * @param task The task to submit to the scheduler.
+ */
+ override fun submit(task: Task) {
+ tasks.add(task)
+ }
- /**
- * Register a [Machine] to this scheduler.
- *
- * @param machine The machine to register.
- */
- override fun register(machine: Machine) {
- machines.add(machine)
- }
+ /**
+ * Register a [Machine] to this scheduler.
+ *
+ * @param machine The machine to register.
+ */
+ override fun register(machine: Machine) {
+ machines.add(machine)
+ }
- /**
- * Deregister a [Machine] from this scheduler.
- *
- * @param machine The machine to deregister.
- */
- override fun deregister(machine: Machine) {
- machines.remove(machine)
- }
+ /**
+ * Deregister a [Machine] from this scheduler.
+ *
+ * @param machine The machine to deregister.
+ */
+ override fun deregister(machine: Machine) {
+ machines.remove(machine)
+ }
}
diff --git a/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/platform/workload/Job.kt b/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/platform/workload/Job.kt
index c42bb667..3e6c6821 100644
--- a/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/platform/workload/Job.kt
+++ b/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/platform/workload/Job.kt
@@ -30,24 +30,24 @@ package com.atlarge.opendc.model.odc.platform.workload
* @author Fabian Mastenbroek (f.s.mastenbroek@student.tudelft.nl)
*/
interface Job {
- /**
- * A unique identifier of the job.
- */
- val id: Int
+ /**
+ * A unique identifier of the job.
+ */
+ val id: Int
- /**
- * The owner of this job.
- */
- val owner: User
+ /**
+ * The owner of this job.
+ */
+ val owner: User
- /**
- * The tasks this job consists of.
- */
- val tasks: Set<Task>
+ /**
+ * The tasks this job consists of.
+ */
+ val tasks: Set<Task>
- /**
- * A flag to indicate the job has finished.
- */
- val finished: Boolean
- get() = !tasks.any { !it.finished }
+ /**
+ * A flag to indicate the job has finished.
+ */
+ val finished: Boolean
+ get() = !tasks.any { !it.finished }
}
diff --git a/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/platform/workload/Task.kt b/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/platform/workload/Task.kt
index f7b9d60f..d68cceba 100644
--- a/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/platform/workload/Task.kt
+++ b/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/platform/workload/Task.kt
@@ -24,8 +24,8 @@
package com.atlarge.opendc.model.odc.platform.workload
-import com.atlarge.opendc.simulator.Instant
import com.atlarge.opendc.model.odc.topology.machine.Machine
+import com.atlarge.opendc.simulator.Instant
/**
* A task that runs as part of a [Job] on a [Machine].
@@ -33,60 +33,60 @@ import com.atlarge.opendc.model.odc.topology.machine.Machine
* @author Fabian Mastenbroek (f.s.mastenbroek@student.tudelft.nl)
*/
interface Task {
- /**
- * The unique identifier of the task.
- */
- val id: Int
+ /**
+ * The unique identifier of the task.
+ */
+ val id: Int
- /**
- * The amount of flops for this task.
- */
- val flops: Long
+ /**
+ * The amount of flops for this task.
+ */
+ val flops: Long
- /**
- * The dependencies of the task.
- */
- val dependencies: Set<Task>
+ /**
+ * The dependencies of the task.
+ */
+ val dependencies: Set<Task>
- /**
- * A flag to indicate the task is parallelizable.
- */
- val parallelizable: Boolean
+ /**
+ * A flag to indicate the task is parallelizable.
+ */
+ val parallelizable: Boolean
- /**
- * The remaining flops for this task.
- */
- val remaining: Long
+ /**
+ * The remaining flops for this task.
+ */
+ val remaining: Long
- /**
- * The state of the task.
- */
- val state: TaskState
+ /**
+ * The state of the task.
+ */
+ val state: TaskState
- /**
- * A flag to indicate whether the task is ready to be started.
- */
- val ready: Boolean
- get() = !dependencies.any { !it.finished }
+ /**
+ * A flag to indicate whether the task is ready to be started.
+ */
+ val ready: Boolean
+ get() = !dependencies.any { !it.finished }
- /**
- * A flag to indicate whether the task has finished.
- */
- val finished: Boolean
- get() = state is TaskState.Finished
+ /**
+ * A flag to indicate whether the task has finished.
+ */
+ val finished: Boolean
+ get() = state is TaskState.Finished
- /**
- * This method is invoked when a task has arrived at a datacenter.
- *
- * @param time The moment in time the task has arrived at the datacenter.
- */
- fun arrive(time: Instant)
+ /**
+ * This method is invoked when a task has arrived at a datacenter.
+ *
+ * @param time The moment in time the task has arrived at the datacenter.
+ */
+ fun arrive(time: Instant)
- /**
- * Consume the given amount of flops of this task.
- *
- * @param time The current moment in time of the consumption.
- * @param flops The total amount of flops to consume.
- */
- fun consume(time: Instant, flops: Long)
+ /**
+ * Consume the given amount of flops of this task.
+ *
+ * @param time The current moment in time of the consumption.
+ * @param flops The total amount of flops to consume.
+ */
+ fun consume(time: Instant, flops: Long)
}
diff --git a/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/platform/workload/TaskState.kt b/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/platform/workload/TaskState.kt
index 2fb3acd9..78963ca3 100644
--- a/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/platform/workload/TaskState.kt
+++ b/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/platform/workload/TaskState.kt
@@ -33,40 +33,40 @@ import com.atlarge.opendc.simulator.Instant
* @author Fabian Mastenbroek (f.s.mastenbroek@student.tudelft.nl)
*/
sealed class TaskState {
- /**
- * A state to indicate the task has not yet arrived at the [Datacenter].
- */
- object Underway : TaskState()
+ /**
+ * A state to indicate the task has not yet arrived at the [Datacenter].
+ */
+ object Underway : TaskState()
- /**
- * A state to indicate the task has arrived at the [Datacenter].
- *
- * @property at The moment in time the task has arrived.
- */
- data class Queued(val at: Instant) : TaskState()
+ /**
+ * A state to indicate the task has arrived at the [Datacenter].
+ *
+ * @property at The moment in time the task has arrived.
+ */
+ data class Queued(val at: Instant) : TaskState()
- /**
- * A state to indicate the task has started running on a machine.
- *
- * @property previous The previous state of the task.
- * @property at The moment in time the task started.
- */
- data class Running(val previous: Queued, val at: Instant) : TaskState()
+ /**
+ * A state to indicate the task has started running on a machine.
+ *
+ * @property previous The previous state of the task.
+ * @property at The moment in time the task started.
+ */
+ data class Running(val previous: Queued, val at: Instant) : TaskState()
- /**
- * A state to indicate the task has finished.
- *
- * @property previous The previous state of the task.
- * @property at The moment in time the task finished.
- */
- data class Finished(val previous: Running, val at: Instant) : TaskState()
+ /**
+ * A state to indicate the task has finished.
+ *
+ * @property previous The previous state of the task.
+ * @property at The moment in time the task finished.
+ */
+ data class Finished(val previous: Running, val at: Instant) : TaskState()
- /**
- * A state to indicate the task has failed.
- *
- * @property previous The previous state of the task.
- * @property at The moment in time the task failed.
- * @property reason The reason of the failure.
- */
- data class Failed(val previous: Running, val at: Instant, val reason: String) : TaskState()
+ /**
+ * A state to indicate the task has failed.
+ *
+ * @property previous The previous state of the task.
+ * @property at The moment in time the task failed.
+ * @property reason The reason of the failure.
+ */
+ data class Failed(val previous: Running, val at: Instant, val reason: String) : TaskState()
}
diff --git a/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/platform/workload/Trace.kt b/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/platform/workload/Trace.kt
index b2d65277..25bcad83 100644
--- a/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/platform/workload/Trace.kt
+++ b/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/platform/workload/Trace.kt
@@ -30,8 +30,8 @@ package com.atlarge.opendc.model.odc.platform.workload
* @author Fabian Mastenbroek (f.s.mastenbroek@student.tudelft.nl)
*/
interface Trace {
- /**
- * The [Job]s in the trace.
- */
- val jobs: Set<Job>
+ /**
+ * The [Job]s in the trace.
+ */
+ val jobs: Set<Job>
}
diff --git a/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/platform/workload/User.kt b/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/platform/workload/User.kt
index 6099db3e..da696d88 100644
--- a/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/platform/workload/User.kt
+++ b/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/platform/workload/User.kt
@@ -33,13 +33,13 @@ package com.atlarge.opendc.model.odc.platform.workload
* @author Fabian Mastenbroek (f.s.mastenbroek@student.tudelft.nl)
*/
interface User {
- /**
- * The unique identifier of the user.
- */
- val id: Int
+ /**
+ * The unique identifier of the user.
+ */
+ val id: Int
- /**
- * The name of this user.
- */
- val name: String
+ /**
+ * The name of this user.
+ */
+ val name: String
}
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 2b682410..b9b804d3 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
@@ -24,16 +24,16 @@
package com.atlarge.opendc.model.odc.topology.container
-import mu.KotlinLogging
-import com.atlarge.opendc.simulator.Context
-import com.atlarge.opendc.simulator.Duration
-import com.atlarge.opendc.simulator.Entity
-import com.atlarge.opendc.simulator.Process
import com.atlarge.opendc.model.odc.platform.scheduler.Scheduler
import com.atlarge.opendc.model.odc.platform.workload.Task
import com.atlarge.opendc.model.odc.topology.machine.Machine
import com.atlarge.opendc.model.topology.Topology
import com.atlarge.opendc.model.topology.destinations
+import com.atlarge.opendc.simulator.Context
+import com.atlarge.opendc.simulator.Duration
+import com.atlarge.opendc.simulator.Entity
+import com.atlarge.opendc.simulator.Process
+import mu.KotlinLogging
import java.util.*
/**
@@ -44,59 +44,59 @@ import java.util.*
* @author Fabian Mastenbroek (f.s.mastenbroek@student.tudelft.nl)
*/
interface Datacenter : Process<Unit, Topology> {
- /**
- * The task scheduler the datacenter uses.
- */
- val scheduler: Scheduler
+ /**
+ * The task scheduler the datacenter uses.
+ */
+ val scheduler: Scheduler
- /**
- * The interval at which task will be (re)scheduled.
- */
- val interval: Duration
+ /**
+ * The interval at which task will be (re)scheduled.
+ */
+ val interval: Duration
- /**
- * This method is invoked to start the simulation an [Entity] associated with this [Context].
- *
- * This method is assumed to be running during a simulation, but should hand back control to the simulator at
- * some point by suspending the process. This allows other processes to do work in the current tick of the
- * simulation.
- * Suspending the process can be achieved by calling suspending method in the context:
- * - [Context.hold] - Wait for `n` amount of ticks before resuming execution.
- * - [Context.receive] - Wait for a message to be received in the mailbox of the [Entity] before resuming
- * execution.
- *
- * If this method exits early, before the simulation has finished, the entity is assumed to be shutdown and its
- * simulation will not run any further.
- */
- suspend override fun Context<Unit, Topology>.run() = model.run {
- val logger = KotlinLogging.logger {}
+ /**
+ * This method is invoked to start the simulation an [Entity] associated with this [Context].
+ *
+ * This method is assumed to be running during a simulation, but should hand back control to the simulator at
+ * some point by suspending the process. This allows other processes to do work in the current tick of the
+ * simulation.
+ * Suspending the process can be achieved by calling suspending method in the context:
+ * - [Context.hold] - Wait for `n` amount of ticks before resuming execution.
+ * - [Context.receive] - Wait for a message to be received in the mailbox of the [Entity] before resuming
+ * execution.
+ *
+ * If this method exits early, before the simulation has finished, the entity is assumed to be shutdown and its
+ * simulation will not run any further.
+ */
+ override suspend fun Context<Unit, Topology>.run() = model.run {
+ val logger = KotlinLogging.logger {}
- // The queue of messages to be processed after a cycle
- val queue: Queue<Any> = ArrayDeque()
- // Find all machines in the datacenter
- val machines = outgoingEdges.destinations<Room>("room").asSequence()
- .flatMap { it.outgoingEdges.destinations<Rack>("rack").asSequence() }
- .flatMap { it.outgoingEdges.destinations<Machine>("machine").asSequence() }.toList()
+ // The queue of messages to be processed after a cycle
+ val queue: Queue<Any> = ArrayDeque()
+ // Find all machines in the datacenter
+ val machines = outgoingEdges.destinations<Room>("room").asSequence()
+ .flatMap { it.outgoingEdges.destinations<Rack>("rack").asSequence() }
+ .flatMap { it.outgoingEdges.destinations<Machine>("machine").asSequence() }.toList()
- logger.info { "Initialising datacenter with ${machines.size} machines" }
+ logger.info { "Initialising datacenter with ${machines.size} machines" }
- // Register all machines to the scheduler
- machines.forEach(scheduler::register)
+ // Register all machines to the scheduler
+ machines.forEach(scheduler::register)
- while (true) {
- // Context all messages in the queue
- while (queue.isNotEmpty()) {
- val msg = queue.poll()
- if (msg is Task) {
- msg.arrive(time)
- scheduler.submit(msg)
- }
- }
- // (Re)schedule the tasks
- scheduler.run { schedule() }
+ while (true) {
+ // Context all messages in the queue
+ while (queue.isNotEmpty()) {
+ val msg = queue.poll()
+ if (msg is Task) {
+ msg.arrive(time)
+ scheduler.submit(msg)
+ }
+ }
+ // (Re)schedule the tasks
+ scheduler.run { schedule() }
- // Sleep a time quantum
- hold(interval, queue)
- }
- }
+ // Sleep a time quantum
+ hold(interval, queue)
+ }
+ }
}
diff --git a/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/topology/container/Rack.kt b/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/topology/container/Rack.kt
index 0ec43f9a..42fdc9cf 100644
--- a/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/topology/container/Rack.kt
+++ b/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/topology/container/Rack.kt
@@ -24,8 +24,8 @@
package com.atlarge.opendc.model.odc.topology.container
-import com.atlarge.opendc.simulator.Entity
import com.atlarge.opendc.model.topology.Topology
+import com.atlarge.opendc.simulator.Entity
/**
* A type of physical steel and electronic framework that is designed to house servers, networking devices, cables and
diff --git a/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/topology/container/Room.kt b/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/topology/container/Room.kt
index 50cfc3e6..5e07b0ce 100644
--- a/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/topology/container/Room.kt
+++ b/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/topology/container/Room.kt
@@ -24,8 +24,8 @@
package com.atlarge.opendc.model.odc.topology.container
-import com.atlarge.opendc.simulator.Entity
import com.atlarge.opendc.model.topology.Topology
+import com.atlarge.opendc.simulator.Entity
/**
* A physical room in a datacenter with relationships to the entities within the room.
diff --git a/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/topology/machine/Machine.kt b/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/topology/machine/Machine.kt
index 4f4ce645..642723f5 100644
--- a/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/topology/machine/Machine.kt
+++ b/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/topology/machine/Machine.kt
@@ -24,12 +24,12 @@
package com.atlarge.opendc.model.odc.topology.machine
-import com.atlarge.opendc.simulator.Context
-import com.atlarge.opendc.simulator.Process
import com.atlarge.opendc.model.odc.platform.workload.Task
import com.atlarge.opendc.model.topology.Topology
import com.atlarge.opendc.model.topology.destinations
+import com.atlarge.opendc.simulator.Context
import com.atlarge.opendc.simulator.Duration
+import com.atlarge.opendc.simulator.Process
import mu.KotlinLogging
/**
@@ -39,85 +39,85 @@ import mu.KotlinLogging
* @author Fabian Mastenbroek (f.s.mastenbroek@student.tudelft.nl)
*/
open class Machine : Process<Machine.State, Topology> {
- /**
- * The logger instance to use for the simulator.
- */
- private val logger = KotlinLogging.logger {}
+ /**
+ * The logger instance to use for the simulator.
+ */
+ private val logger = KotlinLogging.logger {}
- /**
- * The status of a machine.
- */
- enum class Status {
- HALT, IDLE, RUNNING
- }
+ /**
+ * The status of a machine.
+ */
+ enum class Status {
+ HALT, IDLE, RUNNING
+ }
- /**
- * The shape of the state of a [Machine] entity.
- *
- * @property status The status of the machine.
- * @property task The task assign to the machine.
- * @property memory The memory usage of the machine (defaults to 50mb for the kernel)
- * @property load The load on the machine (defaults to 0.0)
- * @property temperature The temperature of the machine (defaults to 23 degrees Celcius)
- */
- data class State(val status: Status,
- val task: Task? = null,
- val memory: Int = 50,
- val load: Double = 0.0,
- val temperature: Double = 23.0)
+ /**
+ * The shape of the state of a [Machine] entity.
+ *
+ * @property status The status of the machine.
+ * @property task The task assign to the machine.
+ * @property memory The memory usage of the machine (defaults to 50mb for the kernel)
+ * @property load The load on the machine (defaults to 0.0)
+ * @property temperature The temperature of the machine (defaults to 23 degrees Celcius)
+ */
+ data class State(val status: Status,
+ val task: Task? = null,
+ val memory: Int = 50,
+ val load: Double = 0.0,
+ val temperature: Double = 23.0)
- /**
- * The initial state of a [Machine] entity.
- */
- override val initialState = State(Status.HALT)
+ /**
+ * The initial state of a [Machine] entity.
+ */
+ override val initialState = State(Status.HALT)
- /**
- * Run the simulation kernel for this entity.
- */
- override suspend fun Context<State, Topology>.run() = model.run {
- state = State(Status.IDLE)
+ /**
+ * Run the simulation kernel for this entity.
+ */
+ override suspend fun Context<State, Topology>.run() = model.run {
+ state = State(Status.IDLE)
- val interval: Duration = 10
- val cpus = outgoingEdges.destinations<Cpu>("cpu")
- val speed = cpus.fold(0, { acc, cpu -> acc + cpu.clockRate * cpu.cores })
+ val interval: Duration = 10
+ val cpus = outgoingEdges.destinations<Cpu>("cpu")
+ val speed = cpus.fold(0, { acc, cpu -> acc + cpu.clockRate * cpu.cores })
- // Halt the machine if it has not processing units (see bug #4)
- if (cpus.isEmpty()) {
- state = State(Status.HALT)
- return
- }
+ // Halt the machine if it has not processing units (see bug #4)
+ if (cpus.isEmpty()) {
+ state = State(Status.HALT)
+ return
+ }
- var task: Task = receiveTask()
- state = State(Status.RUNNING, task, load = 1.0, memory = state.memory + 50, temperature = 30.0)
+ var task: Task = receiveTask()
+ state = State(Status.RUNNING, task, load = 1.0, memory = state.memory + 50, temperature = 30.0)
- while (true) {
- if (task.finished) {
- logger.info { "$id: Task ${task.id} finished. Machine idle at $time" }
- state = State(Status.IDLE)
- task = receiveTask()
- } else {
- task.consume(time, speed * delta)
- }
+ while (true) {
+ if (task.finished) {
+ logger.info { "$id: Task ${task.id} finished. Machine idle at $time" }
+ state = State(Status.IDLE)
+ task = receiveTask()
+ } else {
+ task.consume(time, speed * delta)
+ }
- // Check if we have received a new order in the meantime.
- val msg = receive(interval)
- if (msg is Task) {
- task = msg
- state = State(Status.RUNNING, task, load = 1.0, memory = state.memory + 50, temperature = 30.0)
- }
- }
- }
+ // Check if we have received a new order in the meantime.
+ val msg = receive(interval)
+ if (msg is Task) {
+ task = msg
+ state = State(Status.RUNNING, task, load = 1.0, memory = state.memory + 50, temperature = 30.0)
+ }
+ }
+ }
- /**
- * Wait for a [Task] to be received by the [Context] and discard all other messages received in the meantime.
- *
- * @return The task that has been received.
- */
- private suspend fun Context<State, Topology>.receiveTask(): Task {
- while (true) {
- val msg = receive()
- if (msg is Task)
- return msg
- }
- }
+ /**
+ * Wait for a [Task] to be received by the [Context] and discard all other messages received in the meantime.
+ *
+ * @return The task that has been received.
+ */
+ private suspend fun Context<State, Topology>.receiveTask(): Task {
+ while (true) {
+ val msg = receive()
+ if (msg is Task)
+ return msg
+ }
+ }
}
diff --git a/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/topology/machine/ProcessingUnit.kt b/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/topology/machine/ProcessingUnit.kt
index 0b8989de..e5d30173 100644
--- a/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/topology/machine/ProcessingUnit.kt
+++ b/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/topology/machine/ProcessingUnit.kt
@@ -24,8 +24,8 @@
package com.atlarge.opendc.model.odc.topology.machine
-import com.atlarge.opendc.simulator.Entity
import com.atlarge.opendc.model.topology.Topology
+import com.atlarge.opendc.simulator.Entity
/**
* An interface representing a generic processing unit which is placed into a [Machine].
@@ -33,18 +33,18 @@ import com.atlarge.opendc.model.topology.Topology
* @author Fabian Mastenbroek (f.s.mastenbroek@student.tudelft.nl)
*/
interface ProcessingUnit : Entity<Unit, Topology> {
- /**
- * The speed of this [ProcessingUnit] per core in MHz.
- */
- val clockRate: Int
+ /**
+ * The speed of this [ProcessingUnit] per core in MHz.
+ */
+ val clockRate: Int
- /**
- * The amount of cores within this [ProcessingUnit].
- */
- val cores: Int
+ /**
+ * The amount of cores within this [ProcessingUnit].
+ */
+ val cores: Int
- /**
- * The energy consumption of this [ProcessingUnit] in Watt.
- */
- val energyConsumption: Double
+ /**
+ * The energy consumption of this [ProcessingUnit] in Watt.
+ */
+ val energyConsumption: Double
}
diff --git a/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/topology/network/NetworkUnit.kt b/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/topology/network/NetworkUnit.kt
index a41a8326..5ffc19bf 100644
--- a/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/topology/network/NetworkUnit.kt
+++ b/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/topology/network/NetworkUnit.kt
@@ -24,8 +24,8 @@
package com.atlarge.opendc.model.odc.topology.network
-import com.atlarge.opendc.simulator.Entity
import com.atlarge.opendc.model.topology.Topology
+import com.atlarge.opendc.simulator.Entity
/**
* A generic interface for a network unit in a cloud network.
diff --git a/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/topology/power/PowerUnit.kt b/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/topology/power/PowerUnit.kt
index 8650b5dc..3e9248c4 100644
--- a/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/topology/power/PowerUnit.kt
+++ b/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/topology/power/PowerUnit.kt
@@ -24,8 +24,8 @@
package com.atlarge.opendc.model.odc.topology.power
-import com.atlarge.opendc.simulator.Entity
import com.atlarge.opendc.model.topology.Topology
+import com.atlarge.opendc.simulator.Entity
/**
* An [Entity] which provides power for other entities a cloud network to run.
diff --git a/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/topology/storage/StorageUnit.kt b/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/topology/storage/StorageUnit.kt
index b5bb4dfb..eb622f2c 100644
--- a/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/topology/storage/StorageUnit.kt
+++ b/opendc-model-odc/core/src/main/kotlin/com/atlarge/opendc/model/odc/topology/storage/StorageUnit.kt
@@ -24,8 +24,8 @@
package com.atlarge.opendc.model.odc.topology.storage
-import com.atlarge.opendc.simulator.Entity
import com.atlarge.opendc.model.topology.Topology
+import com.atlarge.opendc.simulator.Entity
/**
* A generic interface for a storage unit in a cloud network.