summaryrefslogtreecommitdiff
path: root/opendc-workflow
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2021-09-12 12:08:55 +0200
committerGitHub <noreply@github.com>2021-09-12 12:08:55 +0200
commit2cd3bd18e548a72d64afe0e7f59487f4747d722f (patch)
treedc9e2fba5ca4d19a90934a8b68dbb8110ee34bb7 /opendc-workflow
parentcae193284570d6ee9dbacdde57b3e4e367aa9d9f (diff)
parent992b65396f55c0e12b36823d191dea8e03dd45ba (diff)
merge: Add support for new trace formats
This pull request updates the trace API with the addition of several new trace formats. - Add support for Materna traces from GWA - Keep reader state in own class - Parse last column in Solvinity trace format - Add support Azure VM traces - Add support for WfCommons (WorkflowHub) traces - Add API for accessing available table columns - Add synthetic resource table for Bitbrains format - Support dynamic resolving of trace formats **Breaking API Changes** - Replace `isSupported` by a list of `TableColumns`
Diffstat (limited to 'opendc-workflow')
-rw-r--r--opendc-workflow/opendc-workflow-service/src/test/kotlin/org/opendc/workflow/service/TraceReplayer.kt16
1 files changed, 8 insertions, 8 deletions
diff --git a/opendc-workflow/opendc-workflow-service/src/test/kotlin/org/opendc/workflow/service/TraceReplayer.kt b/opendc-workflow/opendc-workflow-service/src/test/kotlin/org/opendc/workflow/service/TraceReplayer.kt
index a390fe08..9ee3736e 100644
--- a/opendc-workflow/opendc-workflow-service/src/test/kotlin/org/opendc/workflow/service/TraceReplayer.kt
+++ b/opendc-workflow/opendc-workflow-service/src/test/kotlin/org/opendc/workflow/service/TraceReplayer.kt
@@ -81,17 +81,17 @@ internal class TraceReplayer(private val trace: Trace) {
try {
while (reader.nextRow()) {
// Bag of tasks without workflow ID all share the same workflow
- val workflowId = if (reader.hasColumn(TASK_WORKFLOW_ID)) reader.getLong(TASK_WORKFLOW_ID) else 0L
+ val workflowId = if (reader.hasColumn(TASK_WORKFLOW_ID)) reader.get(TASK_WORKFLOW_ID).toLong() else 0L
val workflow = jobs.computeIfAbsent(workflowId) { id -> Job(UUID(0L, id), "<unnamed>", HashSet(), HashMap()) }
- val id = reader.getLong(TASK_ID)
+ val id = reader.get(TASK_ID).toLong()
val grantedCpus = if (reader.hasColumn(TASK_ALLOC_NCPUS))
reader.getInt(TASK_ALLOC_NCPUS)
else
reader.getInt(TASK_REQ_NCPUS)
- val submitTime = reader.getLong(TASK_SUBMIT_TIME)
- val runtime = reader.getLong(TASK_RUNTIME)
- val flops: Long = 4000 * runtime * grantedCpus
+ val submitTime = reader.get(TASK_SUBMIT_TIME)
+ val runtime = reader.get(TASK_RUNTIME)
+ val flops: Long = 4000 * runtime.seconds * grantedCpus
val workload = SimFlopsWorkload(flops)
val task = Task(
UUID(0L, id),
@@ -100,14 +100,14 @@ internal class TraceReplayer(private val trace: Trace) {
mapOf(
"workload" to workload,
WORKFLOW_TASK_CORES to grantedCpus,
- WORKFLOW_TASK_DEADLINE to (runtime * 1000)
+ WORKFLOW_TASK_DEADLINE to runtime.toMillis()
),
)
tasks[id] = task
- taskDependencies[task] = reader.get(TASK_PARENTS)
+ taskDependencies[task] = reader.get(TASK_PARENTS).map { it.toLong() }.toSet()
- (workflow.metadata as MutableMap<String, Any>).merge("WORKFLOW_SUBMIT_TIME", submitTime) { a, b -> min(a as Long, b as Long) }
+ (workflow.metadata as MutableMap<String, Any>).merge("WORKFLOW_SUBMIT_TIME", submitTime.toEpochMilli()) { a, b -> min(a as Long, b as Long) }
(workflow.tasks as MutableSet<Task>).add(task)
}