You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by dr...@apache.org on 2018/01/05 15:38:01 UTC
[trafficserver] branch master updated: Remove use of netstat in
tests
This is an automated email from the ASF dual-hosted git repository.
dragon 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 87a873c Remove use of netstat in tests
87a873c is described below
commit 87a873cbd820634a75c4a6ccece1753d35660bde
Author: Jason Kenny <dr...@live.com>
AuthorDate: Thu Jan 4 17:18:18 2018 -0600
Remove use of netstat in tests
update autest to 1.4.2 as this has fix for portopen to be like netstat, but portable
Add to traffic_layout the reporting of brotli as a feature
update tests to test for brotli
change test to use dynamic ports
---
cmd/traffic_layout/info.cc | 5 +++++
tests/gold_tests/autest-site/init.cli.ext | 2 +-
tests/gold_tests/headers/forwarded.test.py | 15 +++------------
tests/gold_tests/headers/normalize_ae.test.py | 22 ++++++----------------
tests/gold_tests/headers/via.test.py | 14 +++-----------
tests/gold_tests/logging/ccid_ctid.test.py | 13 ++-----------
tests/gold_tests/pluginTest/gzip/gzip.test.py | 18 +++++++++---------
.../gold_tests/pluginTest/url_sig/url_sig.test.py | 14 ++++----------
8 files changed, 33 insertions(+), 70 deletions(-)
diff --git a/cmd/traffic_layout/info.cc b/cmd/traffic_layout/info.cc
index 7f45541..eeca485 100644
--- a/cmd/traffic_layout/info.cc
+++ b/cmd/traffic_layout/info.cc
@@ -68,6 +68,11 @@ produce_features(bool json)
#else
print_feature("TS_HAS_LZMA", 0, json);
#endif
+#ifdef HAVE_BROTLI_ENCODE_H
+ print_feature("TS_HAS_BROTLI", 1, json);
+#else
+ print_feature("TS_HAS_BROTLI", 0, json);
+#endif
print_feature("TS_HAS_JEMALLOC", TS_HAS_JEMALLOC, json);
print_feature("TS_HAS_TCMALLOC", TS_HAS_TCMALLOC, json);
print_feature("TS_HAS_IN6_IS_ADDR_UNSPECIFIED", TS_HAS_IN6_IS_ADDR_UNSPECIFIED, json);
diff --git a/tests/gold_tests/autest-site/init.cli.ext b/tests/gold_tests/autest-site/init.cli.ext
index 633171c..903f12f 100644
--- a/tests/gold_tests/autest-site/init.cli.ext
+++ b/tests/gold_tests/autest-site/init.cli.ext
@@ -23,7 +23,7 @@ if sys.version_info < (3, 5, 0):
host.WriteError(
"You need python 3.5 or later to run these tests\n", show_stack=False)
-autest_version ="1.4.1"
+autest_version ="1.4.2"
if AuTestVersion() < autest_version:
host.WriteError(
"Tests need AuTest version {ver} or better\n Please update AuTest:\n pip install --upgrade autest\n".format(ver=autest_version), show_stack=False)
diff --git a/tests/gold_tests/headers/forwarded.test.py b/tests/gold_tests/headers/forwarded.test.py
index e03f190..e5854f2 100644
--- a/tests/gold_tests/headers/forwarded.test.py
+++ b/tests/gold_tests/headers/forwarded.test.py
@@ -28,7 +28,6 @@ Test.SkipUnless(
Condition.HasATSFeature('TS_USE_TLS_ALPN'),
Condition.HasCurlFeature('http2'),
Condition.HasCurlFeature('IPv6'),
- Condition.HasProgram("netstat", "netstat need to be installed on system for this test to work")
)
Test.ContinueOnFail = True
@@ -157,20 +156,12 @@ ts.Disk.remap_config.AddLine(
' @plugin=conf_remap.so @pparam=proxy.config.http.insert_forwarded=connection=full'
)
-# Ask the OS if the port is ready for connect()
-#
-
-
-def CheckPort(Port):
- return lambda: 0 == subprocess.call('netstat --listen --tcp -n | grep -q :{}'.format(Port), shell=True)
-
-
# Basic HTTP 1.1 -- No Forwarded by default
tr = Test.AddTestRun()
# Wait for the micro server
-tr.Processes.Default.StartBefore(server, ready=CheckPort(server.Variables.Port))
+tr.Processes.Default.StartBefore(server, ready=When.PortOpen(server.Variables.Port))
# Delay on readiness of our ssl ports
-tr.Processes.Default.StartBefore(Test.Processes.ts, ready=CheckPort(ts.Variables.ssl_port))
+tr.Processes.Default.StartBefore(Test.Processes.ts, ready=When.PortOpen(ts.Variables.ssl_port))
#
tr.Processes.Default.Command = (
'curl --verbose --ipv4 --http1.1 --proxy localhost:{} http://www.no-oride.com'.format(ts.Variables.port)
@@ -225,7 +216,7 @@ ts2.Disk.remap_config.AddLine(
# Forwarded header with UUID of 2nd ATS.
tr = Test.AddTestRun()
# Delay on readiness of our ssl ports
-tr.Processes.Default.StartBefore(Test.Processes.ts2, ready=CheckPort(ts2.Variables.ssl_port))
+tr.Processes.Default.StartBefore(Test.Processes.ts2, ready=When.PortOpen(ts2.Variables.ssl_port))
#
tr.Processes.Default.Command = (
'curl --verbose --ipv4 --http1.1 --proxy localhost:{} http://www.no-oride.com'.format(ts2.Variables.port)
diff --git a/tests/gold_tests/headers/normalize_ae.test.py b/tests/gold_tests/headers/normalize_ae.test.py
index 64c689c..f5f3e85 100644
--- a/tests/gold_tests/headers/normalize_ae.test.py
+++ b/tests/gold_tests/headers/normalize_ae.test.py
@@ -25,9 +25,8 @@ Test normalizations of the Accept-Encoding header field.
'''
Test.SkipUnless(
- Condition.HasProgram(
- "curl", "Curl need to be installed on system for this test to work"),
- Condition.HasProgram("netstat", "netstat need to be installed on system for this test to work")
+ Condition.HasProgram("curl", "Curl need to be installed on system for this test to work"),
+ Condition.HasATSFeature('TS_HAS_BROTLI')
)
Test.ContinueOnFail = True
@@ -47,7 +46,7 @@ request_header = {"headers": "GET / HTTP/1.1\r\nHost: www.ae-2.com\r\n\r\n", "ti
server.addResponse("sessionlog.json", request_header, response_header)
# Define first ATS
-ts = Test.MakeATSProcess("ts", select_ports=False)
+ts = Test.MakeATSProcess("ts")
def baselineTsSetup(ts):
@@ -82,13 +81,6 @@ baselineTsSetup(ts)
normalize_ae_log_id = Test.Disk.File("normalize_ae.log")
normalize_ae_log_id.Content = "normalize_ae.gold"
-# ask the os if the port is ready for connect()
-#
-
-
-def CheckPort(port):
- return lambda: 0 == subprocess.call('netstat --listen --tcp -n | grep -q :{}'.format(port), shell=True)
-
# Try various Accept-Encoding header fields for a particular traffic server and host.
@@ -98,12 +90,12 @@ def allAEHdrs(shouldWaitForUServer, shouldWaitForTs, ts, host):
if shouldWaitForUServer:
# wait for the micro server
- tr.Processes.Default.StartBefore(server, ready=CheckPort(server.Variables.Port))
+ tr.Processes.Default.StartBefore(server)
if shouldWaitForTs:
# wait for the micro server
# delay on readiness of port
- tr.Processes.Default.StartBefore(ts, ready=CheckPort(ts.Variables.port))
+ tr.Processes.Default.StartBefore(ts)
baseCurl = 'curl --verbose --ipv4 --http1.1 --proxy localhost:{} '.format(ts.Variables.port)
@@ -146,9 +138,7 @@ def perTsTest(shouldWaitForUServer, ts):
perTsTest(True, ts)
# Define second ATS
-ts2 = Test.MakeATSProcess("ts2", select_ports=False)
-
-ts2.Variables.port += 1
+ts2 = Test.MakeATSProcess("ts2")
baselineTsSetup(ts2)
diff --git a/tests/gold_tests/headers/via.test.py b/tests/gold_tests/headers/via.test.py
index 76bd547..9746cde 100644
--- a/tests/gold_tests/headers/via.test.py
+++ b/tests/gold_tests/headers/via.test.py
@@ -28,8 +28,7 @@ Check VIA header for protocol stack data.
Test.SkipUnless(
Condition.HasATSFeature('TS_USE_TLS_ALPN'),
Condition.HasCurlFeature('http2'),
- Condition.HasCurlFeature('IPv6'),
- Condition.HasProgram("netstat", "netstat need to be installed on system for this test to work")
+ Condition.HasCurlFeature('IPv6')
)
Test.ContinueOnFail = True
@@ -72,19 +71,12 @@ ts.Disk.ssl_multicert_config.AddLine(
via_log_id = Test.Disk.File("via.log")
via_log_id.Content = "via.gold"
-# Ask the OS if the port is ready for connect()
-
-
-def CheckPort(Port):
- return lambda: 0 == subprocess.call('netstat --listen --tcp -n | grep -q :{}'.format(Port), shell=True)
-
-
# Basic HTTP 1.1
tr = Test.AddTestRun()
# Wait for the micro server
-tr.Processes.Default.StartBefore(server, ready=CheckPort(server.Variables.Port))
+tr.Processes.Default.StartBefore(server, ready=When.PortOpen(server.Variables.Port))
# Delay on readiness of our ssl ports
-tr.Processes.Default.StartBefore(Test.Processes.ts, ready=CheckPort(ts.Variables.ssl_port))
+tr.Processes.Default.StartBefore(Test.Processes.ts, ready=When.PortOpen(ts.Variables.ssl_port))
tr.Processes.Default.Command = 'curl --verbose --ipv4 --http1.1 --proxy localhost:{} http://www.example.com'.format(
ts.Variables.port)
diff --git a/tests/gold_tests/logging/ccid_ctid.test.py b/tests/gold_tests/logging/ccid_ctid.test.py
index 5236313..b990891 100644
--- a/tests/gold_tests/logging/ccid_ctid.test.py
+++ b/tests/gold_tests/logging/ccid_ctid.test.py
@@ -28,8 +28,7 @@ Test.SkipUnless(
"curl", "Curl need to be installed on system for this test to work"),
# Condition.IsPlatform("linux"), Don't see the need for this.
Condition.HasATSFeature('TS_USE_TLS_ALPN'),
- Condition.HasCurlFeature('http2'),
- Condition.HasProgram("netstat", "netstat need to be installed on system for this test to work")
+ Condition.HasCurlFeature('http2')
)
# Define default ATS. "select_ports=False" needed because SSL port used.
@@ -70,17 +69,9 @@ log.ascii {
}'''.split("\n")
)
-# Ask the OS if the port is ready for connect()
-#
-
-
-def CheckPort(Port):
- return lambda: 0 == subprocess.call('netstat --listen --tcp -n | grep -q :{}'.format(Port), shell=True)
-
-
tr = Test.AddTestRun()
# Delay on readiness of ssl port
-tr.Processes.Default.StartBefore(Test.Processes.ts, ready=CheckPort(ts.Variables.ssl_port))
+tr.Processes.Default.StartBefore(Test.Processes.ts, ready=When.PortOpen(ts.Variables.ssl_port))
#
tr.Processes.Default.Command = 'curl "http://127.0.0.1:{0}" --verbose'.format(
ts.Variables.port)
diff --git a/tests/gold_tests/pluginTest/gzip/gzip.test.py b/tests/gold_tests/pluginTest/gzip/gzip.test.py
index f6aa067..6523db7 100644
--- a/tests/gold_tests/pluginTest/gzip/gzip.test.py
+++ b/tests/gold_tests/pluginTest/gzip/gzip.test.py
@@ -26,9 +26,12 @@ Test gzip plugin
# Skip if plugins not present.
#
-Test.SkipUnless(Condition.PluginExists('gzip.so'))
-Test.SkipUnless(Condition.PluginExists('conf_remap.so'))
-Test.SkipUnless(Condition.HasProgram("netstat", "netstat need to be installed on system for this test to work"))
+Test.SkipUnless(
+ Condition.PluginExists('gzip.so'),
+ Condition.PluginExists('conf_remap.so'),
+ Condition.HasATSFeature('TS_HAS_BROTLI')
+)
+
server = Test.MakeOriginServer("server", options={'--load': '{}/gzip_observer.py'.format(Test.TestDirectory)})
@@ -50,10 +53,6 @@ for i in range(3):
}
server.addResponse("sessionfile.log", request_header, response_header)
-# Ask the OS if the port is ready for connect()
-#
-def CheckPort(Port):
- return lambda: 0 == subprocess.call('netstat --listen --tcp -n | grep -q :{}'.format(Port), shell=True)
def oneTs(name, AeHdr1='gzip, deflate, sdch, br'):
global waitForServer
@@ -95,10 +94,10 @@ def oneTs(name, AeHdr1='gzip, deflate, sdch, br'):
tr = Test.AddTestRun()
if (waitForTs):
- tr.Processes.Default.StartBefore(ts, ready=CheckPort(ts.Variables.port))
+ tr.Processes.Default.StartBefore(ts, ready=When.PortOpen(ts.Variables.port))
waitForTs = False
if (waitForServer):
- tr.Processes.Default.StartBefore(server, ready=CheckPort(server.Variables.Port))
+ tr.Processes.Default.StartBefore(server, ready=When.PortOpen(server.Variables.Port))
waitForServer = False
tr.Processes.Default.ReturnCode = 0
tr.Processes.Default.Command = curl(i, AeHdr1)
@@ -115,6 +114,7 @@ def oneTs(name, AeHdr1='gzip, deflate, sdch, br'):
tr.Processes.Default.ReturnCode = 0
tr.Processes.Default.Command = curl(i, "deflate")
+
waitForServer = True
oneTs("ts")
diff --git a/tests/gold_tests/pluginTest/url_sig/url_sig.test.py b/tests/gold_tests/pluginTest/url_sig/url_sig.test.py
index c1a3720..26d92d3 100644
--- a/tests/gold_tests/pluginTest/url_sig/url_sig.test.py
+++ b/tests/gold_tests/pluginTest/url_sig/url_sig.test.py
@@ -24,7 +24,6 @@ Test url_sig plugin
Test.SkipUnless(
Condition.HasATSFeature('TS_USE_TLS_ALPN'),
- Condition.HasProgram("netstat", "netstat needs to be installed on system for this test to work")
)
# Skip if plugins not present.
@@ -57,8 +56,8 @@ ts.Variables.ssl_port = 4443
ts.Disk.records_config.update({
# 'proxy.config.diags.debug.enabled': 1,
# 'proxy.config.diags.debug.tags': 'http|url_sig',
- 'proxy.config.http.cache.http': 0, # Make sure each request is forwarded to the origin server.
- 'proxy.config.proxy_name': 'Poxy_Proxy', # This will be the server name.
+ 'proxy.config.http.cache.http': 0, # Make sure each request is forwarded to the origin server.
+ 'proxy.config.proxy_name': 'Poxy_Proxy', # This will be the server name.
'proxy.config.ssl.server.cert.path': '{0}'.format(ts.Variables.SSLDir),
'proxy.config.ssl.server.private_key.path': '{0}'.format(ts.Variables.SSLDir),
'proxy.config.http.server_ports': (
@@ -98,11 +97,6 @@ ts.Disk.remap_config.AddLine(
' @plugin=url_sig.so @pparam={}/url_sig.config @pparam=PristineUrl'.format(Test.TestDirectory)
)
-# Ask the OS if the port is ready for connect()
-#
-def CheckPort(Port):
- return lambda: 0 == subprocess.call('netstat --listen --tcp -n | grep -q :{}'.format(Port), shell=True)
-
# Validation failure tests.
LogTee = " 2>&1 | tee -a {}/url_sig_long.log".format(Test.RunDirectory)
@@ -110,8 +104,8 @@ LogTee = " 2>&1 | tee -a {}/url_sig_long.log".format(Test.RunDirectory)
# Bad client / MD5 / P=101 / URL pristine / URL altered.
#
tr = Test.AddTestRun()
-tr.Processes.Default.StartBefore(ts, ready=CheckPort(ts.Variables.ssl_port))
-tr.Processes.Default.StartBefore(server, ready=CheckPort(server.Variables.Port))
+tr.Processes.Default.StartBefore(ts, ready=When.PortOpen(ts.Variables.ssl_port))
+tr.Processes.Default.StartBefore(server, ready=When.PortOpen(server.Variables.Port))
tr.Processes.Default.ReturnCode = 0
tr.Processes.Default.Command = (
"curl --verbose --proxy http://127.0.0.1:{} 'http://seven.eight.nine/".format(ts.Variables.port) +
--
To stop receiving notification emails like this one, please contact
['"commits@trafficserver.apache.org" <co...@trafficserver.apache.org>'].