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