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.

Reply via email to