Add sf_udprecv test program

This commit is contained in:
2020-04-17 19:14:02 +02:00
parent 5b77313133
commit 0c3387a05a
2 changed files with 77 additions and 0 deletions
+13
View File
@@ -14,5 +14,18 @@ target_link_libraries(sf-buffer
boost_system
pthread)
add_executable(sf-udprecv src/sf_udprecv.cpp)
target_link_libraries(sf-udprecv
core-buffer
core-writer
external
zmq
hdf5
hdf5_hl
hdf5_cpp
boost_system
pthread)
enable_testing()
add_subdirectory(test/)
+64
View File
@@ -0,0 +1,64 @@
#include <iostream>
#include <chrono>
#include <UdpReceiver.hpp>
#include "jungfrau.hpp"
using namespace std;
int main (int argc, char *argv[]) {
if (argc != 4) {
cout << endl;
cout << "Usage: sf_buffer [device_name] [udp_port] [root_folder]";
cout << endl;
cout << "\tdevice_name: Name to write to disk.";
cout << "\tudp_port: UDP port to connect to." << endl;
cout << "\troot_folder: FS root folder." << endl;
cout << endl;
exit(-1);
}
string device_name = string(argv[1]);
int udp_port = atoi(argv[2]);
string root_folder = string(argv[3]);
UdpReceiver receiver;
receiver.bind(udp_port);
jungfrau_packet recv_buffer;
uint64_t current_pulse_id = 0;
uint64_t n_recv_packets = 0;
uint64_t n_missing_packets = 0;
uint16_t loop_counter = 0;
while (true) {
if (receiver.receive(&recv_buffer, sizeof(jungfrau_packet))) {
loop_counter++;
if (recv_buffer.bunchid != current_pulse_id) {
if (current_pulse_id != 0) {
n_missing_packets += (128-n_recv_packets);
}
n_recv_packets = 0;
current_pulse_id = recv_buffer.bunchid;
}
n_recv_packets++;
if (loop_counter == 1000) {
using namespace date;
using namespace chrono;
cout << system_clock::now();
cout << " miss " << n_missing_packets;
cout << endl;
loop_counter = 0;
}
}
}
}