mirror of
https://github.com/paulscherrerinstitute/sf_daq_buffer.git
synced 2026-08-07 06:42:26 +02:00
core adjustments for eiger header. more debug msgs
This commit is contained in:
@@ -9,7 +9,7 @@ target_link_libraries(core-buffer-lib
|
|||||||
external)
|
external)
|
||||||
|
|
||||||
if (USE_EIGER)
|
if (USE_EIGER)
|
||||||
target_compile_definitions(core-buffer-lib INTERFACE -DUSE_EIGER)
|
target_compile_definitions(core-buffer-lib PUBLIC -DUSE_EIGER)
|
||||||
endif (USE_EIGER)
|
endif (USE_EIGER)
|
||||||
|
|
||||||
if (DEBUG_OUTPUT)
|
if (DEBUG_OUTPUT)
|
||||||
|
|||||||
@@ -140,14 +140,10 @@ BufferUtils::DetectorConfig BufferUtils::read_json_config(
|
|||||||
config_parameters.ParseStream(isw);
|
config_parameters.ParseStream(isw);
|
||||||
|
|
||||||
BufferUtils::DetectorConfig det_config = {
|
BufferUtils::DetectorConfig det_config = {
|
||||||
// config_parameters["streamvis_stream"].GetString(),
|
config_parameters["streamvis_stream"].GetString(),
|
||||||
"",
|
config_parameters["streamvis_rate"].GetInt(),
|
||||||
// config_parameters["streamvis_rate"].GetInt(),
|
config_parameters["live_stream"].GetString(),
|
||||||
-1,
|
config_parameters["live_rate"].GetInt(),
|
||||||
// config_parameters["live_stream"].GetString(),
|
|
||||||
"",
|
|
||||||
// config_parameters["live_rate"].GetInt(),
|
|
||||||
-1,
|
|
||||||
// config_parameters["pedestal_file"].GetString(),
|
// config_parameters["pedestal_file"].GetString(),
|
||||||
"",
|
"",
|
||||||
// config_parameters["gain_file"].GetString(),
|
// config_parameters["gain_file"].GetString(),
|
||||||
|
|||||||
@@ -89,6 +89,10 @@ void RamBuffer::write_frame(
|
|||||||
cout << " || src_meta.daq_rec " << src_meta.daq_rec;
|
cout << " || src_meta.daq_rec " << src_meta.daq_rec;
|
||||||
cout << " || src_meta.module_id " << src_meta.module_id;
|
cout << " || src_meta.module_id " << src_meta.module_id;
|
||||||
cout << " || dst_data " << dst_data;
|
cout << " || dst_data " << dst_data;
|
||||||
|
cout << " || image_buffer_ " << image_buffer_;
|
||||||
|
cout << " || image_bytes_ " << image_bytes_;
|
||||||
|
cout << " || slot_n " << slot_n;
|
||||||
|
cout << " || MODULE_N_BYTES " << MODULE_N_BYTES;
|
||||||
cout << endl;
|
cout << endl;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -138,7 +142,16 @@ char* RamBuffer::read_image(const uint64_t pulse_id,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!is_pulse_init) {
|
if (!is_pulse_init) {
|
||||||
|
#ifdef DEBUG_OUTPUT
|
||||||
|
using namespace date;
|
||||||
|
cout << " [" << std::chrono::system_clock::now();
|
||||||
|
cout << "] [RamBuffer::read_image] !is_pulse_init:";
|
||||||
|
cout << "Frame_meta pulse id: " << frame_meta->pulse_id;
|
||||||
|
cout << " || pulse id: " << pulse_id;
|
||||||
|
cout << " || frame_meta->n_recv_packets " << frame_meta->n_recv_packets;
|
||||||
|
cout << " || frame_index: " << frame_meta->frame_index;
|
||||||
|
cout << endl;
|
||||||
|
#endif
|
||||||
if (frame_meta->pulse_id != pulse_id) {
|
if (frame_meta->pulse_id != pulse_id) {
|
||||||
throw runtime_error("Wrong pulse_id in ram buffer slot.");
|
throw runtime_error("Wrong pulse_id in ram buffer slot.");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,8 @@
|
|||||||
{
|
{
|
||||||
|
"streamvis_stream": "tcp://0.0.0.0:9006",
|
||||||
|
"streamvis_rate": 10,
|
||||||
|
"live_stream": "tcp://0.0.0.0:9106",
|
||||||
|
"live_rate": 10,
|
||||||
"detector_name": "Eiger",
|
"detector_name": "Eiger",
|
||||||
"n_modules": 1,
|
"n_modules": 1,
|
||||||
"start_udp_port": 50200
|
"start_udp_port": 50200
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
hostname localhost:2050+
|
hostname localhost:2050+
|
||||||
0:udp_dstport 50100
|
0:udp_dstport 50200
|
||||||
0:udp_dstport2 50101
|
0:udp_dstport2 50201
|
||||||
0:udp_dstip 127.0.0.1
|
0:udp_dstip 127.0.0.1
|
||||||
0:udp_dstmac 90:1b:0e:19:1c:ae
|
0:udp_dstmac 90:1b:0e:19:1c:ae
|
||||||
|
|
||||||
0:udp_srcip 129.129.130.177
|
0:udp_srcip 129.129.130.177
|
||||||
0:udp_srcmac 90:1b:0e:19:1c:ae
|
0:udp_srcmac 90:1b:0e:19:1c:ae
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [ -z ${SLS_DET_PACKAGE_PATH} ]; then SLS_DET_PACKAGE_PATH="/home/hax_l/software/sf_daq_buffer/slsDetectorPackage/build/bin/"; fi
|
||||||
|
|
||||||
${SLS_DET_PACKAGE_PATH}sls_detector_put triggers 1
|
${SLS_DET_PACKAGE_PATH}sls_detector_put triggers 1
|
||||||
${SLS_DET_PACKAGE_PATH}sls_detector_put timing trigger
|
${SLS_DET_PACKAGE_PATH}sls_detector_put timing trigger
|
||||||
${SLS_DET_PACKAGE_PATH}sls_detector_put exptime 0.000005
|
${SLS_DET_PACKAGE_PATH}sls_detector_put exptime 0.000005
|
||||||
|
|||||||
@@ -3,20 +3,19 @@
|
|||||||
if [ $# -lt 1 ]
|
if [ $# -lt 1 ]
|
||||||
then
|
then
|
||||||
echo "Usage : $0 <port>"
|
echo "Usage : $0 <port>"
|
||||||
echo " DETECTOR_NAME: Eiger"
|
|
||||||
echo " tcp port : optional, default 2000"
|
echo " tcp port : optional, default 2000"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
SLS_DET_PACKAGE_PATH='/home/hax_l/software/sf_daq_buffer/slsDetectorPackage/build/bin/'
|
SLS_DET_PACKAGE_PATH='/home/hax_l/software/sf_daq_buffer/slsDetectorPackage/build/bin/'
|
||||||
|
PORT=2050
|
||||||
port=2000
|
|
||||||
if [ $# == 2 ]
|
if [ $# == 2 ]
|
||||||
then
|
then
|
||||||
port=$1
|
PORT=$1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Starting the server..."
|
echo "Starting the server..."
|
||||||
${SLS_DET_PACKAGE_PATH}eigerDetectorServerMaster_virtual -p port
|
|
||||||
|
echo ${SLS_DET_PACKAGE_PATH}eigerDetectorServerMaster_virtual -p ${PORT}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,16 @@ target_link_libraries(jf-live-writer-lib
|
|||||||
core-buffer-lib)
|
core-buffer-lib)
|
||||||
|
|
||||||
add_executable(jf-live-writer src/main.cpp)
|
add_executable(jf-live-writer src/main.cpp)
|
||||||
set_target_properties(jf-live-writer PROPERTIES OUTPUT_NAME jf_live_writer)
|
|
||||||
|
|
||||||
|
if (USE_EIGER)
|
||||||
|
set (LIB_NAME_UDP_RECV "eiger_live_writer")
|
||||||
|
else()
|
||||||
|
set (LIB_NAME_UDP_RECV "jf_live_writer")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set_target_properties(jf-live-writer PROPERTIES OUTPUT_NAME ${LIB_NAME_UDP_RECV})
|
||||||
|
|
||||||
target_link_libraries(jf-live-writer
|
target_link_libraries(jf-live-writer
|
||||||
jf-live-writer-lib
|
jf-live-writer-lib
|
||||||
sf-writer-lib
|
sf-writer-lib
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
#include <stdexcept>
|
||||||
|
|
||||||
#include "BufferUtils.hpp"
|
#include "BufferUtils.hpp"
|
||||||
#include "buffer_config.hpp"
|
#include "buffer_config.hpp"
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ void JFH5LiveWriter::init_file(const string& output_file)
|
|||||||
|
|
||||||
image_dataset_ = file_.createDataSet(
|
image_dataset_ = file_.createDataSet(
|
||||||
"/data/" + detector_name_ + "/data",
|
"/data/" + detector_name_ + "/data",
|
||||||
H5_UINT16,
|
H5::PredType::NATIVE_UINT16,
|
||||||
image_dataspace,
|
image_dataspace,
|
||||||
image_dataset_properties);
|
image_dataset_properties);
|
||||||
}
|
}
|
||||||
@@ -98,10 +98,10 @@ void JFH5LiveWriter::write_dataset(
|
|||||||
|
|
||||||
void JFH5LiveWriter::write_metadata()
|
void JFH5LiveWriter::write_metadata()
|
||||||
{
|
{
|
||||||
write_dataset("pulse_id", &b_pulse_id_, H5_UINT64);
|
write_dataset("pulse_id", &b_pulse_id_, H5::PredType::NATIVE_UINT64);
|
||||||
write_dataset("frame_index", &b_frame_index_, H5_UINT64);
|
write_dataset("frame_index", &b_frame_index_, H5::PredType::NATIVE_UINT64);
|
||||||
write_dataset("daq_rec", &b_daq_rec_, H5_UINT32);
|
write_dataset("daq_rec", &b_daq_rec_, H5::PredType::NATIVE_UINT32);
|
||||||
write_dataset("is_good_frame", &b_is_good_frame_, H5_UINT8);
|
write_dataset("is_good_frame", &b_is_good_frame_, H5::PredType::NATIVE_UINT8);
|
||||||
}
|
}
|
||||||
|
|
||||||
void JFH5LiveWriter::close_file()
|
void JFH5LiveWriter::close_file()
|
||||||
|
|||||||
@@ -8,7 +8,15 @@ target_link_libraries(jf-udp-recv-lib
|
|||||||
core-buffer-lib)
|
core-buffer-lib)
|
||||||
|
|
||||||
add_executable(jf-udp-recv src/main.cpp)
|
add_executable(jf-udp-recv src/main.cpp)
|
||||||
set_target_properties(jf-udp-recv PROPERTIES OUTPUT_NAME jf_udp_recv)
|
|
||||||
|
if (USE_EIGER)
|
||||||
|
set (LIB_NAME_UDP_RECV "eiger_udp_recv")
|
||||||
|
else()
|
||||||
|
set (LIB_NAME_UDP_RECV "jf_udp_recv")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set_target_properties(jf-udp-recv PROPERTIES OUTPUT_NAME ${LIB_NAME_UDP_RECV})
|
||||||
|
|
||||||
target_link_libraries(jf-udp-recv
|
target_link_libraries(jf-udp-recv
|
||||||
jf-udp-recv-lib
|
jf-udp-recv-lib
|
||||||
zmq
|
zmq
|
||||||
|
|||||||
@@ -47,14 +47,15 @@ inline void FrameUdpReceiver::init_frame(
|
|||||||
frame_metadata.frame_index = packet_buffer_[i_packet].framenum;
|
frame_metadata.frame_index = packet_buffer_[i_packet].framenum;
|
||||||
frame_metadata.daq_rec = (uint64_t) packet_buffer_[i_packet].debug;
|
frame_metadata.daq_rec = (uint64_t) packet_buffer_[i_packet].debug;
|
||||||
frame_metadata.module_id = (int64_t) module_id_;
|
frame_metadata.module_id = (int64_t) module_id_;
|
||||||
// #ifdef DEBUG_OUTPUT
|
#ifdef DEBUG_OUTPUT
|
||||||
// using namespace date;
|
using namespace date;
|
||||||
// cout << " [" << std::chrono::system_clock::now();
|
cout << " [" << std::chrono::system_clock::now();
|
||||||
// cout << "] [FrameUdpReceiver::init_frame] :";
|
cout << "] [FrameUdpReceiver::init_frame] :";
|
||||||
// cout << " Frame number: " << frame_metadata.frame_index << endl;
|
cout << " Frame number: " << frame_metadata.frame_index << endl;
|
||||||
// cout << "i_packet" << i_packet << endl;
|
// cout << " packet_buffer_ " << packet_buffer_[i_packet] << endl;
|
||||||
// cout << endl;
|
cout << "i_packet" << i_packet << endl;
|
||||||
// #endif
|
cout << endl;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void FrameUdpReceiver::copy_packet_to_buffers(
|
inline void FrameUdpReceiver::copy_packet_to_buffers(
|
||||||
@@ -112,6 +113,8 @@ inline uint64_t FrameUdpReceiver::process_packets(
|
|||||||
cout << "] [FrameUdpReceiver::process_packets] :";
|
cout << "] [FrameUdpReceiver::process_packets] :";
|
||||||
cout << " Frame " << metadata.frame_index << " || ";
|
cout << " Frame " << metadata.frame_index << " || ";
|
||||||
cout << packet_buffer_[i_packet].packetnum << " packets received.";
|
cout << packet_buffer_[i_packet].packetnum << " packets received.";
|
||||||
|
cout << " packet_buffer_n_packets_ " << packet_buffer_n_packets_;
|
||||||
|
cout << " i_packet "<< i_packet;
|
||||||
cout << endl;
|
cout << endl;
|
||||||
#endif
|
#endif
|
||||||
// Buffer is loaded only if this is not the last message.
|
// Buffer is loaded only if this is not the last message.
|
||||||
|
|||||||
@@ -14,11 +14,17 @@ using namespace chrono;
|
|||||||
using namespace buffer_config;
|
using namespace buffer_config;
|
||||||
using namespace BufferUtils;
|
using namespace BufferUtils;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int main (int argc, char *argv[]) {
|
int main (int argc, char *argv[]) {
|
||||||
|
|
||||||
if (argc != 3) {
|
if (argc != 3) {
|
||||||
cout << endl;
|
cout << endl;
|
||||||
cout << "Usage: XXX_udp_recv [detector_json_filename] [module_id]";
|
#ifndef USE_EIGER
|
||||||
|
cout << "Usage: jf_udp_recv [detector_json_filename] [module_id]";
|
||||||
|
#else
|
||||||
|
cout << "Usage: eiger_udp_recv [detector_json_filename] [module_id]";
|
||||||
|
#endif
|
||||||
cout << endl;
|
cout << endl;
|
||||||
cout << "\tdetector_json_filename: detector config file path." << endl;
|
cout << "\tdetector_json_filename: detector config file path." << endl;
|
||||||
cout << "\tmodule_id: id of the module for this process." << endl;
|
cout << "\tmodule_id: id of the module for this process." << endl;
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ using namespace std;
|
|||||||
|
|
||||||
TEST(BufferUdpReceiver, simple_recv)
|
TEST(BufferUdpReceiver, simple_recv)
|
||||||
{
|
{
|
||||||
auto n_packets = JF_N_PACKETS_PER_FRAME;
|
auto n_packets = N_PACKETS_PER_FRAME;
|
||||||
int source_id = 1234;
|
int source_id = 1234;
|
||||||
int n_frames = 5;
|
int n_frames = 5;
|
||||||
|
|
||||||
@@ -26,7 +26,7 @@ TEST(BufferUdpReceiver, simple_recv)
|
|||||||
auto handle = async(launch::async, [&](){
|
auto handle = async(launch::async, [&](){
|
||||||
for (int i_frame=0; i_frame < n_frames; i_frame++){
|
for (int i_frame=0; i_frame < n_frames; i_frame++){
|
||||||
for (size_t i_packet=0; i_packet<n_packets; i_packet++) {
|
for (size_t i_packet=0; i_packet<n_packets; i_packet++) {
|
||||||
jungfrau_packet send_udp_buffer;
|
det_packet send_udp_buffer;
|
||||||
send_udp_buffer.packetnum = i_packet;
|
send_udp_buffer.packetnum = i_packet;
|
||||||
send_udp_buffer.bunchid = i_frame + 1;
|
send_udp_buffer.bunchid = i_frame + 1;
|
||||||
send_udp_buffer.framenum = i_frame + 1000;
|
send_udp_buffer.framenum = i_frame + 1000;
|
||||||
@@ -35,7 +35,7 @@ TEST(BufferUdpReceiver, simple_recv)
|
|||||||
::sendto(
|
::sendto(
|
||||||
send_socket_fd,
|
send_socket_fd,
|
||||||
&send_udp_buffer,
|
&send_udp_buffer,
|
||||||
JUNGFRAU_BYTES_PER_PACKET,
|
BYTES_PER_PACKET,
|
||||||
0,
|
0,
|
||||||
(sockaddr*) &server_address,
|
(sockaddr*) &server_address,
|
||||||
sizeof(server_address));
|
sizeof(server_address));
|
||||||
@@ -46,7 +46,7 @@ TEST(BufferUdpReceiver, simple_recv)
|
|||||||
handle.wait();
|
handle.wait();
|
||||||
|
|
||||||
ModuleFrame metadata;
|
ModuleFrame metadata;
|
||||||
auto frame_buffer = make_unique<char[]>(JUNGFRAU_DATA_BYTES_PER_FRAME);
|
auto frame_buffer = make_unique<char[]>(DATA_BYTES_PER_FRAME);
|
||||||
|
|
||||||
for (int i_frame=0; i_frame < n_frames; i_frame++) {
|
for (int i_frame=0; i_frame < n_frames; i_frame++) {
|
||||||
auto pulse_id = udp_receiver.get_frame_from_udp(
|
auto pulse_id = udp_receiver.get_frame_from_udp(
|
||||||
@@ -65,7 +65,7 @@ TEST(BufferUdpReceiver, simple_recv)
|
|||||||
|
|
||||||
TEST(BufferUdpReceiver, missing_middle_packet)
|
TEST(BufferUdpReceiver, missing_middle_packet)
|
||||||
{
|
{
|
||||||
auto n_packets = JF_N_PACKETS_PER_FRAME;
|
auto n_packets = N_PACKETS_PER_FRAME;
|
||||||
int source_id = 1234;
|
int source_id = 1234;
|
||||||
int n_frames = 3;
|
int n_frames = 3;
|
||||||
|
|
||||||
@@ -84,7 +84,7 @@ TEST(BufferUdpReceiver, missing_middle_packet)
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
jungfrau_packet send_udp_buffer;
|
det_packet send_udp_buffer;
|
||||||
send_udp_buffer.packetnum = i_packet;
|
send_udp_buffer.packetnum = i_packet;
|
||||||
send_udp_buffer.bunchid = i_frame + 1;
|
send_udp_buffer.bunchid = i_frame + 1;
|
||||||
send_udp_buffer.framenum = i_frame + 1000;
|
send_udp_buffer.framenum = i_frame + 1000;
|
||||||
@@ -93,7 +93,7 @@ TEST(BufferUdpReceiver, missing_middle_packet)
|
|||||||
::sendto(
|
::sendto(
|
||||||
send_socket_fd,
|
send_socket_fd,
|
||||||
&send_udp_buffer,
|
&send_udp_buffer,
|
||||||
JUNGFRAU_BYTES_PER_PACKET,
|
BYTES_PER_PACKET,
|
||||||
0,
|
0,
|
||||||
(sockaddr*) &server_address,
|
(sockaddr*) &server_address,
|
||||||
sizeof(server_address));
|
sizeof(server_address));
|
||||||
@@ -104,7 +104,7 @@ TEST(BufferUdpReceiver, missing_middle_packet)
|
|||||||
handle.wait();
|
handle.wait();
|
||||||
|
|
||||||
ModuleFrame metadata;
|
ModuleFrame metadata;
|
||||||
auto frame_buffer = make_unique<char[]>(JUNGFRAU_DATA_BYTES_PER_FRAME);
|
auto frame_buffer = make_unique<char[]>(DATA_BYTES_PER_FRAME);
|
||||||
|
|
||||||
for (int i_frame=0; i_frame < n_frames; i_frame++) {
|
for (int i_frame=0; i_frame < n_frames; i_frame++) {
|
||||||
auto pulse_id = udp_receiver.get_frame_from_udp(
|
auto pulse_id = udp_receiver.get_frame_from_udp(
|
||||||
@@ -123,7 +123,7 @@ TEST(BufferUdpReceiver, missing_middle_packet)
|
|||||||
|
|
||||||
TEST(BufferUdpReceiver, missing_first_packet)
|
TEST(BufferUdpReceiver, missing_first_packet)
|
||||||
{
|
{
|
||||||
auto n_packets = JF_N_PACKETS_PER_FRAME;
|
auto n_packets = N_PACKETS_PER_FRAME;
|
||||||
int source_id = 1234;
|
int source_id = 1234;
|
||||||
int n_frames = 3;
|
int n_frames = 3;
|
||||||
|
|
||||||
@@ -142,7 +142,7 @@ TEST(BufferUdpReceiver, missing_first_packet)
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
jungfrau_packet send_udp_buffer;
|
det_packet send_udp_buffer;
|
||||||
send_udp_buffer.packetnum = i_packet;
|
send_udp_buffer.packetnum = i_packet;
|
||||||
send_udp_buffer.bunchid = i_frame + 1;
|
send_udp_buffer.bunchid = i_frame + 1;
|
||||||
send_udp_buffer.framenum = i_frame + 1000;
|
send_udp_buffer.framenum = i_frame + 1000;
|
||||||
@@ -151,7 +151,7 @@ TEST(BufferUdpReceiver, missing_first_packet)
|
|||||||
::sendto(
|
::sendto(
|
||||||
send_socket_fd,
|
send_socket_fd,
|
||||||
&send_udp_buffer,
|
&send_udp_buffer,
|
||||||
JUNGFRAU_BYTES_PER_PACKET,
|
BYTES_PER_PACKET,
|
||||||
0,
|
0,
|
||||||
(sockaddr*) &server_address,
|
(sockaddr*) &server_address,
|
||||||
sizeof(server_address));
|
sizeof(server_address));
|
||||||
@@ -162,7 +162,7 @@ TEST(BufferUdpReceiver, missing_first_packet)
|
|||||||
handle.wait();
|
handle.wait();
|
||||||
|
|
||||||
ModuleFrame metadata;
|
ModuleFrame metadata;
|
||||||
auto frame_buffer = make_unique<char[]>(JUNGFRAU_DATA_BYTES_PER_FRAME);
|
auto frame_buffer = make_unique<char[]>(DATA_BYTES_PER_FRAME);
|
||||||
|
|
||||||
for (int i_frame=0; i_frame < n_frames; i_frame++) {
|
for (int i_frame=0; i_frame < n_frames; i_frame++) {
|
||||||
auto pulse_id = udp_receiver.get_frame_from_udp(
|
auto pulse_id = udp_receiver.get_frame_from_udp(
|
||||||
@@ -181,7 +181,7 @@ TEST(BufferUdpReceiver, missing_first_packet)
|
|||||||
|
|
||||||
TEST(BufferUdpReceiver, missing_last_packet)
|
TEST(BufferUdpReceiver, missing_last_packet)
|
||||||
{
|
{
|
||||||
auto n_packets = JF_N_PACKETS_PER_FRAME;
|
auto n_packets = N_PACKETS_PER_FRAME;
|
||||||
int source_id = 1234;
|
int source_id = 1234;
|
||||||
int n_frames = 3;
|
int n_frames = 3;
|
||||||
|
|
||||||
@@ -200,7 +200,7 @@ TEST(BufferUdpReceiver, missing_last_packet)
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
jungfrau_packet send_udp_buffer;
|
det_packet send_udp_buffer;
|
||||||
send_udp_buffer.packetnum = i_packet;
|
send_udp_buffer.packetnum = i_packet;
|
||||||
send_udp_buffer.bunchid = i_frame + 1;
|
send_udp_buffer.bunchid = i_frame + 1;
|
||||||
send_udp_buffer.framenum = i_frame + 1000;
|
send_udp_buffer.framenum = i_frame + 1000;
|
||||||
@@ -209,7 +209,7 @@ TEST(BufferUdpReceiver, missing_last_packet)
|
|||||||
::sendto(
|
::sendto(
|
||||||
send_socket_fd,
|
send_socket_fd,
|
||||||
&send_udp_buffer,
|
&send_udp_buffer,
|
||||||
JUNGFRAU_BYTES_PER_PACKET,
|
BYTES_PER_PACKET,
|
||||||
0,
|
0,
|
||||||
(sockaddr*) &server_address,
|
(sockaddr*) &server_address,
|
||||||
sizeof(server_address));
|
sizeof(server_address));
|
||||||
@@ -220,7 +220,7 @@ TEST(BufferUdpReceiver, missing_last_packet)
|
|||||||
handle.wait();
|
handle.wait();
|
||||||
|
|
||||||
ModuleFrame metadata;
|
ModuleFrame metadata;
|
||||||
auto frame_buffer = make_unique<char[]>(JUNGFRAU_DATA_BYTES_PER_FRAME);
|
auto frame_buffer = make_unique<char[]>(DATA_BYTES_PER_FRAME);
|
||||||
|
|
||||||
// n_frames -1 because the last frame is not complete.
|
// n_frames -1 because the last frame is not complete.
|
||||||
for (int i_frame=0; i_frame < n_frames - 1; i_frame++) {
|
for (int i_frame=0; i_frame < n_frames - 1; i_frame++) {
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ TEST(PacketUdpReceiver, simple_recv)
|
|||||||
PacketUdpReceiver udp_receiver;
|
PacketUdpReceiver udp_receiver;
|
||||||
udp_receiver.bind(udp_port);
|
udp_receiver.bind(udp_port);
|
||||||
|
|
||||||
jungfrau_packet send_udp_buffer;
|
det_packet send_udp_buffer;
|
||||||
send_udp_buffer.packetnum = 91;
|
send_udp_buffer.packetnum = 91;
|
||||||
send_udp_buffer.framenum = 92;
|
send_udp_buffer.framenum = 92;
|
||||||
send_udp_buffer.bunchid = 93;
|
send_udp_buffer.bunchid = 93;
|
||||||
@@ -29,16 +29,16 @@ TEST(PacketUdpReceiver, simple_recv)
|
|||||||
::sendto(
|
::sendto(
|
||||||
send_socket_fd,
|
send_socket_fd,
|
||||||
&send_udp_buffer,
|
&send_udp_buffer,
|
||||||
JUNGFRAU_BYTES_PER_PACKET,
|
BYTES_PER_PACKET,
|
||||||
0,
|
0,
|
||||||
(sockaddr*) &server_address,
|
(sockaddr*) &server_address,
|
||||||
sizeof(server_address));
|
sizeof(server_address));
|
||||||
|
|
||||||
this_thread::sleep_for(chrono::milliseconds(100));
|
this_thread::sleep_for(chrono::milliseconds(100));
|
||||||
|
|
||||||
jungfrau_packet recv_udp_buffer;
|
det_packet recv_udp_buffer;
|
||||||
ASSERT_TRUE(udp_receiver.receive(
|
ASSERT_TRUE(udp_receiver.receive(
|
||||||
&recv_udp_buffer, JUNGFRAU_BYTES_PER_PACKET));
|
&recv_udp_buffer, BYTES_PER_PACKET));
|
||||||
|
|
||||||
EXPECT_EQ(send_udp_buffer.packetnum, recv_udp_buffer.packetnum);
|
EXPECT_EQ(send_udp_buffer.packetnum, recv_udp_buffer.packetnum);
|
||||||
EXPECT_EQ(send_udp_buffer.framenum, recv_udp_buffer.framenum);
|
EXPECT_EQ(send_udp_buffer.framenum, recv_udp_buffer.framenum);
|
||||||
@@ -46,7 +46,7 @@ TEST(PacketUdpReceiver, simple_recv)
|
|||||||
EXPECT_EQ(send_udp_buffer.debug, recv_udp_buffer.debug);
|
EXPECT_EQ(send_udp_buffer.debug, recv_udp_buffer.debug);
|
||||||
|
|
||||||
ASSERT_FALSE(udp_receiver.receive(
|
ASSERT_FALSE(udp_receiver.receive(
|
||||||
&recv_udp_buffer, JUNGFRAU_BYTES_PER_PACKET));
|
&recv_udp_buffer, BYTES_PER_PACKET));
|
||||||
|
|
||||||
udp_receiver.disconnect();
|
udp_receiver.disconnect();
|
||||||
::close(send_socket_fd);
|
::close(send_socket_fd);
|
||||||
@@ -62,43 +62,43 @@ TEST(PacketUdpReceiver, false_recv)
|
|||||||
PacketUdpReceiver udp_receiver;
|
PacketUdpReceiver udp_receiver;
|
||||||
udp_receiver.bind(udp_port);
|
udp_receiver.bind(udp_port);
|
||||||
|
|
||||||
jungfrau_packet send_udp_buffer;
|
det_packet send_udp_buffer;
|
||||||
jungfrau_packet recv_udp_buffer;
|
det_packet recv_udp_buffer;
|
||||||
|
|
||||||
auto server_address = get_server_address(udp_port);
|
auto server_address = get_server_address(udp_port);
|
||||||
|
|
||||||
::sendto(
|
::sendto(
|
||||||
send_socket_fd,
|
send_socket_fd,
|
||||||
&send_udp_buffer,
|
&send_udp_buffer,
|
||||||
JUNGFRAU_BYTES_PER_PACKET-1,
|
BYTES_PER_PACKET-1,
|
||||||
0,
|
0,
|
||||||
(sockaddr*) &server_address,
|
(sockaddr*) &server_address,
|
||||||
sizeof(server_address));
|
sizeof(server_address));
|
||||||
|
|
||||||
ASSERT_FALSE(udp_receiver.receive(
|
ASSERT_FALSE(udp_receiver.receive(
|
||||||
&recv_udp_buffer, JUNGFRAU_BYTES_PER_PACKET));
|
&recv_udp_buffer, BYTES_PER_PACKET));
|
||||||
|
|
||||||
::sendto(
|
::sendto(
|
||||||
send_socket_fd,
|
send_socket_fd,
|
||||||
&send_udp_buffer,
|
&send_udp_buffer,
|
||||||
JUNGFRAU_BYTES_PER_PACKET,
|
BYTES_PER_PACKET,
|
||||||
0,
|
0,
|
||||||
(sockaddr*) &server_address,
|
(sockaddr*) &server_address,
|
||||||
sizeof(server_address));
|
sizeof(server_address));
|
||||||
|
|
||||||
ASSERT_TRUE(udp_receiver.receive(
|
ASSERT_TRUE(udp_receiver.receive(
|
||||||
&recv_udp_buffer, JUNGFRAU_BYTES_PER_PACKET));
|
&recv_udp_buffer, BYTES_PER_PACKET));
|
||||||
|
|
||||||
::sendto(
|
::sendto(
|
||||||
send_socket_fd,
|
send_socket_fd,
|
||||||
&send_udp_buffer,
|
&send_udp_buffer,
|
||||||
JUNGFRAU_BYTES_PER_PACKET-1,
|
BYTES_PER_PACKET-1,
|
||||||
0,
|
0,
|
||||||
(sockaddr*) &server_address,
|
(sockaddr*) &server_address,
|
||||||
sizeof(server_address));
|
sizeof(server_address));
|
||||||
|
|
||||||
ASSERT_TRUE(udp_receiver.receive(
|
ASSERT_TRUE(udp_receiver.receive(
|
||||||
&recv_udp_buffer, JUNGFRAU_BYTES_PER_PACKET-1));
|
&recv_udp_buffer, BYTES_PER_PACKET-1));
|
||||||
|
|
||||||
udp_receiver.disconnect();
|
udp_receiver.disconnect();
|
||||||
::close(send_socket_fd);
|
::close(send_socket_fd);
|
||||||
@@ -106,15 +106,15 @@ TEST(PacketUdpReceiver, false_recv)
|
|||||||
|
|
||||||
TEST(PacketUdpReceiver, receive_many)
|
TEST(PacketUdpReceiver, receive_many)
|
||||||
{
|
{
|
||||||
auto n_msg_buffer = JF_N_PACKETS_PER_FRAME;
|
auto n_msg_buffer = N_PACKETS_PER_FRAME;
|
||||||
jungfrau_packet recv_buffer[n_msg_buffer];
|
det_packet recv_buffer[n_msg_buffer];
|
||||||
iovec recv_buff_ptr[n_msg_buffer];
|
iovec recv_buff_ptr[n_msg_buffer];
|
||||||
struct mmsghdr msgs[n_msg_buffer];
|
struct mmsghdr msgs[n_msg_buffer];
|
||||||
struct sockaddr_in sockFrom[n_msg_buffer];
|
struct sockaddr_in sockFrom[n_msg_buffer];
|
||||||
|
|
||||||
for (int i = 0; i < n_msg_buffer; i++) {
|
for (int i = 0; i < n_msg_buffer; i++) {
|
||||||
recv_buff_ptr[i].iov_base = (void*) &(recv_buffer[i]);
|
recv_buff_ptr[i].iov_base = (void*) &(recv_buffer[i]);
|
||||||
recv_buff_ptr[i].iov_len = sizeof(jungfrau_packet);
|
recv_buff_ptr[i].iov_len = sizeof(det_packet);
|
||||||
|
|
||||||
msgs[i].msg_hdr.msg_iov = &recv_buff_ptr[i];
|
msgs[i].msg_hdr.msg_iov = &recv_buff_ptr[i];
|
||||||
msgs[i].msg_hdr.msg_iovlen = 1;
|
msgs[i].msg_hdr.msg_iovlen = 1;
|
||||||
@@ -130,7 +130,7 @@ TEST(PacketUdpReceiver, receive_many)
|
|||||||
PacketUdpReceiver udp_receiver;
|
PacketUdpReceiver udp_receiver;
|
||||||
udp_receiver.bind(udp_port);
|
udp_receiver.bind(udp_port);
|
||||||
|
|
||||||
jungfrau_packet send_udp_buffer;
|
det_packet send_udp_buffer;
|
||||||
|
|
||||||
auto server_address = get_server_address(udp_port);
|
auto server_address = get_server_address(udp_port);
|
||||||
|
|
||||||
@@ -138,7 +138,7 @@ TEST(PacketUdpReceiver, receive_many)
|
|||||||
::sendto(
|
::sendto(
|
||||||
send_socket_fd,
|
send_socket_fd,
|
||||||
&send_udp_buffer,
|
&send_udp_buffer,
|
||||||
JUNGFRAU_BYTES_PER_PACKET,
|
BYTES_PER_PACKET,
|
||||||
0,
|
0,
|
||||||
(sockaddr*) &server_address,
|
(sockaddr*) &server_address,
|
||||||
sizeof(server_address));
|
sizeof(server_address));
|
||||||
@@ -147,22 +147,22 @@ TEST(PacketUdpReceiver, receive_many)
|
|||||||
::sendto(
|
::sendto(
|
||||||
send_socket_fd,
|
send_socket_fd,
|
||||||
&send_udp_buffer,
|
&send_udp_buffer,
|
||||||
JUNGFRAU_BYTES_PER_PACKET,
|
BYTES_PER_PACKET,
|
||||||
0,
|
0,
|
||||||
(sockaddr*) &server_address,
|
(sockaddr*) &server_address,
|
||||||
sizeof(server_address));
|
sizeof(server_address));
|
||||||
|
|
||||||
this_thread::sleep_for(chrono::milliseconds(10));
|
this_thread::sleep_for(chrono::milliseconds(10));
|
||||||
|
|
||||||
auto n_msgs = udp_receiver.receive_many(msgs, JF_N_PACKETS_PER_FRAME);
|
auto n_msgs = udp_receiver.receive_many(msgs, N_PACKETS_PER_FRAME);
|
||||||
ASSERT_EQ(n_msgs, 2);
|
ASSERT_EQ(n_msgs, 2);
|
||||||
|
|
||||||
for (size_t i=0;i<n_msgs;i++) {
|
for (size_t i=0;i<n_msgs;i++) {
|
||||||
ASSERT_EQ(msgs[i].msg_len, JUNGFRAU_BYTES_PER_PACKET);
|
ASSERT_EQ(msgs[i].msg_len, BYTES_PER_PACKET);
|
||||||
ASSERT_EQ(recv_buffer[i].bunchid, i);
|
ASSERT_EQ(recv_buffer[i].bunchid, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
n_msgs = udp_receiver.receive_many(msgs, JF_N_PACKETS_PER_FRAME);
|
n_msgs = udp_receiver.receive_many(msgs, N_PACKETS_PER_FRAME);
|
||||||
ASSERT_EQ(n_msgs, -1);
|
ASSERT_EQ(n_msgs, -1);
|
||||||
|
|
||||||
udp_receiver.disconnect();
|
udp_receiver.disconnect();
|
||||||
|
|||||||
Reference in New Issue
Block a user