You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by so...@apache.org on 2017/07/26 23:56:44 UTC

[trafficserver] 02/02: TS-4930: Removes an old test file, it duplicates HdrTest.cc

This is an automated email from the ASF dual-hosted git repository.

sorber pushed a commit to branch 6.2.x
in repository https://gitbox.apache.org/repos/asf/trafficserver.git

commit 86102d266d31aa10351cf8d06a57348d0bbaa8a0
Author: Leif Hedstrom <zw...@apache.org>
AuthorDate: Tue Oct 4 20:44:39 2016 -0600

    TS-4930: Removes an old test file, it duplicates HdrTest.cc
    
    (cherry picked from commit 0fa3b355d698a27c1b6056db70bfd3d53eaec11c)
    
     Conflicts:
    	proxy/hdrs/test_header.cc
---
 proxy/hdrs/Makefile.am    |   1 -
 proxy/hdrs/test_header.cc | 981 ----------------------------------------------
 2 files changed, 982 deletions(-)

diff --git a/proxy/hdrs/Makefile.am b/proxy/hdrs/Makefile.am
index 504268e..abd55f9 100644
--- a/proxy/hdrs/Makefile.am
+++ b/proxy/hdrs/Makefile.am
@@ -75,5 +75,4 @@ test_mime_LDFLAGS = @EXTRA_CXX_LDFLAGS@ @LIBTOOL_LINK_FLAGS@
 test_mime_SOURCES = test_mime.cc
 
 #test_UNUSED_SOURCES = \
-#  test_header.cc \
 #  test_urlhash.cc
diff --git a/proxy/hdrs/test_header.cc b/proxy/hdrs/test_header.cc
deleted file mode 100644
index 9f218ec..0000000
--- a/proxy/hdrs/test_header.cc
+++ /dev/null
@@ -1,981 +0,0 @@
-/** @file
-
-  test code for sanity checking the header system is functioning properly
-
-  @section license License
-
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
- */
-
-#include <stdlib.h>
-#include <string.h>
-
-#include "ts/Arena.h"
-#include "HTTP.h"
-// #include "Marshal.h"
-#include "MIME.h"
-#include "ts/Regex.h"
-#include "URL.h"
-#include "HttpCompat.h"
-
-static void test_parse_date();
-static void test_format_date();
-static void test_url();
-static void test_mime();
-static void test_http_parser_eos_boundary_cases();
-static void test_http();
-static void test_http_mutation();
-static void test_arena();
-static void test_regex();
-static void test_accept_language_match();
-static void test_str_replace_slice();
-static void bri_box(char *s);
-
-int
-main(int argc, char *argv[])
-{
-  hdrtoken_init();
-  url_init();
-  mime_init();
-  http_init();
-
-  test_str_replace_slice();
-  test_accept_language_match();
-  test_parse_date();
-  test_format_date();
-  test_url();
-  test_arena();
-  test_regex();
-  test_http_mutation();
-  test_http_parser_eos_boundary_cases();
-  test_mime();
-  test_http();
-  return (0);
-}
-
-static void
-test_parse_date()
-{
-  static struct {
-    const char *fast;
-    const char *slow;
-  } dates[] = {{"Sun, 06 Nov 1994 08:49:37 GMT", "Sunday, 06-Nov-1994 08:49:37 GMT"},
-               {"Mon, 07 Nov 1994 08:49:37 GMT", "Monday, 07-Nov-1994 08:49:37 GMT"},
-               {"Tue, 08 Nov 1994 08:49:37 GMT", "Tuesday, 08-Nov-1994 08:49:37 GMT"},
-               {"Wed, 09 Nov 1994 08:49:37 GMT", "Wednesday, 09-Nov-1994 08:49:37 GMT"},
-               {"Thu, 10 Nov 1994 08:49:37 GMT", "Thursday, 10-Nov-1994 08:49:37 GMT"},
-               {"Fri, 11 Nov 1994 08:49:37 GMT", "Friday, 11-Nov-1994 08:49:37 GMT"},
-               {"Sat, 11 Nov 1994 08:49:37 GMT", "Saturday, 11-Nov-1994 08:49:37 GMT"},
-               {"Sun, 03 Jan 1999 08:49:37 GMT", "Sunday, 03-Jan-1999 08:49:37 GMT"},
-               {"Sun, 07 Feb 1999 08:49:37 GMT", "Sunday, 07-Feb-1999 08:49:37 GMT"},
-               {"Sun, 07 Mar 1999 08:49:37 GMT", "Sunday, 07-Mar-1999 08:49:37 GMT"},
-               {"Sun, 04 Apr 1999 08:49:37 GMT", "Sunday, 04-Apr-1999 08:49:37 GMT"},
-               {"Sun, 02 May 1999 08:49:37 GMT", "Sunday, 02-May-1999 08:49:37 GMT"},
-               {"Sun, 06 Jun 1999 08:49:37 GMT", "Sunday, 06-Jun-1999 08:49:37 GMT"},
-               {"Sun, 04 Jul 1999 08:49:37 GMT", "Sunday, 04-Jul-1999 08:49:37 GMT"},
-               {"Sun, 01 Aug 1999 08:49:37 GMT", "Sunday, 01-Aug-1999 08:49:37 GMT"},
-               {"Sun, 05 Sep 1999 08:49:37 GMT", "Sunday, 05-Sep-1999 08:49:37 GMT"},
-               {"Sun, 03 Oct 1999 08:49:37 GMT", "Sunday, 03-Oct-1999 08:49:37 GMT"},
-               {"Sun, 07 Nov 1999 08:49:37 GMT", "Sunday, 07-Nov-1999 08:49:37 GMT"},
-               {"Sun, 05 Dec 1999 08:49:37 GMT", "Sunday, 05-Dec-1999 08:49:37 GMT"},
-               {NULL, NULL}};
-
-  int i;
-  int failures = 0;
-  time_t fast_t, slow_t;
-
-  bri_box("test_parse_date");
-
-  for (i = 0; dates[i].fast; i++) {
-    fast_t = mime_parse_date(dates[i].fast, dates[i].fast + strlen(dates[i].fast));
-    slow_t = mime_parse_date(dates[i].slow, dates[i].slow + strlen(dates[i].slow));
-    // compare with strptime here!
-    if (fast_t != slow_t) {
-      printf("FAILED: date %d (%s) != %d (%s)\n", fast_t, dates[i].fast, slow_t, dates[i].slow);
-      ++failures;
-    }
-  }
-
-  printf("*** %s ***\n", (failures ? "FAILED" : "PASSED"));
-}
-
-static void
-test_format_date()
-{
-  static char *dates[] = {"Sun, 06 Nov 1994 08:49:37 GMT", "Sun, 03 Jan 1999 08:49:37 GMT", "Sun, 05 Dec 1999 08:49:37 GMT",
-                          "Tue, 25 Apr 2000 20:29:53 GMT", NULL};
-
-  bri_box("test_format_date");
-
-  // (1) Test a few hand-created dates
-
-  int i;
-  time_t t, t2;
-  char buffer[128], buffer2[128];
-  static char *envstr = "TZ=GMT";
-  int failures        = 0;
-
-  // shift into GMT timezone for cftime conversions
-  putenv(envstr);
-  tzset();
-
-  for (i = 0; dates[i]; i++) {
-    t = mime_parse_date(dates[i], dates[i] + strlen(dates[i]));
-
-    cftime(buffer, "%a, %d %b %Y %T %Z", &t);
-    if (memcmp(dates[i], buffer, 29) != 0) {
-      printf("FAILED: original date doesn't match cftime date\n");
-      printf("  input date:  %s\n", dates[i]);
-      printf("  cftime date: %s\n", buffer);
-      ++failures;
-    }
-
-    mime_format_date(buffer, t);
-    if (memcmp(dates[i], buffer, 29) != 0) {
-      printf("FAILED: original date doesn't match mime_format_date date\n");
-      printf("  input date:  %s\n", dates[i]);
-      printf("  cftime date: %s\n", buffer);
-      ++failures;
-    }
-  }
-
-  // (2) test a few times per day from 1/1/1970 to past 2010
-
-  for (t = 0; t < 40 * 366 * (24 * 60 * 60); t += drand48() * (24 * 60 * 60)) {
-    cftime(buffer, "%a, %d %b %Y %T %Z", &t);
-    //      printf("%s\n",buffer);
-
-    t2 = mime_parse_date(buffer, buffer + strlen(buffer));
-    if (t2 != t) {
-      printf("FAILED: parsed time_t doesn't match original time_t\n");
-      printf("  input time_t:  %d (%s)\n", t, buffer);
-      printf("  parsed time_t: %d\n", t2);
-      ++failures;
-    }
-
-    mime_format_date(buffer2, t2);
-    if (memcmp(buffer, buffer2, 29) != 0) {
-      printf("FAILED: formatted date doesn't match original date\n");
-      printf("  original date:  %s\n", buffer);
-      printf("  formatted date: %s\n", buffer2);
-      ++failures;
-    }
-  }
-  printf("*** %s ***\n", (failures ? "FAILED" : "PASSED"));
-}
-
-static void
-test_url()
-{
-  static const char *strs[] = {
-    "http://some.place/path;params?query#fragment",
-
-    // Start with an easy one...
-    "http://trafficserver.apache.org/index.html",
-
-    "cheese://bogosity",
-
-    "some.place", "some.place/", "http://some.place", "http://some.place/", "http://some.place/path",
-    "http://some.place/path;params", "http://some.place/path;params?query", "http://some.place/path;params?query#fragment",
-    "http://some.place/path?query#fragment", "http://some.place/path#fragment",
-
-    "some.place:80", "some.place:80/", "http://some.place:80", "http://some.place:80/",
-
-    "foo@some.place:80", "foo@some.place:80/", "http://foo@some.place:80", "http://foo@some.place:80/",
-
-    "foo:bar@some.place:80", "foo:bar@some.place:80/", "http://foo:bar@some.place:80", "http://foo:bar@some.place:80/",
-
-    "foo:bar@some.place", "foo:bar@some.place/", "http://foo:bar@some.place", "http://foo:bar@some.place/",
-
-    "pnm://foo:bar@some.place:80/path;params?query#fragment", "rtsp://foo:bar@some.place:80/path;params?query#fragment",
-    "rtspu://foo:bar@some.place:80/path;params?query#fragment",
-    "/finance/external/cbsm/*http://cbs.marketwatch.com/archive/19990713/news/current/net.htx?source=blq/yhoo&dist=yhoo"};
-  static int nstrs = sizeof(strs) / sizeof(strs[0]);
-
-  int err, failed;
-  URL url;
-  const char *start;
-  const char *end;
-  int i, old_length, new_length;
-
-  bri_box("test_url");
-
-  failed = 0;
-  for (i = 0; i < nstrs; i++) {
-    old_length = strlen(strs[i]);
-    start      = strs[i];
-    end        = start + old_length;
-
-    url.create(NULL);
-    err = url.parse(&start, end);
-    if (err < 0) {
-      failed = 1;
-      break;
-    }
-
-    char print_buf[1024];
-    new_length = 0;
-    int offset = 0;
-    url.print(print_buf, 1024, &new_length, &offset);
-    print_buf[new_length] = '\0';
-
-    char *fail_text = NULL;
-
-    if (old_length == new_length) {
-      if (memcmp(print_buf, strs[i], new_length) != 0)
-        fail_text = "URLS DIFFER";
-    } else if (old_length == new_length - 1) {
-      // Check to see if the difference is the trailing
-      //   slash we add
-      if (memcmp(print_buf, strs[i], old_length) != 0 || print_buf[new_length - 1] != '/' || (strs[i])[old_length - 1] == '/') {
-        fail_text = "TRAILING SLASH";
-      }
-    } else {
-      fail_text = "LENGTHS DIFFER";
-    }
-
-    if (fail_text) {
-      failed = 1;
-      printf("%16s: OLD: (%4d) %s\n", fail_text, old_length, strs[i]);
-      printf("%16s: NEW: (%4d) %s\n", "", new_length, print_buf);
-      obj_describe(url.m_url_impl, true);
-    }
-
-    url.destroy();
-  }
-
-  printf("*** %s ***\n", (failed ? "FAILED" : "PASSED"));
-}
-
-static void
-test_mime()
-{
-  static const char mime[] = {//        "Date: Tuesday, 08-Dec-98 20:32:17 GMT\r\n"
-                              "Date: 6 Nov 1994 08:49:37 GMT\r\n"
-                              "Max-Forwards: 65535\r\n"
-                              "Cache-Control: private\r\n"
-                              "accept: foo\r\n"
-                              "accept: bar\n"
-                              ": (null) field name\r\n"
-                              "aCCept: \n"
-                              "ACCEPT\r\n"
-                              "foo: bar\r\n"
-                              "foo: argh\r\n"
-                              "word word: word \r\n"
-                              "accept: \"fazzle, dazzle\"\r\n"
-                              "accept: 1, 2, 3, 4, 5, 6, 7, 8\r\n"
-                              "continuation: part1\r\n"
-                              " part2\r\n"
-                              "scooby: doo\r\n"
-                              "scooby : doo\r\n"
-                              "bar: foo\r\n"
-                              "\r\n"};
-
-  int err;
-  MIMEHdr hdr;
-  MIMEParser parser;
-  const char *start;
-  const char *end;
-
-  bri_box("test_mime");
-
-  printf("   <<< MUST BE HAND-VERIFIED >>>\n\n");
-
-  start = mime;
-  end   = start + strlen(start);
-
-  mime_parser_init(&parser);
-
-  bool must_copy_strs = 0;
-
-  hdr.create(NULL);
-  err = hdr.parse(&parser, &start, end, must_copy_strs, false);
-
-  if (err < 0) {
-    return;
-  }
-
-  hdr.field_delete("not_there", 9);
-  hdr.field_delete("accept", 6);
-  hdr.field_delete("scooby", 6);
-  hdr.field_delete("scooby", 6);
-  hdr.field_delete("bar", 3);
-  hdr.field_delete("continuation", 12);
-
-  int count = hdr.fields_count();
-  printf("hdr.fields_count() = %d\n", count);
-
-  int i_max_forwards = hdr.value_get_int("Max-Forwards", 12);
-  int u_max_forwards = hdr.value_get_uint("Max-Forwards", 12);
-  printf("i_max_forwards = %d   u_max_forwards = %d\n", i_max_forwards, u_max_forwards);
-
-  hdr.set_age(9999);
-
-  int length = hdr.length_get();
-  printf("hdr.length_get() = %d\n", length);
-
-  time_t t0, t1, t2;
-
-  t0 = hdr.get_date();
-  if (t0 == 0)
-    printf("FAILED: Initial date is zero but shouldn't be\n");
-
-  t1 = time(NULL);
-  hdr.set_date(t1);
-  t2 = hdr.get_date();
-  if (t1 != t2) {
-    printf("FAILED: set_date(%ld) ... get_date = %ld\n\n", t1, t2);
-  }
-
-  hdr.value_append("Cache-Control", 13, "no-cache", 8, 1);
-
-  MIMEField *cc_field;
-  StrList slist;
-  int slist_count;
-  cc_field    = hdr.field_find("Cache-Control", 13);
-  slist_count = cc_field->value_get_comma_list(&slist); // FIX: correct usage?
-
-  mime_parser_clear(&parser);
-
-  hdr.print(NULL, 0, NULL, NULL);
-  printf("\n");
-
-  obj_describe((HdrHeapObjImpl *)(hdr.m_mime), true);
-
-  hdr.fields_clear();
-
-  hdr.destroy();
-}
-
-static void
-test_http_parser_eos_boundary_cases()
-{
-  struct {
-    char *msg;
-    int expected_result;
-    int expected_bytes_consumed;
-  } tests[] = {{"GET /index.html HTTP/1.0\r\n", PARSE_DONE, 26},
-               {"GET /index.html HTTP/1.0\r\n\r\n***BODY****", PARSE_DONE, 28},
-               {"GET /index.html HTTP/1.0\r\nUser-Agent: foobar\r\n\r\n***BODY****", PARSE_DONE, 48},
-               {"GET", PARSE_ERROR, 3},
-               {"GET /index.html", PARSE_ERROR, 15},
-               {"GET /index.html\r\n", PARSE_DONE, 17},
-               {"GET /index.html HTTP/1.0", PARSE_ERROR, 24},
-               {"GET /index.html HTTP/1.0\r", PARSE_ERROR, 25},
-               {"GET /index.html HTTP/1.0\n", PARSE_DONE, 25},
-               {"GET /index.html HTTP/1.0\n\n", PARSE_DONE, 26},
-               {"GET /index.html HTTP/1.0\r\n\r\n", PARSE_DONE, 28},
-               {"GET /index.html HTTP/1.0\r\nUser-Agent: foobar", PARSE_ERROR, 44},
-               {"GET /index.html HTTP/1.0\r\nUser-Agent: foobar\n", PARSE_DONE, 45},
-               {"GET /index.html HTTP/1.0\r\nUser-Agent: foobar\r\n", PARSE_DONE, 46},
-               {"GET /index.html HTTP/1.0\r\nUser-Agent: foobar\r\n\r\n", PARSE_DONE, 48},
-               {"GET /index.html HTTP/1.0\nUser-Agent: foobar\n", PARSE_DONE, 44},
-               {"GET /index.html HTTP/1.0\nUser-Agent: foobar\nBoo: foo\n", PARSE_DONE, 53},
-               {"GET /index.html HTTP/1.0\r\nUser-Agent: foobar\r\n", PARSE_DONE, 46},
-               {"GET /index.html HTTP/1.0\r\n", PARSE_DONE, 26},
-               {"", PARSE_DONE, 0},
-               {NULL, 0, 0}};
-
-  int i, ret, bytes_consumed;
-  const char *orig_start;
-  const char *start;
-  const char *end;
-  HTTPParser parser;
-
-  int failures = 0;
-
-  bri_box("test_http_parser_eos_boundary_cases");
-
-  http_parser_init(&parser);
-
-  for (i = 0; tests[i].msg != NULL; i++) {
-    HTTPHdr req_hdr;
-
-    start = tests[i].msg;
-    end   = start + strlen(start); // 1 character past end of string
-
-    req_hdr.create(HTTP_TYPE_REQUEST);
-
-    http_parser_clear(&parser);
-    //      http_parser_init (&parser);
-
-    orig_start     = start;
-    ret            = req_hdr.parse_req(&parser, &start, end, true);
-    bytes_consumed = start - orig_start;
-
-    printf("======== test %d (length=%d, consumed=%d)\n", i, strlen(tests[i].msg), bytes_consumed);
-    printf("[%s]\n", tests[i].msg);
-    printf("\n[");
-    req_hdr.print(NULL, 0, NULL, NULL);
-    printf("]\n\n");
-
-    if ((ret != tests[i].expected_result) || (bytes_consumed != tests[i].expected_bytes_consumed)) {
-      ++failures;
-      printf("FAILED: test %d: retval <expected %d, got %d>, eaten <expected %d, got %d>\n\n", i, tests[i].expected_result, ret,
-             tests[i].expected_bytes_consumed, bytes_consumed);
-    } else {
-      printf("SUCCESS: test %d: retval <expected %d, got %d>, eaten <expected %d, got %d>\n\n", i, tests[i].expected_result, ret,
-             tests[i].expected_bytes_consumed, bytes_consumed);
-    }
-
-    req_hdr.destroy();
-  }
-
-  if (failures)
-    printf("*** %s ***\n", (failures ? "FAILED" : "PASSED"));
-}
-
-static void
-test_http_aux(const char *request, const char *response)
-{
-  int err;
-  HTTPHdr req_hdr, rsp_hdr;
-  HTTPParser parser;
-  const char *start;
-  const char *end;
-
-  bri_box("test_http");
-
-  printf("   <<< MUST BE HAND-VERIFIED >>>\n\n");
-
-  /*** (1) parse the request string into req_hdr ***/
-
-  start = request;
-  end   = start + strlen(start); // 1 character past end of string
-
-  http_parser_init(&parser);
-
-  req_hdr.create(HTTP_TYPE_REQUEST);
-  rsp_hdr.create(HTTP_TYPE_RESPONSE);
-
-  printf("======== parsing\n\n");
-  while (start < end) {
-    err = req_hdr.parse_req(&parser, &start, end, false);
-    if (err != PARSE_CONT)
-      break;
-    end = start + strlen(start);
-  }
-  if (err == PARSE_ERROR)
-    printf("  *** PARSE_ERROR ***\n");
-
-  /*** useless copy to exercise copy function ***/
-
-  HTTPHdr new_hdr;
-  new_hdr.create(HTTP_TYPE_REQUEST);
-  new_hdr.copy(&req_hdr);
-  new_hdr.destroy();
-
-  /*** (2) print out the request ***/
-
-  printf("======== real request (length=%d)\n\n", strlen(request));
-  printf("%s\n", request);
-
-  printf("\n[");
-  req_hdr.print(NULL, 0, NULL, NULL);
-  printf("]\n\n");
-
-  obj_describe(req_hdr.m_http, true);
-
-  // req_hdr.destroy ();
-  // ink_release_assert(!"req_hdr.destroy() not defined");
-
-  /*** (3) parse the response string into rsp_hdr ***/
-
-  start = response;
-  end   = start + strlen(start);
-
-  http_parser_clear(&parser);
-  http_parser_init(&parser);
-
-  while (start < end) {
-    err = rsp_hdr.parse_resp(&parser, &start, start + 1, false);
-    if (err != PARSE_CONT)
-      break;
-  }
-  if (err == PARSE_ERROR)
-    printf("  *** PARSE_ERROR ***\n");
-
-  http_parser_clear(&parser);
-
-  /*** (4) print out the response ***/
-
-  printf("\n======== real response (length=%d)\n\n", strlen(response));
-  printf("%s\n", response);
-
-  printf("\n[");
-  rsp_hdr.print(NULL, 0, NULL, NULL);
-  printf("]\n\n");
-
-  obj_describe(rsp_hdr.m_http, true);
-
-#define NNN 1000
-  {
-    char buf[NNN];
-    int bufindex, last_bufindex;
-    int dumpoffset;
-    int tmp;
-    int err;
-    int i;
-
-    bufindex = 0;
-
-    do {
-      last_bufindex = bufindex;
-      tmp           = bufindex;
-      buf[0]        = '#'; // make it obvious if hdr.print doesn't print anything
-      err           = rsp_hdr.print(buf, NNN, &bufindex, &tmp);
-
-      // printf("test_header: tmp = %d  err = %d  bufindex = %d\n", tmp, err, bufindex);
-      putchar('{');
-      for (i = 0; i < bufindex - last_bufindex; i++) {
-        if (!iscntrl(buf[i]))
-          putchar(buf[i]);
-        else
-          printf("\\%o", buf[i]);
-      }
-      putchar('}');
-    } while (!err);
-  }
-
-  // rsp_hdr.print (NULL, 0, NULL, NULL);
-
-  req_hdr.destroy();
-  rsp_hdr.destroy();
-}
-
-static void
-test_http()
-{
-  printf("   <<< MUST BE HAND-VERIFIED >>>\n\n");
-
-  static const char request0[] = {"GET http://www.news.com:80/ HTTP/1.0\r\n"
-                                  "Proxy-Connection: Keep-Alive\r\n"
-                                  "User-Agent: Mozilla/4.04 [en] (X11; I; Linux 2.0.33 i586)\r\n"
-                                  "Pragma: no-cache\r\n"
-                                  "Host: www.news.com\r\n"
-                                  "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*\r\n"
-                                  "Accept-Language: en\r\n"
-                                  "Accept-Charset: iso-8859-1, *, utf-8\r\n"
-                                  "Cookie: u_vid_0_0=00031ba3; "
-                                  "s_cur_0_0=0101sisi091314775496e7d3Jx4+POyJakrMybmNOsq6XOn5bVn5Z6a4Ln5crU5M7Rxq2lm5aWpqupo20=; "
-                                  "SC_Cnet001=Sampled; SC_Cnet002=Sampled\r\n"
-                                  "Client-ip: D1012148\r\n"
-                                  "Foo: abcdefghijklmnopqrtu\r\n"
-                                  "\r\n"};
-
-  static const char request09[] = {"GET /index.html\r\n"
-                                   "\r\n"};
-
-  static const char request1[] = {"GET http://people.netscape.com/jwz/hacks-1.gif HTTP/1.0\r\n"
-                                  "If-Modified-Since: Wednesday, 26-Feb-97 06:58:17 GMT; length=842\r\n"
-                                  "Referer: http://people.netscape.com/jwz/index.html\r\n"
-                                  "Proxy-Connection: Keep-Alive\r\n"
-                                  "User-Agent:  Mozilla/3.01 (X11; I; Linux 2.0.28 i586)\r\n"
-                                  "Pragma: no-cache\r\n"
-                                  "Host: people.netscape.com\r\n"
-                                  "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*\r\n"
-                                  "\r\n"};
-
-  static const char request_no_colon[] = {"GET http://people.netscape.com/jwz/hacks-1.gif HTTP/1.0\r\n"
-                                          "If-Modified-Since Wednesday, 26-Feb-97 06:58:17 GMT; length=842\r\n"
-                                          "Referer http://people.netscape.com/jwz/index.html\r\n"
-                                          "Proxy-Connection Keep-Alive\r\n"
-                                          "User-Agent  Mozilla/3.01 (X11; I; Linux 2.0.28 i586)\r\n"
-                                          "Pragma no-cache\r\n"
-                                          "Host people.netscape.com\r\n"
-                                          "Accept image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*\r\n"
-                                          "\r\n"};
-
-  static const char request_no_val[] = {"GET http://people.netscape.com/jwz/hacks-1.gif HTTP/1.0\r\n"
-                                        "If-Modified-Since:\r\n"
-                                        "Referer:     "
-                                        "Proxy-Connection:\r\n"
-                                        "User-Agent:     \r\n"
-                                        "Host:::\r\n"
-                                        "\r\n"};
-
-  static const char request_multi_fblock[] = {"GET http://people.netscape.com/jwz/hacks-1.gif HTTP/1.0\r\n"
-                                              "If-Modified-Since: Wednesday, 26-Feb-97 06:58:17 GMT; length=842\r\n"
-                                              "Referer: http://people.netscape.com/jwz/index.html\r\n"
-                                              "Proxy-Connection: Keep-Alive\r\n"
-                                              "User-Agent:  Mozilla/3.01 (X11; I; Linux 2.0.28 i586)\r\n"
-                                              "Pragma: no-cache\r\n"
-                                              "Host: people.netscape.com\r\n"
-                                              "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*\r\n"
-                                              "X-1: blah\r\n"
-                                              "X-2: blah\r\n"
-                                              "X-3: blah\r\n"
-                                              "X-4: blah\r\n"
-                                              "X-5: blah\r\n"
-                                              "X-6: blah\r\n"
-                                              "X-7: blah\r\n"
-                                              "X-8: blah\r\n"
-                                              "X-9: blah\r\n"
-                                              "Pragma: no-cache\r\n"
-                                              "X-X-1: blah\r\n"
-                                              "X-X-2: blah\r\n"
-                                              "X-X-3: blah\r\n"
-                                              "X-X-4: blah\r\n"
-                                              "X-X-5: blah\r\n"
-                                              "X-X-6: blah\r\n"
-                                              "X-X-7: blah\r\n"
-                                              "X-X-8: blah\r\n"
-                                              "X-X-9: blah\r\n"
-                                              "\r\n"};
-
-  static const char request_leading_space[] = {" GET http://www.news.com:80/ HTTP/1.0\r\n"
-                                               "Proxy-Connection: Keep-Alive\r\n"
-                                               "User-Agent: Mozilla/4.04 [en] (X11; I; Linux 2.0.33 i586)\r\n"
-                                               "\r\n"};
-
-  static const char request_padding[] = {"GET http://www.padding.com:80/ HTTP/1.0\r\n"
-                                         "X-1: blah1\r\n"
-                                         //       "X-2:  blah2\r\n"
-                                         "X-3:   blah3\r\n"
-                                         //       "X-4:    blah4\r\n"
-                                         "X-5:     blah5\r\n"
-                                         //       "X-6:      blah6\r\n"
-                                         "X-7:       blah7\r\n"
-                                         //       "X-8:        blah8\r\n"
-                                         "X-9:         blah9\r\n"
-                                         "\r\n"};
-
-  static const char request_09p[] = {"GET http://www.news09.com/\r\n"
-                                     "\r\n"};
-
-  static const char request_09ht[] = {"GET http://www.news09.com/ HT\r\n"
-                                      "\r\n"};
-
-  static const char request_11[] = {"GET http://www.news.com/ HTTP/1.1\r\n"
-                                    "Connection: close\r\n"
-                                    "\r\n"};
-
-  static const char request_unterminated[] = {"GET http://www.unterminated.com/ HTTP/1.1"};
-
-  static const char request_blank[] = {"\r\n"};
-
-  static const char request_blank2[] = {"\r\n"
-                                        "\r\n"};
-
-  static const char request_blank3[] = {"     "
-                                        "\r\n"};
-
-  ////////////////////////////////////////////////////
-
-  static const char response0[] = {"HTTP/1.0 200 OK\r\n"
-                                   "MIME-Version: 1.0\r\n"
-                                   "Server: WebSTAR/2.1 ID/30013\r\n"
-                                   "Content-Type: text/html\r\n"
-                                   "Content-Length: 939\r\n"
-                                   "Last-Modified: Thursday, 01-Jan-04 05:00:00 GMT\r\n"
-                                   "\r\n"};
-
-  static const char response1[] = {"HTTP/1.0 200 OK\r\n"
-                                   "Server: Netscape-Communications/1.12\r\n"
-                                   "Date: Tuesday, 08-Dec-98 20:32:17 GMT\r\n"
-                                   "Content-Type: text/html\r\n"
-                                   "\r\n"};
-
-  static const char response_no_colon[] = {"HTTP/1.0 200 OK\r\n"
-                                           "Server Netscape-Communications/1.12\r\n"
-                                           "Date: Tuesday, 08-Dec-98 20:32:17 GMT\r\n"
-                                           "Content-Type: text/html\r\n"
-                                           "\r\n"};
-
-  static const char response_unterminated[] = {"HTTP/1.0 200 OK"};
-
-  static const char response09[] = {""};
-
-  static const char response_blank[] = {"\r\n"};
-
-  static const char response_blank2[] = {"\r\n"
-                                         "\r\n"};
-
-  static const char response_blank3[] = {"     "
-                                         "\r\n"};
-
-  test_http_aux(request0, response0);
-  test_http_aux(request09, response09);
-  test_http_aux(request1, response1);
-  test_http_aux(request_no_colon, response_no_colon);
-  test_http_aux(request_no_val, response_no_colon);
-  test_http_aux(request_leading_space, response0);
-  test_http_aux(request_multi_fblock, response0);
-  test_http_aux(request_padding, response0);
-  test_http_aux(request_09p, response0);
-  test_http_aux(request_09ht, response0);
-  test_http_aux(request_11, response0);
-  test_http_aux(request_unterminated, response_unterminated);
-  test_http_aux(request_blank, response_blank);
-  test_http_aux(request_blank2, response_blank2);
-  test_http_aux(request_blank3, response_blank3);
-}
-
-static void
-test_http_mutation()
-{
-  bri_box("test_http_mutation");
-
-  printf("   <<< MUST BE HAND-VERIFIED >>>\n\n");
-
-  HTTPHdr resp_hdr;
-  int err, i;
-  HTTPParser parser;
-  const char base_resp[] = "HTTP/1.0 200 OK\r\n\r\n";
-  const char *start, *end;
-
-  /*** (1) parse the response string into req_hdr ***/
-
-  start = base_resp;
-  end   = start + strlen(start);
-
-  http_parser_init(&parser);
-
-  resp_hdr.create(HTTP_TYPE_RESPONSE);
-
-  while (start < end) {
-    err = resp_hdr.parse_resp(&parser, &start, end, false);
-    if (err != PARSE_CONT)
-      break;
-    end = start + strlen(start);
-  }
-
-  printf("\n======== before mutation ==========\n\n");
-  printf("\n[");
-  resp_hdr.print(NULL, 0, NULL, NULL);
-  printf("]\n\n");
-
-  /*** (2) add in a bunch of header fields ****/
-  char field_name[1024];
-  char field_value[1024];
-  for (i = 1; i <= 100; i++) {
-    sprintf(field_name, "Test%d", i);
-    sprintf(field_value, "%d %d %d %d %d", i, i, i, i, i);
-    resp_hdr.value_set(field_name, strlen(field_name), field_value, strlen(field_value));
-  }
-
-  /**** (3) delete all the even numbered fields *****/
-  for (i = 2; i <= 100; i += 2) {
-    sprintf(field_name, "Test%d", i);
-    resp_hdr.field_delete(field_name, strlen(field_name));
-  }
-
-  /***** (4) add in secondary fields for all multiples of 3 ***/
-  for (i = 3; i <= 100; i += 3) {
-    sprintf(field_name, "Test%d", i);
-    MIMEField *f = resp_hdr.field_create(field_name, strlen(field_name));
-    resp_hdr.field_attach(f);
-    sprintf(field_value, "d %d %d %d %d %d", i, i, i, i, i);
-    f->value_set(resp_hdr.m_heap, resp_hdr.m_mime, field_value, strlen(field_value));
-  }
-
-  /***** (5) append all fields with multiples of 5 ***/
-  for (i = 5; i <= 100; i += 5) {
-    sprintf(field_name, "Test%d", i);
-    sprintf(field_value, "a %d", i);
-
-    resp_hdr.value_append(field_name, strlen(field_name), field_value, strlen(field_value), true);
-  }
-
-  /**** (6) delete all multiples of nine *****/
-  for (i = 9; i <= 100; i += 9) {
-    sprintf(field_name, "Test%d", i);
-    resp_hdr.field_delete(field_name, strlen(field_name));
-  }
-
-  printf("\n======== mutated response ==========\n\n");
-  printf("\n[");
-  resp_hdr.print(NULL, 0, NULL, NULL);
-  printf("]\n\n");
-
-  resp_hdr.destroy();
-}
-
-static int
-test_arena_aux(Arena *arena, int len)
-{
-  char *str      = arena->str_alloc(len);
-  int verify_len = arena->str_length(str);
-
-  if (len != verify_len) {
-    printf("FAILED: reuqested %d, got %u bytes\n", len, verify_len);
-    return (1); // 1 error
-  } else {
-    return (0); // no errors
-  }
-}
-
-static void
-test_arena()
-{
-  bri_box("test_arena");
-
-  Arena *arena;
-  char *str;
-  int failures = 0;
-
-  arena = new Arena;
-
-  failures += test_arena_aux(arena, 1);
-  failures += test_arena_aux(arena, 127);
-  failures += test_arena_aux(arena, 128);
-  failures += test_arena_aux(arena, 129);
-  failures += test_arena_aux(arena, 255);
-  failures += test_arena_aux(arena, 256);
-  failures += test_arena_aux(arena, 16384);
-  failures += test_arena_aux(arena, 16385);
-  failures += test_arena_aux(arena, 16511);
-  failures += test_arena_aux(arena, 16512);
-  failures += test_arena_aux(arena, 2097152);
-  failures += test_arena_aux(arena, 2097153);
-  failures += test_arena_aux(arena, 2097279);
-  failures += test_arena_aux(arena, 2097280);
-
-  delete arena;
-
-  printf("*** %s ***\n", (failures ? "FAILED" : "PASSED"));
-}
-
-static void
-test_regex()
-{
-  DFA dfa;
-
-  bri_box("test_regex");
-
-  printf("   <<< MUST BE HAND-VERIFIED >>>\n\n");
-
-  dfa.compile("(.*\\.inktomi\\.com#1#)|(.*\\.inktomi\\.org#2#)");
-  printf("match www.example.com [%d]\n", dfa.match("www.example.com"));
-  printf("match www.apache.org [%d]\n", dfa.match("www.apache.org"));
-}
-
-static void
-test_accept_language_match()
-{
-  bri_box("test_accept_language_match");
-
-  struct {
-    char *content_language;
-    char *accept_language;
-    float Q;
-    int L;
-    int I;
-  } test_cases[] = {{"en", "*", 1.0, 1, 1},
-                    {"en", "fr", 0.0, 0, 0},
-                    {"en", "de, fr, en;q=0.7", 0.7, 2, 3},
-                    {"en-cockney", "de, fr, en;q=0.7", 0.7, 3, 3},
-                    {"en-cockney", "de, fr, en-foobar;q=0.8, en;q=0.7", 0.7, 2, 4},
-                    {"en-cockney", "de, fr, en-cockney;q=0.8, en;q=0.7", 0.8, 10, 3},
-                    {"en-cockney", "de, fr, en;q=0.8, en;q=0.7", 0.8, 2, 3},
-                    {"en-cockney", "de, fr, en;q=0.7, en;q=0.8", 0.8, 2, 4},
-                    {"en-cockney", "de, fr, en;q=0.8, en;q=0.8", 0.8, 2, 3},
-                    {"en-cockney", "de, fr, en-cockney;q=0.7, en;q=0.8", 0.7, 10, 3},
-                    {"en-cockney", "de, fr, en;q=0.8, en-cockney;q=0.7", 0.7, 10, 4},
-                    {"en-cockney", "de, fr, en-cockney;q=0.8, en;q=0.8", 0.8, 10, 3},
-                    {"en-cockney", "de, fr, en-cockney;q=0.8, en;q=0.7", 0.8, 10, 3},
-                    {"en-cockney", "de, fr, en-american", 0.0, 0, 0},
-                    {"en-cockney", "de, fr, en;q=0.8, en;q=0.8, *", 0.8, 2, 3},
-                    {"en-cockney", "de, fr, en;q=0.8, en;q=0.8, *;q=0.9", 0.8, 2, 3},
-                    {"en-foobar", "de, fr, en;q=0.8, en;q=0.8, *;q=0.9", 0.8, 2, 3},
-                    {"oo-foobar", "de, fr, en;q=0.8, en;q=0.8, *;q=0.9", 0.9, 1, 5},
-                    {"oo-foobar", "de, fr, en;q=0.8, en;q=0.8, *;q=0.9, *", 1.0, 1, 6},
-                    {"oo-foobar", "de, fr, en;q=0.8, en;q=0.8, *, *;q=0.9", 1.0, 1, 5},
-                    {"fr-belgian", "de, fr;hi-there;q=0.9, fr;q=0.8, en", 0.9, 2, 2},
-                    {"fr-belgian", "de, fr;q=0.8, fr;hi-there;q=0.9, en", 0.9, 2, 3},
-                    {NULL, NULL, 0.0}};
-
-  int i, I, L;
-  float Q;
-  int failures = 0;
-
-  for (i = 0; test_cases[i].accept_language; i++) {
-    Q = HttpCompat::match_accept_language(test_cases[i].content_language, strlen(test_cases[i].content_language),
-                                          test_cases[i].accept_language, strlen(test_cases[i].accept_language), &L, &I);
-
-    if (Q != test_cases[i].Q) {
-      printf(
-        "FAILED: got { Q = %.3f; L = %d; I = %d; }, expected { Q = %.3f; L = %d; I = %d; }, from matching\n  '%s' against '%s'\n",
-        Q, L, I, test_cases[i].Q, test_cases[i].L, test_cases[i].I, test_cases[i].content_language, test_cases[i].accept_language);
-      ++failures;
-    }
-  }
-
-  printf("*** %s ***\n", (failures ? "FAILED" : "PASSED"));
-}
-
-static void
-test_str_replace_slice()
-{
-  bri_box("test_str_replace_slice");
-
-  int len;
-  char buff[256];
-  HdrHeap *heap = new_HdrHeap();
-  const char *orig, *targ, *repl, *good, *retr;
-  int failures = 0;
-
-  // (1) prepend
-  ink_strlcpy(buff, "de, fr, en", sizeof(buff));
-  targ = buff + 0;
-  repl = "oo, ";
-  good = "oo, de, fr, en";
-  retr = mime_field_value_str_replace_slice(heap, &len, buff, strlen(buff), targ, 0, repl, strlen(repl));
-  if ((len != strlen(good)) || (memcmp(good, retr, len) != 0)) {
-    printf("FAILED: expected %d byte str \"%s\", got %d byte str \"%.*s\"\n", strlen(good), good, len, len, retr);
-    ++failures;
-  }
-  // (2) append
-  ink_strlcpy(buff, "de, fr, en", sizeof(buff));
-  targ = buff + 10;
-  repl = ", bloop";
-  good = "de, fr, en, bloop";
-  retr = mime_field_value_str_replace_slice(heap, &len, buff, strlen(buff), targ, 0, repl, strlen(repl));
-  if ((len != strlen(good)) || (memcmp(good, retr, len) != 0)) {
-    printf("FAILED: expected %d byte str \"%s\", got %d byte str \"%.*s\"\n", strlen(good), good, len, len, retr);
-    ++failures;
-  }
-  // (3) delete middle
-  ink_strlcpy(buff, "de, fr, en", sizeof(buff));
-  targ = buff + 4;
-  repl = "";
-  good = "de, en";
-  retr = mime_field_value_str_replace_slice(heap, &len, buff, strlen(buff), targ, 4, repl, strlen(repl));
-  if ((len != strlen(good)) || (memcmp(good, retr, len) != 0)) {
-    printf("FAILED: expected %d byte str \"%s\", got %d byte str \"%.*s\"\n", strlen(good), good, len, len, retr);
-    ++failures;
-  }
-
-  printf("*** %s ***\n", (failures ? "FAILED" : "PASSED"));
-}
-
-static void
-bri_box(char *s)
-{
-  int i, len;
-
-  len = strlen(s);
-  printf("\n+-");
-  for (i = 0; i < len; i++)
-    putchar('-');
-  printf("-+\n");
-  printf("| %s |\n", s);
-  printf("+-");
-  for (i = 0; i < len; i++)
-    putchar('-');
-  printf("-+\n\n");
-}

-- 
To stop receiving notification emails like this one, please contact
"commits@trafficserver.apache.org" <co...@trafficserver.apache.org>.