mirror of
https://github.com/FairRootGroup/FairMQ.git
synced 2025-10-16 01:51:45 +00:00
Add FairMQ tests (PUB-SUB, PUSH-PULL, REQ-REP).
This commit is contained in:
committed by
Mohammad Al-Turany
parent
fbf7dbf2ba
commit
f13bb5995d
47
fairmq/test/pub-sub/FairMQTestPub.cxx
Normal file
47
fairmq/test/pub-sub/FairMQTestPub.cxx
Normal file
@@ -0,0 +1,47 @@
|
||||
/********************************************************************************
|
||||
* Copyright (C) 2014 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH *
|
||||
* *
|
||||
* This software is distributed under the terms of the *
|
||||
* GNU Lesser General Public Licence version 3 (LGPL) version 3, *
|
||||
* copied verbatim in the file "LICENSE" *
|
||||
********************************************************************************/
|
||||
/**
|
||||
* FairMQTestPub.cpp
|
||||
*
|
||||
* @since 2015-09-05
|
||||
* @author A. Rybalchenko
|
||||
*/
|
||||
|
||||
#include <memory> // unique_ptr
|
||||
|
||||
#include "FairMQTestPub.h"
|
||||
#include "FairMQLogger.h"
|
||||
|
||||
FairMQTestPub::FairMQTestPub()
|
||||
{
|
||||
}
|
||||
|
||||
void FairMQTestPub::Run()
|
||||
{
|
||||
std::unique_ptr<FairMQMessage> ready1Msg(fTransportFactory->CreateMessage());
|
||||
fChannels.at("control").at(0).Receive(ready1Msg);
|
||||
std::unique_ptr<FairMQMessage> ready2Msg(fTransportFactory->CreateMessage());
|
||||
fChannels.at("control").at(0).Receive(ready2Msg);
|
||||
|
||||
std::unique_ptr<FairMQMessage> msg(fTransportFactory->CreateMessage());
|
||||
fChannels.at("data").at(0).Send(msg);
|
||||
|
||||
std::unique_ptr<FairMQMessage> ack1Msg(fTransportFactory->CreateMessage());
|
||||
std::unique_ptr<FairMQMessage> ack2Msg(fTransportFactory->CreateMessage());
|
||||
if (fChannels.at("control").at(0).Receive(ack1Msg) >= 0)
|
||||
{
|
||||
if (fChannels.at("control").at(0).Receive(ack2Msg) >= 0)
|
||||
{
|
||||
LOG(INFO) << "PUB-SUB test successfull";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
FairMQTestPub::~FairMQTestPub()
|
||||
{
|
||||
}
|
30
fairmq/test/pub-sub/FairMQTestPub.h
Normal file
30
fairmq/test/pub-sub/FairMQTestPub.h
Normal file
@@ -0,0 +1,30 @@
|
||||
/********************************************************************************
|
||||
* Copyright (C) 2014 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH *
|
||||
* *
|
||||
* This software is distributed under the terms of the *
|
||||
* GNU Lesser General Public Licence version 3 (LGPL) version 3, *
|
||||
* copied verbatim in the file "LICENSE" *
|
||||
********************************************************************************/
|
||||
/**
|
||||
* FairMQTestPub.h
|
||||
*
|
||||
* @since 2015-09-05
|
||||
* @author A. Rybalchenko
|
||||
*/
|
||||
|
||||
#ifndef FAIRMQTESTPUB_H_
|
||||
#define FAIRMQTESTPUB_H_
|
||||
|
||||
#include "FairMQDevice.h"
|
||||
|
||||
class FairMQTestPub : public FairMQDevice
|
||||
{
|
||||
public:
|
||||
FairMQTestPub();
|
||||
virtual ~FairMQTestPub();
|
||||
|
||||
protected:
|
||||
virtual void Run();
|
||||
};
|
||||
|
||||
#endif /* FAIRMQTESTPUB_H_ */
|
43
fairmq/test/pub-sub/FairMQTestSub.cxx
Normal file
43
fairmq/test/pub-sub/FairMQTestSub.cxx
Normal file
@@ -0,0 +1,43 @@
|
||||
/********************************************************************************
|
||||
* Copyright (C) 2014 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH *
|
||||
* *
|
||||
* This software is distributed under the terms of the *
|
||||
* GNU Lesser General Public Licence version 3 (LGPL) version 3, *
|
||||
* copied verbatim in the file "LICENSE" *
|
||||
********************************************************************************/
|
||||
/**
|
||||
* FairMQTestSub.cxx
|
||||
*
|
||||
* @since 2015-09-05
|
||||
* @author A. Rybalchenko
|
||||
*/
|
||||
|
||||
#include <memory> // unique_ptr
|
||||
|
||||
#include "FairMQTestSub.h"
|
||||
#include "FairMQLogger.h"
|
||||
|
||||
FairMQTestSub::FairMQTestSub()
|
||||
{
|
||||
}
|
||||
|
||||
void FairMQTestSub::Run()
|
||||
{
|
||||
std::unique_ptr<FairMQMessage> readyMsg(fTransportFactory->CreateMessage());
|
||||
fChannels.at("control").at(0).Send(readyMsg);
|
||||
|
||||
std::unique_ptr<FairMQMessage> msg(fTransportFactory->CreateMessage());
|
||||
if (fChannels.at("data").at(0).Receive(msg) >= 0)
|
||||
{
|
||||
std::unique_ptr<FairMQMessage> ackMsg(fTransportFactory->CreateMessage());
|
||||
fChannels.at("control").at(0).Send(ackMsg);
|
||||
}
|
||||
else
|
||||
{
|
||||
LOG(ERROR) << "Test failed: size of the received message doesn't match. Expected: 0, Received: " << msg->GetSize();
|
||||
}
|
||||
}
|
||||
|
||||
FairMQTestSub::~FairMQTestSub()
|
||||
{
|
||||
}
|
30
fairmq/test/pub-sub/FairMQTestSub.h
Normal file
30
fairmq/test/pub-sub/FairMQTestSub.h
Normal file
@@ -0,0 +1,30 @@
|
||||
/********************************************************************************
|
||||
* Copyright (C) 2014 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH *
|
||||
* *
|
||||
* This software is distributed under the terms of the *
|
||||
* GNU Lesser General Public Licence version 3 (LGPL) version 3, *
|
||||
* copied verbatim in the file "LICENSE" *
|
||||
********************************************************************************/
|
||||
/**
|
||||
* FairMQTestSub.h
|
||||
*
|
||||
* @since 2015-09-05
|
||||
* @author A. Rybalchenko
|
||||
*/
|
||||
|
||||
#ifndef FAIRMQTESTSUB_H_
|
||||
#define FAIRMQTESTSUB_H_
|
||||
|
||||
#include "FairMQDevice.h"
|
||||
|
||||
class FairMQTestSub : public FairMQDevice
|
||||
{
|
||||
public:
|
||||
FairMQTestSub();
|
||||
virtual ~FairMQTestSub();
|
||||
|
||||
protected:
|
||||
virtual void Run();
|
||||
};
|
||||
|
||||
#endif /* FAIRMQTESTSUB_H_ */
|
65
fairmq/test/pub-sub/runTestPub.cxx
Normal file
65
fairmq/test/pub-sub/runTestPub.cxx
Normal file
@@ -0,0 +1,65 @@
|
||||
/********************************************************************************
|
||||
* Copyright (C) 2014 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH *
|
||||
* *
|
||||
* This software is distributed under the terms of the *
|
||||
* GNU Lesser General Public Licence version 3 (LGPL) version 3, *
|
||||
* copied verbatim in the file "LICENSE" *
|
||||
********************************************************************************/
|
||||
/**
|
||||
* runTestPub.cxx
|
||||
*
|
||||
* @since 2015-09-05
|
||||
* @author A. Rybalchenko
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include "FairMQLogger.h"
|
||||
#include "FairMQTestPub.h"
|
||||
|
||||
#ifdef NANOMSG
|
||||
#include "FairMQTransportFactoryNN.h"
|
||||
#else
|
||||
#include "FairMQTransportFactoryZMQ.h"
|
||||
#endif
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
FairMQTestPub testPub;
|
||||
testPub.CatchSignals();
|
||||
|
||||
#ifdef NANOMSG
|
||||
testPub.SetTransport(new FairMQTransportFactoryNN());
|
||||
#else
|
||||
testPub.SetTransport(new FairMQTransportFactoryZMQ());
|
||||
#endif
|
||||
|
||||
testPub.SetProperty(FairMQTestPub::Id, "testPub");
|
||||
|
||||
FairMQChannel controlChannel("pull", "bind", "tcp://127.0.0.1:5555");
|
||||
controlChannel.UpdateRateLogging(0);
|
||||
testPub.fChannels["control"].push_back(controlChannel);
|
||||
|
||||
FairMQChannel pubChannel("pub", "bind", "tcp://127.0.0.1:5556");
|
||||
pubChannel.UpdateRateLogging(0);
|
||||
testPub.fChannels["data"].push_back(pubChannel);
|
||||
|
||||
testPub.ChangeState("INIT_DEVICE");
|
||||
testPub.WaitForEndOfState("INIT_DEVICE");
|
||||
|
||||
testPub.ChangeState("INIT_TASK");
|
||||
testPub.WaitForEndOfState("INIT_TASK");
|
||||
|
||||
testPub.ChangeState("RUN");
|
||||
testPub.WaitForEndOfState("RUN");
|
||||
|
||||
testPub.ChangeState("RESET_TASK");
|
||||
testPub.WaitForEndOfState("RESET_TASK");
|
||||
|
||||
testPub.ChangeState("RESET_DEVICE");
|
||||
testPub.WaitForEndOfState("RESET_DEVICE");
|
||||
|
||||
testPub.ChangeState("END");
|
||||
|
||||
return 0;
|
||||
}
|
65
fairmq/test/pub-sub/runTestSub.cxx
Normal file
65
fairmq/test/pub-sub/runTestSub.cxx
Normal file
@@ -0,0 +1,65 @@
|
||||
/********************************************************************************
|
||||
* Copyright (C) 2014 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH *
|
||||
* *
|
||||
* This software is distributed under the terms of the *
|
||||
* GNU Lesser General Public Licence version 3 (LGPL) version 3, *
|
||||
* copied verbatim in the file "LICENSE" *
|
||||
********************************************************************************/
|
||||
/**
|
||||
* runTestSub.cxx
|
||||
*
|
||||
* @since 2015-09-05
|
||||
* @author A. Rybalchenko
|
||||
*/
|
||||
|
||||
#include <string>
|
||||
|
||||
#include "FairMQLogger.h"
|
||||
#include "FairMQTestSub.h"
|
||||
|
||||
#ifdef NANOMSG
|
||||
#include "FairMQTransportFactoryNN.h"
|
||||
#else
|
||||
#include "FairMQTransportFactoryZMQ.h"
|
||||
#endif
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
FairMQTestSub testSub;
|
||||
testSub.CatchSignals();
|
||||
|
||||
#ifdef NANOMSG
|
||||
testSub.SetTransport(new FairMQTransportFactoryNN());
|
||||
#else
|
||||
testSub.SetTransport(new FairMQTransportFactoryZMQ());
|
||||
#endif
|
||||
|
||||
testSub.SetProperty(FairMQTestSub::Id, "testSub_" + std::to_string(getpid()));
|
||||
|
||||
FairMQChannel controlChannel("push", "connect", "tcp://127.0.0.1:5555");
|
||||
controlChannel.UpdateRateLogging(0);
|
||||
testSub.fChannels["control"].push_back(controlChannel);
|
||||
|
||||
FairMQChannel subChannel("sub", "connect", "tcp://127.0.0.1:5556");
|
||||
subChannel.UpdateRateLogging(0);
|
||||
testSub.fChannels["data"].push_back(subChannel);
|
||||
|
||||
testSub.ChangeState("INIT_DEVICE");
|
||||
testSub.WaitForEndOfState("INIT_DEVICE");
|
||||
|
||||
testSub.ChangeState("INIT_TASK");
|
||||
testSub.WaitForEndOfState("INIT_TASK");
|
||||
|
||||
testSub.ChangeState("RUN");
|
||||
testSub.WaitForEndOfState("RUN");
|
||||
|
||||
testSub.ChangeState("RESET_TASK");
|
||||
testSub.WaitForEndOfState("RESET_TASK");
|
||||
|
||||
testSub.ChangeState("RESET_DEVICE");
|
||||
testSub.WaitForEndOfState("RESET_DEVICE");
|
||||
|
||||
testSub.ChangeState("END");
|
||||
|
||||
return 0;
|
||||
}
|
Reference in New Issue
Block a user