diff --git a/src/test/java/com/intel/jndn/management/FaceStatusTest.java b/src/test/java/com/intel/jndn/management/FaceStatusTest.java
index e5fbab7..42bba95 100644
--- a/src/test/java/com/intel/jndn/management/FaceStatusTest.java
+++ b/src/test/java/com/intel/jndn/management/FaceStatusTest.java
@@ -14,6 +14,8 @@
 import com.intel.jndn.management.types.FaceStatus;
 import com.intel.jndn.utils.Client;
 import java.util.List;
+import java.util.logging.LogManager;
+import java.util.logging.Logger;
 import junit.framework.Assert;
 import net.named_data.jndn.Data;
 import net.named_data.jndn.Face;
@@ -21,8 +23,6 @@
 import net.named_data.jndn.Name;
 import net.named_data.jndn.encoding.EncodingException;
 import net.named_data.jndn.util.Blob;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
 import org.junit.Test;
 import static org.junit.Assert.*;
 
@@ -34,7 +34,7 @@
  */
 public class FaceStatusTest {
 
-  private static final Logger logger = LogManager.getLogger();
+  private static final Logger logger = Logger.getLogger(FaceStatusTest.class.getName());
 
   /**
    * Test encoding/decoding
diff --git a/src/test/java/com/intel/jndn/management/IntegrationSuite.java b/src/test/java/com/intel/jndn/management/IntegrationSuite.java
new file mode 100644
index 0000000..d968df0
--- /dev/null
+++ b/src/test/java/com/intel/jndn/management/IntegrationSuite.java
@@ -0,0 +1,43 @@
+/*
+ * File name: IntegrationSuite.java
+ * 
+ * Purpose: Tests to run with a local NFD as part of integration testing; will
+ * not run in the maven test phase, must be run manually.
+ * 
+ * © Copyright Intel Corporation. All rights reserved.
+ * Intel Corporation, 2200 Mission College Boulevard,
+ * Santa Clara, CA 95052-8119, USA
+ */
+package com.intel.jndn.management;
+
+import java.util.logging.Logger;
+import junit.framework.Assert;
+import net.named_data.jndn.Face;
+import net.named_data.jndn.Name;
+
+/**
+ * Tests to run with a local NFD as part of integration testing; will not run in
+ * the maven test phase, must be run manually.
+ *
+ * @author Andrew Brown <andrew.brown@intel.com>
+ */
+public class IntegrationSuite {
+
+  private static final Logger logger = Logger.getLogger(IntegrationSuite.class.getName());
+
+  public static void main(String[] args) throws Exception {
+    Face face = new Face();
+    Assert.assertTrue(NFD.pingLocal(face));
+    
+    // grab datasets
+    Assert.assertFalse(NFD.getFaceList(face).isEmpty());
+    Assert.assertFalse(NFD.getFibList(face).isEmpty());
+    Assert.assertFalse(NFD.getRouteList(face).isEmpty());
+    
+    // create a new route
+    Assert.assertTrue(NFD.register(face, "contentstore://", new Name("/my/cache/route"), 999));
+    
+    // remove the route
+    Assert.assertTrue(NFD.unregister(face, new Name("/my/cache/route")));
+  }
+}
