test for register and clear interests in ccnxtunnel
diff --git a/test/test-ccnx-tunnel.cc b/test/test-ccnx-tunnel.cc
index 03f4250..5a5abc5 100644
--- a/test/test-ccnx-tunnel.cc
+++ b/test/test-ccnx-tunnel.cc
@@ -22,9 +22,21 @@
virtual Name
queryRoutableName(const Name &name);
+ void
+ overridePrefix();
+
};
-DummyTunnel::DummyTunnel() : CcnxTunnel() {m_localPrefix = Name("/local");}
+DummyTunnel::DummyTunnel() : CcnxTunnel()
+{
+ m_localPrefix = Name("/local");
+}
+
+void
+DummyTunnel::overridePrefix()
+{
+ CcnxWrapper::setInterestFilter(m_localPrefix, bind(&DummyTunnel::handleTunneledInterest, this, _1));
+}
Name
DummyTunnel::queryRoutableName (const Name &name)
@@ -36,9 +48,12 @@
CcnxWrapperPtr t2(new DummyTunnel());
CcnxWrapperPtr c1(new CcnxWrapper());
+DummyTunnel t3;
+
// global data callback counter;
int g_dc_i = 0;
int g_dc_o = 0;
+int g_ic = 0;
void innerCallback(const Name &name, const Bytes &content)
{
@@ -52,7 +67,12 @@
g_dc_o ++;
}
-
+void interestCallback(const Name &name)
+{
+ string strName = name.toString();
+ t3.publishData(name, (const unsigned char *)strName.c_str(), strName.size(), 5);
+ g_ic++;
+}
BOOST_AUTO_TEST_CASE (CcnxTunnelTest)
{
@@ -79,5 +99,29 @@
}
+BOOST_AUTO_TEST_CASE (CcnxTunnelRegister)
+{
+
+ g_ic = 0;
+ g_dc_i = 0;
+ t3.overridePrefix();
+ t3.setInterestFilter(Name("/t3"), bind(interestCallback, _1));
+ usleep(100000);
+ Closure *innerClosure = new Closure(1, bind(innerCallback, _1, _2));
+ t1->sendInterest(Name("/t3/hello"), innerClosure);
+ usleep(100000);
+ BOOST_CHECK_EQUAL(g_dc_i, 1);
+ BOOST_CHECK_EQUAL(g_ic, 1);
+
+ t3.clearInterestFilter(Name("/t3"));
+ usleep(100000);
+ t1->sendInterest(Name("/t3/hello-there"), innerClosure);
+ usleep(100000);
+ BOOST_CHECK_EQUAL(g_dc_i, 1);
+ BOOST_CHECK_EQUAL(g_ic, 1);
+ delete innerClosure;
+
+}
+
BOOST_AUTO_TEST_SUITE_END()