diff --git a/test_ndnpeekpoke/README.md b/test_ndnpeekpoke/README.md
index 47150d9..145953c 100644
--- a/test_ndnpeekpoke/README.md
+++ b/test_ndnpeekpoke/README.md
@@ -3,10 +3,10 @@
 
 ## Objective ##
 
-To test the ndn-tlv-peek and ndn-tlv-poke applications on a single host.
+To test the ndnpeek and ndnpoke applications on a single host.
 
 ## Description ##
 
-This test case will run NFD, ndn-tlv-peek and ndn-tlv-poke.
-This will report SUCCESS if one interest/data is successfully exchanged between ndn-tlv-peek and ndn-tlv-poke.
+This test case will run NFD, ndnpeek and ndnpoke.
+This will report SUCCESS if one interest/data is successfully exchanged between ndnpeek and ndnpoke.
 In all other scenarios, the test case will report FAILURE
diff --git a/test_ndnpeekpoke/test_ndnpeekpoke.py b/test_ndnpeekpoke/test_ndnpeekpoke.py
index e49adba..336b74e 100644
--- a/test_ndnpeekpoke/test_ndnpeekpoke.py
+++ b/test_ndnpeekpoke/test_ndnpeekpoke.py
@@ -12,17 +12,17 @@
 import process_manager
 
 class test_ndnpeekpoke(unittest.TestCase, process_manager.ProcessManager):
-    """Test case for testing ndn-tlv-peek and ndn-tlv-poke applications"""
+    """Test case for testing ndnpeek and ndnpoke applications"""
 
     def setUp(self):
-        print "\nTesting ndn-tlv-peek & ndn-tlv-poke"
+        print "\nTesting ndnpeek & ndnpoke"
         print "***********************************"
         os.system("mkdir test_ndnpeekpoke/logs/")
 
     def tearDown(self):
         self.killNfd()
-        self.killProcess("ndn-tlv-poke")
-        self.killProcess("ndn-tlv-peek")
+        self.killProcess("ndnpoke")
+        self.killProcess("ndnpeek")
         os.system("rm -r test_ndnpeekpoke/logs/")
         self.cleanupProcesses()
 
@@ -32,31 +32,31 @@
         self.startNrd()
         time.sleep(1)
         pokeInputFile = os.path.abspath("test_ndnpeekpoke/test-poke-input.txt")
-        self.startProcess("ndn-tlv-poke",
-            ["ndn-tlv-poke", "ndn:/test/peekpoke"],
+        self.startProcess("ndnpoke",
+            ["ndnpoke", "ndn:/test/peekpoke"],
             "-> Starting Poke",
             inputFile=pokeInputFile)
         time.sleep(1)
         peekOutputFile = os.path.abspath("test_ndnpeekpoke/logs/test-peek-output.txt")
-        self.startProcess("ndn-tlv-peek",
-            ["ndn-tlv-peek", "ndn:/test/peekpoke"],
+        self.startProcess("ndnpeek",
+            ["ndnpeek", "ndn:/test/peekpoke"],
             "-> Starting Peek",
             outputFile=peekOutputFile)
         time.sleep(1)
-        self.waitForProcessCompletion("ndn-tlv-peek", 10)
-        self.waitForProcessCompletion("ndn-tlv-poke", 10)
-        if self.hasProcessCompleted("ndn-tlv-peek"):
-            if self.getProcessReturnCode("ndn-tlv-peek") != 0:
-                print self.getProcessReturnCode("ndn-tlv-peek")
-                print self.getProcessError("ndn-tlv-peek")
-                print self.getProcessOutput("ndn-tlv-peek")
-                self.fail(">> TEST FAILED - received non-zero return code from ndn-tlv-peek")
+        self.waitForProcessCompletion("ndnpeek", 10)
+        self.waitForProcessCompletion("ndnpoke", 10)
+        if self.hasProcessCompleted("ndnpeek"):
+            if self.getProcessReturnCode("ndnpeek") != 0:
+                print self.getProcessReturnCode("ndnpeek")
+                print self.getProcessError("ndnpeek")
+                print self.getProcessOutput("ndnpeek")
+                self.fail(">> TEST FAILED - received non-zero return code from ndnpeek")
         else:
-            self.fail(">> TEST FAILED - ndn-tlv-peek failed to complete")
-        if self.hasProcessCompleted("ndn-tlv-poke"):
-            if self.getProcessReturnCode("ndn-tlv-poke") != 0:
-                print self.getProcessError("ndn-tlv-poke")
-                self.fail(">> TEST FAILED - received non-zero return code from ndn-tlv-poke")
+            self.fail(">> TEST FAILED - ndnpeek failed to complete")
+        if self.hasProcessCompleted("ndnpoke"):
+            if self.getProcessReturnCode("ndnpoke") != 0:
+                print self.getProcessError("ndnpoke")
+                self.fail(">> TEST FAILED - received non-zero return code from ndnpoke")
         else:
-            self.fail(">> TEST FAILED - ndn-tlv-poke failed to complete")
+            self.fail(">> TEST FAILED - ndnpoke failed to complete")
         print ">> TEST SUCCESSFUL"
