JFJochReceiverProcessingTest: Add test of receiver running without valid spots
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 12m58s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 13m22s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 13m36s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 15m2s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 15m18s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 16m0s
Build Packages / build:rpm (rocky8) (push) Successful in 10m39s
Build Packages / build:rpm (rocky9) (push) Successful in 12m24s
Build Packages / Generate python client (push) Successful in 34s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 12m51s
Build Packages / Build documentation (push) Successful in 48s
Build Packages / Create release (push) Has been skipped
Build Packages / XDS test (neggia plugin) (push) Successful in 10m55s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 11m20s
Build Packages / XDS test (durin plugin) (push) Successful in 12m5s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 14m54s
Build Packages / DIALS test (push) Successful in 15m0s
Build Packages / build:rpm (rocky8_nocuda) (pull_request) Successful in 11m13s
Build Packages / build:rpm (rocky9_nocuda) (pull_request) Successful in 12m33s
Build Packages / build:rpm (ubuntu2404_nocuda) (pull_request) Successful in 13m28s
Build Packages / build:rpm (ubuntu2204_nocuda) (pull_request) Successful in 13m38s
Build Packages / build:rpm (rocky8) (pull_request) Successful in 13m0s
Build Packages / build:rpm (rocky8_sls9) (pull_request) Successful in 15m44s
Build Packages / build:rpm (rocky9_sls9) (pull_request) Successful in 15m59s
Build Packages / build:rpm (rocky9) (pull_request) Successful in 11m1s
Build Packages / build:rpm (ubuntu2204) (pull_request) Successful in 9m31s
Build Packages / Generate python client (pull_request) Successful in 36s
Build Packages / Build documentation (pull_request) Successful in 59s
Build Packages / Create release (pull_request) Has been skipped
Build Packages / XDS test (neggia plugin) (pull_request) Successful in 8m6s
Build Packages / XDS test (durin plugin) (pull_request) Successful in 9m52s
Build Packages / XDS test (JFJoch plugin) (pull_request) Successful in 9m40s
Build Packages / build:rpm (ubuntu2404) (pull_request) Successful in 12m9s
Build Packages / DIALS test (pull_request) Successful in 13m56s
Build Packages / Unit tests (push) Successful in 1h2m11s
Build Packages / Unit tests (pull_request) Successful in 52m44s

This commit is contained in:
2026-04-28 22:24:53 +02:00
parent 2665abe047
commit 60bcaee351
+78
View File
@@ -375,6 +375,8 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_lysozyme_spot_index_and_integrate", "[JFJoc
CHECK(receiver_out.status.images_sent == experiment.GetImageNum());
CHECK(!receiver_out.status.cancelled);
logger.Info("Processing time {}", receiver_out.processing_time.processing);
// No progress value at the end of measurement
REQUIRE(!service.GetProgress().has_value());
auto b_factor = service.GetDataProcessingPlot(
@@ -386,6 +388,82 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_lysozyme_spot_index_and_integrate", "[JFJoc
REQUIRE_NOTHROW(writer_future.get());
}
TEST_CASE("JFJochIntegrationTest_ZMQ_lysozyme_spot_index_and_integrate_no_spots", "[JFJochReceiver]") {
Logger logger(Catch::getResultCapture().getCurrentTestName());
RegisterHDF5Filter();
const uint16_t nthreads = 4;
DiffractionExperiment experiment(DetJF4M());
experiment.ImagesPerTrigger(5).NumTriggers(1).UseInternalPacketGenerator(true).ImagesPerFile(2)
.FilePrefix("lyso_test").JungfrauConvPhotonCnt(false).SetFileWriterFormat(FileWriterFormat::NXmxVDS).OverwriteExistingFiles(true)
.DetectorDistance_mm(75).BeamY_pxl(1136).BeamX_pxl(1090).IncidentEnergy_keV(12.4)
.SetUnitCell(UnitCell{.a = 36.9, .b = 78.95, .c = 78.95, .alpha =90, .beta = 90, .gamma = 90});
PixelMask pixel_mask(experiment);
// Load example image
HDF5ReadOnlyFile data("../../tests/test_data/compression_benchmark.h5");
HDF5DataSet dataset(data, "/entry/data/data");
HDF5DataSpace file_space(dataset);
REQUIRE(file_space.GetDimensions()[2] == experiment.GetXPixelsNum());
REQUIRE(file_space.GetDimensions()[1] == experiment.GetYPixelsNum());
std::vector<int16_t> image_conv (file_space.GetDimensions()[1] * file_space.GetDimensions()[2]);
std::vector<hsize_t> start = {4,0,0};
std::vector<hsize_t> file_size = {1, file_space.GetDimensions()[1], file_space.GetDimensions()[2]};
dataset.ReadVector(image_conv, start, file_size);
std::vector<int16_t> image_raw_geom(experiment.GetModulesNum() * RAW_MODULE_SIZE);
ConvertedToRawGeometry(experiment, image_raw_geom.data(), image_conv.data());
logger.Info("Loaded image");
// Setup acquisition device
AcquisitionDeviceGroup aq_devices;
std::unique_ptr<HLSSimulatedDevice> test = std::make_unique<HLSSimulatedDevice>(0, 64);
for (int m = 0; m < experiment.GetModulesNum(); m++)
test->SetInternalGeneratorFrame((uint16_t *) image_raw_geom.data() + m * RAW_MODULE_SIZE, m);
aq_devices.Add(std::move(test));
ZMQStream2Pusher pusher({"ipc://*"});
pusher.WriterNotificationSocket("ipc://*");
ZMQImagePuller puller(pusher.GetAddress()[0]);
StreamWriter writer(logger, puller);
auto writer_future = std::async(std::launch::async, &StreamWriter::Run, &writer);
JFJochReceiverService service(aq_devices, logger, pusher);
service.NumThreads(nthreads);
service.Indexing(experiment.GetIndexingSettings());
// No progress value at the start of measurement
REQUIRE(!service.GetProgress().has_value());
SpotFindingSettings settings = DiffractionExperiment::DefaultDataProcessingSettings();
settings.signal_to_noise_threshold = 20; // make sure there are zero spots possible
settings.photon_count_threshold = 10000;
settings.min_pix_per_spot = 5;
settings.max_pix_per_spot = 200;
settings.high_resolution_limit = 2.0;
settings.low_resolution_limit = 50.0;
settings.quick_integration = true;
service.SetSpotFindingSettings(settings);
service.Start(experiment, pixel_mask, nullptr);
auto receiver_out = service.Stop();
CHECK(receiver_out.efficiency == 1.0);
REQUIRE(receiver_out.status.indexing_rate);
CHECK(receiver_out.status.indexing_rate.value() == 0.0);
CHECK(receiver_out.status.images_sent == experiment.GetImageNum());
CHECK(!receiver_out.status.cancelled);
logger.Info("Processing time {}", receiver_out.processing_time.processing);
// No progress value at the end of measurement
REQUIRE(!service.GetProgress().has_value());
REQUIRE_NOTHROW(writer_future.get());
}
TEST_CASE("JFJochIntegrationTest_ZMQ_lysozyme_azint_2d", "[JFJochReceiver]") {
Logger logger(Catch::getResultCapture().getCurrentTestName());