This is an automated email from the ASF dual-hosted git repository. paziz pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/trafficserver.git
The following commit(s) were added to refs/heads/master by this push: new 6854574 Test: autest exercising cache-control directives 6854574 is described below commit 685457438e67dc6fdb88d271040a6dc4fe70f8ed Author: Persia Aziz <per...@yahoo-inc.com> AuthorDate: Tue May 1 09:08:42 2018 -0500 Test: autest exercising cache-control directives --- tests/gold_tests/cache/cache-control.test.py | 106 +++++++++++++++++++++ .../cache/gold/cache_and_req_body-hit.gold | 11 +++ .../cache/gold/cache_and_req_body-miss.gold | 11 +++ tests/gold_tests/cache/gold/cache_hit_stale.gold | 11 +++ tests/gold_tests/cache/gold/cache_no_cache.gold | 12 +++ tests/gold_tests/cache/gold/cache_no_cc.gold | 10 ++ 6 files changed, 161 insertions(+) diff --git a/tests/gold_tests/cache/cache-control.test.py b/tests/gold_tests/cache/cache-control.test.py new file mode 100644 index 0000000..ed0f24e --- /dev/null +++ b/tests/gold_tests/cache/cache-control.test.py @@ -0,0 +1,106 @@ +''' +Test cached responses and requests with bodies +''' +# 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. + +import os +Test.Summary = ''' +Test cached responses and requests with bodies +''' + +# Needs Curl +Test.SkipUnless( + Condition.HasProgram("curl", "curl needs to be installed on system for this test to work"), + Condition.HasProgram("nc", "nc needs to be installed on system for this test to work") +) +Test.ContinueOnFail = True + +# Define default ATS +ts = Test.MakeATSProcess("ts") +server = Test.MakeOriginServer("server") + +#**testname is required** +testName = "" +request_header1 = {"headers": "GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n", "timestamp": "1469733493.993", "body": ""} +response_header1 = {"headers": "HTTP/1.1 200 OK\r\nConnection: close\r\nCache-Control: max-age=300\r\n\r\n", "timestamp": "1469733493.993", "body": "xxx"} +request_header2 = {"headers": "GET /no_cache_control HTTP/1.1\r\nHost: www.example.com\r\n\r\n", "timestamp": "1469733493.993", "body": ""} +response_header2 = {"headers": "HTTP/1.1 200 OK\r\nConnection: close\r\n\r\n", "timestamp": "1469733493.993", "body": "the flinstones"} +request_header3 = {"headers": "GET /max_age_10sec HTTP/1.1\r\nHost: www.example.com\r\n\r\n", "timestamp": "1469733493.993", "body": ""} +response_header3 = {"headers": "HTTP/1.1 200 OK\r\nConnection: close\r\nCache-Control: max-age=10,public\r\n\r\n", "timestamp": "1469733493.993", "body": "yabadabadoo"} +server.addResponse("sessionlog.json", request_header1, response_header1) +server.addResponse("sessionlog.json", request_header2, response_header2) +server.addResponse("sessionlog.json", request_header3, response_header3) + +# ATS Configuration +ts.Disk.plugin_config.AddLine('xdebug.so') +ts.Disk.records_config.update({ + 'proxy.config.diags.debug.enabled': 1, + 'proxy.config.diags.debug.tags': 'http', + 'proxy.config.http.response_via_str': 3, + 'proxy.config.http.cache.http': 1, + 'proxy.config.http.wait_for_cache': 1, +}) + +ts.Disk.remap_config.AddLine( + 'map / http://127.0.0.1:{0}'.format(server.Variables.Port) +) + +# Test 1 - 200 response and cache fill +tr = Test.AddTestRun() +tr.Processes.Default.StartBefore(server) +tr.Processes.Default.StartBefore(Test.Processes.ts, ready=1) +tr.Processes.Default.Command = 'curl -s -D - -v --ipv4 --http1.1 -H "x-debug: x-cache,via" -H "Host: www.example.com" http://localhost:{port}/max_age_10sec'.format(port=ts.Variables.port) +tr.Processes.Default.ReturnCode = 0 +tr.Processes.Default.Streams.stdout = "gold/cache_and_req_body-miss.gold" +tr.StillRunningAfter = ts + +# Test 2 - 200 cached response and using netcat +tr = Test.AddTestRun() +tr.Processes.Default.Command = "printf 'GET /max_age_10sec HTTP/1.1\r\n''x-debug: x-cache,x-cache-key,via\r\n''Host: www.example.com\r\n''\r\n'|nc 127.0.0.1 -w 1 {port}".format(port=ts.Variables.port) +tr.Processes.Default.ReturnCode = 0 +tr.Processes.Default.Streams.stdout = "gold/cache_and_req_body-hit.gold" +tr.StillRunningAfter = ts + +# Test 3 - response with no cache control, so cache-miss every time +tr = Test.AddTestRun() +tr.Processes.Default.Command = "printf 'GET /no_cache_control HTTP/1.1\r\n''x-debug: x-cache,x-cache-key,via\r\n''Host: www.example.com\r\n''\r\n'|nc 127.0.0.1 -w 1 {port}".format(port=ts.Variables.port) +tr.Processes.Default.ReturnCode = 0 +tr.Processes.Default.Streams.stdout = "gold/cache_no_cc.gold" +tr.StillRunningAfter = ts + +# Test 4 - Cache-Control: no-cache (from client), so cache miss every time +tr = Test.AddTestRun() +tr.Processes.Default.Command = "printf 'GET /no_cache_control HTTP/1.1\r\n''Cache-Control:no-cache\r\n''x-debug: x-cache,x-cache-key,via\r\n''Host: www.example.com\r\n''\r\n'|nc 127.0.0.1 -w 1 {port}".format(port=ts.Variables.port) +tr.Processes.Default.ReturnCode = 0 +tr.Processes.Default.Streams.stdout = "gold/cache_no_cc.gold" +tr.StillRunningAfter = ts + +# Test 5 - hit stale cache. +tr = Test.AddTestRun() +tr.Processes.Default.Command = "sleep 15; printf 'GET /max_age_10sec HTTP/1.1\r\n''x-debug: x-cache,x-cache-key,via\r\n''Host: www.example.com\r\n''\r\n'|nc 127.0.0.1 -w 1 {port}".format(port=ts.Variables.port) +tr.Processes.Default.ReturnCode = 0 +tr.Processes.Default.Streams.stdout = "gold/cache_hit_stale.gold" +tr.StillRunningAfter = ts + +# Test 6 - only-if-cached. 504 "Not Cached" should be returned if not in cache +tr = Test.AddTestRun() +tr.Processes.Default.Command = "printf 'GET /no_cache_control HTTP/1.1\r\n''Cache-Control: only-if-cached\r\n''x-debug: x-cache,x-cache-key,via\r\n''Host: www.example.com\r\n''Cache-control: max-age=300\r\n''\r\n'|nc 127.0.0.1 -w 1 {port}".format(port=ts.Variables.port) +tr.Processes.Default.ReturnCode = 0 +tr.Processes.Default.Streams.stdout = "gold/cache_no_cache.gold" +tr.StillRunningAfter = ts + + diff --git a/tests/gold_tests/cache/gold/cache_and_req_body-hit.gold b/tests/gold_tests/cache/gold/cache_and_req_body-hit.gold new file mode 100644 index 0000000..c10c0ba --- /dev/null +++ b/tests/gold_tests/cache/gold/cache_and_req_body-hit.gold @@ -0,0 +1,11 @@ +HTTP/1.1 200 OK +Cache-Control: max-age=10,public +Content-Length: 11 +Date: `` +Age: `` +Connection: keep-alive +Via: `` +Server: `` +X-Cache: hit-fresh +`` +yabadabadoo`` diff --git a/tests/gold_tests/cache/gold/cache_and_req_body-miss.gold b/tests/gold_tests/cache/gold/cache_and_req_body-miss.gold new file mode 100644 index 0000000..0f8938e --- /dev/null +++ b/tests/gold_tests/cache/gold/cache_and_req_body-miss.gold @@ -0,0 +1,11 @@ +HTTP/1.1 200 OK +Cache-Control: max-age=10,public +Content-Length: 11 +Date: `` +Age: `` +Connection: keep-alive +Via: `` +Server: `` +X-Cache: miss +`` +yabadabadoo`` diff --git a/tests/gold_tests/cache/gold/cache_hit_stale.gold b/tests/gold_tests/cache/gold/cache_hit_stale.gold new file mode 100644 index 0000000..0941626 --- /dev/null +++ b/tests/gold_tests/cache/gold/cache_hit_stale.gold @@ -0,0 +1,11 @@ +HTTP/1.1 200 OK +Cache-Control: max-age=10,public +Content-Length: 11 +Date: `` +Age: 0 +Connection: keep-alive +Via: `` +Server: `` +X-Cache: hit-stale +`` +yabadabadoo`` diff --git a/tests/gold_tests/cache/gold/cache_no_cache.gold b/tests/gold_tests/cache/gold/cache_no_cache.gold new file mode 100644 index 0000000..7f6b730 --- /dev/null +++ b/tests/gold_tests/cache/gold/cache_no_cache.gold @@ -0,0 +1,12 @@ +HTTP/1.1 504 Not Cached `` +Date: `` +Connection: keep-alive +Via: http/1.1 ``[uScMs f p eT:t cCMp s ]`` +Server: `` +Cache-Control: no-store +Content-Type: text/html +Content-Language: en +`` +X-Cache: miss +Content-Length: 340 +`` diff --git a/tests/gold_tests/cache/gold/cache_no_cc.gold b/tests/gold_tests/cache/gold/cache_no_cc.gold new file mode 100644 index 0000000..9bca02d --- /dev/null +++ b/tests/gold_tests/cache/gold/cache_no_cc.gold @@ -0,0 +1,10 @@ +HTTP/1.1 200 OK +Content-Length: 14 +Date: `` +Age: 0 +Connection: keep-alive +Via: `` +Server: `` +X-Cache: miss +`` +the flinstones`` -- To stop receiving notification emails like this one, please contact pa...@apache.org.