mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-26 08:10:02 +02:00
datastream help, versions fix for eiger (hardwareversion not impl), fix for tests
This commit is contained in:
parent
ad21d76af2
commit
34a43bcb67
@ -274,12 +274,13 @@ std::string CmdProxy::Versions(int action) {
|
||||
if (!args.empty()) {
|
||||
WrongNumberOfParameters(0);
|
||||
}
|
||||
bool eiger = (det->getDetectorType().squash() == defs::EIGER);
|
||||
auto t = det->getFirmwareVersion(std::vector<int>{det_id});
|
||||
os << "\nType : " << OutString(det->getDetectorType())
|
||||
<< "\nRelease : " << det->getPackageVersion() << std::hex
|
||||
<< "\nClient : " << det->getClientVersion();
|
||||
os << "\nFirmware : ";
|
||||
if (det->getDetectorType().squash() == defs::EIGER) {
|
||||
if (eiger) {
|
||||
os << OutString(t);
|
||||
} else {
|
||||
os << OutStringHex(t);
|
||||
@ -287,6 +288,7 @@ std::string CmdProxy::Versions(int action) {
|
||||
os << "\nServer : "
|
||||
<< OutString(
|
||||
det->getDetectorServerVersion(std::vector<int>{det_id}));
|
||||
if (!eiger)
|
||||
os << "\nHardware : "
|
||||
<< OutString(det->getHardwareVersion(std::vector<int>{det_id}));
|
||||
os << "\nKernel : "
|
||||
|
@ -1599,7 +1599,7 @@ class CmdProxy {
|
||||
"data from detector. Default: 1.\n\tAlso enables second interface in "
|
||||
"receiver for listening (Writes a file per interface if writing "
|
||||
"enabled).\n\tAlso restarts client and receiver zmq sockets if zmq "
|
||||
"streaming enabled.");
|
||||
"streaming enabled.\n\t[Eiger] Only gets with result 2.");
|
||||
|
||||
INTEGER_COMMAND_VEC_ID(
|
||||
selinterface, getSelectedUDPInterface, selectUDPInterface,
|
||||
|
@ -235,7 +235,7 @@ TEST_CASE("Setting and reading back EIGER dacs", "[.cmd][.dacs]") {
|
||||
|
||||
/* Network Configuration (Detector<->Receiver) */
|
||||
|
||||
TEST_CASE("txndelay_left", "[.cmd]") {
|
||||
TEST_CASE("txdelay_left", "[.cmd]") {
|
||||
Detector det;
|
||||
CmdProxy proxy(&det);
|
||||
auto det_type = det.getDetectorType().squash();
|
||||
@ -243,20 +243,20 @@ TEST_CASE("txndelay_left", "[.cmd]") {
|
||||
auto prev_val = det.getTransmissionDelayLeft();
|
||||
{
|
||||
std::ostringstream oss1, oss2;
|
||||
proxy.Call("txndelay_left", {"5000"}, -1, PUT, oss1);
|
||||
REQUIRE(oss1.str() == "txndelay_left 5000\n");
|
||||
proxy.Call("txndelay_left", {}, -1, GET, oss2);
|
||||
REQUIRE(oss2.str() == "txndelay_left 5000\n");
|
||||
proxy.Call("txdelay_left", {"5000"}, -1, PUT, oss1);
|
||||
REQUIRE(oss1.str() == "txdelay_left 5000\n");
|
||||
proxy.Call("txdelay_left", {}, -1, GET, oss2);
|
||||
REQUIRE(oss2.str() == "txdelay_left 5000\n");
|
||||
}
|
||||
for (int i = 0; i != det.size(); ++i) {
|
||||
det.setTransmissionDelayLeft(prev_val[i]);
|
||||
}
|
||||
} else {
|
||||
REQUIRE_THROWS(proxy.Call("txndelay_left", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("txdelay_left", {}, -1, GET));
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE("txndelay_right", "[.cmd]") {
|
||||
TEST_CASE("txdelay_right", "[.cmd]") {
|
||||
Detector det;
|
||||
CmdProxy proxy(&det);
|
||||
auto det_type = det.getDetectorType().squash();
|
||||
@ -264,16 +264,16 @@ TEST_CASE("txndelay_right", "[.cmd]") {
|
||||
auto prev_val = det.getTransmissionDelayRight();
|
||||
{
|
||||
std::ostringstream oss1, oss2;
|
||||
proxy.Call("txndelay_right", {"5000"}, -1, PUT, oss1);
|
||||
REQUIRE(oss1.str() == "txndelay_right 5000\n");
|
||||
proxy.Call("txndelay_right", {}, -1, GET, oss2);
|
||||
REQUIRE(oss2.str() == "txndelay_right 5000\n");
|
||||
proxy.Call("txdelay_right", {"5000"}, -1, PUT, oss1);
|
||||
REQUIRE(oss1.str() == "txdelay_right 5000\n");
|
||||
proxy.Call("txdelay_right", {}, -1, GET, oss2);
|
||||
REQUIRE(oss2.str() == "txdelay_right 5000\n");
|
||||
}
|
||||
for (int i = 0; i != det.size(); ++i) {
|
||||
det.setTransmissionDelayRight(prev_val[i]);
|
||||
}
|
||||
} else {
|
||||
REQUIRE_THROWS(proxy.Call("txndelay_right", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("txdelay_right", {}, -1, GET));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -98,38 +98,6 @@ TEST_CASE("Setting and reading back Jungfrau dacs", "[.cmd][.dacs]") {
|
||||
|
||||
/* Network Configuration (Detector<->Receiver) */
|
||||
|
||||
TEST_CASE("numinterfaces", "[.cmd]") {
|
||||
Detector det;
|
||||
CmdProxy proxy(&det);
|
||||
auto det_type = det.getDetectorType().squash();
|
||||
if (det_type == defs::JUNGFRAU) {
|
||||
auto prev_val = det.getNumberofUDPInterfaces().tsquash(
|
||||
"inconsistent numinterfaces to test");
|
||||
{
|
||||
std::ostringstream oss;
|
||||
proxy.Call("numinterfaces", {"2"}, -1, PUT, oss);
|
||||
REQUIRE(oss.str() == "numinterfaces 2\n");
|
||||
}
|
||||
{
|
||||
std::ostringstream oss;
|
||||
proxy.Call("numinterfaces", {"1"}, -1, PUT, oss);
|
||||
REQUIRE(oss.str() == "numinterfaces 1\n");
|
||||
}
|
||||
{
|
||||
std::ostringstream oss;
|
||||
proxy.Call("numinterfaces", {}, -1, GET, oss);
|
||||
REQUIRE(oss.str() == "numinterfaces 1\n");
|
||||
}
|
||||
det.setNumberofUDPInterfaces(prev_val);
|
||||
} else {
|
||||
std::ostringstream oss;
|
||||
proxy.Call("numinterfaces", {}, -1, GET, oss);
|
||||
REQUIRE(oss.str() == "numinterfaces 1\n");
|
||||
REQUIRE_THROWS(proxy.Call("numinterfaces", {"1"}, -1, PUT));
|
||||
}
|
||||
REQUIRE_THROWS(proxy.Call("numinterfaces", {"3"}, -1, PUT));
|
||||
REQUIRE_THROWS(proxy.Call("numinterfaces", {"0"}, -1, PUT));
|
||||
}
|
||||
|
||||
TEST_CASE("selinterface", "[.cmd]") {
|
||||
Detector det;
|
||||
|
@ -4,6 +4,7 @@
|
||||
#include "catch.hpp"
|
||||
#include "sls/Detector.h"
|
||||
#include "sls/sls_detector_defs.h"
|
||||
#include "sls/Version.h"
|
||||
#include <sstream>
|
||||
|
||||
#include "sls/versionAPI.h"
|
||||
@ -26,15 +27,15 @@ TEST_CASE("rx_version", "[.cmd][.rx]") {
|
||||
CmdProxy proxy(&det);
|
||||
std::ostringstream oss;
|
||||
proxy.Call("rx_version", {}, -1, GET, oss);
|
||||
sls::Version v(APIRECEIVER);
|
||||
std::ostringstream vs;
|
||||
vs << "rx_version 0x" << std::hex << APIRECEIVER << '\n';
|
||||
vs << "rx_version " << v.concise() << '\n';
|
||||
REQUIRE(oss.str() == vs.str());
|
||||
|
||||
REQUIRE_THROWS(proxy.Call("rx_version", {"0"}, -1, PUT));
|
||||
}
|
||||
|
||||
/* acquisition */
|
||||
|
||||
TEST_CASE("rx_start", "[.cmd][.rx]") {
|
||||
Detector det;
|
||||
CmdProxy proxy(&det);
|
||||
@ -128,6 +129,9 @@ TEST_CASE("rx_missingpackets", "[.cmd][.rx]") {
|
||||
auto prev_val = det.getFileWrite();
|
||||
det.setFileWrite(false); // avoid writing or error on file creation
|
||||
CmdProxy proxy(&det);
|
||||
auto prev_frames =
|
||||
det.getNumberOfFrames().tsquash("inconsistent #frames in test");
|
||||
det.setNumberOfFrames(100);
|
||||
{
|
||||
// some missing packets
|
||||
det.startReceiver();
|
||||
@ -144,6 +148,7 @@ TEST_CASE("rx_missingpackets", "[.cmd][.rx]") {
|
||||
{
|
||||
// 0 missing packets (takes into account that acquisition is stopped)
|
||||
det.startReceiver();
|
||||
det.startDetector();
|
||||
det.stopDetector();
|
||||
det.stopReceiver();
|
||||
std::ostringstream oss;
|
||||
@ -337,6 +342,7 @@ TEST_CASE("rx_padding", "[.cmd][.rx]") {
|
||||
}
|
||||
|
||||
TEST_CASE("rx_udpsocksize", "[.cmd][.rx]") {
|
||||
//exit(-1);
|
||||
Detector det;
|
||||
CmdProxy proxy(&det);
|
||||
int64_t prev_val = det.getRxUDPSocketBufferSize().tsquash(
|
||||
|
@ -117,8 +117,15 @@ TEST_CASE("detectorserverversion", "[.cmd]") {
|
||||
TEST_CASE("hardwareversion", "[.cmd]") {
|
||||
Detector det;
|
||||
CmdProxy proxy(&det);
|
||||
REQUIRE_NOTHROW(proxy.Call("hardwareversion", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("hardwareversion", {"0"}, -1, PUT));
|
||||
auto det_type = det.getDetectorType().squash();
|
||||
if (det_type != defs::EIGER) {
|
||||
REQUIRE_NOTHROW(proxy.Call("hardwareversion", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("hardwareversion", {"0"}, -1, PUT));
|
||||
} else {
|
||||
REQUIRE_THROWS(proxy.Call("hardwareversion", {"0"}, -1, PUT));
|
||||
REQUIRE_THROWS(proxy.Call("hardwareversion", {}, -1, GET));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE("kernelversion", "[.cmd]") {
|
||||
@ -2382,6 +2389,46 @@ TEST_CASE("scanerrmsg", "[.cmd]") {
|
||||
|
||||
/* Network Configuration (Detector<->Receiver) */
|
||||
|
||||
TEST_CASE("numinterfaces", "[.cmd]") {
|
||||
Detector det;
|
||||
CmdProxy proxy(&det);
|
||||
auto det_type = det.getDetectorType().squash();
|
||||
if (det_type == defs::JUNGFRAU) {
|
||||
auto prev_val = det.getNumberofUDPInterfaces().tsquash(
|
||||
"inconsistent numinterfaces to test");
|
||||
{
|
||||
std::ostringstream oss;
|
||||
proxy.Call("numinterfaces", {"2"}, -1, PUT, oss);
|
||||
REQUIRE(oss.str() == "numinterfaces 2\n");
|
||||
}
|
||||
{
|
||||
std::ostringstream oss;
|
||||
proxy.Call("numinterfaces", {"1"}, -1, PUT, oss);
|
||||
REQUIRE(oss.str() == "numinterfaces 1\n");
|
||||
}
|
||||
{
|
||||
std::ostringstream oss;
|
||||
proxy.Call("numinterfaces", {}, -1, GET, oss);
|
||||
REQUIRE(oss.str() == "numinterfaces 1\n");
|
||||
}
|
||||
det.setNumberofUDPInterfaces(prev_val);
|
||||
} else if (det_type == defs::EIGER) {
|
||||
REQUIRE_THROWS(proxy.Call("numinterfaces", {"1"}, -1, PUT));
|
||||
{
|
||||
std::ostringstream oss;
|
||||
proxy.Call("numinterfaces", {}, -1, GET, oss);
|
||||
REQUIRE(oss.str() == "numinterfaces 2\n");
|
||||
}
|
||||
} else {
|
||||
std::ostringstream oss;
|
||||
proxy.Call("numinterfaces", {}, -1, GET, oss);
|
||||
REQUIRE(oss.str() == "numinterfaces 1\n");
|
||||
REQUIRE_THROWS(proxy.Call("numinterfaces", {"1"}, -1, PUT));
|
||||
}
|
||||
REQUIRE_THROWS(proxy.Call("numinterfaces", {"3"}, -1, PUT));
|
||||
REQUIRE_THROWS(proxy.Call("numinterfaces", {"0"}, -1, PUT));
|
||||
}
|
||||
|
||||
TEST_CASE("udp_srcip", "[.cmd]") {
|
||||
Detector det;
|
||||
CmdProxy proxy(&det);
|
||||
@ -2664,7 +2711,7 @@ TEST_CASE("flowcontrol10g", "[.cmd]") {
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE("txndelay_frame", "[.cmd]") {
|
||||
TEST_CASE("txdelay_frame", "[.cmd]") {
|
||||
Detector det;
|
||||
CmdProxy proxy(&det);
|
||||
auto det_type = det.getDetectorType().squash();
|
||||
@ -2678,16 +2725,16 @@ TEST_CASE("txndelay_frame", "[.cmd]") {
|
||||
std::string sval = std::to_string(val);
|
||||
{
|
||||
std::ostringstream oss1, oss2;
|
||||
proxy.Call("txndelay_frame", {sval}, -1, PUT, oss1);
|
||||
REQUIRE(oss1.str() == "txndelay_frame " + sval + "\n");
|
||||
proxy.Call("txndelay_frame", {}, -1, GET, oss2);
|
||||
REQUIRE(oss2.str() == "txndelay_frame " + sval + "\n");
|
||||
proxy.Call("txdelay_frame", {sval}, -1, PUT, oss1);
|
||||
REQUIRE(oss1.str() == "txdelay_frame " + sval + "\n");
|
||||
proxy.Call("txdelay_frame", {}, -1, GET, oss2);
|
||||
REQUIRE(oss2.str() == "txdelay_frame " + sval + "\n");
|
||||
}
|
||||
for (int i = 0; i != det.size(); ++i) {
|
||||
det.setTransmissionDelayFrame(prev_val[i]);
|
||||
}
|
||||
} else {
|
||||
REQUIRE_THROWS(proxy.Call("txndelay_frame", {}, -1, GET));
|
||||
REQUIRE_THROWS(proxy.Call("txdelay_frame", {}, -1, GET));
|
||||
}
|
||||
}
|
||||
|
||||
@ -2721,11 +2768,11 @@ TEST_CASE("txdelay", "[.cmd]") {
|
||||
for (int i = 0; i != det.size(); ++i) {
|
||||
if (eiger) {
|
||||
REQUIRE(det.getTransmissionDelayLeft({i}).squash(-1) ==
|
||||
(3 * i * val));
|
||||
(2 * i * val));
|
||||
REQUIRE(det.getTransmissionDelayRight({i}).squash(-1) ==
|
||||
((3 * i + 1) * val));
|
||||
((2 * i + 1) * val));
|
||||
REQUIRE(det.getTransmissionDelayFrame({i}).squash(-1) ==
|
||||
((3 * i + 2) * val));
|
||||
(2 * det.size() * val));
|
||||
} else {
|
||||
REQUIRE(det.getTransmissionDelayFrame({i}).squash(-1) ==
|
||||
(i * val));
|
||||
|
Loading…
x
Reference in New Issue
Block a user