#ifndef NXSTESTHUB_H #define NXSTESTHUB_H #include "util/rsthreads.h" #include "gxs/rsgxsnetservice.h" #include "nxstestscenario.h" // it would probably be useful if the test scenario // provided the net dummy managers // hence one could envision synchronising between an arbitrary number // of peers class NxsNetDummyMgr : public RsNxsNetMgr { public: NxsNetDummyMgr(RsPeerId ownId, std::set peers) : mOwnId(ownId), mPeers(peers) { } const RsPeerId& getOwnId() { return mOwnId; } void getOnlineList(uint32_t serviceId, std::set& ssl_peers) { ssl_peers = mPeers; } private: RsPeerId mOwnId; std::set mPeers; }; /*! * Testing of nxs services occurs through use of two services * When a service sends this class can interrogate the send and the receives of * * NxsScenario stores the type of synchronisation to be tested * Operation: * First NxsTestHub needs to be instantiated with a test scenario * * The scenario contains two databases to be used on the communicating pair of RsGxsNetService instances (net instances) * The Test hub has a ticker service for the p3Services which allows the netservices to search what groups and messages they have * and synchronise according to their subscriptions. The default is to subscribe to all groups held by other peer * The threads for both net instances are started which begins their processing of transactions */ class NxsTestHub : public RsThread { public: /*! * This construct the test hub * for a give scenario in mind */ NxsTestHub(NxsTestScenario*, std::set& peers); /*! * */ virtual ~NxsTestHub(); /*! * To be called only after this thread has * been shutdown */ bool testsPassed(); /*! * This simulates the p3Service ticker and calls both gxs net services tick methods * Also enables transport of messages between both services */ void run(); void cleanUp(); private: std::map mServices; std::map mNetServices; std::map mObservers; std::map > mPeerQueues; NxsTestScenario *mTestScenario; }; #endif // NXSTESTHUB_H