#! /bin/sh
# Generated from testsuite.at by GNU Autoconf 2.71.
#
# Copyright (C) 2009-2017, 2020-2021 Free Software Foundation, Inc.
#
# This test suite is free software; the Free Software Foundation gives
# unlimited permission to copy, distribute and modify it.
## -------------------- ##
## M4sh Initialization. ##
## -------------------- ##

# Be more Bourne compatible
DUALCASE=1; export DUALCASE # for MKS sh
as_nop=:
if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
then :
  emulate sh
  NULLCMD=:
  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
  # is contrary to our usage.  Disable this feature.
  alias -g '${1+"$@"}'='"$@"'
  setopt NO_GLOB_SUBST
else $as_nop
  case `(set -o) 2>/dev/null` in #(
  *posix*) :
    set -o posix ;; #(
  *) :
     ;;
esac
fi



# Reset variables that may have inherited troublesome values from
# the environment.

# IFS needs to be set, to space, tab, and newline, in precisely that order.
# (If _AS_PATH_WALK were called with IFS unset, it would have the
# side effect of setting IFS to empty, thus disabling word splitting.)
# Quoting is to prevent editors from complaining about space-tab.
as_nl='
'
export as_nl
IFS=" ""	$as_nl"

PS1='$ '
PS2='> '
PS4='+ '

# Ensure predictable behavior from utilities with locale-dependent output.
LC_ALL=C
export LC_ALL
LANGUAGE=C
export LANGUAGE

# We cannot yet rely on "unset" to work, but we need these variables
# to be unset--not just set to an empty or harmless value--now, to
# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh).  This construct
# also avoids known problems related to "unset" and subshell syntax
# in other old shells (e.g. bash 2.01 and pdksh 5.2.14).
for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH
do eval test \${$as_var+y} \
  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
done

# Ensure that fds 0, 1, and 2 are open.
if (exec 3>&0) 2>/dev/null; then :; else exec 0</dev/null; fi
if (exec 3>&1) 2>/dev/null; then :; else exec 1>/dev/null; fi
if (exec 3>&2)            ; then :; else exec 2>/dev/null; fi

# The user is always right.
if ${PATH_SEPARATOR+false} :; then
  PATH_SEPARATOR=:
  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
      PATH_SEPARATOR=';'
  }
fi


# Find who we are.  Look in the path if we contain no directory separator.
as_myself=
case $0 in #((
  *[\\/]* ) as_myself=$0 ;;
  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
  IFS=$as_save_IFS
  case $as_dir in #(((
    '') as_dir=./ ;;
    */) ;;
    *) as_dir=$as_dir/ ;;
  esac
    test -r "$as_dir$0" && as_myself=$as_dir$0 && break
  done
IFS=$as_save_IFS

     ;;
esac
# We did not find ourselves, most probably we were run as `sh COMMAND'
# in which case we are not to be found in the path.
if test "x$as_myself" = x; then
  as_myself=$0
fi
if test ! -f "$as_myself"; then
  printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
  exit 1
fi


if test "x$CONFIG_SHELL" = x; then
  as_bourne_compatible="as_nop=:
if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
then :
  emulate sh
  NULLCMD=:
  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
  # is contrary to our usage.  Disable this feature.
  alias -g '\${1+\"\$@\"}'='\"\$@\"'
  setopt NO_GLOB_SUBST
else \$as_nop
  case \`(set -o) 2>/dev/null\` in #(
  *posix*) :
    set -o posix ;; #(
  *) :
     ;;
esac
fi
"
  as_required="as_fn_return () { (exit \$1); }
as_fn_success () { as_fn_return 0; }
as_fn_failure () { as_fn_return 1; }
as_fn_ret_success () { return 0; }
as_fn_ret_failure () { return 1; }

exitcode=0
as_fn_success || { exitcode=1; echo as_fn_success failed.; }
as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
if ( set x; as_fn_ret_success y && test x = \"\$1\" )
then :

else \$as_nop
  exitcode=1; echo positional parameters were not saved.
fi
test x\$exitcode = x0 || exit 1
blah=\$(echo \$(echo blah))
test x\"\$blah\" = xblah || exit 1
test -x / || exit 1"
  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
test \$(( 1 + 1 )) = 2 || exit 1"
  if (eval "$as_required") 2>/dev/null
then :
  as_have_required=yes
else $as_nop
  as_have_required=no
fi
  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null
then :

else $as_nop
  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
as_found=false
for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
do
  IFS=$as_save_IFS
  case $as_dir in #(((
    '') as_dir=./ ;;
    */) ;;
    *) as_dir=$as_dir/ ;;
  esac
  as_found=:
  case $as_dir in #(
	 /*)
	   for as_base in sh bash ksh sh5; do
	     # Try only shells that exist, to save several forks.
	     as_shell=$as_dir$as_base
	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
		    as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null
then :
  CONFIG_SHELL=$as_shell as_have_required=yes
		   if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null
then :
  break 2
fi
fi
	   done;;
       esac
  as_found=false
done
IFS=$as_save_IFS
if $as_found
then :

else $as_nop
  if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
	      as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null
then :
  CONFIG_SHELL=$SHELL as_have_required=yes
fi
fi


      if test "x$CONFIG_SHELL" != x
then :
  export CONFIG_SHELL
             # We cannot yet assume a decent shell, so we have to provide a
# neutralization value for shells without unset; and this also
# works around shells that cannot unset nonexistent variables.
# Preserve -v and -x to the replacement shell.
BASH_ENV=/dev/null
ENV=/dev/null
(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
case $- in # ((((
  *v*x* | *x*v* ) as_opts=-vx ;;
  *v* ) as_opts=-v ;;
  *x* ) as_opts=-x ;;
  * ) as_opts= ;;
esac
exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
# Admittedly, this is quite paranoid, since all the known shells bail
# out after a failed `exec'.
printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2
exit 255
fi

    if test x$as_have_required = xno
then :
  printf "%s\n" "$0: This script requires a shell more modern than all"
  printf "%s\n" "$0: the shells that I found on your system."
  if test ${ZSH_VERSION+y} ; then
    printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should"
    printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later."
  else
    printf "%s\n" "$0: Please tell bug-autoconf@gnu.org about your system,
$0: including any error possibly output before this
$0: message. Then install a modern shell, or manually run
$0: the script under such a shell if you do have one."
  fi
  exit 1
fi
fi
fi
SHELL=${CONFIG_SHELL-/bin/sh}
export SHELL
# Unset more variables known to interfere with behavior of common tools.
CLICOLOR_FORCE= GREP_OPTIONS=
unset CLICOLOR_FORCE GREP_OPTIONS

## --------------------- ##
## M4sh Shell Functions. ##
## --------------------- ##
# as_fn_unset VAR
# ---------------
# Portably unset VAR.
as_fn_unset ()
{
  { eval $1=; unset $1;}
}
as_unset=as_fn_unset


# as_fn_set_status STATUS
# -----------------------
# Set $? to STATUS, without forking.
as_fn_set_status ()
{
  return $1
} # as_fn_set_status

# as_fn_exit STATUS
# -----------------
# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
as_fn_exit ()
{
  set +e
  as_fn_set_status $1
  exit $1
} # as_fn_exit
# as_fn_nop
# ---------
# Do nothing but, unlike ":", preserve the value of $?.
as_fn_nop ()
{
  return $?
}
as_nop=as_fn_nop

# as_fn_mkdir_p
# -------------
# Create "$as_dir" as a directory, including parents if necessary.
as_fn_mkdir_p ()
{

  case $as_dir in #(
  -*) as_dir=./$as_dir;;
  esac
  test -d "$as_dir" || eval $as_mkdir_p || {
    as_dirs=
    while :; do
      case $as_dir in #(
      *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
      *) as_qdir=$as_dir;;
      esac
      as_dirs="'$as_qdir' $as_dirs"
      as_dir=`$as_dirname -- "$as_dir" ||
$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
	 X"$as_dir" : 'X\(//\)[^/]' \| \
	 X"$as_dir" : 'X\(//\)$' \| \
	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
printf "%s\n" X"$as_dir" |
    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
	    s//\1/
	    q
	  }
	  /^X\(\/\/\)[^/].*/{
	    s//\1/
	    q
	  }
	  /^X\(\/\/\)$/{
	    s//\1/
	    q
	  }
	  /^X\(\/\).*/{
	    s//\1/
	    q
	  }
	  s/.*/./; q'`
      test -d "$as_dir" && break
    done
    test -z "$as_dirs" || eval "mkdir $as_dirs"
  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"


} # as_fn_mkdir_p

# as_fn_executable_p FILE
# -----------------------
# Test if FILE is an executable regular file.
as_fn_executable_p ()
{
  test -f "$1" && test -x "$1"
} # as_fn_executable_p
# as_fn_append VAR VALUE
# ----------------------
# Append the text in VALUE to the end of the definition contained in VAR. Take
# advantage of any shell optimizations that allow amortized linear growth over
# repeated appends, instead of the typical quadratic growth present in naive
# implementations.
if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null
then :
  eval 'as_fn_append ()
  {
    eval $1+=\$2
  }'
else $as_nop
  as_fn_append ()
  {
    eval $1=\$$1\$2
  }
fi # as_fn_append

# as_fn_arith ARG...
# ------------------
# Perform arithmetic evaluation on the ARGs, and store the result in the
# global $as_val. Take advantage of shells that can avoid forks. The arguments
# must be portable across $(()) and expr.
if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null
then :
  eval 'as_fn_arith ()
  {
    as_val=$(( $* ))
  }'
else $as_nop
  as_fn_arith ()
  {
    as_val=`expr "$@" || test $? -eq 1`
  }
fi # as_fn_arith


# as_fn_error STATUS ERROR [LINENO LOG_FD]
# ----------------------------------------
# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
# script with STATUS, using 1 if that was 0.
as_fn_error ()
{
  as_status=$1; test $as_status -eq 0 && as_status=1
  if test "$4"; then
    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
    printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
  fi
  printf "%s\n" "$as_me: error: $2" >&2
  as_fn_exit $as_status
} # as_fn_error

if expr a : '\(a\)' >/dev/null 2>&1 &&
   test "X`expr 00001 : '.*\(...\)'`" = X001; then
  as_expr=expr
else
  as_expr=false
fi

if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
  as_basename=basename
else
  as_basename=false
fi

as_me=`$as_basename -- "$0" ||
$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
	 X"$0" : 'X\(//\)$' \| \
	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
printf "%s\n" X/"$0" |
    sed '/^.*\/\([^/][^/]*\)\/*$/{
	    s//\1/
	    q
	  }
	  /^X\/\(\/\/\)$/{
	    s//\1/
	    q
	  }
	  /^X\/\(\/\).*/{
	    s//\1/
	    q
	  }
	  s/.*/./; q'`

if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
  as_dirname=dirname
else
  as_dirname=false
fi

# Avoid depending upon Character Ranges.
as_cr_letters='abcdefghijklmnopqrstuvwxyz'
as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
as_cr_Letters=$as_cr_letters$as_cr_LETTERS
as_cr_digits='0123456789'
as_cr_alnum=$as_cr_Letters$as_cr_digits


  as_lineno_1=$LINENO as_lineno_1a=$LINENO
  as_lineno_2=$LINENO as_lineno_2a=$LINENO
  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
  sed -n '
    p
    /[$]LINENO/=
  ' <$as_myself |
    sed '
      s/[$]LINENO.*/&-/
      t lineno
      b
      :lineno
      N
      :loop
      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
      t loop
      s/-\n.*//
    ' >$as_me.lineno &&
  chmod +x "$as_me.lineno" ||
    { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }

  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
  # already done that, so ensure we don't try to do so again and fall
  # in an infinite loop.  This has already happened in practice.
  _as_can_reexec=no; export _as_can_reexec
  # Don't try to exec as it changes $[0], causing all sort of problems
  # (the dirname of $[0] is not the place where we might find the
  # original and so on.  Autoconf is especially sensitive to this).
  . "./$as_me.lineno"
  # Exit status is that of the last command.
  exit
}


# Determine whether it's possible to make 'echo' print without a newline.
# These variables are no longer used directly by Autoconf, but are AC_SUBSTed
# for compatibility with existing Makefiles.
ECHO_C= ECHO_N= ECHO_T=
case `echo -n x` in #(((((
-n*)
  case `echo 'xy\c'` in
  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
  xy)  ECHO_C='\c';;
  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
       ECHO_T='	';;
  esac;;
*)
  ECHO_N='-n';;
esac

# For backward compatibility with old third-party macros, we provide
# the shell variables $as_echo and $as_echo_n.  New code should use
# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively.
as_echo='printf %s\n'
as_echo_n='printf %s'


rm -f conf$$ conf$$.exe conf$$.file
if test -d conf$$.dir; then
  rm -f conf$$.dir/conf$$.file
else
  rm -f conf$$.dir
  mkdir conf$$.dir 2>/dev/null
fi
if (echo >conf$$.file) 2>/dev/null; then
  if ln -s conf$$.file conf$$ 2>/dev/null; then
    as_ln_s='ln -s'
    # ... but there are two gotchas:
    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
    # In both cases, we have to default to `cp -pR'.
    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
      as_ln_s='cp -pR'
  elif ln conf$$.file conf$$ 2>/dev/null; then
    as_ln_s=ln
  else
    as_ln_s='cp -pR'
  fi
else
  as_ln_s='cp -pR'
fi
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null

if mkdir -p . 2>/dev/null; then
  as_mkdir_p='mkdir -p "$as_dir"'
else
  test -d ./-p && rmdir ./-p
  as_mkdir_p=false
fi

as_test_x='test -x'
as_executable_p=as_fn_executable_p

# Sed expression to map a string onto a valid CPP name.
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"

# Sed expression to map a string onto a valid variable name.
as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"





SHELL=${CONFIG_SHELL-/bin/sh}

# How were we run?
at_cli_args="$@"


# Not all shells have the 'times' builtin; the subshell is needed to make
# sure we discard the 'times: not found' message from the shell.
at_times_p=false
(times) >/dev/null 2>&1 && at_times_p=:

# CLI Arguments to pass to the debugging scripts.
at_debug_args=
# -e sets to true
at_errexit_p=false
# Shall we be verbose?  ':' means no, empty means yes.
at_verbose=:
at_quiet=
# Running several jobs in parallel, 0 means as many as test groups.
at_jobs=1
at_traceon=:
at_trace_echo=:
at_check_filter_trace=:

# Shall we keep the debug scripts?  Must be `:' when the suite is
# run by a debug script, so that the script doesn't remove itself.
at_debug_p=false
# Display help message?
at_help_p=false
# Display the version message?
at_version_p=false
# List test groups?
at_list_p=false
# --clean
at_clean=false
# Test groups to run
at_groups=
# Whether to rerun failed tests.
at_recheck=
# Whether a write failure occurred
at_write_fail=0

# The directory we run the suite in.  Default to . if no -C option.
at_dir=`pwd`
# An absolute reference to this testsuite script.
case $as_myself in
  [\\/]* | ?:[\\/]* ) at_myself=$as_myself ;;
  * ) at_myself=$at_dir/$as_myself ;;
esac
# Whether -C is in effect.
at_change_dir=false

# Whether to enable colored test results.
at_color=no
# As many question marks as there are digits in the last test group number.
# Used to normalize the test group numbers so that `ls' lists them in
# numerical order.
at_format='??'
# Description of all the test groups.
at_help_all="1;config.at:17;Configuration file syntax;config cfg;
2;loglevcomp.at:17;Traditional log levels (compilation);config cfg log loglevel;
3;echo.at:16;Basic request processing;echo;
4;loglevrun.at:17;Traditional log levels (output);log loglevel;
5;logfmt.at:1;HTTP log formats;log logformat logfmt;
6;logsup.at:17;Log suppression;log logsup logsuppress;
7;xhttp.at:16;xHTTP;xhttp;
8;checkurl.at:16;CheckURL;checkurl;
9;errfile.at:16;Custom Error Response;errfile;
10;maxrequest.at:16;MaxRequest;maxrequest;
11;rewriteloc.at:17;RewriteLocation;rewriteloc;
12;nb.at:16;Named backends;backend nb usebackend;
13;lstset.at:16;Basic set directives;listener lstset rewrite;
14;header.at:16;Header;header;
15;host.at:16;Host;host;
16;url.at:16;URL;url;
17;path.at:16;Path;path;
18;stringmatch.at:16;StringMatch;stringmatch;
19;query.at:16;Query;query;
20;queryparam.at:16;QueryParam;queryparam;
21;or.at:16;OR;or;
22;not.at:16;NOT;not;
23;fromfile.at:15;Pattern from file;fromfile;
24;include.at:15;Include files;include;
25;incldir.at:15;Include directory;include incldir;
26;inclnest.at:15;Nested includes;include inclnest;
27;inclscope.at:15;Includes in various scopes;include inclscope;
28;redirect.at:17;Redirect;redirect;
29;acme.at:17;ACME;acme;
30;error.at:17;Error backend;error;
31;bemix.at:17;Mixing backend types;config cfg backend bemix;
32;optfwd.at:17;HeaderOption forwarded;headeroption hdropt optfwd;
33;optssl.at:17;HeaderOption ssl;headeroption hdropt optssl;
34;optorder.at:16;Header directives ordering;order;
35;set.at:16;Basic set directives;set rewrite;
36;reqacc.at:16;Request accessors;rewrite reqacc accessor;
37;experr.at:16;Expansion error handling;experr rewrite reqacc accessor;
38;backref.at:16;Multiple back references;backref rewrite reqacc accessor;
39;chgvis.at:16;Visibility of changes;rewrite chgvis accessor;
40;rwchain.at:16;Chained rewrites;rewrite chgvis accessor;
41;resprw.at:17;Rewrite response headers;rewrite response resprw;
42;sessip.at:16;Session: IP;session sess sessip;
43;sessauth.at:16;Session: Basic Auth;session sess sessauth;
44;sesshdr.at:16;Session: Header;session sess sesshdr;
45;sessparm.at:16;Session: Parameter;session sess sessparam;
46;sessurl.at:16;Session: URL parameter;session sess sessparam;
47;sesscookie.at:16;Session: Cookie;session sess sesscookie;
48;addheader.at:16;AddHeader;addheader;
49;headrequire.at:16;HeadRequire;headrequire;
50;headrem.at:16;HeadRemove;headrem headremove;
51;headdeny.at:16;HeadDeny;headdeny;
52;balancing.at:16;Request Balancing;balancing;
53;prio.at:16;Backend Priorities;prio;
54;https.at:16;HTTPS listener;https;
55;virthost.at:16;HTTPS Virtual Hosts;https virthost;
56;template.at:17;Template;template tmpl;
57;list.at:16;List;poundctl list;
58;disable.at:16;Disable/Enable;poundctl disable;
59;sessctl.at:16;Session control;poundctl sessctl;
"
# List of the all the test groups.
at_groups_all=`printf "%s\n" "$at_help_all" | sed 's/;.*//'`

# at_fn_validate_ranges NAME...
# -----------------------------
# Validate and normalize the test group number contained in each variable
# NAME. Leading zeroes are treated as decimal.
at_fn_validate_ranges ()
{
  for at_grp
  do
    eval at_value=\$$at_grp
    if test $at_value -lt 1 || test $at_value -gt 59; then
      printf "%s\n" "invalid test group: $at_value" >&2
      exit 1
    fi
    case $at_value in
      0*) # We want to treat leading 0 as decimal, like expr and test, but
	  # AS_VAR_ARITH treats it as octal if it uses $(( )).
	  # With XSI shells, ${at_value#${at_value%%[1-9]*}} avoids the
	  # expr fork, but it is not worth the effort to determine if the
	  # shell supports XSI when the user can just avoid leading 0.
	  eval $at_grp='`expr $at_value + 0`' ;;
    esac
  done
}

at_prev=
for at_option
do
  # If the previous option needs an argument, assign it.
  if test -n "$at_prev"; then
    at_option=$at_prev=$at_option
    at_prev=
  fi

  case $at_option in
  *=?*) at_optarg=`expr "X$at_option" : '[^=]*=\(.*\)'` ;;
  *)    at_optarg= ;;
  esac

  case $at_option in
    --help | -h )
	at_help_p=:
	;;

    --list | -l )
	at_list_p=:
	;;

    --version | -V )
	at_version_p=:
	;;

    --clean | -c )
	at_clean=:
	;;

    --color )
	at_color=always
	;;
    --color=* )
	case $at_optarg in
	no | never | none) at_color=never ;;
	auto | tty | if-tty) at_color=auto ;;
	always | yes | force) at_color=always ;;
	*) at_optname=`echo " $at_option" | sed 's/^ //; s/=.*//'`
	   as_fn_error $? "unrecognized argument to $at_optname: $at_optarg" ;;
	esac
	;;

    --debug | -d )
	at_debug_p=:
	;;

    --errexit | -e )
	at_debug_p=:
	at_errexit_p=:
	;;

    --verbose | -v )
	at_verbose=; at_quiet=:
	;;

    --trace | -x )
	at_traceon='set -x'
	at_trace_echo=echo
	at_check_filter_trace=at_fn_filter_trace
	;;

    [0-9] | [0-9][0-9] | [0-9][0-9][0-9] | [0-9][0-9][0-9][0-9])
	at_fn_validate_ranges at_option
	as_fn_append at_groups "$at_option$as_nl"
	;;

    # Ranges
    [0-9]- | [0-9][0-9]- | [0-9][0-9][0-9]- | [0-9][0-9][0-9][0-9]-)
	at_range_start=`echo $at_option |tr -d X-`
	at_fn_validate_ranges at_range_start
	at_range=`printf "%s\n" "$at_groups_all" | \
	  sed -ne '/^'$at_range_start'$/,$p'`
	as_fn_append at_groups "$at_range$as_nl"
	;;

    -[0-9] | -[0-9][0-9] | -[0-9][0-9][0-9] | -[0-9][0-9][0-9][0-9])
	at_range_end=`echo $at_option |tr -d X-`
	at_fn_validate_ranges at_range_end
	at_range=`printf "%s\n" "$at_groups_all" | \
	  sed -ne '1,/^'$at_range_end'$/p'`
	as_fn_append at_groups "$at_range$as_nl"
	;;

    [0-9]-[0-9] | [0-9]-[0-9][0-9] | [0-9]-[0-9][0-9][0-9] | \
    [0-9]-[0-9][0-9][0-9][0-9] | [0-9][0-9]-[0-9][0-9] | \
    [0-9][0-9]-[0-9][0-9][0-9] | [0-9][0-9]-[0-9][0-9][0-9][0-9] | \
    [0-9][0-9][0-9]-[0-9][0-9][0-9] | \
    [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9] | \
    [0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9] )
	at_range_start=`expr $at_option : '\(.*\)-'`
	at_range_end=`expr $at_option : '.*-\(.*\)'`
	if test $at_range_start -gt $at_range_end; then
	  at_tmp=$at_range_end
	  at_range_end=$at_range_start
	  at_range_start=$at_tmp
	fi
	at_fn_validate_ranges at_range_start at_range_end
	at_range=`printf "%s\n" "$at_groups_all" | \
	  sed -ne '/^'$at_range_start'$/,/^'$at_range_end'$/p'`
	as_fn_append at_groups "$at_range$as_nl"
	;;

    # Directory selection.
    --directory | -C )
	at_prev=--directory
	;;
    --directory=* )
	at_change_dir=:
	at_dir=$at_optarg
	if test x- = "x$at_dir" ; then
	  at_dir=./-
	fi
	;;

    # Parallel execution.
    --jobs | -j )
	at_jobs=0
	;;
    --jobs=* | -j[0-9]* )
	if test -n "$at_optarg"; then
	  at_jobs=$at_optarg
	else
	  at_jobs=`expr X$at_option : 'X-j\(.*\)'`
	fi
	case $at_jobs in *[!0-9]*)
	  at_optname=`echo " $at_option" | sed 's/^ //; s/[0-9=].*//'`
	  as_fn_error $? "non-numeric argument to $at_optname: $at_jobs" ;;
	esac
	;;

    # Keywords.
    --keywords | -k )
	at_prev=--keywords
	;;
    --keywords=* )
	at_groups_selected=$at_help_all
	at_save_IFS=$IFS
	IFS=,
	set X $at_optarg
	shift
	IFS=$at_save_IFS
	for at_keyword
	do
	  at_invert=
	  case $at_keyword in
	  '!'*)
	    at_invert="-v"
	    at_keyword=`expr "X$at_keyword" : 'X!\(.*\)'`
	    ;;
	  esac
	  # It is on purpose that we match the test group titles too.
	  at_groups_selected=`printf "%s\n" "$at_groups_selected" |
	      grep -i $at_invert "^[1-9][^;]*;.*[; ]$at_keyword[ ;]"`
	done
	# Smash the keywords.
	at_groups_selected=`printf "%s\n" "$at_groups_selected" | sed 's/;.*//'`
	as_fn_append at_groups "$at_groups_selected$as_nl"
	;;
    --recheck)
	at_recheck=:
	;;

    *=*)
	at_envvar=`expr "x$at_option" : 'x\([^=]*\)='`
	# Reject names that are not valid shell variable names.
	case $at_envvar in
	  '' | [0-9]* | *[!_$as_cr_alnum]* )
	    as_fn_error $? "invalid variable name: \`$at_envvar'" ;;
	esac
	at_value=`printf "%s\n" "$at_optarg" | sed "s/'/'\\\\\\\\''/g"`
	# Export now, but save eval for later and for debug scripts.
	export $at_envvar
	as_fn_append at_debug_args " $at_envvar='$at_value'"
	;;

     *) printf "%s\n" "$as_me: invalid option: $at_option" >&2
	printf "%s\n" "Try \`$0 --help' for more information." >&2
	exit 1
	;;
  esac
done

# Verify our last option didn't require an argument
if test -n "$at_prev"
then :
  as_fn_error $? "\`$at_prev' requires an argument"
fi

# The file containing the suite.
at_suite_log=$at_dir/$as_me.log

# Selected test groups.
if test -z "$at_groups$at_recheck"; then
  at_groups=$at_groups_all
else
  if test -n "$at_recheck" && test -r "$at_suite_log"; then
    at_oldfails=`sed -n '
      /^Failed tests:$/,/^Skipped tests:$/{
	s/^[ ]*\([1-9][0-9]*\):.*/\1/p
      }
      /^Unexpected passes:$/,/^## Detailed failed tests/{
	s/^[ ]*\([1-9][0-9]*\):.*/\1/p
      }
      /^## Detailed failed tests/q
      ' "$at_suite_log"`
    as_fn_append at_groups "$at_oldfails$as_nl"
  fi
  # Sort the tests, removing duplicates.
  at_groups=`printf "%s\n" "$at_groups" | sort -nu | sed '/^$/d'`
fi

if test x"$at_color" = xalways \
   || { test x"$at_color" = xauto && test -t 1; }; then
  at_red=`printf '\033[0;31m'`
  at_grn=`printf '\033[0;32m'`
  at_lgn=`printf '\033[1;32m'`
  at_blu=`printf '\033[1;34m'`
  at_std=`printf '\033[m'`
else
  at_red= at_grn= at_lgn= at_blu= at_std=
fi

# Help message.
if $at_help_p; then
  cat <<_ATEOF || at_write_fail=1
Usage: $0 [OPTION]... [VARIABLE=VALUE]... [TESTS]

Run all the tests, or the selected TESTS, given by numeric ranges, and
save a detailed log file.  Upon failure, create debugging scripts.

Do not change environment variables directly.  Instead, set them via
command line arguments.  Set \`AUTOTEST_PATH' to select the executables
to exercise.  Each relative directory is expanded as build and source
directories relative to the top level of this distribution.
E.g., from within the build directory /tmp/foo-1.0, invoking this:

  $ $0 AUTOTEST_PATH=bin

is equivalent to the following, assuming the source directory is /src/foo-1.0:

  PATH=/tmp/foo-1.0/bin:/src/foo-1.0/bin:\$PATH $0
_ATEOF
cat <<_ATEOF || at_write_fail=1

Operation modes:
  -h, --help     print the help message, then exit
  -V, --version  print version number, then exit
  -c, --clean    remove all the files this test suite might create and exit
  -l, --list     describes all the tests, or the selected TESTS
_ATEOF
cat <<_ATEOF || at_write_fail=1

Execution tuning:
  -C, --directory=DIR
                 change to directory DIR before starting
      --color[=never|auto|always]
                 enable colored test results on terminal, or always
  -j, --jobs[=N]
                 Allow N jobs at once; infinite jobs with no arg (default 1)
  -k, --keywords=KEYWORDS
                 select the tests matching all the comma-separated KEYWORDS
                 multiple \`-k' accumulate; prefixed \`!' negates a KEYWORD
      --recheck  select all tests that failed or passed unexpectedly last time
  -e, --errexit  abort as soon as a test fails; implies --debug
  -v, --verbose  force more detailed output
                 default for debugging scripts
  -d, --debug    inhibit clean up and top-level logging
                 default for debugging scripts
  -x, --trace    enable tests shell tracing
_ATEOF
cat <<_ATEOF || at_write_fail=1

Report bugs to <gray@gnu.org>.
_ATEOF
  exit $at_write_fail
fi

# List of tests.
if $at_list_p; then
  cat <<_ATEOF || at_write_fail=1
pound 4.10 test suite test groups:

 NUM: FILE-NAME:LINE     TEST-GROUP-NAME
      KEYWORDS

_ATEOF
  # Pass an empty line as separator between selected groups and help.
  printf "%s\n" "$at_groups$as_nl$as_nl$at_help_all" |
    awk 'NF == 1 && FS != ";" {
	   selected[$ 1] = 1
	   next
	 }
	 /^$/ { FS = ";" }
	 NF > 0 {
	   if (selected[$ 1]) {
	     printf " %3d: %-18s %s\n", $ 1, $ 2, $ 3
	     if ($ 4) {
	       lmax = 79
	       indent = "     "
	       line = indent
	       len = length (line)
	       n = split ($ 4, a, " ")
	       for (i = 1; i <= n; i++) {
		 l = length (a[i]) + 1
		 if (i > 1 && len + l > lmax) {
		   print line
		   line = indent " " a[i]
		   len = length (line)
		 } else {
		   line = line " " a[i]
		   len += l
		 }
	       }
	       if (n)
		 print line
	     }
	   }
	 }' || at_write_fail=1
  exit $at_write_fail
fi
if $at_version_p; then
  printf "%s\n" "$as_me (pound 4.10)" &&
  cat <<\_ATEOF || at_write_fail=1

Copyright (C) 2021 Free Software Foundation, Inc.
This test suite is free software; the Free Software Foundation gives
unlimited permission to copy, distribute and modify it.
_ATEOF
  exit $at_write_fail
fi

# Should we print banners?  Yes if more than one test is run.
case $at_groups in #(
  *$as_nl* )
      at_print_banners=: ;; #(
  * ) at_print_banners=false ;;
esac
# Text for banner N, set to a single space once printed.
# Banner 1. testsuite.at:64
# Category starts at test group 13.
at_banner_text_1="Listener request modification"
# Banner 2. testsuite.at:67
# Category starts at test group 14.
at_banner_text_2="Service selection"
# Banner 3. testsuite.at:79
# Category starts at test group 24.
at_banner_text_3="Includes"
# Banner 4. testsuite.at:85
# Category starts at test group 28.
at_banner_text_4="Special backends"
# Banner 5. testsuite.at:91
# Category starts at test group 32.
at_banner_text_5="HeaderOption"
# Banner 6. testsuite.at:96
# Category starts at test group 35.
at_banner_text_6="Request Rewriting"
# Banner 7. testsuite.at:104
# Category starts at test group 41.
at_banner_text_7="Response Rewriting"
# Banner 8. testsuite.at:107
# Category starts at test group 42.
at_banner_text_8="Sessions"
# Banner 9. testsuite.at:115
# Category starts at test group 48.
at_banner_text_9="Compatibility Directives"
# Banner 10. testsuite.at:121
# Category starts at test group 52.
at_banner_text_10="Request routing"
# Banner 11. testsuite.at:125
# Category starts at test group 54.
at_banner_text_11="HTTPS"
# Banner 12. testsuite.at:129
# Category starts at test group 56.
at_banner_text_12="Templates"
# Banner 13. testsuite.at:132
# Category starts at test group 57.
at_banner_text_13="Poundctl"

# Take any -C into account.
if $at_change_dir ; then
  test x != "x$at_dir" && cd "$at_dir" \
    || as_fn_error $? "unable to change directory"
  at_dir=`pwd`
fi

# Load the config files for any default variable assignments.
for at_file in atconfig atlocal
do
  test -r $at_file || continue
  . ./$at_file || as_fn_error $? "invalid content: $at_file"
done

# Autoconf <=2.59b set at_top_builddir instead of at_top_build_prefix:
: "${at_top_build_prefix=$at_top_builddir}"

# Perform any assignments requested during argument parsing.
eval "$at_debug_args"

# atconfig delivers names relative to the directory the test suite is
# in, but the groups themselves are run in testsuite-dir/group-dir.
if test -n "$at_top_srcdir"; then
  builddir=../..
  for at_dir_var in srcdir top_srcdir top_build_prefix
  do
    eval at_val=\$at_$at_dir_var
    case $at_val in
      [\\/$]* | ?:[\\/]* ) at_prefix= ;;
      *) at_prefix=../../ ;;
    esac
    eval "$at_dir_var=\$at_prefix\$at_val"
  done
fi

## -------------------- ##
## Directory structure. ##
## -------------------- ##

# This is the set of directories and files used by this script
# (non-literals are capitalized):
#
# TESTSUITE         - the testsuite
# TESTSUITE.log     - summarizes the complete testsuite run
# TESTSUITE.dir/    - created during a run, remains after -d or failed test
# + at-groups/      - during a run: status of all groups in run
# | + NNN/          - during a run: meta-data about test group NNN
# | | + check-line  - location (source file and line) of current AT_CHECK
# | | + status      - exit status of current AT_CHECK
# | | + stdout      - stdout of current AT_CHECK
# | | + stder1      - stderr, including trace
# | | + stderr      - stderr, with trace filtered out
# | | + test-source - portion of testsuite that defines group
# | | + times       - timestamps for computing duration
# | | + pass        - created if group passed
# | | + xpass       - created if group xpassed
# | | + fail        - created if group failed
# | | + xfail       - created if group xfailed
# | | + skip        - created if group skipped
# + at-stop         - during a run: end the run if this file exists
# + at-source-lines - during a run: cache of TESTSUITE line numbers for extraction
# + 0..NNN/         - created for each group NNN, remains after -d or failed test
# | + TESTSUITE.log - summarizes the group results
# | + ...           - files created during the group

# The directory the whole suite works in.
# Should be absolute to let the user `cd' at will.
at_suite_dir=$at_dir/$as_me.dir
# The file containing the suite ($at_dir might have changed since earlier).
at_suite_log=$at_dir/$as_me.log
# The directory containing helper files per test group.
at_helper_dir=$at_suite_dir/at-groups
# Stop file: if it exists, do not start new jobs.
at_stop_file=$at_suite_dir/at-stop
# The fifo used for the job dispatcher.
at_job_fifo=$at_suite_dir/at-job-fifo

if $at_clean; then
  test -d "$at_suite_dir" &&
    find "$at_suite_dir" -type d ! -perm -700 -exec chmod u+rwx \{\} \;
  rm -f -r "$at_suite_dir" "$at_suite_log"
  exit $?
fi

# Don't take risks: use only absolute directories in PATH.
#
# For stand-alone test suites (ie. atconfig was not found),
# AUTOTEST_PATH is relative to `.'.
#
# For embedded test suites, AUTOTEST_PATH is relative to the top level
# of the package.  Then expand it into build/src parts, since users
# may create executables in both places.
AUTOTEST_PATH=`printf "%s\n" "$AUTOTEST_PATH" | sed "s|:|$PATH_SEPARATOR|g"`
at_path=
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $AUTOTEST_PATH $PATH
do
  IFS=$as_save_IFS
  case $as_dir in #(((
    '') as_dir=./ ;;
    */) ;;
    *) as_dir=$as_dir/ ;;
  esac
    test -n "$at_path" && as_fn_append at_path $PATH_SEPARATOR
case $as_dir in
  [\\/]* | ?:[\\/]* )
    as_fn_append at_path "$as_dir"
    ;;
  * )
    if test -z "$at_top_build_prefix"; then
      # Stand-alone test suite.
      as_fn_append at_path "$as_dir"
    else
      # Embedded test suite.
      as_fn_append at_path "$at_top_build_prefix$as_dir$PATH_SEPARATOR"
      as_fn_append at_path "$at_top_srcdir/$as_dir"
    fi
    ;;
esac
  done
IFS=$as_save_IFS


# Now build and simplify PATH.
#
# There might be directories that don't exist, but don't redirect
# builtins' (eg., cd) stderr directly: Ultrix's sh hates that.
at_new_path=
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $at_path
do
  IFS=$as_save_IFS
  case $as_dir in #(((
    '') as_dir=./ ;;
    */) ;;
    *) as_dir=$as_dir/ ;;
  esac
    test -d "$as_dir" || continue
case $as_dir in
  [\\/]* | ?:[\\/]* ) ;;
  * ) as_dir=`(cd "$as_dir" && pwd) 2>/dev/null` ;;
esac
case $PATH_SEPARATOR$at_new_path$PATH_SEPARATOR in
  *$PATH_SEPARATOR$as_dir$PATH_SEPARATOR*) ;;
  $PATH_SEPARATOR$PATH_SEPARATOR) at_new_path=$as_dir ;;
  *) as_fn_append at_new_path "$PATH_SEPARATOR$as_dir" ;;
esac
  done
IFS=$as_save_IFS

PATH=$at_new_path
export PATH

# Setting up the FDs.



# 5 is the log file.  Not to be overwritten if `-d'.
if $at_debug_p; then
  at_suite_log=/dev/null
else
  : >"$at_suite_log"
fi
exec 5>>"$at_suite_log"

# Banners and logs.
printf "%s\n" "## ---------------------- ##
## pound 4.10 test suite. ##
## ---------------------- ##"
{
  printf "%s\n" "## ---------------------- ##
## pound 4.10 test suite. ##
## ---------------------- ##"
  echo

  printf "%s\n" "$as_me: command line was:"
  printf "%s\n" "  \$ $0 $at_cli_args"
  echo

  # If ChangeLog exists, list a few lines in case it might help determining
  # the exact version.
  if test -n "$at_top_srcdir" && test -f "$at_top_srcdir/ChangeLog"; then
    printf "%s\n" "## ---------- ##
## ChangeLog. ##
## ---------- ##"
    echo
    sed 's/^/| /;10q' "$at_top_srcdir/ChangeLog"
    echo
  fi

  {
cat <<_ASUNAME
## --------- ##
## Platform. ##
## --------- ##

hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
uname -m = `(uname -m) 2>/dev/null || echo unknown`
uname -r = `(uname -r) 2>/dev/null || echo unknown`
uname -s = `(uname -s) 2>/dev/null || echo unknown`
uname -v = `(uname -v) 2>/dev/null || echo unknown`

/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`

/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`

_ASUNAME

as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
  IFS=$as_save_IFS
  case $as_dir in #(((
    '') as_dir=./ ;;
    */) ;;
    *) as_dir=$as_dir/ ;;
  esac
    printf "%s\n" "PATH: $as_dir"
  done
IFS=$as_save_IFS

}
  echo

  # Contents of the config files.
  for at_file in atconfig atlocal
  do
    test -r $at_file || continue
    printf "%s\n" "$as_me: $at_file:"
    sed 's/^/| /' $at_file
    echo
  done
} >&5


## ------------------------- ##
## Autotest shell functions. ##
## ------------------------- ##

# at_fn_banner NUMBER
# -------------------
# Output banner NUMBER, provided the testsuite is running multiple groups and
# this particular banner has not yet been printed.
at_fn_banner ()
{
  $at_print_banners || return 0
  eval at_banner_text=\$at_banner_text_$1
  test "x$at_banner_text" = "x " && return 0
  eval "at_banner_text_$1=\" \""
  if test -z "$at_banner_text"; then
    $at_first || echo
  else
    printf "%s\n" "$as_nl$at_banner_text$as_nl"
  fi
} # at_fn_banner

# at_fn_check_prepare_notrace REASON LINE
# ---------------------------------------
# Perform AT_CHECK preparations for the command at LINE for an untraceable
# command; REASON is the reason for disabling tracing.
at_fn_check_prepare_notrace ()
{
  $at_trace_echo "Not enabling shell tracing (command contains $1)"
  printf "%s\n" "$2" >"$at_check_line_file"
  at_check_trace=: at_check_filter=:
  : >"$at_stdout"; : >"$at_stderr"
}

# at_fn_check_prepare_trace LINE
# ------------------------------
# Perform AT_CHECK preparations for the command at LINE for a traceable
# command.
at_fn_check_prepare_trace ()
{
  printf "%s\n" "$1" >"$at_check_line_file"
  at_check_trace=$at_traceon at_check_filter=$at_check_filter_trace
  : >"$at_stdout"; : >"$at_stderr"
}

# at_fn_check_prepare_dynamic COMMAND LINE
# ----------------------------------------
# Decide if COMMAND at LINE is traceable at runtime, and call the appropriate
# preparation function.
at_fn_check_prepare_dynamic ()
{
  case $1 in
    *$as_nl*)
      at_fn_check_prepare_notrace 'an embedded newline' "$2" ;;
    *)
      at_fn_check_prepare_trace "$2" ;;
  esac
}

# at_fn_filter_trace
# ------------------
# Remove the lines in the file "$at_stderr" generated by "set -x" and print
# them to stderr.
at_fn_filter_trace ()
{
  mv "$at_stderr" "$at_stder1"
  grep '^ *+' "$at_stder1" >&2
  grep -v '^ *+' "$at_stder1" >"$at_stderr"
}

# at_fn_log_failure FILE-LIST
# ---------------------------
# Copy the files in the list on stdout with a "> " prefix, and exit the shell
# with a failure exit code.
at_fn_log_failure ()
{
  for file
    do printf "%s\n" "$file:"; sed 's/^/> /' "$file"; done
  echo 1 > "$at_status_file"
  exit 1
}

# at_fn_check_skip EXIT-CODE LINE
# -------------------------------
# Check whether EXIT-CODE is a special exit code (77 or 99), and if so exit
# the test group subshell with that same exit code. Use LINE in any report
# about test failure.
at_fn_check_skip ()
{
  case $1 in
    99) echo 99 > "$at_status_file"; at_failed=:
	printf "%s\n" "$2: hard failure"; exit 99;;
    77) echo 77 > "$at_status_file"; exit 77;;
  esac
}

# at_fn_check_status EXPECTED EXIT-CODE LINE
# ------------------------------------------
# Check whether EXIT-CODE is the EXPECTED exit code, and if so do nothing.
# Otherwise, if it is 77 or 99, exit the test group subshell with that same
# exit code; if it is anything else print an error message referring to LINE,
# and fail the test.
at_fn_check_status ()
{
  case $2 in
    $1 ) ;;
    77) echo 77 > "$at_status_file"; exit 77;;
    99) echo 99 > "$at_status_file"; at_failed=:
	printf "%s\n" "$3: hard failure"; exit 99;;
    *) printf "%s\n" "$3: exit code was $2, expected $1"
      at_failed=:;;
  esac
}

# at_fn_diff_devnull FILE
# -----------------------
# Emit a diff between /dev/null and FILE. Uses "test -s" to avoid useless diff
# invocations.
at_fn_diff_devnull ()
{
  test -s "$1" || return 0
  $at_diff "$at_devnull" "$1"
}

# at_fn_test NUMBER
# -----------------
# Parse out test NUMBER from the tail of this file.
at_fn_test ()
{
  eval at_sed=\$at_sed$1
  sed "$at_sed" "$at_myself" > "$at_test_source"
}

# at_fn_create_debugging_script
# -----------------------------
# Create the debugging script $at_group_dir/run which will reproduce the
# current test group.
at_fn_create_debugging_script ()
{
  {
    echo "#! /bin/sh" &&
    echo 'test ${ZSH_VERSION+y} && alias -g '\''${1+"$@"}'\''='\''"$@"'\''' &&
    printf "%s\n" "cd '$at_dir'" &&
    printf "%s\n" "exec \${CONFIG_SHELL-$SHELL} \"$at_myself\" -v -d $at_debug_args $at_group \${1+\"\$@\"}" &&
    echo 'exit 1'
  } >"$at_group_dir/run" &&
  chmod +x "$at_group_dir/run"
}

## -------------------------------- ##
## End of autotest shell functions. ##
## -------------------------------- ##
{
  printf "%s\n" "## ------------------ ##
## Running the tests. ##
## ------------------ ##"
} >&5

at_start_date=`date`
at_start_time=`date +%s 2>/dev/null`
printf "%s\n" "$as_me: starting at: $at_start_date" >&5

# Create the master directory if it doesn't already exist.
as_dir="$at_suite_dir"; as_fn_mkdir_p ||
  as_fn_error $? "cannot create \`$at_suite_dir'" "$LINENO" 5

# Can we diff with `/dev/null'?  DU 5.0 refuses.
if diff /dev/null /dev/null >/dev/null 2>&1; then
  at_devnull=/dev/null
else
  at_devnull=$at_suite_dir/devnull
  >"$at_devnull"
fi

# Use `diff -u' when possible.
if at_diff=`diff -u "$at_devnull" "$at_devnull" 2>&1` && test -z "$at_diff"
then
  at_diff='diff -u'
else
  at_diff=diff
fi

# Get the last needed group.
for at_group in : $at_groups; do :; done

# Extract the start and end lines of each test group at the tail
# of this file
awk '
BEGIN { FS="" }
/^#AT_START_/ {
  start = NR
}
/^#AT_STOP_/ {
  test = substr ($ 0, 10)
  print "at_sed" test "=\"1," start "d;" (NR-1) "q\""
  if (test == "'"$at_group"'") exit
}' "$at_myself" > "$at_suite_dir/at-source-lines" &&
. "$at_suite_dir/at-source-lines" ||
  as_fn_error $? "cannot create test line number cache" "$LINENO" 5
rm -f "$at_suite_dir/at-source-lines"

# Set number of jobs for `-j'; avoid more jobs than test groups.
set X $at_groups; shift; at_max_jobs=$#
if test $at_max_jobs -eq 0; then
  at_jobs=1
fi
if test $at_jobs -ne 1 &&
   { test $at_jobs -eq 0 || test $at_jobs -gt $at_max_jobs; }; then
  at_jobs=$at_max_jobs
fi

# If parallel mode, don't output banners, don't split summary lines.
if test $at_jobs -ne 1; then
  at_print_banners=false
  at_quiet=:
fi

# Set up helper dirs.
rm -rf "$at_helper_dir" &&
mkdir "$at_helper_dir" &&
cd "$at_helper_dir" &&
{ test -z "$at_groups" || mkdir $at_groups; } ||
as_fn_error $? "testsuite directory setup failed" "$LINENO" 5

# Functions for running a test group.  We leave the actual
# test group execution outside of a shell function in order
# to avoid hitting zsh 4.x exit status bugs.

# at_fn_group_prepare
# -------------------
# Prepare for running a test group.
at_fn_group_prepare ()
{
  # The directory for additional per-group helper files.
  at_job_dir=$at_helper_dir/$at_group
  # The file containing the location of the last AT_CHECK.
  at_check_line_file=$at_job_dir/check-line
  # The file containing the exit status of the last command.
  at_status_file=$at_job_dir/status
  # The files containing the output of the tested commands.
  at_stdout=$at_job_dir/stdout
  at_stder1=$at_job_dir/stder1
  at_stderr=$at_job_dir/stderr
  # The file containing the code for a test group.
  at_test_source=$at_job_dir/test-source
  # The file containing dates.
  at_times_file=$at_job_dir/times

  # Be sure to come back to the top test directory.
  cd "$at_suite_dir"

  # Clearly separate the test groups when verbose.
  $at_first || $at_verbose echo

  at_group_normalized=$at_group

  eval 'while :; do
    case $at_group_normalized in #(
    '"$at_format"'*) break;;
    esac
    at_group_normalized=0$at_group_normalized
  done'


  # Create a fresh directory for the next test group, and enter.
  # If one already exists, the user may have invoked ./run from
  # within that directory; we remove the contents, but not the
  # directory itself, so that we aren't pulling the rug out from
  # under the shell's notion of the current directory.
  at_group_dir=$at_suite_dir/$at_group_normalized
  at_group_log=$at_group_dir/$as_me.log
  if test -d "$at_group_dir"
then
  find "$at_group_dir" -type d ! -perm -700 -exec chmod u+rwx {} \;
  rm -fr "$at_group_dir"/* "$at_group_dir"/.[!.] "$at_group_dir"/.??*
fi ||
    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: test directory for $at_group_normalized could not be cleaned" >&5
printf "%s\n" "$as_me: WARNING: test directory for $at_group_normalized could not be cleaned" >&2;}
  # Be tolerant if the above `rm' was not able to remove the directory.
  as_dir="$at_group_dir"; as_fn_mkdir_p

  echo 0 > "$at_status_file"

  # In verbose mode, append to the log file *and* show on
  # the standard output; in quiet mode only write to the log.
  if test -z "$at_verbose"; then
    at_tee_pipe='tee -a "$at_group_log"'
  else
    at_tee_pipe='cat >> "$at_group_log"'
  fi
}

# at_fn_group_banner ORDINAL LINE DESC PAD [BANNER]
# -------------------------------------------------
# Declare the test group ORDINAL, located at LINE with group description DESC,
# and residing under BANNER. Use PAD to align the status column.
at_fn_group_banner ()
{
  at_setup_line="$2"
  test -n "$5" && at_fn_banner $5
  at_desc="$3"
  case $1 in
    [0-9])      at_desc_line="  $1: ";;
    [0-9][0-9]) at_desc_line=" $1: " ;;
    *)          at_desc_line="$1: "  ;;
  esac
  as_fn_append at_desc_line "$3$4"
  $at_quiet printf %s "$at_desc_line"
  echo "#                             -*- compilation -*-" >> "$at_group_log"
}

# at_fn_group_postprocess
# -----------------------
# Perform cleanup after running a test group.
at_fn_group_postprocess ()
{
  # Be sure to come back to the suite directory, in particular
  # since below we might `rm' the group directory we are in currently.
  cd "$at_suite_dir"

  if test ! -f "$at_check_line_file"; then
    sed "s/^ */$as_me: WARNING: /" <<_ATEOF
      A failure happened in a test group before any test could be
      run. This means that test suite is improperly designed.  Please
      report this failure to <gray@gnu.org>.
_ATEOF
    printf "%s\n" "$at_setup_line" >"$at_check_line_file"
    at_status=99
  fi
  $at_verbose printf %s "$at_group. $at_setup_line: "
  printf %s "$at_group. $at_setup_line: " >> "$at_group_log"
  case $at_xfail:$at_status in
    yes:0)
	at_msg="UNEXPECTED PASS"
	at_res=xpass
	at_errexit=$at_errexit_p
	at_color=$at_red
	;;
    no:0)
	at_msg="ok"
	at_res=pass
	at_errexit=false
	at_color=$at_grn
	;;
    *:77)
	at_msg='skipped ('`cat "$at_check_line_file"`')'
	at_res=skip
	at_errexit=false
	at_color=$at_blu
	;;
    no:* | *:99)
	at_msg='FAILED ('`cat "$at_check_line_file"`')'
	at_res=fail
	at_errexit=$at_errexit_p
	at_color=$at_red
	;;
    yes:*)
	at_msg='expected failure ('`cat "$at_check_line_file"`')'
	at_res=xfail
	at_errexit=false
	at_color=$at_lgn
	;;
  esac
  echo "$at_res" > "$at_job_dir/$at_res"
  # In parallel mode, output the summary line only afterwards.
  if test $at_jobs -ne 1 && test -n "$at_verbose"; then
    printf "%s\n" "$at_desc_line $at_color$at_msg$at_std"
  else
    # Make sure there is a separator even with long titles.
    printf "%s\n" " $at_color$at_msg$at_std"
  fi
  at_log_msg="$at_group. $at_desc ($at_setup_line): $at_msg"
  case $at_status in
    0|77)
      # $at_times_file is only available if the group succeeded.
      # We're not including the group log, so the success message
      # is written in the global log separately.  But we also
      # write to the group log in case they're using -d.
      if test -f "$at_times_file"; then
	at_log_msg="$at_log_msg     ("`sed 1d "$at_times_file"`')'
	rm -f "$at_times_file"
      fi
      printf "%s\n" "$at_log_msg" >> "$at_group_log"
      printf "%s\n" "$at_log_msg" >&5

      # Cleanup the group directory, unless the user wants the files
      # or the success was unexpected.
      if $at_debug_p || test $at_res = xpass; then
	at_fn_create_debugging_script
	if test $at_res = xpass && $at_errexit; then
	  echo stop > "$at_stop_file"
	fi
      else
	if test -d "$at_group_dir"; then
	  find "$at_group_dir" -type d ! -perm -700 -exec chmod u+rwx \{\} \;
	  rm -fr "$at_group_dir"
	fi
	rm -f "$at_test_source"
      fi
      ;;
    *)
      # Upon failure, include the log into the testsuite's global
      # log.  The failure message is written in the group log.  It
      # is later included in the global log.
      printf "%s\n" "$at_log_msg" >> "$at_group_log"

      # Upon failure, keep the group directory for autopsy, and create
      # the debugging script.  With -e, do not start any further tests.
      at_fn_create_debugging_script
      if $at_errexit; then
	echo stop > "$at_stop_file"
      fi
      ;;
  esac
}


## ------------ ##
## Driver loop. ##
## ------------ ##


if (set -m && set +m && set +b) >/dev/null 2>&1; then
  set +b
  at_job_control_on='set -m' at_job_control_off='set +m' at_job_group=-
else
  at_job_control_on=: at_job_control_off=: at_job_group=
fi

for at_signal in 1 2 15; do
  trap 'set +x; set +e
	$at_job_control_off
	at_signal='"$at_signal"'
	echo stop > "$at_stop_file"
	trap "" $at_signal
	at_pgids=
	for at_pgid in `jobs -p 2>/dev/null`; do
	  at_pgids="$at_pgids $at_job_group$at_pgid"
	done
	test -z "$at_pgids" || kill -$at_signal $at_pgids 2>/dev/null
	wait
	if test "$at_jobs" -eq 1 || test -z "$at_verbose"; then
	  echo >&2
	fi
	at_signame=`kill -l $at_signal 2>&1 || echo $at_signal`
	set x $at_signame
	test 0 -gt 2 && at_signame=$at_signal
	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: caught signal $at_signame, bailing out" >&5
printf "%s\n" "$as_me: WARNING: caught signal $at_signame, bailing out" >&2;}
	as_fn_arith 128 + $at_signal && exit_status=$as_val
	as_fn_exit $exit_status' $at_signal
done

rm -f "$at_stop_file"
at_first=:

if test $at_jobs -ne 1 &&
     rm -f "$at_job_fifo" &&
     test -n "$at_job_group" &&
     ( mkfifo "$at_job_fifo" && trap 'exit 1' PIPE STOP TSTP ) 2>/dev/null
then
  # FIFO job dispatcher.

  trap 'at_pids=
	for at_pid in `jobs -p`; do
	  at_pids="$at_pids $at_job_group$at_pid"
	done
	if test -n "$at_pids"; then
	  at_sig=TSTP
	  test ${TMOUT+y} && at_sig=STOP
	  kill -$at_sig $at_pids 2>/dev/null
	fi
	kill -STOP $$
	test -z "$at_pids" || kill -CONT $at_pids 2>/dev/null' TSTP

  echo
  # Turn jobs into a list of numbers, starting from 1.
  at_joblist=`printf "%s\n" "$at_groups" | sed -n 1,${at_jobs}p`

  set X $at_joblist
  shift
  for at_group in $at_groups; do
    $at_job_control_on 2>/dev/null
    (
      # Start one test group.
      $at_job_control_off
      if $at_first; then
	exec 7>"$at_job_fifo"
      else
	exec 6<&-
      fi
      trap 'set +x; set +e
	    trap "" PIPE
	    echo stop > "$at_stop_file"
	    echo >&7
	    as_fn_exit 141' PIPE
      at_fn_group_prepare
      if cd "$at_group_dir" &&
	 at_fn_test $at_group &&
	 . "$at_test_source"
      then :; else
	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unable to parse test group: $at_group" >&5
printf "%s\n" "$as_me: WARNING: unable to parse test group: $at_group" >&2;}
	at_failed=:
      fi
      at_fn_group_postprocess
      echo >&7
    ) &
    $at_job_control_off
    if $at_first; then
      at_first=false
      exec 6<"$at_job_fifo" 7>"$at_job_fifo"
    fi
    shift # Consume one token.
    if test $# -gt 0; then :; else
      read at_token <&6 || break
      set x $*
    fi
    test -f "$at_stop_file" && break
  done
  exec 7>&-
  # Read back the remaining ($at_jobs - 1) tokens.
  set X $at_joblist
  shift
  if test $# -gt 0; then
    shift
    for at_job
    do
      read at_token
    done <&6
  fi
  exec 6<&-
  wait
else
  # Run serially, avoid forks and other potential surprises.
  for at_group in $at_groups; do
    at_fn_group_prepare
    if cd "$at_group_dir" &&
       at_fn_test $at_group &&
       . "$at_test_source"; then :; else
      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unable to parse test group: $at_group" >&5
printf "%s\n" "$as_me: WARNING: unable to parse test group: $at_group" >&2;}
      at_failed=:
    fi
    at_fn_group_postprocess
    test -f "$at_stop_file" && break
    at_first=false
  done
fi

# Wrap up the test suite with summary statistics.
cd "$at_helper_dir"

# Use ?..???? when the list must remain sorted, the faster * otherwise.
at_pass_list=`for f in */pass; do echo $f; done | sed '/\*/d; s,/pass,,'`
at_skip_list=`for f in */skip; do echo $f; done | sed '/\*/d; s,/skip,,'`
at_xfail_list=`for f in */xfail; do echo $f; done | sed '/\*/d; s,/xfail,,'`
at_xpass_list=`for f in ?/xpass ??/xpass ???/xpass ????/xpass; do
		 echo $f; done | sed '/?/d; s,/xpass,,'`
at_fail_list=`for f in ?/fail ??/fail ???/fail ????/fail; do
		echo $f; done | sed '/?/d; s,/fail,,'`

set X $at_pass_list $at_xpass_list $at_xfail_list $at_fail_list $at_skip_list
shift; at_group_count=$#
set X $at_xpass_list; shift; at_xpass_count=$#; at_xpass_list=$*
set X $at_xfail_list; shift; at_xfail_count=$#
set X $at_fail_list; shift; at_fail_count=$#; at_fail_list=$*
set X $at_skip_list; shift; at_skip_count=$#

as_fn_arith $at_group_count - $at_skip_count && at_run_count=$as_val
as_fn_arith $at_xpass_count + $at_fail_count && at_unexpected_count=$as_val
as_fn_arith $at_xfail_count + $at_fail_count && at_total_fail_count=$as_val

# Back to the top directory.
cd "$at_dir"
rm -rf "$at_helper_dir"

# Compute the duration of the suite.
at_stop_date=`date`
at_stop_time=`date +%s 2>/dev/null`
printf "%s\n" "$as_me: ending at: $at_stop_date" >&5
case $at_start_time,$at_stop_time in
  [0-9]*,[0-9]*)
    as_fn_arith $at_stop_time - $at_start_time && at_duration_s=$as_val
    as_fn_arith $at_duration_s / 60 && at_duration_m=$as_val
    as_fn_arith $at_duration_m / 60 && at_duration_h=$as_val
    as_fn_arith $at_duration_s % 60 && at_duration_s=$as_val
    as_fn_arith $at_duration_m % 60 && at_duration_m=$as_val
    at_duration="${at_duration_h}h ${at_duration_m}m ${at_duration_s}s"
    printf "%s\n" "$as_me: test suite duration: $at_duration" >&5
    ;;
esac

echo
printf "%s\n" "## ------------- ##
## Test results. ##
## ------------- ##"
echo
{
  echo
  printf "%s\n" "## ------------- ##
## Test results. ##
## ------------- ##"
  echo
} >&5

if test $at_run_count = 1; then
  at_result="1 test"
  at_were=was
else
  at_result="$at_run_count tests"
  at_were=were
fi
if $at_errexit_p && test $at_unexpected_count != 0; then
  if test $at_xpass_count = 1; then
    at_result="$at_result $at_were run, one passed"
  else
    at_result="$at_result $at_were run, one failed"
  fi
  at_result="$at_result unexpectedly and inhibited subsequent tests."
  at_color=$at_red
else
  # Don't you just love exponential explosion of the number of cases?
  at_color=$at_red
  case $at_xpass_count:$at_fail_count:$at_xfail_count in
    # So far, so good.
    0:0:0) at_result="$at_result $at_were successful." at_color=$at_grn ;;
    0:0:*) at_result="$at_result behaved as expected." at_color=$at_lgn ;;

    # Some unexpected failures
    0:*:0) at_result="$at_result $at_were run,
$at_fail_count failed unexpectedly." ;;

    # Some failures, both expected and unexpected
    0:*:1) at_result="$at_result $at_were run,
$at_total_fail_count failed ($at_xfail_count expected failure)." ;;
    0:*:*) at_result="$at_result $at_were run,
$at_total_fail_count failed ($at_xfail_count expected failures)." ;;

    # No unexpected failures, but some xpasses
    *:0:*) at_result="$at_result $at_were run,
$at_xpass_count passed unexpectedly." ;;

    # No expected failures, but failures and xpasses
    *:1:0) at_result="$at_result $at_were run,
$at_unexpected_count did not behave as expected ($at_fail_count unexpected failure)." ;;
    *:*:0) at_result="$at_result $at_were run,
$at_unexpected_count did not behave as expected ($at_fail_count unexpected failures)." ;;

    # All of them.
    *:*:1) at_result="$at_result $at_were run,
$at_xpass_count passed unexpectedly,
$at_total_fail_count failed ($at_xfail_count expected failure)." ;;
    *:*:*) at_result="$at_result $at_were run,
$at_xpass_count passed unexpectedly,
$at_total_fail_count failed ($at_xfail_count expected failures)." ;;
  esac

  if test $at_skip_count = 0 && test $at_run_count -gt 1; then
    at_result="All $at_result"
  fi
fi

# Now put skips in the mix.
case $at_skip_count in
  0) ;;
  1) at_result="$at_result
1 test was skipped." ;;
  *) at_result="$at_result
$at_skip_count tests were skipped." ;;
esac

if test $at_unexpected_count = 0; then
  echo "$at_color$at_result$at_std"
  echo "$at_result" >&5
else
  echo "${at_color}ERROR: $at_result$at_std" >&2
  echo "ERROR: $at_result" >&5
  {
    echo
    printf "%s\n" "## ------------------------ ##
## Summary of the failures. ##
## ------------------------ ##"

    # Summary of failed and skipped tests.
    if test $at_fail_count != 0; then
      echo "Failed tests:"
      $SHELL "$at_myself" $at_fail_list --list
      echo
    fi
    if test $at_skip_count != 0; then
      echo "Skipped tests:"
      $SHELL "$at_myself" $at_skip_list --list
      echo
    fi
    if test $at_xpass_count != 0; then
      echo "Unexpected passes:"
      $SHELL "$at_myself" $at_xpass_list --list
      echo
    fi
    if test $at_fail_count != 0; then
      printf "%s\n" "## ---------------------- ##
## Detailed failed tests. ##
## ---------------------- ##"
      echo
      for at_group in $at_fail_list
      do
	at_group_normalized=$at_group

  eval 'while :; do
    case $at_group_normalized in #(
    '"$at_format"'*) break;;
    esac
    at_group_normalized=0$at_group_normalized
  done'

	cat "$at_suite_dir/$at_group_normalized/$as_me.log"
	echo
      done
      echo
    fi
    if test -n "$at_top_srcdir"; then
      sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## ${at_top_build_prefix}config.log ##
_ASBOX
      sed 's/^/| /' ${at_top_build_prefix}config.log
      echo
    fi
  } >&5

  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $as_me.log was created. ##
_ASBOX

  echo
  if $at_debug_p; then
    at_msg='per-test log files'
  else
    at_msg="\`${at_testdir+${at_testdir}/}$as_me.log'"
  fi
  at_msg1a=${at_xpass_list:+', '}
  at_msg1=$at_fail_list${at_fail_list:+" failed$at_msg1a"}
  at_msg2=$at_xpass_list${at_xpass_list:+" passed unexpectedly"}

  printf "%s\n" "Please send $at_msg and all information you think might help:

   To: <gray@gnu.org>
   Subject: [pound 4.10] $as_me: $at_msg1$at_msg2

You may investigate any problem if you feel able to do so, in which
case the test suite provides a good starting point.  Its output may
be found below \`${at_testdir+${at_testdir}/}$as_me.dir'.
"
  exit 1
fi

exit 0

## ------------- ##
## Actual tests. ##
## ------------- ##
#AT_START_1
at_fn_group_banner 1 'config.at:17' \
  "Configuration file syntax" "                      "
at_xfail=no
(
  printf "%s\n" "1. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat > pound.cfg <<_CONF
# General syntax
# Comment line
user "root" # inline comment

group "root"

Service
	Backend
		Address 127.0.0.1
		Port 8080
	End
End

_CONF
{ set +x
printf "%s\n" "$at_srcdir/config.at:20: pound -c -Wno-dns -Wno-include-dir -f pound.cfg"
at_fn_check_prepare_trace "config.at:20"
( $at_check_trace; pound -c -Wno-dns -Wno-include-dir -f pound.cfg
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/config.at:20"
$at_failed && at_fn_log_failure
$at_traceon; }


cat > pound.cfg <<_CONF
# Case-insensitive keywords
# Comment line
USER "root" # inline comment

GROUP "root"

SERVICE
	BACKEND
		ADDRESS 127.0.0.1
		PORT 8080
	END
END

_CONF
{ set +x
printf "%s\n" "$at_srcdir/config.at:34: pound -c -Wno-dns -Wno-include-dir -f pound.cfg"
at_fn_check_prepare_trace "config.at:34"
( $at_check_trace; pound -c -Wno-dns -Wno-include-dir -f pound.cfg
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/config.at:34"
$at_failed && at_fn_log_failure
$at_traceon; }


cat > pound.cfg <<_CONF
user "root"
# Unrecognized keyword
FooBar 10
group "root"

_CONF
{ set +x
printf "%s\n" "$at_srcdir/config.at:48: pound -c -Wno-dns -Wno-include-dir -f pound.cfg"
at_fn_check_prepare_trace "config.at:48"
( $at_check_trace; pound -c -Wno-dns -Wno-include-dir -f pound.cfg
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo >>"$at_stderr"; printf "%s\n" "pound: pound.cfg:3.1-6: unrecognized keyword
" | \
  $at_diff - "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/config.at:48"
$at_failed && at_fn_log_failure
$at_traceon; }


cat > pound.cfg <<_CONF
# Missing argument
user
group "0"

_CONF
{ set +x
printf "%s\n" "$at_srcdir/config.at:58: pound -c -Wno-dns -Wno-include-dir -f pound.cfg"
at_fn_check_prepare_trace "config.at:58"
( $at_check_trace; pound -c -Wno-dns -Wno-include-dir -f pound.cfg
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo >>"$at_stderr"; printf "%s\n" "pound: pound.cfg:2.4-3: expected quoted string, but found end of line
" | \
  $at_diff - "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/config.at:58"
$at_failed && at_fn_log_failure
$at_traceon; }


cat > pound.cfg <<_CONF
# Mistyped argument
user 10

_CONF
{ set +x
printf "%s\n" "$at_srcdir/config.at:67: pound -c -Wno-dns -Wno-include-dir -f pound.cfg"
at_fn_check_prepare_trace "config.at:67"
( $at_check_trace; pound -c -Wno-dns -Wno-include-dir -f pound.cfg
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo >>"$at_stderr"; printf "%s\n" "pound: pound.cfg:2.6-7: expected quoted string, but found number
" | \
  $at_diff - "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/config.at:67"
$at_failed && at_fn_log_failure
$at_traceon; }


cat > pound.cfg <<_CONF
# Extra argument
user "root" 10

_CONF
{ set +x
printf "%s\n" "$at_srcdir/config.at:75: pound -c -Wno-dns -Wno-include-dir -f pound.cfg"
at_fn_check_prepare_trace "config.at:75"
( $at_check_trace; pound -c -Wno-dns -Wno-include-dir -f pound.cfg
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo >>"$at_stderr"; printf "%s\n" "pound: pound.cfg:2.13-14: unexpected number
" | \
  $at_diff - "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/config.at:75"
$at_failed && at_fn_log_failure
$at_traceon; }


cat > pound.cfg <<_CONF
# Unrecognized escape
user "foo\Bar"

_CONF
{ set +x
printf "%s\n" "$at_srcdir/config.at:83: pound -c -Wno-dns -Wno-include-dir -f pound.cfg"
at_fn_check_prepare_trace "config.at:83"
( $at_check_trace; pound -c -Wno-dns -Wno-include-dir -f pound.cfg
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo >>"$at_stderr"; printf "%s\n" "pound: pound.cfg:2.11: unrecognized escape character
" | \
  $at_diff - "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/config.at:83"
$at_failed && at_fn_log_failure
$at_traceon; }


cat > pound.cfg <<_CONF
# Boolean arguments
Daemon 0
Daemon false
Daemon off
Daemon no

Daemon 1
Daemon true
Daemon on
Daemon yes

_CONF
{ set +x
printf "%s\n" "$at_srcdir/config.at:91: pound -c -Wno-dns -Wno-include-dir -f pound.cfg"
at_fn_check_prepare_trace "config.at:91"
( $at_check_trace; pound -c -Wno-dns -Wno-include-dir -f pound.cfg
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/config.at:91"
$at_failed && at_fn_log_failure
$at_traceon; }


cat > pound.cfg <<_CONF
# Invalid boolean value
Daemon whatever

_CONF
{ set +x
printf "%s\n" "$at_srcdir/config.at:103: pound -c -Wno-dns -Wno-include-dir -f pound.cfg"
at_fn_check_prepare_trace "config.at:103"
( $at_check_trace; pound -c -Wno-dns -Wno-include-dir -f pound.cfg
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo >>"$at_stderr"; printf "%s\n" "pound: pound.cfg:2.8-15: not a boolean value
pound: pound.cfg:2.8-15: valid booleans are: 1, yes, true, on for true value, and 0, no, false, off for false value
" | \
  $at_diff - "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/config.at:103"
$at_failed && at_fn_log_failure
$at_traceon; }


cat > pound.cfg <<_CONF
# Mandatory parameters
Service
	Backend
	End
End

_CONF
{ set +x
printf "%s\n" "$at_srcdir/config.at:112: pound -c -Wno-dns -Wno-include-dir -f pound.cfg"
at_fn_check_prepare_trace "config.at:112"
( $at_check_trace; pound -c -Wno-dns -Wno-include-dir -f pound.cfg
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo >>"$at_stderr"; printf "%s\n" "pound: pound.cfg:3.9-4.11: Backend missing Address declaration
" | \
  $at_diff - "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/config.at:112"
$at_failed && at_fn_log_failure
$at_traceon; }


cat > pound.cfg <<_CONF
# Mandatory parameters
Service
	Backend
		Address 127.0.0.1
	End
End

_CONF
{ set +x
printf "%s\n" "$at_srcdir/config.at:123: pound -c -Wno-dns -Wno-include-dir -f pound.cfg"
at_fn_check_prepare_trace "config.at:123"
( $at_check_trace; pound -c -Wno-dns -Wno-include-dir -f pound.cfg
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo >>"$at_stderr"; printf "%s\n" "pound: pound.cfg:3.9-5.11: Backend missing Port declaration
" | \
  $at_diff - "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/config.at:123"
$at_failed && at_fn_log_failure
$at_traceon; }


cat > pound.cfg <<_CONF
# Keyword ordering
Service
	Backend
		Port 80
		Address 127.0.0.1
	End
End

_CONF
{ set +x
printf "%s\n" "$at_srcdir/config.at:135: pound -c -Wno-dns -Wno-include-dir -f pound.cfg"
at_fn_check_prepare_trace "config.at:135"
( $at_check_trace; pound -c -Wno-dns -Wno-include-dir -f pound.cfg
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo >>"$at_stderr"; printf "%s\n" "pound: pound.cfg:4.17-20: Address statement should precede Port
" | \
  $at_diff - "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/config.at:135"
$at_failed && at_fn_log_failure
$at_traceon; }


cat > pound.cfg <<_CONF
# Superfluous statement
Service
	Backend
		Address "/tmp/pound.sock"
		Port 80
	End
End

_CONF
{ set +x
printf "%s\n" "$at_srcdir/config.at:148: pound -c -Wno-dns -Wno-include-dir -f pound.cfg"
at_fn_check_prepare_trace "config.at:148"
( $at_check_trace; pound -c -Wno-dns -Wno-include-dir -f pound.cfg
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo >>"$at_stderr"; printf "%s\n" "pound: pound.cfg:5.22-23: Port is not applicable to this address family
" | \
  $at_diff - "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/config.at:148"
$at_failed && at_fn_log_failure
$at_traceon; }


cat > pound.cfg <<_CONF
# UNIX socket
Service
	Backend
		Address "/tmp/pound.sock"
	End
End

_CONF
{ set +x
printf "%s\n" "$at_srcdir/config.at:161: pound -c -Wno-dns -Wno-include-dir -f pound.cfg"
at_fn_check_prepare_trace "config.at:161"
( $at_check_trace; pound -c -Wno-dns -Wno-include-dir -f pound.cfg
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/config.at:161"
$at_failed && at_fn_log_failure
$at_traceon; }


cat > pound.cfg <<_CONF
# Optional argument
Service "LOCAL"
	Backend
		Address "/tmp/pound.sock"
	End
End

_CONF
{ set +x
printf "%s\n" "$at_srcdir/config.at:169: pound -c -Wno-dns -Wno-include-dir -f pound.cfg"
at_fn_check_prepare_trace "config.at:169"
( $at_check_trace; pound -c -Wno-dns -Wno-include-dir -f pound.cfg
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/config.at:169"
$at_failed && at_fn_log_failure
$at_traceon; }


cat > pound.cfg <<_CONF
# Missing end statement
Service
	Backend
		Address "/tmp/pound.sock"
	End

_CONF
{ set +x
printf "%s\n" "$at_srcdir/config.at:177: pound -c -Wno-dns -Wno-include-dir -f pound.cfg"
at_fn_check_prepare_trace "config.at:177"
( $at_check_trace; pound -c -Wno-dns -Wno-include-dir -f pound.cfg
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo >>"$at_stderr"; printf "%s\n" "pound: pound.cfg:2.7: unexpected end of file
" | \
  $at_diff - "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/config.at:177"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_1
#AT_START_2
at_fn_group_banner 2 'loglevcomp.at:17' \
  "Traditional log levels (compilation)" "           "
at_xfail=no
(
  printf "%s\n" "2. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat > pound.cfg <<_CONF
LogLevel 0
_CONF
{ set +x
printf "%s\n" "$at_srcdir/loglevcomp.at:19: pound -c -Wno-dns -Wno-include-dir -f pound.cfg"
at_fn_check_prepare_trace "loglevcomp.at:19"
( $at_check_trace; pound -c -Wno-dns -Wno-include-dir -f pound.cfg
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/loglevcomp.at:19"
$at_failed && at_fn_log_failure
$at_traceon; }

cat > pound.cfg <<_CONF
LogLevel 1
_CONF
{ set +x
printf "%s\n" "$at_srcdir/loglevcomp.at:20: pound -c -Wno-dns -Wno-include-dir -f pound.cfg"
at_fn_check_prepare_trace "loglevcomp.at:20"
( $at_check_trace; pound -c -Wno-dns -Wno-include-dir -f pound.cfg
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/loglevcomp.at:20"
$at_failed && at_fn_log_failure
$at_traceon; }

cat > pound.cfg <<_CONF
LogLevel 2
_CONF
{ set +x
printf "%s\n" "$at_srcdir/loglevcomp.at:21: pound -c -Wno-dns -Wno-include-dir -f pound.cfg"
at_fn_check_prepare_trace "loglevcomp.at:21"
( $at_check_trace; pound -c -Wno-dns -Wno-include-dir -f pound.cfg
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/loglevcomp.at:21"
$at_failed && at_fn_log_failure
$at_traceon; }

cat > pound.cfg <<_CONF
LogLevel 3
_CONF
{ set +x
printf "%s\n" "$at_srcdir/loglevcomp.at:22: pound -c -Wno-dns -Wno-include-dir -f pound.cfg"
at_fn_check_prepare_trace "loglevcomp.at:22"
( $at_check_trace; pound -c -Wno-dns -Wno-include-dir -f pound.cfg
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/loglevcomp.at:22"
$at_failed && at_fn_log_failure
$at_traceon; }

cat > pound.cfg <<_CONF
LogLevel 4
_CONF
{ set +x
printf "%s\n" "$at_srcdir/loglevcomp.at:23: pound -c -Wno-dns -Wno-include-dir -f pound.cfg"
at_fn_check_prepare_trace "loglevcomp.at:23"
( $at_check_trace; pound -c -Wno-dns -Wno-include-dir -f pound.cfg
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/loglevcomp.at:23"
$at_failed && at_fn_log_failure
$at_traceon; }

cat > pound.cfg <<_CONF
LogLevel 5
_CONF
{ set +x
printf "%s\n" "$at_srcdir/loglevcomp.at:24: pound -c -Wno-dns -Wno-include-dir -f pound.cfg"
at_fn_check_prepare_trace "loglevcomp.at:24"
( $at_check_trace; pound -c -Wno-dns -Wno-include-dir -f pound.cfg
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/loglevcomp.at:24"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_2
#AT_START_3
at_fn_group_banner 3 'echo.at:16' \
  "Basic request processing" "                       "
at_xfail=no
(
  printf "%s\n" "3. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/echo.at:18:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
                Backend
                        Address
                        Port
                End
	End
End
_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo/bar
end

200
x-orig-uri: /echo/foo/bar
x-backend-ident: pound.cfi:3
end

POST /echo/foo

In placerat urna vitae ligula fermentum auctor. Quisque convallis
consectetur rutrum. Proin eleifend sapien a diam ultrices, non
consequat enim tempus. Etiam viverra, odio eget mattis congue, mi
metus posuere augue, tincidunt iaculis magna mi eu orci. Sed feugiat,
dui quis dignissim lacinia, elit nulla maximus lectus, at porttitor
augue sem quis enim. Donec vitae eros ullamcorper, euismod risus vel,
faucibus diam. Donec et lectus urna. Nullam iaculis nulla bibendum
tincidunt ornare. Sed maximus, nunc at varius feugiat, lacus massa
dapibus ante, ac accumsan nisl neque eget lectus. Integer id molestie
orci, mollis varius ex. Mauris tristique dictum tellus, quis malesuada
urna vulputate sit amet.
end

200
x-orig-uri: /echo/foo
x-backend-ident: pound.cfi:3

In placerat urna vitae ligula fermentum auctor. Quisque convallis
consectetur rutrum. Proin eleifend sapien a diam ultrices, non
consequat enim tempus. Etiam viverra, odio eget mattis congue, mi
metus posuere augue, tincidunt iaculis magna mi eu orci. Sed feugiat,
dui quis dignissim lacinia, elit nulla maximus lectus, at porttitor
augue sem quis enim. Donec vitae eros ullamcorper, euismod risus vel,
faucibus diam. Donec et lectus urna. Nullam iaculis nulla bibendum
tincidunt ornare. Sed maximus, nunc at varius feugiat, lacus massa
dapibus ante, ac accumsan nisl neque eget lectus. Integer id molestie
orci, mollis varius ex. Mauris tristique dictum tellus, quis malesuada
urna vulputate sit amet.
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "echo.at:18"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
                Backend
                        Address
                        Port
                End
	End
End
_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo/bar
end

200
x-orig-uri: /echo/foo/bar
x-backend-ident: pound.cfi:3
end

POST /echo/foo

In placerat urna vitae ligula fermentum auctor. Quisque convallis
consectetur rutrum. Proin eleifend sapien a diam ultrices, non
consequat enim tempus. Etiam viverra, odio eget mattis congue, mi
metus posuere augue, tincidunt iaculis magna mi eu orci. Sed feugiat,
dui quis dignissim lacinia, elit nulla maximus lectus, at porttitor
augue sem quis enim. Donec vitae eros ullamcorper, euismod risus vel,
faucibus diam. Donec et lectus urna. Nullam iaculis nulla bibendum
tincidunt ornare. Sed maximus, nunc at varius feugiat, lacus massa
dapibus ante, ac accumsan nisl neque eget lectus. Integer id molestie
orci, mollis varius ex. Mauris tristique dictum tellus, quis malesuada
urna vulputate sit amet.
end

200
x-orig-uri: /echo/foo
x-backend-ident: pound.cfi:3

In placerat urna vitae ligula fermentum auctor. Quisque convallis
consectetur rutrum. Proin eleifend sapien a diam ultrices, non
consequat enim tempus. Etiam viverra, odio eget mattis congue, mi
metus posuere augue, tincidunt iaculis magna mi eu orci. Sed feugiat,
dui quis dignissim lacinia, elit nulla maximus lectus, at porttitor
augue sem quis enim. Donec vitae eros ullamcorper, euismod risus vel,
faucibus diam. Donec et lectus urna. Nullam iaculis nulla bibendum
tincidunt ornare. Sed maximus, nunc at varius feugiat, lacus massa
dapibus ante, ac accumsan nisl neque eget lectus. Integer id molestie
orci, mollis varius ex. Mauris tristique dictum tellus, quis malesuada
urna vulputate sit amet.
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/echo.at:18"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_3
#AT_START_4
at_fn_group_banner 4 'loglevrun.at:17' \
  "Traditional log levels (output)" "                "
at_xfail=no
(
  printf "%s\n" "4. $at_setup_line: testing $at_desc ..."
  $at_traceon





{ set +x
printf "%s\n" "$at_srcdir/loglevrun.at:46:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service \"default\"
                Backend
                        Address
                        Port
                End
	End
End
_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.com
end

200
end

_ATEOF

perl \$HARNESS --log-level=0 --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "loglevrun.at:46"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service "default"
                Backend
                        Address
                        Port
                End
	End
End
_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.com
end

200
end

_ATEOF

perl $HARNESS --log-level=0 --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/loglevrun.at:46"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/loglevrun.at:46: cat pound.log | sed -e 's/^pound: //' \\
   -e '/^starting/d' \\
   -e '/^shutting down/d' \\
   -e '/obtained address/d' \\
   -e '/waiting for [0-9][0-9]* active threads to terminate/d'"
at_fn_check_prepare_notrace 'an embedded newline' "loglevrun.at:46"
( $at_check_trace; cat pound.log | sed -e 's/^pound: //' \
   -e '/^starting/d' \
   -e '/^shutting down/d' \
   -e '/obtained address/d' \
   -e '/waiting for [0-9][0-9]* active threads to terminate/d'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/loglevrun.at:46"
$at_failed && at_fn_log_failure
$at_traceon; }



{ set +x
printf "%s\n" "$at_srcdir/loglevrun.at:48:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service \"default\"
                Backend
                        Address
                        Port
                End
	End
End
_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.com
end

200
end

_ATEOF

perl \$HARNESS --log-level=1 --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "loglevrun.at:48"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service "default"
                Backend
                        Address
                        Port
                End
	End
End
_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.com
end

200
end

_ATEOF

perl $HARNESS --log-level=1 --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/loglevrun.at:48"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/loglevrun.at:48: cat pound.log | sed -e 's/^pound: //' \\
   -e '/^starting/d' \\
   -e '/^shutting down/d' \\
   -e '/obtained address/d' \\
   -e '/waiting for [0-9][0-9]* active threads to terminate/d'"
at_fn_check_prepare_notrace 'an embedded newline' "loglevrun.at:48"
( $at_check_trace; cat pound.log | sed -e 's/^pound: //' \
   -e '/^starting/d' \
   -e '/^shutting down/d' \
   -e '/obtained address/d' \
   -e '/waiting for [0-9][0-9]* active threads to terminate/d'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "127.0.0.1 GET /echo/foo HTTP/1.1 - HTTP/1.1 200 OK
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/loglevrun.at:48"
$at_failed && at_fn_log_failure
$at_traceon; }



{ set +x
printf "%s\n" "$at_srcdir/loglevrun.at:52:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service \"default\"
                Backend
                        Address
                        Port
                End
	End
End
_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.com
end

200
end

_ATEOF

perl \$HARNESS --log-level=2 --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "loglevrun.at:52"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service "default"
                Backend
                        Address
                        Port
                End
	End
End
_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.com
end

200
end

_ATEOF

perl $HARNESS --log-level=2 --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/loglevrun.at:52"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/loglevrun.at:52: cat pound.log | sed -e 's/^pound: //' \\
   -e '/^starting/d' \\
   -e '/^shutting down/d' \\
   -e '/obtained address/d' \\
   -e '/waiting for [0-9][0-9]* active threads to terminate/d' -e 's/\\(127\\.0\\.0\\.1\\):[0-9][0-9]*/\\1:PORT/g' \\
   -e 's/\\(example\\.com\\):[0-9][0-9]*/\\1:PORT/g' \\
   -e 's/[0-9][0-9]*\\.[0-9][0-9][0-9] sec\$/0.000 sec/'"
at_fn_check_prepare_notrace 'an embedded newline' "loglevrun.at:52"
( $at_check_trace; cat pound.log | sed -e 's/^pound: //' \
   -e '/^starting/d' \
   -e '/^shutting down/d' \
   -e '/obtained address/d' \
   -e '/waiting for [0-9][0-9]* active threads to terminate/d' -e 's/\(127\.0\.0\.1\):[0-9][0-9]*/\1:PORT/g' \
   -e 's/\(example\.com\):[0-9][0-9]*/\1:PORT/g' \
   -e 's/[0-9][0-9]*\.[0-9][0-9][0-9] sec$/0.000 sec/'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "127.0.0.1 GET /echo/foo HTTP/1.1 - HTTP/1.1 200 OK (example.com:PORT/default -> 127.0.0.1:PORT) 0.000 sec
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/loglevrun.at:52"
$at_failed && at_fn_log_failure
$at_traceon; }



{ set +x
printf "%s\n" "$at_srcdir/loglevrun.at:59:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service \"default\"
                Backend
                        Address
                        Port
                End
	End
End
_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.com
end

200
end

_ATEOF

perl \$HARNESS --log-level=3 --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "loglevrun.at:59"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service "default"
                Backend
                        Address
                        Port
                End
	End
End
_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.com
end

200
end

_ATEOF

perl $HARNESS --log-level=3 --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/loglevrun.at:59"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/loglevrun.at:59: cat pound.log | sed -e 's/^pound: //' \\
   -e '/^starting/d' \\
   -e '/^shutting down/d' \\
   -e '/obtained address/d' \\
   -e '/waiting for [0-9][0-9]* active threads to terminate/d' -e '/example\\.com:[0-9][0-9]* 127\\.0\\.0\\.1 - - \\[[0-9][0-9]\\/[A-Z][a-z][a-z]\\/[0-9][0-9][0-9][0-9]:[0-9][0-9]:[0-9][0-9]:[0-9][0-9] [+-][0-9][0-9][0-9][0-9]\\] \"GET \\/echo\\/foo HTTP\\/1.1\" 200 - \"\" \"[^\"]*\"/d'"
at_fn_check_prepare_notrace 'an embedded newline' "loglevrun.at:59"
( $at_check_trace; cat pound.log | sed -e 's/^pound: //' \
   -e '/^starting/d' \
   -e '/^shutting down/d' \
   -e '/obtained address/d' \
   -e '/waiting for [0-9][0-9]* active threads to terminate/d' -e '/example\.com:[0-9][0-9]* 127\.0\.0\.1 - - \[[0-9][0-9]\/[A-Z][a-z][a-z]\/[0-9][0-9][0-9][0-9]:[0-9][0-9]:[0-9][0-9]:[0-9][0-9] [+-][0-9][0-9][0-9][0-9]\] "GET \/echo\/foo HTTP\/1.1" 200 - "" "[^"]*"/d'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/loglevrun.at:59"
$at_failed && at_fn_log_failure
$at_traceon; }



{ set +x
printf "%s\n" "$at_srcdir/loglevrun.at:62:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service \"default\"
                Backend
                        Address
                        Port
                End
	End
End
_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.com
end

200
end

_ATEOF

perl \$HARNESS --log-level=4 --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "loglevrun.at:62"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service "default"
                Backend
                        Address
                        Port
                End
	End
End
_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.com
end

200
end

_ATEOF

perl $HARNESS --log-level=4 --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/loglevrun.at:62"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/loglevrun.at:62: cat pound.log | sed -e 's/^pound: //' \\
   -e '/^starting/d' \\
   -e '/^shutting down/d' \\
   -e '/obtained address/d' \\
   -e '/waiting for [0-9][0-9]* active threads to terminate/d' -e '/^127\\.0\\.0\\.1 - - \\[[0-9][0-9]\\/[A-Z][a-z][a-z]\\/[0-9][0-9][0-9][0-9]:[0-9][0-9]:[0-9][0-9]:[0-9][0-9] [+-][0-9][0-9][0-9][0-9]\\] \"GET \\/echo\\/foo HTTP\\/1.1\" 200 - \"\" \"[^\"]*\"\$/d'"
at_fn_check_prepare_notrace 'an embedded newline' "loglevrun.at:62"
( $at_check_trace; cat pound.log | sed -e 's/^pound: //' \
   -e '/^starting/d' \
   -e '/^shutting down/d' \
   -e '/obtained address/d' \
   -e '/waiting for [0-9][0-9]* active threads to terminate/d' -e '/^127\.0\.0\.1 - - \[[0-9][0-9]\/[A-Z][a-z][a-z]\/[0-9][0-9][0-9][0-9]:[0-9][0-9]:[0-9][0-9]:[0-9][0-9] [+-][0-9][0-9][0-9][0-9]\] "GET \/echo\/foo HTTP\/1.1" 200 - "" "[^"]*"$/d'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/loglevrun.at:62"
$at_failed && at_fn_log_failure
$at_traceon; }



{ set +x
printf "%s\n" "$at_srcdir/loglevrun.at:65:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service \"default\"
                Backend
                        Address
                        Port
                End
	End
End
_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.com
end

200
end

_ATEOF

perl \$HARNESS --log-level=5 --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "loglevrun.at:65"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service "default"
                Backend
                        Address
                        Port
                End
	End
End
_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.com
end

200
end

_ATEOF

perl $HARNESS --log-level=5 --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/loglevrun.at:65"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/loglevrun.at:65: cat pound.log | sed -e 's/^pound: //' \\
   -e '/^starting/d' \\
   -e '/^shutting down/d' \\
   -e '/obtained address/d' \\
   -e '/waiting for [0-9][0-9]* active threads to terminate/d' -e '/^example\\.com:[0-9][0-9]* 127\\.0\\.0\\.1 - - \\[[0-9][0-9]\\/[A-Z][a-z][a-z]\\/[0-9][0-9][0-9][0-9]:[0-9][0-9]:[0-9][0-9]:[0-9][0-9] [+-][0-9][0-9][0-9][0-9]\\] \"GET \\/echo\\/foo HTTP\\/1.1\" 200 - \"\" \"[^\"]*\" (default -> 127\\.0\\.0\\.1:[0-9][0-9]*) [0-9][0-9]*\\.[0-9][0-9][0-9] sec\$/d'"
at_fn_check_prepare_notrace 'an embedded newline' "loglevrun.at:65"
( $at_check_trace; cat pound.log | sed -e 's/^pound: //' \
   -e '/^starting/d' \
   -e '/^shutting down/d' \
   -e '/obtained address/d' \
   -e '/waiting for [0-9][0-9]* active threads to terminate/d' -e '/^example\.com:[0-9][0-9]* 127\.0\.0\.1 - - \[[0-9][0-9]\/[A-Z][a-z][a-z]\/[0-9][0-9][0-9][0-9]:[0-9][0-9]:[0-9][0-9]:[0-9][0-9] [+-][0-9][0-9][0-9][0-9]\] "GET \/echo\/foo HTTP\/1.1" 200 - "" "[^"]*" (default -> 127\.0\.0\.1:[0-9][0-9]*) [0-9][0-9]*\.[0-9][0-9][0-9] sec$/d'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/loglevrun.at:65"
$at_failed && at_fn_log_failure
$at_traceon; }



  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_4
#AT_START_5
at_fn_group_banner 5 'logfmt.at:1' \
  "HTTP log formats" "                               "
at_xfail=no
(
  printf "%s\n" "5. $at_setup_line: testing $at_desc ..."
  $at_traceon






{ set +x
printf "%s\n" "$at_srcdir/logfmt.at:35:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
LogFormat \"default\" \"%%A=%A, %%a=%a, %%B=%B, %%b=%b, %%H=%H, %%H=%h, %%{X-Null}I=\\\"%{X-Null}I\\\", %%{X-Null}i=\\\"%{X-Null}i\\\", %%{X-Header}i=\\\"%{X-Header}i\\\", %%m=%m, %%q=\\\"%q\\\", %%{listener}N=%{listener}N, %%{backend}N=%{backend}N, %%r=\\\"%r\\\", %%{service}N=%{service}N, %%s=%s, %%>s=\\\"%>s\\\", %%u=%u, %%v=%v\"
LogLevel \"default\"
ListenHTTP \"main\"
	Service \"default\"
                Backend
                        Address
                        Port
                End
	End
End
_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo?index=1&q=text
Host: example.com
X-Header: test value
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
end

200
end

_ATEOF

perl \$HARNESS --log-level=-1 --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "logfmt.at:35"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
LogFormat "default" "%%A=%A, %%a=%a, %%B=%B, %%b=%b, %%H=%H, %%H=%h, %%{X-Null}I=\"%{X-Null}I\", %%{X-Null}i=\"%{X-Null}i\", %%{X-Header}i=\"%{X-Header}i\", %%m=%m, %%q=\"%q\", %%{listener}N=%{listener}N, %%{backend}N=%{backend}N, %%r=\"%r\", %%{service}N=%{service}N, %%s=%s, %%>s=\"%>s\", %%u=%u, %%v=%v"
LogLevel "default"
ListenHTTP "main"
	Service "default"
                Backend
                        Address
                        Port
                End
	End
End
_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo?index=1&q=text
Host: example.com
X-Header: test value
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
end

200
end

_ATEOF

perl $HARNESS --log-level=-1 --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/logfmt.at:35"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/logfmt.at:35: cat pound.log | sed -e 's/^pound: //' \\
   -e '/^starting/d' \\
   -e '/^shutting down/d' \\
   -e '/obtained address/d' \\
   -e '/waiting for [0-9][0-9]* active threads to terminate/d' -e 's/\\(127\\.0\\.0\\.1\\):[0-9][0-9]*/\\1:PORT/g'"
at_fn_check_prepare_notrace 'an embedded newline' "logfmt.at:35"
( $at_check_trace; cat pound.log | sed -e 's/^pound: //' \
   -e '/^starting/d' \
   -e '/^shutting down/d' \
   -e '/obtained address/d' \
   -e '/waiting for [0-9][0-9]* active threads to terminate/d' -e 's/\(127\.0\.0\.1\):[0-9][0-9]*/\1:PORT/g'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "%A=127.0.0.1, %a=127.0.0.1, %B=0, %b=-, %H=http, %H=127.0.0.1, %{X-Null}I=\"-\", %{X-Null}i=\"\", %{X-Header}i=\"test value\", %m=GET, %q=\"?index=1&q=text\", %{listener}N=main, %{backend}N=127.0.0.1:PORT, %r=\"GET /echo/foo?index=1&q=text HTTP/1.1\", %{service}N=default, %s=200, %>s=\"HTTP/1.1 200 OK\", %u=Aladdin, %v=main
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/logfmt.at:35"
$at_failed && at_fn_log_failure
$at_traceon; }



{ set +x
printf "%s\n" "$at_srcdir/logfmt.at:40:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
LogFormat \"default\" \"%t\"
LogLevel \"default\"
ListenHTTP \"main\"
	Service \"default\"
                Backend
                        Address
                        Port
                End
	End
End
_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo?index=1&q=text
Host: example.com
X-Header: test value
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
end

200
end

_ATEOF

perl \$HARNESS --log-level=-1 --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "logfmt.at:40"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
LogFormat "default" "%t"
LogLevel "default"
ListenHTTP "main"
	Service "default"
                Backend
                        Address
                        Port
                End
	End
End
_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo?index=1&q=text
Host: example.com
X-Header: test value
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
end

200
end

_ATEOF

perl $HARNESS --log-level=-1 --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/logfmt.at:40"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/logfmt.at:40: cat pound.log | sed -e 's/^pound: //' \\
   -e '/^starting/d' \\
   -e '/^shutting down/d' \\
   -e '/obtained address/d' \\
   -e '/waiting for [0-9][0-9]* active threads to terminate/d' -e '/^\\[[0-9][0-9]\\/[A-Z][a-z][a-z]\\/[0-9][0-9][0-9][0-9]:[0-9][0-9]:[0-9][0-9]:[0-9][0-9] [+-][0-9][0-9][0-9][0-9]\\]\$/d'"
at_fn_check_prepare_notrace 'an embedded newline' "logfmt.at:40"
( $at_check_trace; cat pound.log | sed -e 's/^pound: //' \
   -e '/^starting/d' \
   -e '/^shutting down/d' \
   -e '/obtained address/d' \
   -e '/waiting for [0-9][0-9]* active threads to terminate/d' -e '/^\[[0-9][0-9]\/[A-Z][a-z][a-z]\/[0-9][0-9][0-9][0-9]:[0-9][0-9]:[0-9][0-9]:[0-9][0-9] [+-][0-9][0-9][0-9][0-9]\]$/d'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/logfmt.at:40"
$at_failed && at_fn_log_failure
$at_traceon; }



{ set +x
printf "%s\n" "$at_srcdir/logfmt.at:43:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
LogFormat \"default\" \"%{%Y-%m-%d}t\"
LogLevel \"default\"
ListenHTTP \"main\"
	Service \"default\"
                Backend
                        Address
                        Port
                End
	End
End
_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo?index=1&q=text
Host: example.com
X-Header: test value
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
end

200
end

_ATEOF

perl \$HARNESS --log-level=-1 --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "logfmt.at:43"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
LogFormat "default" "%{%Y-%m-%d}t"
LogLevel "default"
ListenHTTP "main"
	Service "default"
                Backend
                        Address
                        Port
                End
	End
End
_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo?index=1&q=text
Host: example.com
X-Header: test value
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
end

200
end

_ATEOF

perl $HARNESS --log-level=-1 --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/logfmt.at:43"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/logfmt.at:43: cat pound.log | sed -e 's/^pound: //' \\
   -e '/^starting/d' \\
   -e '/^shutting down/d' \\
   -e '/obtained address/d' \\
   -e '/waiting for [0-9][0-9]* active threads to terminate/d' -e '/^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]\$/d'"
at_fn_check_prepare_notrace 'an embedded newline' "logfmt.at:43"
( $at_check_trace; cat pound.log | sed -e 's/^pound: //' \
   -e '/^starting/d' \
   -e '/^shutting down/d' \
   -e '/obtained address/d' \
   -e '/waiting for [0-9][0-9]* active threads to terminate/d' -e '/^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]$/d'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/logfmt.at:43"
$at_failed && at_fn_log_failure
$at_traceon; }



{ set +x
printf "%s\n" "$at_srcdir/logfmt.at:46:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
LogFormat \"default\" \"%D\"
LogLevel \"default\"
ListenHTTP \"main\"
	Service \"default\"
                Backend
                        Address
                        Port
                End
	End
End
_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo?index=1&q=text
Host: example.com
X-Header: test value
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
end

200
end

_ATEOF

perl \$HARNESS --log-level=-1 --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "logfmt.at:46"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
LogFormat "default" "%D"
LogLevel "default"
ListenHTTP "main"
	Service "default"
                Backend
                        Address
                        Port
                End
	End
End
_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo?index=1&q=text
Host: example.com
X-Header: test value
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
end

200
end

_ATEOF

perl $HARNESS --log-level=-1 --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/logfmt.at:46"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/logfmt.at:46: cat pound.log | sed -e 's/^pound: //' \\
   -e '/^starting/d' \\
   -e '/^shutting down/d' \\
   -e '/obtained address/d' \\
   -e '/waiting for [0-9][0-9]* active threads to terminate/d' -e '/^[0-9][0-9]*/d'"
at_fn_check_prepare_notrace 'an embedded newline' "logfmt.at:46"
( $at_check_trace; cat pound.log | sed -e 's/^pound: //' \
   -e '/^starting/d' \
   -e '/^shutting down/d' \
   -e '/obtained address/d' \
   -e '/waiting for [0-9][0-9]* active threads to terminate/d' -e '/^[0-9][0-9]*/d'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/logfmt.at:46"
$at_failed && at_fn_log_failure
$at_traceon; }



{ set +x
printf "%s\n" "$at_srcdir/logfmt.at:49:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
LogFormat \"default\" \"%T\"
LogLevel \"default\"
ListenHTTP \"main\"
	Service \"default\"
                Backend
                        Address
                        Port
                End
	End
End
_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo?index=1&q=text
Host: example.com
X-Header: test value
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
end

200
end

_ATEOF

perl \$HARNESS --log-level=-1 --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "logfmt.at:49"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
LogFormat "default" "%T"
LogLevel "default"
ListenHTTP "main"
	Service "default"
                Backend
                        Address
                        Port
                End
	End
End
_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo?index=1&q=text
Host: example.com
X-Header: test value
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
end

200
end

_ATEOF

perl $HARNESS --log-level=-1 --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/logfmt.at:49"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/logfmt.at:49: cat pound.log | sed -e 's/^pound: //' \\
   -e '/^starting/d' \\
   -e '/^shutting down/d' \\
   -e '/obtained address/d' \\
   -e '/waiting for [0-9][0-9]* active threads to terminate/d' -e '/^[0-9][0-9]*/d'"
at_fn_check_prepare_notrace 'an embedded newline' "logfmt.at:49"
( $at_check_trace; cat pound.log | sed -e 's/^pound: //' \
   -e '/^starting/d' \
   -e '/^shutting down/d' \
   -e '/obtained address/d' \
   -e '/waiting for [0-9][0-9]* active threads to terminate/d' -e '/^[0-9][0-9]*/d'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/logfmt.at:49"
$at_failed && at_fn_log_failure
$at_traceon; }



{ set +x
printf "%s\n" "$at_srcdir/logfmt.at:52:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
LogFormat \"default\" \"%{ms}T\"
LogLevel \"default\"
ListenHTTP \"main\"
	Service \"default\"
                Backend
                        Address
                        Port
                End
	End
End
_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo?index=1&q=text
Host: example.com
X-Header: test value
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
end

200
end

_ATEOF

perl \$HARNESS --log-level=-1 --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "logfmt.at:52"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
LogFormat "default" "%{ms}T"
LogLevel "default"
ListenHTTP "main"
	Service "default"
                Backend
                        Address
                        Port
                End
	End
End
_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo?index=1&q=text
Host: example.com
X-Header: test value
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
end

200
end

_ATEOF

perl $HARNESS --log-level=-1 --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/logfmt.at:52"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/logfmt.at:52: cat pound.log | sed -e 's/^pound: //' \\
   -e '/^starting/d' \\
   -e '/^shutting down/d' \\
   -e '/obtained address/d' \\
   -e '/waiting for [0-9][0-9]* active threads to terminate/d' -e '/^[0-9][0-9]*/d'"
at_fn_check_prepare_notrace 'an embedded newline' "logfmt.at:52"
( $at_check_trace; cat pound.log | sed -e 's/^pound: //' \
   -e '/^starting/d' \
   -e '/^shutting down/d' \
   -e '/obtained address/d' \
   -e '/waiting for [0-9][0-9]* active threads to terminate/d' -e '/^[0-9][0-9]*/d'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/logfmt.at:52"
$at_failed && at_fn_log_failure
$at_traceon; }



  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_5
#AT_START_6
at_fn_group_banner 6 'logsup.at:17' \
  "Log suppression" "                                "
at_xfail=no
(
  printf "%s\n" "6. $at_setup_line: testing $at_desc ..."
  $at_traceon






{ set +x
printf "%s\n" "$at_srcdir/logsup.at:44:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
LogFormat \"status\" \"%s\"
LogLevel \"status\"
ListenHTTP
	Service \"default\"
	        LogSuppress all
                Backend
                        Address
                        Port
                End
	End
End
_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.com
end

200
end

GET /one
Host: example.com
end

404
end

_ATEOF

perl \$HARNESS --log-level=-1 --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "logsup.at:44"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
LogFormat "status" "%s"
LogLevel "status"
ListenHTTP
	Service "default"
	        LogSuppress all
                Backend
                        Address
                        Port
                End
	End
End
_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.com
end

200
end

GET /one
Host: example.com
end

404
end

_ATEOF

perl $HARNESS --log-level=-1 --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/logsup.at:44"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/logsup.at:44: cat pound.log | sed -e 's/^pound: //' \\
   -e '/^starting/d' \\
   -e '/^shutting down/d' \\
   -e '/obtained address/d' \\
   -e '/waiting for [0-9][0-9]* active threads to terminate/d'"
at_fn_check_prepare_notrace 'an embedded newline' "logsup.at:44"
( $at_check_trace; cat pound.log | sed -e 's/^pound: //' \
   -e '/^starting/d' \
   -e '/^shutting down/d' \
   -e '/obtained address/d' \
   -e '/waiting for [0-9][0-9]* active threads to terminate/d'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/logsup.at:44"
$at_failed && at_fn_log_failure
$at_traceon; }



{ set +x
printf "%s\n" "$at_srcdir/logsup.at:60:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
LogFormat \"status\" \"%s\"
LogLevel \"status\"
ListenHTTP
	Service \"default\"
	        LogSuppress success
                Backend
                        Address
                        Port
                End
	End
End
_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.com
end

200
end

GET /one
Host: example.com
end

404
end

_ATEOF

perl \$HARNESS --log-level=-1 --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "logsup.at:60"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
LogFormat "status" "%s"
LogLevel "status"
ListenHTTP
	Service "default"
	        LogSuppress success
                Backend
                        Address
                        Port
                End
	End
End
_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.com
end

200
end

GET /one
Host: example.com
end

404
end

_ATEOF

perl $HARNESS --log-level=-1 --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/logsup.at:60"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/logsup.at:60: cat pound.log | sed -e 's/^pound: //' \\
   -e '/^starting/d' \\
   -e '/^shutting down/d' \\
   -e '/obtained address/d' \\
   -e '/waiting for [0-9][0-9]* active threads to terminate/d'"
at_fn_check_prepare_notrace 'an embedded newline' "logsup.at:60"
( $at_check_trace; cat pound.log | sed -e 's/^pound: //' \
   -e '/^starting/d' \
   -e '/^shutting down/d' \
   -e '/obtained address/d' \
   -e '/waiting for [0-9][0-9]* active threads to terminate/d'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "404
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/logsup.at:60"
$at_failed && at_fn_log_failure
$at_traceon; }



{ set +x
printf "%s\n" "$at_srcdir/logsup.at:78:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
LogFormat \"status\" \"%s\"
LogLevel \"status\"
ListenHTTP
	Service \"default\"
	        LogSuppress 2
                Backend
                        Address
                        Port
                End
	End
End
_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.com
end

200
end

GET /one
Host: example.com
end

404
end

_ATEOF

perl \$HARNESS --log-level=-1 --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "logsup.at:78"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
LogFormat "status" "%s"
LogLevel "status"
ListenHTTP
	Service "default"
	        LogSuppress 2
                Backend
                        Address
                        Port
                End
	End
End
_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.com
end

200
end

GET /one
Host: example.com
end

404
end

_ATEOF

perl $HARNESS --log-level=-1 --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/logsup.at:78"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/logsup.at:78: cat pound.log | sed -e 's/^pound: //' \\
   -e '/^starting/d' \\
   -e '/^shutting down/d' \\
   -e '/obtained address/d' \\
   -e '/waiting for [0-9][0-9]* active threads to terminate/d'"
at_fn_check_prepare_notrace 'an embedded newline' "logsup.at:78"
( $at_check_trace; cat pound.log | sed -e 's/^pound: //' \
   -e '/^starting/d' \
   -e '/^shutting down/d' \
   -e '/obtained address/d' \
   -e '/waiting for [0-9][0-9]* active threads to terminate/d'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "404
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/logsup.at:78"
$at_failed && at_fn_log_failure
$at_traceon; }



{ set +x
printf "%s\n" "$at_srcdir/logsup.at:96:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
LogFormat \"status\" \"%s\"
LogLevel \"status\"
ListenHTTP
	Service \"default\"
	        LogSuppress clterr
                Backend
                        Address
                        Port
                End
	End
End
_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.com
end

200
end

GET /one
Host: example.com
end

404
end

_ATEOF

perl \$HARNESS --log-level=-1 --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "logsup.at:96"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
LogFormat "status" "%s"
LogLevel "status"
ListenHTTP
	Service "default"
	        LogSuppress clterr
                Backend
                        Address
                        Port
                End
	End
End
_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.com
end

200
end

GET /one
Host: example.com
end

404
end

_ATEOF

perl $HARNESS --log-level=-1 --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/logsup.at:96"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/logsup.at:96: cat pound.log | sed -e 's/^pound: //' \\
   -e '/^starting/d' \\
   -e '/^shutting down/d' \\
   -e '/obtained address/d' \\
   -e '/waiting for [0-9][0-9]* active threads to terminate/d'"
at_fn_check_prepare_notrace 'an embedded newline' "logsup.at:96"
( $at_check_trace; cat pound.log | sed -e 's/^pound: //' \
   -e '/^starting/d' \
   -e '/^shutting down/d' \
   -e '/obtained address/d' \
   -e '/waiting for [0-9][0-9]* active threads to terminate/d'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "200
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/logsup.at:96"
$at_failed && at_fn_log_failure
$at_traceon; }



{ set +x
printf "%s\n" "$at_srcdir/logsup.at:114:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
LogFormat \"status\" \"%s\"
LogLevel \"status\"
ListenHTTP
	Service \"default\"
	        LogSuppress 4
                Backend
                        Address
                        Port
                End
	End
End
_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.com
end

200
end

GET /one
Host: example.com
end

404
end

_ATEOF

perl \$HARNESS --log-level=-1 --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "logsup.at:114"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
LogFormat "status" "%s"
LogLevel "status"
ListenHTTP
	Service "default"
	        LogSuppress 4
                Backend
                        Address
                        Port
                End
	End
End
_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.com
end

200
end

GET /one
Host: example.com
end

404
end

_ATEOF

perl $HARNESS --log-level=-1 --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/logsup.at:114"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/logsup.at:114: cat pound.log | sed -e 's/^pound: //' \\
   -e '/^starting/d' \\
   -e '/^shutting down/d' \\
   -e '/obtained address/d' \\
   -e '/waiting for [0-9][0-9]* active threads to terminate/d'"
at_fn_check_prepare_notrace 'an embedded newline' "logsup.at:114"
( $at_check_trace; cat pound.log | sed -e 's/^pound: //' \
   -e '/^starting/d' \
   -e '/^shutting down/d' \
   -e '/obtained address/d' \
   -e '/waiting for [0-9][0-9]* active threads to terminate/d'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "200
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/logsup.at:114"
$at_failed && at_fn_log_failure
$at_traceon; }



  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_6
#AT_START_7
at_fn_group_banner 7 'xhttp.at:16' \
  "xHTTP" "                                          "
at_xfail=no
(
  printf "%s\n" "7. $at_setup_line: testing $at_desc ..."
  $at_traceon










{ set +x
printf "%s\n" "$at_srcdir/xhttp.at:37:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
# Default xHTTP setting (0)
ListenHTTP
	Service
		Backend
			Address
			Port
		End
	End
End
_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
end
200
end

POST /echo/foo
end
200
end

HEAD /echo/foo
end
200
end


PUT /echo/foo
end
501
end

PATCH /echo/foo
end
501
end

DELETE /echo/foo
end
501
end


LOCK /echo/foo
end
501
end

UNLOCK /echo/foo
end
501
end

PROPFIND /echo/foo
end
501
end

PROPPATCH /echo/foo
end
501
end

SEARCH /echo/foo
end
501
end

MKCOL /echo/foo
end
501
end

MOVE /echo/foo
end
501
end

COPY /echo/foo
end
501
end

OPTIONS /echo/foo
end
501
end

TRACE /echo/foo
end
501
end

MKACTIVITY /echo/foo
end
501
end

CHECKOUT /echo/foo
end
501
end

MERGE /echo/foo
end
501
end

REPORT /echo/foo
end
501
end


SUBSCRIBE /echo/foo
end
501
end

UNSUBSCRIBE /echo/foo
end
501
end

NOTIFY /echo/foo
end
501
end

BPROPFIND /echo/foo
end
501
end

BPROPPATCH /echo/foo
end
501
end

POLL /echo/foo
end
501
end

BMOVE /echo/foo
end
501
end

BCOPY /echo/foo
end
501
end

BDELETE /echo/foo
end
501
end

CONNECT /echo/foo
end
501
end



_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "xhttp.at:37"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
# Default xHTTP setting (0)
ListenHTTP
	Service
		Backend
			Address
			Port
		End
	End
End
_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
end
200
end

POST /echo/foo
end
200
end

HEAD /echo/foo
end
200
end


PUT /echo/foo
end
501
end

PATCH /echo/foo
end
501
end

DELETE /echo/foo
end
501
end


LOCK /echo/foo
end
501
end

UNLOCK /echo/foo
end
501
end

PROPFIND /echo/foo
end
501
end

PROPPATCH /echo/foo
end
501
end

SEARCH /echo/foo
end
501
end

MKCOL /echo/foo
end
501
end

MOVE /echo/foo
end
501
end

COPY /echo/foo
end
501
end

OPTIONS /echo/foo
end
501
end

TRACE /echo/foo
end
501
end

MKACTIVITY /echo/foo
end
501
end

CHECKOUT /echo/foo
end
501
end

MERGE /echo/foo
end
501
end

REPORT /echo/foo
end
501
end


SUBSCRIBE /echo/foo
end
501
end

UNSUBSCRIBE /echo/foo
end
501
end

NOTIFY /echo/foo
end
501
end

BPROPFIND /echo/foo
end
501
end

BPROPPATCH /echo/foo
end
501
end

POLL /echo/foo
end
501
end

BMOVE /echo/foo
end
501
end

BCOPY /echo/foo
end
501
end

BDELETE /echo/foo
end
501
end

CONNECT /echo/foo
end
501
end



_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/xhttp.at:37"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/xhttp.at:52:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
# Allow extended HTTP requests (PUT, PATCH, DELETE)
ListenHTTP
	xHTTP 1
	Service
		Backend
			Address
			Port
		End
	End
End
_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
end
200
end

POST /echo/foo
end
200
end

HEAD /echo/foo
end
200
end


PUT /echo/foo
end
200
end

PATCH /echo/foo
end
200
end

DELETE /echo/foo
end
200
end


LOCK /echo/foo
end
501
end

UNLOCK /echo/foo
end
501
end

PROPFIND /echo/foo
end
501
end

PROPPATCH /echo/foo
end
501
end

SEARCH /echo/foo
end
501
end

MKCOL /echo/foo
end
501
end

MOVE /echo/foo
end
501
end

COPY /echo/foo
end
501
end

OPTIONS /echo/foo
end
501
end

TRACE /echo/foo
end
501
end

MKACTIVITY /echo/foo
end
501
end

CHECKOUT /echo/foo
end
501
end

MERGE /echo/foo
end
501
end

REPORT /echo/foo
end
501
end


SUBSCRIBE /echo/foo
end
501
end

UNSUBSCRIBE /echo/foo
end
501
end

NOTIFY /echo/foo
end
501
end

BPROPFIND /echo/foo
end
501
end

BPROPPATCH /echo/foo
end
501
end

POLL /echo/foo
end
501
end

BMOVE /echo/foo
end
501
end

BCOPY /echo/foo
end
501
end

BDELETE /echo/foo
end
501
end

CONNECT /echo/foo
end
501
end



_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "xhttp.at:52"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
# Allow extended HTTP requests (PUT, PATCH, DELETE)
ListenHTTP
	xHTTP 1
	Service
		Backend
			Address
			Port
		End
	End
End
_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
end
200
end

POST /echo/foo
end
200
end

HEAD /echo/foo
end
200
end


PUT /echo/foo
end
200
end

PATCH /echo/foo
end
200
end

DELETE /echo/foo
end
200
end


LOCK /echo/foo
end
501
end

UNLOCK /echo/foo
end
501
end

PROPFIND /echo/foo
end
501
end

PROPPATCH /echo/foo
end
501
end

SEARCH /echo/foo
end
501
end

MKCOL /echo/foo
end
501
end

MOVE /echo/foo
end
501
end

COPY /echo/foo
end
501
end

OPTIONS /echo/foo
end
501
end

TRACE /echo/foo
end
501
end

MKACTIVITY /echo/foo
end
501
end

CHECKOUT /echo/foo
end
501
end

MERGE /echo/foo
end
501
end

REPORT /echo/foo
end
501
end


SUBSCRIBE /echo/foo
end
501
end

UNSUBSCRIBE /echo/foo
end
501
end

NOTIFY /echo/foo
end
501
end

BPROPFIND /echo/foo
end
501
end

BPROPPATCH /echo/foo
end
501
end

POLL /echo/foo
end
501
end

BMOVE /echo/foo
end
501
end

BCOPY /echo/foo
end
501
end

BDELETE /echo/foo
end
501
end

CONNECT /echo/foo
end
501
end



_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/xhttp.at:52"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/xhttp.at:68:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
# Additionally allow standard WebDAV requests
ListenHTTP
	xHTTP 2
	Service
		Backend
			Address
			Port
		End
	End
End
_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
end
200
end

POST /echo/foo
end
200
end

HEAD /echo/foo
end
200
end


PUT /echo/foo
end
200
end

PATCH /echo/foo
end
200
end

DELETE /echo/foo
end
200
end


LOCK /echo/foo
end
200
end

UNLOCK /echo/foo
end
200
end

PROPFIND /echo/foo
end
200
end

PROPPATCH /echo/foo
end
200
end

SEARCH /echo/foo
end
200
end

MKCOL /echo/foo
end
200
end

MOVE /echo/foo
end
200
end

COPY /echo/foo
end
200
end

OPTIONS /echo/foo
end
200
end

TRACE /echo/foo
end
200
end

MKACTIVITY /echo/foo
end
200
end

CHECKOUT /echo/foo
end
200
end

MERGE /echo/foo
end
200
end

REPORT /echo/foo
end
200
end


SUBSCRIBE /echo/foo
end
501
end

UNSUBSCRIBE /echo/foo
end
501
end

NOTIFY /echo/foo
end
501
end

BPROPFIND /echo/foo
end
501
end

BPROPPATCH /echo/foo
end
501
end

POLL /echo/foo
end
501
end

BMOVE /echo/foo
end
501
end

BCOPY /echo/foo
end
501
end

BDELETE /echo/foo
end
501
end

CONNECT /echo/foo
end
501
end



_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "xhttp.at:68"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
# Additionally allow standard WebDAV requests
ListenHTTP
	xHTTP 2
	Service
		Backend
			Address
			Port
		End
	End
End
_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
end
200
end

POST /echo/foo
end
200
end

HEAD /echo/foo
end
200
end


PUT /echo/foo
end
200
end

PATCH /echo/foo
end
200
end

DELETE /echo/foo
end
200
end


LOCK /echo/foo
end
200
end

UNLOCK /echo/foo
end
200
end

PROPFIND /echo/foo
end
200
end

PROPPATCH /echo/foo
end
200
end

SEARCH /echo/foo
end
200
end

MKCOL /echo/foo
end
200
end

MOVE /echo/foo
end
200
end

COPY /echo/foo
end
200
end

OPTIONS /echo/foo
end
200
end

TRACE /echo/foo
end
200
end

MKACTIVITY /echo/foo
end
200
end

CHECKOUT /echo/foo
end
200
end

MERGE /echo/foo
end
200
end

REPORT /echo/foo
end
200
end


SUBSCRIBE /echo/foo
end
501
end

UNSUBSCRIBE /echo/foo
end
501
end

NOTIFY /echo/foo
end
501
end

BPROPFIND /echo/foo
end
501
end

BPROPPATCH /echo/foo
end
501
end

POLL /echo/foo
end
501
end

BMOVE /echo/foo
end
501
end

BCOPY /echo/foo
end
501
end

BDELETE /echo/foo
end
501
end

CONNECT /echo/foo
end
501
end



_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/xhttp.at:68"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/xhttp.at:84:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
# Additionally allow MS WebDAV extensions
ListenHTTP
	xHTTP 3
	Service
		Backend
			Address
			Port
		End
	End
End
_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
end
200
end

POST /echo/foo
end
200
end

HEAD /echo/foo
end
200
end


PUT /echo/foo
end
200
end

PATCH /echo/foo
end
200
end

DELETE /echo/foo
end
200
end


LOCK /echo/foo
end
200
end

UNLOCK /echo/foo
end
200
end

PROPFIND /echo/foo
end
200
end

PROPPATCH /echo/foo
end
200
end

SEARCH /echo/foo
end
200
end

MKCOL /echo/foo
end
200
end

MOVE /echo/foo
end
200
end

COPY /echo/foo
end
200
end

OPTIONS /echo/foo
end
200
end

TRACE /echo/foo
end
200
end

MKACTIVITY /echo/foo
end
200
end

CHECKOUT /echo/foo
end
200
end

MERGE /echo/foo
end
200
end

REPORT /echo/foo
end
200
end


SUBSCRIBE /echo/foo
end
200
end

UNSUBSCRIBE /echo/foo
end
200
end

NOTIFY /echo/foo
end
200
end

BPROPFIND /echo/foo
end
200
end

BPROPPATCH /echo/foo
end
200
end

POLL /echo/foo
end
200
end

BMOVE /echo/foo
end
200
end

BCOPY /echo/foo
end
200
end

BDELETE /echo/foo
end
200
end

CONNECT /echo/foo
end
200
end



_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "xhttp.at:84"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
# Additionally allow MS WebDAV extensions
ListenHTTP
	xHTTP 3
	Service
		Backend
			Address
			Port
		End
	End
End
_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
end
200
end

POST /echo/foo
end
200
end

HEAD /echo/foo
end
200
end


PUT /echo/foo
end
200
end

PATCH /echo/foo
end
200
end

DELETE /echo/foo
end
200
end


LOCK /echo/foo
end
200
end

UNLOCK /echo/foo
end
200
end

PROPFIND /echo/foo
end
200
end

PROPPATCH /echo/foo
end
200
end

SEARCH /echo/foo
end
200
end

MKCOL /echo/foo
end
200
end

MOVE /echo/foo
end
200
end

COPY /echo/foo
end
200
end

OPTIONS /echo/foo
end
200
end

TRACE /echo/foo
end
200
end

MKACTIVITY /echo/foo
end
200
end

CHECKOUT /echo/foo
end
200
end

MERGE /echo/foo
end
200
end

REPORT /echo/foo
end
200
end


SUBSCRIBE /echo/foo
end
200
end

UNSUBSCRIBE /echo/foo
end
200
end

NOTIFY /echo/foo
end
200
end

BPROPFIND /echo/foo
end
200
end

BPROPPATCH /echo/foo
end
200
end

POLL /echo/foo
end
200
end

BMOVE /echo/foo
end
200
end

BCOPY /echo/foo
end
200
end

BDELETE /echo/foo
end
200
end

CONNECT /echo/foo
end
200
end



_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/xhttp.at:84"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_7
#AT_START_8
at_fn_group_banner 8 'checkurl.at:16' \
  "CheckURL" "                                       "
at_xfail=no
(
  printf "%s\n" "8. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat > pound.cfg <<_CONF
ListenHTTP
	CheckURL "/echo/[0-9][^/]*"
	Address 127.0.0.1
	Port 80
	Service
		Backend
			Address 127.0.0.1
			Port 8080
		End
	End
End

_CONF
{ set +x
printf "%s\n" "$at_srcdir/checkurl.at:19: pound -c -Wno-dns -Wno-include-dir -f pound.cfg"
at_fn_check_prepare_trace "checkurl.at:19"
( $at_check_trace; pound -c -Wno-dns -Wno-include-dir -f pound.cfg
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/checkurl.at:19"
$at_failed && at_fn_log_failure
$at_traceon; }


cat > pound.cfg <<_CONF
ListenHTTP
	CheckURL "/echo/[0-9][^/]*"
	CheckURL "/echo/foo/*"
	Address 127.0.0.1
	Port 80
	Service
		Backend
			Address 127.0.0.1
			Port 8080
		End
	End
End

_CONF
{ set +x
printf "%s\n" "$at_srcdir/checkurl.at:32: pound -c -Wno-dns -Wno-include-dir -f pound.cfg"
at_fn_check_prepare_trace "checkurl.at:32"
( $at_check_trace; pound -c -Wno-dns -Wno-include-dir -f pound.cfg
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo >>"$at_stderr"; printf "%s\n" "pound: pound.cfg:3.9-16: CheckURL multiple pattern
" | \
  $at_diff - "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/checkurl.at:32"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/checkurl.at:50:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	CheckURL \"/echo/[0-9][^/]*\"
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/9ok
end

200
x-orig-uri: /echo/9ok
end

GET /echo/ok
end

501
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "checkurl.at:50"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	CheckURL "/echo/[0-9][^/]*"
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/9ok
end

200
x-orig-uri: /echo/9ok
end

GET /echo/ok
end

501
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/checkurl.at:50"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_8
#AT_START_9
at_fn_group_banner 9 'errfile.at:16' \
  "Custom Error Response" "                          "
at_xfail=no
(
  printf "%s\n" "9. $at_setup_line: testing $at_desc ..."
  $at_traceon




cat >501.html <<'_ATEOF'
<html>
<head><title>Custom Bad Method Error</title></head>
<body>
<p>This method is not allowed.</p>
<p>This is custom error page was supplied using the Err501 directive.</p>
</body>
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/errfile.at:29:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Err501 \"501.html\"
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
PUT /echo/file
end

501

<html>
<head><title>Custom Bad Method Error</title></head>
<body>
<p>This method is not allowed.</p>
<p>This is custom error page was supplied using the Err501 directive.</p>
</body>

end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "errfile.at:29"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Err501 "501.html"
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
PUT /echo/file
end

501

<html>
<head><title>Custom Bad Method Error</title></head>
<body>
<p>This method is not allowed.</p>
<p>This is custom error page was supplied using the Err501 directive.</p>
</body>

end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/errfile.at:29"
$at_failed && at_fn_log_failure
$at_traceon; }




  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_9
#AT_START_10
at_fn_group_banner 10 'maxrequest.at:16' \
  "MaxRequest" "                                     "
at_xfail=no
(
  printf "%s\n" "10. $at_setup_line: testing $at_desc ..."
  $at_traceon



{ set +x
printf "%s\n" "$at_srcdir/maxrequest.at:19:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	MaxRequest 64
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
POST /echo/file

In placerat urna vitae ligula fermentum auctor.
end
200

In placerat urna vitae ligula fermentum auctor.
end

POST /echo/file

In placerat urna vitae ligula fermentum auctor.
Quisque convallis.
end

413
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "maxrequest.at:19"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	MaxRequest 64
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
POST /echo/file

In placerat urna vitae ligula fermentum auctor.
end
200

In placerat urna vitae ligula fermentum auctor.
end

POST /echo/file

In placerat urna vitae ligula fermentum auctor.
Quisque convallis.
end

413
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/maxrequest.at:19"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_10
#AT_START_11
at_fn_group_banner 11 'rewriteloc.at:17' \
  "RewriteLocation" "                                "
at_xfail=no
(
  printf "%s\n" "11. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/rewriteloc.at:19:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	RewriteLocation 0
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /redirect/foo
end

301
location: /echo/foo
end


GET /redirect/foo
x-redirect: http://\${BACKEND}
end

301
location: http://\${BACKEND}/echo/foo
end

GET /redirect/foo
x-redirect: https://\${LISTENER}
end

301
location: https://\${LISTENER}/echo/foo
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'a ${...} parameter expansion' "rewriteloc.at:19"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	RewriteLocation 0
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /redirect/foo
end

301
location: /echo/foo
end


GET /redirect/foo
x-redirect: http://${BACKEND}
end

301
location: http://${BACKEND}/echo/foo
end

GET /redirect/foo
x-redirect: https://${LISTENER}
end

301
location: https://${LISTENER}/echo/foo
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/rewriteloc.at:19"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/rewriteloc.at:54:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	RewriteLocation 1
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /redirect/foo
end

301
location: /echo/foo
end

GET /redirect/foo
x-redirect: http://\${BACKEND}
end

301
location: http://\${LISTENER}/echo/foo
end

GET /redirect/foo
x-redirect: https://\${LISTENER}
end

301
location: http://\${LISTENER}/echo/foo
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'a ${...} parameter expansion' "rewriteloc.at:54"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	RewriteLocation 1
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /redirect/foo
end

301
location: /echo/foo
end

GET /redirect/foo
x-redirect: http://${BACKEND}
end

301
location: http://${LISTENER}/echo/foo
end

GET /redirect/foo
x-redirect: https://${LISTENER}
end

301
location: http://${LISTENER}/echo/foo
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/rewriteloc.at:54"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/rewriteloc.at:88:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /redirect/foo
end

301
location: /echo/foo
end

GET /redirect/foo
x-redirect: http://\${BACKEND}
end

301
location: http://\${LISTENER}/echo/foo
end

GET /redirect/foo
x-redirect: https://\${LISTENER}
end

301
location: http://\${LISTENER}/echo/foo
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'a ${...} parameter expansion' "rewriteloc.at:88"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /redirect/foo
end

301
location: /echo/foo
end

GET /redirect/foo
x-redirect: http://${BACKEND}
end

301
location: http://${LISTENER}/echo/foo
end

GET /redirect/foo
x-redirect: https://${LISTENER}
end

301
location: http://${LISTENER}/echo/foo
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/rewriteloc.at:88"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/rewriteloc.at:121:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	RewriteLocation 2
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /redirect/foo
end

301
location: /echo/foo
end

GET /redirect/foo
x-redirect: http://\${BACKEND}
end

301
location: http://\${LISTENER}/echo/foo
end

GET /redirect/foo
x-redirect: https://\${LISTENER}
end

301
location: https://\${LISTENER}/echo/foo
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'a ${...} parameter expansion' "rewriteloc.at:121"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	RewriteLocation 2
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /redirect/foo
end

301
location: /echo/foo
end

GET /redirect/foo
x-redirect: http://${BACKEND}
end

301
location: http://${LISTENER}/echo/foo
end

GET /redirect/foo
x-redirect: https://${LISTENER}
end

301
location: https://${LISTENER}/echo/foo
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/rewriteloc.at:121"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_11
#AT_START_12
at_fn_group_banner 12 'nb.at:16' \
  "Named backends" "                                 "
at_xfail=no
(
  printf "%s\n" "12. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/nb.at:18:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Host \"example.org\"
		UseBackend \"test\"
	End
	Service
		Host \"example.com\"
		UseBackend \"test\"
	End
End
Backend \"test\"
	Address
	Port
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.org
end

200
x-backend-number: 0
end

GET /echo/foo
Host: example.com
end

200
x-backend-number: 0
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "nb.at:18"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Host "example.org"
		UseBackend "test"
	End
	Service
		Host "example.com"
		UseBackend "test"
	End
End
Backend "test"
	Address
	Port
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.org
end

200
x-backend-number: 0
end

GET /echo/foo
Host: example.com
end

200
x-backend-number: 0
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/nb.at:18"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_12
#AT_START_13
at_fn_group_banner 13 'lstset.at:16' \
  "Basic set directives" "                           " 1
at_xfail=no
(
  printf "%s\n" "13. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/lstset.at:18:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	SetURL \"/echo/other\"
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /one
end

200
x-orig-uri: /echo/other
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "lstset.at:18"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	SetURL "/echo/other"
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /one
end

200
x-orig-uri: /echo/other
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/lstset.at:18"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/lstset.at:36:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	SetPath \"/echo/other\"
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /one
end

200
x-orig-uri: /echo/other
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "lstset.at:36"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	SetPath "/echo/other"
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /one
end

200
x-orig-uri: /echo/other
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/lstset.at:36"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/lstset.at:54:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		SetQuery \"foo=10&quux=b%20ar\"
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/one
end

200
x-orig-uri: /echo/one?foo=10&quux=b%20ar
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "lstset.at:54"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		SetQuery "foo=10&quux=b%20ar"
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/one
end

200
x-orig-uri: /echo/one?foo=10&quux=b%20ar
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/lstset.at:54"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/lstset.at:72:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Rewrite
		SetQueryParam \"foo\" \"10\"
		SetQueryParam \"quux\" \"b%20ar\"
	End
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/one
end

200
x-orig-uri: /echo/one?foo=10&quux=b%20ar
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "lstset.at:72"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Rewrite
		SetQueryParam "foo" "10"
		SetQueryParam "quux" "b%20ar"
	End
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/one
end

200
x-orig-uri: /echo/one?foo=10&quux=b%20ar
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/lstset.at:72"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/lstset.at:93:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	SetHeader \"X-Foo: bar baz\"
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/one
end

200
x-orig-header-x-foo: bar baz
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "lstset.at:93"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	SetHeader "X-Foo: bar baz"
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/one
end

200
x-orig-header-x-foo: bar baz
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/lstset.at:93"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/lstset.at:111:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	DeleteHeader -beg \"X-Accept\"
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
X-Accept: *
X-Accept-Ex: foo
end

200
-x-orig-header-X-Accept:
-x-orig-header-X-Accept-Ex:
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "lstset.at:111"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	DeleteHeader -beg "X-Accept"
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
X-Accept: *
X-Accept-Ex: foo
end

200
-x-orig-header-X-Accept:
-x-orig-header-X-Accept-Ex:
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/lstset.at:111"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/lstset.at:132:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	DeleteHeader -beg \"X-Accept:\"
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
X-Accept: *
X-Accept-Ex: foo
end

200
-x-orig-header-X-Accept:
x-orig-header-X-Accept-Ex: foo
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "lstset.at:132"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	DeleteHeader -beg "X-Accept:"
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
X-Accept: *
X-Accept-Ex: foo
end

200
-x-orig-header-X-Accept:
x-orig-header-X-Accept-Ex: foo
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/lstset.at:132"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/lstset.at:153:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	DeleteHeader \"X-Accept:[[:space:]]*bar\"
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
X-Accept: *
X-Accept-Ex: foo
end

200
x-orig-header-X-Accept: *
x-orig-header-X-Accept-Ex: foo
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "lstset.at:153"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	DeleteHeader "X-Accept:[[:space:]]*bar"
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
X-Accept: *
X-Accept-Ex: foo
end

200
x-orig-header-X-Accept: *
x-orig-header-X-Accept-Ex: foo
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/lstset.at:153"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/lstset.at:174:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	DeleteHeader \"X-Accept:[[:space:]]*bar\"
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
X-Accept: bar
X-Accept-Ex: foo
end

200
-x-orig-header-X-Accept:
x-orig-header-X-Accept-Ex: foo
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "lstset.at:174"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	DeleteHeader "X-Accept:[[:space:]]*bar"
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
X-Accept: bar
X-Accept-Ex: foo
end

200
-x-orig-header-X-Accept:
x-orig-header-X-Accept-Ex: foo
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/lstset.at:174"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/lstset.at:195:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Rewrite
		SetPath \"/echo/other\"
		SetQueryParam \"foo\" \"bar\"
		SetQueryParam \"qux\" \"x%2Fuq\"
		SetHeader \"x-foo: bar baz\"
		DeleteHeader -beg -icase \"x-bar:\"
	End
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /one
X-Bar: qux
end

200
x-orig-uri: /echo/other?foo=bar&qux=x%2Fuq
x-orig-header-x-foo: bar baz
-x-orig-header-X-Bar:
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "lstset.at:195"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Rewrite
		SetPath "/echo/other"
		SetQueryParam "foo" "bar"
		SetQueryParam "qux" "x%2Fuq"
		SetHeader "x-foo: bar baz"
		DeleteHeader -beg -icase "x-bar:"
	End
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /one
X-Bar: qux
end

200
x-orig-uri: /echo/other?foo=bar&qux=x%2Fuq
x-orig-header-x-foo: bar baz
-x-orig-header-X-Bar:
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/lstset.at:195"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/lstset.at:222:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	SetPath \"/echo/other\"
	SetQueryParam \"foo\" \"bar\"
	SetQueryParam \"qux\" \"x%2Fuq\"
	SetHeader \"x-foo: bar baz\"
	DeleteHeader -beg -icase \"x-bar:\"

	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /one
X-Bar: qux
end

200
x-orig-uri: /echo/other?foo=bar&qux=x%2Fuq
x-orig-header-x-foo: bar baz
-x-orig-header-X-Bar:
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "lstset.at:222"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	SetPath "/echo/other"
	SetQueryParam "foo" "bar"
	SetQueryParam "qux" "x%2Fuq"
	SetHeader "x-foo: bar baz"
	DeleteHeader -beg -icase "x-bar:"

	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /one
X-Bar: qux
end

200
x-orig-uri: /echo/other?foo=bar&qux=x%2Fuq
x-orig-header-x-foo: bar baz
-x-orig-header-X-Bar:
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/lstset.at:222"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_13
#AT_START_14
at_fn_group_banner 14 'header.at:16' \
  "Header" "                                         " 2
at_xfail=no
(
  printf "%s\n" "14. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/header.at:18:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Header -re -icase \"Host:[[:space:]]*example.org\"
		Backend
			Address
			Port
		End
	End
	Service
		Header -re -icase \"Host:[[:space:]]*example.com\"
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.org
end

200
x-backend-number: 0
end

GET /echo/foo
Host: example.com
end

200
x-backend-number: 1
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "header.at:18"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Header -re -icase "Host:[[:space:]]*example.org"
		Backend
			Address
			Port
		End
	End
	Service
		Header -re -icase "Host:[[:space:]]*example.com"
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.org
end

200
x-backend-number: 0
end

GET /echo/foo
Host: example.com
end

200
x-backend-number: 1
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/header.at:18"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_14
#AT_START_15
at_fn_group_banner 15 'host.at:16' \
  "Host" "                                           " 2
at_xfail=no
(
  printf "%s\n" "15. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/host.at:18:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Host \"example.org\"
		Backend
			Address
			Port
		End
	End
	Service
		Host \"example.com\"
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.org
end

200
x-backend-number: 0
end

GET /echo/foo
Host: example.com
end

200
x-backend-number: 1
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "host.at:18"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Host "example.org"
		Backend
			Address
			Port
		End
	End
	Service
		Host "example.com"
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.org
end

200
x-backend-number: 0
end

GET /echo/foo
Host: example.com
end

200
x-backend-number: 1
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/host.at:18"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_15
#AT_START_16
at_fn_group_banner 16 'url.at:16' \
  "URL" "                                            " 2
at_xfail=no
(
  printf "%s\n" "16. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/url.at:18:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service \"0\"
		URL \"\\\\.(jpg|gif)\"
		Backend
			Address
			Port
		End
	End
	Service \"1\"
		URL \"\\\\.txt\"
		Backend
			Address
			Port
		End
	End
	Service \"2\"
		URL -icase \"\\\\.txt\"
		Backend
			Address
			Port
		End
	End
	Service \"3\"
		URL -exact \"/echo/two\"
		Backend
			Address
			Port
		End
	End
	Service \"4\"
		URL -exact -icase \"/echo/TWO\"
		Backend
			Address
			Port
		End
	End
	Service \"5\"
		URL -beg \"/echo/some\"
		Backend
			Address
			Port
		End
	End
	Service \"6\"
		URL -end \"er\"
		Backend
			Address
			Port
		End
	End
	Service \"7\"
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/one.jpg
end

200
x-backend-number: 0
end

GET /echo/one.gif
end

200
x-backend-number: 0
end

GET /echo/one.txt
end

200
x-backend-number: 1
end

GET /echo/one.TXT
end

200
x-backend-number: 2
end

GET /echo/two
end

200
x-backend-number: 3
end

GET /echo/TWO
end

200
x-backend-number: 4
end

GET /echo/something
end

200
x-backend-number: 5
end

GET /echo/other
end

200
x-backend-number: 6
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "url.at:18"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service "0"
		URL "\\.(jpg|gif)"
		Backend
			Address
			Port
		End
	End
	Service "1"
		URL "\\.txt"
		Backend
			Address
			Port
		End
	End
	Service "2"
		URL -icase "\\.txt"
		Backend
			Address
			Port
		End
	End
	Service "3"
		URL -exact "/echo/two"
		Backend
			Address
			Port
		End
	End
	Service "4"
		URL -exact -icase "/echo/TWO"
		Backend
			Address
			Port
		End
	End
	Service "5"
		URL -beg "/echo/some"
		Backend
			Address
			Port
		End
	End
	Service "6"
		URL -end "er"
		Backend
			Address
			Port
		End
	End
	Service "7"
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/one.jpg
end

200
x-backend-number: 0
end

GET /echo/one.gif
end

200
x-backend-number: 0
end

GET /echo/one.txt
end

200
x-backend-number: 1
end

GET /echo/one.TXT
end

200
x-backend-number: 2
end

GET /echo/two
end

200
x-backend-number: 3
end

GET /echo/TWO
end

200
x-backend-number: 4
end

GET /echo/something
end

200
x-backend-number: 5
end

GET /echo/other
end

200
x-backend-number: 6
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/url.at:18"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_16
#AT_START_17
at_fn_group_banner 17 'path.at:16' \
  "Path" "                                           " 2
at_xfail=no
(
  printf "%s\n" "17. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/path.at:18:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Path -exact \"/echo/foo\"
		Backend
			Address
			Port
		End
	End
	Service
		Path -beg \"/echo/foo\"
		Backend
			Address
			Port
		End
	End
	Service
		Path \"/echo/bar/.*/baz\"
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.org
end

200
x-backend-number: 0
end

GET /echo/foo/bar
Host: example.com
end

200
x-backend-number: 1
end

GET /echo/bar/qux/baz
Host: example.com
end

200
x-backend-number: 2
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "path.at:18"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Path -exact "/echo/foo"
		Backend
			Address
			Port
		End
	End
	Service
		Path -beg "/echo/foo"
		Backend
			Address
			Port
		End
	End
	Service
		Path "/echo/bar/.*/baz"
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.org
end

200
x-backend-number: 0
end

GET /echo/foo/bar
Host: example.com
end

200
x-backend-number: 1
end

GET /echo/bar/qux/baz
Host: example.com
end

200
x-backend-number: 2
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/path.at:18"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_17
#AT_START_18
at_fn_group_banner 18 'stringmatch.at:16' \
  "StringMatch" "                                    " 2
at_xfail=no
(
  printf "%s\n" "18. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/stringmatch.at:18:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Path \"/echo/([^/]+)/([^/]+)\"
		StringMatch \"\$1\" \"(.*)_(.*)\"
		SetHeader \"X-Match-1: \$1\"
		SetHeader \"X-Match-2: \$2\"
		SetHeader \"X-Match-1-1: \$1(1)\"
		SetHeader \"X-Match-2-1: \$2(1)\"
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo_bar/baz
Host: example.org
end

200
x-orig-header-x-match-1: foo
x-orig-header-x-match-2: bar
x-orig-header-x-match-1-1: foo_bar
x-orig-header-x-match-2-1: baz
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "stringmatch.at:18"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Path "/echo/([^/]+)/([^/]+)"
		StringMatch "$1" "(.*)_(.*)"
		SetHeader "X-Match-1: $1"
		SetHeader "X-Match-2: $2"
		SetHeader "X-Match-1-1: $1(1)"
		SetHeader "X-Match-2-1: $2(1)"
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo_bar/baz
Host: example.org
end

200
x-orig-header-x-match-1: foo
x-orig-header-x-match-2: bar
x-orig-header-x-match-1-1: foo_bar
x-orig-header-x-match-2-1: baz
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/stringmatch.at:18"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_18
#AT_START_19
at_fn_group_banner 19 'query.at:16' \
  "Query" "                                          " 2
at_xfail=no
(
  printf "%s\n" "19. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/query.at:18:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Query -exact \"index=10&text=a%20string\"
		Backend
			Address
			Port
		End
	End
	Service
		Query -beg \"text=\"
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo?index=10&text=a%20string
Host: example.org
end

200
x-backend-number: 0
end

GET /echo/foo?text=string
Host: example.com
end

200
x-backend-number: 1
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "query.at:18"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Query -exact "index=10&text=a%20string"
		Backend
			Address
			Port
		End
	End
	Service
		Query -beg "text="
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo?index=10&text=a%20string
Host: example.org
end

200
x-backend-number: 0
end

GET /echo/foo?text=string
Host: example.com
end

200
x-backend-number: 1
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/query.at:18"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_19
#AT_START_20
at_fn_group_banner 20 'queryparam.at:16' \
  "QueryParam" "                                     " 2
at_xfail=no
(
  printf "%s\n" "20. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/queryparam.at:18:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		QueryParam \"index\" -exact \"10\"
		Backend
			Address
			Port
		End
	End
	Service
		QueryParam \"index\" -beg \"page-\"
		Backend
			Address
			Port
		End
	End
	Service
		QueryParam \"index\" \"other-.+-.*\"
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo?index=10
Host: example.org
end

200
x-backend-number: 0
end

GET /echo/foo?index=page-10
Host: example.com
end

200
x-backend-number: 1
end

GET /echo/foo?index=other-10-y
Host: example.com
end

200
x-backend-number: 2
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "queryparam.at:18"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		QueryParam "index" -exact "10"
		Backend
			Address
			Port
		End
	End
	Service
		QueryParam "index" -beg "page-"
		Backend
			Address
			Port
		End
	End
	Service
		QueryParam "index" "other-.+-.*"
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo?index=10
Host: example.org
end

200
x-backend-number: 0
end

GET /echo/foo?index=page-10
Host: example.com
end

200
x-backend-number: 1
end

GET /echo/foo?index=other-10-y
Host: example.com
end

200
x-backend-number: 2
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/queryparam.at:18"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_20
#AT_START_21
at_fn_group_banner 21 'or.at:16' \
  "OR" "                                             " 2
at_xfail=no
(
  printf "%s\n" "21. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/or.at:18:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Match OR
			Header \"Host:[[:space:]]*example\\\\.org\"
			Header \"Host:[[:space:]]*example\\\\.net\"
		End
		Backend
			Address
			Port
		End
	End
	Service
		Header \"Host:[[:space:]]*example\\\\.com\"
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.org
end

200
x-backend-number: 0
end

GET /echo/foo
Host: example.net
end

200
x-backend-number: 0
end

GET /echo/foo
Host: example.com
end

200
x-backend-number: 1
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "or.at:18"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Match OR
			Header "Host:[[:space:]]*example\\.org"
			Header "Host:[[:space:]]*example\\.net"
		End
		Backend
			Address
			Port
		End
	End
	Service
		Header "Host:[[:space:]]*example\\.com"
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.org
end

200
x-backend-number: 0
end

GET /echo/foo
Host: example.net
end

200
x-backend-number: 0
end

GET /echo/foo
Host: example.com
end

200
x-backend-number: 1
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/or.at:18"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/or.at:63:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Match OR
			Header \"Host:[[:space:]]*example\\\\.org\"
			Header \"Host:[[:space:]]*example\\\\.net\"
			Match AND
				Header \"X-Cond-1:[[:space:]]*true\"
				Header \"X-Cond-2:[[:space:]]*true\"
			End
		End
		Backend
			Address
			Port
		End
	End
	Service
		Header \"Host:[[:space:]]*example\\\\.com\"
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.org
end

200
x-backend-number: 0
end

GET /echo/foo
Host: example.net
end

200
x-backend-number: 0
end

GET /echo/foo
Host: example.com
X-Cond-1: true
X-Cond-2: true
end

200
x-backend-number: 0
end

GET /echo/foo
Host: example.com
end

200
x-backend-number: 1
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "or.at:63"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Match OR
			Header "Host:[[:space:]]*example\\.org"
			Header "Host:[[:space:]]*example\\.net"
			Match AND
				Header "X-Cond-1:[[:space:]]*true"
				Header "X-Cond-2:[[:space:]]*true"
			End
		End
		Backend
			Address
			Port
		End
	End
	Service
		Header "Host:[[:space:]]*example\\.com"
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.org
end

200
x-backend-number: 0
end

GET /echo/foo
Host: example.net
end

200
x-backend-number: 0
end

GET /echo/foo
Host: example.com
X-Cond-1: true
X-Cond-2: true
end

200
x-backend-number: 0
end

GET /echo/foo
Host: example.com
end

200
x-backend-number: 1
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/or.at:63"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_21
#AT_START_22
at_fn_group_banner 22 'not.at:16' \
  "NOT" "                                            " 2
at_xfail=no
(
  printf "%s\n" "22. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/not.at:18:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Not URL \"^/echo/foo\"
		Backend
			Address
			Port
		End
	End
	Service
		URL \"^/echo\"
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.org
end

200
x-backend-number: 1
end

GET /echo/bar
Host: example.org
end

200
x-backend-number: 0
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "not.at:18"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Not URL "^/echo/foo"
		Backend
			Address
			Port
		End
	End
	Service
		URL "^/echo"
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.org
end

200
x-backend-number: 1
end

GET /echo/bar
Host: example.org
end

200
x-backend-number: 0
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/not.at:18"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/not.at:52:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Not Match OR
			Header \"Host:[[:space:]]*example\\\\.org\"
			Host \"example.net\"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.com
end

200
x-backend-number: 0
end

GET /echo/foo
Host: example.org
end

503
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "not.at:52"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Not Match OR
			Header "Host:[[:space:]]*example\\.org"
			Host "example.net"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.com
end

200
x-backend-number: 0
end

GET /echo/foo
Host: example.org
end

503
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/not.at:52"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_22
#AT_START_23
at_fn_group_banner 23 'fromfile.at:15' \
  "Pattern from file" "                              " 2
at_xfail=no
(
  printf "%s\n" "23. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >hostfile <<'_ATEOF'
example.org
www.example.org
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/fromfile.at:23:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Host -file \"hostfile\"
		Backend
			Address
			Port
		End
	End
	Service \"fallback\"
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.org
end

200
x-backend-number: 0
end

GET /echo/foo
Host: www.example.org
end

200
x-backend-number: 0
end

GET /echo/foo
Host: ftp.example.org
end

200
x-backend-number: 1
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "fromfile.at:23"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Host -file "hostfile"
		Backend
			Address
			Port
		End
	End
	Service "fallback"
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.org
end

200
x-backend-number: 0
end

GET /echo/foo
Host: www.example.org
end

200
x-backend-number: 0
end

GET /echo/foo
Host: ftp.example.org
end

200
x-backend-number: 1
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/fromfile.at:23"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_23
#AT_START_24
at_fn_group_banner 24 'include.at:15' \
  "Include files" "                                  " 3
at_xfail=no
(
  printf "%s\n" "24. $at_setup_line: testing $at_desc ..."
  $at_traceon



{ set +x
printf "%s\n" "$at_srcdir/include.at:18:
cat >svc1 <<'_ATEOF'
Service
	Host \"example.org\"
	Backend
		Address
		Port
	End
End
_ATEOF


cat >svc2 <<'_ATEOF'
Service
	Host \"example.com\"
	Backend
		Address
		Port
	End
End
_ATEOF


cat >pound.cfi <<'_ATEOF'
ListenHTTP
Include \"svc1\"
End
Include \"svc2\"
_ATEOF


cat >input <<'_ATEOF'
GET /echo/foo
Host: example.org
end

200
x-backend-number: 0
end

GET /echo/foo
Host: example.com
end

200
x-backend-number: 1
end
_ATEOF


perl \$HARNESS --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "include.at:18"
( $at_check_trace;
cat >svc1 <<'_ATEOF'
Service
	Host "example.org"
	Backend
		Address
		Port
	End
End
_ATEOF


cat >svc2 <<'_ATEOF'
Service
	Host "example.com"
	Backend
		Address
		Port
	End
End
_ATEOF


cat >pound.cfi <<'_ATEOF'
ListenHTTP
Include "svc1"
End
Include "svc2"
_ATEOF


cat >input <<'_ATEOF'
GET /echo/foo
Host: example.org
end

200
x-backend-number: 0
end

GET /echo/foo
Host: example.com
end

200
x-backend-number: 1
end
_ATEOF


perl $HARNESS --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/include.at:18"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_24
#AT_START_25
at_fn_group_banner 25 'incldir.at:15' \
  "Include directory" "                              " 3
at_xfail=no
(
  printf "%s\n" "25. $at_setup_line: testing $at_desc ..."
  $at_traceon



{ set +x
printf "%s\n" "$at_srcdir/incldir.at:18:
mkdir conf

cat >conf/svc1.cfg <<'_ATEOF'
Service
	Host \"example.org\"
	Backend
		Address
		Port
	End
End
_ATEOF


cat >conf/svc2.cfg <<'_ATEOF'
Service
	Host \"example.com\"
	Backend
		Address
		Port
	End
End
_ATEOF


cat >pound.cfi <<'_ATEOF'
ListenHTTP
Include \"svc1.cfg\"
End
Include \"svc2.cfg\"
_ATEOF


cat >input <<'_ATEOF'
GET /echo/foo
Host: example.org
end

200
x-backend-number: 0
end

GET /echo/foo
Host: example.com
end

200
x-backend-number: 1
end
_ATEOF


perl \$HARNESS --include-dir=conf --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "incldir.at:18"
( $at_check_trace;
mkdir conf

cat >conf/svc1.cfg <<'_ATEOF'
Service
	Host "example.org"
	Backend
		Address
		Port
	End
End
_ATEOF


cat >conf/svc2.cfg <<'_ATEOF'
Service
	Host "example.com"
	Backend
		Address
		Port
	End
End
_ATEOF


cat >pound.cfi <<'_ATEOF'
ListenHTTP
Include "svc1.cfg"
End
Include "svc2.cfg"
_ATEOF


cat >input <<'_ATEOF'
GET /echo/foo
Host: example.org
end

200
x-backend-number: 0
end

GET /echo/foo
Host: example.com
end

200
x-backend-number: 1
end
_ATEOF


perl $HARNESS --include-dir=conf --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/incldir.at:18"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_25
#AT_START_26
at_fn_group_banner 26 'inclnest.at:15' \
  "Nested includes" "                                " 3
at_xfail=no
(
  printf "%s\n" "26. $at_setup_line: testing $at_desc ..."
  $at_traceon



{ set +x
printf "%s\n" "$at_srcdir/inclnest.at:18:
mkdir conf

cat >conf/svc1.cfg <<'_ATEOF'
Service
	Host \"example.org\"
	Backend
		Address
		Port
	End
End
Include \"svc2.cfg\"
_ATEOF


cat >conf/svc2.cfg <<'_ATEOF'
Service
	Host \"example.com\"
	Backend
		Address
		Port
	End
End
_ATEOF


cat >conf/main.cfg <<'_ATEOF'
ListenHTTP
End
Include \"svc1.cfg\"
_ATEOF


cat >pound.cfi <<'_ATEOF'
Include \"main.cfg\"
_ATEOF


cat >input <<'_ATEOF'
GET /echo/foo
Host: example.org
end

200
x-backend-number: 0
end

GET /echo/foo
Host: example.com
end

200
x-backend-number: 1
end
_ATEOF


perl \$HARNESS --include-dir=conf \\
	      --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "inclnest.at:18"
( $at_check_trace;
mkdir conf

cat >conf/svc1.cfg <<'_ATEOF'
Service
	Host "example.org"
	Backend
		Address
		Port
	End
End
Include "svc2.cfg"
_ATEOF


cat >conf/svc2.cfg <<'_ATEOF'
Service
	Host "example.com"
	Backend
		Address
		Port
	End
End
_ATEOF


cat >conf/main.cfg <<'_ATEOF'
ListenHTTP
End
Include "svc1.cfg"
_ATEOF


cat >pound.cfi <<'_ATEOF'
Include "main.cfg"
_ATEOF


cat >input <<'_ATEOF'
GET /echo/foo
Host: example.org
end

200
x-backend-number: 0
end

GET /echo/foo
Host: example.com
end

200
x-backend-number: 1
end
_ATEOF


perl $HARNESS --include-dir=conf \
	      --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/inclnest.at:18"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_26
#AT_START_27
at_fn_group_banner 27 'inclscope.at:15' \
  "Includes in various scopes" "                     " 3
at_xfail=no
(
  printf "%s\n" "27. $at_setup_line: testing $at_desc ..."
  $at_traceon



cat >backend <<'_ATEOF'
Backend
	Address
	Port
End
Backend
	Address
	Port
End
_ATEOF


cat >host.cfg <<'_ATEOF'
Host "example.com"
Host "www.example.com"
_ATEOF


cat >session.cfg <<'_ATEOF'
Type URL
ID "id"
TTL 300
_ATEOF


cat >svc.cfg <<'_ATEOF'
Service
	Match or
		Include "host.cfg"
	End
        Include "backend.cfg"
	Session
		Include "session.cfg"
	End
End
_ATEOF


cat >pound.cfi <<'_ATEOF'
ListenHTTP
Include "svc.cfg"
End
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/inclscope.at:58:
cat >input <<'_ATEOF'
GET /echo/foo
Host: example.com
end

200
end

GET /echo/foo
Host: www.example.com
end

200
end
_ATEOF


perl \$HARNESS --preproc backend --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "inclscope.at:58"
( $at_check_trace;
cat >input <<'_ATEOF'
GET /echo/foo
Host: example.com
end

200
end

GET /echo/foo
Host: www.example.com
end

200
end
_ATEOF


perl $HARNESS --preproc backend --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/inclscope.at:58"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/inclscope.at:78:
cat >input <<'_ATEOF'
stats samples=100 min=0 max=100

GET /echo/foo?id=123
Host: www.example.com
end

200
end
_ATEOF


perl \$HARNESS --preproc backend --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "inclscope.at:78"
( $at_check_trace;
cat >input <<'_ATEOF'
stats samples=100 min=0 max=100

GET /echo/foo?id=123
Host: www.example.com
end

200
end
_ATEOF


perl $HARNESS --preproc backend --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/inclscope.at:78"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_27
#AT_START_28
at_fn_group_banner 28 'redirect.at:17' \
  "Redirect" "                                       " 4
at_xfail=no
(
  printf "%s\n" "28. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/redirect.at:19:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Redirect \"http://example.org\"
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /foo/bar
end

302
location: http://example.org/foo/bar
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "redirect.at:19"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Redirect "http://example.org"
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /foo/bar
end

302
location: http://example.org/foo/bar
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/redirect.at:19"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/redirect.at:33:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Redirect 301 \"http://example.org\"
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /foo/bar
end

301
location: http://example.org/foo/bar
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "redirect.at:33"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Redirect 301 "http://example.org"
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /foo/bar
end

301
location: http://example.org/foo/bar
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/redirect.at:33"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/redirect.at:47:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Redirect 302 \"http://example.org/\"
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /foo/bar
end

302
location: http://example.org
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "redirect.at:47"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Redirect 302 "http://example.org/"
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /foo/bar
end

302
location: http://example.org
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/redirect.at:47"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/redirect.at:61:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Redirect 303 \"http://example.org\"
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /foo/bar
end

303
location: http://example.org/foo/bar
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "redirect.at:61"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Redirect 303 "http://example.org"
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /foo/bar
end

303
location: http://example.org/foo/bar
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/redirect.at:61"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/redirect.at:75:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Redirect 307 \"http://example.org\"
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /foo/bar
end

307
location: http://example.org/foo/bar
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "redirect.at:75"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Redirect 307 "http://example.org"
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /foo/bar
end

307
location: http://example.org/foo/bar
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/redirect.at:75"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/redirect.at:89:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Redirect 308 \"http://example.org\"
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /foo/bar
end

308
location: http://example.org/foo/bar
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "redirect.at:89"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Redirect 308 "http://example.org"
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /foo/bar
end

308
location: http://example.org/foo/bar
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/redirect.at:89"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/redirect.at:103:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		URL \"^/([^/]+)/(.*)\"
		Redirect \"http://example.org/\$2/\$1\"
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /foo/bar
end

302
location: http://example.org/bar/foo
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "redirect.at:103"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		URL "^/([^/]+)/(.*)"
		Redirect "http://example.org/$2/$1"
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /foo/bar
end

302
location: http://example.org/bar/foo
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/redirect.at:103"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/redirect.at:118:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Host -re \"www\\\\.(.+)\"
		URL \"^/([^/]+)/(.*)\"
		Redirect \"http://\$1(1)/\$2/\$1\"
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /foo/bar
Host: www.example.org
end

302
location: http://example.org:\${LISTENER:PORT}/bar/foo
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'a ${...} parameter expansion' "redirect.at:118"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Host -re "www\\.(.+)"
		URL "^/([^/]+)/(.*)"
		Redirect "http://$1(1)/$2/$1"
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /foo/bar
Host: www.example.org
end

302
location: http://example.org:${LISTENER:PORT}/bar/foo
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/redirect.at:118"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/redirect.at:135:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Host -re \"www\\\\.(.+)\"
		Path \"^/([^/]+)/(.*)\"
		Header -re -icase \"X-Name:[[:space:]]+(.+)\"
		Header -re -icase \"X-Version:[[:space:]]+(string|number)=(.+)\"
		Redirect \"http://\$1(3)/\$2(2)/\$1(2)-\$1(1)\$2\"
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /foo/bar
Host: www.example.org
X-Name: Ping
X-Version: number=903
end

302
location: http://example.org:\${LISTENER:PORT}/bar/foo-Ping903
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'a ${...} parameter expansion' "redirect.at:135"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Host -re "www\\.(.+)"
		Path "^/([^/]+)/(.*)"
		Header -re -icase "X-Name:[[:space:]]+(.+)"
		Header -re -icase "X-Version:[[:space:]]+(string|number)=(.+)"
		Redirect "http://$1(3)/$2(2)/$1(2)-$1(1)$2"
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /foo/bar
Host: www.example.org
X-Name: Ping
X-Version: number=903
end

302
location: http://example.org:${LISTENER:PORT}/bar/foo-Ping903
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/redirect.at:135"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/redirect.at:156:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Host -re \"www\\\\.(.+)\"
		URL \"^/([^/]+)/(.*)\"
		Redirect \"http://%1/\$2/\$1\"
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /foo/bar
Host: www.example.org
end

302
location: http://example.org:\${LISTENER:PORT}/bar/foo
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'a ${...} parameter expansion' "redirect.at:156"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Host -re "www\\.(.+)"
		URL "^/([^/]+)/(.*)"
		Redirect "http://%1/$2/$1"
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /foo/bar
Host: www.example.org
end

302
location: http://example.org:${LISTENER:PORT}/bar/foo
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/redirect.at:156"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/redirect.at:173:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Redirect \"http://%1\$1\"
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /foo/bar
Host: www.example.org
end

500
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "redirect.at:173"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Redirect "http://%1$1"
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /foo/bar
Host: www.example.org
end

500
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/redirect.at:173"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/redirect.at:187: grep 'Redirect expression' pound.log"
at_fn_check_prepare_trace "redirect.at:187"
( $at_check_trace; grep 'Redirect expression' pound.log
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "pound: Redirect expression \"http://%1\$1\" refers to non-existing group %1
pound: Redirect expression \"http://%1\$1\" refers to non-existing group \$1
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/redirect.at:187"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_28
#AT_START_29
at_fn_group_banner 29 'acme.at:17' \
  "ACME" "                                           " 4
at_xfail=no
(
  printf "%s\n" "29. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/acme.at:19: mkdir challenges
echo \"test_acme_challenge\" > challenges/ABC
"
at_fn_check_prepare_notrace 'an embedded newline' "acme.at:19"
( $at_check_trace; mkdir challenges
echo "test_acme_challenge" > challenges/ABC

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/acme.at:19"
$at_failed && at_fn_log_failure
$at_traceon; }

{ set +x
printf "%s\n" "$at_srcdir/acme.at:22:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	ACME \"challenges\"
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /.well-known/acme-challenge/ABC
end

200

test_acme_challenge
end

GET /.well-known/acme-challenge/ABD
end

404
end

GET /echo/ABC
end

200
x-orig-uri: /echo/ABC
x-backend-ident: pound.cfi:4
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "acme.at:22"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	ACME "challenges"
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /.well-known/acme-challenge/ABC
end

200

test_acme_challenge
end

GET /.well-known/acme-challenge/ABD
end

404
end

GET /echo/ABC
end

200
x-orig-uri: /echo/ABC
x-backend-ident: pound.cfi:4
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/acme.at:22"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_29
#AT_START_30
at_fn_group_banner 30 'error.at:17' \
  "Error backend" "                                  " 4
at_xfail=no
(
  printf "%s\n" "30. $at_setup_line: testing $at_desc ..."
  $at_traceon



{ set +x
printf "%s\n" "$at_srcdir/error.at:20:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Error 404
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /foo/bar
end

404
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "error.at:20"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Error 404
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /foo/bar
end

404
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/error.at:20"
$at_failed && at_fn_log_failure
$at_traceon; }




cat >404.html <<'_ATEOF'
<html>
<head><title>Custom Not Found Error</title></head>
<body>
<p>The requested resource is not found on that server.</p>
<p>This custom error page was supplied using the Err404 directive.</p>
</body>
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/error.at:44:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Err404 \"404.html\"
	Service
		Error 404
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /foo/bar
end

404

<html>
<head><title>Custom Not Found Error</title></head>
<body>
<p>The requested resource is not found on that server.</p>
<p>This custom error page was supplied using the Err404 directive.</p>
</body>

end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "error.at:44"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Err404 "404.html"
	Service
		Error 404
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /foo/bar
end

404

<html>
<head><title>Custom Not Found Error</title></head>
<body>
<p>The requested resource is not found on that server.</p>
<p>This custom error page was supplied using the Err404 directive.</p>
</body>

end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/error.at:44"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/error.at:60:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Error 404 \"404.html\"
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /foo/bar
end

404

<html>
<head><title>Custom Not Found Error</title></head>
<body>
<p>The requested resource is not found on that server.</p>
<p>This custom error page was supplied using the Err404 directive.</p>
</body>

end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "error.at:60"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Error 404 "404.html"
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /foo/bar
end

404

<html>
<head><title>Custom Not Found Error</title></head>
<body>
<p>The requested resource is not found on that server.</p>
<p>This custom error page was supplied using the Err404 directive.</p>
</body>

end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/error.at:60"
$at_failed && at_fn_log_failure
$at_traceon; }




  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_30
#AT_START_31
at_fn_group_banner 31 'bemix.at:17' \
  "Mixing backend types" "                           " 4
at_xfail=no
(
  printf "%s\n" "31. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat > pound.cfg <<_CONF
ListenHTTP
	Address 127.0.0.1
	Port 80
	Service
		Backend
			Address 127.0.0.1
			Port 8080
		End
		Backend
			Address 127.0.0.1
			Port 8081
		End
	End
End

_CONF
{ set +x
printf "%s\n" "$at_srcdir/bemix.at:19: pound -c -Wno-dns -Wno-include-dir -f pound.cfg"
at_fn_check_prepare_trace "bemix.at:19"
( $at_check_trace; pound -c -Wno-dns -Wno-include-dir -f pound.cfg
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/bemix.at:19"
$at_failed && at_fn_log_failure
$at_traceon; }


cat > pound.cfg <<_CONF
ListenHTTP
	Address 127.0.0.1
	Port 80
	Service
		Error 404
	End
End

_CONF
{ set +x
printf "%s\n" "$at_srcdir/bemix.at:35: pound -c -Wno-dns -Wno-include-dir -f pound.cfg"
at_fn_check_prepare_trace "bemix.at:35"
( $at_check_trace; pound -c -Wno-dns -Wno-include-dir -f pound.cfg
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/bemix.at:35"
$at_failed && at_fn_log_failure
$at_traceon; }


cat > pound.cfg <<_CONF
ListenHTTP
	Address 127.0.0.1
	Port 80
	Service
		Redirect "https://example.org"
	End
End

_CONF
{ set +x
printf "%s\n" "$at_srcdir/bemix.at:44: pound -c -Wno-dns -Wno-include-dir -f pound.cfg"
at_fn_check_prepare_trace "bemix.at:44"
( $at_check_trace; pound -c -Wno-dns -Wno-include-dir -f pound.cfg
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/bemix.at:44"
$at_failed && at_fn_log_failure
$at_traceon; }


cat > pound.cfg <<_CONF
ListenHTTP
	Address 127.0.0.1
	Port 80
	Service
		Metrics
	End
End

_CONF
{ set +x
printf "%s\n" "$at_srcdir/bemix.at:53: pound -c -Wno-dns -Wno-include-dir -f pound.cfg"
at_fn_check_prepare_trace "bemix.at:53"
( $at_check_trace; pound -c -Wno-dns -Wno-include-dir -f pound.cfg
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/bemix.at:53"
$at_failed && at_fn_log_failure
$at_traceon; }


cat > pound.cfg <<_CONF
ListenHTTP
	Address 127.0.0.1
	Port 80
	Service
		Backend
			Address 127.0.0.1
			Port 8080
		End
		Backend
			Address 127.0.0.1
			Port 8081
		End
		Error 404
	End
End

_CONF
{ set +x
printf "%s\n" "$at_srcdir/bemix.at:62: pound -c -Wno-dns -Wno-include-dir -f pound.cfg"
at_fn_check_prepare_trace "bemix.at:62"
( $at_check_trace; pound -c -Wno-dns -Wno-include-dir -f pound.cfg
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo >>"$at_stderr"; printf "%s\n" "pound: pound.cfg:4.15-14.11: service mixes backends of different types
" | \
  $at_diff - "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/bemix.at:62"
$at_failed && at_fn_log_failure
$at_traceon; }


cat > pound.cfg <<_CONF
ListenHTTP
	Address 127.0.0.1
	Port 80
	Service
		Redirect "http://www.example.com"
		Error 404
	End
End

_CONF
{ set +x
printf "%s\n" "$at_srcdir/bemix.at:83: pound -c -Wno-dns -Wno-include-dir -f pound.cfg"
at_fn_check_prepare_trace "bemix.at:83"
( $at_check_trace; pound -c -Wno-dns -Wno-include-dir -f pound.cfg
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo >>"$at_stderr"; printf "%s\n" "pound: pound.cfg:4.15-7.11: service mixes backends of different types
" | \
  $at_diff - "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/bemix.at:83"
$at_failed && at_fn_log_failure
$at_traceon; }


cat > pound.cfg <<_CONF
ListenHTTP
	Address 127.0.0.1
	Port 80
	Service
		Error 501
		Error 404
	End
End

_CONF
{ set +x
printf "%s\n" "$at_srcdir/bemix.at:97: pound -c -Wno-dns -Wno-include-dir -f pound.cfg"
at_fn_check_prepare_trace "bemix.at:97"
( $at_check_trace; pound -c -Wno-dns -Wno-include-dir -f pound.cfg
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo >>"$at_stderr"; printf "%s\n" "pound: pound.cfg:4.15-7.11: multiple backends of this type are not allowed
" | \
  $at_diff - "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 1 $at_status "$at_srcdir/bemix.at:97"
$at_failed && at_fn_log_failure
$at_traceon; }


cat > pound.cfg <<_CONF
ListenHTTP
	Address 127.0.0.1
	Port 80
	Service
		Backend
			Address 127.0.0.1
			Port 8080
		End
		Backend
			Address 127.0.0.1
			Port 8081
		End
		Redirect "https://www.example.com"
	End
End

_CONF
{ set +x
printf "%s\n" "$at_srcdir/bemix.at:111: pound -c -Wno-dns -Wno-include-dir -f pound.cfg"
at_fn_check_prepare_trace "bemix.at:111"
( $at_check_trace; pound -c -Wno-dns -Wno-include-dir -f pound.cfg
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo >>"$at_stderr"; printf "%s\n" "pound: pound.cfg:4.15-14.11: warning: service mixes regular and redirect backends
pound: pound.cfg:4.15-14.11: see section \"DEPRECATED FEATURES\" in pound(8)
" | \
  $at_diff - "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/bemix.at:111"
$at_failed && at_fn_log_failure
$at_traceon; }


cat > pound.cfg <<_CONF
ListenHTTP
	Address 127.0.0.1
	Port 80
	Service
		Redirect "https://example.com"
		Redirect "https://www.example.com"
	End
End

_CONF
{ set +x
printf "%s\n" "$at_srcdir/bemix.at:133: pound -c -Wno-dns -Wno-include-dir -f pound.cfg"
at_fn_check_prepare_trace "bemix.at:133"
( $at_check_trace; pound -c -Wno-dns -Wno-include-dir -f pound.cfg
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo >>"$at_stderr"; printf "%s\n" "pound: pound.cfg:4.15-7.11: warning: service uses multiple redirect backends
pound: pound.cfg:4.15-7.11: see section \"DEPRECATED FEATURES\" in pound(8)
" | \
  $at_diff - "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/bemix.at:133"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_31
#AT_START_32
at_fn_group_banner 32 'optfwd.at:17' \
  "HeaderOption forwarded" "                         " 5
at_xfail=no
(
  printf "%s\n" "32. $at_setup_line: testing $at_desc ..."
  $at_traceon



{ set +x
printf "%s\n" "$at_srcdir/optfwd.at:20:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/X
Host: example.com
end

200
x-orig-header-X-Forwarded-For: 127.0.0.1
x-orig-header-X-Forwarded-Proto: http
x-orig-header-X-Forwarded-Port: \${LISTENER:PORT}
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'a ${...} parameter expansion' "optfwd.at:20"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/X
Host: example.com
end

200
x-orig-header-X-Forwarded-For: 127.0.0.1
x-orig-header-X-Forwarded-Proto: http
x-orig-header-X-Forwarded-Port: ${LISTENER:PORT}
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/optfwd.at:20"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/optfwd.at:40:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
HeaderOption none
ListenHTTP
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/X
Host: example.com
end

200
-x-orig-header-X-Forwarded-For:
-x-orig-header-X-Forwarded-Proto:
-x-orig-header-X-Forwarded-Port:
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "optfwd.at:40"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
HeaderOption none
ListenHTTP
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/X
Host: example.com
end

200
-x-orig-header-X-Forwarded-For:
-x-orig-header-X-Forwarded-Proto:
-x-orig-header-X-Forwarded-Port:
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/optfwd.at:40"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/optfwd.at:61:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	HeaderOption none
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/X
Host: example.com
end

200
-x-orig-header-X-Forwarded-For:
-x-orig-header-X-Forwarded-Proto:
-x-orig-header-X-Forwarded-Port:
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "optfwd.at:61"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	HeaderOption none
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/X
Host: example.com
end

200
-x-orig-header-X-Forwarded-For:
-x-orig-header-X-Forwarded-Proto:
-x-orig-header-X-Forwarded-Port:
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/optfwd.at:61"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/optfwd.at:82:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	HeaderOption no-forwarded
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/X
Host: example.com
end

200
-x-orig-header-X-Forwarded-For:
-x-orig-header-X-Forwarded-Proto:
-x-orig-header-X-Forwarded-Port:
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "optfwd.at:82"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	HeaderOption no-forwarded
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/X
Host: example.com
end

200
-x-orig-header-X-Forwarded-For:
-x-orig-header-X-Forwarded-Proto:
-x-orig-header-X-Forwarded-Port:
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/optfwd.at:82"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/optfwd.at:103:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
HeaderOption none
ListenHTTP
	HeaderOption forwarded
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/X
Host: example.com
end

200
x-orig-header-X-Forwarded-For: 127.0.0.1
x-orig-header-X-Forwarded-Proto: http
x-orig-header-X-Forwarded-Port: \${LISTENER:PORT}
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'a ${...} parameter expansion' "optfwd.at:103"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
HeaderOption none
ListenHTTP
	HeaderOption forwarded
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/X
Host: example.com
end

200
x-orig-header-X-Forwarded-For: 127.0.0.1
x-orig-header-X-Forwarded-Proto: http
x-orig-header-X-Forwarded-Port: ${LISTENER:PORT}
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/optfwd.at:103"
$at_failed && at_fn_log_failure
$at_traceon; }



  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_32
#AT_START_33
at_fn_group_banner 33 'optssl.at:17' \
  "HeaderOption ssl" "                               " 5
at_xfail=no
(
  printf "%s\n" "33. $at_setup_line: testing $at_desc ..."
  $at_traceon



{ set +x
printf "%s\n" "$at_srcdir/optssl.at:20: openssl req -new -newkey rsa:2048 -days 1 -nodes -x509 \\
 -subj \"/CN=www.example.com\" -keyout key.pem -out crt.pem || exit 77
cat crt.pem key.pem > example.pem
"
at_fn_check_prepare_notrace 'an embedded newline' "optssl.at:20"
( $at_check_trace; openssl req -new -newkey rsa:2048 -days 1 -nodes -x509 \
 -subj "/CN=www.example.com" -keyout key.pem -out crt.pem || exit 77
cat crt.pem key.pem > example.pem

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/optssl.at:20"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/optssl.at:28:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
HeaderOption no-ssl
ListenHTTPS
	Address 127.0.0.1
	Port 8080
	Cert \"example.pem\"
	Service
		Backend
			Address 127.0.0.1
			Port 8081
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo/bar
Host: www.example.com
end

200
x-orig-uri: /echo/foo/bar
-x-orig-header-x-ssl-cipher:
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "optssl.at:28"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
HeaderOption no-ssl
ListenHTTPS
	Address 127.0.0.1
	Port 8080
	Cert "example.pem"
	Service
		Backend
			Address 127.0.0.1
			Port 8081
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo/bar
Host: www.example.com
end

200
x-orig-uri: /echo/foo/bar
-x-orig-header-x-ssl-cipher:
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/optssl.at:28"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/optssl.at:52:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTPS
	Address 127.0.0.1
	Port 8080
	Cert \"example.pem\"
	HeaderOption no-ssl
	Service
		Backend
			Address 127.0.0.1
			Port 8081
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo/bar
Host: www.example.com
end

200
x-orig-uri: /echo/foo/bar
-x-orig-header-x-ssl-cipher:
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "optssl.at:52"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTPS
	Address 127.0.0.1
	Port 8080
	Cert "example.pem"
	HeaderOption no-ssl
	Service
		Backend
			Address 127.0.0.1
			Port 8081
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo/bar
Host: www.example.com
end

200
x-orig-uri: /echo/foo/bar
-x-orig-header-x-ssl-cipher:
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/optssl.at:52"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_33
#AT_START_34
at_fn_group_banner 34 'optorder.at:16' \
  "Header directives ordering" "                     " 5
at_xfail=no
(
  printf "%s\n" "34. $at_setup_line: testing $at_desc ..."
  $at_traceon



{ set +x
printf "%s\n" "$at_srcdir/optorder.at:19:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/X
Host: example.com
X-Forwarded-For: 192.0.2.2
end

200
x-orig-header-X-Forwarded-For: 127.0.0.1
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "optorder.at:19"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/X
Host: example.com
X-Forwarded-For: 192.0.2.2
end

200
x-orig-header-X-Forwarded-For: 127.0.0.1
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/optorder.at:19"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/optorder.at:38:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	HeaderOption forwarded
	HeaderAdd \"X-Forwarded-For: 192.0.2.2\"
	HeaderRemove \"X-Forwarded-Port\"
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/X
Host: example.com
end

200
x-orig-header-X-Forwarded-For: 192.0.2.2
-x-orig-header-X-Forwarded-Port:
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "optorder.at:38"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	HeaderOption forwarded
	HeaderAdd "X-Forwarded-For: 192.0.2.2"
	HeaderRemove "X-Forwarded-Port"
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/X
Host: example.com
end

200
x-orig-header-X-Forwarded-For: 192.0.2.2
-x-orig-header-X-Forwarded-Port:
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/optorder.at:38"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_34
#AT_START_35
at_fn_group_banner 35 'set.at:16' \
  "Basic set directives" "                           " 6
at_xfail=no
(
  printf "%s\n" "35. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/set.at:18:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Rewrite
			SetURL \"/echo/other\"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /one
end

200
x-orig-uri: /echo/other
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "set.at:18"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Rewrite
			SetURL "/echo/other"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /one
end

200
x-orig-uri: /echo/other
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/set.at:18"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/set.at:38:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Rewrite
			SetPath \"/echo/other\"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /one
end

200
x-orig-uri: /echo/other
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "set.at:38"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Rewrite
			SetPath "/echo/other"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /one
end

200
x-orig-uri: /echo/other
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/set.at:38"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/set.at:58:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Rewrite
			SetQuery \"foo=10&quux=b%20ar\"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/one
end

200
x-orig-uri: /echo/one?foo=10&quux=b%20ar
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "set.at:58"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Rewrite
			SetQuery "foo=10&quux=b%20ar"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/one
end

200
x-orig-uri: /echo/one?foo=10&quux=b%20ar
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/set.at:58"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/set.at:78:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Rewrite
			SetQueryParam \"foo\" \"10\"
			SetQueryParam \"quux\" \"b%20ar\"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/one
end

200
x-orig-uri: /echo/one?foo=10&quux=b%20ar
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "set.at:78"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Rewrite
			SetQueryParam "foo" "10"
			SetQueryParam "quux" "b%20ar"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/one
end

200
x-orig-uri: /echo/one?foo=10&quux=b%20ar
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/set.at:78"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/set.at:99:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Rewrite
			SetHeader \"X-Foo: bar baz\"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/one
end

200
x-orig-header-x-foo: bar baz
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "set.at:99"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Rewrite
			SetHeader "X-Foo: bar baz"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/one
end

200
x-orig-header-x-foo: bar baz
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/set.at:99"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/set.at:119:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Rewrite
			DeleteHeader -beg \"X-Accept\"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
X-Accept: *
X-Accept-Ex: foo
end

200
-x-orig-header-X-Accept:
-x-orig-header-X-Accept-Ex:
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "set.at:119"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Rewrite
			DeleteHeader -beg "X-Accept"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
X-Accept: *
X-Accept-Ex: foo
end

200
-x-orig-header-X-Accept:
-x-orig-header-X-Accept-Ex:
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/set.at:119"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/set.at:142:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Rewrite
			DeleteHeader -beg \"X-Accept:\"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
X-Accept: *
X-Accept-Ex: foo
end

200
-x-orig-header-X-Accept:
x-orig-header-X-Accept-Ex: foo
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "set.at:142"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Rewrite
			DeleteHeader -beg "X-Accept:"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
X-Accept: *
X-Accept-Ex: foo
end

200
-x-orig-header-X-Accept:
x-orig-header-X-Accept-Ex: foo
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/set.at:142"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/set.at:165:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Rewrite
			DeleteHeader \"X-Accept:[[:space:]]*bar\"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
X-Accept: *
X-Accept-Ex: foo
end

200
x-orig-header-X-Accept: *
x-orig-header-X-Accept-Ex: foo
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "set.at:165"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Rewrite
			DeleteHeader "X-Accept:[[:space:]]*bar"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
X-Accept: *
X-Accept-Ex: foo
end

200
x-orig-header-X-Accept: *
x-orig-header-X-Accept-Ex: foo
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/set.at:165"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/set.at:188:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Rewrite
			DeleteHeader \"X-Accept:[[:space:]]*bar\"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
X-Accept: bar
X-Accept-Ex: foo
end

200
-x-orig-header-X-Accept:
x-orig-header-X-Accept-Ex: foo
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "set.at:188"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Rewrite
			DeleteHeader "X-Accept:[[:space:]]*bar"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
X-Accept: bar
X-Accept-Ex: foo
end

200
-x-orig-header-X-Accept:
x-orig-header-X-Accept-Ex: foo
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/set.at:188"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/set.at:211:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Rewrite
			SetPath \"/echo/other\"
			SetQueryParam \"foo\" \"bar\"
			SetQueryParam \"qux\" \"x%2Fuq\"
			SetHeader \"x-foo: bar baz\"
			DeleteHeader -beg -icase \"x-bar:\"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /one
X-Bar: qux
end

200
x-orig-uri: /echo/other?foo=bar&qux=x%2Fuq
x-orig-header-x-foo: bar baz
-x-orig-header-X-Bar:
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "set.at:211"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Rewrite
			SetPath "/echo/other"
			SetQueryParam "foo" "bar"
			SetQueryParam "qux" "x%2Fuq"
			SetHeader "x-foo: bar baz"
			DeleteHeader -beg -icase "x-bar:"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /one
X-Bar: qux
end

200
x-orig-uri: /echo/other?foo=bar&qux=x%2Fuq
x-orig-header-x-foo: bar baz
-x-orig-header-X-Bar:
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/set.at:211"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/set.at:238:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		SetPath \"/echo/other\"
		SetQueryParam \"foo\" \"bar\"
		SetQueryParam \"qux\" \"x%2Fuq\"
		SetHeader \"x-foo: bar baz\"
		DeleteHeader -beg -icase \"x-bar:\"

		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /one
X-Bar: qux
end

200
x-orig-uri: /echo/other?foo=bar&qux=x%2Fuq
x-orig-header-x-foo: bar baz
-x-orig-header-X-Bar:
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "set.at:238"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		SetPath "/echo/other"
		SetQueryParam "foo" "bar"
		SetQueryParam "qux" "x%2Fuq"
		SetHeader "x-foo: bar baz"
		DeleteHeader -beg -icase "x-bar:"

		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /one
X-Bar: qux
end

200
x-orig-uri: /echo/other?foo=bar&qux=x%2Fuq
x-orig-header-x-foo: bar baz
-x-orig-header-X-Bar:
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/set.at:238"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_35
#AT_START_36
at_fn_group_banner 36 'reqacc.at:16' \
  "Request accessors" "                              " 6
at_xfail=no
(
  printf "%s\n" "36. $at_setup_line: testing $at_desc ..."
  $at_traceon



{ set +x
printf "%s\n" "$at_srcdir/reqacc.at:19:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Rewrite
			SetPath \"/echo%[url]\"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /one
end

200
x-orig-uri: /echo/one
end
_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "reqacc.at:19"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Rewrite
			SetPath "/echo%[url]"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /one
end

200
x-orig-uri: /echo/one
end
_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/reqacc.at:19"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/reqacc.at:38:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Rewrite
			SetPath \"/echo%[path]\"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /one
end

200
x-orig-uri: /echo/one
end
_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "reqacc.at:38"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Rewrite
			SetPath "/echo%[path]"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /one
end

200
x-orig-uri: /echo/one
end
_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/reqacc.at:38"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/reqacc.at:57:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Rewrite
			SetHeader \"X-Query: (%[query])\"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo?dir=%2Fvar%2Flib&foo=bar
end

200
x-orig-header-X-Query: (dir=%2Fvar%2Flib&foo=bar)
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "reqacc.at:57"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Rewrite
			SetHeader "X-Query: (%[query])"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo?dir=%2Fvar%2Flib&foo=bar
end

200
x-orig-header-X-Query: (dir=%2Fvar%2Flib&foo=bar)
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/reqacc.at:57"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/reqacc.at:77:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Rewrite
			SetHeader \"X-Dir: (%[param dir])\"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo?dir=%2Fvar%2Flib
end

200
x-orig-header-X-Dir: (%2Fvar%2Flib)
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "reqacc.at:77"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Rewrite
			SetHeader "X-Dir: (%[param dir])"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo?dir=%2Fvar%2Flib
end

200
x-orig-header-X-Dir: (%2Fvar%2Flib)
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/reqacc.at:77"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/reqacc.at:97:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Rewrite
			SetHeader \"X-X-Foobar: (%[header x-foobar])\"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
X-Foobar: quux
end

200
x-orig-header-X-X-Foobar: (quux)
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "reqacc.at:97"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Rewrite
			SetHeader "X-X-Foobar: (%[header x-foobar])"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
X-Foobar: quux
end

200
x-orig-header-X-X-Foobar: (quux)
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/reqacc.at:97"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_36
#AT_START_37
at_fn_group_banner 37 'experr.at:16' \
  "Expansion error handling" "                       " 6
at_xfail=no
(
  printf "%s\n" "37. $at_setup_line: testing $at_desc ..."
  $at_traceon



{ set +x
printf "%s\n" "$at_srcdir/experr.at:19:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		SetPath \"/echo%[url\"
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
end

500
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "experr.at:19"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		SetPath "/echo%[url"
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
end

500
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/experr.at:19"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/experr.at:36: fgrep -q 'pound: path \"/echo%[url\": unclosed %[ at offset 5' pound.log"
at_fn_check_prepare_trace "experr.at:36"
( $at_check_trace; fgrep -q 'pound: path "/echo%[url": unclosed %[ at offset 5' pound.log
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/experr.at:36"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/experr.at:38:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		SetPath \"/echo\$0\"
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /foo
end

500
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "experr.at:38"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		SetPath "/echo$0"
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /foo
end

500
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/experr.at:38"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/experr.at:55: fgrep -q 'pound: path \"/echo\$0\" refers to non-existing group \$0' pound.log"
at_fn_check_prepare_dynamic "fgrep -q 'pound: path \"/echo$0\" refers to non-existing group $0' pound.log" "experr.at:55"
( $at_check_trace; fgrep -q 'pound: path "/echo$0" refers to non-existing group $0' pound.log
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/experr.at:55"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/experr.at:57:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		SetPath \"/echo\${11bar\"
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /foo
end

500
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'a ${...} parameter expansion' "experr.at:57"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		SetPath "/echo${11bar"
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /foo
end

500
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/experr.at:57"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/experr.at:74: fgrep -q 'pound: path \"/echo\${11bar\": missing closing brace in reference started in position 6' pound.log"
at_fn_check_prepare_notrace 'a ${...} parameter expansion' "experr.at:74"
( $at_check_trace; fgrep -q 'pound: path "/echo${11bar": missing closing brace in reference started in position 6' pound.log
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/experr.at:74"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/experr.at:76:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		SetPath \"/echo%{11bar\"
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /foo
end

500
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "experr.at:76"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		SetPath "/echo%{11bar"
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /foo
end

500
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/experr.at:76"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/experr.at:93: fgrep -q 'pound: path \"/echo%{11bar\": missing closing brace in reference started in position 6' pound.log"
at_fn_check_prepare_trace "experr.at:93"
( $at_check_trace; fgrep -q 'pound: path "/echo%{11bar": missing closing brace in reference started in position 6' pound.log
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/experr.at:93"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/experr.at:95:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		SetPath \"/echo%qbar\"
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /foo
end

500
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "experr.at:95"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		SetPath "/echo%qbar"
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /foo
end

500
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/experr.at:95"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/experr.at:112: fgrep -q 'pound: path \"/echo%qbar\": unescaped % character in position 6' pound.log"
at_fn_check_prepare_trace "experr.at:112"
( $at_check_trace; fgrep -q 'pound: path "/echo%qbar": unescaped % character in position 6' pound.log
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/experr.at:112"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/experr.at:114:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Rewrite
			Header \"X-Foo: (.*)\"
			Header \"X-Bar: (.*)\"
			SetPath \"/echo/\$1(1\"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /foo
X-Foo: bar
X-Bar: quux
end

500
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "experr.at:114"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Rewrite
			Header "X-Foo: (.*)"
			Header "X-Bar: (.*)"
			SetPath "/echo/$1(1"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /foo
X-Foo: bar
X-Bar: quux
end

500
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/experr.at:114"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/experr.at:137: fgrep -q 'pound: path \"/echo/\$1(1\": missing closing parenthesis in reference started in position 7' pound.log"
at_fn_check_prepare_dynamic "fgrep -q 'pound: path \"/echo/$1(1\": missing closing parenthesis in reference started in position 7' pound.log" "experr.at:137"
( $at_check_trace; fgrep -q 'pound: path "/echo/$1(1": missing closing parenthesis in reference started in position 7' pound.log
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/experr.at:137"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/experr.at:139:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Rewrite
			Header \"X-Foo: (.*)\"
			Header \"X-Bar: (.*)\"
			SetPath \"/echo/\${1(1}\"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /foo
X-Foo: bar
X-Bar: quux
end

500
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'a ${...} parameter expansion' "experr.at:139"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Rewrite
			Header "X-Foo: (.*)"
			Header "X-Bar: (.*)"
			SetPath "/echo/${1(1}"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /foo
X-Foo: bar
X-Bar: quux
end

500
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/experr.at:139"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/experr.at:162: fgrep -q 'pound: path \"/echo/\${1(1}\": missing closing parenthesis in reference started in position 7' pound.log"
at_fn_check_prepare_notrace 'a ${...} parameter expansion' "experr.at:162"
( $at_check_trace; fgrep -q 'pound: path "/echo/${1(1}": missing closing parenthesis in reference started in position 7' pound.log
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/experr.at:162"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_37
#AT_START_38
at_fn_group_banner 38 'backref.at:16' \
  "Multiple back references" "                       " 6
at_xfail=no
(
  printf "%s\n" "38. $at_setup_line: testing $at_desc ..."
  $at_traceon



{ set +x
printf "%s\n" "$at_srcdir/backref.at:19:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Rewrite
			Header \"X-A: (.*)\"
			Header \"X-B: (.*)\"
			Header \"X-C: (.*)\"
			Header \"X-D: (.*)\"
			Header \"X-E: (.*)\"
			Header \"X-F: (.*)\"
			Header \"X-G: (.*)\"
			Header \"X-H: (.*)\"
			Header \"X-I: (.*)\"
			SetPath \"/echo/\$1/\$1(1)/\$1(2)/\$1(3)/\$1(4)/\$1(5)/\$1(6)/\$1(7)\"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /foo
X-A: a
X-B: b
X-C: c
X-D: d
X-E: e
X-F: f
X-G: g
X-H: h
X-I: i
end

200
x-orig-uri: /echo/i/h/g/f/e/d/c/b
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "backref.at:19"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Rewrite
			Header "X-A: (.*)"
			Header "X-B: (.*)"
			Header "X-C: (.*)"
			Header "X-D: (.*)"
			Header "X-E: (.*)"
			Header "X-F: (.*)"
			Header "X-G: (.*)"
			Header "X-H: (.*)"
			Header "X-I: (.*)"
			SetPath "/echo/$1/$1(1)/$1(2)/$1(3)/$1(4)/$1(5)/$1(6)/$1(7)"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /foo
X-A: a
X-B: b
X-C: c
X-D: d
X-E: e
X-F: f
X-G: g
X-H: h
X-I: i
end

200
x-orig-uri: /echo/i/h/g/f/e/d/c/b
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/backref.at:19"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/backref.at:57:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Rewrite
			Header \"X-A: (.*)\"
			Header \"X-B: (.*)\"
			Header \"X-C: (.*)\"
			Header \"X-D: (.*)\"
			Header \"X-E: (.*)\"
			Header \"X-F: (.*)\"
			Header \"X-G: (.*)\"
			Header \"X-H: (.*)\"
			Header \"X-I: (.*)\"
			SetPath \"/echo/\$1/\$1(1)/\$1(2)/\$1(3)/\$1(4)/\$1(5)/\$1(6)/\$1(7)/\$1(8)\"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /foo
X-A: a
X-B: b
X-C: c
X-D: d
X-E: e
X-F: f
X-G: g
X-H: h
X-I: i
end

500
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "backref.at:57"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Rewrite
			Header "X-A: (.*)"
			Header "X-B: (.*)"
			Header "X-C: (.*)"
			Header "X-D: (.*)"
			Header "X-E: (.*)"
			Header "X-F: (.*)"
			Header "X-G: (.*)"
			Header "X-H: (.*)"
			Header "X-I: (.*)"
			SetPath "/echo/$1/$1(1)/$1(2)/$1(3)/$1(4)/$1(5)/$1(6)/$1(7)/$1(8)"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /foo
X-A: a
X-B: b
X-C: c
X-D: d
X-E: e
X-F: f
X-G: g
X-H: h
X-I: i
end

500
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/backref.at:57"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/backref.at:94: fgrep -q 'pound: path \"/echo/\$1/\$1(1)/\$1(2)/\$1(3)/\$1(4)/\$1(5)/\$1(6)/\$1(7)/\$1(8)\" refers to non-existing group \$1(8)' pound.log"
at_fn_check_prepare_dynamic "fgrep -q 'pound: path \"/echo/$1/$1(1)/$1(2)/$1(3)/$1(4)/$1(5)/$1(6)/$1(7)/$1(8)\" refers to non-existing group $1(8)' pound.log" "backref.at:94"
( $at_check_trace; fgrep -q 'pound: path "/echo/$1/$1(1)/$1(2)/$1(3)/$1(4)/$1(5)/$1(6)/$1(7)/$1(8)" refers to non-existing group $1(8)' pound.log
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/backref.at:94"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_38
#AT_START_39
at_fn_group_banner 39 'chgvis.at:16' \
  "Visibility of changes" "                          " 6
at_xfail=no
(
  printf "%s\n" "39. $at_setup_line: testing $at_desc ..."
  $at_traceon



{ set +x
printf "%s\n" "$at_srcdir/chgvis.at:19:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Rewrite
			SetURL \"/other\"
			SetPath \"/echo%[path]\"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /one
end

200
x-orig-uri: /echo/other
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "chgvis.at:19"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Rewrite
			SetURL "/other"
			SetPath "/echo%[path]"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /one
end

200
x-orig-uri: /echo/other
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/chgvis.at:19"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_39
#AT_START_40
at_fn_group_banner 40 'rwchain.at:16' \
  "Chained rewrites" "                               " 6
at_xfail=no
(
  printf "%s\n" "40. $at_setup_line: testing $at_desc ..."
  $at_traceon



{ set +x
printf "%s\n" "$at_srcdir/rwchain.at:19:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Rewrite
			URL -beg \"/echo/foo\"
			SetHeader \"X-Branch: 1\"
		Else
			URL -beg \"/echo/bar\"
			SetHeader \"X-Branch: 2\"
		Else
			Match And
				URL -beg \"/echo/baz\"
				Header -re \"X-Pass:[[:space:]]+ok\"
			End
			SetHeader \"X-Branch: 3\"
		Else
			SetHeader \"X-Branch: 4\"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo/bar
end

200
x-orig-header-x-branch: 1
end

GET /echo/bar/foo
end

200
x-orig-header-x-branch: 2
end

GET /echo/baz
X-Pass: ok
end

200
x-orig-header-x-branch: 3
end

GET /echo/baz
X-Pass: no
end

200
x-orig-header-x-branch: 4
end

GET /echo/baz
end

200
x-orig-header-x-branch: 4
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "rwchain.at:19"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Rewrite
			URL -beg "/echo/foo"
			SetHeader "X-Branch: 1"
		Else
			URL -beg "/echo/bar"
			SetHeader "X-Branch: 2"
		Else
			Match And
				URL -beg "/echo/baz"
				Header -re "X-Pass:[[:space:]]+ok"
			End
			SetHeader "X-Branch: 3"
		Else
			SetHeader "X-Branch: 4"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo/bar
end

200
x-orig-header-x-branch: 1
end

GET /echo/bar/foo
end

200
x-orig-header-x-branch: 2
end

GET /echo/baz
X-Pass: ok
end

200
x-orig-header-x-branch: 3
end

GET /echo/baz
X-Pass: no
end

200
x-orig-header-x-branch: 4
end

GET /echo/baz
end

200
x-orig-header-x-branch: 4
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/rwchain.at:19"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_40
#AT_START_41
at_fn_group_banner 41 'resprw.at:17' \
  "Rewrite response headers" "                       " 7
at_xfail=no
(
  printf "%s\n" "41. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/resprw.at:19:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Rewrite response
			Header \"Content-Type: text/(.+)\"
			SetHeader \"X-Content-SubType: \$1\"
		Else
			Header \"Content-Type: application/(.+)\"
			SetHeader \"X-App: \$1\"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.net
Content-type: text/plain
end

200
x-content-subtype: plain
end

GET /echo/foo
Host: example.net
Content-type: application/tar
end

200
x-app: tar
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "resprw.at:19"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Rewrite response
			Header "Content-Type: text/(.+)"
			SetHeader "X-Content-SubType: $1"
		Else
			Header "Content-Type: application/(.+)"
			SetHeader "X-App: $1"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.net
Content-type: text/plain
end

200
x-content-subtype: plain
end

GET /echo/foo
Host: example.net
Content-type: application/tar
end

200
x-app: tar
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/resprw.at:19"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/resprw.at:54:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Rewrite response
			SetHeader \"X-My-Host: %[host]\"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.net
end

200
x-my-host: example.net
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "resprw.at:54"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Rewrite response
			SetHeader "X-My-Host: %[host]"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.net
end

200
x-my-host: example.net
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/resprw.at:54"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/resprw.at:75:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Host -re \"([^:]+)(:.*)?\"
		Rewrite response
			SetHeader \"X-My-Host: \$1\"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.net
end

200
x-my-host: example.net
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "resprw.at:75"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Host -re "([^:]+)(:.*)?"
		Rewrite response
			SetHeader "X-My-Host: $1"
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.net
end

200
x-my-host: example.net
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/resprw.at:75"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_41
#AT_START_42
at_fn_group_banner 42 'sessip.at:16' \
  "Session: IP" "                                    " 8
at_xfail=no
(
  printf "%s\n" "42. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/sessip.at:18:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Session
			Type IP
			TTL 300
		End
		Backend
			Address
			Port
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
stats samples=100 min=0 max=100

GET /echo/foo
end

200
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "sessip.at:18"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Session
			Type IP
			TTL 300
		End
		Backend
			Address
			Port
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
stats samples=100 min=0 max=100

GET /echo/foo
end

200
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sessip.at:18"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_42
#AT_START_43
at_fn_group_banner 43 'sessauth.at:16' \
  "Session: Basic Auth" "                            " 8
at_xfail=no
(
  printf "%s\n" "43. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/sessauth.at:18:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Session
			Type Basic
			TTL 300
		End
		Backend
			Address
			Port
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
stats samples=100 min=0 max=100

GET /echo/foo
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
end

200
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "sessauth.at:18"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Session
			Type Basic
			TTL 300
		End
		Backend
			Address
			Port
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
stats samples=100 min=0 max=100

GET /echo/foo
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
end

200
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sessauth.at:18"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_43
#AT_START_44
at_fn_group_banner 44 'sesshdr.at:16' \
  "Session: Header" "                                " 8
at_xfail=no
(
  printf "%s\n" "44. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/sesshdr.at:18:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Session
			Type Header
			TTL 300
			ID  \"X-Session\"
		End
		Backend
			Address
			Port
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
stats samples=100 min=0 max=100

GET /echo/foo
X-Session: 1
end

200
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "sesshdr.at:18"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Session
			Type Header
			TTL 300
			ID  "X-Session"
		End
		Backend
			Address
			Port
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
stats samples=100 min=0 max=100

GET /echo/foo
X-Session: 1
end

200
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sesshdr.at:18"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_44
#AT_START_45
at_fn_group_banner 45 'sessparm.at:16' \
  "Session: Parameter" "                             " 8
at_xfail=no
(
  printf "%s\n" "45. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/sessparm.at:18:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Session
			Type Parm
			TTL 300
		End
		Backend
			Address
			Port
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
stats samples=100 min=0 max=100

GET /echo/foo;session
end

200
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "sessparm.at:18"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Session
			Type Parm
			TTL 300
		End
		Backend
			Address
			Port
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
stats samples=100 min=0 max=100

GET /echo/foo;session
end

200
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sessparm.at:18"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_45
#AT_START_46
at_fn_group_banner 46 'sessurl.at:16' \
  "Session: URL parameter" "                         " 8
at_xfail=no
(
  printf "%s\n" "46. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/sessurl.at:18:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Session
			Type URL
			ID \"id\"
			TTL 300
		End
		Backend
			Address
			Port
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
stats samples=100 min=0 max=100

GET /echo/foo?id=123
end

200
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "sessurl.at:18"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Session
			Type URL
			ID "id"
			TTL 300
		End
		Backend
			Address
			Port
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
stats samples=100 min=0 max=100

GET /echo/foo?id=123
end

200
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sessurl.at:18"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_46
#AT_START_47
at_fn_group_banner 47 'sesscookie.at:16' \
  "Session: Cookie" "                                " 8
at_xfail=no
(
  printf "%s\n" "47. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/sesscookie.at:18:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Session
			Type Cookie
			TTL 300
			ID  \"session\"
		End
		Backend
			Address
			Port
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
stats samples=100 min=0 max=100

GET /echo/foo
Cookie: theme=light; session=123
end

200
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "sesscookie.at:18"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Session
			Type Cookie
			TTL 300
			ID  "session"
		End
		Backend
			Address
			Port
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
stats samples=100 min=0 max=100

GET /echo/foo
Cookie: theme=light; session=123
end

200
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sesscookie.at:18"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_47
#AT_START_48
at_fn_group_banner 48 'addheader.at:16' \
  "AddHeader" "                                      " 9
at_xfail=no
(
  printf "%s\n" "48. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/addheader.at:18:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	AddHeader \"X-Foo: bar\"
	AddHeader \"X-Passed-Through: pound\"
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/X
end

200
X-Orig-Header-X-Foo: bar
X-Orig-Header-X-Passed-Through: pound
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "addheader.at:18"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	AddHeader "X-Foo: bar"
	AddHeader "X-Passed-Through: pound"
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/X
end

200
X-Orig-Header-X-Foo: bar
X-Orig-Header-X-Passed-Through: pound
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/addheader.at:18"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_48
#AT_START_49
at_fn_group_banner 49 'headrequire.at:16' \
  "HeadRequire" "                                    " 9
at_xfail=no
(
  printf "%s\n" "49. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/headrequire.at:18:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
IgnoreCase true
ListenHTTP
	Service
		HeadRequire \"Host:[[:space:]]*example.org\"
		Backend
			Address
			Port
		End
	End
	Service
		HeadRequire \"Host:[[:space:]]*example.com\"
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.org
end

200
x-backend-number: 0
end

GET /echo/foo
Host: example.com
end

200
x-backend-number: 1
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "headrequire.at:18"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
IgnoreCase true
ListenHTTP
	Service
		HeadRequire "Host:[[:space:]]*example.org"
		Backend
			Address
			Port
		End
	End
	Service
		HeadRequire "Host:[[:space:]]*example.com"
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.org
end

200
x-backend-number: 0
end

GET /echo/foo
Host: example.com
end

200
x-backend-number: 1
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/headrequire.at:18"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_49
#AT_START_50
at_fn_group_banner 50 'headrem.at:16' \
  "HeadRemove" "                                     " 9
at_xfail=no
(
  printf "%s\n" "50. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/headrem.at:18:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	HeadRemove \"X-Foo-.*:.*\"
	HeadRemove \"X-Bar: bar\"
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/
X-Foo-One: one
X-Foo-Two: twp
X-Fooer: Quxer
X-Bar: bar
end

200
-x-orig-header-foo-one: one
-x-orig-header-foo-two: two
-x-orig-header-x-bar: bar
x-orig-header-X-Fooer: Quxer
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "headrem.at:18"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	HeadRemove "X-Foo-.*:.*"
	HeadRemove "X-Bar: bar"
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/
X-Foo-One: one
X-Foo-Two: twp
X-Fooer: Quxer
X-Bar: bar
end

200
-x-orig-header-foo-one: one
-x-orig-header-foo-two: two
-x-orig-header-x-bar: bar
x-orig-header-X-Fooer: Quxer
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/headrem.at:18"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/headrem.at:44:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	HeadRemove \"X-Foo-.*:.*\"
	HeadRemove \"X-Bar: bar\"
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/
X-Foo-One: one
X-Foo-Two: twp
X-Fooer: Quxer
X-Bar: baz
end

200
-x-orig-header-foo-one: one
-x-orig-header-foo-two: two
x-orig-header-x-bar: baz
x-orig-header-X-Fooer: Quxer
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "headrem.at:44"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	HeadRemove "X-Foo-.*:.*"
	HeadRemove "X-Bar: bar"
	Service
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/
X-Foo-One: one
X-Foo-Two: twp
X-Fooer: Quxer
X-Bar: baz
end

200
-x-orig-header-foo-one: one
-x-orig-header-foo-two: two
x-orig-header-x-bar: baz
x-orig-header-X-Fooer: Quxer
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/headrem.at:44"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_50
#AT_START_51
at_fn_group_banner 51 'headdeny.at:16' \
  "HeadDeny" "                                       " 9
at_xfail=no
(
  printf "%s\n" "51. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/headdeny.at:18:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		HeadDeny \"Host:[[:space:]]*example.org\"
		Backend
			Address
			Port
		End
	End
	Service
		HeadDeny \"Host:[[:space:]]*example.com\"
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.org
end

200
x-backend-number: 1
end

GET /echo/foo
Host: example.com
end

200
x-backend-number: 0
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "headdeny.at:18"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		HeadDeny "Host:[[:space:]]*example.org"
		Backend
			Address
			Port
		End
	End
	Service
		HeadDeny "Host:[[:space:]]*example.com"
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo
Host: example.org
end

200
x-backend-number: 1
end

GET /echo/foo
Host: example.com
end

200
x-backend-number: 0
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/headdeny.at:18"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_51
#AT_START_52
at_fn_group_banner 52 'balancing.at:16' \
  "Request Balancing" "                              " 10
at_xfail=no
(
  printf "%s\n" "52. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/balancing.at:18:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Balancer iwrr
		Backend
			Address
			Port
		End
		Backend
			Address
			Port
		End
		Backend
			Address
			Port
		End
		Backend
			Address
			Port
		End
		Backend
			Address
			Port
		End
		Backend
			Address
			Port
		End
		Backend
			Address
			Port
		End
		Backend
			Address
			Port
		End
		Backend
			Address
			Port
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
stats samples=1000 avg=100 stddev=0

GET /echo/foo
end

200
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "balancing.at:18"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Balancer iwrr
		Backend
			Address
			Port
		End
		Backend
			Address
			Port
		End
		Backend
			Address
			Port
		End
		Backend
			Address
			Port
		End
		Backend
			Address
			Port
		End
		Backend
			Address
			Port
		End
		Backend
			Address
			Port
		End
		Backend
			Address
			Port
		End
		Backend
			Address
			Port
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
stats samples=1000 avg=100 stddev=0

GET /echo/foo
end

200
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/balancing.at:18"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_52
#AT_START_53
at_fn_group_banner 53 'prio.at:16' \
  "Backend Priorities" "                             " 10
at_xfail=no
(
  printf "%s\n" "53. $at_setup_line: testing $at_desc ..."
  $at_traceon


{ set +x
printf "%s\n" "$at_srcdir/prio.at:18:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Balancer iwrr
		Backend
			Address
			Port
			Priority 0
		End
		Backend
			Address
			Port
			Priority 8
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
#
# Let N be the number of backends and Wi weight (priority) of the i-th
# backend.  Then, assuming 0-based weights, number of samples necessary
# to finish a round-robin cycle is N+Sum(W).  Number of requests served
# by backend j during the cycle is
#
#                    Wj + 1
#                  ----------
#                  N + Sum(W)
#
# In this test, N=2, Sum(W)=8, so that:
stats samples=10 index=1 avg=0.9

GET /echo/foo
end

200
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "prio.at:18"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Balancer iwrr
		Backend
			Address
			Port
			Priority 0
		End
		Backend
			Address
			Port
			Priority 8
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
#
# Let N be the number of backends and Wi weight (priority) of the i-th
# backend.  Then, assuming 0-based weights, number of samples necessary
# to finish a round-robin cycle is N+Sum(W).  Number of requests served
# by backend j during the cycle is
#
#                    Wj + 1
#                  ----------
#                  N + Sum(W)
#
# In this test, N=2, Sum(W)=8, so that:
stats samples=10 index=1 avg=0.9

GET /echo/foo
end

200
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/prio.at:18"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/prio.at:55:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Balancer iwrr
		Backend
			Address
			Port
			Priority 5
		End
		Backend
			Address
			Port
			Priority 7
		End
		Backend
			Address
			Port
			Priority 8
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
# N=2, Sum(W)=23, number of requests for backend 1 is 8/23:
stats samples=23 index=1 avg=0.348

GET /echo/foo
end

200
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "prio.at:55"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Balancer iwrr
		Backend
			Address
			Port
			Priority 5
		End
		Backend
			Address
			Port
			Priority 7
		End
		Backend
			Address
			Port
			Priority 8
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
# N=2, Sum(W)=23, number of requests for backend 1 is 8/23:
stats samples=23 index=1 avg=0.348

GET /echo/foo
end

200
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/prio.at:55"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/prio.at:87:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Balancer iwrr
		Backend
			Address
			Port
		End
		Backend
			Address
			Port
			Priority 9
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
# Default priority is 5
# N=2, Sum(W)=16
#
stats samples=16 index=1 avg=0.625

GET /echo/foo
end

200
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "prio.at:87"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
ListenHTTP
	Service
		Balancer iwrr
		Backend
			Address
			Port
		End
		Backend
			Address
			Port
			Priority 9
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
# Default priority is 5
# N=2, Sum(W)=16
#
stats samples=16 index=1 avg=0.625

GET /echo/foo
end

200
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/prio.at:87"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_53
#AT_START_54
at_fn_group_banner 54 'https.at:16' \
  "HTTPS listener" "                                 " 11
at_xfail=no
(
  printf "%s\n" "54. $at_setup_line: testing $at_desc ..."
  $at_traceon



{ set +x
printf "%s\n" "$at_srcdir/https.at:19: openssl req -new -newkey rsa:2048 -days 1 -nodes -x509 \\
 -subj \"/CN=www.example.com\" -keyout key.pem -out crt.pem || exit 77
cat crt.pem key.pem > example.pem
"
at_fn_check_prepare_notrace 'an embedded newline' "https.at:19"
( $at_check_trace; openssl req -new -newkey rsa:2048 -days 1 -nodes -x509 \
 -subj "/CN=www.example.com" -keyout key.pem -out crt.pem || exit 77
cat crt.pem key.pem > example.pem

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/https.at:19"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/https.at:27:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
Service
	Backend
		Address 127.0.0.1
		Port 8081
	End
End

ListenHTTPS
	Address 127.0.0.1
	Port 8080
	Cert \"example.pem\"
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo/bar
Host: www.example.com
end

200
x-orig-uri: /echo/foo/bar
x-orig-header-x-ssl-cipher: /TLSv1\\./
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "https.at:27"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
Service
	Backend
		Address 127.0.0.1
		Port 8081
	End
End

ListenHTTPS
	Address 127.0.0.1
	Port 8080
	Cert "example.pem"
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo/bar
Host: www.example.com
end

200
x-orig-uri: /echo/foo/bar
x-orig-header-x-ssl-cipher: /TLSv1\./
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/https.at:27"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_54
#AT_START_55
at_fn_group_banner 55 'virthost.at:16' \
  "HTTPS Virtual Hosts" "                            " 11
at_xfail=no
(
  printf "%s\n" "55. $at_setup_line: testing $at_desc ..."
  $at_traceon



{ set +x
printf "%s\n" "$at_srcdir/virthost.at:19: cat >openssl.cfg <<'_ATEOF'
[req]
distinguished_name=req
[SAN]
subjectAltName=DNS:www.example.org,DNS:example.com,DNS:www.example.com
_ATEOF


openssl req -new -newkey rsa:2048 -days 365 -nodes -x509 \\
	-subj \"/CN=www.example.org\" \\
	-extensions SAN \\
	-config openssl.cfg \\
    -keyout key.pem -out crt.pem || exit 77

cat crt.pem key.pem > example.pem
"
at_fn_check_prepare_notrace 'an embedded newline' "virthost.at:19"
( $at_check_trace; cat >openssl.cfg <<'_ATEOF'
[req]
distinguished_name=req
[SAN]
subjectAltName=DNS:www.example.org,DNS:example.com,DNS:www.example.com
_ATEOF


openssl req -new -newkey rsa:2048 -days 365 -nodes -x509 \
	-subj "/CN=www.example.org" \
	-extensions SAN \
	-config openssl.cfg \
    -keyout key.pem -out crt.pem || exit 77

cat crt.pem key.pem > example.pem

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
at_fn_check_status 0 $at_status "$at_srcdir/virthost.at:19"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/virthost.at:39:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
Service
	Header \"Host:[[:space:]]*www\\\\.example\\\\.org\"
        Backend
		Address 192.168.0.10
		Port    80
        End
End

Service
        Header \"Host:[[:space:]]*www\\\\.example\\\\.com\"
        Backend
		Address 192.168.0.11
		Port    80
        End
End

ListenHTTPS
	Address 127.0.0.1
	Port 8080
	Cert \"example.pem\"
	ClientCert 1 1
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo/bar
Host: www.example.com
end

200
x-orig-uri: /echo/foo/bar
x-backend-number: 1
end

GET /echo/foo/bar
Host: www.example.org
end

200
x-orig-uri: /echo/foo/bar
x-backend-number: 0
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "virthost.at:39"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
Service
	Header "Host:[[:space:]]*www\\.example\\.org"
        Backend
		Address 192.168.0.10
		Port    80
        End
End

Service
        Header "Host:[[:space:]]*www\\.example\\.com"
        Backend
		Address 192.168.0.11
		Port    80
        End
End

ListenHTTPS
	Address 127.0.0.1
	Port 8080
	Cert "example.pem"
	ClientCert 1 1
End

_ATEOF

cat >input <<'_ATEOF'
GET /echo/foo/bar
Host: www.example.com
end

200
x-orig-uri: /echo/foo/bar
x-backend-number: 1
end

GET /echo/foo/bar
Host: www.example.org
end

200
x-orig-uri: /echo/foo/bar
x-backend-number: 0
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/virthost.at:39"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_55
#AT_START_56
at_fn_group_banner 56 'template.at:17' \
  "Template" "                                       " 12
at_xfail=no
(
  printf "%s\n" "56. $at_setup_line: testing $at_desc ..."
  $at_traceon



# TMPL_TEST(TEMPLATE, JSON, EXCODE, STDOUT, STDERR)


cat >input.tmpl <<'_ATEOF'
test input
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/template.at:27: tmplrun input.tmpl 'null'"
at_fn_check_prepare_trace "template.at:27"
( $at_check_trace; tmplrun input.tmpl 'null'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "test input
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/template.at:27"
$at_failed && at_fn_log_failure
$at_traceon; }


cat >input.tmpl <<'_ATEOF'
test {{ . }} input
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/template.at:34: tmplrun input.tmpl '\"dot\"'"
at_fn_check_prepare_trace "template.at:34"
( $at_check_trace; tmplrun input.tmpl '"dot"'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "test dot input
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/template.at:34"
$at_failed && at_fn_log_failure
$at_traceon; }


cat >input.tmpl <<'_ATEOF'
test {{ .x }} input {{ .y }}
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/template.at:41: tmplrun input.tmpl '{\"x\":\"text\",\"y\":0}'"
at_fn_check_prepare_trace "template.at:41"
( $at_check_trace; tmplrun input.tmpl '{"x":"text","y":0}'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "test text input 0
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/template.at:41"
$at_failed && at_fn_log_failure
$at_traceon; }


cat >input.tmpl <<'_ATEOF'
test {{ .x.y.z }} input
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/template.at:48: tmplrun input.tmpl '{\"x\":{\"y\":{\"z\":\"text\",\"n\":10}, \"iota\": true }, \"y\":0}'"
at_fn_check_prepare_trace "template.at:48"
( $at_check_trace; tmplrun input.tmpl '{"x":{"y":{"z":"text","n":10}, "iota": true }, "y":0}'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "test text input
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/template.at:48"
$at_failed && at_fn_log_failure
$at_traceon; }


cat >input.tmpl <<'_ATEOF'
test
{{ .x.y }}
input
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/template.at:55: tmplrun input.tmpl '{\"x\":{\"y\": \"value\"}}'"
at_fn_check_prepare_trace "template.at:55"
( $at_check_trace; tmplrun input.tmpl '{"x":{"y": "value"}}'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "test
value
input
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/template.at:55"
$at_failed && at_fn_log_failure
$at_traceon; }


cat >input.tmpl <<'_ATEOF'
test
{{- .x.y }}
input
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/template.at:66: tmplrun input.tmpl '{\"x\":{\"y\": \"value\"}}'"
at_fn_check_prepare_trace "template.at:66"
( $at_check_trace; tmplrun input.tmpl '{"x":{"y": "value"}}'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "testvalue
input
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/template.at:66"
$at_failed && at_fn_log_failure
$at_traceon; }


cat >input.tmpl <<'_ATEOF'
test
{{ .x.y -}}
input
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/template.at:76: tmplrun input.tmpl '{\"x\":{\"y\": \"value\"}}'"
at_fn_check_prepare_trace "template.at:76"
( $at_check_trace; tmplrun input.tmpl '{"x":{"y": "value"}}'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "test
valueinput
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/template.at:76"
$at_failed && at_fn_log_failure
$at_traceon; }


cat >input.tmpl <<'_ATEOF'
test
{{- .x.y -}}
input
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/template.at:86: tmplrun input.tmpl '{\"x\":{\"y\": \"value\"}}'"
at_fn_check_prepare_trace "template.at:86"
( $at_check_trace; tmplrun input.tmpl '{"x":{"y": "value"}}'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "testvalueinput
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/template.at:86"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/template.at:95:
cat >input.tmpl <<'_ATEOF'
Heading line.
{{if gt .x 10}}
X is over 10
{{else if gt .x 5 }}
X is over 5
{{else if gt .x 3 }}
X is over 3
{{else}}
X is too small.
{{end}}
EOF
_ATEOF


tmplrun input.tmpl '{\"x\":12}' '{\"x\":10}' '{\"x\":5}' '{\"x\":3}'
"
at_fn_check_prepare_notrace 'an embedded newline' "template.at:95"
( $at_check_trace;
cat >input.tmpl <<'_ATEOF'
Heading line.
{{if gt .x 10}}
X is over 10
{{else if gt .x 5 }}
X is over 5
{{else if gt .x 3 }}
X is over 3
{{else}}
X is too small.
{{end}}
EOF
_ATEOF


tmplrun input.tmpl '{"x":12}' '{"x":10}' '{"x":5}' '{"x":3}'

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Heading line.

X is over 10

EOF
Heading line.

X is over 5

EOF
Heading line.

X is over 3

EOF
Heading line.

X is too small.

EOF
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/template.at:95"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/template.at:135:
cat >input.tmpl <<'_ATEOF'
Heading line.
{{- if gt .x 10}}
X is over 10
{{- else if gt .x 5 }}
X is over 5
{{- else if gt .x 3 }}
X is over 3
{{- else}}
X is too small.
{{- end}}
EOF
_ATEOF


tmplrun input.tmpl '{\"x\":12}' '{\"x\":10}' '{\"x\":5}' '{\"x\":3}'
"
at_fn_check_prepare_notrace 'an embedded newline' "template.at:135"
( $at_check_trace;
cat >input.tmpl <<'_ATEOF'
Heading line.
{{- if gt .x 10}}
X is over 10
{{- else if gt .x 5 }}
X is over 5
{{- else if gt .x 3 }}
X is over 3
{{- else}}
X is too small.
{{- end}}
EOF
_ATEOF


tmplrun input.tmpl '{"x":12}' '{"x":10}' '{"x":5}' '{"x":3}'

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Heading line.
X is over 10
EOF
Heading line.
X is over 5
EOF
Heading line.
X is over 3
EOF
Heading line.
X is too small.
EOF
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/template.at:135"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/template.at:167:
cat >input.tmpl <<'_ATEOF'
Heading line.
{{with .x}}Y={{.y}}{{end}}
EOF
_ATEOF

tmplrun input.tmpl 'false' '{\"x\":{\"y\":12}}'
"
at_fn_check_prepare_notrace 'an embedded newline' "template.at:167"
( $at_check_trace;
cat >input.tmpl <<'_ATEOF'
Heading line.
{{with .x}}Y={{.y}}{{end}}
EOF
_ATEOF

tmplrun input.tmpl 'false' '{"x":{"y":12}}'

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Heading line.

EOF
Heading line.
Y=12
EOF
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/template.at:167"
$at_failed && at_fn_log_failure
$at_traceon; }


{ set +x
printf "%s\n" "$at_srcdir/template.at:184:
cat >input.tmpl <<'_ATEOF'
Heading line.
{{with .x}}Y={{.y}}{{else}}Nothing{{end}}
EOF
_ATEOF

tmplrun input.tmpl 'false' '{\"x\":{\"y\":12}}'
"
at_fn_check_prepare_notrace 'an embedded newline' "template.at:184"
( $at_check_trace;
cat >input.tmpl <<'_ATEOF'
Heading line.
{{with .x}}Y={{.y}}{{else}}Nothing{{end}}
EOF
_ATEOF

tmplrun input.tmpl 'false' '{"x":{"y":12}}'

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Heading line.
Nothing
EOF
Heading line.
Y=12
EOF
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/template.at:184"
$at_failed && at_fn_log_failure
$at_traceon; }


cat >input.tmpl <<'_ATEOF'
{{range .x -}}
{{.}}
{{end -}}
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/template.at:201: tmplrun input.tmpl '{\"x\":[1,2,3,4,5]}'"
at_fn_check_prepare_trace "template.at:201"
( $at_check_trace; tmplrun input.tmpl '{"x":[1,2,3,4,5]}'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "1
2
3
4
5
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/template.at:201"
$at_failed && at_fn_log_failure
$at_traceon; }


cat >input.tmpl <<'_ATEOF'
{{range . -}}
{{.}}
{{end -}}
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/template.at:214: tmplrun input.tmpl '{\"x\":\"enim\", \"y\":\"olim\", \"a\":\"quousque\", \"var\":\"autem\"}'"
at_fn_check_prepare_trace "template.at:214"
( $at_check_trace; tmplrun input.tmpl '{"x":"enim", "y":"olim", "a":"quousque", "var":"autem"}'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "quousque
autem
enim
olim
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/template.at:214"
$at_failed && at_fn_log_failure
$at_traceon; }


cat >input.tmpl <<'_ATEOF'
{{range $counter,$value = . -}}
{{$counter}} = {{$value}}
{{end -}}
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/template.at:226: tmplrun input.tmpl '[\"a\",\"b\",\"c\",\"d\"]'"
at_fn_check_prepare_trace "template.at:226"
( $at_check_trace; tmplrun input.tmpl '["a","b","c","d"]'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "0 = a
1 = b
2 = c
3 = d
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/template.at:226"
$at_failed && at_fn_log_failure
$at_traceon; }


cat >input.tmpl <<'_ATEOF'
{{range _,$value = . -}}
{{$value}}
{{end -}}
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/template.at:238: tmplrun input.tmpl '[\"a\",\"b\",\"c\",\"d\"]'"
at_fn_check_prepare_trace "template.at:238"
( $at_check_trace; tmplrun input.tmpl '["a","b","c","d"]'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "a
b
c
d
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/template.at:238"
$at_failed && at_fn_log_failure
$at_traceon; }


cat >input.tmpl <<'_ATEOF'
{{range $counter,_ = . -}}
{{$counter}}
{{end -}}
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/template.at:250: tmplrun input.tmpl '[\"a\",\"b\",\"c\",\"d\"]'"
at_fn_check_prepare_trace "template.at:250"
( $at_check_trace; tmplrun input.tmpl '["a","b","c","d"]'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "0
1
2
3
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/template.at:250"
$at_failed && at_fn_log_failure
$at_traceon; }


cat >input.tmpl <<'_ATEOF'
{{range $counter,$value = . -}}
{{$counter}} = {{$value}}
{{end -}}
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/template.at:262: tmplrun input.tmpl '{\"x\":\"enim\", \"y\":\"olim\", \"a\":\"quousque\", \"var\":\"autem\"}'"
at_fn_check_prepare_trace "template.at:262"
( $at_check_trace; tmplrun input.tmpl '{"x":"enim", "y":"olim", "a":"quousque", "var":"autem"}'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "a = quousque
var = autem
x = enim
y = olim
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/template.at:262"
$at_failed && at_fn_log_failure
$at_traceon; }


cat >input.tmpl <<'_ATEOF'
{{range _,$value = . -}}
{{$value}}
{{end -}}
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/template.at:274: tmplrun input.tmpl '{\"x\":\"enim\", \"y\":\"olim\", \"a\":\"quousque\", \"var\":\"autem\"}'"
at_fn_check_prepare_trace "template.at:274"
( $at_check_trace; tmplrun input.tmpl '{"x":"enim", "y":"olim", "a":"quousque", "var":"autem"}'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "quousque
autem
enim
olim
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/template.at:274"
$at_failed && at_fn_log_failure
$at_traceon; }


cat >input.tmpl <<'_ATEOF'
{{range $counter,_ = . -}}
{{$counter}}
{{end -}}
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/template.at:286: tmplrun input.tmpl '{\"x\":\"enim\", \"y\":\"olim\", \"a\":\"quousque\", \"var\":\"autem\"}'"
at_fn_check_prepare_trace "template.at:286"
( $at_check_trace; tmplrun input.tmpl '{"x":"enim", "y":"olim", "a":"quousque", "var":"autem"}'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "a
var
x
y
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/template.at:286"
$at_failed && at_fn_log_failure
$at_traceon; }


cat >input.tmpl <<'_ATEOF'
{{define "test1"}}Test1: {{.}}{{end -}}
{{define "test2"}}Test2: {{template "test1" .}}{{end -}}
{{template "test2" .x}}
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/template.at:298: tmplrun input.tmpl '{\"x\":\"quia absurdum\"}'"
at_fn_check_prepare_trace "template.at:298"
( $at_check_trace; tmplrun input.tmpl '{"x":"quia absurdum"}'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "Test2: Test1: quia absurdum
" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/template.at:298"
$at_failed && at_fn_log_failure
$at_traceon; }


cat >input.tmpl <<'_ATEOF'
X values:
{{range _,$v = .x -}}
{{block "name" $v -}}
v = {{.}}
{{end -}}
{{end}}
Y value:
{{block "name" .y}}
_ATEOF

{ set +x
printf "%s\n" "$at_srcdir/template.at:307: tmplrun input.tmpl '{\"x\":[\"a\",\"c\",\"e\"],\"y\":\"Y\"}'"
at_fn_check_prepare_trace "template.at:307"
( $at_check_trace; tmplrun input.tmpl '{"x":["a","c","e"],"y":"Y"}'
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
echo >>"$at_stdout"; printf "%s\n" "X values:
v = a
v = c
v = e

Y value:
v = Y

" | \
  $at_diff - "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/template.at:307"
$at_failed && at_fn_log_failure
$at_traceon; }




  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_56
#AT_START_57
at_fn_group_banner 57 'list.at:16' \
  "List" "                                           " 13
at_xfail=no
(
  printf "%s\n" "57. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >test.tmpl <<'_ATEOF'
{{define "default.core" -}}
Server time: {{ .timestamp }}
Pound version: {{ .version }}
PID: {{ .pid }}
{{with .workers -}}
Workers:
  Min:     {{ .min }}
  Max:     {{ .max }}
  Current: {{ .count }}
  Active:  {{ .active }}
Idle timeout: {{ .timeout }}
{{end}}{{ /* with */ -}}
{{end}}{{ /* define */ }}

{{define "milliseconds" -}}
{{ div . 1000000 | printf "%.2f" }}
{{- end}}

{{define "print_status" -}}
{{if .enabled}}enabled{{else}}disabled{{end -}}
{{end -}}

{{define "default" -}}

{{- /* The code below deduces the type of object passed to it by
       presence of certain attributes:

	 "listeners"  -  entire listing as requested by poundctl list
	 "services"   -  single listener as requested by poundctl list /L
			 Notice that this attribute is present in the full
			 listing as well, so presence of "listeners" should
			 be checked first.
	 "backends"   -  single service as requested by poundctl list /L/S

       otherwise, a backend listing (poundctl list /L/S/B) is assumed. */ -}}

{{if exists . "listeners" -}}
{{- /* Iterate over all listeners */ -}}
Listeners:

{{range $lno,$lstn = .listeners -}}
{{printf "%3d" $lno}}: {{block "default.print_listener" $lstn -}}
 Listener {{if .name}}"{{.name}}" {{end}}{{.protocol}}://{{.address}} {{template "print_status" .}}
 {{- /* For each listener, show all its services */ -}}
 {{block "default.print_services" .services}}
 {{- range $sno,$svc = .}}
   {{printf "%3d" $sno}}: {{block "default.print_service" $svc -}}
   Service {{if .name}}"{{.name}}" {{end}}{{template "print_status" .}}, {{.tot_pri}}
  {{- /* List each backend in service */ -}}
  {{- range $bno,$backend = .backends}}
      {{printf "%3d" $bno}}: {{block "default.print_backend" $backend -}}
       {{.type}}{{if eq .type "backend" }} {{.protocol}} {{.address}} {{.priority}} {{if .alive}}alive{{else}}dead{{end}}
     {{- else if eq .type "redirect" }} {{.code}} {{.url}}{{if .redir_req}} (redirect request){{end}}
     {{- end}} {{template "print_status" .}}
     {{- if exists . "stats"}} - {{with .stats -}}
       {{.request_count}} requests{{if gt .request_count 0}}, {{template "milliseconds" .request_time_avg}} ms avg, {{template "milliseconds" .request_time_stddev}} stddev{{end}}
       {{- end}}
     {{- end}}
   {{- end}}{{ /* block default.print_backend */ }}
  {{- end}}{{ /* iterating over backends */ }}
  {{- /* Show session type supported by the service */ }}
     Session type: {{.session_type}}
       {{- if len .sessions}}
	 {{- /* List all sessions */ }}
	 {{- range $i, $sess = .sessions}}
       {{$i}}. Session {{$sess.key}} {{$sess.backend}} {{$sess.expire}}
	 {{- end}}{{ /* ranging over sessions */ -}}
       {{end}}{{ /* if len */ }}
 {{- end}}{{ /* block default.print_service */ }}
 {{- end}}{{ /* iterating over services */ }}
 {{- end}}{{ /* block default.print_services */ }}
 {{- end}}{{ /* block default.print_listener */ }}
{{end}}{{ /* iterating over listeners */ }}
{{- if len .services}}
Global services:
{{block "default.print_services" .services}}
{{end -}}{{ /* if len .services */ }}
{{else if exists . "services" -}}
{{block "default.print_listener" .}}
{{else if exists . "backends" -}}
{{block "default.print_service" .}}
{{else -}}
{{block "default.print_backend" .}}
{{end -}}
{{end -}}{{ /* define */ }}
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/list.at:106:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
Control \"pound.ctl\"

Service \"default\"
	Backend
		Address
		Port
	End
End

ListenHTTP
	Service \"one\"
		Backend
			Address
			Port
		End
	End
	Service \"two\"
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
#
# 1. List all listeners/services/backends.
#
run poundctl -f ./pound.cfg -t ./test.tmpl
status 0
stdout
Listeners:

  0: Listener http://pound\\.ctl enabled
     0: Service enabled, 1
        0: control enabled
     Session type: NONE
  1: Listener http://127\\.0\\.0\\.1:\\d+ enabled
     0: Service \"one\" enabled, 5
        0: backend http 127\\.0\\.0\\.1:\\d+ 5 alive enabled
     Session type: NONE
     1: Service \"two\" enabled, 5
        0: backend http 127\\.0\\.0\\.1:\\d+ 5 alive enabled
     Session type: NONE

Global services:

     0: Service \"default\" enabled, 5
        0: backend http 127\\.0\\.0\\.1:\\d+ 5 alive enabled
     Session type: NONE

\$
end
end

#
# 2. List one listener.
#
run poundctl -f ./pound.cfg -t ./test.tmpl list /1
status 0
stdout
Listener http://127\\.0\\.0\\.1:\\d+ enabled
     0: Service \"one\" enabled, 5
        0: backend http 127\\.0\\.0\\.1:\\d+ 5 alive enabled
     Session type: NONE
     1: Service \"two\" enabled, 5
        0: backend http 127\\.0\\.0\\.1:\\d+ 5 alive enabled
     Session type: NONE
\$
end
end

#
# 3. List one service.
#
run poundctl -f ./pound.cfg -t ./test.tmpl list /1/1
status 0
stdout
Service \"two\" enabled, 5
        0: backend http 127\\.0\\.0\\.1:\\d+ 5 alive enabled
     Session type: NONE
\$
end
end

#
# 4. List one service by name.
#
run poundctl -f ./pound.cfg -t ./test.tmpl list /1/two
status 0
stdout
Service \"two\" enabled, 5
        0: backend http 127\\.0\\.0\\.1:\\d+ 5 alive enabled
     Session type: NONE
\$
end
end

#
# 5. List global service.
#
run poundctl -f ./pound.cfg -t ./test.tmpl list /-/0
status 0
stdout
Service \"default\" enabled, 5
        0: backend http 127\\.0\\.0\\.1:\\d+ 5 alive enabled
     Session type: NONE
\$
end
end

#
# 6. List global service by name.
#
run poundctl -f ./pound.cfg -t ./test.tmpl list /-/default
status 0
stdout
Service \"default\" enabled, 5
        0: backend http 127\\.0\\.0\\.1:\\d+ 5 alive enabled
     Session type: NONE
\$
end
end

#
# 7. List one backend.
#
run poundctl -f ./pound.cfg -t ./test.tmpl list /1/two/0
status 0
stdout
backend http 127\\.0\\.0\\.1:\\d+ 5 alive enabled
\$
end
end

#
# 8. Request specific template.
#
run poundctl -f ./pound.cfg -t ./test.tmpl -T default.core
status 0
stdout
Server time: \\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{6}
Pound version: 4.10
PID: \\d+
Workers:
  Min:     \\d+
  Max:     \\d+
  Current: \\d+
  Active:  \\d+
Idle timeout: \\d+
\$
end
end

_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "list.at:106"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
Control "pound.ctl"

Service "default"
	Backend
		Address
		Port
	End
End

ListenHTTP
	Service "one"
		Backend
			Address
			Port
		End
	End
	Service "two"
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
#
# 1. List all listeners/services/backends.
#
run poundctl -f ./pound.cfg -t ./test.tmpl
status 0
stdout
Listeners:

  0: Listener http://pound\.ctl enabled
     0: Service enabled, 1
        0: control enabled
     Session type: NONE
  1: Listener http://127\.0\.0\.1:\d+ enabled
     0: Service "one" enabled, 5
        0: backend http 127\.0\.0\.1:\d+ 5 alive enabled
     Session type: NONE
     1: Service "two" enabled, 5
        0: backend http 127\.0\.0\.1:\d+ 5 alive enabled
     Session type: NONE

Global services:

     0: Service "default" enabled, 5
        0: backend http 127\.0\.0\.1:\d+ 5 alive enabled
     Session type: NONE

$
end
end

#
# 2. List one listener.
#
run poundctl -f ./pound.cfg -t ./test.tmpl list /1
status 0
stdout
Listener http://127\.0\.0\.1:\d+ enabled
     0: Service "one" enabled, 5
        0: backend http 127\.0\.0\.1:\d+ 5 alive enabled
     Session type: NONE
     1: Service "two" enabled, 5
        0: backend http 127\.0\.0\.1:\d+ 5 alive enabled
     Session type: NONE
$
end
end

#
# 3. List one service.
#
run poundctl -f ./pound.cfg -t ./test.tmpl list /1/1
status 0
stdout
Service "two" enabled, 5
        0: backend http 127\.0\.0\.1:\d+ 5 alive enabled
     Session type: NONE
$
end
end

#
# 4. List one service by name.
#
run poundctl -f ./pound.cfg -t ./test.tmpl list /1/two
status 0
stdout
Service "two" enabled, 5
        0: backend http 127\.0\.0\.1:\d+ 5 alive enabled
     Session type: NONE
$
end
end

#
# 5. List global service.
#
run poundctl -f ./pound.cfg -t ./test.tmpl list /-/0
status 0
stdout
Service "default" enabled, 5
        0: backend http 127\.0\.0\.1:\d+ 5 alive enabled
     Session type: NONE
$
end
end

#
# 6. List global service by name.
#
run poundctl -f ./pound.cfg -t ./test.tmpl list /-/default
status 0
stdout
Service "default" enabled, 5
        0: backend http 127\.0\.0\.1:\d+ 5 alive enabled
     Session type: NONE
$
end
end

#
# 7. List one backend.
#
run poundctl -f ./pound.cfg -t ./test.tmpl list /1/two/0
status 0
stdout
backend http 127\.0\.0\.1:\d+ 5 alive enabled
$
end
end

#
# 8. Request specific template.
#
run poundctl -f ./pound.cfg -t ./test.tmpl -T default.core
status 0
stdout
Server time: \d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{6}
Pound version: 4.10
PID: \d+
Workers:
  Min:     \d+
  Max:     \d+
  Current: \d+
  Active:  \d+
Idle timeout: \d+
$
end
end

_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/list.at:106"
$at_failed && at_fn_log_failure
$at_traceon; }

  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_57
#AT_START_58
at_fn_group_banner 58 'disable.at:16' \
  "Disable/Enable" "                                 " 13
at_xfail=no
(
  printf "%s\n" "58. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >test.tmpl <<'_ATEOF'
{{define "default" -}}

{{define "print_status" -}}
{{if .enabled}}enabled{{else}}disabled{{end -}}
{{end -}}

{{- /* Iterate over all listeners */ -}}
Listeners:

{{range $lno,$lstn = .listeners -}}
{{printf "%3d" $lno}}: {{block "default.print_listener" $lstn -}}
 Listener {{if .name}}"{{.name}}" {{end}}{{.protocol}}://{{.address}} {{template "print_status" .}}
 {{- /* For each listener, show all its services */ -}}
 {{block "default.print_services" .services}}
 {{- range $sno,$svc = .}}
   {{printf "%3d" $sno}}: {{block "default.print_service" $svc -}}
   Service {{if .name}}"{{.name}}" {{end}}{{template "print_status" .}}
  {{- /* List each backend in service */ -}}
  {{- range $bno,$backend = .backends}}
      {{printf "%3d" $bno}}: {{block "default.print_backend" $backend -}}
       {{.type}}{{if eq .type "backend" }} {{.protocol}} {{.address}} {{.priority}} {{if .alive}}alive{{else}}dead{{end}}
     {{- else if eq .type "redirect" }} {{.code}} {{.url}}{{if .redir_req}} (redirect request){{end}}
     {{- end}} {{template "print_status" . -}}
   {{- end}}{{ /* block default.print_backend */ }}
  {{- end}}{{ /* iterating over backends */ }}
 {{- end}}{{ /* block default.print_service */ }}
 {{- end}}{{ /* iterating over services */ }}
 {{- end}}{{ /* block default.print_services */ }}
 {{- end}}{{ /* block default.print_listener */ }}
{{end -}}{{ /* iterating over listeners */ }}
{{end -}}{{ /* define */ }}
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/disable.at:52:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
Control \"pound.ctl\"
ListenHTTP
	Service \"one\"
		Backend
			Address
			Port
		End
	End
	Service \"two\"
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'

#
# 1. Disable single backend
#
run poundctl -f ./pound.cfg -t ./test.tmpl disable /1/0/0
status 0
end

run poundctl -f ./pound.cfg -t ./test.tmpl list
stdout
Listeners:

  0: Listener http://pound\\.ctl enabled
     0: Service enabled
        0: control enabled
  1: Listener http://127\\.0\\.0\\.1:\\d+ enabled
     0: Service \"one\" enabled
        0: backend http 127\\.0\\.0\\.1:\\d+ 5 alive disabled
     1: Service \"two\" enabled
        0: backend http 127\\.0\\.0\\.1:\\d+ 5 alive enabled

end
end

#
# 2. Enable it back.  Do it using service name instead of index.
#
run poundctl -f ./pound.cfg -t ./test.tmpl enable /1/one/0
status 0
end

run poundctl -f ./pound.cfg -t ./test.tmpl list
status 0
stdout
Listeners:

  0: Listener http://pound\\.ctl enabled
     0: Service enabled
        0: control enabled
  1: Listener http://127\\.0\\.0\\.1:\\d+ enabled
     0: Service \"one\" enabled
        0: backend http 127\\.0\\.0\\.1:\\d+ 5 alive enabled
     1: Service \"two\" enabled
        0: backend http 127\\.0\\.0\\.1:\\d+ 5 alive enabled

end
end

#
# 3. Attempt to enable non-existing backend.
#
run poundctl -f ./pound.cfg -t ./test.tmpl enable /1/three/0
status 1
stderr
poundctl: Not Found
end
end

#
# 4. Disable ae service.
#
run poundctl -f ./pound.cfg -t ./test.tmpl disable /1/two
status 0
end

run poundctl -f ./pound.cfg -t ./test.tmpl list
status 0
stdout
Listeners:

  0: Listener http://pound\\.ctl enabled
     0: Service enabled
        0: control enabled
  1: Listener http://127\\.0\\.0\\.1:\\d+ enabled
     0: Service \"one\" enabled
        0: backend http 127\\.0\\.0\\.1:\\d+ 5 alive enabled
     1: Service \"two\" disabled
        0: backend http 127\\.0\\.0\\.1:\\d+ 5 alive enabled

end
end

#
# 5. Disable listener.
#
run poundctl -f ./pound.cfg -t ./test.tmpl disable /1
status 0
end

run poundctl -f ./pound.cfg -t ./test.tmpl list
status 0
stdout
Listeners:

  0: Listener http://pound\\.ctl enabled
     0: Service enabled
        0: control enabled
  1: Listener http://127\\.0\\.0\\.1:\\d+ disabled
     0: Service \"one\" enabled
        0: backend http 127\\.0\\.0\\.1:\\d+ 5 alive enabled
     1: Service \"two\" disabled
        0: backend http 127\\.0\\.0\\.1:\\d+ 5 alive enabled

end
end


_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "disable.at:52"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
Control "pound.ctl"
ListenHTTP
	Service "one"
		Backend
			Address
			Port
		End
	End
	Service "two"
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'

#
# 1. Disable single backend
#
run poundctl -f ./pound.cfg -t ./test.tmpl disable /1/0/0
status 0
end

run poundctl -f ./pound.cfg -t ./test.tmpl list
stdout
Listeners:

  0: Listener http://pound\.ctl enabled
     0: Service enabled
        0: control enabled
  1: Listener http://127\.0\.0\.1:\d+ enabled
     0: Service "one" enabled
        0: backend http 127\.0\.0\.1:\d+ 5 alive disabled
     1: Service "two" enabled
        0: backend http 127\.0\.0\.1:\d+ 5 alive enabled

end
end

#
# 2. Enable it back.  Do it using service name instead of index.
#
run poundctl -f ./pound.cfg -t ./test.tmpl enable /1/one/0
status 0
end

run poundctl -f ./pound.cfg -t ./test.tmpl list
status 0
stdout
Listeners:

  0: Listener http://pound\.ctl enabled
     0: Service enabled
        0: control enabled
  1: Listener http://127\.0\.0\.1:\d+ enabled
     0: Service "one" enabled
        0: backend http 127\.0\.0\.1:\d+ 5 alive enabled
     1: Service "two" enabled
        0: backend http 127\.0\.0\.1:\d+ 5 alive enabled

end
end

#
# 3. Attempt to enable non-existing backend.
#
run poundctl -f ./pound.cfg -t ./test.tmpl enable /1/three/0
status 1
stderr
poundctl: Not Found
end
end

#
# 4. Disable ae service.
#
run poundctl -f ./pound.cfg -t ./test.tmpl disable /1/two
status 0
end

run poundctl -f ./pound.cfg -t ./test.tmpl list
status 0
stdout
Listeners:

  0: Listener http://pound\.ctl enabled
     0: Service enabled
        0: control enabled
  1: Listener http://127\.0\.0\.1:\d+ enabled
     0: Service "one" enabled
        0: backend http 127\.0\.0\.1:\d+ 5 alive enabled
     1: Service "two" disabled
        0: backend http 127\.0\.0\.1:\d+ 5 alive enabled

end
end

#
# 5. Disable listener.
#
run poundctl -f ./pound.cfg -t ./test.tmpl disable /1
status 0
end

run poundctl -f ./pound.cfg -t ./test.tmpl list
status 0
stdout
Listeners:

  0: Listener http://pound\.ctl enabled
     0: Service enabled
        0: control enabled
  1: Listener http://127\.0\.0\.1:\d+ disabled
     0: Service "one" enabled
        0: backend http 127\.0\.0\.1:\d+ 5 alive enabled
     1: Service "two" disabled
        0: backend http 127\.0\.0\.1:\d+ 5 alive enabled

end
end


_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/disable.at:52"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_58
#AT_START_59
at_fn_group_banner 59 'sessctl.at:16' \
  "Session control" "                                " 13
at_xfail=no
(
  printf "%s\n" "59. $at_setup_line: testing $at_desc ..."
  $at_traceon


cat >test.tmpl <<'_ATEOF'
{{define "milliseconds" -}}
{{ div . 1000000 | printf "%.2f" }}
{{- end}}

{{define "print_status" -}}
{{if .enabled}}enabled{{else}}disabled{{end -}}
{{end -}}

{{define "default" -}}
{{if exists . "listeners" -}}
{{- /* Iterate over all listeners */ -}}
Listeners:

{{range $lno,$lstn = .listeners -}}
{{printf "%3d" $lno}}: {{block "default.print_listener" $lstn -}}
 Listener {{if .name}}"{{.name}}" {{end}}{{.protocol}}://{{.address}} {{template "print_status" .}}
 {{- /* For each listener, show all its services */ -}}
 {{block "default.print_services" .services}}
 {{- range $sno,$svc = .}}
   {{printf "%3d" $sno}}: {{block "default.print_service" $svc -}}
   Service {{if .name}}"{{.name}}" {{end}}{{template "print_status" .}}, {{.tot_pri}}
  {{- /* List each backend in service */ -}}
  {{- range $bno,$backend = .backends}}
      {{printf "%3d" $bno}}: {{block "default.print_backend" $backend -}}
       {{.type}}{{if eq .type "backend" }} {{.protocol}} {{.address}} {{.priority}} {{if .alive}}alive{{else}}dead{{end}}
     {{- else if eq .type "redirect" }} {{.code}} {{.url}}{{if .redir_req}} (redirect request){{end}}
     {{- end}} {{template "print_status" .}}
     {{- if exists . "stats"}} - {{with .stats -}}
       {{.request_count}} requests{{if gt .request_count 0}}, {{template "milliseconds" .request_time_avg}} ms avg, {{template "milliseconds" .request_time_stddev}} stddev{{end}}
       {{- end}}
     {{- end}}
   {{- end}}{{ /* block default.print_backend */ }}
  {{- end}}{{ /* iterating over backends */ }}
  {{- /* Show session type supported by the service */ }}
     Session type: {{.session_type}}
       {{- if len .sessions}}
	 {{- /* List all sessions */ }}
	 {{- range $i, $sess = .sessions}}
       {{$i}}. Session {{$sess.key}} {{$sess.backend}} {{$sess.expire}}
	 {{- end}}{{ /* ranging over sessions */ -}}
       {{end}}{{ /* if len */ }}
 {{- end}}{{ /* block default.print_service */ }}
 {{- end}}{{ /* iterating over services */ }}
 {{- end}}{{ /* block default.print_services */ }}
 {{- end}}{{ /* block default.print_listener */ }}
{{end}}{{ /* iterating over listeners */ }}
{{- if len .services}}
Global services:
{{block "default.print_services" .services}}
{{end -}}{{ /* if len .services */ }}
{{else if exists . "services" -}}
{{block "default.print_listener" .}}
{{else if exists . "backends" -}}
{{block "default.print_service" .}}
{{else -}}
{{block "default.print_backend" .}}
{{end -}}
{{end -}}{{ /* define */ }}
_ATEOF


{ set +x
printf "%s\n" "$at_srcdir/sessctl.at:79:
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
Control \"pound.ctl\"
ListenHTTP
	Service
		Session
			Type Header
			TTL 300
			ID  \"X-Session\"
		End
		Backend
			Address
			Port
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
#
# 1. Initialize three sessions.
#
GET /echo/foo
X-Session: 1
end

200
end

GET /echo/foo
X-Session: 2
end

200
end

GET /echo/foo
X-Session: 3
end

200
end

#
# 2. Get initial listing.
#
run poundctl -f ./pound.cfg -t ./test.tmpl list /1
status 0
stdout
Listener http://127\\.0\\.0\\.1:\\d+ enabled
     0: Service enabled, 10
        0: backend http 127\\.0\\.0\\.1:\\d+ 5 alive enabled
        1: backend http 127\\.0\\.0\\.1:\\d+ 5 alive enabled
     Session type: HEADER
       0. Session 1 [01] \\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{6}
       1. Session 2 [01] \\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{6}
       2. Session 3 [01] \\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{6}
\$
end
end

#
# 3. Delete one session.
#
run poundctl -f ./pound.cfg -t ./test.tmpl delete /1/0 2
status 0
end

run poundctl -f ./pound.cfg -t ./test.tmpl list /1
status 0
stdout
Listener http://127\\.0\\.0\\.1:\\d+ enabled
     0: Service enabled, 10
        0: backend http 127\\.0\\.0\\.1:\\d+ 5 alive enabled
        1: backend http 127\\.0\\.0\\.1:\\d+ 5 alive enabled
     Session type: HEADER
       0. Session 1 [01] \\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{6}
       1. Session 3 [01] \\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{6}
\$
end
end

#
# 4. Add new session.
#
run poundctl -f ./pound.cfg -t ./test.tmpl add /1/0/1 2
status 0
end

run poundctl -f ./pound.cfg -t ./test.tmpl list /1
status 0
stdout
Listener http://127\\.0\\.0\\.1:\\d+ enabled
     0: Service enabled, 10
        0: backend http 127\\.0\\.0\\.1:\\d+ 5 alive enabled
        1: backend http 127\\.0\\.0\\.1:\\d+ 5 alive enabled
     Session type: HEADER
       0. Session 1 [01] \\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{6}
       1. Session 3 [01] \\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{6}
       2. Session 2 1 \\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{6}
\$
end
end


_ATEOF

perl \$HARNESS  --transcript xscript.log input
"
at_fn_check_prepare_notrace 'an embedded newline' "sessctl.at:79"
( $at_check_trace;
perl -v >/dev/null 2>&1 || exit 77
cat >pound.cfi <<'_ATEOF'
Control "pound.ctl"
ListenHTTP
	Service
		Session
			Type Header
			TTL 300
			ID  "X-Session"
		End
		Backend
			Address
			Port
		End
		Backend
			Address
			Port
		End
	End
End

_ATEOF

cat >input <<'_ATEOF'
#
# 1. Initialize three sessions.
#
GET /echo/foo
X-Session: 1
end

200
end

GET /echo/foo
X-Session: 2
end

200
end

GET /echo/foo
X-Session: 3
end

200
end

#
# 2. Get initial listing.
#
run poundctl -f ./pound.cfg -t ./test.tmpl list /1
status 0
stdout
Listener http://127\.0\.0\.1:\d+ enabled
     0: Service enabled, 10
        0: backend http 127\.0\.0\.1:\d+ 5 alive enabled
        1: backend http 127\.0\.0\.1:\d+ 5 alive enabled
     Session type: HEADER
       0. Session 1 [01] \d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{6}
       1. Session 2 [01] \d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{6}
       2. Session 3 [01] \d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{6}
$
end
end

#
# 3. Delete one session.
#
run poundctl -f ./pound.cfg -t ./test.tmpl delete /1/0 2
status 0
end

run poundctl -f ./pound.cfg -t ./test.tmpl list /1
status 0
stdout
Listener http://127\.0\.0\.1:\d+ enabled
     0: Service enabled, 10
        0: backend http 127\.0\.0\.1:\d+ 5 alive enabled
        1: backend http 127\.0\.0\.1:\d+ 5 alive enabled
     Session type: HEADER
       0. Session 1 [01] \d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{6}
       1. Session 3 [01] \d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{6}
$
end
end

#
# 4. Add new session.
#
run poundctl -f ./pound.cfg -t ./test.tmpl add /1/0/1 2
status 0
end

run poundctl -f ./pound.cfg -t ./test.tmpl list /1
status 0
stdout
Listener http://127\.0\.0\.1:\d+ enabled
     0: Service enabled, 10
        0: backend http 127\.0\.0\.1:\d+ 5 alive enabled
        1: backend http 127\.0\.0\.1:\d+ 5 alive enabled
     Session type: HEADER
       0. Session 1 [01] \d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{6}
       1. Session 3 [01] \d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{6}
       2. Session 2 1 \d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{6}
$
end
end


_ATEOF

perl $HARNESS  --transcript xscript.log input

) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
$at_check_filter
at_fn_diff_devnull "$at_stderr" || at_failed=:
at_fn_diff_devnull "$at_stdout" || at_failed=:
at_fn_check_status 0 $at_status "$at_srcdir/sessctl.at:79"
$at_failed && at_fn_log_failure
$at_traceon; }


  set +x
  $at_times_p && times >"$at_times_file"
) 5>&1 2>&1 7>&- | eval $at_tee_pipe
read at_status <"$at_status_file"
#AT_STOP_59
