1616
1717#include " test/dynamic_test.h"
1818
19+ #include < memory>
20+ #include < string>
21+ #include < vector>
22+
1923#include < boost/filesystem/path.hpp>
2024
2125#include " absl/random/distributions.h"
@@ -135,11 +139,13 @@ class AdditionalStream {
135139 };
136140
137141 AdditionalStream (std::shared_ptr<proxy_wasm::PluginHandleBase> handle,
142+ const pb::Test* cfg,
138143 const TestHttpContext::Headers* request_headers,
139144 const TestHttpContext::Headers* response_headers,
140145 const std::vector<std::string>* request_body_chunks,
141146 const std::vector<std::string>* response_body_chunks)
142147 : handle_(handle),
148+ cfg_ (*cfg),
143149 request_headers_(request_headers),
144150 response_headers_(response_headers),
145151 request_body_chunks_(request_body_chunks),
@@ -155,6 +161,7 @@ class AdditionalStream {
155161
156162 private:
157163 std::shared_ptr<proxy_wasm::PluginHandleBase> handle_;
164+ const pb::Test& cfg_;
158165
159166 // These fields are owned by the caller, and assumed to remain valid and not
160167 // change over the lifetime of the AdditionalStream.
@@ -174,7 +181,7 @@ absl::Status AdditionalStream::Advance() {
174181 while (true ) { // cycle through actions until one is performed
175182 switch (next_action_) {
176183 case NextAction::kCreate :
177- stream_ = std::make_unique<TestHttpContext>(handle_);
184+ stream_ = std::make_unique<TestHttpContext>(handle_, &cfg_ );
178185 if (request_body_chunks_ != nullptr ) {
179186 remaining_request_body_chunks_.assign (request_body_chunks_->begin (),
180187 request_body_chunks_->end ());
@@ -321,7 +328,7 @@ void DynamicTest::TestBody() {
321328 CheckSideEffects (" plugin_init" , cfg_.plugin_init (), *root_context);
322329
323330 // Initialize stream.
324- auto stream = TestHttpContext (handle);
331+ auto stream = TestHttpContext (handle, &cfg_ );
325332 ASSERT_VM_HEALTH (" stream_init" , handle, stream);
326333 CheckSideEffects (" stream_init" , cfg_.stream_init (), stream);
327334
@@ -474,7 +481,7 @@ void DynamicTest::BenchStreamLifecycle(benchmark::State& state) {
474481
475482 std::vector<AdditionalStream> additional_streams;
476483 for (int i = 0 ; i < env_.num_additional_streams (); ++i) {
477- additional_streams.emplace_back (handle, /* request_headers=*/ nullptr ,
484+ additional_streams.emplace_back (handle, &cfg_, /* request_headers=*/ nullptr ,
478485 /* response_headers=*/ nullptr ,
479486 /* request_body_chunks=*/ nullptr ,
480487 /* response_body_chunks=*/ nullptr );
@@ -484,7 +491,7 @@ void DynamicTest::BenchStreamLifecycle(benchmark::State& state) {
484491 // Benchmark stream initialization and teardown.
485492 bool first = true ;
486493 for (auto _ : state) {
487- auto stream = TestHttpContext (handle);
494+ auto stream = TestHttpContext (handle, &cfg_ );
488495 benchmark::DoNotOptimize (stream);
489496 BM_RETURN_IF_FAILED (handle);
490497 stream.TearDown ();
@@ -530,9 +537,10 @@ void DynamicTest::BenchHttpHandlers(benchmark::State& state) {
530537 std::vector<AdditionalStream> additional_streams;
531538 for (int i = 0 ; i < env_.num_additional_streams (); ++i) {
532539 additional_streams.emplace_back (
533- handle, request_headers.has_value () ? &*request_headers : nullptr ,
534- response_headers.has_value () ? &*response_headers : nullptr ,
535- &*request_body_chunks, &*response_body_chunks);
540+ handle, &cfg_,
541+ request_headers.has_value () ? &*request_headers : nullptr ,
542+ response_headers.has_value () ? &*response_headers : nullptr ,
543+ &*request_body_chunks, &*response_body_chunks);
536544 // Advance twice, once to create the TestHttpContext and once to perform
537545 // an HTTP handler callback.
538546 BM_RETURN_IF_ERROR (additional_streams.back ().Advance ());
@@ -550,7 +558,7 @@ void DynamicTest::BenchHttpHandlers(benchmark::State& state) {
550558 // - include stream context create/destroy cost in handler benchmarks
551559 // - don't hand ownership of body chunks to stream context
552560 state.PauseTiming ();
553- stream.emplace (handle); // create/destroy TestHttpContext
561+ stream.emplace (handle, &cfg_ ); // create/destroy TestHttpContext
554562 std::vector<std::string> request_body_chunks_copies = *request_body_chunks;
555563 std::vector<std::string> response_body_chunks_copies =
556564 *response_body_chunks;
0 commit comments