This is an automated email from the ASF dual-hosted git repository.

shinrich 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 1ce86a82b6 Remove netcat from bigobj test (#10866)
1ce86a82b6 is described below

commit 1ce86a82b63ce33756af68c8da1c3fb6d12fb2c6
Author: Susan Hinrichs <shinri...@aviatrix.com>
AuthorDate: Thu Nov 30 10:38:29 2023 -0600

    Remove netcat from bigobj test (#10866)
---
 tests/CMakeLists.txt                   |   1 -
 tests/gold_tests/bigobj/CMakeLists.txt |  19 ------
 tests/gold_tests/bigobj/bigobj.test.py | 112 +++++++++++++++++++--------------
 tests/gold_tests/bigobj/check_ramp.c   |  57 -----------------
 tests/gold_tests/bigobj/log2.gold      |   4 --
 tests/gold_tests/bigobj/push_request.c |  79 -----------------------
 6 files changed, 66 insertions(+), 206 deletions(-)

diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index d58dcd3265..afd94746d3 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -27,7 +27,6 @@ function(ADD_AUTEST_PLUGIN _NAME)
 endfunction()
 
 add_subdirectory(tools/plugins)
-add_subdirectory(gold_tests/bigobj)
 add_subdirectory(gold_tests/chunked_encoding)
 add_subdirectory(gold_tests/continuations/plugins)
 add_subdirectory(gold_tests/jsonrpc/plugins)
diff --git a/tests/gold_tests/bigobj/CMakeLists.txt 
b/tests/gold_tests/bigobj/CMakeLists.txt
deleted file mode 100644
index b56709f853..0000000000
--- a/tests/gold_tests/bigobj/CMakeLists.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-#######################
-#
-#  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.
-#
-#######################
-
-add_executable(check_ramp check_ramp.c)
-add_executable(push_request push_request.c)
diff --git a/tests/gold_tests/bigobj/bigobj.test.py 
b/tests/gold_tests/bigobj/bigobj.test.py
index b46f417878..30b82541ee 100644
--- a/tests/gold_tests/bigobj/bigobj.test.py
+++ b/tests/gold_tests/bigobj/bigobj.test.py
@@ -28,11 +28,6 @@ Test.SkipUnless(
     Condition.HasCurlFeature('http2')
 )
 
-# push_request and check_ramp are built via `make`. Here we copy the built 
binary down to the test
-# directory so that the test runs in this file can use it.
-Test.Setup.Copy(os.path.join(Test.Variables.AtsBuildGoldTestsDir, 'bigobj', 
'push_request'))
-Test.Setup.Copy(os.path.join(Test.Variables.AtsBuildGoldTestsDir, 'bigobj', 
'check_ramp'))
-
 ts = Test.MakeATSProcess("ts1", enable_tls=True)
 ts.addDefaultSSLFiles()
 
@@ -52,65 +47,88 @@ ts.Disk.ssl_multicert_config.AddLine(
 )
 
 ts.Disk.remap_config.AddLine(
-    'map https://localhost http://localhost'
+    f'map https://localhost:{ts.Variables.ssl_port} 
http://localhost:{ts.Variables.port}'
+)
+ts.Disk.remap_config.AddLine(
+    f'map https://localhost:{ts.Variables.ssl_portv6} 
http://localhost:{ts.Variables.port}'
 )
-
-# Set up to check the output after the tests have run.
-#
-log_id = Test.Disk.File("log2.txt")
-log_id.Content = "log2.gold"
 
 # Size of object to get.  (NOTE:  If you increase this significantly you may 
also have to increase cache
 # capacity in tests/gold_tests/autest-size/min_cfg/storage.config.  Also, for 
very large objects, if
 # proxy.config.diags.debug.enabled is 1, the PUSH request will timeout and 
fail.)
 #
 obj_kilobytes = 10 * 1024
+obj_bytes = obj_kilobytes * 10
+header = "HTTP/1.1 200 OK\r\nContent-length: {}\r\n\r\n".format(obj_bytes)
+
+
+def create_pushfile():
+    f = open(Test.RunDirectory + "/objfile", "w")
+    f.write(header)
+    f.write("x" * obj_bytes)
+    f.close()
+    return True
+
 
 tr = Test.AddTestRun("PUSH an object to the cache")
 # Delay on readiness of TS IPv4 ssl port
-tr.Processes.Default.StartBefore(ts)
-#
+tr.Processes.Default.StartBefore(ts, ready=lambda: create_pushfile())
 # Put object with URL http://localhost/bigobj in cache using PUSH request.
-tr.Processes.Default.Command = (
-    f'./push_request {obj_kilobytes} | nc localhost {ts.Variables.port}'
-)
+tr.Processes.Default.Command = "curl -v -H 'Content-Type: 
application/octet-stream' --data-binary @{}/objfile -X PUSH 
http://localhost:{}/bigobj -H 'Content-Length:{}'".format(
+    Test.RunDirectory, ts.Variables.port, len(header) + obj_bytes)
 tr.Processes.Default.ReturnCode = 0
+tr.Processes.Default.Streams.All = Testers.ContainsExpression(
+    "HTTP/1.1 201 Created",
+    "The PUSH request should have succeeded"
+)
 
 tr = Test.AddTestRun("GET bigobj: cleartext, HTTP/1.1, IPv4")
-tr.Processes.Default.Command = (
-    'curl --verbose --ipv4 --http1.1 --header "Host: localhost"'
-    f' http://localhost:{ts.Variables.port}/bigobj 2>> log.txt |'
-    f' ./check_ramp {obj_kilobytes}'
-)
+tr.Processes.Default.Command = f'curl --verbose --ipv4 --http1.1 
http://localhost:{ts.Variables.port}/bigobj'
 tr.Processes.Default.ReturnCode = 0
+tr.Processes.Default.Streams.All = Testers.ContainsExpression(
+    "HTTP/1.1 200 OK",
+    "Should fetch pushed object"
+)
+tr.Processes.Default.Streams.All = Testers.ContainsExpression(
+    "Content-length: 102400",
+    "Content size should be accurate"
+)
 
 tr = Test.AddTestRun("GET bigobj: TLS, HTTP/1.1, IPv4")
-tr.Processes.Default.Command = (
-    'curl --verbose --ipv4 --http1.1 --insecure --header "Host: localhost"'
-    f' https://localhost:{ts.Variables.ssl_port}/bigobj 2>> log.txt |'
-    f' ./check_ramp {obj_kilobytes}'
-)
+tr.Processes.Default.Command = f'curl --verbose --ipv4 --http1.1 --insecure 
https://localhost:{ts.Variables.ssl_port}/bigobj'
 tr.Processes.Default.ReturnCode = 0
+tr.Processes.Default.Streams.All = Testers.ContainsExpression(
+    "HTTP/1.1 200 OK",
+    "Should fetch pushed object"
+)
+tr.Processes.Default.Streams.All = Testers.ContainsExpression(
+    "Content-length: 102400",
+    "Content size should be accurate"
+)
 
 tr = Test.AddTestRun("GET bigobj: TLS, HTTP/2, IPv4")
-tr.Processes.Default.Command = (
-    'curl --verbose --ipv4 --http2 --insecure --header "Host: localhost"'
-    f' https://localhost:{ts.Variables.ssl_port}/bigobj 2>> log.txt |'
-    f' ./check_ramp {obj_kilobytes}'
-)
+tr.Processes.Default.Command = f'curl --verbose --ipv4 --http2 --insecure 
https://localhost:{ts.Variables.ssl_port}/bigobj'
 tr.Processes.Default.ReturnCode = 0
-
-tr = Test.AddTestRun("GET bigobj: TLS, HTTP/2, IPv6")
-tr.Processes.Default.Command = (
-    'curl --verbose --ipv6 --http2 --insecure --header "Host: localhost"'
-    f' https://localhost:{ts.Variables.ssl_portv6}/bigobj 2>> log.txt |'
-    f' ./check_ramp {obj_kilobytes}'
+tr.Processes.Default.Streams.All = Testers.ContainsExpression(
+    "HTTP/2 200",
+    "Should fetch pushed object"
+)
+tr.Processes.Default.Streams.All = Testers.ContainsExpression(
+    "content-length: 102400",
+    "Content size should be accurate"
 )
-tr.Processes.Default.ReturnCode = 0
 
-tr = Test.AddTestRun()
-tr.Processes.Default.Command = "sed 's/0</0\\\n</' log.txt | grep -F 200 | 
grep -F HTTP > log2.txt"
+tr = Test.AddTestRun("GET bigobj: TLS, HTTP/2, IPv6")
+tr.Processes.Default.Command = f'curl --verbose --ipv6 --http2 --insecure 
https://localhost:{ts.Variables.ssl_portv6}/bigobj'
 tr.Processes.Default.ReturnCode = 0
+tr.Processes.Default.Streams.All = Testers.ContainsExpression(
+    "HTTP/2 200",
+    "Should fetch pushed object"
+)
+tr.Processes.Default.Streams.All = Testers.ContainsExpression(
+    "content-length: 102400",
+    "Content size should be accurate"
+)
 
 # Verify that PUSH requests are rejected when push_method_enabled is 0 (the
 # default configuration).
@@ -132,16 +150,18 @@ ts.Disk.ssl_multicert_config.AddLine(
 )
 
 ts.Disk.remap_config.AddLine(
-    'map https://localhost http://localhost'
+    f'map https://localhost:{ts.Variables.ssl_port} 
http://localhost:{ts.Variables.port}'
+)
+ts.Disk.remap_config.AddLine(
+    f'map https://localhost:{ts.Variables.ssl_portv6} 
http://localhost:{ts.Variables.port}'
 )
 
 tr = Test.AddTestRun("PUSH request is rejected when push_method_enabled is 0")
 tr.Processes.Default.StartBefore(ts)
-tr.Processes.Default.Command = (
-    f'./push_request {obj_kilobytes} | nc localhost {ts.Variables.port}'
-)
-tr.Processes.Default.ReturnCode = 1
-tr.Processes.Default.Streams.stdout = Testers.ContainsExpression(
+tr.Processes.Default.Command = "curl -v -H 'Content-Type: 
application/octet-stream' --data-binary @{}/objfile -X PUSH 
http://localhost:{}/bigobj -H 'Content-Length:{}'".format(
+    Test.RunDirectory, ts.Variables.port, len(header) + obj_bytes)
+tr.Processes.Default.ReturnCode = 0
+tr.Processes.Default.Streams.All = Testers.ContainsExpression(
     "403 Access Denied",
     "The PUSH request should have received a 403 response."
 )
diff --git a/tests/gold_tests/bigobj/check_ramp.c 
b/tests/gold_tests/bigobj/check_ramp.c
deleted file mode 100644
index fbea580692..0000000000
--- a/tests/gold_tests/bigobj/check_ramp.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
-  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.
-*/
-
-// Program to read standard input and verify it is ramping pattern.
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdint.h>
-#include <inttypes.h>
-
-int
-main(int n_arg, char const *const *arg)
-{
-  int64_t data_count;
-  int c = 0;
-
-  if ((n_arg != 2) || ((data_count = atoi(arg[1])) < 0)) {
-    fprintf(stderr, "usage: check_ramp number-of-kilobytes\n");
-    return 1;
-  }
-
-  data_count *= 1024;
-
-  while (data_count--) {
-    if (getchar() != c) {
-      fprintf(stderr, "error in standard input\n");
-      return 1;
-    }
-    if (c == 255) {
-      c = 0;
-    } else {
-      ++c;
-    }
-  }
-
-  if (getchar() != EOF) {
-    fprintf(stderr, "error in standard input (too long)\n");
-    return 1;
-  }
-
-  return 0;
-}
diff --git a/tests/gold_tests/bigobj/log2.gold 
b/tests/gold_tests/bigobj/log2.gold
deleted file mode 100644
index c4367a7cfe..0000000000
--- a/tests/gold_tests/bigobj/log2.gold
+++ /dev/null
@@ -1,4 +0,0 @@
-< HTTP/1.1 200 OK
-< HTTP/1.1 200 OK
-< HTTP/2 200 
-< HTTP/2 200 
diff --git a/tests/gold_tests/bigobj/push_request.c 
b/tests/gold_tests/bigobj/push_request.c
deleted file mode 100644
index 98a291e3ec..0000000000
--- a/tests/gold_tests/bigobj/push_request.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
-  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.
-*/
-
-// Program to output push request with ramping data.
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdint.h>
-#include <inttypes.h>
-
-int
-main(int n_arg, char const *const *arg)
-{
-  int64_t data_count;
-  int c = 0, hdr_count;
-  ;
-  char buf[200];
-
-  if ((n_arg != 2) || ((data_count = atoi(arg[1])) < 0)) {
-    fprintf(stderr, "usage: push_request number-of-kilobytes\n");
-    return 1;
-  }
-
-  data_count *= 1024;
-
-  hdr_count = snprintf(buf, sizeof(buf),
-                       "HTTP/1.1 200 OK\r\n"
-                       "Content-Type: text/plain\r\n"
-                       "Content-Length: %" PRId64 "\r\n"
-                       "\r\n",
-                       data_count);
-
-  if (hdr_count <= 0) {
-    fprintf(stderr, "INTERNAL ERROR\n");
-    return 1;
-  }
-
-  if (printf("PUSH http://localhost/bigobj HTTP/1.1\r\n"
-             "Content-Length: %" PRId64 "\r\n"
-             "\r\n%s",
-             hdr_count + data_count, buf) <= 0) {
-    fprintf(stderr, "error writing standard output\n");
-    return 1;
-  }
-
-  while (data_count--) {
-    if (putchar(c) != c) {
-      fprintf(stderr, "error writing standard output\n");
-      return 1;
-    }
-    if (c == 255) {
-      c = 0;
-    } else {
-      ++c;
-    }
-  }
-
-  if (fflush(stdout) != 0) {
-    fprintf(stderr, "error writing standard output\n");
-    return 1;
-  }
-
-  return 0;
-}

Reply via email to