16 int server_fd = socket(AF_INET, SOCK_STREAM, 0);
18 setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT, &opt,
sizeof(opt));
20 struct sockaddr_in address;
21 address.sin_family = AF_INET;
22 address.sin_addr.s_addr = INADDR_ANY;
25 bind(server_fd, (
struct sockaddr*)&address,
sizeof(address));
26 socklen_t addrlen =
sizeof(address);
27 getsockname(server_fd, (
struct sockaddr*)&address, &addrlen);
28 out_port = ntohs(address.sin_port);
36 setsockopt(server_fd, SOL_SOCKET, SO_RCVTIMEO, (
const char*)&tv,
sizeof tv);
38 int new_socket = accept(server_fd,
nullptr,
nullptr);
39 if (new_socket >= 0) {
41 setsockopt(new_socket, SOL_SOCKET, SO_RCVTIMEO, (
const char*)&tv,
sizeof tv);
44 int valread =
read(new_socket, buffer, 1024);
47 for (
int i = 0; i < valread; ++i)
48 out_data.push_back(buffer[i]);
57 std::cout <<
"=== SequencerService Elodin DB Integration Test ===" << std::endl;
60 std::vector<uint8_t> received_data;
61 bool run_server =
true;
63 std::thread server_thread(
dummy_tcp_server, std::ref(elodin_port), std::ref(received_data),
64 std::ref(run_server));
67 while (elodin_port == 0)
68 std::this_thread::sleep_for(std::chrono::milliseconds(10));
70 std::string test_config =
"test_elodin_cfg.toml";
72 std::ofstream f(test_config);
73 f <<
"[database]\nhost=\"127.0.0.1\"\nport=" << elodin_port <<
"\n";
77 if (!seq.
init(test_config)) {
78 std::cerr <<
"❌ FAILED: Sequencer init failed (ensure you are running from repository "
79 "root where config/ and external/ exist)\n";
86 std::this_thread::sleep_for(std::chrono::milliseconds(100));
89 std::cout <<
"Transitioning to ARMED...\n";
92 std::this_thread::sleep_for(std::chrono::milliseconds(200));
96 remove(test_config.c_str());
98 if (received_data.empty()) {
99 std::cerr <<
"❌ FAILED: Elodin mock server received 0 bytes\n";
105 if (received_data.size() < 100) {
106 std::cerr <<
"❌ FAILED: Received unexpectedly small amount of bytes ("
107 << received_data.size() <<
") for schemas and data\n";
111 std::cout <<
"✅ SUCCESS: Elodin mock server gracefully received " << received_data.size()
112 <<
" bytes of serialized schemas and state transitions.\n";