summaryrefslogtreecommitdiff
path: root/opendc-experiments/opendc-experiments-base/src
diff options
context:
space:
mode:
authormjkwiatkowski <mati.rewa@gmail.com>2026-02-10 08:14:41 +0100
committermjkwiatkowski <mati.rewa@gmail.com>2026-02-10 08:14:41 +0100
commit4d37bbed4a1f745c331ba996fc860d79e3e51e8f (patch)
tree69d4e530f1f5a5192f98bb422d46618afb291c23 /opendc-experiments/opendc-experiments-base/src
parent7a078fac132d10933e52edafd0f2527c50c9b1b6 (diff)
feat: added the entry point to experiment listenerHEADmaster
Diffstat (limited to 'opendc-experiments/opendc-experiments-base/src')
-rw-r--r--opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ExperimentCli.kt36
-rw-r--r--opendc-experiments/opendc-experiments-base/src/main/kotlin/org/opendc/experiments/base/runner/ExperimentRunner.kt10
2 files changed, 45 insertions, 1 deletions
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 d231b93b..27348ece 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
@@ -25,20 +25,32 @@
package org.opendc.experiments.base.runner
import com.github.ajalt.clikt.core.CliktCommand
+import com.github.ajalt.clikt.parameters.options.default
import com.github.ajalt.clikt.parameters.options.defaultLazy
+import com.github.ajalt.clikt.parameters.options.help
import com.github.ajalt.clikt.parameters.options.option
import com.github.ajalt.clikt.parameters.types.file
+import com.github.ajalt.clikt.parameters.types.int
import org.opendc.experiments.base.experiment.getExperiment
import java.io.File
+import java.net.InetAddress
+import java.net.ServerSocket
/**
* Main entrypoint of the application.
*/
-public fun main(args: Array<String>): Unit = ExperimentCommand().main(args)
+public fun main(args: Array<String>) {
+ if(args.size == 2){
+ ExperimentCommand().main(args)
+ return
+ }
+ ExperimentListener().main(args)
+}
/**
* Represents the command for the Scenario experiments.
*/
+
internal class ExperimentCommand : CliktCommand(name = "experiment") {
/**
* The path to the environment directory.
@@ -52,3 +64,25 @@ internal class ExperimentCommand : CliktCommand(name = "experiment") {
runExperiment(experiment)
}
}
+
+/**
+ * This class parses the CLI arguments and creates a socket for the listener.
+ * Parameters below are the expected CLI arguments in respective order.
+ * @param port The port to listen to.
+ * @param backlog The number of available connections.
+ * @param address The address to bind to.
+ */
+internal class ExperimentListener: CliktCommand(name = "listener") {
+ private val port : Int by option("--port").int().default(8080).help("port to listen to")
+ private val backlog : Int by option("--backlog").int().default(8080).help("number of connections")
+ private val address : String by option("--address").default("127.0.0.1").help("address to bind to")
+
+ override fun run() {
+ val inetAddress = InetAddress.getByName(address)
+ require(port in 1..<65536) { "Port must be between 0 and 65536" }
+ require(backlog in 1..<50) { "Backlog must be between 1 and 50" }
+
+ val serverSocket = ServerSocket(port, backlog, inetAddress)
+ runListener(serverSocket)
+ }
+}
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 079db6fc..83dbe6ac 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
@@ -25,6 +25,8 @@ package org.opendc.experiments.base.runner
import me.tongfei.progressbar.ProgressBarBuilder
import me.tongfei.progressbar.ProgressBarStyle
import org.opendc.experiments.base.experiment.Scenario
+import java.net.ServerSocket
+
/**
* Run scenario when no pool is available for parallel execution
@@ -58,3 +60,11 @@ public fun runExperiment(experiment: List<Scenario>) {
}
pb.close()
}
+
+/**
+ * Accepts and processes incoming requests.
+ * @param socket The socket to listen to.
+ */
+public fun runListener(socket: ServerSocket) {
+ println("Hello!")
+} \ No newline at end of file