diff options
| author | mjkwiatkowski <mati.rewa@gmail.com> | 2026-02-15 12:31:29 +0100 |
|---|---|---|
| committer | mjkwiatkowski <mati.rewa@gmail.com> | 2026-02-15 12:31:29 +0100 |
| commit | 1d06261b38bf6a102d53df708155346b0a76ecb6 (patch) | |
| tree | a7e0ba9e587e7cd04a92d66fe05d6069cae131eb /opendc-experiments | |
| parent | e5b47b5afd3040fb55bd310e06cfe0514156e904 (diff) | |
feat: added a connection to the sqlite database for ExperimentListener
Diffstat (limited to 'opendc-experiments')
5 files changed, 37 insertions, 20 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<Config>(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<Scenario>) { println("$ansiGreen================================================================================$ansiReset") for (seed in 0..<scenario.runs) { + + Config.getConfigWriter()?.write("123\n".toByteArray()) + println("$ansiBlue Starting seed: $seed $ansiReset") runScenario(scenario, seed.toLong()) pb.step() - Config.getConfigWriter()?.write("Hello from beyond\n") } } pb.close() @@ -82,12 +84,12 @@ public fun runListener(socket: ServerSocket) { // communication, and to store the incoming results into Postgresql Config.setConfigSocket(client) - var request: String? + var request = ByteArray(1024) while(true){ - request = Config.getConfigReader()?.readLine() - if(request == null) break - runRequest(request) + var ret : Int? = Config.getConfigReader()?.read(request) + if(ret == -1) break + if(ret != null && ret > 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 |
