You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by bn...@apache.org on 2022/06/28 19:22:58 UTC

[trafficserver] branch 10-Dev updated (bf5d2594a -> ddb9a0d28)

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

bneradt pushed a change to branch 10-Dev
in repository https://gitbox.apache.org/repos/asf/trafficserver.git


    from bf5d2594a JSONRPC: Deal with an empty id as it is an error. (#8923)
     add 12801c966 Cleanup SNIConfig (#8892)
     add d18721884 Add escape json for logging (#8886)
     add 9d13a8d2e Fix autest uses of File exists parameter (#8906)
     add a32122c36 iocore/cache test_Alternate: up timeout to allow vc to write out (#8904)
     add f45d490b7 Do not modify Transfer-Encoding header on retry (#8899)
     add 095ae4ab9 uri_signing plugin: Fix missing payload validation for the iss field. (#8901)
     add 18fc00a78 Fix plugin stats_over_http OK reason phrase (#8902)
     add fde0e1229 Override LogField constructor to avoid reinterpret_cast at call site (#8911)
     add 8ca74ee27 Move HKDF to OpenSSL 3 interfaces (#8909)
     add 3a4c3dbbe AuTest: bind stdout/stderr to traffic.out (#8919)
     add d81297a85 stek_share test: compare output with the correct Process (#8921)
     add de6d02b4b Update location for core rule set in modsecurity example (#8924)
     add 72f2661b6 Remove unnecessary use of a memory arena when logging. (#8925)
     add 5bbf7968a Add docs for remap_stats plugin (#8927)
     add 6ee1c6b27 Allows errors from plugin initialization to bubble up (#8926)
     add 7978815a6 Use std::variant to clean up handling of unmarshal functions. (#8922)
     add 952bf25a3 proxy_serve_stale: Test updates (#8928)
     new ddb9a0d28 Merge the latest ASF master into 10-Dev

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 build/crypto.m4                                    |   2 +-
 configure.ac                                       |   1 +
 doc/admin-guide/logging/formatting.en.rst          |   8 +-
 doc/admin-guide/plugins/index.en.rst               |   4 +
 doc/admin-guide/plugins/remap_stats.en.rst         |  71 ++++++++++
 example/plugins/lua-api/modsecurity/README.md      |   4 +-
 example/plugins/lua-api/modsecurity/owasp.conf     |   1 +
 include/tscore/HKDF.h                              |  15 ++-
 .../cache/test/test_Alternate_S_to_L_remove_L.cc   |   2 +-
 .../cache/test/test_Alternate_S_to_L_remove_S.cc   |   2 +-
 iocore/net/P_SSLSNI.h                              | 101 +++++----------
 iocore/net/SSLNetVConnection.cc                    |  10 +-
 iocore/net/SSLSNIConfig.cc                         |  99 ++++++++++----
 iocore/net/quic/QUICHKDF.h                         |   2 +-
 iocore/net/quic/QUICKeyGenerator.cc                |   6 +-
 iocore/net/quic/QUICTLS.h                          |   2 +-
 iocore/net/quic/QUICTLS_boringssl.cc               |   6 +-
 iocore/net/quic/QUICTLS_openssl.cc                 |   6 +-
 .../access_control/unit_tests/test_utils.cc        |   8 ++
 plugins/experimental/uri_signing/jwt.c             |   5 +
 plugins/experimental/uri_signing/parse.c           |  12 +-
 plugins/stats_over_http/stats_over_http.c          |  16 +--
 proxy/http/HttpSM.cc                               |   5 +-
 proxy/http/PreWarmManager.cc                       |   4 +-
 proxy/http/remap/PluginDso.cc                      |   3 -
 proxy/http2/HPACK.cc                               |   7 +-
 proxy/logging/Log.cc                               |  87 ++++++-------
 proxy/logging/LogAccess.cc                         | 144 ++++++++++++++++++++-
 proxy/logging/LogAccess.h                          |   4 +-
 proxy/logging/LogBuffer.cc                         |   8 +-
 proxy/logging/LogBuffer.h                          |   4 +-
 proxy/logging/LogField.cc                          |  42 +++---
 proxy/logging/LogField.h                           |  17 ++-
 proxy/logging/LogFile.cc                           |   7 +-
 proxy/logging/LogFile.h                            |   9 +-
 proxy/logging/LogFormat.cc                         |   8 +-
 proxy/logging/LogFormat.h                          |   8 +-
 proxy/logging/LogObject.cc                         |   4 +-
 proxy/logging/Makefile.am                          |   1 +
 proxy/logging/YamlLogConfigDecoders.cc             |  18 ++-
 src/tscore/HKDF_boringssl.cc                       |  10 +-
 src/tscore/HKDF_openssl.cc                         |   7 +-
 src/tscore/HKDF_openssl3.cc                        |  85 ++++++++++++
 src/tscore/Makefile.am                             |   4 +
 src/tscore/unit_tests/test_HKDF.cc                 |  14 +-
 .../gold_tests/autest-site/trafficserver.test.ext  |  41 ++++--
 .../chunked_encoding/bad_chunked_encoding.test.py  |   2 +-
 .../cont_schedule/schedule_on_pool.test.py         |   4 +-
 .../cont_schedule/schedule_on_thread.test.py       |   4 +-
 .../cont_schedule/thread_affinity.test.py          |   4 +-
 tests/gold_tests/continuations/session_id.test.py  |   2 +-
 tests/gold_tests/h2/nghttp.test.py                 |   2 +-
 tests/gold_tests/ip_allow/ip_allow.test.py         |   4 +-
 tests/gold_tests/logging/gold/field-json-test.gold |   3 +
 .../gold_tests/logging/log-debug-client-ip.test.py |   8 +-
 .../{log-field.test.py => log-field-json.test.py}  |  17 +--
 tests/gold_tests/logging/log-filenames.test.py     |   2 +-
 tests/gold_tests/logging/log_pipe.test.py          |  14 +-
 tests/gold_tests/logging/log_retention.test.py     |  88 ++++++-------
 .../next_hop/strategies_ch/strategies_ch.test.py   |   2 +-
 .../next_hop/strategies_ch2/strategies_ch2.test.py |   2 +-
 .../zzz_strategies_peer.test.py                    |   2 +-
 .../zzz_strategies_peer2.test.py                   |   2 +-
 .../null_transform/null_transform.test.py          |   2 +-
 .../pluginTest/cert_update/cert_update.test.py     |   4 +-
 .../pluginTest/cookie_remap/bucketcookie.test.py   |   2 +-
 .../cookie_remap/collapseslashes.test.py           |   2 +-
 .../pluginTest/cookie_remap/connector.test.py      |   2 +-
 .../pluginTest/cookie_remap/existscookie.test.py   |   2 +-
 .../pluginTest/cookie_remap/matchcookie.test.py    |   2 +-
 .../pluginTest/cookie_remap/matchuri.test.py       |   2 +-
 .../pluginTest/cookie_remap/matrixparams.test.py   |   2 +-
 .../cookie_remap/notexistscookie.test.py           |   2 +-
 .../cookie_remap/pcollapseslashes.test.py          |   2 +-
 .../pluginTest/cookie_remap/psubstitute.test.py    |   2 +-
 .../pluginTest/cookie_remap/regexcookie.test.py    |   2 +-
 .../pluginTest/cookie_remap/setstatus.test.py      |   2 +-
 .../pluginTest/cookie_remap/subcookie.test.py      |   2 +-
 .../pluginTest/cookie_remap/substitute.test.py     |   2 +-
 .../header_rewrite/header_rewrite.test.py          |   2 +-
 .../header_rewrite/header_rewrite_l_value.test.py  |   2 +-
 .../header_rewrite/header_rewrite_url.test.py      |   4 +-
 tests/gold_tests/pluginTest/lua/lifecycle_stats.sh |   2 +-
 .../pluginTest/lua/lua_states_stats.test.py        |   6 +-
 .../pluginTest/lua/lua_watermark.test.py           |   2 +-
 .../pluginTest/parent_select/parent_select.test.py |   2 +-
 .../parent_select_optional_scheme_matching.test.py |   2 +-
 .../parent_select/parent_select_peer.test.py       |   2 +-
 .../parent_select/parent_select_peer2.test.py      |   2 +-
 .../prefetch_simple/prefetch_simple.test.py        |   2 +-
 .../gold/stats_over_http_0_stderr.gold             |   2 +-
 .../pluginTest/stek_share/stek_share.test.py       |  10 +-
 .../pluginTest/test_hooks/hook_add.test.py         |   2 +-
 .../test_hooks/ssn_start_delay_hook.test.py        |   2 +-
 .../pluginTest/traffic_dump/traffic_dump.test.py   |   8 +-
 .../traffic_dump/traffic_dump_http3.test.py        |   6 +-
 .../traffic_dump/traffic_dump_ip_filter.test.py    |   4 +-
 .../traffic_dump_response_body.test.py             |   2 +-
 .../traffic_dump/traffic_dump_sni_filter.test.py   |   4 +-
 .../transform/transaction_data_sink.test.py        |  14 +-
 .../pluginTest/uri_signing/uri_signing.test.py     |  15 ++-
 .../proxy_protocol/gold/proxy_serve_stale.gold     |  58 ---------
 .../proxy_protocol/proxy_serve_stale.test.py       | 101 +++++++--------
 .../replay/proxy_serve_stale.replay.yaml           | 142 ++++++++++++++++++++
 .../session_sharing/session_match.test.py          |   4 +-
 tests/gold_tests/shutdown/emergency.test.py        |   2 +-
 tests/gold_tests/shutdown/fatal.test.py            |   2 +-
 tests/gold_tests/tls/ssl_multicert_loader.test.py  |   2 +-
 tests/gold_tests/tls/tls_engine.test.py            |   2 +-
 .../gold_tests/tls/tls_hooks_client_verify.test.py |   8 +-
 tests/gold_tests/tls/tls_hooks_verify.test.py      |  14 +-
 .../tls/tls_origin_session_reuse.test.py           |  14 +-
 .../tls_hooks/gold/ts-close-out-close.gold         |   1 +
 tests/gold_tests/tls_hooks/tls_hooks.test.py       |   4 +-
 tests/gold_tests/tls_hooks/tls_hooks10.test.py     |   2 +-
 tests/gold_tests/tls_hooks/tls_hooks11.test.py     |   4 +-
 tests/gold_tests/tls_hooks/tls_hooks12.test.py     |   2 +-
 tests/gold_tests/tls_hooks/tls_hooks13.test.py     |   2 +-
 tests/gold_tests/tls_hooks/tls_hooks14.test.py     |   2 +-
 tests/gold_tests/tls_hooks/tls_hooks15.test.py     |   2 +-
 tests/gold_tests/tls_hooks/tls_hooks16.test.py     |   4 +-
 tests/gold_tests/tls_hooks/tls_hooks17.test.py     |   4 +-
 tests/gold_tests/tls_hooks/tls_hooks18.test.py     |   6 +-
 tests/gold_tests/tls_hooks/tls_hooks2.test.py      |   4 +-
 tests/gold_tests/tls_hooks/tls_hooks3.test.py      |   4 +-
 tests/gold_tests/tls_hooks/tls_hooks4.test.py      |  10 +-
 tests/gold_tests/tls_hooks/tls_hooks6.test.py      |   6 +-
 tests/gold_tests/tls_hooks/tls_hooks7.test.py      |   6 +-
 tests/gold_tests/tls_hooks/tls_hooks8.test.py      |   6 +-
 tests/gold_tests/tls_hooks/tls_hooks9.test.py      |   4 +-
 130 files changed, 1067 insertions(+), 572 deletions(-)
 create mode 100644 doc/admin-guide/plugins/remap_stats.en.rst
 create mode 100644 src/tscore/HKDF_openssl3.cc
 create mode 100644 tests/gold_tests/logging/gold/field-json-test.gold
 copy tests/gold_tests/logging/{log-field.test.py => log-field-json.test.py} (88%)
 delete mode 100644 tests/gold_tests/proxy_protocol/gold/proxy_serve_stale.gold
 create mode 100644 tests/gold_tests/proxy_protocol/replay/proxy_serve_stale.replay.yaml


[trafficserver] 01/01: Merge the latest ASF master into 10-Dev

Posted by bn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

bneradt pushed a commit to branch 10-Dev
in repository https://gitbox.apache.org/repos/asf/trafficserver.git

commit ddb9a0d281d2bead49895c8185e09b1e99cf5e9d
Merge: bf5d2594a 952bf25a3
Author: Brian Neradt <br...@gmail.com>
AuthorDate: Tue Jun 28 19:22:18 2022 +0000

    Merge the latest ASF master into 10-Dev
    
    Conflicts:
          tests/gold_tests/autest-site/trafficserver.test.ext
          tests/gold_tests/cont_schedule/schedule.test.py
          tests/gold_tests/pluginTest/lua/lua_states_stats.test.py
          tests/gold_tests/pluginTest/transform/transaction_data_sink.test.py

 build/crypto.m4                                    |   2 +-
 configure.ac                                       |   1 +
 doc/admin-guide/logging/formatting.en.rst          |   8 +-
 doc/admin-guide/plugins/index.en.rst               |   4 +
 doc/admin-guide/plugins/remap_stats.en.rst         |  71 ++++++++++
 example/plugins/lua-api/modsecurity/README.md      |   4 +-
 example/plugins/lua-api/modsecurity/owasp.conf     |   1 +
 include/tscore/HKDF.h                              |  15 ++-
 .../cache/test/test_Alternate_S_to_L_remove_L.cc   |   2 +-
 .../cache/test/test_Alternate_S_to_L_remove_S.cc   |   2 +-
 iocore/net/P_SSLSNI.h                              | 101 +++++----------
 iocore/net/SSLNetVConnection.cc                    |  10 +-
 iocore/net/SSLSNIConfig.cc                         |  99 ++++++++++----
 iocore/net/quic/QUICHKDF.h                         |   2 +-
 iocore/net/quic/QUICKeyGenerator.cc                |   6 +-
 iocore/net/quic/QUICTLS.h                          |   2 +-
 iocore/net/quic/QUICTLS_boringssl.cc               |   6 +-
 iocore/net/quic/QUICTLS_openssl.cc                 |   6 +-
 .../access_control/unit_tests/test_utils.cc        |   8 ++
 plugins/experimental/uri_signing/jwt.c             |   5 +
 plugins/experimental/uri_signing/parse.c           |  12 +-
 plugins/stats_over_http/stats_over_http.c          |  16 +--
 proxy/http/HttpSM.cc                               |   5 +-
 proxy/http/PreWarmManager.cc                       |   4 +-
 proxy/http/remap/PluginDso.cc                      |   3 -
 proxy/http2/HPACK.cc                               |   7 +-
 proxy/logging/Log.cc                               |  87 ++++++-------
 proxy/logging/LogAccess.cc                         | 144 ++++++++++++++++++++-
 proxy/logging/LogAccess.h                          |   4 +-
 proxy/logging/LogBuffer.cc                         |   8 +-
 proxy/logging/LogBuffer.h                          |   4 +-
 proxy/logging/LogField.cc                          |  42 +++---
 proxy/logging/LogField.h                           |  17 ++-
 proxy/logging/LogFile.cc                           |   7 +-
 proxy/logging/LogFile.h                            |   9 +-
 proxy/logging/LogFormat.cc                         |   8 +-
 proxy/logging/LogFormat.h                          |   8 +-
 proxy/logging/LogObject.cc                         |   4 +-
 proxy/logging/Makefile.am                          |   1 +
 proxy/logging/YamlLogConfigDecoders.cc             |  18 ++-
 src/tscore/HKDF_boringssl.cc                       |  10 +-
 src/tscore/HKDF_openssl.cc                         |   7 +-
 src/tscore/HKDF_openssl3.cc                        |  85 ++++++++++++
 src/tscore/Makefile.am                             |   4 +
 src/tscore/unit_tests/test_HKDF.cc                 |  14 +-
 .../gold_tests/autest-site/trafficserver.test.ext  |  41 ++++--
 .../chunked_encoding/bad_chunked_encoding.test.py  |   2 +-
 .../cont_schedule/schedule_on_pool.test.py         |   4 +-
 .../cont_schedule/schedule_on_thread.test.py       |   4 +-
 .../cont_schedule/thread_affinity.test.py          |   4 +-
 tests/gold_tests/continuations/session_id.test.py  |   2 +-
 tests/gold_tests/h2/nghttp.test.py                 |   2 +-
 tests/gold_tests/ip_allow/ip_allow.test.py         |   4 +-
 tests/gold_tests/logging/gold/field-json-test.gold |   3 +
 .../gold_tests/logging/log-debug-client-ip.test.py |   8 +-
 tests/gold_tests/logging/log-field-json.test.py    | 109 ++++++++++++++++
 tests/gold_tests/logging/log-filenames.test.py     |   2 +-
 tests/gold_tests/logging/log_pipe.test.py          |  14 +-
 tests/gold_tests/logging/log_retention.test.py     |  88 ++++++-------
 .../next_hop/strategies_ch/strategies_ch.test.py   |   2 +-
 .../next_hop/strategies_ch2/strategies_ch2.test.py |   2 +-
 .../zzz_strategies_peer.test.py                    |   2 +-
 .../zzz_strategies_peer2.test.py                   |   2 +-
 .../null_transform/null_transform.test.py          |   2 +-
 .../pluginTest/cert_update/cert_update.test.py     |   4 +-
 .../pluginTest/cookie_remap/bucketcookie.test.py   |   2 +-
 .../cookie_remap/collapseslashes.test.py           |   2 +-
 .../pluginTest/cookie_remap/connector.test.py      |   2 +-
 .../pluginTest/cookie_remap/existscookie.test.py   |   2 +-
 .../pluginTest/cookie_remap/matchcookie.test.py    |   2 +-
 .../pluginTest/cookie_remap/matchuri.test.py       |   2 +-
 .../pluginTest/cookie_remap/matrixparams.test.py   |   2 +-
 .../cookie_remap/notexistscookie.test.py           |   2 +-
 .../cookie_remap/pcollapseslashes.test.py          |   2 +-
 .../pluginTest/cookie_remap/psubstitute.test.py    |   2 +-
 .../pluginTest/cookie_remap/regexcookie.test.py    |   2 +-
 .../pluginTest/cookie_remap/setstatus.test.py      |   2 +-
 .../pluginTest/cookie_remap/subcookie.test.py      |   2 +-
 .../pluginTest/cookie_remap/substitute.test.py     |   2 +-
 .../header_rewrite/header_rewrite.test.py          |   2 +-
 .../header_rewrite/header_rewrite_l_value.test.py  |   2 +-
 .../header_rewrite/header_rewrite_url.test.py      |   4 +-
 tests/gold_tests/pluginTest/lua/lifecycle_stats.sh |   2 +-
 .../pluginTest/lua/lua_states_stats.test.py        |   6 +-
 .../pluginTest/lua/lua_watermark.test.py           |   2 +-
 .../pluginTest/parent_select/parent_select.test.py |   2 +-
 .../parent_select_optional_scheme_matching.test.py |   2 +-
 .../parent_select/parent_select_peer.test.py       |   2 +-
 .../parent_select/parent_select_peer2.test.py      |   2 +-
 .../prefetch_simple/prefetch_simple.test.py        |   2 +-
 .../gold/stats_over_http_0_stderr.gold             |   2 +-
 .../pluginTest/stek_share/stek_share.test.py       |  10 +-
 .../pluginTest/test_hooks/hook_add.test.py         |   2 +-
 .../test_hooks/ssn_start_delay_hook.test.py        |   2 +-
 .../pluginTest/traffic_dump/traffic_dump.test.py   |   8 +-
 .../traffic_dump/traffic_dump_http3.test.py        |   6 +-
 .../traffic_dump/traffic_dump_ip_filter.test.py    |   4 +-
 .../traffic_dump_response_body.test.py             |   2 +-
 .../traffic_dump/traffic_dump_sni_filter.test.py   |   4 +-
 .../transform/transaction_data_sink.test.py        |  14 +-
 .../pluginTest/uri_signing/uri_signing.test.py     |  15 ++-
 .../proxy_protocol/gold/proxy_serve_stale.gold     |  58 ---------
 .../proxy_protocol/proxy_serve_stale.test.py       | 101 +++++++--------
 .../replay/proxy_serve_stale.replay.yaml           | 142 ++++++++++++++++++++
 .../session_sharing/session_match.test.py          |   4 +-
 tests/gold_tests/shutdown/emergency.test.py        |   2 +-
 tests/gold_tests/shutdown/fatal.test.py            |   2 +-
 tests/gold_tests/tls/ssl_multicert_loader.test.py  |   2 +-
 tests/gold_tests/tls/tls_engine.test.py            |   2 +-
 .../gold_tests/tls/tls_hooks_client_verify.test.py |   8 +-
 tests/gold_tests/tls/tls_hooks_verify.test.py      |  14 +-
 .../tls/tls_origin_session_reuse.test.py           |  14 +-
 .../tls_hooks/gold/ts-close-out-close.gold         |   1 +
 tests/gold_tests/tls_hooks/tls_hooks.test.py       |   4 +-
 tests/gold_tests/tls_hooks/tls_hooks10.test.py     |   2 +-
 tests/gold_tests/tls_hooks/tls_hooks11.test.py     |   4 +-
 tests/gold_tests/tls_hooks/tls_hooks12.test.py     |   2 +-
 tests/gold_tests/tls_hooks/tls_hooks13.test.py     |   2 +-
 tests/gold_tests/tls_hooks/tls_hooks14.test.py     |   2 +-
 tests/gold_tests/tls_hooks/tls_hooks15.test.py     |   2 +-
 tests/gold_tests/tls_hooks/tls_hooks16.test.py     |   4 +-
 tests/gold_tests/tls_hooks/tls_hooks17.test.py     |   4 +-
 tests/gold_tests/tls_hooks/tls_hooks18.test.py     |   6 +-
 tests/gold_tests/tls_hooks/tls_hooks2.test.py      |   4 +-
 tests/gold_tests/tls_hooks/tls_hooks3.test.py      |   4 +-
 tests/gold_tests/tls_hooks/tls_hooks4.test.py      |  10 +-
 tests/gold_tests/tls_hooks/tls_hooks6.test.py      |   6 +-
 tests/gold_tests/tls_hooks/tls_hooks7.test.py      |   6 +-
 tests/gold_tests/tls_hooks/tls_hooks8.test.py      |   6 +-
 tests/gold_tests/tls_hooks/tls_hooks9.test.py      |   4 +-
 130 files changed, 1167 insertions(+), 564 deletions(-)

diff --cc tests/gold_tests/autest-site/trafficserver.test.ext
index e4f1b1921,fc0acd90b..3d4b5197f
--- a/tests/gold_tests/autest-site/trafficserver.test.ext
+++ b/tests/gold_tests/autest-site/trafficserver.test.ext
@@@ -40,7 -40,8 +40,8 @@@ default_log_data = 
  
  def MakeATSProcess(obj, name, command='traffic_server', select_ports=True,
                     enable_tls=False, enable_cache=True, enable_quic=False,
-                    block_for_debug=False, log_data=default_log_data, dump_runroot=True):
+                    block_for_debug=False, log_data=default_log_data,
 -                   use_traffic_out=True):
++                   use_traffic_out=True, dump_runroot=True):
      #####################################
      # common locations
  
diff --cc tests/gold_tests/pluginTest/lua/lua_states_stats.test.py
index 3ac32328f,7061f5eb8..e9239e47c
--- a/tests/gold_tests/pluginTest/lua/lua_states_stats.test.py
+++ b/tests/gold_tests/pluginTest/lua/lua_states_stats.test.py
@@@ -28,11 -28,7 +28,7 @@@ Test.ContinueOnFail = Tru
  # Define default ATS
  server = Test.MakeOriginServer("server")
  
- # It is necessary to redirect stderr to a file so it will be available for examination by a test run.
- ts = Test.MakeATSProcess(
-     "ts", command="traffic_server 2> " + Test.RunDirectory + "/ts.stderr.txt", select_ports=True)
- 
- ts.ReturnCode = 0
 -ts = Test.MakeATSProcess("ts", command="traffic_manager", select_ports=True)
++ts = Test.MakeATSProcess("ts", select_ports=True)
  
  Test.testName = "Lua states and stats"
  
diff --cc tests/gold_tests/pluginTest/transform/transaction_data_sink.test.py
index ecbe08068,172cc1c87..63686d772
--- a/tests/gold_tests/pluginTest/transform/transaction_data_sink.test.py
+++ b/tests/gold_tests/pluginTest/transform/transaction_data_sink.test.py
@@@ -24,75 -26,26 +24,75 @@@ Test.SkipUnless
      Condition.PluginExists('txn_data_sink.so'),
  )
  
 -replay_file = "transaction-with-body.replays.yaml"
 -server = Test.MakeVerifierServerProcess("server", replay_file)
  
 -ts = Test.MakeATSProcess("ts", enable_cache=False)
 -ts.Disk.records_config.update({
 -    'proxy.config.diags.debug.enabled': 1,
 -    'proxy.config.diags.debug.tags': 'txn_data_sink',
 -})
 -ts.Disk.remap_config.AddLine(
 -    f'map / http://localhost:{server.Variables.http_port}/'
 -)
 -ts.Disk.plugin_config.AddLine('txn_data_sink.so')
 -
 -# Verify that the various aspects of the expected debug output for the
 -# transaction are logged.
 -ts.Disk.traffic_out.Content = Testers.ContainsExpression(
 -    '"http1.1_response_body"',
 -    "The response body should be printed by the plugin.")
 -
 -tr = Test.AddTestRun()
 -tr.Processes.Default.StartBefore(server)
 -tr.Processes.Default.StartBefore(ts)
 -tr.AddVerifierClientProcess("client-1", replay_file, http_ports=[ts.Variables.port])
 +class TransactionDataSyncTest:
 +
 +    replay_file = "transaction-with-body.replays.yaml"
 +
 +    def __init__(self):
 +        self._setupOriginServer()
 +        self._setupTS()
 +
 +    def _setupOriginServer(self):
 +        self.server = Test.MakeVerifierServerProcess(
 +            "server", self.replay_file)
 +
 +    def _setupTS(self):
 +        self.ts = Test.MakeATSProcess("ts", enable_cache=False, enable_tls=True)
 +        self.ts.Disk.records_config.update({
 +            "proxy.config.ssl.server.cert.path": f'{self.ts.Variables.SSLDir}',
 +            "proxy.config.ssl.server.private_key.path": f'{self.ts.Variables.SSLDir}',
 +            "proxy.config.ssl.client.verify.server.policy": 'PERMISSIVE',
 +
 +            'proxy.config.diags.debug.enabled': 1,
 +            'proxy.config.diags.debug.tags': 'http|txn_data_sink',
 +        })
 +        self.ts.addDefaultSSLFiles()
 +        self.ts.Disk.remap_config.AddLine(
 +            f'map / http://localhost:{self.server.Variables.http_port}/'
 +        )
 +        self.ts.Disk.ssl_multicert_config.AddLine(
 +            'dest_ip=* ssl_cert_name=server.pem ssl_key_name=server.key'
 +        )
 +        self.ts.Disk.plugin_config.AddLine('txn_data_sink.so')
 +
 +        # All of the bodies that contained "not_dumped" were not configured to
 +        # be dumped. Therefore it is a bug if they show up in the logs.
-         self.ts.Streams.stderr += Testers.ExcludesExpression(
++        self.ts.Disk.traffic_out.Content += Testers.ExcludesExpression(
 +            'body_not_dumped',
 +            "An unexpected body was dumped.")
 +
 +        # Verify that each of the configured transaction bodies were dumped.
-         self.ts.Streams.stderr += Testers.ContainsExpression(
++        self.ts.Disk.traffic_out.Content += Testers.ContainsExpression(
 +            'http1.1_cl_response_body_dumped',
 +            "The expected HTTP/1.1 Content-Length response body was dumped.")
-         self.ts.Streams.stderr += Testers.ContainsExpression(
++        self.ts.Disk.traffic_out.Content += Testers.ContainsExpression(
 +            'http1.1_chunked_response_body_dumped',
 +            "The expected HTTP/1.1 chunked response body was dumped.")
-         self.ts.Streams.stderr += Testers.ContainsExpression(
++        self.ts.Disk.traffic_out.Content += Testers.ContainsExpression(
 +            'http1.1_cl_request_body_dumped',
 +            "The expected HTTP/1.1 Content-Length request body was dumped.")
-         self.ts.Streams.stderr += Testers.ContainsExpression(
++        self.ts.Disk.traffic_out.Content += Testers.ContainsExpression(
 +            'http1.1_chunked_request_body_dumped',
 +            "The expected HTTP/1.1 chunked request body was dumped.")
-         self.ts.Streams.stderr += Testers.ContainsExpression(
++        self.ts.Disk.traffic_out.Content += Testers.ContainsExpression(
 +            '"http2_response_body_dumped"',
 +            "The expected HTTP/2 response body was dumped.")
-         self.ts.Streams.stderr += Testers.ContainsExpression(
++        self.ts.Disk.traffic_out.Content += Testers.ContainsExpression(
 +            'http2_request_body_dumped',
 +            "The expected HTTP/2 request body was dumped.")
 +
 +    def run(self):
 +        """Configure a TestRun for the test."""
 +        tr = Test.AddTestRun()
 +        tr.Processes.Default.StartBefore(self.server)
 +        tr.Processes.Default.StartBefore(self.ts)
 +        tr.AddVerifierClientProcess(
 +            "client",
 +            self.replay_file,
 +            http_ports=[self.ts.Variables.port],
 +            https_ports=[self.ts.Variables.ssl_port],
 +            other_args='--thread-limit 1')
 +
 +
 +TransactionDataSyncTest().run()
diff --cc tests/gold_tests/tls/ssl_multicert_loader.test.py
index d22c7a5cc,6d8b2f5a0..5865c048d
--- a/tests/gold_tests/tls/ssl_multicert_loader.test.py
+++ b/tests/gold_tests/tls/ssl_multicert_loader.test.py
@@@ -105,9 -105,9 +105,9 @@@ tr4.Processes.Default.Command = 'echo W
  tr4.Processes.Default.ReturnCode = 0
  tr4.Processes.Default.StartBefore(ts2)
  
 -ts2.ReturnCode = 2
 +ts2.ReturnCode = 70  # ink_fatal will exit with EX_SOFTWARE.
  ts2.Ready = 0  # Need this to be 0 because we are testing shutdown, this is to make autest not think ats went away for a bad reason.
- ts2.Streams.All = Testers.ExcludesExpression(
+ ts.Disk.traffic_out.Content = Testers.ExcludesExpression(
      'Traffic Server is fully initialized',
      'process should fail when invalid certificate specified')
  ts2.Disk.diags_log.Content = Testers.IncludesExpression('FATAL: failed to load SSL certificate file', 'check diags.log"')