summaryrefslogtreecommitdiff
path: root/p2pvr/daemon
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2015-02-03 21:06:10 +0000
committerDan Goodliffe <dan@randomdan.homeip.net>2015-06-13 17:29:50 +0100
commit40a57d1dda631b191a6a2614a99322577e0fc620 (patch)
tree7aa3207d3526cbfe5721d71528117ea187cb7e03 /p2pvr/daemon
parentDon't use the local adapter reference before it's initialized (diff)
downloadp2pvr-40a57d1dda631b191a6a2614a99322577e0fc620.tar.bz2
p2pvr-40a57d1dda631b191a6a2614a99322577e0fc620.tar.xz
p2pvr-40a57d1dda631b191a6a2614a99322577e0fc620.zip
Add basics for tests over streaming and recording
Diffstat (limited to 'p2pvr/daemon')
-rw-r--r--p2pvr/daemon/Jamfile.jam1
-rw-r--r--p2pvr/daemon/unittests/Jamfile.jam23
-rw-r--r--p2pvr/daemon/unittests/testRecording.cpp107
3 files changed, 131 insertions, 0 deletions
diff --git a/p2pvr/daemon/Jamfile.jam b/p2pvr/daemon/Jamfile.jam
index e1b8386..a2a20c0 100644
--- a/p2pvr/daemon/Jamfile.jam
+++ b/p2pvr/daemon/Jamfile.jam
@@ -28,6 +28,7 @@ lib p2pvrdaemon :
: :
<include>.
<library>../ice//p2pvrice
+ <library>../lib//p2pvrlib
<library>slicer
;
diff --git a/p2pvr/daemon/unittests/Jamfile.jam b/p2pvr/daemon/unittests/Jamfile.jam
index 28d4fbd..0f0094c 100644
--- a/p2pvr/daemon/unittests/Jamfile.jam
+++ b/p2pvr/daemon/unittests/Jamfile.jam
@@ -70,6 +70,29 @@ run
: testMaint ;
run
+ testRecording.cpp mockDevices.cpp mockScheduler.cpp
+ : :
+ ../../datasources/schema.sql
+ datasources/data.sql
+ :
+ <define>BOOST_TEST_DYN_LINK
+ <library>../..//p2common
+ <library>../..//p2basics
+ <library>../..//p2lib
+ <library>../..//p2xml
+ <library>../..//p2ut
+ <library>..//p2pvrdaemon
+ <library>../../devices//p2pvrMockTuner
+ <library>IceUtil
+ <library>Ice
+ <library>boost_system
+ <library>boost_filesystem
+ <library>testCommon
+ <library>../..//boost_utf
+ <define>ROOT=\"$(me)\"
+ : testRecording ;
+
+run
testErrorHandling.cpp mockDevices.cpp mockScheduler.cpp
: :
../../datasources/schema.sql
diff --git a/p2pvr/daemon/unittests/testRecording.cpp b/p2pvr/daemon/unittests/testRecording.cpp
new file mode 100644
index 0000000..48b0990
--- /dev/null
+++ b/p2pvr/daemon/unittests/testRecording.cpp
@@ -0,0 +1,107 @@
+#define BOOST_TEST_MODULE Recording
+#include <boost/test/unit_test.hpp>
+#include <boost/filesystem/operations.hpp>
+#include <testOptionsSource.h>
+#include <Ice/ObjectAdapter.h>
+#include <Ice/Service.h>
+#include <scopeObject.h>
+#include <maintenance.h>
+#include <mockTuner.h>
+#include "mockDevices.h"
+#include "mockScheduler.h"
+#include <si.h>
+#include <recordings.h>
+#include <linux/dvb/frontend.h>
+#include <definedDirs.h>
+#include "mockDefs.h"
+#include "sqlSelectDeserializer.h"
+#include "commonHelpers.h"
+#include "serviceStreamer.h"
+#include "temporaryIceAdapterObject.h"
+#include <slicer/slicer.h>
+
+
+class Core : public CommonObjects {
+ public:
+ Core()
+ {
+ int paramCount = 0;
+ ic = Ice::initialize(paramCount, NULL);
+ adapter = ic->createObjectAdapterWithEndpoints("Adp", "tcp -p 12005");
+ TestOptionsSource::LoadTestOptions({
+ { "common.datasourceRoot", (RootDir / "datasources").string() },
+ });
+ adapter->add(new MockDevices(), ic->stringToIdentity("GlobalDevices"));
+ adapter->add(new MockScheduler(), ic->stringToIdentity("Schedules"));
+ adapter->add(new SI(), ic->stringToIdentity("SI"));
+ adapter->add(new Recordings(), ic->stringToIdentity("Recordings"));
+ adapter->add(new Maintenance(adapter, NULL), ic->stringToIdentity("Maintenance"));
+ adapter->activate();
+
+ r = P2PVR::RecordingsPrx::checkedCast(ic->stringToProxy("Recordings"));
+ BOOST_REQUIRE(r);
+ r->ice_ping();
+
+ s = P2PVR::SIPrx::checkedCast(ic->stringToProxy("SI"));
+ BOOST_REQUIRE(s);
+ s->ice_ping();
+
+ m = P2PVR::MaintenancePrx::checkedCast(ic->stringToProxy("Maintenance"));
+ BOOST_REQUIRE(m);
+ m->ice_ping();
+ }
+
+ ~Core()
+ {
+ ic->destroy();
+ }
+
+ P2PVR::MaintenancePrx m;
+ P2PVR::RecordingsPrx r;
+ P2PVR::SIPrx s;
+
+ protected:
+ Ice::CommunicatorPtr ic;
+ Ice::ObjectAdapterPtr adapter;
+};
+
+class MockTarget : public P2PVR::RawDataClient {
+ public:
+ MockTarget() : bytesReceived(0) { }
+
+ bool NewData(const P2PVR::Data & data, const Ice::Current &) override
+ {
+ bytesReceived += data.size();
+ return false;
+ }
+
+ unsigned int bytesReceived;
+};
+
+BOOST_GLOBAL_FIXTURE( StandardMockDatabase );
+
+BOOST_FIXTURE_TEST_SUITE( RecordingCore, Core );
+
+BOOST_AUTO_TEST_CASE( streamServiceToTarget )
+{
+ BOOST_CHECKPOINT("Create mock target");
+ IceUtil::Handle<MockTarget> target = new MockTarget();
+ TemporaryIceAdapterObject<P2PVR::RawDataClient> targetPrx(adapter, target);
+
+ BOOST_CHECKPOINT("Create service streamer");
+ auto ss = ServiceStreamerPtr(new ServiceStreamer(4170, targetPrx, ic, adapter));
+
+ BOOST_CHECKPOINT("Start");
+ ss->Start();
+ sleep(1);
+
+ BOOST_CHECKPOINT("Stop");
+ ss->Stop();
+
+ BOOST_MESSAGE("Received bytes: " << target->bytesReceived);
+ BOOST_REQUIRE(target->bytesReceived > 150000);
+}
+
+BOOST_AUTO_TEST_SUITE_END();
+
+