From 6f8f09f5d9f6f38ef9d838e918cecb6c0a63c610 Mon Sep 17 00:00:00 2001
From: Yuchen Zeng <zyc@google.com>
Date: Thu, 18 Aug 2016 15:16:12 -0700
Subject: [PATCH] Single thread fake token fetch

---
 .../lib/security/credentials/fake/fake_credentials.c     | 9 ++++++---
 .../lib/security/credentials/fake/fake_credentials.h     | 2 ++
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/core/lib/security/credentials/fake/fake_credentials.c b/src/core/lib/security/credentials/fake/fake_credentials.c
index 51cafd986f..c569259f1b 100644
--- a/src/core/lib/security/credentials/fake/fake_credentials.c
+++ b/src/core/lib/security/credentials/fake/fake_credentials.c
@@ -113,9 +113,12 @@ static void md_only_test_get_request_metadata(
   if (c->is_async) {
     grpc_credentials_metadata_request *cb_arg =
         grpc_credentials_metadata_request_create(creds, cb, user_data);
-    grpc_executor_push(
-        grpc_closure_create(on_simulated_token_fetch_done, cb_arg),
-        GRPC_ERROR_NONE);
+    grpc_timer_init(exec_ctx, &c->timer,
+                    gpr_time_add(gpr_now(GPR_CLOCK_MONOTONIC),
+                                 gpr_time_from_micros(10, GPR_TIMESPAN)),
+                    on_simulated_token_fetch_done, cb_arg,
+                    gpr_now(GPR_CLOCK_MONOTONIC));
+
   } else {
     cb(exec_ctx, user_data, c->md_store->entries, 1, GRPC_CREDENTIALS_OK, NULL);
   }
diff --git a/src/core/lib/security/credentials/fake/fake_credentials.h b/src/core/lib/security/credentials/fake/fake_credentials.h
index 9cf38084a3..15e5cd5e57 100644
--- a/src/core/lib/security/credentials/fake/fake_credentials.h
+++ b/src/core/lib/security/credentials/fake/fake_credentials.h
@@ -34,6 +34,7 @@
 #ifndef GRPC_CORE_LIB_SECURITY_CREDENTIALS_FAKE_FAKE_CREDENTIALS_H
 #define GRPC_CORE_LIB_SECURITY_CREDENTIALS_FAKE_FAKE_CREDENTIALS_H
 
+#include "src/core/lib/iomgr/timer.h"
 #include "src/core/lib/security/credentials/credentials.h"
 
 /* -- Fake transport security credentials. -- */
@@ -50,6 +51,7 @@ grpc_server_credentials *grpc_fake_transport_security_server_credentials_create(
 typedef struct {
   grpc_call_credentials base;
   grpc_credentials_md_store *md_store;
+  grpc_timer timer;
   int is_async;
 } grpc_md_only_test_credentials;
 
-- 
GitLab