diff --git a/test/integration/test-batch.js b/test/integration/test-batch.js
index eb2f2cb..2b200d5 100644
--- a/test/integration/test-batch.js
+++ b/test/integration/test-batch.js
@@ -142,8 +142,10 @@
         return batch.table(table.name);
       });
 
+      // Put to the same key in each batch.
+      var key = uniqueName('key');
       async.mapSeries(batchTables, function(batchTable, cb) {
-        var key = uniqueName('key');
+        // Put different value in each batch.
         var value = uniqueName('value');
         batchTable.put(ctx, key, value, function(err) {
           if (err) {
@@ -339,19 +341,33 @@
     var db = o.database;
     var table = o.table;
 
-    db.beginBatch(ctx, {}, putTable);
+    db.beginBatch(ctx, {}, readBatchTable);
 
     var key = uniqueName('key');
     var value = uniqueName('value');
 
     var batch;
+    var batchTable;
 
-    function putTable(err, _batch) {
+    function readBatchTable(err, _batch) {
       if (err) {
-        return end(err);
+        return t.end(err);
       }
 
       batch = _batch;
+      batchTable = batch.table(table.name);
+
+      batchTable.get(ctx, key, function(err) {
+        // Should error because the key does not exist yet.
+        t.ok(err, 'get should error when key does not exist');
+        putTable();
+      });
+    }
+
+    function putTable(err) {
+      if (err) {
+        return end(err);
+      }
 
       // Put on the table directly, not the batch table.  This will conflict
       // with future batchTable.put() call.
@@ -365,7 +381,6 @@
 
       var newValue = uniqueName('value');
 
-      var batchTable = batch.table(table.name);
       batchTable.put(ctx, key, newValue, commit);
     }
 
diff --git a/test/start-syncbased.sh b/test/start-syncbased.sh
index 6cf9f24..bedc838 100755
--- a/test/start-syncbased.sh
+++ b/test/start-syncbased.sh
@@ -9,7 +9,17 @@
 # does not allow flags or arguments to the executables it starts.  We should
 # fix service-runner to allow flags/arguments, and then have it start syncbased
 # directly with the appropriate flags.  Then we can delete this file.
-# TODO(rdaoud): how to cleanup the tmp test dir; "rm" here doesn't do it.
 
-testdir="$(mktemp -d "${TMPDIR:-/tmp}"/sbtest.XXXXXXXX)"
-syncbased -v=1 --name test/syncbased --engine memstore --root-dir "${testdir}" --v23.tcp.address 127.0.0.1:0
+TESTDIR="$(mktemp -d "${TMPDIR:-/tmp}"/sbtest.XXXXXXXX)"
+# Delete TESTDIR and stop syncbased on exit.
+function cleanup {
+	rm -rf "${TESTDIR}"
+	kill -TERM "${CHILD}" 2>/dev/null
+	exit 0
+}
+trap cleanup SIGINT SIGTERM EXIT
+
+syncbased -v=3 --name test/syncbased --engine "${STORAGE_ENGINE:-leveldb}" --root-dir "${TESTDIR}" --v23.tcp.address 127.0.0.1:0 &
+
+CHILD=$!
+wait "${CHILD}"
