Add API tracing to gRPC core
diff --git a/src/core/security/credentials.c b/src/core/security/credentials.c
index bdd9ab8..ff67b5d 100644
--- a/src/core/security/credentials.c
+++ b/src/core/security/credentials.c
@@ -41,6 +41,7 @@
 #include "src/core/json/json.h"
 #include "src/core/httpcli/httpcli.h"
 #include "src/core/iomgr/iomgr.h"
+#include "src/core/surface/api_trace.h"
 #include "src/core/support/string.h"
 
 #include <grpc/support/alloc.h>
@@ -91,6 +92,7 @@
 }
 
 void grpc_credentials_release(grpc_credentials *creds) {
+  GRPC_API_TRACE("grpc_credentials_release(creds=%p)", 1, (creds));
   grpc_credentials_unref(creds);
 }
 
@@ -152,6 +154,7 @@
 }
 
 void grpc_server_credentials_release(grpc_server_credentials *creds) {
+  GRPC_API_TRACE("grpc_server_credentials_release(creds=%p)", 1, (creds));
   grpc_server_credentials_unref(creds);
 }
 
@@ -166,6 +169,11 @@
 
 void grpc_server_credentials_set_auth_metadata_processor(
     grpc_server_credentials *creds, grpc_auth_metadata_processor processor) {
+  GRPC_API_TRACE(
+      "grpc_server_credentials_set_auth_metadata_processor("
+        "creds=%p, "
+        "processor=grpc_auth_metadata_processor { process: %lx, state: %p })",
+      3, (creds, (unsigned long)processor.process, processor.state));
   if (creds == NULL) return;
   if (creds->processor.destroy != NULL && creds->processor.state != NULL) {
     creds->processor.destroy(creds->processor.state);
@@ -317,6 +325,10 @@
     const char *pem_root_certs, grpc_ssl_pem_key_cert_pair *pem_key_cert_pair,
     void *reserved) {
   grpc_ssl_credentials *c = gpr_malloc(sizeof(grpc_ssl_credentials));
+  GRPC_API_TRACE("grpc_ssl_credentials_create(pem_root_certs=%s, "
+                                             "pem_key_cert_pair=%p, "
+                                             "reserved=%p)",
+                 3, (pem_root_certs, pem_key_cert_pair, reserved));
   GPR_ASSERT(reserved == NULL);
   memset(c, 0, sizeof(grpc_ssl_credentials));
   c->base.type = GRPC_CREDENTIALS_TYPE_SSL;
@@ -331,6 +343,12 @@
     size_t num_key_cert_pairs, int force_client_auth, void *reserved) {
   grpc_ssl_server_credentials *c =
       gpr_malloc(sizeof(grpc_ssl_server_credentials));
+  GRPC_API_TRACE(
+      "grpc_ssl_server_credentials_create("
+        "pem_root_certs=%s, pem_key_cert_pairs=%p, num_key_cert_pairs=%lu, "
+        "force_client_auth=%d, reserved=%p)", 5,
+      (pem_root_certs, pem_key_cert_pairs, (unsigned long)num_key_cert_pairs,
+       force_client_auth, reserved));
   GPR_ASSERT(reserved == NULL);
   memset(c, 0, sizeof(grpc_ssl_server_credentials));
   c->base.type = GRPC_CREDENTIALS_TYPE_SSL;
@@ -449,6 +467,14 @@
 
 grpc_credentials *grpc_service_account_jwt_access_credentials_create(
     const char *json_key, gpr_timespec token_lifetime, void *reserved) {
+  GRPC_API_TRACE(
+      "grpc_service_account_jwt_access_credentials_create("
+        "json_key=%s, "
+        "token_lifetime="
+          "gpr_timespec { tv_sec: %ld, tv_nsec: %d, clock_type: %d }, "
+          "reserved=%p)",
+      5, (json_key, (long)token_lifetime.tv_sec,
+          token_lifetime.tv_nsec, (int)token_lifetime.clock_type, reserved));
   GPR_ASSERT(reserved == NULL);
   return grpc_service_account_jwt_access_credentials_create_from_auth_json_key(
       grpc_auth_json_key_create_from_string(json_key), token_lifetime);
@@ -659,6 +685,8 @@
     void *reserved) {
   grpc_oauth2_token_fetcher_credentials *c =
       gpr_malloc(sizeof(grpc_oauth2_token_fetcher_credentials));
+  GRPC_API_TRACE("grpc_compute_engine_credentials_create(reserved=%p)", 1,
+                 (reserved));
   GPR_ASSERT(reserved == NULL);
   init_oauth2_token_fetcher(c, compute_engine_fetch_oauth2);
   c->base.vtable = &compute_engine_vtable;
@@ -720,6 +748,9 @@
 
 grpc_credentials *grpc_google_refresh_token_credentials_create(
     const char *json_refresh_token, void *reserved) {
+  GRPC_API_TRACE("grpc_refresh_token_credentials_create(json_refresh_token=%s, "
+                 "reserved=%p)",
+                 2, (json_refresh_token, reserved));
   GPR_ASSERT(reserved == NULL);
   return grpc_refresh_token_credentials_create_from_auth_refresh_token(
       grpc_auth_refresh_token_create_from_string(json_refresh_token));
@@ -820,6 +851,9 @@
   grpc_access_token_credentials *c =
       gpr_malloc(sizeof(grpc_access_token_credentials));
   char *token_md_value;
+  GRPC_API_TRACE("grpc_access_token_credentials_create(access_token=%s, "
+                                                       "reserved=%p)", 2,
+                 (access_token, reserved));
   GPR_ASSERT(reserved == NULL);
   memset(c, 0, sizeof(grpc_access_token_credentials));
   c->base.type = GRPC_CREDENTIALS_TYPE_OAUTH2;
@@ -1056,6 +1090,9 @@
   grpc_credentials_array creds1_array;
   grpc_credentials_array creds2_array;
   grpc_composite_credentials *c;
+  GRPC_API_TRACE("grpc_composite_credentials_create(creds1=%p, creds2=%p, "
+                                                   "reserved=%p)", 3,
+                 (creds1, creds2, reserved));
   GPR_ASSERT(reserved == NULL);
   GPR_ASSERT(creds1 != NULL);
   GPR_ASSERT(creds2 != NULL);
@@ -1158,6 +1195,9 @@
 grpc_credentials *grpc_google_iam_credentials_create(
     const char *token, const char *authority_selector, void *reserved) {
   grpc_google_iam_credentials *c;
+  GRPC_API_TRACE("grpc_iam_credentials_create(token=%s, authority_selector=%s, "
+                                             "reserved=%p)",
+                 3, (token, authority_selector, reserved));
   GPR_ASSERT(reserved == NULL);
   GPR_ASSERT(token != NULL);
   GPR_ASSERT(authority_selector != NULL);