Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
f2563a0
Initial commit
odemengeon Jun 28, 2025
0f26f03
split and add rety management
odemengeon Jun 28, 2025
75c8edc
Add timeout management + a monitor count on step to prevent it's end …
odemengeon Jun 29, 2025
6bdaea5
prepare for rest api
odemengeon Jun 29, 2025
af01fa7
made functional task_new rest api
odemengeon Jun 29, 2025
7c2d995
Separate executor from schedule
odemengeon Jul 1, 2025
9231600
Add an output folder for every task
odemengeon Jul 3, 2025
ae06ac9
Cache store partial copy, to restore correct state
odemengeon Jul 3, 2025
7c3c386
Fix ns_API::ScheduleAPI::AddTask
odemengeon Jul 9, 2025
4d99554
API task_add now support join specific data files
odemengeon Jul 9, 2025
1505f67
Manage global config file
odemengeon Jul 10, 2025
90c16a4
Fix Local Executor not relasing cpu when doing Shutdown
odemengeon Jul 10, 2025
37aafd7
Embed script file within the server binary
odemengeon Jul 15, 2025
cae0717
Fix issues in Sample/campaign.conf and Local::FinalClean
odemengeon Jul 17, 2025
5510d7b
Add tools to generate website from experiments results
odemengeon Jul 17, 2025
6a7f719
support task args, root step tracking, and embedded task data
odemengeon Jul 17, 2025
c17f814
Update campaign scripts job
odemengeon Aug 11, 2025
9c3cd16
Sample
odemengeon Aug 14, 2025
9f2444f
Server changes:
odemengeon Aug 14, 2025
50d466d
renamed Publisher in Publish
odemengeon Aug 14, 2025
7d82160
Add a new server to publish results
odemengeon Aug 22, 2025
ea70c89
Scheduler
odemengeon Aug 26, 2025
7e8db41
Server
odemengeon Sep 5, 2025
d66a609
Scheduler
odemengeon Sep 8, 2025
5113e19
Schedule
odemengeon Sep 8, 2025
760d73b
Scheduler
odemengeon Sep 9, 2025
3bdd12a
Schedule
odemengeon Sep 11, 2025
74de2fa
Server
odemengeon Sep 30, 2025
10eb83d
Server
odemengeon Sep 30, 2025
13d3a36
Server
odemengeon Oct 10, 2025
02d4d07
Server
odemengeon Oct 10, 2025
06f9ea3
Server
odemengeon Oct 17, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,8 @@ wheels/
.venv

/.quarto/

CMakeLists.conf
.vscode/
build/
**/embeded/
103 changes: 103 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
cmake_minimum_required(VERSION 3.5.0)
project(restsrv)

set (CMAKE_CXX_STANDARD 17)

include(CMakeUtils.cmake)

include(CMakeLists.conf)

add_executable(reserve_port src/reserve_port.c)

add_executable(reserve_port-static src/reserve_port.c)
target_link_options(reserve_port-static PRIVATE -static)

find_program(XXD xxd REQUIRED)

set(RESERVE_PORT_BLOB_H "reserve_port.h")
add_custom_command(
OUTPUT ${RESERVE_PORT_BLOB_H}
COMMAND ${CMAKE_COMMAND} -E env
OUT=${RESERVE_PORT_BLOB_H}
sh -c "${XXD} -i -n ReservePort_Binary \"$<TARGET_FILE:reserve_port>\" > \"${RESERVE_PORT_BLOB_H}\""
DEPENDS reserve_port
COMMENT "Generating ${RESERVE_PORT_BLOB_H} from reserve_port with xxd -i"
VERBATIM
)
add_custom_target(reserve_port_blob_h DEPENDS ${RESERVE_PORT_BLOB_H})
set(RESERVE_PORT-STATIC_BLOB_H "reserve_port-static.h")
add_custom_command(
OUTPUT ${RESERVE_PORT-STATIC_BLOB_H}
COMMAND ${CMAKE_COMMAND} -E env
OUT=${RESERVE_PORT-STATIC_BLOB_H}
sh -c "${XXD} -i -n ReservePort_Binary \"$<TARGET_FILE:reserve_port-static>\" > \"${RESERVE_PORT-STATIC_BLOB_H}\""
DEPENDS reserve_port-static
COMMENT "Generating ${RESERVE_PORT-STATIC_BLOB_H} from reserve_port-static with xxd -i"
VERBATIM
)
add_custom_target(reserve_port-static_blob_h DEPENDS ${RESERVE_PORT-STATIC_BLOB_H})

if(DEFINED OPENSSL_PATH)
GetLibs(openssl STATIC ${OPENSSL_PATH} "ssl;crypto" openssllibs VERBOSE)
CreateExternalLib(openssl "${openssllibs}" DEPLOYTARGET setupDLL)
endif()

GetLibs(Poco STATIC ${POCO_PATH} "PocoNetSSL;PocoCrypto;PocoNet;PocoUtil;PocoFoundation;PocoJSON" Pocolibs VERBOSE)
CreateExternalLib(Poco "${Pocolibs}" DEPLOYTARGET setupDLL)
if(DEFINED OPENSSL_PATH)
target_link_libraries(Poco INTERFACE openssl)
else()
target_link_libraries(Poco INTERFACE ssl crypto)
endif()

EmbedTextFileScript("${CMAKE_SOURCE_DIR}/scripts/executor.sh" "${CMAKE_SOURCE_DIR}/src/embeded/scheduler/executor_sh.h" Executor_Script)
EmbedTextFileScript("${CMAKE_SOURCE_DIR}/scripts/functions.sh" "${CMAKE_SOURCE_DIR}/src/embeded/scheduler/functions_sh.h" Functions_Script)

set(SRV_SRC
src/scheduler/main.cxx src/scheduler/config.cxx
src/scheduler/utils/rapidjson.cxx src/scheduler/utils/variables.cxx src/scheduler/utils/file.cxx
src/scheduler/server/config.cxx src/scheduler/server/server.cxx src/scheduler/server/parts_handler.cxx src/scheduler/server/request_handler.cxx
src/scheduler/schedule/config.cxx src/scheduler/schedule/schedule.cxx src/scheduler/schedule/task.cxx src/scheduler/schedule/step.cxx
src/scheduler/schedule/tasksmanager.cxx src/scheduler/schedule/step_configurations.cxx src/scheduler/schedule/publish.cxx
src/scheduler/schedule/executor/config.cxx src/scheduler/schedule/executor/executor.cxx src/scheduler/schedule/executor/local.cxx
src/scheduler/schedule/executor/linux_cores.cxx
src/scheduler/api/schedule_api.cxx
src/scheduler/cache/config.cxx src/scheduler/cache/cache.cxx
src/scheduler/schedule/monitor/monitor.cxx src/scheduler/schedule/monitor/task.cxx
src/embeded/scheduler/executor_sh.h src/embeded/scheduler/functions_sh.h
)

add_executable(srv ${SRV_SRC} ${RESERVE_PORT_BLOB_H})
target_link_libraries(srv PRIVATE Poco)
target_include_directories(srv PRIVATE ${RAPIDJSON_PATH} ${CMAKE_CURRENT_BINARY_DIR})
add_dependencies(srv reserve_port_blob_h)

add_executable(srv-static ${SRV_SRC} ${RESERVE_PORT-STATIC_BLOB_H})
target_link_libraries(srv-static PRIVATE Poco)
target_include_directories(srv-static PRIVATE ${RAPIDJSON_PATH} ${CMAKE_CURRENT_BINARY_DIR})
target_link_options(srv-static PRIVATE -static)
target_compile_definitions(srv-static PRIVATE STATIC)
add_dependencies(srv-static reserve_port-static_blob_h)

add_executable(testcpu src/cpu.cxx src/scheduler/schedule/executor/linux_cores.cxx)

EmbedTextFileScript("${CMAKE_SOURCE_DIR}/html/publisher/index.html" "${CMAKE_SOURCE_DIR}/src/embeded/publisher/index_html.h" Publisher_Index)
EmbedTextFileScript("${CMAKE_SOURCE_DIR}/html/publisher/index.css" "${CMAKE_SOURCE_DIR}/src/embeded/publisher/index_css.h" Publisher_CSS)
EmbedTextFileScript("${CMAKE_SOURCE_DIR}/html/publisher/index.js" "${CMAKE_SOURCE_DIR}/src/embeded/publisher/index_js.h" Publisher_JS)

set(PUBLISHER_SRC
src/publisher/main.cxx src/publisher/config.cxx
src/publisher/server/config.cxx src/publisher/server/server.cxx
src/publisher/server/parts_handler.cxx src/publisher/server/request_handler.cxx
src/publisher/publish/config.cxx src/publisher/publish/publish.cxx
src/embeded/publisher/index_html.h src/embeded/publisher/index_css.h src/embeded/publisher/index_js.h
)

add_executable(publisher ${PUBLISHER_SRC})
target_link_libraries(publisher PRIVATE Poco)
target_include_directories(publisher PRIVATE ${RAPIDJSON_PATH})

add_executable(publisher-static ${PUBLISHER_SRC})
target_link_libraries(publisher-static PRIVATE Poco)
target_include_directories(publisher-static PRIVATE ${RAPIDJSON_PATH})
target_link_options(publisher-static PRIVATE -static)
36 changes: 36 additions & 0 deletions CMakeTextEmbedding.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
#***********************************************\
# *
# project : Cmake Helper to find Library *
# *
# author : Olivier Demengeon *
# created : 2025 *
# *
#***********************************************/

cmake_minimum_required(VERSION 3.16)

######################################################################
########################### User functions ###########################
######################################################################

# EmbedTextFile(<input_txt> <output_header> <varname_prefix>)
## Required parameters
### INPUT_TXT (in) : path to the source text file to embed
### OUTPUT_HEADER (out) : generates a C header file
### VARPREFIX_data (out) : a NUL-terminated C string literal
### VARPREFIX_size (out) : size of the C string literal (excluding the NULL)
function(EmbedTextFile INPUT_TXT OUTPUT_HEADER VARPREFIX)
file(READ "${INPUT_TXT}" _raw_content)

string(REPLACE "\\" "\\\\" _escaped_content "${_raw_content}")
string(REPLACE "\"" "\\\"" _escaped_content "${_escaped_content}")
string(REPLACE "\n" "\\n\"\n\"" _escaped_content "${_escaped_content}")

file(WRITE "${OUTPUT_HEADER}"
"/* Auto-generated from ${INPUT_TXT} */\n"
"static const char ${VARPREFIX}_data[] = \"${_escaped_content}\";\n"
"static const size_t ${VARPREFIX}_size = sizeof(${VARPREFIX}_data) - 1;\n"
)
endfunction()

EmbedTextFile("${INPUT_TXT}" "${OUTPUT_HEADER}" "${VARPREFIX}")
Loading