mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2026-08-06 19:22:27 +02:00
Build and Deploy on local RHEL9 / build (push) Successful in 2m13s
Build on RHEL9 docker image / build (push) Successful in 3m53s
Build and Deploy on local RHEL8 / build (push) Successful in 4m58s
Build on RHEL8 docker image / build (push) Successful in 5m47s
Run Simulator Tests on local RHEL9 / build (push) Successful in 18m55s
Run Simulator Tests on local RHEL8 / build (push) Successful in 22m26s
- changed
- command from `datastream` to `udp_datastream` to be more specific
- Detector API:
- setNumberofUDPInterfaces(pos) =>setNumberofUDPInterfaces() # no position anymore
- getDataStream(portPosition, pos) =>getUDPDataStream(portPosition, pos)
- setDataStream(portPosition, pos) => setUDPDataStream(portPosition) # no position anymore
- modified the dataprocessing thread:
- if gui or call back, start zmq processing (connecting sockets) before starting receiver (disabled ports sends dummy that the client zmq sockets are not ready for)
- if only progress, starting progress processing thread after startReceiver
-
- added
- Detector API:
- getRxDisabledUDPPortIndices()
- getPortPositionList()
- allow disabling/enabling udp interface in receiver for Jungfrua/Moench when both udp interfaces is enabled (This is to go fast, where only one half of the module matters)
- write ports type and disabled ports to master file (tests for it as well)
- tests for python commands as well
- datastream command to deprecated commands
- refactored tests to make the new parameters fit
* first draft of disabling data port at the receiver side. Todo: master file and stream for gui to use
* updated help in command
* formatting
* md5 unchanged
* fix test, check port position for detector type
* wip, udp port enable metadata in client, to:receiver, zmq streaming
* wip, master attributes
* wip, imple=> save only disabled ports with port index, 1 interface, is empty
* works in file. still needs refactoring
* updated writer versions
* udp ports type pass, disabled with api yet
* fixed disabled ports meta data as well
* fixed in developer via other PR
* renamed.more intuitive
* fix in gui that wont wait for disabled ports
* added tests for master file
* extra tests
* move the master fiel tests into its own tests with the disable marker for github tests
* refactoring
* python test
* more intuitive and doc
* release notes
* example for python
* back to before
* minor documentation fix and sending nports unnecessarily for getRxUDPPortDisableMetadata
* doc
* review fixes, 1. using std::array instead of vector, 2. moving udp_datastream command testing with different values into master attributes testing file because we test the master file
* minor
* review: update help
* progress printed before assigned
* try catch inside hdf5
* auto generated code for CLI and formatting
* missing packets should not be checked at github workflow level
* formatting
* improved python doc for udp_datastream help
* indent doc python done
67 lines
2.3 KiB
C++
67 lines
2.3 KiB
C++
// SPDX-License-Identifier: LGPL-3.0-or-other
|
|
// Copyright (C) 2021 Contributors to the SLS Detector Package
|
|
#pragma once
|
|
|
|
#include "checks/MasterFileChecks.h"
|
|
#include "sls/sls_detector_defs.h"
|
|
|
|
#include <chrono>
|
|
#include <filesystem>
|
|
#include <optional>
|
|
#include <thread>
|
|
|
|
namespace sls {
|
|
|
|
namespace acq = sls::test::acquire;
|
|
namespace mf = sls::test::master_file;
|
|
namespace checks = sls::test::checks;
|
|
|
|
void test_valid_port_caller(const std::string &command,
|
|
const std::vector<std::string> &arguments,
|
|
int detector_id, int action);
|
|
|
|
void test_dac_caller(slsDetectorDefs::dacIndex index,
|
|
const std::string &dacname, int dacvalue, bool mV = false);
|
|
void test_onchip_dac_caller(slsDetectorDefs::dacIndex index,
|
|
const std::string &dacname, int dacvalue);
|
|
|
|
/**
|
|
* Helper function to run an acquisition and check the master file (both binary
|
|
* and hdf5) for expected values. The function takes in a lambda that is called
|
|
* with the master filechecker object to perform checks on the master file. The
|
|
* acquisition is run with default acquisition and file states, but these can be
|
|
* modified within the lambda if needed. This version has the master file
|
|
* checker object created within the function instead of using a helper
|
|
* function, to allow for more flexibility in handling exceptions (especially
|
|
* HDF5 exceptions) and logging.
|
|
*/
|
|
template <typename F>
|
|
void test_run_with_master_file_checker(Detector &det, F f) {
|
|
|
|
auto acq_state = acq::default_acquisition_state();
|
|
auto file_state = acq::default_file_state();
|
|
std::array<defs::fileFormat, 2> formats = {defs::BINARY, defs::HDF5};
|
|
|
|
for (const auto &format : formats) {
|
|
file_state.file_format = format;
|
|
acq::run(det, acq_state, file_state);
|
|
std::string fname = acq::get_master_file_name(file_state);
|
|
if (format == defs::HDF5) {
|
|
#ifdef HDF5C
|
|
try {
|
|
mf::Checker<mf::H5Context> checker(fname);
|
|
f(det, acq_state, file_state, checker);
|
|
} catch (H5::Exception &e) {
|
|
LOG(logERROR) << "HDF5 error: " << e.getDetailMsg();
|
|
throw;
|
|
}
|
|
#endif
|
|
} else {
|
|
mf::Checker<mf::JsonContext> checker(fname);
|
|
f(det, acq_state, file_state, checker);
|
|
}
|
|
}
|
|
}
|
|
|
|
} // namespace sls
|