From e5598e69de44699bf761ddbf12af565f39a1b6f5 Mon Sep 17 00:00:00 2001 From: clfreville2 Date: Fri, 10 Nov 2023 08:22:23 +0100 Subject: [PATCH] Test the runner via the command line The executable now takes an optional backend and a script to run. This greatly simplify testing without needing the entire server. --- src/main.cpp | 45 ++++++++++++++++++++++++++++++++------------- 1 file changed, 32 insertions(+), 13 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 7268c51..8c26c14 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,17 +1,14 @@ -#include "config.hpp" #include "network.hpp" #include "program.hpp" #include "runner.hpp" #include #include -#include #include #include #include -#include +#include #include -#include "host.hpp" #include "zmq_addon.hpp" static constexpr uint32_t JOB_ID_LEN = 32; @@ -33,19 +30,41 @@ sk::runner_backend detect_backend() { return sk::runner_backend::BubbleWrap; } -int main() { - std::vector listsHosts = sk::config::loadHostsFromToml("../conf.toml"); - std::priority_queue hosts(listsHosts.begin(), listsHosts.end()); +int main(int argc, char **argv) { + int opt; + std::optional selected_backend; + while ((opt = getopt(argc, argv, "bc")) != -1) { + switch (opt) { + case 'b': + selected_backend = sk::runner_backend::BubbleWrap; + break; + case 'c': + selected_backend = sk::runner_backend::Docker; + break; + default: + std::cerr << "Usage: %s [-bc] [script]\n"; + return 1; + } + } - std::queue programQueue; + sk::runner runner(selected_backend.has_value() ? selected_backend.value() : detect_backend()); - if (hosts.empty()) { - std::cerr << "Pas de host" << std::endl; - exit(1); + if (optind < argc) { + std::ifstream t(argv[optind]); + if (!t) { + std::cerr << "Unable to open file " << argv[optind] << std::endl; + return 1; + } + std::stringstream buffer; + buffer << t.rdbuf(); + std::string code = buffer.str(); + sk::program program{code, "ghcr.io/moshell-lang/moshell"}; + sk::run_result result = runner.run_blocking(program); + std::cout << "out: " << result.out << "\n"; + std::cout << "err: " << result.err << "\n"; + return 0; } - sk::runner runner(detect_backend()); - zmq::context_t context(1); zmq::socket_t receiver(context, zmq::socket_type::pull); receiver.connect("tcp://localhost:5557");