diff --git a/tests/publisher/test-lsa-publisher.cpp b/tests/publisher/test-lsa-publisher.cpp
index 4ea6544..3e96b95 100644
--- a/tests/publisher/test-lsa-publisher.cpp
+++ b/tests/publisher/test-lsa-publisher.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2014-2015,  The University of Memphis,
+ * Copyright (c) 2014-2016,  The University of Memphis,
  *                           Regents of the University of California,
  *                           Arizona Board of Regents.
  *
@@ -59,8 +59,8 @@
   publisher.publish(publishingPrefix);
   face->processEvents(ndn::time::milliseconds(1));
 
-  BOOST_REQUIRE_EQUAL(face->sentDatas.size(), 1);
-  ndn::Block parser = face->sentDatas[0].getContent();
+  BOOST_REQUIRE_EQUAL(face->sentData.size(), 1);
+  ndn::Block parser = face->sentData[0].getContent();
   parser.parse();
 
   // Check RouterB LSA
@@ -93,8 +93,8 @@
   publisher.publish(publishingPrefix);
   face->processEvents(ndn::time::milliseconds(1));
 
-  BOOST_REQUIRE_EQUAL(face->sentDatas.size(), 1);
-  ndn::Block parser = face->sentDatas[0].getContent();
+  BOOST_REQUIRE_EQUAL(face->sentData.size(), 1);
+  ndn::Block parser = face->sentData[0].getContent();
   parser.parse();
 
   // Check RouterC LSA
@@ -136,8 +136,8 @@
   publisher.publish(publishingPrefix);
   face->processEvents(ndn::time::milliseconds(1));
 
-  BOOST_REQUIRE_EQUAL(face->sentDatas.size(), 1);
-  ndn::Block parser = face->sentDatas[0].getContent();
+  BOOST_REQUIRE_EQUAL(face->sentData.size(), 1);
+  ndn::Block parser = face->sentData[0].getContent();
   parser.parse();
 
   // Check RouterB LSA
diff --git a/tests/publisher/test-lsdb-dataset-interest-handler.cpp b/tests/publisher/test-lsdb-dataset-interest-handler.cpp
index 15c6eea..a574df1 100644
--- a/tests/publisher/test-lsdb-dataset-interest-handler.cpp
+++ b/tests/publisher/test-lsdb-dataset-interest-handler.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2014-2015,  The University of Memphis,
+ * Copyright (c) 2014-2016,  The University of Memphis,
  *                           Regents of the University of California,
  *                           Arizona Board of Regents.
  *
@@ -36,8 +36,8 @@
 {
   face->processEvents(ndn::time::milliseconds(1));
 
-  BOOST_REQUIRE_EQUAL(face->sentDatas.size(), 1);
-  ndn::Block parser(face->sentDatas[0].getContent());
+  BOOST_REQUIRE_EQUAL(face->sentData.size(), 1);
+  ndn::Block parser(face->sentData[0].getContent());
   parser.parse();
 
   ndn::Block::element_const_iterator it = parser.elements_begin();
@@ -46,18 +46,18 @@
 
   BOOST_CHECK(it == parser.elements_end());
 
-  face->sentDatas.clear();
+  face->sentData.clear();
 }
 
 void
 checkErrorResponse(shared_ptr<ndn::util::DummyClientFace> face, uint64_t expectedCode)
 {
-  BOOST_REQUIRE_EQUAL(face->sentDatas.size(), 1);
+  BOOST_REQUIRE_EQUAL(face->sentData.size(), 1);
 
-  ndn::nfd::ControlResponse response(face->sentDatas[0].getContent().blockFromValue());
+  ndn::nfd::ControlResponse response(face->sentData[0].getContent().blockFromValue());
   BOOST_CHECK_EQUAL(response.getCode(), expectedCode);
 
-  face->sentDatas.clear();
+  face->sentData.clear();
 }
 
 BOOST_FIXTURE_TEST_SUITE(PublisherTestLsdbDatasetInterestHandler, PublisherFixture)
@@ -179,7 +179,7 @@
   face->receive(ndn::Interest(ndn::Name(thisRouter).append("malformed")));
   face->processEvents(ndn::time::milliseconds(1));
 
-  BOOST_CHECK_EQUAL(face->sentDatas.size(), 0);
+  BOOST_CHECK_EQUAL(face->sentData.size(), 0);
 }
 
 BOOST_AUTO_TEST_SUITE_END()
diff --git a/tests/publisher/test-lsdb-status-publisher.cpp b/tests/publisher/test-lsdb-status-publisher.cpp
index 58c4eff..367a7e3 100644
--- a/tests/publisher/test-lsdb-status-publisher.cpp
+++ b/tests/publisher/test-lsdb-status-publisher.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2014-2015,  The University of Memphis,
+ * Copyright (c) 2014-2016,  The University of Memphis,
  *                           Regents of the University of California,
  *                           Arizona Board of Regents.
  *
@@ -90,9 +90,9 @@
   publisher.publish(publishingPrefix);
   face->processEvents(ndn::time::milliseconds(1));
 
-  BOOST_REQUIRE_EQUAL(face->sentDatas.size(), 1);
+  BOOST_REQUIRE_EQUAL(face->sentData.size(), 1);
 
-  ndn::Block parser = face->sentDatas[0].getContent();
+  ndn::Block parser = face->sentData[0].getContent();
   parser.parse();
 
   ndn::Block::element_const_iterator it = parser.elements_begin();
diff --git a/tests/publisher/test-segment-publisher.cpp b/tests/publisher/test-segment-publisher.cpp
index 035f5e2..1b1c3bd 100644
--- a/tests/publisher/test-segment-publisher.cpp
+++ b/tests/publisher/test-segment-publisher.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2014-2015,  Regents of the University of California,
+ * Copyright (c) 2014-2016,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -158,8 +158,8 @@
       nSegments == 0)
     ++nSegments;
 
-  BOOST_CHECK_EQUAL(this->m_face->sentDatas.size(), nSegments);
-  for (const ndn::Data& data : this->m_face->sentDatas) {
+  BOOST_CHECK_EQUAL(this->m_face->sentData.size(), nSegments);
+  for (const ndn::Data& data : this->m_face->sentData) {
     this->validate(data);
   }
 }
