diff --git a/tests/test_executors.py b/tests/test_executors.py
new file mode 100644
index 0000000..bb3600f
--- /dev/null
+++ b/tests/test_executors.py
@@ -0,0 +1,43 @@
+import os
+import time
+import unittest
+
+
+from oktest import ok, main, test
+
+
+from wally import utils, ssh_utils
+
+
+class AgentTest(unittest.TestCase):
+    @test("test_local_executor_ls")
+    def test_ls(self):
+        expected = sorted(os.listdir('/'))
+        ok(sorted(utils.run_locally('ls /').split())) == expected
+
+    @test("test_local_executor_sleep1")
+    def test_sleep1(self):
+        t = time.time()
+        with self.assertRaises(RuntimeError):
+            utils.run_locally(['sleep', '20'], timeout=1)
+        ok(time.time() - t) < 1.2
+
+    @test("test_local_executor_sleep2")
+    def test_sleep2(self):
+        t = time.time()
+        with self.assertRaises(RuntimeError):
+            utils.run_locally('sleep 20', timeout=1)
+        ok(time.time() - t) < 1.2
+
+    @test("test_ssh_executor1")
+    def test_ssh_executor1(self):
+        id_rsa_path = os.path.expanduser('~/.ssh/id_rsa')
+        ssh_url = "ssh://localhost::" + id_rsa_path
+        expected = sorted(os.listdir('/'))
+
+        conn = ssh_utils.connect(ssh_url)
+        out = ssh_utils.run_over_ssh(conn, "ls /")
+        ok(sorted(out.split())) == expected
+
+if __name__ == '__main__':
+    main()
