diff --git a/tests/gold_tests/redirect/gold/redirect_log.gold b/tests/gold_tests/redirect/gold/redirect_log.gold new file mode 100644 index 00000000000..af797f3d765 --- /dev/null +++ b/tests/gold_tests/redirect/gold/redirect_log.gold @@ -0,0 +1,17 @@ +client_url=http://iwillredirect.test:PORT/redirect cache_result: code=TCP_MISS subcode=NONE +client_url=http://iwillredirect.test:PORT/redirect-relative-path cache_result: code=TCP_MISS_REDIRECT subcode=NONE +client_url=http://iwillredirect.test:PORT/redirect cache_result: code=TCP_MISS subcode=NONE +client_url=http://iwillredirect.test:PORT/redirect-relative-path-no-leading-slash cache_result: code=TCP_MISS_REDIRECT subcode=NONE +client_url=http://iwillredirect.test:PORT/redirect cache_result: code=TCP_MISS subcode=NONE +client_url=http://iwillredirect.test:PORT/redirect301 cache_result: code=TCP_MISS_REDIRECT subcode=NONE +client_url=http://iwillredirect.test:PORT/redirect cache_result: code=TCP_MISS subcode=NONE +client_url=http://iwillredirect.test:PORT/redirect302 cache_result: code=TCP_MISS_REDIRECT subcode=NONE +client_url=http://iwillredirect.test:PORT/redirect cache_result: code=TCP_MISS subcode=NONE +client_url=http://iwillredirect.test:PORT/redirect303 cache_result: code=TCP_MISS_REDIRECT subcode=NONE +client_url=http://iwillredirect.test:PORT/redirect cache_result: code=TCP_MISS subcode=NONE +client_url=http://iwillredirect.test:PORT/redirect305 cache_result: code=TCP_MISS_REDIRECT subcode=NONE +client_url=http://iwillredirect.test:PORT/redirect cache_result: code=TCP_MISS subcode=NONE +client_url=http://iwillredirect.test:PORT/redirect307 cache_result: code=TCP_MISS_REDIRECT subcode=NONE +client_url=http://iwillredirect.test:PORT/redirect cache_result: code=TCP_MISS subcode=NONE +client_url=http://iwillredirect.test:PORT/redirect308 cache_result: code=TCP_MISS_REDIRECT subcode=NONE +client_url=http://iwillredirect.test:PORT/redirect cache_result: code=TCP_MISS subcode=NONE diff --git a/tests/gold_tests/redirect/redirect.test.py b/tests/gold_tests/redirect/redirect.test.py index 318d44b3533..bd586898d08 100644 --- a/tests/gold_tests/redirect/redirect.test.py +++ b/tests/gold_tests/redirect/redirect.test.py @@ -39,6 +39,18 @@ 'proxy.config.http.redirect.actions': 'self:follow', # redirects to self are not followed by default }) +ts.Disk.logging_yaml.AddLines( + ''' +logging: + formats: + - name: custom + format: "client_url=% cache_result: code=% subcode=%" + logs: + - filename: the_log + format: custom +'''.split("\n") +) + Test.Setup.Copy(os.path.join(Test.Variables.AtsTestToolsDir, 'tcp_client.py')) redirect_request_header = {"headers": "GET /redirect HTTP/1.1\r\nHost: *\r\n\r\n", "timestamp": "5678", "body": ""} @@ -150,4 +162,15 @@ tr.Processes.Default.Streams.stdout = "gold/redirect.gold" tr.Processes.Default.ReturnCode = 0 +Test.Setup.Copy('wait_for_log.sh') + +tr = Test.AddTestRun("wait_for_log") +tr.Processes.Default.Command = ( + './wait_for_log.sh {} {}'.format( + os.path.join(ts.Variables.LOGDIR, 'the_log.log'), redirect_serv.Variables.Port + ) +) +tr.Processes.Default.Streams.stdout = "gold/redirect_log.gold" +tr.Processes.Default.ReturnCode = 0 + Test.Setup.Copy(data_path) diff --git a/tests/gold_tests/redirect/wait_for_log.sh b/tests/gold_tests/redirect/wait_for_log.sh new file mode 100755 index 00000000000..de177d9fc7f --- /dev/null +++ b/tests/gold_tests/redirect/wait_for_log.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# A bash script to wait for the log to be present and have a line for each request. Also changes URL port +# number to PORT. + +WAIT=120 # seconds +LINES=17 +LOG_FILE="$1" +PORT=$2 + +while ((WAIT > 0)) +do + if [[ -f "$LOG_FILE" ]] ; then + if (( $( wc -l < "$LOG_FILE" ) >= LINES )) ; then + sed "s/:$PORT/:PORT/" "$LOG_FILE" + exit $? + fi + fi + sleep 1 + let WAIT=WAIT-1 +done +exit 1