From d9ae9a8cc60f2923f94263cee13f13e95745625b Mon Sep 17 00:00:00 2001 From: Erik Frojdh Date: Thu, 5 Dec 2019 11:00:55 +0100 Subject: [PATCH] eiger test --- .../tests/test-CmdProxy-eiger.cpp | 96 ++++++++++++++----- slsDetectorSoftware/tests/test-CmdProxy.cpp | 72 +++----------- 2 files changed, 87 insertions(+), 81 deletions(-) diff --git a/slsDetectorSoftware/tests/test-CmdProxy-eiger.cpp b/slsDetectorSoftware/tests/test-CmdProxy-eiger.cpp index 4bfa3c1d1..1418e5c83 100644 --- a/slsDetectorSoftware/tests/test-CmdProxy-eiger.cpp +++ b/slsDetectorSoftware/tests/test-CmdProxy-eiger.cpp @@ -44,8 +44,8 @@ TEST_CASE("Eiger transmission delay") { } } - //Reset to previous values - for (int i=0; i!=det.size(); ++i){ + // Reset to previous values + for (int i = 0; i != det.size(); ++i) { det.setTransmissionDelayFrame(frame[i]); det.setTransmissionDelayLeft(left[i]); det.setTransmissionDelayRight(right[i]); @@ -84,31 +84,81 @@ TEST_CASE("dr", "[.cmd]") { } } -// TEST_CASE("interruptsubframe", "[.cmd][.eiger]") { +TEST_CASE("interruptsubframe", "[.cmd][!mayfail]") { + // TODO! Fix this for virtual server + Detector det; + CmdProxy proxy(&det); + auto det_type = det.getDetectorType().squash(); + if (det_type == defs::EIGER) { + auto previous = det.getInterruptSubframe(); -// Detector det; -// CmdProxy proxy(&det); + std::ostringstream oss1, oss2, oss3; + proxy.Call("interruptsubframe", {"1"}, -1, PUT, oss1); + REQUIRE(oss1.str() == "interruptsubframe 1\n"); + proxy.Call("interruptsubframe", {}, -1, GET, oss2); + REQUIRE(oss2.str() == "interruptsubframe 1\n"); + proxy.Call("interruptsubframe", {"0"}, -1, PUT, oss3); + REQUIRE(oss3.str() == "interruptsubframe 0\n"); + for (int i = 0; i != det.size(); ++i) { + det.setInterruptSubframe(previous[i], {i}); + } -// auto det_type = det.getDetectorType().squash(); -// if (det_type == defs::EIGER){ -// auto previous = det.getInterruptSubframe(); + } else { + REQUIRE_THROWS(proxy.Call("interruptsubframe", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("interruptsubframe", {"1"}, -1, PUT)); + } +} -// std::ostringstream oss1, oss2, oss3; -// proxy.Call("interruptsubframe", {"1"}, -1, PUT, oss1); -// REQUIRE(oss1.str() == "interruptsubframe 1\n"); -// proxy.Call("interruptsubframe", {}, -1, GET, oss2); -// REQUIRE(oss2.str() == "interruptsubframe 1\n"); -// proxy.Call("interruptsubframe", {"0"}, -1, PUT, oss3); -// REQUIRE(oss3.str() == "interruptsubframe 0\n"); -// for (int i=0; i!=det.size(); ++i){ -// det.setInterruptSubframe(previous[i], {i}); -// } +TEST_CASE("overflow", "[.cmd]") { + Detector det; + CmdProxy proxy(&det); + auto det_type = det.getDetectorType().squash(); + if (det_type == defs::EIGER) { + auto previous = det.getOverFlowMode(); -// }else{ -// REQUIRE_THROWS(proxy.Call("interruptsubframe", {}, -1, GET)); -// REQUIRE_THROWS(proxy.Call("interruptsubframe", {"1"}, -1, PUT)); -// } -// } + std::ostringstream oss1, oss2, oss3; + proxy.Call("overflow", {"1"}, -1, PUT, oss1); + REQUIRE(oss1.str() == "overflow 1\n"); + proxy.Call("overflow", {}, -1, GET, oss2); + REQUIRE(oss2.str() == "overflow 1\n"); + proxy.Call("overflow", {"0"}, -1, PUT, oss3); + REQUIRE(oss3.str() == "overflow 0\n"); + for (int i = 0; i != det.size(); ++i) { + det.setOverFlowMode(previous[i], {i}); + } + + } else { + REQUIRE_THROWS(proxy.Call("overflow", {}, -1, GET)); + REQUIRE_THROWS(proxy.Call("overflow", {"1"}, -1, PUT)); + } +} + +TEST_CASE("trimen", "[.cmd][.this]") { + //TODO! Also Mythen? + Detector det; + CmdProxy proxy(&det); + auto det_type = det.getDetectorType().squash(); + if (det_type == defs::EIGER) { + + auto previous = det.getTrimEnergies(); + std::ostringstream oss1, oss2; + proxy.Call("trimen", {"4500", "5400", "6400"}, -1, PUT, oss1); + REQUIRE(oss1.str() == "trimen [4500, 5400, 6400]\n"); + proxy.Call("trimen", {}, -1, GET, oss2); + REQUIRE(oss2.str() == "trimen [4500, 5400, 6400]\n"); + + for (int i = 0; i!=det.size(); ++i){ + det.setTrimEnergies(previous[i], {i}); + } + } else { + REQUIRE_THROWS(proxy.Call("trimen", {"4500", "5400", "6400"}, -1, PUT)); + REQUIRE_THROWS(proxy.Call("trimen", {}, -1, GET)); + } +} + +// TEST_CASE("threshold"{ + +// }) // TEST_CASE("activate", "[.cmd][.eiger]") { // if (test::type == slsDetectorDefs::EIGER) { diff --git a/slsDetectorSoftware/tests/test-CmdProxy.cpp b/slsDetectorSoftware/tests/test-CmdProxy.cpp index eb59b1b7a..b5b28cc4d 100644 --- a/slsDetectorSoftware/tests/test-CmdProxy.cpp +++ b/slsDetectorSoftware/tests/test-CmdProxy.cpp @@ -21,6 +21,19 @@ TEST_CASE("Unknown command", "[.cmd]") { REQUIRE_THROWS(proxy.Call("vsaevrreavv", {}, -1, PUT)); } +TEST_CASE("type", "[.cmd]"){ + Detector det; + CmdProxy proxy(&det); + auto dt = det.getDetectorType().squash(); + + std::ostringstream oss; + proxy.Call("type", {}, -1, GET, oss); + auto ans = oss.str().erase(0, strlen("type ")); + REQUIRE(ans == sls::ToString(dt) + '\n'); + REQUIRE(dt == test::type); + +} + // TEST_CASE("vchip", "[.cmd]") { // int prev_val = 0; @@ -2884,22 +2897,7 @@ TEST_CASE("stopport", "[.cmd]") { // } // } -// TEST_CASE("trimen", "[.cmd][.eiger]") { -// if (test::type == slsDetectorDefs::EIGER) { -// // require globals for trimen? -// REQUIRE_NOTHROW(multiSlsDetectorClient("trimen 4500 5400 6400", -// PUT)); -// { -// std::ostringstream oss; -// REQUIRE_NOTHROW(multiSlsDetectorClient("0:trimen", GET, nullptr, -// oss)); REQUIRE(oss.str() == "trimen [4500, 5400, 6400]\n"); -// } -// REQUIRE_NOTHROW(multiSlsDetectorClient("threshold 4500 standard", -// PUT)); -// } else { -// REQUIRE_THROWS(multiSlsDetectorClient("trimen", GET)); -// } -// } + // TEST_CASE("trimval", "[.cmd][.eiger]") { // if (test::type == slsDetectorDefs::EIGER) { @@ -2944,49 +2942,7 @@ TEST_CASE("stopport", "[.cmd]") { // } // } -// TEST_CASE("storeinram", "[.cmd][.eiger]") { -// if (test::type == slsDetectorDefs::EIGER) { -// { -// std::ostringstream oss; -// REQUIRE_NOTHROW(multiSlsDetectorClient("storeinram 1", PUT, -// nullptr, oss)); REQUIRE(oss.str() == "storeinram 1\n"); -// } -// { -// std::ostringstream oss; -// REQUIRE_NOTHROW(multiSlsDetectorClient("storeinram", GET, -// nullptr, oss)); REQUIRE(oss.str() == "storeinram 1\n"); -// } -// { -// std::ostringstream oss; -// REQUIRE_NOTHROW(multiSlsDetectorClient("storeinram 0", PUT, -// nullptr, oss)); REQUIRE(oss.str() == "storeinram 0\n"); -// } -// } else { -// REQUIRE_THROWS(multiSlsDetectorClient("storeinram", GET)); -// } -// } -// TEST_CASE("overflow", "[.cmd][.eiger]") { -// if (test::type == slsDetectorDefs::EIGER) { -// { -// std::ostringstream oss; -// REQUIRE_NOTHROW(multiSlsDetectorClient("overflow 1", PUT, -// nullptr, oss)); REQUIRE(oss.str() == "overflow 1\n"); -// } -// { -// std::ostringstream oss; -// REQUIRE_NOTHROW(multiSlsDetectorClient("overflow", GET, nullptr, -// oss)); REQUIRE(oss.str() == "overflow 1\n"); -// } -// { -// std::ostringstream oss; -// REQUIRE_NOTHROW(multiSlsDetectorClient("overflow 0", PUT, -// nullptr, oss)); REQUIRE(oss.str() == "overflow 0\n"); -// } -// } else { -// REQUIRE_THROWS(multiSlsDetectorClient("overflow", GET)); -// } -// } // TEST_CASE("parallel", "[.cmd][.eiger]") { // if (test::type == slsDetectorDefs::EIGER) {