From 1d06261b38bf6a102d53df708155346b0a76ecb6 Mon Sep 17 00:00:00 2001 From: mjkwiatkowski Date: Sun, 15 Feb 2026 12:31:29 +0100 Subject: feat: added a connection to the sqlite database for ExperimentListener --- .../opendc-experiments-base/build.gradle.kts | 2 ++ .../opendc/experiments/base/runner/ConfigParser.kt | 38 ++++++++++++++-------- .../experiments/base/runner/ExperimentCli.kt | 3 +- .../experiments/base/runner/ExperimentRunner.kt | 12 ++++--- .../experiments/base/runner/RequestRunner.kt | 2 +- thesis | 2 +- 6 files changed, 38 insertions(+), 21 deletions(-) diff --git a/opendc-experiments/opendc-experiments-base/build.gradle.kts b/opendc-experiments/opendc-experiments-base/build.gradle.kts index 8a77f0c4..ea764d4b 100644 --- a/opendc-experiments/opendc-experiments-base/build.gradle.kts +++ b/opendc-experiments/opendc-experiments-base/build.gradle.kts @@ -40,6 +40,8 @@ dependencies { implementation(libs.progressbar) implementation(project(mapOf("path" to ":opendc-simulator:opendc-simulator-core"))) + //@Mateusz: for the sqlite database + implementation("org.xerial:sqlite-jdbc:3.36.0") implementation(project(mapOf("path" to ":opendc-compute:opendc-compute-workload"))) implementation(project(mapOf("path" to ":opendc-compute:opendc-compute-topology"))) implementation(project(mapOf("path" to ":opendc-compute:opendc-compute-carbon"))) diff --git a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ConfigParser.kt b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ConfigParser.kt index 457a26ea..0e354cbd 100644 --- a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ConfigParser.kt +++ b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ConfigParser.kt @@ -7,6 +7,7 @@ import kotlinx.serialization.json.decodeFromStream import java.io.BufferedReader import java.io.BufferedWriter import java.io.File +import java.io.IOException import java.io.InputStream import java.io.InputStreamReader import java.io.OutputStream @@ -14,6 +15,9 @@ import java.io.OutputStreamWriter import java.net.ServerSocket import java.net.Socket import java.net.SocketImpl +import java.sql.Connection +import java.sql.DriverManager +import java.sql.SQLException /** @@ -34,28 +38,37 @@ public data class Config( public companion object{ public var input: InputStream? = null public var output: OutputStream? = null - public var reader: BufferedReader? = null - public var writer: BufferedWriter? = null + public var database: Connection? = null public var socket: Socket? = null public fun setConfigSocket(socket: Socket?){ this.socket = socket - input = socket?.getInputStream() - output = socket?.getOutputStream() + try { + input = socket?.getInputStream() + output = socket?.getOutputStream() + } catch (e: IOException){ + print("${e.message}") + } + } - reader = BufferedReader(InputStreamReader(input)) - writer = BufferedWriter(OutputStreamWriter(output)) + public fun getConfigReader() : InputStream? { + return input } - public fun getConfigReader() : BufferedReader? { - return reader + public fun getConfigWriter() : OutputStream? { + return output } - public fun getConfigWriter() : BufferedWriter? { - writer?.write("Hello\n") - writer?.newLine() - return writer + public fun setupDatabase(path : String) : Connection?{ + val url = "jdbc:sqlite:$path" + try { + this.database = DriverManager.getConnection(url) + return database + } catch (e : SQLException) { + print("${e.message}") + return null + } } } } @@ -70,4 +83,3 @@ public class ConfigReader { return jsonReader.decodeFromStream(input) } } - diff --git a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ExperimentCli.kt b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ExperimentCli.kt index 1d79cc42..b9395001 100644 --- a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ExperimentCli.kt +++ b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ExperimentCli.kt @@ -76,7 +76,7 @@ internal class ExperimentCommand : CliktCommand(name = "experiment") { } /** - * Creates a server socket from `config`. + * Creates a server socket and database connection from `config`. */ internal class ExperimentListener: CliktCommand(name = "listener") { private val configPath by option("--config-path", help = "path to config file") @@ -91,6 +91,7 @@ internal class ExperimentListener: CliktCommand(name = "listener") { try { serverSocket = ServerSocket(config.port, config.backlog, inetAddress) + Config.setupDatabase(config.databasePath) runListener(serverSocket) } catch (e: IOException) { println("${e.message}") diff --git a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ExperimentRunner.kt b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ExperimentRunner.kt index 000822fb..312cb0ac 100644 --- a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ExperimentRunner.kt +++ b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ExperimentRunner.kt @@ -61,10 +61,12 @@ public fun runExperiment(experiment: List) { println("$ansiGreen================================================================================$ansiReset") for (seed in 0.. 0) runRequest(String(request, 0, ret)) } } catch (e: IOException) { diff --git a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/RequestRunner.kt b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/RequestRunner.kt index 5ef8d8ce..0316119f 100644 --- a/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/RequestRunner.kt +++ b/opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/RequestRunner.kt @@ -8,5 +8,5 @@ package org.opendc.experiments.base.runner public fun runRequest(request: String) { // https://github.com/am-i-helpful/opendc/blob/master/opendc-oda/opendc-oda-experiments/src/main/kotlin/org/opendc/oda/experimentrunner/ODAComputeMonitor.kt // Do this here - println("The request is $request") + println("The request is $request\n") } \ No newline at end of file diff --git a/thesis b/thesis index 11626ee4..a4102d02 160000 --- a/thesis +++ b/thesis @@ -1 +1 @@ -Subproject commit 11626ee425dc307ff1744a357edda72210684c90 +Subproject commit a4102d0252236e85b2813160b4b11e3a19a00d62 -- cgit v1.2.3