artdaq  v3_01_00
artdaqtest::CommandableFragmentGeneratorTest Class Reference

CommandableFragmentGenerator derived class for testing. More...

Inheritance diagram for artdaqtest::CommandableFragmentGeneratorTest:
artdaq::CommandableFragmentGenerator

Public Member Functions

 CommandableFragmentGeneratorTest (const fhicl::ParameterSet &ps)
 CommandableFragmentGeneratorTest Constructor.
 
void setFireCount (size_t count)
 Have getNext_ generate count fragments. More...
 
void setHwFail ()
 Set the hwFail flag.
 
void waitForFrags ()
 Wait for all fragments generated to be read by the CommandableFragmentGenerator More...
 
- Public Member Functions inherited from artdaq::CommandableFragmentGenerator
 CommandableFragmentGenerator ()
 CommandableFragmentGenerator default constructor. More...
 
 CommandableFragmentGenerator (const fhicl::ParameterSet &ps)
 CommandableFragmentGenerator Constructor. More...
 
virtual ~CommandableFragmentGenerator ()
 CommandableFragmentGenerator Destructor. More...
 
void joinThreads ()
 Join any data-taking threads. Should be called when destructing CommandableFragmentGenerator. More...
 
bool getNext (FragmentPtrs &output) overridefinal
 getNext calls either applyRequests or getNext_ to get any data that is ready to be sent to the EventBuilders More...
 
void applyRequestsIgnoredMode (artdaq::FragmentPtrs &frags)
 Create fragments using data buffer for request mode Ignored. Precondition: dataBufferMutex_ and request_mutex_ are locked More...
 
void applyRequestsSingleMode (artdaq::FragmentPtrs &frags)
 Create fragments using data buffer for request mode Single. Precondition: dataBufferMutex_ and request_mutex_ are locked More...
 
void applyRequestsBufferMode (artdaq::FragmentPtrs &frags)
 Create fragments using data buffer for request mode Buffer. Precondition: dataBufferMutex_ and request_mutex_ are locked More...
 
void applyRequestsWindowMode (artdaq::FragmentPtrs &frags)
 Create fragments using data buffer for request mode Window. Precondition: dataBufferMutex_ and request_mutex_ are locked More...
 
bool applyRequests (FragmentPtrs &output)
 See if any requests have been received, and add the corresponding data Fragment objects to the output list. More...
 
bool sendEmptyFragment (FragmentPtrs &frags, size_t sequenceId, std::string desc)
 Send an EmptyFragmentType Fragment. More...
 
void sendEmptyFragments (FragmentPtrs &frags, std::map< Fragment::sequence_id_t, Fragment::timestamp_t > &requests)
 This function is for Buffered and Single request modes, as they can only respond to one data request at a time If the request message seqID > ev_counter, simply send empties until they're equal. More...
 
void startDataThread ()
 Function that launches the data thread (getDataLoop())
 
void startMonitoringThread ()
 Function that launches the monitoring thread (getMonitoringDataLoop())
 
void getDataLoop ()
 When separate_data_thread is set to true, this loop repeatedly calls getNext_ and adds returned Fragment objects to the data buffer, blocking when the data buffer is full.
 
bool waitForDataBufferReady ()
 Wait for the data buffer to drain (dataBufferIsTooLarge returns false), periodically reporting status. More...
 
bool dataBufferIsTooLarge ()
 Test the configured constraints on the data buffer. More...
 
void getDataBufferStats ()
 Calculate the size of the dataBuffer and report appropriate metrics. More...
 
void checkDataBuffer ()
 Perform data buffer pruning operations. If the RequestMode is Single, removes all but the latest Fragment from the data buffer. In Window and Buffer RequestModes, this function discards the oldest Fragment objects until the data buffer is below its size constraints, then also checks for stale Fragments, based on the timestamp of the most recent Fragment.
 
void getMonitoringDataLoop ()
 This function regularly calls checkHWStatus_(), and sets the isHardwareOK flag accordingly.
 
std::vector
< Fragment::fragment_id_t > 
fragmentIDs () override
 Get the list of Fragment IDs handled by this CommandableFragmentGenerator. More...
 
void StartCmd (int run, uint64_t timeout, uint64_t timestamp)
 Start the CommandableFragmentGenerator. More...
 
void StopCmd (uint64_t timeout, uint64_t timestamp)
 Stop the CommandableFragmentGenerator. More...
 
void PauseCmd (uint64_t timeout, uint64_t timestamp)
 Pause the CommandableFragmentGenerator. More...
 
void ResumeCmd (uint64_t timeout, uint64_t timestamp)
 Resume the CommandableFragmentGenerator. More...
 
std::string ReportCmd (std::string const &which="")
 Get a report about a user-specified run-time quantity. More...
 
virtual std::string metricsReportingInstanceName () const
 Get the name used when reporting metrics. More...
 
bool exception () const
 Get the current value of the exception flag. More...
 
virtual bool metaCommand (std::string const &command, std::string const &arg)
 The meta-command is used for implementing user-specific commands in a CommandableFragmentGenerator. More...
 

Protected Member Functions

bool getNext_ (artdaq::FragmentPtrs &frags) override
 Generate data and return it to CommandableFragmentGenerator. More...
 
bool checkHWStatus_ () override
 Returns whether the hwFail flag has not been set. More...
 
void start () override
 Perform start actions. No-Op.
 
void stopNoMutex () override
 Perform immediate stop actions. No-Op.
 
void stop () override
 Perform stop actions. No-Op.
 
void pause () override
 Perform pause actions. No-Op.
 
void resume () override
 Perform resume actions. No-Op.
 
- Protected Member Functions inherited from artdaq::CommandableFragmentGenerator
int run_number () const
 Get the current Run number. More...
 
int subrun_number () const
 Get the current Subrun number. More...
 
uint64_t timeout () const
 Timeout of last command. More...
 
uint64_t timestamp () const
 Timestamp of last command. More...
 
bool should_stop () const
 Get the current value of the should_stop flag. More...
 
bool check_stop ()
 Routine used by applyRequests to make sure that all outstanding requests have been fulfilled before returning. More...
 
int board_id () const
 Gets the current board_id. More...
 
int fragment_id () const
 Get the current Fragment ID, if there is only one. More...
 
size_t ev_counter () const
 Get the current value of the event counter. More...
 
size_t ev_counter_inc (size_t step=1, bool force=false)
 Increment the event counter, if the current RequestMode allows it. More...
 
void set_exception (bool exception)
 Control the exception flag. More...
 
void metricsReportingInstanceName (std::string const &name)
 Sets the name for metrics reporting. More...
 
std::string printMode_ ()
 Return the string representation of the current RequestMode. More...
 
virtual bool getNext_ (FragmentPtrs &output)=0
 
virtual void pauseNoMutex ()
 
virtual std::string report ()
 
virtual std::string reportSpecific (std::string const &)
 

Additional Inherited Members

- Protected Attributes inherited from artdaq::CommandableFragmentGenerator
std::mutex mutex_
 Mutex used to ensure that multiple transition commands do not run at the same time.
 

Detailed Description

CommandableFragmentGenerator derived class for testing.

Definition at line 21 of file CommandableFragmentGenerator_t.cc.

Member Function Documentation

bool artdaqtest::CommandableFragmentGeneratorTest::checkHWStatus_ ( )
inlineoverrideprotectedvirtual

Returns whether the hwFail flag has not been set.

Returns
If hwFail has been set, false, otherwise true

Reimplemented from artdaq::CommandableFragmentGenerator.

Definition at line 46 of file CommandableFragmentGenerator_t.cc.

bool artdaqtest::CommandableFragmentGeneratorTest::getNext_ ( artdaq::FragmentPtrs &  frags)
overrideprotected

Generate data and return it to CommandableFragmentGenerator.

Parameters
fragsFragmentPtrs list that new Fragments should be added to
Returns
True if data was generated

CommandableFragmentGeneratorTest merely default-constructs Fragments, emplacing them on the frags list.

Definition at line 109 of file CommandableFragmentGenerator_t.cc.

void artdaqtest::CommandableFragmentGeneratorTest::setFireCount ( size_t  count)
inline

Have getNext_ generate count fragments.

Parameters
countNumber of fragments to generate

Definition at line 78 of file CommandableFragmentGenerator_t.cc.

void artdaqtest::CommandableFragmentGeneratorTest::waitForFrags ( )
inline

Wait for all fragments generated to be read by the CommandableFragmentGenerator

Definition at line 88 of file CommandableFragmentGenerator_t.cc.


The documentation for this class was generated from the following file: