diff --git a/test_ndnpeekpoke/test_ndnpeekpoke.py b/test_ndnpeekpoke/test_ndnpeekpoke.py
index 9f218e9..f2ea543 100644
--- a/test_ndnpeekpoke/test_ndnpeekpoke.py
+++ b/test_ndnpeekpoke/test_ndnpeekpoke.py
@@ -1,59 +1,34 @@
 #!/usr/bin/python2
 # -*- Mode:python; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 #
-# Copyright (C) 2014 University of Arizona
+# Copyright (C) 2014-2018 Arizona Board of Regents.
 # Author: Jerald Paul Abraham <jeraldabraham@email.arizona.edu>
+# Author: Eric Newberry <enewberry@cs.arizona.edu>
 # See COPYING for copyright and distribution information.
 #
 
 import os
-import time
 import unittest
-import process_manager
+import subprocess
 
-class test_ndnpeekpoke(unittest.TestCase, process_manager.ProcessManager):
-    """Test case for testing ndnpeek and ndnpoke applications"""
+class test_ndnpeekpoke(unittest.TestCase):
+    """Test case for the ndnpeek and ndnpoke applications"""
 
     def setUp(self):
-        print "\nTesting ndnpeek & ndnpoke"
-        print "***********************************"
-        os.system("mkdir -p test_ndnpeekpoke/logs/")
+        print "\nTesting ndnpeek and ndnpoke"
+        print "***************************"
+        os.chdir("test_ndnpeekpoke")
 
     def tearDown(self):
-        self.killNfd()
-        self.killProcess("ndnpoke")
-        self.killProcess("ndnpeek")
-        self.cleanupProcesses()
+        print "***************************"
+        os.chdir("..")
 
-    def test_peekpoke(self):
-        self.startNfd()
-        time.sleep(1)
-        pokeInputFile = os.path.abspath("test_ndnpeekpoke/test-poke-input.txt")
-        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("ndnpeek",
-            ["ndnpeek", "ndn:/test/peekpoke"],
-            "-> Starting Peek",
-            outputFile=peekOutputFile)
-        time.sleep(1)
-        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 - 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 - ndnpoke failed to complete")
-        print ">> TEST SUCCESSFUL"
+    def test_ndnpeekpoke(self):
+        ret = subprocess.call(["./ndnpeekpoke-test.sh"], shell=True)
+        print "Test script return value:", ret
+        errormsg = {
+            1 : "ndnpeek did not receive a Data packet satisfying its Interest",
+            2 : "ndnpoke did not exit after sending a Data packet",
+        }
+        if (ret != 0):
+            self.fail(errormsg[ret])
