jfjoch_test: Add TCP/IP integration test

This commit is contained in:
2026-03-04 13:37:52 +01:00
parent a3a986830b
commit 94072d3626
2 changed files with 92 additions and 6 deletions
+11 -6
View File
@@ -91,6 +91,7 @@ void StreamWriter::ProcessCalibrationImage() {
} catch (const std::exception &e) {
logger.Warning(e.what());
logger.Warning("Error during writing calibration data - skipping");
NotifyTcpAck(TCPFrameType::CALIBRATION, false, false, TCPAckCode::DataWriteFailed, e.what());
}
break;
case StreamWriterState::Receiving:
@@ -139,6 +140,7 @@ void StreamWriter::ProcessDataImage() {
}
break;
case StreamWriterState::Error:
// Error state => Wait till end only
case StreamWriterState::Finalized:
break;
}
@@ -164,7 +166,16 @@ void StreamWriter::ProcessEndMessage() {
err = e.what();
}
}
bool error_state = (state == StreamWriterState::Error);
FinalizeDataCollection();
// Notifications happen only when handling END message
// No end message ==> no need to ACK
NotifyReceiverOnFinalizedWrite(writer_notification_zmq_addr);
NotifyTcpAck(TCPFrameType::END, !error_state, error_state,
error_state ? TCPAckCode::EndFailed : TCPAckCode::None,
error_state ? err : "");
}
void StreamWriter::FinalizeDataCollection() {
@@ -183,12 +194,6 @@ void StreamWriter::FinalizeDataCollection() {
hdf5_data_file_statistics.clear();
}
file_writer.reset();
NotifyReceiverOnFinalizedWrite(writer_notification_zmq_addr);
NotifyTcpAck(TCPFrameType::END,
state != StreamWriterState::Error,
state == StreamWriterState::Error,
state == StreamWriterState::Error ? TCPAckCode::EndFailed : TCPAckCode::None,
state == StreamWriterState::Error ? err : "");
logger.Info("Data writing finished");
state = StreamWriterState::Finalized;
}