diff --git a/test/.gitignore b/test/.gitignore
index 29dac0c..c275637 100644
--- a/test/.gitignore
+++ b/test/.gitignore
@@ -1 +1,4 @@
+find-callout-path
+find-hwmon
+hwmonio
 phosphor-hwmon-test
diff --git a/test/Makefile.am b/test/Makefile.am
index 2092964..0825659 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -1,5 +1,39 @@
 check_PROGRAMS =
-noinst_PROGRAMS = phosphor-hwmon-test
+noinst_PROGRAMS = \
+	find-callout-path \
+	find-hwmon \
+	hwmonio \
+	phosphor-hwmon-test
+
+find_callout_path_SOURCES = \
+	find_callout_path.cpp
+find_callout_path_LDFLAGS = \
+	-static
+find_callout_path_LDADD = \
+	-lstdc++fs \
+	${top_builddir}/sysfs.o
+
+find_callout_path_CXXFLAGS =
+
+find_hwmon_SOURCES = \
+	find_hwmon.cpp
+find_hwmon_LDFLAGS = \
+	-static
+find_hwmon_LDADD = \
+	-lstdc++fs \
+	${top_builddir}/sysfs.o
+
+find_hwmon_CXXFLAGS =
+
+hwmonio_SOURCES = \
+	hwmonio.cpp
+hwmonio_LDFLAGS = \
+	-static
+hwmonio_LDADD = \
+	-lstdc++fs \
+	${top_builddir}/sysfs.o
+
+hwmonio_CXXFLAGS =
 
 phosphor_hwmon_test_SOURCES = \
 	test.cpp
diff --git a/test/find_callout_path.cpp b/test/find_callout_path.cpp
new file mode 100644
index 0000000..97280fc
--- /dev/null
+++ b/test/find_callout_path.cpp
@@ -0,0 +1,40 @@
+/**
+ * Copyright © 2017 IBM Corporation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#include <iostream>
+#include "../sysfs.hpp"
+
+int main(int argc, char* argv[])
+{
+    if (argc < 2)
+    {
+        std::cerr << "Usage: " << argv[0]
+            << " HWMON_INST_PATH" << std::endl;
+        return 1;
+    }
+
+    try
+    {
+        std::cout << sysfs::findCalloutPath(argv[1]) << '\n';
+    }
+    catch (const std::exception& e)
+    {
+        std::cerr << e.what() << '\n';
+        return 1;
+    }
+    return 0;
+}
+
+// vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
diff --git a/test/find_hwmon.cpp b/test/find_hwmon.cpp
new file mode 100644
index 0000000..fbb203f
--- /dev/null
+++ b/test/find_hwmon.cpp
@@ -0,0 +1,40 @@
+/**
+ * Copyright © 2017 IBM Corporation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#include <iostream>
+#include "../sysfs.hpp"
+
+int main(int argc, char* argv[])
+{
+    if (argc < 2)
+    {
+        std::cerr << "Usage: " << argv[0]
+            << " DT_REL_BASE_PATH" << std::endl;
+        return 1;
+    }
+
+    try
+    {
+        std::cout << sysfs::findHwmon(argv[1]) << '\n';
+    }
+    catch (const std::exception& e)
+    {
+        std::cerr << e.what() << '\n';
+        return 1;
+    }
+    return 0;
+}
+
+// vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
diff --git a/test/hwmonio.cpp b/test/hwmonio.cpp
new file mode 100644
index 0000000..2c6bdaf
--- /dev/null
+++ b/test/hwmonio.cpp
@@ -0,0 +1,45 @@
+/**
+ * Copyright © 2017 IBM Corporation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#include <iostream>
+#include <string>
+#include "../sysfs.hpp"
+
+int main(int argc, char* argv[])
+{
+    using namespace std::string_literals;
+
+    if (argc < 6)
+    {
+        std::cerr << "Usage: " << argv[0]
+            << " [read|write] PATH TYPE N ATTR [VALUE]" << std::endl;
+        return 1;
+    }
+
+    sysfs::hwmonio::HwmonIO io(argv[2]);
+
+    if ("read"s == argv[1])
+    {
+        std::cout << io.read(argv[3], argv[4], argv[5]) << std::endl;
+    }
+    else
+    {
+        io.write(strtol(argv[6], nullptr, 0), argv[3], argv[4], argv[5]);
+    }
+
+    return 0;
+}
+
+// vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
