Drastic speed up
diff --git a/test/core/echo/server.c b/test/core/echo/server.c
index 3eb6f43..bc84645 100644
--- a/test/core/echo/server.c
+++ b/test/core/echo/server.c
@@ -165,7 +165,8 @@
       grpc_completion_queue_shutdown(cq);
       shutdown_started = 1;
     }
-    ev = grpc_completion_queue_next(cq, GRPC_TIMEOUT_SECONDS_TO_DEADLINE(1));
+    ev = grpc_completion_queue_next(
+        cq, gpr_time_add(gpr_now(), gpr_time_from_seconds(1)));
     if (!ev) continue;
     s = ev->tag;
     switch (ev->type) {
diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py
index 7732466..7c6a050 100755
--- a/tools/run_tests/run_tests.py
+++ b/tools/run_tests/run_tests.py
@@ -232,6 +232,7 @@
 
   def finished(self, cmdline, bin_hash):
     self._last_successful_run[cmdline] = bin_hash
+    self.save()
 
   def dump(self):
     return [{'cmdline': k, 'hash': v}
@@ -286,7 +287,6 @@
                      'All tests are now passing properly',
                      do_newline=True)
     jobset.message('IDLE', 'No change detected')
-    test_cache.save()
     while not have_files_changed():
       time.sleep(1)
 else:
@@ -297,5 +297,4 @@
     jobset.message('SUCCESS', 'All tests passed', do_newline=True)
   else:
     jobset.message('FAILED', 'Some tests failed', do_newline=True)
-  test_cache.save()
   sys.exit(result)