diff --git a/receiver/JFJochReceiverTest.cpp b/receiver/JFJochReceiverTest.cpp index 9df36a19..664bcb2e 100644 --- a/receiver/JFJochReceiverTest.cpp +++ b/receiver/JFJochReceiverTest.cpp @@ -38,7 +38,7 @@ JFJochProtoBuf::ReceiverOutput RunJFJochReceiverTest(std::vector 0) { // Initial communication if (abort) { - std::this_thread::sleep_for(std::chrono::seconds(180)); + std::this_thread::sleep_for(std::chrono::seconds(60)); service.Cancel(&grpc_context, nullptr, nullptr); } } diff --git a/tests/JFJochReceiverIntegrationTest.cpp b/tests/JFJochReceiverIntegrationTest.cpp index 462a22d0..d5821afd 100644 --- a/tests/JFJochReceiverIntegrationTest.cpp +++ b/tests/JFJochReceiverIntegrationTest.cpp @@ -501,3 +501,38 @@ TEST_CASE("JFJochReceiverTest_PacketLost_Raw", "[JFJochReceiver]") { REQUIRE(receiver_out.efficiency() < 1.0); REQUIRE(receiver_out.images_sent() == x.GetImageNum()); } + +TEST_CASE("JFJochReceiverTest_Cancel", "[JFJochReceiver]") { + DiffractionExperiment x(DetectorGeometry(2)); + const uint16_t nthreads = 4; + + std::vector frame_in(RAW_MODULE_SIZE); + for (auto &i: frame_in) i = 776; + + x.Mode(DetectorMode::Raw); + x.PedestalG0Frames(0).NumTriggers(1) + .UseInternalPacketGenerator(false).ImagesPerTrigger(4).PhotonEnergy_keV(12.4); + + std::vector> aq_devices; + for (int i = 0; i < x.GetDataStreamsNum(); i++) { + auto test = new HLSSimulatedDevice(i, 64); + test->CreatePackets(x, 1, 1, 0, frame_in.data(), false); + test->CreatePackets(x, 1, 1, 1, frame_in.data(), false); + test->CreatePackets(x, 2, 1, 0, frame_in.data(), false); + test->CreatePackets(x, 2, 1, 1, frame_in.data(), false); + test->CreatePackets(x, 3, 1, 0, frame_in.data(), false); + test->CreatePackets(x, 3, 1, 1, frame_in.data(), false); + aq_devices.emplace_back(test); + } + Logger logger("JFJochReceiverTest_Cancelw"); + + JFCalibration calib(x); + + std::vector tmp_devices; + for (const auto &i: aq_devices) + tmp_devices.emplace_back(i.get()); + + TestImagePusher pusher(x.GetImageNum() - 1); + auto receiver_out = RunJFJochReceiverTest(tmp_devices, pusher, x, logger, calib, nthreads, true); + REQUIRE(receiver_out.cancelled()); +} \ No newline at end of file