You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by zw...@apache.org on 2014/03/15 19:31:05 UTC

git commit: TS-2598 Expose HttpDebugNames to public plugin APIs

Repository: trafficserver
Updated Branches:
  refs/heads/master ce6b5c7f4 -> d3fd1e674


TS-2598 Expose HttpDebugNames to public plugin APIs


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/d3fd1e67
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/d3fd1e67
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/d3fd1e67

Branch: refs/heads/master
Commit: d3fd1e674b0e6d51fd3e8f4c49ed7d5d9eeb56a3
Parents: ce6b5c7
Author: Leif Hedstrom <zw...@apache.org>
Authored: Sat Mar 15 12:30:58 2014 -0600
Committer: Leif Hedstrom <zw...@apache.org>
Committed: Sat Mar 15 12:30:58 2014 -0600

----------------------------------------------------------------------
 CHANGES                          |  2 ++
 doc/reference/api/TSDebug.en.rst | 12 ++++++++
 proxy/InkAPI.cc                  | 30 +++++++++++++++----
 proxy/InkAPITest.cc              | 56 +++++++++++++++++++++++++++++++++++
 proxy/api/ts/ts.h                | 26 ++++++++++++++++
 5 files changed, 120 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/d3fd1e67/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index b68e5c3..3b64258 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,8 @@
                                                          -*- coding: utf-8 -*-
 Changes with Apache Traffic Server 5.0.0
 
+  *) [TS-2598] Expose HttpDebugNames to public plugin APIs.
+
   *) [TS-2639] Release HttpClientSession objects back to the proxy allocator.
 
   *) [TS-2637] Add traffic_line records match option.

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/d3fd1e67/doc/reference/api/TSDebug.en.rst
----------------------------------------------------------------------
diff --git a/doc/reference/api/TSDebug.en.rst b/doc/reference/api/TSDebug.en.rst
index 430617c..7fc21db 100644
--- a/doc/reference/api/TSDebug.en.rst
+++ b/doc/reference/api/TSDebug.en.rst
@@ -32,6 +32,9 @@ Synopsis
 .. function:: void TSHttpSsnDebugSet(TSHttpSsn ssn, int on)
 .. function:: int TSHttpTxnDebugGet(TSHttpTxn txnp)
 .. function:: int TSHttpSsnDebugGet(TSHttpSsn ssn)
+.. function:: const char* TSHttpServerStateNameLookup(TSServerState state)
+.. function:: const char* TSHttpHookNameLookup(TSHttpHookID hook)
+.. function:: const char* TSHttpEventNameLookup(TSEvent event)
 .. macro:: void TSAssert(expression)
 .. macro:: void TSReleaseAssert(expression)
 
@@ -61,6 +64,11 @@ in conjunction with :func:`TSHttpTxnDebugSet`, :func:`TSHttpSsnDebugSet`,
 :func:`TSHttpTxnDebugGet` and :func:`TSHttpSsnDebugGet` to enable
 debugging on specific session and transaction objects.
 
+:func:`TSHttpServerStateNameLookup`, :func:`TSHttpHookNameLookup` and
+:func:`TSHttpEventNameLookup` converts the respective internal state to a
+string representation. This can be useful in debugging (:func:`TSDebug`),
+logging and other types notifications.
+
 Examples
 ========
 
@@ -69,6 +77,10 @@ debugging flag is enabled::
 
     #include <ts/ts.h>
 
+    // Produce information about a hook receiving an event
+    TSDebug(PLUGIN_NAME, "Entering hook=%s, event=%s",
+            TSHttpHookNameLookup(hook), TSHttpEventNameLookup(event));
+
     // Emit debug message if "tag" is enabled or the txn debug
     // flag is set.
     TSDebugSpecifc(TSHttpTxnDebugGet(txn), "tag" ,

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/d3fd1e67/proxy/InkAPI.cc
----------------------------------------------------------------------
diff --git a/proxy/InkAPI.cc b/proxy/InkAPI.cc
index 2a2270a..00a78e1 100644
--- a/proxy/InkAPI.cc
+++ b/proxy/InkAPI.cc
@@ -21,9 +21,6 @@
   limitations under the License.
  */
 
-// Avoid complaining about the deprecated APIs.
-// #define TS_DEPRECATED
-
 #include <stdio.h>
 
 #include "libts.h"
@@ -418,12 +415,14 @@ int
 _TSAssert(const char *text, const char *file, int line)
 {
   _ink_assert(text, file, line);
+  return 0;
+}
 #else
 _TSAssert(const char *, const char *, int)
 {
-#endif
- return 0;
+  return 0;
 }
+#endif
 
 // This assert is for internal API use only.
 #if TS_USE_FAST_SDK
@@ -433,7 +432,6 @@ _TSAssert(const char *, const char *, int)
   ( (void)((EX) ? (void)0 : _TSReleaseAssert(#EX, __FILE__, __LINE__)) )
 #endif
 
-
 ////////////////////////////////////////////////////////////////////
 //
 // SDK Interoperability Support
@@ -8494,3 +8492,23 @@ TSHttpTxnIsCacheable(TSHttpTxn txnp, TSMBuffer request, TSMBuffer response)
   // Make sure these are valid response / requests, then verify if it's cacheable.
   return (req->valid() && resp->valid() && HttpTransact::is_response_cacheable(&(sm->t_state), req, resp)) ? 1: 0;
 }
+
+
+// Lookup various debug names for common HTTP types.
+const char*
+TSHttpServerStateNameLookup(TSServerState state)
+{
+  return HttpDebugNames::get_server_state_name(static_cast<HttpTransact::ServerState_t>(state));
+}
+
+const char*
+TSHttpHookNameLookup(TSHttpHookID hook)
+{
+  return HttpDebugNames::get_api_hook_name(static_cast<TSHttpHookID>(hook));
+}
+
+const char*
+TSHttpEventNameLookup(TSEvent event)
+{
+  return HttpDebugNames::get_event_name(static_cast<int>(event));
+}

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/d3fd1e67/proxy/InkAPITest.cc
----------------------------------------------------------------------
diff --git a/proxy/InkAPITest.cc b/proxy/InkAPITest.cc
index f558eb0..f380eb5 100644
--- a/proxy/InkAPITest.cc
+++ b/proxy/InkAPITest.cc
@@ -7608,3 +7608,59 @@ REGRESSION_TEST(SDK_API_ENCODING) (RegressionTest * test, int /* atype ATS_UNUSE
 
   return;
 }
+
+
+
+////////////////////////////////////////////////
+// SDK_API_DEBUG_NAME_LOOKUPS
+//
+// Unit Test for API: TSHttpServerStateNameLookup
+//                    TSHttpHookNameLookup
+//                    TSHttpEventNameLookup
+////////////////////////////////////////////////
+
+REGRESSION_TEST(SDK_API_DEBUG_NAME_LOOKUPS) (RegressionTest * test, int /* atype ATS_UNUSED */, int *pstatus)
+{
+  bool success = true;
+  const char state_name[] = "INACTIVE_TIMEOUT";
+  const char hook_name[] = "TS_HTTP_READ_RESPONSE_HDR_HOOK";
+  const char event_name[] = "VC_EVENT_IMMEDIATE";
+  const char* str;
+
+  *pstatus = REGRESSION_TEST_INPROGRESS;
+
+  str = TSHttpServerStateNameLookup(TS_SRVSTATE_INACTIVE_TIMEOUT);
+  if ((strlen(str) != strlen(state_name) || strcmp(str, state_name))) {
+    SDK_RPRINT(test, "TSHttpServerStateNameLookup", "TestCase1", TC_FAIL, "Failed on %d, expected %s, got %s",
+               TS_SRVSTATE_INACTIVE_TIMEOUT, state_name, str);
+    success = false;
+  } else {
+    SDK_RPRINT(test, "TSHttpServerStateNameLookup", "TestCase1", TC_PASS, "ok");
+  }
+
+
+  str = TSHttpHookNameLookup(TS_HTTP_READ_RESPONSE_HDR_HOOK);
+  if ((strlen(str) != strlen(hook_name) || strcmp(str, hook_name))) {
+    SDK_RPRINT(test, "TSHttpHookNameLookup", "TestCase1", TC_FAIL, "Failed on %d, expected %s, got %s",
+               TS_HTTP_READ_RESPONSE_HDR_HOOK, hook_name, str);
+    success = false;
+  } else {
+    SDK_RPRINT(test, "TSHttpHookNameLookup", "TestCase1", TC_PASS, "ok");
+  }
+
+
+  str = TSHttpEventNameLookup(TS_EVENT_IMMEDIATE);
+  if ((strlen(str) != strlen(event_name) || strcmp(str, event_name))) {
+    SDK_RPRINT(test, "TSHttpEventNameLookup", "TestCase1", TC_FAIL, "Failed on %d, expected %s, got %s",
+               TS_EVENT_IMMEDIATE, hook_name, str);
+    success = false;
+  } else {
+    SDK_RPRINT(test, "TSHttpEventNameLookup", "TestCase1", TC_PASS, "ok");
+  }
+
+
+  *pstatus = success ? REGRESSION_TEST_PASSED : REGRESSION_TEST_FAILED;
+
+  return;
+}
+

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/d3fd1e67/proxy/api/ts/ts.h
----------------------------------------------------------------------
diff --git a/proxy/api/ts/ts.h b/proxy/api/ts/ts.h
index b864624..02f4bf0 100644
--- a/proxy/api/ts/ts.h
+++ b/proxy/api/ts/ts.h
@@ -2270,6 +2270,32 @@ extern "C"
   */
   tsapi int TSHttpTxnIsCacheable(TSHttpTxn txnp, TSMBuffer request, TSMBuffer response);
 
+  /**
+     Return a string respresentation for a TSServerState value. This is useful for plugin debugging.
+
+     @param state the value of this TSServerState
+
+     @return the string representation of the state
+  */
+  tsapi const char* TSHttpServerStateNameLookup(TSServerState state);
+
+  /**
+     Return a string respresentation for a TSHttpHookID value. This is useful for plugin debugging.
+
+     @param hook the value of this TSHttpHookID
+
+     @return the string representation of the hook ID
+  */
+  tsapi const char* TSHttpHookNameLookup(TSHttpHookID hook);
+
+  /**
+     Return a string respresentation for a TSEvent value. This is useful for plugin debugging.
+
+     @param event the value of this TSHttpHookID
+
+     @return the string representation of the event
+  */
+  tsapi const char* TSHttpEventNameLookup(TSEvent event);
 
 #ifdef __cplusplus
 }