From b0a5b08baf96aad36fc315c2dbddc0de9d2a1ac9 Mon Sep 17 00:00:00 2001 From: ezelko260 Date: Wed, 22 Jan 2020 22:12:53 +0000 Subject: [PATCH 1/3] Add header rewrite test to make sure we are not injecting end of rule characters in to an actual header This is a regression check --- .../gold/header_rewrite-l_value.gold | 16 +++++ .../header_rewrite_l_value.test.py | 62 +++++++++++++++++++ .../header_rewrite/rules/rule_l_value.conf | 21 +++++++ 3 files changed, 99 insertions(+) create mode 100644 tests/gold_tests/pluginTest/header_rewrite/gold/header_rewrite-l_value.gold create mode 100644 tests/gold_tests/pluginTest/header_rewrite/header_rewrite_l_value.test.py create mode 100644 tests/gold_tests/pluginTest/header_rewrite/rules/rule_l_value.conf diff --git a/tests/gold_tests/pluginTest/header_rewrite/gold/header_rewrite-l_value.gold b/tests/gold_tests/pluginTest/header_rewrite/gold/header_rewrite-l_value.gold new file mode 100644 index 00000000000..8c3cf6649a8 --- /dev/null +++ b/tests/gold_tests/pluginTest/header_rewrite/gold/header_rewrite-l_value.gold @@ -0,0 +1,16 @@ +`` +> GET http://www.example.com`` +> Host: www.example.com`` +> User-Agent: curl/`` +> Accept: */* +`` +< HTTP/1.1 200 OK +< Date: `` +< Age: `` +< Transfer-Encoding: chunked +< Proxy-Connection: keep-alive +< Server: ATS/`` +< X-First: First +< X-Last: Last +< +`` diff --git a/tests/gold_tests/pluginTest/header_rewrite/header_rewrite_l_value.test.py b/tests/gold_tests/pluginTest/header_rewrite/header_rewrite_l_value.test.py new file mode 100644 index 00000000000..da6d20e899e --- /dev/null +++ b/tests/gold_tests/pluginTest/header_rewrite/header_rewrite_l_value.test.py @@ -0,0 +1,62 @@ +''' +''' +# 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. + +Test.Summary = ''' +Test a basic remap of a http connection +''' + +Test.ContinueOnFail = True +# Define default ATS +ts = Test.MakeATSProcess("ts") +server = Test.MakeOriginServer("server") + +Test.testName = "" +request_header = {"headers": "GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n", "timestamp": "1469733493.993", "body": ""} +# expected response from the origin server +response_header = {"headers": "HTTP/1.1 200 OK\r\nConnection: close\r\n\r\n", "timestamp": "1469733493.993", "body": ""} + +# add response to the server dictionary +server.addResponse("sessionfile.log", request_header, response_header) +ts.Disk.records_config.update({ + 'proxy.config.diags.debug.enabled': 1, + 'proxy.config.diags.debug.tags': 'header.*', +}) + +# The following rule adds X-First and X-Last headers +ts.Setup.CopyAs('rules/rule_l_value.conf', Test.RunDirectory) + +ts.Disk.plugin_config.AddLine( + 'header_rewrite.so {0}/rule_l_value.conf'.format(Test.RunDirectory) +) +ts.Disk.remap_config.AddLine( + 'map http://www.example.com http://127.0.0.1:{0}'.format(server.Variables.Port) +) +ts.Disk.remap_config.AddLine( + 'map http://www.example.com:8080 http://127.0.0.1:{0}'.format(server.Variables.Port) +) + +# [L] test +tr = Test.AddTestRun("Header Rewrite End [L]") +tr.Processes.Default.Command = 'curl --proxy 127.0.0.1:{0} "http://www.example.com" -H "Proxy-Connection: keep-alive" --verbose'.format( + ts.Variables.port) +tr.Processes.Default.ReturnCode = 0 +tr.Processes.Default.StartBefore(server, ready=When.PortOpen(server.Variables.Port)) +tr.Processes.Default.StartBefore(Test.Processes.ts) +tr.Processes.Default.Streams.stderr = "gold/header_rewrite-l_value.gold" +tr.StillRunningAfter = server +ts.Streams.All = "gold/header_rewrite-tag.gold" diff --git a/tests/gold_tests/pluginTest/header_rewrite/rules/rule_l_value.conf b/tests/gold_tests/pluginTest/header_rewrite/rules/rule_l_value.conf new file mode 100644 index 00000000000..e80a8e4f7fa --- /dev/null +++ b/tests/gold_tests/pluginTest/header_rewrite/rules/rule_l_value.conf @@ -0,0 +1,21 @@ +# +# 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. + +cond %{SEND_RESPONSE_HDR_HOOK} + set-header X-First "First" + set-header X-Last "Last" [L] + From e56ee875ce3229c1cb6a606aa45a1a9165056b77 Mon Sep 17 00:00:00 2001 From: Evan Zelkowitz Date: Wed, 29 Jan 2020 17:32:56 -0800 Subject: [PATCH 2/3] Change the description for this test --- .../pluginTest/header_rewrite/header_rewrite_l_value.test.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/gold_tests/pluginTest/header_rewrite/header_rewrite_l_value.test.py b/tests/gold_tests/pluginTest/header_rewrite/header_rewrite_l_value.test.py index da6d20e899e..3a787166722 100644 --- a/tests/gold_tests/pluginTest/header_rewrite/header_rewrite_l_value.test.py +++ b/tests/gold_tests/pluginTest/header_rewrite/header_rewrite_l_value.test.py @@ -17,7 +17,9 @@ # limitations under the License. Test.Summary = ''' -Test a basic remap of a http connection +Test for a regression of the issue fixed in +https://github.com/apache/trafficserver/pull/5423 +Insertion of header rewrite directives in to the output ''' Test.ContinueOnFail = True From ee4494d037493595c67c0348489f08461507bc91 Mon Sep 17 00:00:00 2001 From: Evan Zelkowitz Date: Wed, 29 Jan 2020 17:44:27 -0800 Subject: [PATCH 3/3] Fix clang-format issue, apparently clang-format does not format all the test dirs as well --- .../pluginTest/header_rewrite/header_rewrite_l_value.test.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/gold_tests/pluginTest/header_rewrite/header_rewrite_l_value.test.py b/tests/gold_tests/pluginTest/header_rewrite/header_rewrite_l_value.test.py index 3a787166722..28247b02276 100644 --- a/tests/gold_tests/pluginTest/header_rewrite/header_rewrite_l_value.test.py +++ b/tests/gold_tests/pluginTest/header_rewrite/header_rewrite_l_value.test.py @@ -17,8 +17,8 @@ # limitations under the License. Test.Summary = ''' -Test for a regression of the issue fixed in -https://github.com/apache/trafficserver/pull/5423 +Test for a regression of the issue fixed in +https://github.com/apache/trafficserver/pull/5423 Insertion of header rewrite directives in to the output '''