summaryrefslogtreecommitdiff
path: root/opendc-experiments
diff options
context:
space:
mode:
authormjkwiatkowski <mati.rewa@gmail.com>2026-02-15 12:31:29 +0100
committermjkwiatkowski <mati.rewa@gmail.com>2026-02-15 12:31:29 +0100
commit1d06261b38bf6a102d53df708155346b0a76ecb6 (patch)
treea7e0ba9e587e7cd04a92d66fe05d6069cae131eb /opendc-experiments
parente5b47b5afd3040fb55bd310e06cfe0514156e904 (diff)
feat: added a connection to the sqlite database for ExperimentListener
Diffstat (limited to 'opendc-experiments')
-rw-r--r--opendc-experiments/opendc-experiments-base/build.gradle.kts2
-rw-r--r--opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ConfigParser.kt38
-rw-r--r--opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ExperimentCli.kt3
-rw-r--r--opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ExperimentRunner.kt12
-rw-r--r--opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/RequestRunner.kt2
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