diff --git a/tests/daemon/face/face.t.cpp b/tests/daemon/face/face.t.cpp
index 2dd3c95..165d5db 100644
--- a/tests/daemon/face/face.t.cpp
+++ b/tests/daemon/face/face.t.cpp
@@ -107,32 +107,32 @@
 
   for (size_t i = 0; i < nInInterests; ++i) {
     shared_ptr<Interest> interest = makeInterest("/JSQdqward4");
-    face1->receiveInterest(*interest);
+    face1->receiveInterest(*interest, 0);
   }
 
   for (size_t i = 0; i < nInData; ++i) {
     shared_ptr<Data> data = makeData("/hT8FDigWn1");
-    face1->receiveData(*data);
+    face1->receiveData(*data, 0);
   }
 
   for (size_t i = 0; i < nInNacks; ++i) {
     lp::Nack nack = makeNack("/StnEVTj4Ex", 561, lp::NackReason::CONGESTION);
-    face1->receiveNack(nack);
+    face1->receiveNack(nack, 0);
   }
 
   for (size_t i = 0; i < nOutInterests; ++i) {
     shared_ptr<Interest> interest = makeInterest("/XyUAFYQDmd");
-    face1->sendInterest(*interest);
+    face1->sendInterest(*interest, 0);
   }
 
   for (size_t i = 0; i < nOutData; ++i) {
     shared_ptr<Data> data = makeData("/GigPEtPH6");
-    face1->sendData(*data);
+    face1->sendData(*data, 0);
   }
 
   for (size_t i = 0; i < nOutNacks; ++i) {
     lp::Nack nack = makeNack("/9xK6FbwIBM", 365, lp::NackReason::CONGESTION);
-    face1->sendNack(nack);
+    face1->sendNack(nack, 0);
   }
 
   BOOST_CHECK_EQUAL(face1->getCounters().nInInterests, nInInterests);
