diff --git a/tests/unit-tests/bench.t.cpp b/tests/unit-tests/bench.t.cpp
index 1766a18..709a0bc 100644
--- a/tests/unit-tests/bench.t.cpp
+++ b/tests/unit-tests/bench.t.cpp
@@ -38,8 +38,8 @@
 
   util::DummyClientFace face(io, m_keyChain, {true, true});
   CaModule ca(face, m_keyChain, "tests/unit-tests/config-files/config-ca-1", "ca-storage-memory");
-  auto profileData = ca.getCaProfileData();
   advanceClocks(time::milliseconds(20), 60);
+  auto profileData = ca.getCaProfileData();
 
   Interest interest = MetadataObject::makeDiscoveryInterest(Name("/ndn/CA/INFO"));
   std::cout << "CA Config discovery Interest Size: " << interest.wireEncode().size() << std::endl;
@@ -48,8 +48,10 @@
   face.setInterestFilter(
       InterestFilter("/ndn/CA/INFO"),
       [&](const auto&, const Interest& interest) {
-        BOOST_CHECK(interest.matchesData(profileData));
-        face.put(profileData);
+        std::cout << interest.getName() << std::endl;
+        if (interest.getName() == profileData.getName()) {
+          face.put(profileData);
+        }
       },
       nullptr, nullptr);
   advanceClocks(time::milliseconds(20), 60);
@@ -61,9 +63,8 @@
       std::cout << "CA Config MetaData Size: " << response.wireEncode().size() << std::endl;
       auto block = response.getContent();
       block.parse();
-      Interest interest(Name(block.get(tlv::Name)));
-      interest.setCanBePrefix(true);
-      infoInterest = make_shared<Interest>(interest);
+      infoInterest = make_shared<Interest>(Name(block.get(tlv::Name)).appendSegment(0));
+      infoInterest->setCanBePrefix(false);
       std::cout << "CA Config fetch Interest Size: " << infoInterest->wireEncode().size() << std::endl;
     }
     else {
