diff --git a/source/extensions/filters/network/thrift_proxy/BUILD b/source/extensions/filters/network/thrift_proxy/BUILD index 4e9103ab9acd..25c6dfda0dda 100644 --- a/source/extensions/filters/network/thrift_proxy/BUILD +++ b/source/extensions/filters/network/thrift_proxy/BUILD @@ -38,7 +38,7 @@ envoy_cc_library( ":app_exception_lib", ":conn_manager_lib", ":decoder_lib", - ":protocol_lib", + ":protocol_interface", "//include/envoy/registry", "//source/common/config:utility_lib", "//source/extensions/filters/network:well_known_names", @@ -76,14 +76,24 @@ envoy_cc_library( ], ) +envoy_cc_library( + name = "decoder_events_lib", + hdrs = ["decoder_events.h"], + deps = [ + ":metadata_lib", + ":thrift_lib", + ], +) + envoy_cc_library( name = "decoder_lib", srcs = ["decoder.cc"], hdrs = ["decoder.h"], deps = [ - ":protocol_lib", + ":app_exception_lib", + ":protocol_interface", ":stats_lib", - ":transport_lib", + ":transport_interface", "//source/common/buffer:buffer_lib", "//source/extensions/filters/network/thrift_proxy/filters:filter_interface", ], @@ -105,9 +115,9 @@ envoy_cc_library( "protocol_converter.h", ], deps = [ + ":decoder_events_lib", ":protocol_interface", "//include/envoy/buffer:buffer_interface", - "//source/extensions/filters/network/thrift_proxy/filters:filter_interface", ], ) @@ -118,6 +128,7 @@ envoy_cc_library( ], external_deps = ["abseil_optional"], deps = [ + ":decoder_events_lib", ":metadata_lib", ":thrift_lib", "//include/envoy/buffer:buffer_interface", @@ -129,22 +140,59 @@ envoy_cc_library( ) envoy_cc_library( - name = "protocol_lib", + name = "auto_protocol_lib", + srcs = [ + "auto_protocol_impl.cc", + ], + hdrs = [ + "auto_protocol_impl.h", + ], + deps = [ + ":binary_protocol_lib", + ":buffer_helper_lib", + ":compact_protocol_lib", + ":protocol_interface", + "//source/common/common:macros", + ], +) + +envoy_cc_library( + name = "binary_protocol_lib", srcs = [ "binary_protocol_impl.cc", - "compact_protocol_impl.cc", - "protocol_impl.cc", ], hdrs = [ "binary_protocol_impl.h", + ], + deps = [ + ":buffer_helper_lib", + ":protocol_interface", + "//source/common/common:macros", + ], +) + +envoy_cc_library( + name = "compact_protocol_lib", + srcs = [ + "compact_protocol_impl.cc", + ], + hdrs = [ "compact_protocol_impl.h", - "protocol_impl.h", ], external_deps = ["abseil_optional"], deps = [ ":buffer_helper_lib", ":protocol_interface", - "//source/common/singleton:const_singleton", + "//source/common/common:macros", + ], +) + +envoy_cc_library( + name = "protocol_lib", + deps = [ + ":auto_protocol_lib", + ":binary_protocol_lib", + ":compact_protocol_lib", ], ) @@ -183,26 +231,76 @@ envoy_cc_library( ) envoy_cc_library( - name = "transport_lib", + name = "auto_transport_lib", + srcs = [ + "auto_transport_impl.cc", + ], + hdrs = [ + "auto_transport_impl.h", + ], + deps = [ + ":buffer_helper_lib", + ":framed_transport_lib", + ":header_transport_lib", + ":protocol_lib", + ":transport_interface", + ":unframed_transport_lib", + "//source/common/common:assert_lib", + ], +) + +envoy_cc_library( + name = "framed_transport_lib", srcs = [ "framed_transport_impl.cc", - "header_transport_impl.cc", - "transport_impl.cc", - "unframed_transport_impl.cc", ], hdrs = [ "framed_transport_impl.h", + ], + deps = [ + ":buffer_helper_lib", + ":transport_interface", + "//source/common/common:assert_lib", + ], +) + +envoy_cc_library( + name = "header_transport_lib", + srcs = [ + "header_transport_impl.cc", + ], + hdrs = [ "header_transport_impl.h", - "transport_impl.h", - "unframed_transport_impl.h", ], deps = [ ":app_exception_lib", ":buffer_helper_lib", - ":metadata_lib", - ":protocol_lib", ":transport_interface", "//source/common/common:assert_lib", - "//source/common/singleton:const_singleton", + ], +) + +envoy_cc_library( + name = "unframed_transport_lib", + srcs = [ + "unframed_transport_impl.cc", + ], + hdrs = [ + "unframed_transport_impl.h", + ], + deps = [ + ":buffer_helper_lib", + ":transport_interface", + "//source/common/common:assert_lib", + ], +) + +envoy_cc_library( + name = "transport_lib", + deps = [ + ":auto_transport_lib", + ":framed_transport_lib", + ":header_transport_lib", + ":unframed_transport_lib", ], ) diff --git a/source/extensions/filters/network/thrift_proxy/protocol_impl.cc b/source/extensions/filters/network/thrift_proxy/auto_protocol_impl.cc similarity index 96% rename from source/extensions/filters/network/thrift_proxy/protocol_impl.cc rename to source/extensions/filters/network/thrift_proxy/auto_protocol_impl.cc index 4d1cb437252a..9c446f87bdd0 100644 --- a/source/extensions/filters/network/thrift_proxy/protocol_impl.cc +++ b/source/extensions/filters/network/thrift_proxy/auto_protocol_impl.cc @@ -1,4 +1,4 @@ -#include "extensions/filters/network/thrift_proxy/protocol_impl.h" +#include "extensions/filters/network/thrift_proxy/auto_protocol_impl.h" #include diff --git a/source/extensions/filters/network/thrift_proxy/protocol_impl.h b/source/extensions/filters/network/thrift_proxy/auto_protocol_impl.h similarity index 100% rename from source/extensions/filters/network/thrift_proxy/protocol_impl.h rename to source/extensions/filters/network/thrift_proxy/auto_protocol_impl.h diff --git a/source/extensions/filters/network/thrift_proxy/transport_impl.cc b/source/extensions/filters/network/thrift_proxy/auto_transport_impl.cc similarity index 98% rename from source/extensions/filters/network/thrift_proxy/transport_impl.cc rename to source/extensions/filters/network/thrift_proxy/auto_transport_impl.cc index d7efc6024239..29081d80a584 100644 --- a/source/extensions/filters/network/thrift_proxy/transport_impl.cc +++ b/source/extensions/filters/network/thrift_proxy/auto_transport_impl.cc @@ -1,4 +1,4 @@ -#include "extensions/filters/network/thrift_proxy/transport_impl.h" +#include "extensions/filters/network/thrift_proxy/auto_transport_impl.h" #include "envoy/common/exception.h" diff --git a/source/extensions/filters/network/thrift_proxy/transport_impl.h b/source/extensions/filters/network/thrift_proxy/auto_transport_impl.h similarity index 97% rename from source/extensions/filters/network/thrift_proxy/transport_impl.h rename to source/extensions/filters/network/thrift_proxy/auto_transport_impl.h index 56eb9a522dc0..4db0109c88b2 100644 --- a/source/extensions/filters/network/thrift_proxy/transport_impl.h +++ b/source/extensions/filters/network/thrift_proxy/auto_transport_impl.h @@ -8,8 +8,6 @@ #include "extensions/filters/network/thrift_proxy/transport.h" -#include "absl/types/optional.h" - namespace Envoy { namespace Extensions { namespace NetworkFilters { diff --git a/source/extensions/filters/network/thrift_proxy/binary_protocol_impl.h b/source/extensions/filters/network/thrift_proxy/binary_protocol_impl.h index 75f5f2574c4a..aa832810803d 100644 --- a/source/extensions/filters/network/thrift_proxy/binary_protocol_impl.h +++ b/source/extensions/filters/network/thrift_proxy/binary_protocol_impl.h @@ -5,7 +5,7 @@ #include "envoy/buffer/buffer.h" #include "envoy/common/pure.h" -#include "extensions/filters/network/thrift_proxy/protocol_impl.h" +#include "extensions/filters/network/thrift_proxy/protocol.h" namespace Envoy { namespace Extensions { diff --git a/source/extensions/filters/network/thrift_proxy/compact_protocol_impl.h b/source/extensions/filters/network/thrift_proxy/compact_protocol_impl.h index b099290e3c22..fa88a0c98d80 100644 --- a/source/extensions/filters/network/thrift_proxy/compact_protocol_impl.h +++ b/source/extensions/filters/network/thrift_proxy/compact_protocol_impl.h @@ -6,7 +6,7 @@ #include "envoy/buffer/buffer.h" #include "envoy/common/pure.h" -#include "extensions/filters/network/thrift_proxy/protocol_impl.h" +#include "extensions/filters/network/thrift_proxy/protocol.h" #include "absl/types/optional.h" diff --git a/source/extensions/filters/network/thrift_proxy/config.cc b/source/extensions/filters/network/thrift_proxy/config.cc index 6246b89f2069..bba8a035a25b 100644 --- a/source/extensions/filters/network/thrift_proxy/config.cc +++ b/source/extensions/filters/network/thrift_proxy/config.cc @@ -8,15 +8,15 @@ #include "common/config/utility.h" +#include "extensions/filters/network/thrift_proxy/auto_protocol_impl.h" +#include "extensions/filters/network/thrift_proxy/auto_transport_impl.h" #include "extensions/filters/network/thrift_proxy/binary_protocol_impl.h" #include "extensions/filters/network/thrift_proxy/compact_protocol_impl.h" #include "extensions/filters/network/thrift_proxy/decoder.h" #include "extensions/filters/network/thrift_proxy/filters/filter_config.h" #include "extensions/filters/network/thrift_proxy/filters/well_known_names.h" #include "extensions/filters/network/thrift_proxy/framed_transport_impl.h" -#include "extensions/filters/network/thrift_proxy/protocol_impl.h" #include "extensions/filters/network/thrift_proxy/stats.h" -#include "extensions/filters/network/thrift_proxy/transport_impl.h" #include "extensions/filters/network/thrift_proxy/unframed_transport_impl.h" namespace Envoy { diff --git a/source/extensions/filters/network/thrift_proxy/conn_manager.cc b/source/extensions/filters/network/thrift_proxy/conn_manager.cc index e51918f64856..6b83435351b9 100644 --- a/source/extensions/filters/network/thrift_proxy/conn_manager.cc +++ b/source/extensions/filters/network/thrift_proxy/conn_manager.cc @@ -38,8 +38,8 @@ void ConnectionManager::dispatch() { try { bool underflow = false; while (!underflow) { - ThriftFilters::FilterStatus status = decoder_->onData(request_buffer_, underflow); - if (status == ThriftFilters::FilterStatus::StopIteration) { + FilterStatus status = decoder_->onData(request_buffer_, underflow); + if (status == FilterStatus::StopIteration) { stopped_ = true; break; } @@ -122,7 +122,7 @@ void ConnectionManager::onEvent(Network::ConnectionEvent event) { } } -ThriftFilters::DecoderFilter& ConnectionManager::newDecoderFilter() { +DecoderEventHandler& ConnectionManager::newDecoderEventHandler() { ENVOY_LOG(trace, "new decoder filter"); ActiveRpcPtr new_rpc(new ActiveRpc(*this)); @@ -141,17 +141,16 @@ bool ConnectionManager::ResponseDecoder::onData(Buffer::Instance& data) { return complete_; } -ThriftFilters::FilterStatus -ConnectionManager::ResponseDecoder::messageBegin(MessageMetadataSharedPtr metadata) { +FilterStatus ConnectionManager::ResponseDecoder::messageBegin(MessageMetadataSharedPtr metadata) { metadata_ = metadata; first_reply_field_ = (metadata->hasMessageType() && metadata->messageType() == MessageType::Reply); return ProtocolConverter::messageBegin(metadata); } -ThriftFilters::FilterStatus ConnectionManager::ResponseDecoder::fieldBegin(absl::string_view name, - FieldType field_type, - int16_t field_id) { +FilterStatus ConnectionManager::ResponseDecoder::fieldBegin(absl::string_view name, + FieldType field_type, + int16_t field_id) { if (first_reply_field_) { // Reply messages contain a struct where field 0 is the call result and fields 1+ are // exceptions, if defined. At most one field may be set. Therefore, the very first field we @@ -163,7 +162,7 @@ ThriftFilters::FilterStatus ConnectionManager::ResponseDecoder::fieldBegin(absl: return ProtocolConverter::fieldBegin(name, field_type, field_id); } -ThriftFilters::FilterStatus ConnectionManager::ResponseDecoder::transportEnd() { +FilterStatus ConnectionManager::ResponseDecoder::transportEnd() { ASSERT(metadata_ != nullptr); ConnectionManager& cm = parent_.parent_; @@ -205,11 +204,12 @@ ThriftFilters::FilterStatus ConnectionManager::ResponseDecoder::transportEnd() { break; } - return ThriftFilters::FilterStatus::Continue; + return FilterStatus::Continue; } -ThriftFilters::FilterStatus ConnectionManager::ActiveRpc::transportEnd() { - ASSERT(metadata_ != nullptr && metadata_->hasMessageType()); +FilterStatus ConnectionManager::ActiveRpc::transportEnd() { + ASSERT(metadata_ != nullptr); + ASSERT(metadata_->hasMessageType()); parent_.stats_.request_.inc(); @@ -233,6 +233,12 @@ ThriftFilters::FilterStatus ConnectionManager::ActiveRpc::transportEnd() { return decoder_filter_->transportEnd(); } +FilterStatus ConnectionManager::ActiveRpc::messageBegin(MessageMetadataSharedPtr metadata) { + metadata_ = metadata; + + return event_handler_->messageBegin(metadata); +} + void ConnectionManager::ActiveRpc::createFilterChain() { parent_.config_.filterFactory().createFilterChain(*this); } diff --git a/source/extensions/filters/network/thrift_proxy/conn_manager.h b/source/extensions/filters/network/thrift_proxy/conn_manager.h index 07da8742a778..5d4f4f9cf115 100644 --- a/source/extensions/filters/network/thrift_proxy/conn_manager.h +++ b/source/extensions/filters/network/thrift_proxy/conn_manager.h @@ -68,7 +68,7 @@ class ConnectionManager : public Network::ReadFilter, void onBelowWriteBufferLowWatermark() override {} // DecoderCallbacks - ThriftFilters::DecoderFilter& newDecoderFilter() override; + DecoderEventHandler& newDecoderEventHandler() override; private: struct ActiveRpc; @@ -91,17 +91,17 @@ class ConnectionManager : public Network::ReadFilter, bool onData(Buffer::Instance& data); // ProtocolConverter - ThriftFilters::FilterStatus messageBegin(MessageMetadataSharedPtr metadata) override; - ThriftFilters::FilterStatus fieldBegin(absl::string_view name, FieldType field_type, - int16_t field_id) override; - ThriftFilters::FilterStatus transportBegin(MessageMetadataSharedPtr metadata) override { + FilterStatus messageBegin(MessageMetadataSharedPtr metadata) override; + FilterStatus fieldBegin(absl::string_view name, FieldType field_type, + int16_t field_id) override; + FilterStatus transportBegin(MessageMetadataSharedPtr metadata) override { UNREFERENCED_PARAMETER(metadata); - return ThriftFilters::FilterStatus::Continue; + return FilterStatus::Continue; } - ThriftFilters::FilterStatus transportEnd() override; + FilterStatus transportEnd() override; // DecoderCallbacks - ThriftFilters::DecoderFilter& newDecoderFilter() override { return *this; } + DecoderEventHandler& newDecoderEventHandler() override { return *this; } ActiveRpc& parent_; DecoderPtr decoder_; @@ -116,7 +116,7 @@ class ConnectionManager : public Network::ReadFilter, // ActiveRpc tracks request/response pairs. struct ActiveRpc : LinkedObject, public Event::DeferredDeletable, - public ThriftFilters::DecoderFilter, + public DelegatingDecoderEventHandler, public ThriftFilters::DecoderFilterCallbacks, public ThriftFilters::FilterChainFactoryCallbacks { ActiveRpc(ConnectionManager& parent) @@ -133,64 +133,9 @@ class ConnectionManager : public Network::ReadFilter, } } - // ThriftFilters::DecoderFilter - void onDestroy() override { NOT_IMPLEMENTED_GCOVR_EXCL_LINE; } - void setDecoderFilterCallbacks(ThriftFilters::DecoderFilterCallbacks&) override { - NOT_IMPLEMENTED_GCOVR_EXCL_LINE; - } - void resetUpstreamConnection() override { NOT_IMPLEMENTED_GCOVR_EXCL_LINE; } - ThriftFilters::FilterStatus transportBegin(MessageMetadataSharedPtr metadata) override { - return decoder_filter_->transportBegin(metadata); - } - ThriftFilters::FilterStatus transportEnd() override; - ThriftFilters::FilterStatus messageBegin(MessageMetadataSharedPtr metadata) override { - metadata_ = metadata; - return decoder_filter_->messageBegin(metadata); - } - ThriftFilters::FilterStatus messageEnd() override { return decoder_filter_->messageEnd(); } - ThriftFilters::FilterStatus structBegin(absl::string_view name) override { - return decoder_filter_->structBegin(name); - } - ThriftFilters::FilterStatus structEnd() override { return decoder_filter_->structEnd(); } - ThriftFilters::FilterStatus fieldBegin(absl::string_view name, FieldType field_type, - int16_t field_id) override { - return decoder_filter_->fieldBegin(name, field_type, field_id); - } - ThriftFilters::FilterStatus fieldEnd() override { return decoder_filter_->fieldEnd(); } - ThriftFilters::FilterStatus boolValue(bool value) override { - return decoder_filter_->boolValue(value); - } - ThriftFilters::FilterStatus byteValue(uint8_t value) override { - return decoder_filter_->byteValue(value); - } - ThriftFilters::FilterStatus int16Value(int16_t value) override { - return decoder_filter_->int16Value(value); - } - ThriftFilters::FilterStatus int32Value(int32_t value) override { - return decoder_filter_->int32Value(value); - } - ThriftFilters::FilterStatus int64Value(int64_t value) override { - return decoder_filter_->int64Value(value); - } - ThriftFilters::FilterStatus doubleValue(double value) override { - return decoder_filter_->doubleValue(value); - } - ThriftFilters::FilterStatus stringValue(absl::string_view value) override { - return decoder_filter_->stringValue(value); - } - ThriftFilters::FilterStatus mapBegin(FieldType key_type, FieldType value_type, - uint32_t size) override { - return decoder_filter_->mapBegin(key_type, value_type, size); - } - ThriftFilters::FilterStatus mapEnd() override { return decoder_filter_->mapEnd(); } - ThriftFilters::FilterStatus listBegin(FieldType elem_type, uint32_t size) override { - return decoder_filter_->listBegin(elem_type, size); - } - ThriftFilters::FilterStatus listEnd() override { return decoder_filter_->listEnd(); } - ThriftFilters::FilterStatus setBegin(FieldType elem_type, uint32_t size) override { - return decoder_filter_->setBegin(elem_type, size); - } - ThriftFilters::FilterStatus setEnd() override { return decoder_filter_->setEnd(); } + // DecoderEventHandler + FilterStatus transportEnd() override; + FilterStatus messageBegin(MessageMetadataSharedPtr metadata) override; // ThriftFilters::DecoderFilterCallbacks uint64_t streamId() const override { return stream_id_; } @@ -213,6 +158,7 @@ class ConnectionManager : public Network::ReadFilter, // TODO(zuercher): support multiple filters filter->setDecoderFilterCallbacks(*this); decoder_filter_ = filter; + event_handler_ = decoder_filter_.get(); } void createFilterChain(); diff --git a/source/extensions/filters/network/thrift_proxy/decoder.cc b/source/extensions/filters/network/thrift_proxy/decoder.cc index f2219d68acb5..c6d4b470ea89 100644 --- a/source/extensions/filters/network/thrift_proxy/decoder.cc +++ b/source/extensions/filters/network/thrift_proxy/decoder.cc @@ -8,7 +8,6 @@ #include "common/common/macros.h" #include "extensions/filters/network/thrift_proxy/app_exception_impl.h" -#include "extensions/filters/network/thrift_proxy/protocol_impl.h" namespace Envoy { namespace Extensions { @@ -24,7 +23,7 @@ DecoderStateMachine::DecoderStatus DecoderStateMachine::messageBegin(Buffer::Ins stack_.clear(); stack_.emplace_back(Frame(ProtocolState::MessageEnd)); - return DecoderStatus(ProtocolState::StructBegin, filter_.messageBegin(metadata_)); + return DecoderStatus(ProtocolState::StructBegin, handler_.messageBegin(metadata_)); } // MessageEnd -> Done @@ -33,7 +32,7 @@ DecoderStateMachine::DecoderStatus DecoderStateMachine::messageEnd(Buffer::Insta return DecoderStatus(ProtocolState::WaitForData); } - return DecoderStatus(ProtocolState::Done, filter_.messageEnd()); + return DecoderStatus(ProtocolState::Done, handler_.messageEnd()); } // StructBegin -> FieldBegin @@ -43,7 +42,7 @@ DecoderStateMachine::DecoderStatus DecoderStateMachine::structBegin(Buffer::Inst return DecoderStatus(ProtocolState::WaitForData); } - return DecoderStatus(ProtocolState::FieldBegin, filter_.structBegin(absl::string_view(name))); + return DecoderStatus(ProtocolState::FieldBegin, handler_.structBegin(absl::string_view(name))); } // StructEnd -> stack's return state @@ -53,7 +52,7 @@ DecoderStateMachine::DecoderStatus DecoderStateMachine::structEnd(Buffer::Instan } ProtocolState next_state = popReturnState(); - return DecoderStatus(next_state, filter_.structEnd()); + return DecoderStatus(next_state, handler_.structEnd()); } // FieldBegin -> FieldValue, or @@ -67,13 +66,13 @@ DecoderStateMachine::DecoderStatus DecoderStateMachine::fieldBegin(Buffer::Insta } if (field_type == FieldType::Stop) { - return DecoderStatus(ProtocolState::StructEnd, ThriftFilters::FilterStatus::Continue); + return DecoderStatus(ProtocolState::StructEnd, FilterStatus::Continue); } stack_.emplace_back(Frame(ProtocolState::FieldEnd, field_type)); return DecoderStatus(ProtocolState::FieldValue, - filter_.fieldBegin(absl::string_view(name), field_type, field_id)); + handler_.fieldBegin(absl::string_view(name), field_type, field_id)); } // FieldValue -> FieldEnd (via stack return state) @@ -92,7 +91,7 @@ DecoderStateMachine::DecoderStatus DecoderStateMachine::fieldEnd(Buffer::Instanc popReturnState(); - return DecoderStatus(ProtocolState::FieldBegin, filter_.fieldEnd()); + return DecoderStatus(ProtocolState::FieldBegin, handler_.fieldEnd()); } // ListBegin -> ListValue @@ -105,7 +104,7 @@ DecoderStateMachine::DecoderStatus DecoderStateMachine::listBegin(Buffer::Instan stack_.emplace_back(Frame(ProtocolState::ListEnd, elem_type, size)); - return DecoderStatus(ProtocolState::ListValue, filter_.listBegin(elem_type, size)); + return DecoderStatus(ProtocolState::ListValue, handler_.listBegin(elem_type, size)); } // ListValue -> ListValue, ListBegin, MapBegin, SetBegin, StructBegin (depending on value type), or @@ -114,7 +113,7 @@ DecoderStateMachine::DecoderStatus DecoderStateMachine::listValue(Buffer::Instan ASSERT(!stack_.empty()); Frame& frame = stack_.back(); if (frame.remaining_ == 0) { - return DecoderStatus(popReturnState(), ThriftFilters::FilterStatus::Continue); + return DecoderStatus(popReturnState(), FilterStatus::Continue); } frame.remaining_--; @@ -128,7 +127,7 @@ DecoderStateMachine::DecoderStatus DecoderStateMachine::listEnd(Buffer::Instance } ProtocolState next_state = popReturnState(); - return DecoderStatus(next_state, filter_.listEnd()); + return DecoderStatus(next_state, handler_.listEnd()); } // MapBegin -> MapKey @@ -141,7 +140,7 @@ DecoderStateMachine::DecoderStatus DecoderStateMachine::mapBegin(Buffer::Instanc stack_.emplace_back(Frame(ProtocolState::MapEnd, key_type, value_type, size)); - return DecoderStatus(ProtocolState::MapKey, filter_.mapBegin(key_type, value_type, size)); + return DecoderStatus(ProtocolState::MapKey, handler_.mapBegin(key_type, value_type, size)); } // MapKey -> MapValue, ListBegin, MapBegin, SetBegin, StructBegin (depending on key type), or @@ -150,7 +149,7 @@ DecoderStateMachine::DecoderStatus DecoderStateMachine::mapKey(Buffer::Instance& ASSERT(!stack_.empty()); Frame& frame = stack_.back(); if (frame.remaining_ == 0) { - return DecoderStatus(popReturnState(), ThriftFilters::FilterStatus::Continue); + return DecoderStatus(popReturnState(), FilterStatus::Continue); } return handleValue(buffer, frame.elem_type_, ProtocolState::MapValue); @@ -174,7 +173,7 @@ DecoderStateMachine::DecoderStatus DecoderStateMachine::mapEnd(Buffer::Instance& } ProtocolState next_state = popReturnState(); - return DecoderStatus(next_state, filter_.mapEnd()); + return DecoderStatus(next_state, handler_.mapEnd()); } // SetBegin -> SetValue @@ -187,7 +186,7 @@ DecoderStateMachine::DecoderStatus DecoderStateMachine::setBegin(Buffer::Instanc stack_.emplace_back(Frame(ProtocolState::SetEnd, elem_type, size)); - return DecoderStatus(ProtocolState::SetValue, filter_.setBegin(elem_type, size)); + return DecoderStatus(ProtocolState::SetValue, handler_.setBegin(elem_type, size)); } // SetValue -> SetValue, ListBegin, MapBegin, SetBegin, StructBegin (depending on value type), or @@ -196,7 +195,7 @@ DecoderStateMachine::DecoderStatus DecoderStateMachine::setValue(Buffer::Instanc ASSERT(!stack_.empty()); Frame& frame = stack_.back(); if (frame.remaining_ == 0) { - return DecoderStatus(popReturnState(), ThriftFilters::FilterStatus::Continue); + return DecoderStatus(popReturnState(), FilterStatus::Continue); } frame.remaining_--; @@ -210,7 +209,7 @@ DecoderStateMachine::DecoderStatus DecoderStateMachine::setEnd(Buffer::Instance& } ProtocolState next_state = popReturnState(); - return DecoderStatus(next_state, filter_.setEnd()); + return DecoderStatus(next_state, handler_.setEnd()); } DecoderStateMachine::DecoderStatus DecoderStateMachine::handleValue(Buffer::Instance& buffer, @@ -220,64 +219,64 @@ DecoderStateMachine::DecoderStatus DecoderStateMachine::handleValue(Buffer::Inst case FieldType::Bool: { bool value{}; if (proto_.readBool(buffer, value)) { - return DecoderStatus(return_state, filter_.boolValue(value)); + return DecoderStatus(return_state, handler_.boolValue(value)); } break; } case FieldType::Byte: { uint8_t value{}; if (proto_.readByte(buffer, value)) { - return DecoderStatus(return_state, filter_.byteValue(value)); + return DecoderStatus(return_state, handler_.byteValue(value)); } break; } case FieldType::I16: { int16_t value{}; if (proto_.readInt16(buffer, value)) { - return DecoderStatus(return_state, filter_.int16Value(value)); + return DecoderStatus(return_state, handler_.int16Value(value)); } break; } case FieldType::I32: { int32_t value{}; if (proto_.readInt32(buffer, value)) { - return DecoderStatus(return_state, filter_.int32Value(value)); + return DecoderStatus(return_state, handler_.int32Value(value)); } break; } case FieldType::I64: { int64_t value{}; if (proto_.readInt64(buffer, value)) { - return DecoderStatus(return_state, filter_.int64Value(value)); + return DecoderStatus(return_state, handler_.int64Value(value)); } break; } case FieldType::Double: { double value{}; if (proto_.readDouble(buffer, value)) { - return DecoderStatus(return_state, filter_.doubleValue(value)); + return DecoderStatus(return_state, handler_.doubleValue(value)); } break; } case FieldType::String: { std::string value; if (proto_.readString(buffer, value)) { - return DecoderStatus(return_state, filter_.stringValue(value)); + return DecoderStatus(return_state, handler_.stringValue(value)); } break; } case FieldType::Struct: stack_.emplace_back(Frame(return_state)); - return DecoderStatus(ProtocolState::StructBegin, ThriftFilters::FilterStatus::Continue); + return DecoderStatus(ProtocolState::StructBegin, FilterStatus::Continue); case FieldType::Map: stack_.emplace_back(Frame(return_state)); - return DecoderStatus(ProtocolState::MapBegin, ThriftFilters::FilterStatus::Continue); + return DecoderStatus(ProtocolState::MapBegin, FilterStatus::Continue); case FieldType::List: stack_.emplace_back(Frame(return_state)); - return DecoderStatus(ProtocolState::ListBegin, ThriftFilters::FilterStatus::Continue); + return DecoderStatus(ProtocolState::ListBegin, FilterStatus::Continue); case FieldType::Set: stack_.emplace_back(Frame(return_state)); - return DecoderStatus(ProtocolState::SetBegin, ThriftFilters::FilterStatus::Continue); + return DecoderStatus(ProtocolState::SetBegin, FilterStatus::Continue); default: throw EnvoyException(fmt::format("unknown field type {}", static_cast(elem_type))); } @@ -343,7 +342,7 @@ ProtocolState DecoderStateMachine::run(Buffer::Instance& buffer) { state_ = s.next_state_; ASSERT(s.filter_status_.has_value()); - if (s.filter_status_.value() == ThriftFilters::FilterStatus::StopIteration) { + if (s.filter_status_.value() == FilterStatus::StopIteration) { return ProtocolState::StopIteration; } } @@ -361,7 +360,7 @@ void Decoder::complete() { frame_ended_ = false; } -ThriftFilters::FilterStatus Decoder::onData(Buffer::Instance& data, bool& buffer_underflow) { +FilterStatus Decoder::onData(Buffer::Instance& data, bool& buffer_underflow) { ENVOY_LOG(debug, "thrift: {} bytes available", data.length()); buffer_underflow = false; @@ -369,7 +368,7 @@ ThriftFilters::FilterStatus Decoder::onData(Buffer::Instance& data, bool& buffer // Continuation after filter stopped iteration on transportComplete callback. complete(); buffer_underflow = (data.length() == 0); - return ThriftFilters::FilterStatus::Continue; + return FilterStatus::Continue; } if (!frame_started_) { @@ -381,7 +380,7 @@ ThriftFilters::FilterStatus Decoder::onData(Buffer::Instance& data, bool& buffer if (!transport_->decodeFrameStart(data, *metadata_)) { ENVOY_LOG(debug, "thrift: need more data for {} transport start", transport_->name()); buffer_underflow = true; - return ThriftFilters::FilterStatus::Continue; + return FilterStatus::Continue; } ENVOY_LOG(debug, "thrift: {} transport started", transport_->name()); @@ -404,13 +403,13 @@ ThriftFilters::FilterStatus Decoder::onData(Buffer::Instance& data, bool& buffer throw AppException(ex_type, ex_msg); } - request_ = std::make_unique(callbacks_.newDecoderFilter()); + request_ = std::make_unique(callbacks_.newDecoderEventHandler()); frame_started_ = true; state_machine_ = - std::make_unique(*protocol_, metadata_, request_->filter_); + std::make_unique(*protocol_, metadata_, request_->handler_); - if (request_->filter_.transportBegin(metadata_) == ThriftFilters::FilterStatus::StopIteration) { - return ThriftFilters::FilterStatus::StopIteration; + if (request_->handler_.transportBegin(metadata_) == FilterStatus::StopIteration) { + return FilterStatus::StopIteration; } } @@ -423,10 +422,10 @@ ThriftFilters::FilterStatus Decoder::onData(Buffer::Instance& data, bool& buffer if (rv == ProtocolState::WaitForData) { ENVOY_LOG(debug, "thrift: wait for data"); buffer_underflow = true; - return ThriftFilters::FilterStatus::Continue; + return FilterStatus::Continue; } else if (rv == ProtocolState::StopIteration) { ENVOY_LOG(debug, "thrift: wait for continuation"); - return ThriftFilters::FilterStatus::StopIteration; + return FilterStatus::StopIteration; } ASSERT(rv == ProtocolState::Done); @@ -435,21 +434,21 @@ ThriftFilters::FilterStatus Decoder::onData(Buffer::Instance& data, bool& buffer if (!transport_->decodeFrameEnd(data)) { ENVOY_LOG(debug, "thrift: need more data for {} transport end", transport_->name()); buffer_underflow = true; - return ThriftFilters::FilterStatus::Continue; + return FilterStatus::Continue; } frame_ended_ = true; metadata_.reset(); ENVOY_LOG(debug, "thrift: {} transport ended", transport_->name()); - if (request_->filter_.transportEnd() == ThriftFilters::FilterStatus::StopIteration) { - return ThriftFilters::FilterStatus::StopIteration; + if (request_->handler_.transportEnd() == FilterStatus::StopIteration) { + return FilterStatus::StopIteration; } // Reset for next frame. complete(); buffer_underflow = (data.length() == 0); - return ThriftFilters::FilterStatus::Continue; + return FilterStatus::Continue; } } // namespace ThriftProxy diff --git a/source/extensions/filters/network/thrift_proxy/decoder.h b/source/extensions/filters/network/thrift_proxy/decoder.h index 660e375e98b7..cda5d75b4a8b 100644 --- a/source/extensions/filters/network/thrift_proxy/decoder.h +++ b/source/extensions/filters/network/thrift_proxy/decoder.h @@ -64,8 +64,9 @@ class ProtocolStateNameValues { class DecoderStateMachine { public: DecoderStateMachine(Protocol& proto, MessageMetadataSharedPtr& metadata, - ThriftFilters::DecoderFilter& filter) - : proto_(proto), metadata_(metadata), filter_(filter), state_(ProtocolState::MessageBegin) {} + DecoderEventHandler& handler) + : proto_(proto), metadata_(metadata), handler_(handler), state_(ProtocolState::MessageBegin) { + } /** * Consumes as much data from the configured Buffer as possible and executes the decoding state @@ -120,11 +121,11 @@ class DecoderStateMachine { struct DecoderStatus { DecoderStatus(ProtocolState next_state) : next_state_(next_state), filter_status_{} {}; - DecoderStatus(ProtocolState next_state, ThriftFilters::FilterStatus filter_status) + DecoderStatus(ProtocolState next_state, FilterStatus filter_status) : next_state_(next_state), filter_status_(filter_status){}; ProtocolState next_state_; - absl::optional filter_status_; + absl::optional filter_status_; }; // These functions map directly to the matching ProtocolState values. Each returns the next state @@ -164,7 +165,7 @@ class DecoderStateMachine { Protocol& proto_; MessageMetadataSharedPtr metadata_; - ThriftFilters::DecoderFilter& filter_; + DecoderEventHandler& handler_; ProtocolState state_; std::vector stack_; }; @@ -176,9 +177,9 @@ class DecoderCallbacks { virtual ~DecoderCallbacks() {} /** - * @return DecoderFilter& a new DecoderFilter for a message. + * @return DecoderEventHandler& a new DecoderEventHandler for a message. */ - virtual ThriftFilters::DecoderFilter& newDecoderFilter() PURE; + virtual DecoderEventHandler& newDecoderEventHandler() PURE; }; /** @@ -194,20 +195,20 @@ class Decoder : public Logger::Loggable { * * @param data a Buffer containing Thrift protocol data * @param buffer_underflow bool set to true if more data is required to continue decoding - * @return ThriftFilters::FilterStatus::StopIteration when waiting for filter continuation, + * @return FilterStatus::StopIteration when waiting for filter continuation, * Continue otherwise. * @throw EnvoyException on Thrift protocol errors */ - ThriftFilters::FilterStatus onData(Buffer::Instance& data, bool& buffer_underflow); + FilterStatus onData(Buffer::Instance& data, bool& buffer_underflow); TransportType transportType() { return transport_->type(); } ProtocolType protocolType() { return protocol_->type(); } private: struct ActiveRequest { - ActiveRequest(ThriftFilters::DecoderFilter& filter) : filter_(filter) {} + ActiveRequest(DecoderEventHandler& handler) : handler_(handler) {} - ThriftFilters::DecoderFilter& filter_; + DecoderEventHandler& handler_; }; typedef std::unique_ptr ActiveRequestPtr; diff --git a/source/extensions/filters/network/thrift_proxy/decoder_events.h b/source/extensions/filters/network/thrift_proxy/decoder_events.h new file mode 100644 index 000000000000..b894637f02ab --- /dev/null +++ b/source/extensions/filters/network/thrift_proxy/decoder_events.h @@ -0,0 +1,189 @@ +#pragma once + +#include "extensions/filters/network/thrift_proxy/metadata.h" +#include "extensions/filters/network/thrift_proxy/thrift.h" + +namespace Envoy { +namespace Extensions { +namespace NetworkFilters { +namespace ThriftProxy { + +enum class FilterStatus { + // Continue filter chain iteration. + Continue, + + // Stop iterating over filters in the filter chain. Iteration must be explicitly restarted via + // continueDecoding(). + StopIteration +}; + +class DecoderEventHandler { +public: + virtual ~DecoderEventHandler() {} + + /** + * Indicates the start of a Thrift transport frame was detected. Unframed transports generate + * simulated start messages. + * @param metadata MessageMetadataSharedPtr describing as much as is currently known about the + * message + */ + virtual FilterStatus transportBegin(MessageMetadataSharedPtr metadata) PURE; + + /** + * Indicates the end of a Thrift transport frame was detected. Unframed transport generate + * simulated complete messages. + */ + virtual FilterStatus transportEnd() PURE; + + /** + * Indicates that the start of a Thrift protocol message was detected. + * @param metadata MessageMetadataSharedPtr describing the message + * @return FilterStatus to indicate if filter chain iteration should continue + */ + virtual FilterStatus messageBegin(MessageMetadataSharedPtr metadata) PURE; + + /** + * Indicates that the end of a Thrift protocol message was detected. + * @return FilterStatus to indicate if filter chain iteration should continue + */ + virtual FilterStatus messageEnd() PURE; + + /** + * Indicates that the start of a Thrift protocol struct was detected. + * @param name the name of the struct, if available + * @return FilterStatus to indicate if filter chain iteration should continue + */ + virtual FilterStatus structBegin(absl::string_view name) PURE; + + /** + * Indicates that the end of a Thrift protocol struct was detected. + * @return FilterStatus to indicate if filter chain iteration should continue + */ + virtual FilterStatus structEnd() PURE; + + /** + * Indicates that the start of Thrift protocol struct field was detected. + * @param name the name of the field, if available + * @param field_type the type of the field + * @param field_id the field id + * @return FilterStatus to indicate if filter chain iteration should continue + */ + virtual FilterStatus fieldBegin(absl::string_view name, FieldType field_type, + int16_t field_id) PURE; + + /** + * Indicates that the end of a Thrift protocol struct field was detected. + * @return FilterStatus to indicate if filter chain iteration should continue + */ + virtual FilterStatus fieldEnd() PURE; + + /** + * A struct field, map key, map value, list element or set element was detected. + * @param value type value of the field + * @return FilterStatus to indicate if filter chain iteration should continue + */ + virtual FilterStatus boolValue(bool value) PURE; + virtual FilterStatus byteValue(uint8_t value) PURE; + virtual FilterStatus int16Value(int16_t value) PURE; + virtual FilterStatus int32Value(int32_t value) PURE; + virtual FilterStatus int64Value(int64_t value) PURE; + virtual FilterStatus doubleValue(double value) PURE; + virtual FilterStatus stringValue(absl::string_view value) PURE; + + /** + * Indicates the start of a Thrift protocol map was detected. + * @param key_type the map key type + * @param value_type the map value type + * @param size the number of key-value pairs + * @return FilterStatus to indicate if filter chain iteration should continue + */ + virtual FilterStatus mapBegin(FieldType key_type, FieldType value_type, uint32_t size) PURE; + + /** + * Indicates that the end of a Thrift protocol map was detected. + * @return FilterStatus to indicate if filter chain iteration should continue + */ + virtual FilterStatus mapEnd() PURE; + + /** + * Indicates the start of a Thrift protocol list was detected. + * @param elem_type the list value type + * @param size the number of values in the list + * @return FilterStatus to indicate if filter chain iteration should continue + */ + virtual FilterStatus listBegin(FieldType elem_type, uint32_t size) PURE; + + /** + * Indicates that the end of a Thrift protocol list was detected. + * @return FilterStatus to indicate if filter chain iteration should continue + */ + virtual FilterStatus listEnd() PURE; + + /** + * Indicates the start of a Thrift protocol set was detected. + * @param elem_type the set value type + * @param size the number of values in the set + * @return FilterStatus to indicate if filter chain iteration should continue + */ + virtual FilterStatus setBegin(FieldType elem_type, uint32_t size) PURE; + + /** + * Indicates that the end of a Thrift protocol set was detected. + * @return FilterStatus to indicate if filter chain iteration should continue + */ + virtual FilterStatus setEnd() PURE; +}; + +typedef std::shared_ptr DecoderEventHandlerSharedPtr; + +class DelegatingDecoderEventHandler : public virtual DecoderEventHandler { +public: + virtual ~DelegatingDecoderEventHandler() {} + + // DecoderEventHandler + FilterStatus transportBegin(MessageMetadataSharedPtr metadata) override { + return event_handler_->transportBegin(metadata); + } + FilterStatus transportEnd() override { return event_handler_->transportEnd(); } + FilterStatus messageBegin(MessageMetadataSharedPtr metadata) override { + return event_handler_->messageBegin(metadata); + }; + FilterStatus messageEnd() override { return event_handler_->messageEnd(); } + FilterStatus structBegin(absl::string_view name) override { + return event_handler_->structBegin(name); + } + FilterStatus structEnd() override { return event_handler_->structEnd(); } + FilterStatus fieldBegin(absl::string_view name, FieldType field_type, int16_t field_id) override { + return event_handler_->fieldBegin(name, field_type, field_id); + } + FilterStatus fieldEnd() override { return event_handler_->fieldEnd(); } + FilterStatus boolValue(bool value) override { return event_handler_->boolValue(value); } + FilterStatus byteValue(uint8_t value) override { return event_handler_->byteValue(value); } + FilterStatus int16Value(int16_t value) override { return event_handler_->int16Value(value); } + FilterStatus int32Value(int32_t value) override { return event_handler_->int32Value(value); } + FilterStatus int64Value(int64_t value) override { return event_handler_->int64Value(value); } + FilterStatus doubleValue(double value) override { return event_handler_->doubleValue(value); } + FilterStatus stringValue(absl::string_view value) override { + return event_handler_->stringValue(value); + } + FilterStatus mapBegin(FieldType key_type, FieldType value_type, uint32_t size) override { + return event_handler_->mapBegin(key_type, value_type, size); + } + FilterStatus mapEnd() override { return event_handler_->mapEnd(); } + FilterStatus listBegin(FieldType elem_type, uint32_t size) override { + return event_handler_->listBegin(elem_type, size); + } + FilterStatus listEnd() override { return event_handler_->listEnd(); } + FilterStatus setBegin(FieldType elem_type, uint32_t size) override { + return event_handler_->setBegin(elem_type, size); + } + FilterStatus setEnd() override { return event_handler_->setEnd(); } + +protected: + DecoderEventHandler* event_handler_{}; +}; + +} // namespace ThriftProxy +} // namespace NetworkFilters +} // namespace Extensions +} // namespace Envoy diff --git a/source/extensions/filters/network/thrift_proxy/filters/BUILD b/source/extensions/filters/network/thrift_proxy/filters/BUILD index 7f374b1fe5fd..b31719befc0f 100644 --- a/source/extensions/filters/network/thrift_proxy/filters/BUILD +++ b/source/extensions/filters/network/thrift_proxy/filters/BUILD @@ -31,12 +31,11 @@ envoy_cc_library( envoy_cc_library( name = "filter_interface", hdrs = ["filter.h"], - external_deps = ["abseil_optional"], deps = [ "//include/envoy/buffer:buffer_interface", "//include/envoy/network:connection_interface", - "//source/extensions/filters/network/thrift_proxy:protocol_interface", - "//source/extensions/filters/network/thrift_proxy:transport_interface", + "//source/extensions/filters/network/thrift_proxy:decoder_events_lib", + "//source/extensions/filters/network/thrift_proxy:thrift_lib", "//source/extensions/filters/network/thrift_proxy/router:router_interface", ], ) diff --git a/source/extensions/filters/network/thrift_proxy/filters/filter.h b/source/extensions/filters/network/thrift_proxy/filters/filter.h index 476e02cadf0b..304db348d9e2 100644 --- a/source/extensions/filters/network/thrift_proxy/filters/filter.h +++ b/source/extensions/filters/network/thrift_proxy/filters/filter.h @@ -7,13 +7,12 @@ #include "envoy/buffer/buffer.h" #include "envoy/network/connection.h" +#include "extensions/filters/network/thrift_proxy/decoder_events.h" #include "extensions/filters/network/thrift_proxy/protocol.h" #include "extensions/filters/network/thrift_proxy/router/router.h" +#include "extensions/filters/network/thrift_proxy/thrift.h" #include "extensions/filters/network/thrift_proxy/transport.h" -#include "absl/strings/string_view.h" -#include "absl/types/optional.h" - namespace Envoy { namespace Extensions { namespace NetworkFilters { @@ -87,19 +86,10 @@ class DecoderFilterCallbacks { virtual void resetDownstreamConnection() PURE; }; -enum class FilterStatus { - // Continue filter chain iteration. - Continue, - - // Stop iterating over filters in the filter chain. Iteration must be explicitly restarted via - // continueDecoding(). - StopIteration -}; - /** * Decoder filter interface. */ -class DecoderFilter { +class DecoderFilter : public virtual DecoderEventHandler { public: virtual ~DecoderFilter() {} @@ -124,118 +114,6 @@ class DecoderFilter { * Resets the upstream connection. */ virtual void resetUpstreamConnection() PURE; - - /** - * Indicates the start of a Thrift transport frame was detected. Unframed transports generate - * simulated start messages. - * @param metadata MessageMetadataSharedPtr describing as much as is currently known about the - * message - */ - virtual FilterStatus transportBegin(MessageMetadataSharedPtr metadata) PURE; - - /** - * Indicates the end of a Thrift transport frame was detected. Unframed transport generate - * simulated complete messages. - */ - virtual FilterStatus transportEnd() PURE; - - /** - * Indicates that the start of a Thrift protocol message was detected. - * @param metadata MessageMetadataSharedPtr describing the message - * @return FilterStatus to indicate if filter chain iteration should continue - */ - virtual FilterStatus messageBegin(MessageMetadataSharedPtr metadata) PURE; - - /** - * Indicates that the end of a Thrift protocol message was detected. - * @return FilterStatus to indicate if filter chain iteration should continue - */ - virtual FilterStatus messageEnd() PURE; - - /** - * Indicates that the start of a Thrift protocol struct was detected. - * @param name the name of the struct, if available - * @return FilterStatus to indicate if filter chain iteration should continue - */ - virtual FilterStatus structBegin(absl::string_view name) PURE; - - /** - * Indicates that the end of a Thrift protocol struct was detected. - * @return FilterStatus to indicate if filter chain iteration should continue - */ - virtual FilterStatus structEnd() PURE; - - /** - * Indicates that the start of Thrift protocol struct field was detected. - * @param name the name of the field, if available - * @param field_type the type of the field - * @param field_id the field id - * @return FilterStatus to indicate if filter chain iteration should continue - */ - virtual FilterStatus fieldBegin(absl::string_view name, FieldType field_type, - int16_t field_id) PURE; - - /** - * Indicates that the end of a Thrift protocol struct field was detected. - * @return FilterStatus to indicate if filter chain iteration should continue - */ - virtual FilterStatus fieldEnd() PURE; - - /** - * A struct field, map key, map value, list element or set element was detected. - * @param value type value of the field - * @return FilterStatus to indicate if filter chain iteration should continue - */ - virtual FilterStatus boolValue(bool value) PURE; - virtual FilterStatus byteValue(uint8_t value) PURE; - virtual FilterStatus int16Value(int16_t value) PURE; - virtual FilterStatus int32Value(int32_t value) PURE; - virtual FilterStatus int64Value(int64_t value) PURE; - virtual FilterStatus doubleValue(double value) PURE; - virtual FilterStatus stringValue(absl::string_view value) PURE; - - /** - * Indicates the start of a Thrift protocol map was detected. - * @param key_type the map key type - * @param value_type the map value type - * @param size the number of key-value pairs - * @return FilterStatus to indicate if filter chain iteration should continue - */ - virtual FilterStatus mapBegin(FieldType key_type, FieldType value_type, uint32_t size) PURE; - - /** - * Indicates that the end of a Thrift protocol map was detected. - * @return FilterStatus to indicate if filter chain iteration should continue - */ - virtual FilterStatus mapEnd() PURE; - - /** - * Indicates the start of a Thrift protocol list was detected. - * @param elem_type the list value type - * @param size the number of values in the list - * @return FilterStatus to indicate if filter chain iteration should continue - */ - virtual FilterStatus listBegin(FieldType elem_type, uint32_t size) PURE; - - /** - * Indicates that the end of a Thrift protocol list was detected. - * @return FilterStatus to indicate if filter chain iteration should continue - */ - virtual FilterStatus listEnd() PURE; - - /** - * Indicates the start of a Thrift protocol set was detected. - * @param elem_type the set value type - * @param size the number of values in the set - * @return FilterStatus to indicate if filter chain iteration should continue - */ - virtual FilterStatus setBegin(FieldType elem_type, uint32_t size) PURE; - - /** - * Indicates that the end of a Thrift protocol set was detected. - * @return FilterStatus to indicate if filter chain iteration should continue - */ - virtual FilterStatus setEnd() PURE; }; typedef std::shared_ptr DecoderFilterSharedPtr; diff --git a/source/extensions/filters/network/thrift_proxy/framed_transport_impl.cc b/source/extensions/filters/network/thrift_proxy/framed_transport_impl.cc index 93b528a5dc56..5863cc590cd7 100644 --- a/source/extensions/filters/network/thrift_proxy/framed_transport_impl.cc +++ b/source/extensions/filters/network/thrift_proxy/framed_transport_impl.cc @@ -3,7 +3,6 @@ #include "envoy/common/exception.h" #include "extensions/filters/network/thrift_proxy/buffer_helper.h" -#include "extensions/filters/network/thrift_proxy/transport_impl.h" namespace Envoy { namespace Extensions { diff --git a/source/extensions/filters/network/thrift_proxy/framed_transport_impl.h b/source/extensions/filters/network/thrift_proxy/framed_transport_impl.h index 16d51c57093c..5adf153a1f0e 100644 --- a/source/extensions/filters/network/thrift_proxy/framed_transport_impl.h +++ b/source/extensions/filters/network/thrift_proxy/framed_transport_impl.h @@ -4,9 +4,7 @@ #include "envoy/buffer/buffer.h" -#include "extensions/filters/network/thrift_proxy/transport_impl.h" - -#include "absl/types/optional.h" +#include "extensions/filters/network/thrift_proxy/transport.h" namespace Envoy { namespace Extensions { diff --git a/source/extensions/filters/network/thrift_proxy/header_transport_impl.cc b/source/extensions/filters/network/thrift_proxy/header_transport_impl.cc index 1b7b36cc5a7c..1e5f6fdeef0d 100644 --- a/source/extensions/filters/network/thrift_proxy/header_transport_impl.cc +++ b/source/extensions/filters/network/thrift_proxy/header_transport_impl.cc @@ -7,7 +7,6 @@ #include "common/buffer/buffer_impl.h" #include "extensions/filters/network/thrift_proxy/buffer_helper.h" -#include "extensions/filters/network/thrift_proxy/transport_impl.h" namespace Envoy { namespace Extensions { diff --git a/source/extensions/filters/network/thrift_proxy/header_transport_impl.h b/source/extensions/filters/network/thrift_proxy/header_transport_impl.h index 02c7d051cb50..c2d97ead1607 100644 --- a/source/extensions/filters/network/thrift_proxy/header_transport_impl.h +++ b/source/extensions/filters/network/thrift_proxy/header_transport_impl.h @@ -6,8 +6,8 @@ #include "extensions/filters/network/thrift_proxy/app_exception_impl.h" #include "extensions/filters/network/thrift_proxy/metadata.h" -#include "extensions/filters/network/thrift_proxy/protocol.h" -#include "extensions/filters/network/thrift_proxy/transport_impl.h" +#include "extensions/filters/network/thrift_proxy/thrift.h" +#include "extensions/filters/network/thrift_proxy/transport.h" #include "absl/types/optional.h" diff --git a/source/extensions/filters/network/thrift_proxy/protocol_converter.h b/source/extensions/filters/network/thrift_proxy/protocol_converter.h index 0695bb9475a4..8a3fde789450 100644 --- a/source/extensions/filters/network/thrift_proxy/protocol_converter.h +++ b/source/extensions/filters/network/thrift_proxy/protocol_converter.h @@ -2,7 +2,7 @@ #include "envoy/buffer/buffer.h" -#include "extensions/filters/network/thrift_proxy/filters/filter.h" +#include "extensions/filters/network/thrift_proxy/decoder_events.h" #include "extensions/filters/network/thrift_proxy/protocol.h" namespace Envoy { @@ -12,121 +12,113 @@ namespace ThriftProxy { /** * ProtocolConverter is an abstract class that implements protocol-related methods on - * ThriftFilters::DecoderFilter in terms of converting the decoded messages into a different - * protocol. + * DecoderEventHandler in terms of converting the decoded messages into a different protocol. */ -class ProtocolConverter : public ThriftFilters::DecoderFilter { +class ProtocolConverter : public virtual DecoderEventHandler { public: ProtocolConverter() {} - ~ProtocolConverter() {} + virtual ~ProtocolConverter() {} void initProtocolConverter(ProtocolPtr&& proto, Buffer::Instance& buffer) { proto_ = std::move(proto); buffer_ = &buffer; } - // ThiftFilters::DecoderFilter - void onDestroy() override { NOT_IMPLEMENTED_GCOVR_EXCL_LINE; } - void setDecoderFilterCallbacks(ThriftFilters::DecoderFilterCallbacks&) override { - NOT_IMPLEMENTED_GCOVR_EXCL_LINE; - } - void resetUpstreamConnection() override { NOT_IMPLEMENTED_GCOVR_EXCL_LINE; } - ThriftFilters::FilterStatus messageBegin(MessageMetadataSharedPtr metadata) override { + // DecoderEventHaandler + FilterStatus messageBegin(MessageMetadataSharedPtr metadata) override { proto_->writeMessageBegin(*buffer_, *metadata); - return ThriftFilters::FilterStatus::Continue; + return FilterStatus::Continue; } - ThriftFilters::FilterStatus messageEnd() override { + FilterStatus messageEnd() override { proto_->writeMessageEnd(*buffer_); - return ThriftFilters::FilterStatus::Continue; + return FilterStatus::Continue; } - ThriftFilters::FilterStatus structBegin(absl::string_view name) override { + FilterStatus structBegin(absl::string_view name) override { proto_->writeStructBegin(*buffer_, std::string(name)); - return ThriftFilters::FilterStatus::Continue; + return FilterStatus::Continue; } - ThriftFilters::FilterStatus structEnd() override { + FilterStatus structEnd() override { proto_->writeFieldBegin(*buffer_, "", FieldType::Stop, 0); proto_->writeStructEnd(*buffer_); - return ThriftFilters::FilterStatus::Continue; + return FilterStatus::Continue; } - ThriftFilters::FilterStatus fieldBegin(absl::string_view name, FieldType field_type, - int16_t field_id) override { + FilterStatus fieldBegin(absl::string_view name, FieldType field_type, int16_t field_id) override { proto_->writeFieldBegin(*buffer_, std::string(name), field_type, field_id); - return ThriftFilters::FilterStatus::Continue; + return FilterStatus::Continue; } - ThriftFilters::FilterStatus fieldEnd() override { + FilterStatus fieldEnd() override { proto_->writeFieldEnd(*buffer_); - return ThriftFilters::FilterStatus::Continue; + return FilterStatus::Continue; } - ThriftFilters::FilterStatus boolValue(bool value) override { + FilterStatus boolValue(bool value) override { proto_->writeBool(*buffer_, value); - return ThriftFilters::FilterStatus::Continue; + return FilterStatus::Continue; } - ThriftFilters::FilterStatus byteValue(uint8_t value) override { + FilterStatus byteValue(uint8_t value) override { proto_->writeByte(*buffer_, value); - return ThriftFilters::FilterStatus::Continue; + return FilterStatus::Continue; } - ThriftFilters::FilterStatus int16Value(int16_t value) override { + FilterStatus int16Value(int16_t value) override { proto_->writeInt16(*buffer_, value); - return ThriftFilters::FilterStatus::Continue; + return FilterStatus::Continue; } - ThriftFilters::FilterStatus int32Value(int32_t value) override { + FilterStatus int32Value(int32_t value) override { proto_->writeInt32(*buffer_, value); - return ThriftFilters::FilterStatus::Continue; + return FilterStatus::Continue; } - ThriftFilters::FilterStatus int64Value(int64_t value) override { + FilterStatus int64Value(int64_t value) override { proto_->writeInt64(*buffer_, value); - return ThriftFilters::FilterStatus::Continue; + return FilterStatus::Continue; } - ThriftFilters::FilterStatus doubleValue(double value) override { + FilterStatus doubleValue(double value) override { proto_->writeDouble(*buffer_, value); - return ThriftFilters::FilterStatus::Continue; + return FilterStatus::Continue; } - ThriftFilters::FilterStatus stringValue(absl::string_view value) override { + FilterStatus stringValue(absl::string_view value) override { proto_->writeString(*buffer_, std::string(value)); - return ThriftFilters::FilterStatus::Continue; + return FilterStatus::Continue; } - ThriftFilters::FilterStatus mapBegin(FieldType key_type, FieldType value_type, - uint32_t size) override { + FilterStatus mapBegin(FieldType key_type, FieldType value_type, uint32_t size) override { proto_->writeMapBegin(*buffer_, key_type, value_type, size); - return ThriftFilters::FilterStatus::Continue; + return FilterStatus::Continue; } - ThriftFilters::FilterStatus mapEnd() override { + FilterStatus mapEnd() override { proto_->writeMapEnd(*buffer_); - return ThriftFilters::FilterStatus::Continue; + return FilterStatus::Continue; } - ThriftFilters::FilterStatus listBegin(FieldType elem_type, uint32_t size) override { + FilterStatus listBegin(FieldType elem_type, uint32_t size) override { proto_->writeListBegin(*buffer_, elem_type, size); - return ThriftFilters::FilterStatus::Continue; + return FilterStatus::Continue; } - ThriftFilters::FilterStatus listEnd() override { + FilterStatus listEnd() override { proto_->writeListEnd(*buffer_); - return ThriftFilters::FilterStatus::Continue; + return FilterStatus::Continue; } - ThriftFilters::FilterStatus setBegin(FieldType elem_type, uint32_t size) override { + FilterStatus setBegin(FieldType elem_type, uint32_t size) override { proto_->writeSetBegin(*buffer_, elem_type, size); - return ThriftFilters::FilterStatus::Continue; + return FilterStatus::Continue; } - ThriftFilters::FilterStatus setEnd() override { + FilterStatus setEnd() override { proto_->writeSetEnd(*buffer_); - return ThriftFilters::FilterStatus::Continue; + return FilterStatus::Continue; } protected: diff --git a/source/extensions/filters/network/thrift_proxy/router/router_impl.cc b/source/extensions/filters/network/thrift_proxy/router/router_impl.cc index 070f535a4727..57e8be9f6caf 100644 --- a/source/extensions/filters/network/thrift_proxy/router/router_impl.cc +++ b/source/extensions/filters/network/thrift_proxy/router/router_impl.cc @@ -132,21 +132,21 @@ void Router::resetUpstreamConnection() { } } -ThriftFilters::FilterStatus Router::transportBegin(MessageMetadataSharedPtr metadata) { +FilterStatus Router::transportBegin(MessageMetadataSharedPtr metadata) { UNREFERENCED_PARAMETER(metadata); - return ThriftFilters::FilterStatus::Continue; + return FilterStatus::Continue; } -ThriftFilters::FilterStatus Router::transportEnd() { +FilterStatus Router::transportEnd() { if (upstream_request_->metadata_->messageType() == MessageType::Oneway) { // No response expected upstream_request_->onResponseComplete(); cleanup(); } - return ThriftFilters::FilterStatus::Continue; + return FilterStatus::Continue; } -ThriftFilters::FilterStatus Router::messageBegin(MessageMetadataSharedPtr metadata) { +FilterStatus Router::messageBegin(MessageMetadataSharedPtr metadata) { // TODO(zuercher): route stats (e.g., no_route, no_cluster, upstream_rq_maintenance_mode, no // healtthy upstream) @@ -157,7 +157,7 @@ ThriftFilters::FilterStatus Router::messageBegin(MessageMetadataSharedPtr metada callbacks_->sendLocalReply( AppException(AppExceptionType::UnknownMethod, fmt::format("no route for method '{}'", metadata->methodName()))); - return ThriftFilters::FilterStatus::StopIteration; + return FilterStatus::StopIteration; } route_entry_ = route_->routeEntry(); @@ -168,7 +168,7 @@ ThriftFilters::FilterStatus Router::messageBegin(MessageMetadataSharedPtr metada callbacks_->sendLocalReply( AppException(AppExceptionType::InternalError, fmt::format("unknown cluster '{}'", route_entry_->clusterName()))); - return ThriftFilters::FilterStatus::StopIteration; + return FilterStatus::StopIteration; } cluster_ = cluster->info(); @@ -179,7 +179,7 @@ ThriftFilters::FilterStatus Router::messageBegin(MessageMetadataSharedPtr metada callbacks_->sendLocalReply(AppException( AppExceptionType::InternalError, fmt::format("maintenance mode for cluster '{}'", route_entry_->clusterName()))); - return ThriftFilters::FilterStatus::StopIteration; + return FilterStatus::StopIteration; } const std::shared_ptr options = @@ -201,7 +201,7 @@ ThriftFilters::FilterStatus Router::messageBegin(MessageMetadataSharedPtr metada callbacks_->sendLocalReply( AppException(AppExceptionType::InternalError, fmt::format("no healthy upstream for '{}'", route_entry_->clusterName()))); - return ThriftFilters::FilterStatus::StopIteration; + return FilterStatus::StopIteration; } ENVOY_STREAM_LOG(debug, "router decoding request", *callbacks_); @@ -210,7 +210,7 @@ ThriftFilters::FilterStatus Router::messageBegin(MessageMetadataSharedPtr metada return upstream_request_->start(); } -ThriftFilters::FilterStatus Router::messageEnd() { +FilterStatus Router::messageEnd() { ProtocolConverter::messageEnd(); TransportPtr transport = @@ -222,7 +222,7 @@ ThriftFilters::FilterStatus Router::messageEnd() { transport->encodeFrame(transport_buffer, *upstream_request_->metadata_, upstream_request_buffer_); upstream_request_->conn_data_->connection().write(transport_buffer, false); upstream_request_->onRequestComplete(); - return ThriftFilters::FilterStatus::Continue; + return FilterStatus::Continue; } void Router::onUpstreamData(Buffer::Instance& data, bool end_stream) { @@ -290,15 +290,15 @@ Router::UpstreamRequest::UpstreamRequest(Router& parent, Tcp::ConnectionPool::In Router::UpstreamRequest::~UpstreamRequest() {} -ThriftFilters::FilterStatus Router::UpstreamRequest::start() { +FilterStatus Router::UpstreamRequest::start() { Tcp::ConnectionPool::Cancellable* handle = conn_pool_.newConnection(*this); if (handle) { // Pause while we wait for a connection. conn_pool_handle_ = handle; - return ThriftFilters::FilterStatus::StopIteration; + return FilterStatus::StopIteration; } - return ThriftFilters::FilterStatus::Continue; + return FilterStatus::Continue; } void Router::UpstreamRequest::resetStream() { diff --git a/source/extensions/filters/network/thrift_proxy/router/router_impl.h b/source/extensions/filters/network/thrift_proxy/router/router_impl.h index d0a0e4a3a0fa..224b6fb09997 100644 --- a/source/extensions/filters/network/thrift_proxy/router/router_impl.h +++ b/source/extensions/filters/network/thrift_proxy/router/router_impl.h @@ -92,20 +92,23 @@ class RouteMatcher { class Router : public Tcp::ConnectionPool::UpstreamCallbacks, public Upstream::LoadBalancerContextBase, public ProtocolConverter, + public ThriftFilters::DecoderFilter, Logger::Loggable { public: Router(Upstream::ClusterManager& cluster_manager) : cluster_manager_(cluster_manager) {} ~Router() {} - // ProtocolConverter + // ThriftFilters::DecoderFilter void onDestroy() override; void setDecoderFilterCallbacks(ThriftFilters::DecoderFilterCallbacks& callbacks) override; void resetUpstreamConnection() override; - ThriftFilters::FilterStatus transportBegin(MessageMetadataSharedPtr metadata) override; - ThriftFilters::FilterStatus transportEnd() override; - ThriftFilters::FilterStatus messageBegin(MessageMetadataSharedPtr metadata) override; - ThriftFilters::FilterStatus messageEnd() override; + + // ProtocolConverter + FilterStatus transportBegin(MessageMetadataSharedPtr metadata) override; + FilterStatus transportEnd() override; + FilterStatus messageBegin(MessageMetadataSharedPtr metadata) override; + FilterStatus messageEnd() override; // Upstream::LoadBalancerContext const Network::Connection* downstreamConnection() const override; @@ -123,7 +126,7 @@ class Router : public Tcp::ConnectionPool::UpstreamCallbacks, ProtocolType protocol_type); ~UpstreamRequest(); - ThriftFilters::FilterStatus start(); + FilterStatus start(); void resetStream(); // Tcp::ConnectionPool::Callbacks diff --git a/source/extensions/filters/network/thrift_proxy/transport.h b/source/extensions/filters/network/thrift_proxy/transport.h index 915e2cbaa944..b7c0cac458db 100644 --- a/source/extensions/filters/network/thrift_proxy/transport.h +++ b/source/extensions/filters/network/thrift_proxy/transport.h @@ -11,9 +11,6 @@ #include "common/singleton/const_singleton.h" #include "extensions/filters/network/thrift_proxy/metadata.h" -#include "extensions/filters/network/thrift_proxy/protocol.h" - -#include "absl/types/optional.h" namespace Envoy { namespace Extensions { diff --git a/source/extensions/filters/network/thrift_proxy/unframed_transport_impl.h b/source/extensions/filters/network/thrift_proxy/unframed_transport_impl.h index 92dd78af0ad1..a4a0bc02782c 100644 --- a/source/extensions/filters/network/thrift_proxy/unframed_transport_impl.h +++ b/source/extensions/filters/network/thrift_proxy/unframed_transport_impl.h @@ -4,9 +4,7 @@ #include "envoy/buffer/buffer.h" -#include "extensions/filters/network/thrift_proxy/transport_impl.h" - -#include "absl/types/optional.h" +#include "extensions/filters/network/thrift_proxy/transport.h" namespace Envoy { namespace Extensions { diff --git a/test/extensions/filters/network/thrift_proxy/BUILD b/test/extensions/filters/network/thrift_proxy/BUILD index 92325a0f24c2..1cc27974ea7b 100644 --- a/test/extensions/filters/network/thrift_proxy/BUILD +++ b/test/extensions/filters/network/thrift_proxy/BUILD @@ -20,8 +20,8 @@ envoy_extension_cc_mock( extension_name = "envoy.filters.network.thrift_proxy", deps = [ "//source/extensions/filters/network/thrift_proxy:conn_manager_lib", - "//source/extensions/filters/network/thrift_proxy:protocol_lib", - "//source/extensions/filters/network/thrift_proxy:transport_lib", + "//source/extensions/filters/network/thrift_proxy:protocol_interface", + "//source/extensions/filters/network/thrift_proxy:transport_interface", "//source/extensions/filters/network/thrift_proxy/filters:filter_interface", "//source/extensions/filters/network/thrift_proxy/router:router_interface", "//test/mocks/network:network_mocks", @@ -51,7 +51,7 @@ envoy_extension_cc_test_library( deps = [ "//source/common/buffer:buffer_lib", "//source/common/common:byte_order_lib", - "//source/extensions/filters/network/thrift_proxy:protocol_lib", + "//source/extensions/filters/network/thrift_proxy:thrift_lib", "@envoy_api//envoy/config/filter/network/thrift_proxy/v2alpha1:thrift_proxy_cc", ], ) @@ -69,179 +69,179 @@ envoy_extension_cc_test( ) envoy_extension_cc_test( - name = "binary_protocol_impl_test", - srcs = ["binary_protocol_impl_test.cc"], + name = "buffer_helper_test", + srcs = ["buffer_helper_test.cc"], extension_name = "envoy.filters.network.thrift_proxy", deps = [ - ":mocks", ":utility_lib", - "//source/extensions/filters/network/thrift_proxy:protocol_lib", + "//source/extensions/filters/network/thrift_proxy:buffer_helper_lib", "//test/test_common:printers_lib", "//test/test_common:utility_lib", ], ) envoy_extension_cc_test( - name = "buffer_helper_test", - srcs = ["buffer_helper_test.cc"], + name = "auto_transport_impl_test", + srcs = ["auto_transport_impl_test.cc"], extension_name = "envoy.filters.network.thrift_proxy", deps = [ + ":mocks", ":utility_lib", - "//source/extensions/filters/network/thrift_proxy:buffer_helper_lib", + "//source/extensions/filters/network/thrift_proxy:auto_transport_lib", "//test/test_common:printers_lib", "//test/test_common:utility_lib", ], ) envoy_extension_cc_test( - name = "compact_protocol_impl_test", - srcs = ["compact_protocol_impl_test.cc"], + name = "framed_transport_impl_test", + srcs = ["framed_transport_impl_test.cc"], extension_name = "envoy.filters.network.thrift_proxy", deps = [ ":mocks", ":utility_lib", - "//source/extensions/filters/network/thrift_proxy:protocol_lib", + "//source/extensions/filters/network/thrift_proxy:framed_transport_lib", "//test/test_common:printers_lib", "//test/test_common:utility_lib", ], ) envoy_extension_cc_test( - name = "config_test", - srcs = ["config_test.cc"], + name = "header_transport_impl_test", + srcs = ["header_transport_impl_test.cc"], extension_name = "envoy.filters.network.thrift_proxy", deps = [ - "//source/extensions/filters/network/thrift_proxy:config", - "//source/extensions/filters/network/thrift_proxy/router:config", - "//test/mocks/server:server_mocks", + ":mocks", + ":utility_lib", + "//source/extensions/filters/network/thrift_proxy:header_transport_lib", + "//test/mocks/buffer:buffer_mocks", + "//test/test_common:printers_lib", + "//test/test_common:utility_lib", ], ) envoy_extension_cc_test( - name = "conn_manager_test", - srcs = ["conn_manager_test.cc"], + name = "unframed_transport_impl_test", + srcs = ["unframed_transport_impl_test.cc"], extension_name = "envoy.filters.network.thrift_proxy", deps = [ ":mocks", ":utility_lib", - "//source/extensions/filters/network/thrift_proxy:config", - "//source/extensions/filters/network/thrift_proxy:conn_manager_lib", - "//source/extensions/filters/network/thrift_proxy/filters:filter_interface", - "//source/extensions/filters/network/thrift_proxy/router:config", - "//source/extensions/filters/network/thrift_proxy/router:router_interface", - "//test/mocks/network:network_mocks", - "//test/mocks/server:server_mocks", - "//test/mocks/upstream:upstream_mocks", + "//source/extensions/filters/network/thrift_proxy:unframed_transport_lib", "//test/test_common:printers_lib", + "//test/test_common:utility_lib", ], ) envoy_extension_cc_test( - name = "decoder_test", - srcs = ["decoder_test.cc"], + name = "auto_protocol_impl_test", + srcs = ["auto_protocol_impl_test.cc"], extension_name = "envoy.filters.network.thrift_proxy", deps = [ ":mocks", ":utility_lib", - "//source/extensions/filters/network/thrift_proxy:app_exception_lib", - "//source/extensions/filters/network/thrift_proxy:decoder_lib", + "//source/extensions/filters/network/thrift_proxy:auto_protocol_lib", "//test/test_common:printers_lib", "//test/test_common:utility_lib", ], ) envoy_extension_cc_test( - name = "framed_transport_impl_test", - srcs = ["framed_transport_impl_test.cc"], + name = "binary_protocol_impl_test", + srcs = ["binary_protocol_impl_test.cc"], extension_name = "envoy.filters.network.thrift_proxy", deps = [ ":mocks", ":utility_lib", - "//source/extensions/filters/network/thrift_proxy:transport_lib", + "//source/extensions/filters/network/thrift_proxy:binary_protocol_lib", "//test/test_common:printers_lib", "//test/test_common:utility_lib", ], ) envoy_extension_cc_test( - name = "header_transport_impl_test", - srcs = ["header_transport_impl_test.cc"], + name = "compact_protocol_impl_test", + srcs = ["compact_protocol_impl_test.cc"], extension_name = "envoy.filters.network.thrift_proxy", deps = [ ":mocks", ":utility_lib", - "//source/extensions/filters/network/thrift_proxy:transport_lib", - "//test/mocks/buffer:buffer_mocks", + "//source/extensions/filters/network/thrift_proxy:compact_protocol_lib", "//test/test_common:printers_lib", "//test/test_common:utility_lib", ], ) envoy_extension_cc_test( - name = "metadata_test", - srcs = ["metadata_test.cc"], + name = "config_test", + srcs = ["config_test.cc"], extension_name = "envoy.filters.network.thrift_proxy", deps = [ - "//source/extensions/filters/network/thrift_proxy:metadata_lib", - "//test/test_common:printers_lib", - "//test/test_common:utility_lib", + "//source/extensions/filters/network/thrift_proxy:config", + "//source/extensions/filters/network/thrift_proxy/router:config", + "//test/mocks/server:server_mocks", ], ) envoy_extension_cc_test( - name = "protocol_impl_test", - srcs = ["protocol_impl_test.cc"], + name = "conn_manager_test", + srcs = ["conn_manager_test.cc"], extension_name = "envoy.filters.network.thrift_proxy", deps = [ ":mocks", ":utility_lib", - "//source/extensions/filters/network/thrift_proxy:protocol_lib", + "//source/extensions/filters/network/thrift_proxy:config", + "//source/extensions/filters/network/thrift_proxy:conn_manager_lib", + "//source/extensions/filters/network/thrift_proxy/filters:filter_interface", + "//source/extensions/filters/network/thrift_proxy/router:config", + "//source/extensions/filters/network/thrift_proxy/router:router_interface", + "//test/mocks/network:network_mocks", + "//test/mocks/server:server_mocks", + "//test/mocks/upstream:upstream_mocks", "//test/test_common:printers_lib", - "//test/test_common:utility_lib", ], ) envoy_extension_cc_test( - name = "router_test", - srcs = ["router_test.cc"], + name = "decoder_test", + srcs = ["decoder_test.cc"], extension_name = "envoy.filters.network.thrift_proxy", deps = [ ":mocks", ":utility_lib", "//source/extensions/filters/network/thrift_proxy:app_exception_lib", - "//source/extensions/filters/network/thrift_proxy/router:config", - "//source/extensions/filters/network/thrift_proxy/router:router_lib", - "//test/mocks/network:network_mocks", - "//test/mocks/server:server_mocks", - "//test/mocks/upstream:upstream_mocks", + "//source/extensions/filters/network/thrift_proxy:decoder_lib", "//test/test_common:printers_lib", - "//test/test_common:registry_lib", + "//test/test_common:utility_lib", ], ) envoy_extension_cc_test( - name = "transport_impl_test", - srcs = ["transport_impl_test.cc"], + name = "metadata_test", + srcs = ["metadata_test.cc"], extension_name = "envoy.filters.network.thrift_proxy", deps = [ - ":mocks", - ":utility_lib", - "//source/extensions/filters/network/thrift_proxy:transport_lib", + "//source/extensions/filters/network/thrift_proxy:metadata_lib", "//test/test_common:printers_lib", "//test/test_common:utility_lib", ], ) envoy_extension_cc_test( - name = "unframed_transport_impl_test", - srcs = ["unframed_transport_impl_test.cc"], + name = "router_test", + srcs = ["router_test.cc"], extension_name = "envoy.filters.network.thrift_proxy", deps = [ ":mocks", ":utility_lib", - "//source/extensions/filters/network/thrift_proxy:transport_lib", + "//source/extensions/filters/network/thrift_proxy:app_exception_lib", + "//source/extensions/filters/network/thrift_proxy/router:config", + "//source/extensions/filters/network/thrift_proxy/router:router_lib", + "//test/mocks/network:network_mocks", + "//test/mocks/server:server_mocks", + "//test/mocks/upstream:upstream_mocks", "//test/test_common:printers_lib", - "//test/test_common:utility_lib", + "//test/test_common:registry_lib", ], ) diff --git a/test/extensions/filters/network/thrift_proxy/protocol_impl_test.cc b/test/extensions/filters/network/thrift_proxy/auto_protocol_impl_test.cc similarity index 99% rename from test/extensions/filters/network/thrift_proxy/protocol_impl_test.cc rename to test/extensions/filters/network/thrift_proxy/auto_protocol_impl_test.cc index c8a4c260a4b9..70942106270b 100644 --- a/test/extensions/filters/network/thrift_proxy/protocol_impl_test.cc +++ b/test/extensions/filters/network/thrift_proxy/auto_protocol_impl_test.cc @@ -2,9 +2,9 @@ #include "common/buffer/buffer_impl.h" +#include "extensions/filters/network/thrift_proxy/auto_protocol_impl.h" #include "extensions/filters/network/thrift_proxy/binary_protocol_impl.h" #include "extensions/filters/network/thrift_proxy/compact_protocol_impl.h" -#include "extensions/filters/network/thrift_proxy/protocol_impl.h" #include "test/extensions/filters/network/thrift_proxy/mocks.h" #include "test/extensions/filters/network/thrift_proxy/utility.h" diff --git a/test/extensions/filters/network/thrift_proxy/transport_impl_test.cc b/test/extensions/filters/network/thrift_proxy/auto_transport_impl_test.cc similarity index 98% rename from test/extensions/filters/network/thrift_proxy/transport_impl_test.cc rename to test/extensions/filters/network/thrift_proxy/auto_transport_impl_test.cc index adf502ea96f7..f0564711a2f3 100644 --- a/test/extensions/filters/network/thrift_proxy/transport_impl_test.cc +++ b/test/extensions/filters/network/thrift_proxy/auto_transport_impl_test.cc @@ -2,7 +2,7 @@ #include "common/buffer/buffer_impl.h" -#include "extensions/filters/network/thrift_proxy/transport_impl.h" +#include "extensions/filters/network/thrift_proxy/auto_transport_impl.h" #include "test/extensions/filters/network/thrift_proxy/mocks.h" #include "test/extensions/filters/network/thrift_proxy/utility.h" diff --git a/test/extensions/filters/network/thrift_proxy/conn_manager_test.cc b/test/extensions/filters/network/thrift_proxy/conn_manager_test.cc index 049935796342..43f335214972 100644 --- a/test/extensions/filters/network/thrift_proxy/conn_manager_test.cc +++ b/test/extensions/filters/network/thrift_proxy/conn_manager_test.cc @@ -309,8 +309,7 @@ TEST_F(ThriftConnectionManagerTest, OnDataHandlesStopIterationAndResume) { EXPECT_CALL(*decoder_filter_, setDecoderFilterCallbacks(_)) .WillOnce( Invoke([&](ThriftFilters::DecoderFilterCallbacks& cb) -> void { callbacks = &cb; })); - EXPECT_CALL(*decoder_filter_, messageBegin(_)) - .WillOnce(Return(ThriftFilters::FilterStatus::StopIteration)); + EXPECT_CALL(*decoder_filter_, messageBegin(_)).WillOnce(Return(FilterStatus::StopIteration)); EXPECT_EQ(filter_->onData(buffer_, false), Network::FilterStatus::StopIteration); EXPECT_EQ(0U, store_.counter("test.request").value()); @@ -572,8 +571,7 @@ stat_prefix: test EXPECT_CALL(*decoder_filter_, setDecoderFilterCallbacks(_)) .WillOnce( Invoke([&](ThriftFilters::DecoderFilterCallbacks& cb) -> void { callbacks = &cb; })); - EXPECT_CALL(*decoder_filter_, messageBegin(_)) - .WillOnce(Return(ThriftFilters::FilterStatus::StopIteration)); + EXPECT_CALL(*decoder_filter_, messageBegin(_)).WillOnce(Return(FilterStatus::StopIteration)); EXPECT_EQ(filter_->onData(buffer_, false), Network::FilterStatus::StopIteration); EXPECT_EQ(0U, store_.counter("test.request").value()); diff --git a/test/extensions/filters/network/thrift_proxy/decoder_test.cc b/test/extensions/filters/network/thrift_proxy/decoder_test.cc index b5a1966c720e..6fd60d225681 100644 --- a/test/extensions/filters/network/thrift_proxy/decoder_test.cc +++ b/test/extensions/filters/network/thrift_proxy/decoder_test.cc @@ -37,57 +37,50 @@ namespace NetworkFilters { namespace ThriftProxy { namespace { -ExpectationSet expectValue(MockProtocol& proto, ThriftFilters::MockDecoderFilter& filter, +ExpectationSet expectValue(MockProtocol& proto, MockDecoderEventHandler& handler, FieldType field_type, bool result = true) { ExpectationSet s; switch (field_type) { case FieldType::Bool: s += EXPECT_CALL(proto, readBool(_, _)).WillOnce(Return(result)); if (result) { - s += - EXPECT_CALL(filter, boolValue(_)).WillOnce(Return(ThriftFilters::FilterStatus::Continue)); + s += EXPECT_CALL(handler, boolValue(_)).WillOnce(Return(FilterStatus::Continue)); } break; case FieldType::Byte: s += EXPECT_CALL(proto, readByte(_, _)).WillOnce(Return(result)); if (result) { - s += - EXPECT_CALL(filter, byteValue(_)).WillOnce(Return(ThriftFilters::FilterStatus::Continue)); + s += EXPECT_CALL(handler, byteValue(_)).WillOnce(Return(FilterStatus::Continue)); } break; case FieldType::Double: s += EXPECT_CALL(proto, readDouble(_, _)).WillOnce(Return(result)); if (result) { - s += EXPECT_CALL(filter, doubleValue(_)) - .WillOnce(Return(ThriftFilters::FilterStatus::Continue)); + s += EXPECT_CALL(handler, doubleValue(_)).WillOnce(Return(FilterStatus::Continue)); } break; case FieldType::I16: s += EXPECT_CALL(proto, readInt16(_, _)).WillOnce(Return(result)); if (result) { - s += EXPECT_CALL(filter, int16Value(_)) - .WillOnce(Return(ThriftFilters::FilterStatus::Continue)); + s += EXPECT_CALL(handler, int16Value(_)).WillOnce(Return(FilterStatus::Continue)); } break; case FieldType::I32: s += EXPECT_CALL(proto, readInt32(_, _)).WillOnce(Return(result)); if (result) { - s += EXPECT_CALL(filter, int32Value(_)) - .WillOnce(Return(ThriftFilters::FilterStatus::Continue)); + s += EXPECT_CALL(handler, int32Value(_)).WillOnce(Return(FilterStatus::Continue)); } break; case FieldType::I64: s += EXPECT_CALL(proto, readInt64(_, _)).WillOnce(Return(result)); if (result) { - s += EXPECT_CALL(filter, int64Value(_)) - .WillOnce(Return(ThriftFilters::FilterStatus::Continue)); + s += EXPECT_CALL(handler, int64Value(_)).WillOnce(Return(FilterStatus::Continue)); } break; case FieldType::String: s += EXPECT_CALL(proto, readString(_, _)).WillOnce(Return(result)); if (result) { - s += EXPECT_CALL(filter, stringValue(_)) - .WillOnce(Return(ThriftFilters::FilterStatus::Continue)); + s += EXPECT_CALL(handler, stringValue(_)).WillOnce(Return(FilterStatus::Continue)); } break; default: @@ -96,37 +89,35 @@ ExpectationSet expectValue(MockProtocol& proto, ThriftFilters::MockDecoderFilter return s; } -ExpectationSet expectContainerStart(MockProtocol& proto, ThriftFilters::MockDecoderFilter& filter, +ExpectationSet expectContainerStart(MockProtocol& proto, MockDecoderEventHandler& handler, FieldType field_type, FieldType inner_type) { ExpectationSet s; switch (field_type) { case FieldType::Struct: s += EXPECT_CALL(proto, readStructBegin(_, _)).WillOnce(Return(true)); - s += EXPECT_CALL(filter, structBegin(absl::string_view())) - .WillOnce(Return(ThriftFilters::FilterStatus::Continue)); + s += EXPECT_CALL(handler, structBegin(absl::string_view())) + .WillOnce(Return(FilterStatus::Continue)); s += EXPECT_CALL(proto, readFieldBegin(_, _, _, _)) .WillOnce(DoAll(SetArgReferee<2>(inner_type), SetArgReferee<3>(1), Return(true))); - s += EXPECT_CALL(filter, fieldBegin(absl::string_view(), inner_type, 1)) - .WillOnce(Return(ThriftFilters::FilterStatus::Continue)); + s += EXPECT_CALL(handler, fieldBegin(absl::string_view(), inner_type, 1)) + .WillOnce(Return(FilterStatus::Continue)); break; case FieldType::List: s += EXPECT_CALL(proto, readListBegin(_, _, _)) .WillOnce(DoAll(SetArgReferee<1>(inner_type), SetArgReferee<2>(1), Return(true))); - s += EXPECT_CALL(filter, listBegin(inner_type, 1)) - .WillOnce(Return(ThriftFilters::FilterStatus::Continue)); + s += EXPECT_CALL(handler, listBegin(inner_type, 1)).WillOnce(Return(FilterStatus::Continue)); break; case FieldType::Map: s += EXPECT_CALL(proto, readMapBegin(_, _, _, _)) .WillOnce(DoAll(SetArgReferee<1>(inner_type), SetArgReferee<2>(inner_type), SetArgReferee<3>(1), Return(true))); - s += EXPECT_CALL(filter, mapBegin(inner_type, inner_type, 1)) - .WillOnce(Return(ThriftFilters::FilterStatus::Continue)); + s += EXPECT_CALL(handler, mapBegin(inner_type, inner_type, 1)) + .WillOnce(Return(FilterStatus::Continue)); break; case FieldType::Set: s += EXPECT_CALL(proto, readSetBegin(_, _, _)) .WillOnce(DoAll(SetArgReferee<1>(inner_type), SetArgReferee<2>(1), Return(true))); - s += EXPECT_CALL(filter, setBegin(inner_type, 1)) - .WillOnce(Return(ThriftFilters::FilterStatus::Continue)); + s += EXPECT_CALL(handler, setBegin(inner_type, 1)).WillOnce(Return(FilterStatus::Continue)); break; default: NOT_REACHED_GCOVR_EXCL_LINE; @@ -134,29 +125,29 @@ ExpectationSet expectContainerStart(MockProtocol& proto, ThriftFilters::MockDeco return s; } -ExpectationSet expectContainerEnd(MockProtocol& proto, ThriftFilters::MockDecoderFilter& filter, +ExpectationSet expectContainerEnd(MockProtocol& proto, MockDecoderEventHandler& handler, FieldType field_type) { ExpectationSet s; switch (field_type) { case FieldType::Struct: s += EXPECT_CALL(proto, readFieldEnd(_)).WillOnce(Return(true)); - s += EXPECT_CALL(filter, fieldEnd()).WillOnce(Return(ThriftFilters::FilterStatus::Continue)); + s += EXPECT_CALL(handler, fieldEnd()).WillOnce(Return(FilterStatus::Continue)); s += EXPECT_CALL(proto, readFieldBegin(_, _, _, _)) .WillOnce(DoAll(SetArgReferee<2>(FieldType::Stop), Return(true))); s += EXPECT_CALL(proto, readStructEnd(_)).WillOnce(Return(true)); - s += EXPECT_CALL(filter, structEnd()).WillOnce(Return(ThriftFilters::FilterStatus::Continue)); + s += EXPECT_CALL(handler, structEnd()).WillOnce(Return(FilterStatus::Continue)); break; case FieldType::List: s += EXPECT_CALL(proto, readListEnd(_)).WillOnce(Return(true)); - s += EXPECT_CALL(filter, listEnd()).WillOnce(Return(ThriftFilters::FilterStatus::Continue)); + s += EXPECT_CALL(handler, listEnd()).WillOnce(Return(FilterStatus::Continue)); break; case FieldType::Map: s += EXPECT_CALL(proto, readMapEnd(_)).WillOnce(Return(true)); - s += EXPECT_CALL(filter, mapEnd()).WillOnce(Return(ThriftFilters::FilterStatus::Continue)); + s += EXPECT_CALL(handler, mapEnd()).WillOnce(Return(FilterStatus::Continue)); break; case FieldType::Set: s += EXPECT_CALL(proto, readSetEnd(_)).WillOnce(Return(true)); - s += EXPECT_CALL(filter, setEnd()).WillOnce(Return(ThriftFilters::FilterStatus::Continue)); + s += EXPECT_CALL(handler, setEnd()).WillOnce(Return(FilterStatus::Continue)); break; default: NOT_REACHED_GCOVR_EXCL_LINE; @@ -173,7 +164,7 @@ class DecoderStateMachineTestBase { NiceMock proto_; MessageMetadataSharedPtr metadata_; - NiceMock filter_; + NiceMock handler_; }; class DecoderStateMachineNonValueTest : public DecoderStateMachineTestBase, @@ -226,7 +217,7 @@ TEST_P(DecoderStateMachineNonValueTest, NoData) { ProtocolState state = GetParam(); Buffer::OwnedImpl buffer; - DecoderStateMachine dsm(proto_, metadata_, filter_); + DecoderStateMachine dsm(proto_, metadata_, handler_); dsm.setCurrentState(state); EXPECT_EQ(dsm.run(buffer), ProtocolState::WaitForData); EXPECT_EQ(dsm.currentState(), state); @@ -241,12 +232,12 @@ TEST_P(DecoderStateMachineValueTest, NoFieldValueData) { EXPECT_CALL(proto_, readFieldBegin(Ref(buffer), _, _, _)) .WillOnce(DoAll(SetArgReferee<1>(std::string("")), SetArgReferee<2>(field_type), SetArgReferee<3>(1), Return(true))); - expectValue(proto_, filter_, field_type, false); - expectValue(proto_, filter_, field_type, true); + expectValue(proto_, handler_, field_type, false); + expectValue(proto_, handler_, field_type, true); EXPECT_CALL(proto_, readFieldEnd(Ref(buffer))).WillOnce(Return(true)); EXPECT_CALL(proto_, readFieldBegin(Ref(buffer), _, _, _)).WillOnce(Return(false)); - DecoderStateMachine dsm(proto_, metadata_, filter_); + DecoderStateMachine dsm(proto_, metadata_, handler_); dsm.setCurrentState(ProtocolState::FieldBegin); EXPECT_EQ(dsm.run(buffer), ProtocolState::WaitForData); @@ -265,12 +256,12 @@ TEST_P(DecoderStateMachineValueTest, FieldValue) { .WillOnce(DoAll(SetArgReferee<1>(std::string("")), SetArgReferee<2>(field_type), SetArgReferee<3>(1), Return(true))); - expectValue(proto_, filter_, field_type); + expectValue(proto_, handler_, field_type); EXPECT_CALL(proto_, readFieldEnd(Ref(buffer))).WillOnce(Return(true)); EXPECT_CALL(proto_, readFieldBegin(Ref(buffer), _, _, _)).WillOnce(Return(false)); - DecoderStateMachine dsm(proto_, metadata_, filter_); + DecoderStateMachine dsm(proto_, metadata_, handler_); dsm.setCurrentState(ProtocolState::FieldBegin); EXPECT_EQ(dsm.run(buffer), ProtocolState::WaitForData); @@ -285,7 +276,7 @@ TEST_F(DecoderStateMachineTest, NoListValueData) { .WillOnce(DoAll(SetArgReferee<1>(FieldType::I32), SetArgReferee<2>(1), Return(true))); EXPECT_CALL(proto_, readInt32(Ref(buffer), _)).WillOnce(Return(false)); - DecoderStateMachine dsm(proto_, metadata_, filter_); + DecoderStateMachine dsm(proto_, metadata_, handler_); dsm.setCurrentState(ProtocolState::ListBegin); EXPECT_EQ(dsm.run(buffer), ProtocolState::WaitForData); @@ -300,7 +291,7 @@ TEST_F(DecoderStateMachineTest, EmptyList) { .WillOnce(DoAll(SetArgReferee<1>(FieldType::I32), SetArgReferee<2>(0), Return(true))); EXPECT_CALL(proto_, readListEnd(Ref(buffer))).WillOnce(Return(false)); - DecoderStateMachine dsm(proto_, metadata_, filter_); + DecoderStateMachine dsm(proto_, metadata_, handler_); dsm.setCurrentState(ProtocolState::ListBegin); EXPECT_EQ(dsm.run(buffer), ProtocolState::WaitForData); @@ -315,11 +306,11 @@ TEST_P(DecoderStateMachineValueTest, ListValue) { EXPECT_CALL(proto_, readListBegin(Ref(buffer), _, _)) .WillOnce(DoAll(SetArgReferee<1>(field_type), SetArgReferee<2>(1), Return(true))); - expectValue(proto_, filter_, field_type); + expectValue(proto_, handler_, field_type); EXPECT_CALL(proto_, readListEnd(Ref(buffer))).WillOnce(Return(false)); - DecoderStateMachine dsm(proto_, metadata_, filter_); + DecoderStateMachine dsm(proto_, metadata_, handler_); dsm.setCurrentState(ProtocolState::ListBegin); EXPECT_EQ(dsm.run(buffer), ProtocolState::WaitForData); @@ -335,12 +326,12 @@ TEST_P(DecoderStateMachineValueTest, MultipleListValues) { .WillOnce(DoAll(SetArgReferee<1>(field_type), SetArgReferee<2>(5), Return(true))); for (int i = 0; i < 5; i++) { - expectValue(proto_, filter_, field_type); + expectValue(proto_, handler_, field_type); } EXPECT_CALL(proto_, readListEnd(Ref(buffer))).WillOnce(Return(false)); - DecoderStateMachine dsm(proto_, metadata_, filter_); + DecoderStateMachine dsm(proto_, metadata_, handler_); dsm.setCurrentState(ProtocolState::ListBegin); EXPECT_EQ(dsm.run(buffer), ProtocolState::WaitForData); @@ -356,7 +347,7 @@ TEST_F(DecoderStateMachineTest, NoMapKeyData) { SetArgReferee<3>(1), Return(true))); EXPECT_CALL(proto_, readInt32(Ref(buffer), _)).WillOnce(Return(false)); - DecoderStateMachine dsm(proto_, metadata_, filter_); + DecoderStateMachine dsm(proto_, metadata_, handler_); dsm.setCurrentState(ProtocolState::MapBegin); EXPECT_EQ(dsm.run(buffer), ProtocolState::WaitForData); @@ -373,7 +364,7 @@ TEST_F(DecoderStateMachineTest, NoMapValueData) { EXPECT_CALL(proto_, readInt32(Ref(buffer), _)).WillOnce(Return(true)); EXPECT_CALL(proto_, readString(Ref(buffer), _)).WillOnce(Return(false)); - DecoderStateMachine dsm(proto_, metadata_, filter_); + DecoderStateMachine dsm(proto_, metadata_, handler_); dsm.setCurrentState(ProtocolState::MapBegin); EXPECT_EQ(dsm.run(buffer), ProtocolState::WaitForData); @@ -389,7 +380,7 @@ TEST_F(DecoderStateMachineTest, EmptyMap) { SetArgReferee<3>(0), Return(true))); EXPECT_CALL(proto_, readMapEnd(Ref(buffer))).WillOnce(Return(false)); - DecoderStateMachine dsm(proto_, metadata_, filter_); + DecoderStateMachine dsm(proto_, metadata_, handler_); dsm.setCurrentState(ProtocolState::MapBegin); EXPECT_EQ(dsm.run(buffer), ProtocolState::WaitForData); @@ -405,12 +396,12 @@ TEST_P(DecoderStateMachineValueTest, MapKeyValue) { .WillOnce(DoAll(SetArgReferee<1>(field_type), SetArgReferee<2>(FieldType::String), SetArgReferee<3>(1), Return(true))); - expectValue(proto_, filter_, field_type); // key - expectValue(proto_, filter_, FieldType::String); // value + expectValue(proto_, handler_, field_type); // key + expectValue(proto_, handler_, FieldType::String); // value EXPECT_CALL(proto_, readMapEnd(Ref(buffer))).WillOnce(Return(false)); - DecoderStateMachine dsm(proto_, metadata_, filter_); + DecoderStateMachine dsm(proto_, metadata_, handler_); dsm.setCurrentState(ProtocolState::MapBegin); EXPECT_EQ(dsm.run(buffer), ProtocolState::WaitForData); @@ -426,12 +417,12 @@ TEST_P(DecoderStateMachineValueTest, MapValueValue) { .WillOnce(DoAll(SetArgReferee<1>(FieldType::I32), SetArgReferee<2>(field_type), SetArgReferee<3>(1), Return(true))); - expectValue(proto_, filter_, FieldType::I32); // key - expectValue(proto_, filter_, field_type); // value + expectValue(proto_, handler_, FieldType::I32); // key + expectValue(proto_, handler_, field_type); // value EXPECT_CALL(proto_, readMapEnd(Ref(buffer))).WillOnce(Return(false)); - DecoderStateMachine dsm(proto_, metadata_, filter_); + DecoderStateMachine dsm(proto_, metadata_, handler_); dsm.setCurrentState(ProtocolState::MapBegin); EXPECT_EQ(dsm.run(buffer), ProtocolState::WaitForData); @@ -448,13 +439,13 @@ TEST_P(DecoderStateMachineValueTest, MultipleMapKeyValues) { SetArgReferee<3>(5), Return(true))); for (int i = 0; i < 5; i++) { - expectValue(proto_, filter_, FieldType::I32); // key - expectValue(proto_, filter_, field_type); // value + expectValue(proto_, handler_, FieldType::I32); // key + expectValue(proto_, handler_, field_type); // value } EXPECT_CALL(proto_, readMapEnd(Ref(buffer))).WillOnce(Return(false)); - DecoderStateMachine dsm(proto_, metadata_, filter_); + DecoderStateMachine dsm(proto_, metadata_, handler_); dsm.setCurrentState(ProtocolState::MapBegin); EXPECT_EQ(dsm.run(buffer), ProtocolState::WaitForData); @@ -469,7 +460,7 @@ TEST_F(DecoderStateMachineTest, NoSetValueData) { .WillOnce(DoAll(SetArgReferee<1>(FieldType::I32), SetArgReferee<2>(1), Return(true))); EXPECT_CALL(proto_, readInt32(Ref(buffer), _)).WillOnce(Return(false)); - DecoderStateMachine dsm(proto_, metadata_, filter_); + DecoderStateMachine dsm(proto_, metadata_, handler_); dsm.setCurrentState(ProtocolState::SetBegin); EXPECT_EQ(dsm.run(buffer), ProtocolState::WaitForData); @@ -484,7 +475,7 @@ TEST_F(DecoderStateMachineTest, EmptySet) { .WillOnce(DoAll(SetArgReferee<1>(FieldType::I32), SetArgReferee<2>(0), Return(true))); EXPECT_CALL(proto_, readSetEnd(Ref(buffer))).WillOnce(Return(false)); - DecoderStateMachine dsm(proto_, metadata_, filter_); + DecoderStateMachine dsm(proto_, metadata_, handler_); dsm.setCurrentState(ProtocolState::SetBegin); EXPECT_EQ(dsm.run(buffer), ProtocolState::WaitForData); @@ -499,11 +490,11 @@ TEST_P(DecoderStateMachineValueTest, SetValue) { EXPECT_CALL(proto_, readSetBegin(Ref(buffer), _, _)) .WillOnce(DoAll(SetArgReferee<1>(field_type), SetArgReferee<2>(1), Return(true))); - expectValue(proto_, filter_, field_type); + expectValue(proto_, handler_, field_type); EXPECT_CALL(proto_, readSetEnd(Ref(buffer))).WillOnce(Return(false)); - DecoderStateMachine dsm(proto_, metadata_, filter_); + DecoderStateMachine dsm(proto_, metadata_, handler_); dsm.setCurrentState(ProtocolState::SetBegin); EXPECT_EQ(dsm.run(buffer), ProtocolState::WaitForData); @@ -519,12 +510,12 @@ TEST_P(DecoderStateMachineValueTest, MultipleSetValues) { .WillOnce(DoAll(SetArgReferee<1>(field_type), SetArgReferee<2>(5), Return(true))); for (int i = 0; i < 5; i++) { - expectValue(proto_, filter_, field_type); + expectValue(proto_, handler_, field_type); } EXPECT_CALL(proto_, readSetEnd(Ref(buffer))).WillOnce(Return(false)); - DecoderStateMachine dsm(proto_, metadata_, filter_); + DecoderStateMachine dsm(proto_, metadata_, handler_); dsm.setCurrentState(ProtocolState::SetBegin); EXPECT_EQ(dsm.run(buffer), ProtocolState::WaitForData); @@ -548,7 +539,7 @@ TEST_F(DecoderStateMachineTest, EmptyStruct) { EXPECT_CALL(proto_, readStructEnd(Ref(buffer))).WillOnce(Return(true)); EXPECT_CALL(proto_, readMessageEnd(Ref(buffer))).WillOnce(Return(true)); - DecoderStateMachine dsm(proto_, metadata_, filter_); + DecoderStateMachine dsm(proto_, metadata_, handler_); EXPECT_EQ(dsm.run(buffer), ProtocolState::Done); EXPECT_EQ(dsm.currentState(), ProtocolState::Done); @@ -566,41 +557,40 @@ TEST_P(DecoderStateMachineValueTest, SingleFieldStruct) { metadata.setSequenceId(100); return true; })); - EXPECT_CALL(filter_, messageBegin(_)) - .WillOnce(Invoke([&](MessageMetadataSharedPtr metadata) -> ThriftFilters::FilterStatus { + EXPECT_CALL(handler_, messageBegin(_)) + .WillOnce(Invoke([&](MessageMetadataSharedPtr metadata) -> FilterStatus { EXPECT_TRUE(metadata->hasMethodName()); EXPECT_TRUE(metadata->hasMessageType()); EXPECT_TRUE(metadata->hasSequenceId()); EXPECT_EQ("name", metadata->methodName()); EXPECT_EQ(MessageType::Call, metadata->messageType()); EXPECT_EQ(100U, metadata->sequenceId()); - return ThriftFilters::FilterStatus::Continue; + return FilterStatus::Continue; })); EXPECT_CALL(proto_, readStructBegin(Ref(buffer), _)).WillOnce(Return(true)); - EXPECT_CALL(filter_, structBegin(absl::string_view())) - .WillOnce(Return(ThriftFilters::FilterStatus::Continue)); + EXPECT_CALL(handler_, structBegin(absl::string_view())).WillOnce(Return(FilterStatus::Continue)); EXPECT_CALL(proto_, readFieldBegin(Ref(buffer), _, _, _)) .WillOnce(DoAll(SetArgReferee<2>(field_type), SetArgReferee<3>(1), Return(true))); - EXPECT_CALL(filter_, fieldBegin(absl::string_view(), field_type, 1)) - .WillOnce(Return(ThriftFilters::FilterStatus::Continue)); + EXPECT_CALL(handler_, fieldBegin(absl::string_view(), field_type, 1)) + .WillOnce(Return(FilterStatus::Continue)); - expectValue(proto_, filter_, field_type); + expectValue(proto_, handler_, field_type); EXPECT_CALL(proto_, readFieldEnd(Ref(buffer))).WillOnce(Return(true)); - EXPECT_CALL(filter_, fieldEnd()).WillOnce(Return(ThriftFilters::FilterStatus::Continue)); + EXPECT_CALL(handler_, fieldEnd()).WillOnce(Return(FilterStatus::Continue)); EXPECT_CALL(proto_, readFieldBegin(Ref(buffer), _, _, _)) .WillOnce(DoAll(SetArgReferee<2>(FieldType::Stop), Return(true))); EXPECT_CALL(proto_, readStructEnd(Ref(buffer))).WillOnce(Return(true)); - EXPECT_CALL(filter_, structEnd()).WillOnce(Return(ThriftFilters::FilterStatus::Continue)); + EXPECT_CALL(handler_, structEnd()).WillOnce(Return(FilterStatus::Continue)); EXPECT_CALL(proto_, readMessageEnd(Ref(buffer))).WillOnce(Return(true)); - EXPECT_CALL(filter_, messageEnd()).WillOnce(Return(ThriftFilters::FilterStatus::Continue)); + EXPECT_CALL(handler_, messageEnd()).WillOnce(Return(FilterStatus::Continue)); - DecoderStateMachine dsm(proto_, metadata_, filter_); + DecoderStateMachine dsm(proto_, metadata_, handler_); EXPECT_EQ(dsm.run(buffer), ProtocolState::Done); EXPECT_EQ(dsm.currentState(), ProtocolState::Done); @@ -621,44 +611,43 @@ TEST_F(DecoderStateMachineTest, MultiFieldStruct) { metadata.setSequenceId(100); return true; })); - EXPECT_CALL(filter_, messageBegin(_)) - .WillOnce(Invoke([&](MessageMetadataSharedPtr metadata) -> ThriftFilters::FilterStatus { + EXPECT_CALL(handler_, messageBegin(_)) + .WillOnce(Invoke([&](MessageMetadataSharedPtr metadata) -> FilterStatus { EXPECT_TRUE(metadata->hasMethodName()); EXPECT_TRUE(metadata->hasMessageType()); EXPECT_TRUE(metadata->hasSequenceId()); EXPECT_EQ("name", metadata->methodName()); EXPECT_EQ(MessageType::Call, metadata->messageType()); EXPECT_EQ(100U, metadata->sequenceId()); - return ThriftFilters::FilterStatus::Continue; + return FilterStatus::Continue; })); EXPECT_CALL(proto_, readStructBegin(Ref(buffer), _)).WillOnce(Return(true)); - EXPECT_CALL(filter_, structBegin(absl::string_view())) - .WillOnce(Return(ThriftFilters::FilterStatus::Continue)); + EXPECT_CALL(handler_, structBegin(absl::string_view())).WillOnce(Return(FilterStatus::Continue)); int16_t field_id = 1; for (FieldType field_type : field_types) { EXPECT_CALL(proto_, readFieldBegin(Ref(buffer), _, _, _)) .WillOnce(DoAll(SetArgReferee<2>(field_type), SetArgReferee<3>(field_id), Return(true))); - EXPECT_CALL(filter_, fieldBegin(absl::string_view(), field_type, field_id)) - .WillOnce(Return(ThriftFilters::FilterStatus::Continue)); + EXPECT_CALL(handler_, fieldBegin(absl::string_view(), field_type, field_id)) + .WillOnce(Return(FilterStatus::Continue)); field_id++; - expectValue(proto_, filter_, field_type); + expectValue(proto_, handler_, field_type); EXPECT_CALL(proto_, readFieldEnd(Ref(buffer))).WillOnce(Return(true)); - EXPECT_CALL(filter_, fieldEnd()).WillOnce(Return(ThriftFilters::FilterStatus::Continue)); + EXPECT_CALL(handler_, fieldEnd()).WillOnce(Return(FilterStatus::Continue)); } EXPECT_CALL(proto_, readFieldBegin(Ref(buffer), _, _, _)) .WillOnce(DoAll(SetArgReferee<2>(FieldType::Stop), Return(true))); EXPECT_CALL(proto_, readStructEnd(Ref(buffer))).WillOnce(Return(true)); - EXPECT_CALL(filter_, structEnd()).WillOnce(Return(ThriftFilters::FilterStatus::Continue)); + EXPECT_CALL(handler_, structEnd()).WillOnce(Return(FilterStatus::Continue)); EXPECT_CALL(proto_, readMessageEnd(Ref(buffer))).WillOnce(Return(true)); - EXPECT_CALL(filter_, messageEnd()).WillOnce(Return(ThriftFilters::FilterStatus::Continue)); + EXPECT_CALL(handler_, messageEnd()).WillOnce(Return(FilterStatus::Continue)); - DecoderStateMachine dsm(proto_, metadata_, filter_); + DecoderStateMachine dsm(proto_, metadata_, handler_); EXPECT_EQ(dsm.run(buffer), ProtocolState::Done); EXPECT_EQ(dsm.currentState(), ProtocolState::Done); @@ -679,42 +668,42 @@ TEST_P(DecoderStateMachineNestingTest, NestedTypes) { metadata.setSequenceId(100); return true; })); - EXPECT_CALL(filter_, messageBegin(_)) - .WillOnce(Invoke([&](MessageMetadataSharedPtr metadata) -> ThriftFilters::FilterStatus { + EXPECT_CALL(handler_, messageBegin(_)) + .WillOnce(Invoke([&](MessageMetadataSharedPtr metadata) -> FilterStatus { EXPECT_TRUE(metadata->hasMethodName()); EXPECT_TRUE(metadata->hasMessageType()); EXPECT_TRUE(metadata->hasSequenceId()); EXPECT_EQ("name", metadata->methodName()); EXPECT_EQ(MessageType::Call, metadata->messageType()); EXPECT_EQ(100U, metadata->sequenceId()); - return ThriftFilters::FilterStatus::Continue; + return FilterStatus::Continue; })); - expectContainerStart(proto_, filter_, FieldType::Struct, outer_field_type); + expectContainerStart(proto_, handler_, FieldType::Struct, outer_field_type); - expectContainerStart(proto_, filter_, outer_field_type, inner_type); + expectContainerStart(proto_, handler_, outer_field_type, inner_type); int outer_reps = outer_field_type == FieldType::Map ? 2 : 1; for (int i = 0; i < outer_reps; i++) { - expectContainerStart(proto_, filter_, inner_type, value_type); + expectContainerStart(proto_, handler_, inner_type, value_type); int inner_reps = inner_type == FieldType::Map ? 2 : 1; for (int j = 0; j < inner_reps; j++) { - expectValue(proto_, filter_, value_type); + expectValue(proto_, handler_, value_type); } - expectContainerEnd(proto_, filter_, inner_type); + expectContainerEnd(proto_, handler_, inner_type); } - expectContainerEnd(proto_, filter_, outer_field_type); + expectContainerEnd(proto_, handler_, outer_field_type); // end of message and outermost struct - expectContainerEnd(proto_, filter_, FieldType::Struct); + expectContainerEnd(proto_, handler_, FieldType::Struct); EXPECT_CALL(proto_, readMessageEnd(Ref(buffer))).WillOnce(Return(true)); - EXPECT_CALL(filter_, messageEnd()).WillOnce(Return(ThriftFilters::FilterStatus::Continue)); + EXPECT_CALL(handler_, messageEnd()).WillOnce(Return(FilterStatus::Continue)); - DecoderStateMachine dsm(proto_, metadata_, filter_); + DecoderStateMachine dsm(proto_, metadata_, handler_); EXPECT_EQ(dsm.run(buffer), ProtocolState::Done); EXPECT_EQ(dsm.currentState(), ProtocolState::Done); @@ -724,8 +713,8 @@ TEST(DecoderTest, OnData) { NiceMock* transport = new NiceMock(); NiceMock* proto = new NiceMock(); NiceMock callbacks; - StrictMock filter; - ON_CALL(callbacks, newDecoderFilter()).WillByDefault(ReturnRef(filter)); + StrictMock handler; + ON_CALL(callbacks, newDecoderEventHandler()).WillByDefault(ReturnRef(handler)); InSequence dummy; Decoder decoder(TransportPtr{transport}, ProtocolPtr{proto}, callbacks); @@ -736,11 +725,11 @@ TEST(DecoderTest, OnData) { metadata.setFrameSize(100); return true; })); - EXPECT_CALL(filter, transportBegin(_)) - .WillOnce(Invoke([&](MessageMetadataSharedPtr metadata) -> ThriftFilters::FilterStatus { + EXPECT_CALL(handler, transportBegin(_)) + .WillOnce(Invoke([&](MessageMetadataSharedPtr metadata) -> FilterStatus { EXPECT_TRUE(metadata->hasFrameSize()); EXPECT_EQ(100U, metadata->frameSize()); - return ThriftFilters::FilterStatus::Continue; + return FilterStatus::Continue; })); EXPECT_CALL(*proto, readMessageBegin(Ref(buffer), _)) @@ -750,34 +739,33 @@ TEST(DecoderTest, OnData) { metadata.setSequenceId(100); return true; })); - EXPECT_CALL(filter, messageBegin(_)) - .WillOnce(Invoke([&](MessageMetadataSharedPtr metadata) -> ThriftFilters::FilterStatus { + EXPECT_CALL(handler, messageBegin(_)) + .WillOnce(Invoke([&](MessageMetadataSharedPtr metadata) -> FilterStatus { EXPECT_TRUE(metadata->hasMethodName()); EXPECT_TRUE(metadata->hasMessageType()); EXPECT_TRUE(metadata->hasSequenceId()); EXPECT_EQ("name", metadata->methodName()); EXPECT_EQ(MessageType::Call, metadata->messageType()); EXPECT_EQ(100U, metadata->sequenceId()); - return ThriftFilters::FilterStatus::Continue; + return FilterStatus::Continue; })); EXPECT_CALL(*proto, readStructBegin(Ref(buffer), _)).WillOnce(Return(true)); - EXPECT_CALL(filter, structBegin(absl::string_view())) - .WillOnce(Return(ThriftFilters::FilterStatus::Continue)); + EXPECT_CALL(handler, structBegin(absl::string_view())).WillOnce(Return(FilterStatus::Continue)); EXPECT_CALL(*proto, readFieldBegin(Ref(buffer), _, _, _)) .WillOnce(DoAll(SetArgReferee<2>(FieldType::Stop), Return(true))); EXPECT_CALL(*proto, readStructEnd(Ref(buffer))).WillOnce(Return(true)); - EXPECT_CALL(filter, structEnd()).WillOnce(Return(ThriftFilters::FilterStatus::Continue)); + EXPECT_CALL(handler, structEnd()).WillOnce(Return(FilterStatus::Continue)); EXPECT_CALL(*proto, readMessageEnd(Ref(buffer))).WillOnce(Return(true)); - EXPECT_CALL(filter, messageEnd()).WillOnce(Return(ThriftFilters::FilterStatus::Continue)); + EXPECT_CALL(handler, messageEnd()).WillOnce(Return(FilterStatus::Continue)); EXPECT_CALL(*transport, decodeFrameEnd(Ref(buffer))).WillOnce(Return(true)); - EXPECT_CALL(filter, transportEnd()).WillOnce(Return(ThriftFilters::FilterStatus::Continue)); + EXPECT_CALL(handler, transportEnd()).WillOnce(Return(FilterStatus::Continue)); bool underflow = false; - EXPECT_EQ(ThriftFilters::FilterStatus::Continue, decoder.onData(buffer, underflow)); + EXPECT_EQ(FilterStatus::Continue, decoder.onData(buffer, underflow)); EXPECT_TRUE(underflow); } @@ -785,8 +773,8 @@ TEST(DecoderTest, OnDataWithProtocolHint) { NiceMock* transport = new NiceMock(); NiceMock* proto = new NiceMock(); NiceMock callbacks; - StrictMock filter; - ON_CALL(callbacks, newDecoderFilter()).WillByDefault(ReturnRef(filter)); + StrictMock handler; + ON_CALL(callbacks, newDecoderEventHandler()).WillByDefault(ReturnRef(handler)); InSequence dummy; Decoder decoder(TransportPtr{transport}, ProtocolPtr{proto}, callbacks); @@ -800,15 +788,15 @@ TEST(DecoderTest, OnDataWithProtocolHint) { })); EXPECT_CALL(*proto, type()).WillOnce(Return(ProtocolType::Auto)); EXPECT_CALL(*proto, setType(ProtocolType::Binary)); - EXPECT_CALL(filter, transportBegin(_)) - .WillOnce(Invoke([&](MessageMetadataSharedPtr metadata) -> ThriftFilters::FilterStatus { + EXPECT_CALL(handler, transportBegin(_)) + .WillOnce(Invoke([&](MessageMetadataSharedPtr metadata) -> FilterStatus { EXPECT_TRUE(metadata->hasFrameSize()); EXPECT_EQ(100U, metadata->frameSize()); EXPECT_TRUE(metadata->hasProtocol()); EXPECT_EQ(ProtocolType::Binary, metadata->protocol()); - return ThriftFilters::FilterStatus::Continue; + return FilterStatus::Continue; })); EXPECT_CALL(*proto, readMessageBegin(Ref(buffer), _)) @@ -818,34 +806,33 @@ TEST(DecoderTest, OnDataWithProtocolHint) { metadata.setSequenceId(100); return true; })); - EXPECT_CALL(filter, messageBegin(_)) - .WillOnce(Invoke([&](MessageMetadataSharedPtr metadata) -> ThriftFilters::FilterStatus { + EXPECT_CALL(handler, messageBegin(_)) + .WillOnce(Invoke([&](MessageMetadataSharedPtr metadata) -> FilterStatus { EXPECT_TRUE(metadata->hasMethodName()); EXPECT_TRUE(metadata->hasMessageType()); EXPECT_TRUE(metadata->hasSequenceId()); EXPECT_EQ("name", metadata->methodName()); EXPECT_EQ(MessageType::Call, metadata->messageType()); EXPECT_EQ(100U, metadata->sequenceId()); - return ThriftFilters::FilterStatus::Continue; + return FilterStatus::Continue; })); EXPECT_CALL(*proto, readStructBegin(Ref(buffer), _)).WillOnce(Return(true)); - EXPECT_CALL(filter, structBegin(absl::string_view())) - .WillOnce(Return(ThriftFilters::FilterStatus::Continue)); + EXPECT_CALL(handler, structBegin(absl::string_view())).WillOnce(Return(FilterStatus::Continue)); EXPECT_CALL(*proto, readFieldBegin(Ref(buffer), _, _, _)) .WillOnce(DoAll(SetArgReferee<2>(FieldType::Stop), Return(true))); EXPECT_CALL(*proto, readStructEnd(Ref(buffer))).WillOnce(Return(true)); - EXPECT_CALL(filter, structEnd()).WillOnce(Return(ThriftFilters::FilterStatus::Continue)); + EXPECT_CALL(handler, structEnd()).WillOnce(Return(FilterStatus::Continue)); EXPECT_CALL(*proto, readMessageEnd(Ref(buffer))).WillOnce(Return(true)); - EXPECT_CALL(filter, messageEnd()).WillOnce(Return(ThriftFilters::FilterStatus::Continue)); + EXPECT_CALL(handler, messageEnd()).WillOnce(Return(FilterStatus::Continue)); EXPECT_CALL(*transport, decodeFrameEnd(Ref(buffer))).WillOnce(Return(true)); - EXPECT_CALL(filter, transportEnd()).WillOnce(Return(ThriftFilters::FilterStatus::Continue)); + EXPECT_CALL(handler, transportEnd()).WillOnce(Return(FilterStatus::Continue)); bool underflow = false; - EXPECT_EQ(ThriftFilters::FilterStatus::Continue, decoder.onData(buffer, underflow)); + EXPECT_EQ(FilterStatus::Continue, decoder.onData(buffer, underflow)); EXPECT_TRUE(underflow); } @@ -853,8 +840,8 @@ TEST(DecoderTest, OnDataWithInconsistentProtocolHint) { NiceMock* transport = new NiceMock(); NiceMock* proto = new NiceMock(); NiceMock callbacks; - StrictMock filter; - ON_CALL(callbacks, newDecoderFilter()).WillByDefault(ReturnRef(filter)); + StrictMock handler; + ON_CALL(callbacks, newDecoderEventHandler()).WillByDefault(ReturnRef(handler)); InSequence dummy; Decoder decoder(TransportPtr{transport}, ProtocolPtr{proto}, callbacks); @@ -877,8 +864,8 @@ TEST(DecoderTest, OnDataThrowsTransportAppException) { NiceMock* transport = new NiceMock(); NiceMock* proto = new NiceMock(); NiceMock callbacks; - StrictMock filter; - ON_CALL(callbacks, newDecoderFilter()).WillByDefault(ReturnRef(filter)); + StrictMock handler; + ON_CALL(callbacks, newDecoderEventHandler()).WillByDefault(ReturnRef(handler)); InSequence dummy; Decoder decoder(TransportPtr{transport}, ProtocolPtr{proto}, callbacks); @@ -898,8 +885,8 @@ TEST(DecoderTest, OnDataResumes) { NiceMock* transport = new NiceMock(); NiceMock* proto = new NiceMock(); NiceMock callbacks; - NiceMock filter; - ON_CALL(callbacks, newDecoderFilter()).WillByDefault(ReturnRef(filter)); + NiceMock handler; + ON_CALL(callbacks, newDecoderEventHandler()).WillByDefault(ReturnRef(handler)); InSequence dummy; @@ -922,7 +909,7 @@ TEST(DecoderTest, OnDataResumes) { EXPECT_CALL(*proto, readStructBegin(_, _)).WillOnce(Return(false)); bool underflow = false; - EXPECT_EQ(ThriftFilters::FilterStatus::Continue, decoder.onData(buffer, underflow)); + EXPECT_EQ(FilterStatus::Continue, decoder.onData(buffer, underflow)); EXPECT_TRUE(underflow); EXPECT_CALL(*proto, readStructBegin(_, _)).WillOnce(Return(true)); @@ -932,7 +919,7 @@ TEST(DecoderTest, OnDataResumes) { EXPECT_CALL(*proto, readMessageEnd(_)).WillOnce(Return(true)); EXPECT_CALL(*transport, decodeFrameEnd(_)).WillOnce(Return(true)); - EXPECT_EQ(ThriftFilters::FilterStatus::Continue, decoder.onData(buffer, underflow)); + EXPECT_EQ(FilterStatus::Continue, decoder.onData(buffer, underflow)); EXPECT_FALSE(underflow); // buffer.length() == 1 } @@ -940,8 +927,8 @@ TEST(DecoderTest, OnDataResumesTransportFrameStart) { StrictMock* transport = new StrictMock(); StrictMock* proto = new StrictMock(); NiceMock callbacks; - NiceMock filter; - ON_CALL(callbacks, newDecoderFilter()).WillByDefault(ReturnRef(filter)); + NiceMock handler; + ON_CALL(callbacks, newDecoderEventHandler()).WillByDefault(ReturnRef(handler)); EXPECT_CALL(*transport, name()).Times(AnyNumber()); EXPECT_CALL(*proto, name()).Times(AnyNumber()); @@ -953,7 +940,7 @@ TEST(DecoderTest, OnDataResumesTransportFrameStart) { bool underflow = false; EXPECT_CALL(*transport, decodeFrameStart(Ref(buffer), _)).WillOnce(Return(false)); - EXPECT_EQ(ThriftFilters::FilterStatus::Continue, decoder.onData(buffer, underflow)); + EXPECT_EQ(FilterStatus::Continue, decoder.onData(buffer, underflow)); EXPECT_TRUE(underflow); EXPECT_CALL(*transport, decodeFrameStart(Ref(buffer), _)) @@ -976,7 +963,7 @@ TEST(DecoderTest, OnDataResumesTransportFrameStart) { EXPECT_CALL(*transport, decodeFrameEnd(_)).WillOnce(Return(true)); underflow = false; - EXPECT_EQ(ThriftFilters::FilterStatus::Continue, decoder.onData(buffer, underflow)); + EXPECT_EQ(FilterStatus::Continue, decoder.onData(buffer, underflow)); EXPECT_TRUE(underflow); // buffer.length() == 0 } @@ -984,8 +971,8 @@ TEST(DecoderTest, OnDataResumesTransportFrameEnd) { StrictMock* transport = new StrictMock(); StrictMock* proto = new StrictMock(); NiceMock callbacks; - NiceMock filter; - ON_CALL(callbacks, newDecoderFilter()).WillByDefault(ReturnRef(filter)); + NiceMock handler; + ON_CALL(callbacks, newDecoderEventHandler()).WillByDefault(ReturnRef(handler)); EXPECT_CALL(*transport, name()).Times(AnyNumber()); EXPECT_CALL(*proto, name()).Times(AnyNumber()); @@ -1015,11 +1002,11 @@ TEST(DecoderTest, OnDataResumesTransportFrameEnd) { EXPECT_CALL(*transport, decodeFrameEnd(_)).WillOnce(Return(false)); bool underflow = false; - EXPECT_EQ(ThriftFilters::FilterStatus::Continue, decoder.onData(buffer, underflow)); + EXPECT_EQ(FilterStatus::Continue, decoder.onData(buffer, underflow)); EXPECT_TRUE(underflow); EXPECT_CALL(*transport, decodeFrameEnd(_)).WillOnce(Return(true)); - EXPECT_EQ(ThriftFilters::FilterStatus::Continue, decoder.onData(buffer, underflow)); + EXPECT_EQ(FilterStatus::Continue, decoder.onData(buffer, underflow)); EXPECT_TRUE(underflow); // buffer.length() == 0 } @@ -1032,8 +1019,8 @@ TEST(DecoderTest, OnDataHandlesStopIterationAndResumes) { EXPECT_CALL(*proto, name()).WillRepeatedly(ReturnRef(proto->name_)); NiceMock callbacks; - StrictMock filter; - ON_CALL(callbacks, newDecoderFilter()).WillByDefault(ReturnRef(filter)); + StrictMock handler; + ON_CALL(callbacks, newDecoderEventHandler()).WillByDefault(ReturnRef(handler)); InSequence dummy; Decoder decoder(TransportPtr{transport}, ProtocolPtr{proto}, callbacks); @@ -1045,14 +1032,14 @@ TEST(DecoderTest, OnDataHandlesStopIterationAndResumes) { metadata.setFrameSize(100); return true; })); - EXPECT_CALL(filter, transportBegin(_)) - .WillOnce(Invoke([&](MessageMetadataSharedPtr metadata) -> ThriftFilters::FilterStatus { + EXPECT_CALL(handler, transportBegin(_)) + .WillOnce(Invoke([&](MessageMetadataSharedPtr metadata) -> FilterStatus { EXPECT_TRUE(metadata->hasFrameSize()); EXPECT_EQ(100U, metadata->frameSize()); - return ThriftFilters::FilterStatus::StopIteration; + return FilterStatus::StopIteration; })); - EXPECT_EQ(ThriftFilters::FilterStatus::StopIteration, decoder.onData(buffer, underflow)); + EXPECT_EQ(FilterStatus::StopIteration, decoder.onData(buffer, underflow)); EXPECT_FALSE(underflow); EXPECT_CALL(*proto, readMessageBegin(Ref(buffer), _)) @@ -1062,60 +1049,60 @@ TEST(DecoderTest, OnDataHandlesStopIterationAndResumes) { metadata.setSequenceId(100); return true; })); - EXPECT_CALL(filter, messageBegin(_)) - .WillOnce(Invoke([&](MessageMetadataSharedPtr metadata) -> ThriftFilters::FilterStatus { + EXPECT_CALL(handler, messageBegin(_)) + .WillOnce(Invoke([&](MessageMetadataSharedPtr metadata) -> FilterStatus { EXPECT_TRUE(metadata->hasMethodName()); EXPECT_TRUE(metadata->hasMessageType()); EXPECT_TRUE(metadata->hasSequenceId()); EXPECT_EQ("name", metadata->methodName()); EXPECT_EQ(MessageType::Call, metadata->messageType()); EXPECT_EQ(100U, metadata->sequenceId()); - return ThriftFilters::FilterStatus::StopIteration; + return FilterStatus::StopIteration; })); - EXPECT_EQ(ThriftFilters::FilterStatus::StopIteration, decoder.onData(buffer, underflow)); + EXPECT_EQ(FilterStatus::StopIteration, decoder.onData(buffer, underflow)); EXPECT_FALSE(underflow); EXPECT_CALL(*proto, readStructBegin(Ref(buffer), _)).WillOnce(Return(true)); - EXPECT_CALL(filter, structBegin(absl::string_view())) - .WillOnce(Return(ThriftFilters::FilterStatus::StopIteration)); - EXPECT_EQ(ThriftFilters::FilterStatus::StopIteration, decoder.onData(buffer, underflow)); + EXPECT_CALL(handler, structBegin(absl::string_view())) + .WillOnce(Return(FilterStatus::StopIteration)); + EXPECT_EQ(FilterStatus::StopIteration, decoder.onData(buffer, underflow)); EXPECT_FALSE(underflow); EXPECT_CALL(*proto, readFieldBegin(Ref(buffer), _, _, _)) .WillOnce(DoAll(SetArgReferee<2>(FieldType::I32), SetArgReferee<3>(1), Return(true))); - EXPECT_CALL(filter, fieldBegin(absl::string_view(), FieldType::I32, 1)) - .WillOnce(Return(ThriftFilters::FilterStatus::StopIteration)); - EXPECT_EQ(ThriftFilters::FilterStatus::StopIteration, decoder.onData(buffer, underflow)); + EXPECT_CALL(handler, fieldBegin(absl::string_view(), FieldType::I32, 1)) + .WillOnce(Return(FilterStatus::StopIteration)); + EXPECT_EQ(FilterStatus::StopIteration, decoder.onData(buffer, underflow)); EXPECT_FALSE(underflow); EXPECT_CALL(*proto, readInt32(_, _)).WillOnce(Return(true)); - EXPECT_CALL(filter, int32Value(_)).WillOnce(Return(ThriftFilters::FilterStatus::StopIteration)); - EXPECT_EQ(ThriftFilters::FilterStatus::StopIteration, decoder.onData(buffer, underflow)); + EXPECT_CALL(handler, int32Value(_)).WillOnce(Return(FilterStatus::StopIteration)); + EXPECT_EQ(FilterStatus::StopIteration, decoder.onData(buffer, underflow)); EXPECT_FALSE(underflow); EXPECT_CALL(*proto, readFieldEnd(Ref(buffer))).WillOnce(Return(true)); - EXPECT_CALL(filter, fieldEnd()).WillOnce(Return(ThriftFilters::FilterStatus::StopIteration)); - EXPECT_EQ(ThriftFilters::FilterStatus::StopIteration, decoder.onData(buffer, underflow)); + EXPECT_CALL(handler, fieldEnd()).WillOnce(Return(FilterStatus::StopIteration)); + EXPECT_EQ(FilterStatus::StopIteration, decoder.onData(buffer, underflow)); EXPECT_FALSE(underflow); EXPECT_CALL(*proto, readFieldBegin(Ref(buffer), _, _, _)) .WillOnce(DoAll(SetArgReferee<2>(FieldType::Stop), Return(true))); EXPECT_CALL(*proto, readStructEnd(Ref(buffer))).WillOnce(Return(true)); - EXPECT_CALL(filter, structEnd()).WillOnce(Return(ThriftFilters::FilterStatus::StopIteration)); - EXPECT_EQ(ThriftFilters::FilterStatus::StopIteration, decoder.onData(buffer, underflow)); + EXPECT_CALL(handler, structEnd()).WillOnce(Return(FilterStatus::StopIteration)); + EXPECT_EQ(FilterStatus::StopIteration, decoder.onData(buffer, underflow)); EXPECT_FALSE(underflow); EXPECT_CALL(*proto, readMessageEnd(Ref(buffer))).WillOnce(Return(true)); - EXPECT_CALL(filter, messageEnd()).WillOnce(Return(ThriftFilters::FilterStatus::StopIteration)); - EXPECT_EQ(ThriftFilters::FilterStatus::StopIteration, decoder.onData(buffer, underflow)); + EXPECT_CALL(handler, messageEnd()).WillOnce(Return(FilterStatus::StopIteration)); + EXPECT_EQ(FilterStatus::StopIteration, decoder.onData(buffer, underflow)); EXPECT_FALSE(underflow); EXPECT_CALL(*transport, decodeFrameEnd(Ref(buffer))).WillOnce(Return(true)); - EXPECT_CALL(filter, transportEnd()).WillOnce(Return(ThriftFilters::FilterStatus::StopIteration)); - EXPECT_EQ(ThriftFilters::FilterStatus::StopIteration, decoder.onData(buffer, underflow)); + EXPECT_CALL(handler, transportEnd()).WillOnce(Return(FilterStatus::StopIteration)); + EXPECT_EQ(FilterStatus::StopIteration, decoder.onData(buffer, underflow)); EXPECT_FALSE(underflow); - EXPECT_EQ(ThriftFilters::FilterStatus::Continue, decoder.onData(buffer, underflow)); + EXPECT_EQ(FilterStatus::Continue, decoder.onData(buffer, underflow)); EXPECT_TRUE(underflow); } diff --git a/test/extensions/filters/network/thrift_proxy/mocks.cc b/test/extensions/filters/network/thrift_proxy/mocks.cc index aae1a41e992b..ad14d3c1149e 100644 --- a/test/extensions/filters/network/thrift_proxy/mocks.cc +++ b/test/extensions/filters/network/thrift_proxy/mocks.cc @@ -33,6 +33,12 @@ MockProtocol::~MockProtocol() {} MockDecoderCallbacks::MockDecoderCallbacks() {} MockDecoderCallbacks::~MockDecoderCallbacks() {} +MockDecoderEventHandler::MockDecoderEventHandler() {} +MockDecoderEventHandler::~MockDecoderEventHandler() {} + +MockDirectResponse::MockDirectResponse() {} +MockDirectResponse::~MockDirectResponse() {} + namespace ThriftFilters { MockDecoderFilter::MockDecoderFilter() { diff --git a/test/extensions/filters/network/thrift_proxy/mocks.h b/test/extensions/filters/network/thrift_proxy/mocks.h index d60a40cd9b75..b93b7717c878 100644 --- a/test/extensions/filters/network/thrift_proxy/mocks.h +++ b/test/extensions/filters/network/thrift_proxy/mocks.h @@ -112,7 +112,46 @@ class MockDecoderCallbacks : public DecoderCallbacks { ~MockDecoderCallbacks(); // ThriftProxy::DecoderCallbacks - MOCK_METHOD0(newDecoderFilter, ThriftFilters::DecoderFilter&()); + MOCK_METHOD0(newDecoderEventHandler, DecoderEventHandler&()); +}; + +class MockDecoderEventHandler : public DecoderEventHandler { +public: + MockDecoderEventHandler(); + ~MockDecoderEventHandler(); + + // ThriftProxy::DecoderEventHandler + MOCK_METHOD1(transportBegin, FilterStatus(MessageMetadataSharedPtr metadata)); + MOCK_METHOD0(transportEnd, FilterStatus()); + MOCK_METHOD1(messageBegin, FilterStatus(MessageMetadataSharedPtr metadata)); + MOCK_METHOD0(messageEnd, FilterStatus()); + MOCK_METHOD1(structBegin, FilterStatus(const absl::string_view name)); + MOCK_METHOD0(structEnd, FilterStatus()); + MOCK_METHOD3(fieldBegin, + FilterStatus(const absl::string_view name, FieldType msg_type, int16_t field_id)); + MOCK_METHOD0(fieldEnd, FilterStatus()); + MOCK_METHOD1(boolValue, FilterStatus(bool value)); + MOCK_METHOD1(byteValue, FilterStatus(uint8_t value)); + MOCK_METHOD1(int16Value, FilterStatus(int16_t value)); + MOCK_METHOD1(int32Value, FilterStatus(int32_t value)); + MOCK_METHOD1(int64Value, FilterStatus(int64_t value)); + MOCK_METHOD1(doubleValue, FilterStatus(double value)); + MOCK_METHOD1(stringValue, FilterStatus(absl::string_view value)); + MOCK_METHOD3(mapBegin, FilterStatus(FieldType key_type, FieldType value_type, uint32_t size)); + MOCK_METHOD0(mapEnd, FilterStatus()); + MOCK_METHOD2(listBegin, FilterStatus(FieldType elem_type, uint32_t size)); + MOCK_METHOD0(listEnd, FilterStatus()); + MOCK_METHOD2(setBegin, FilterStatus(FieldType elem_type, uint32_t size)); + MOCK_METHOD0(setEnd, FilterStatus()); +}; + +class MockDirectResponse : public DirectResponse { +public: + MockDirectResponse(); + ~MockDirectResponse(); + + // ThriftProxy::DirectResponse + MOCK_CONST_METHOD3(encode, void(MessageMetadata&, Protocol&, Buffer::Instance&)); }; namespace ThriftFilters { @@ -126,6 +165,8 @@ class MockDecoderFilter : public DecoderFilter { MOCK_METHOD0(onDestroy, void()); MOCK_METHOD1(setDecoderFilterCallbacks, void(DecoderFilterCallbacks& callbacks)); MOCK_METHOD0(resetUpstreamConnection, void()); + + // ThriftProxy::DecoderEventHandler MOCK_METHOD1(transportBegin, FilterStatus(MessageMetadataSharedPtr metadata)); MOCK_METHOD0(transportEnd, FilterStatus()); MOCK_METHOD1(messageBegin, FilterStatus(MessageMetadataSharedPtr metadata)); diff --git a/test/extensions/filters/network/thrift_proxy/router_test.cc b/test/extensions/filters/network/thrift_proxy/router_test.cc index 97298f0ef309..3b07f4d9186d 100644 --- a/test/extensions/filters/network/thrift_proxy/router_test.cc +++ b/test/extensions/filters/network/thrift_proxy/router_test.cc @@ -96,7 +96,7 @@ class ThriftRouterTestBase { } void startRequest(MessageType msg_type) { - EXPECT_EQ(ThriftFilters::FilterStatus::Continue, router_->transportBegin(metadata_)); + EXPECT_EQ(FilterStatus::Continue, router_->transportBegin(metadata_)); EXPECT_CALL(callbacks_, route()).WillOnce(Return(route_ptr_)); EXPECT_CALL(*route_, routeEntry()).WillOnce(Return(&route_entry_)); @@ -106,7 +106,7 @@ class ThriftRouterTestBase { EXPECT_CALL(callbacks_, downstreamTransportType()).WillOnce(Return(TransportType::Framed)); EXPECT_CALL(callbacks_, downstreamProtocolType()).WillOnce(Return(ProtocolType::Binary)); - EXPECT_EQ(ThriftFilters::FilterStatus::StopIteration, router_->messageBegin(metadata_)); + EXPECT_EQ(FilterStatus::StopIteration, router_->messageBegin(metadata_)); NiceMock connection; EXPECT_CALL(callbacks_, connection()).WillRepeatedly(Return(&connection)); @@ -141,7 +141,7 @@ class ThriftRouterTestBase { } void startRequestWithExistingConnection(MessageType msg_type) { - EXPECT_EQ(ThriftFilters::FilterStatus::Continue, router_->transportBegin({})); + EXPECT_EQ(FilterStatus::Continue, router_->transportBegin({})); EXPECT_CALL(callbacks_, route()).WillOnce(Return(route_ptr_)); EXPECT_CALL(*route_, routeEntry()).WillOnce(Return(&route_entry_)); @@ -183,56 +183,56 @@ class ThriftRouterTestBase { return nullptr; })); - EXPECT_EQ(ThriftFilters::FilterStatus::Continue, router_->messageBegin(metadata_)); + EXPECT_EQ(FilterStatus::Continue, router_->messageBegin(metadata_)); EXPECT_NE(nullptr, upstream_callbacks_); } void sendTrivialStruct(FieldType field_type) { EXPECT_CALL(*protocol_, writeStructBegin(_, "")); - EXPECT_EQ(ThriftFilters::FilterStatus::Continue, router_->structBegin({})); + EXPECT_EQ(FilterStatus::Continue, router_->structBegin({})); EXPECT_CALL(*protocol_, writeFieldBegin(_, "", field_type, 1)); - EXPECT_EQ(ThriftFilters::FilterStatus::Continue, router_->fieldBegin({}, field_type, 1)); + EXPECT_EQ(FilterStatus::Continue, router_->fieldBegin({}, field_type, 1)); sendTrivialValue(field_type); EXPECT_CALL(*protocol_, writeFieldEnd(_)); - EXPECT_EQ(ThriftFilters::FilterStatus::Continue, router_->fieldEnd()); + EXPECT_EQ(FilterStatus::Continue, router_->fieldEnd()); EXPECT_CALL(*protocol_, writeFieldBegin(_, "", FieldType::Stop, 0)); EXPECT_CALL(*protocol_, writeStructEnd(_)); - EXPECT_EQ(ThriftFilters::FilterStatus::Continue, router_->structEnd()); + EXPECT_EQ(FilterStatus::Continue, router_->structEnd()); } void sendTrivialValue(FieldType field_type) { switch (field_type) { case FieldType::Bool: EXPECT_CALL(*protocol_, writeBool(_, true)); - EXPECT_EQ(ThriftFilters::FilterStatus::Continue, router_->boolValue(true)); + EXPECT_EQ(FilterStatus::Continue, router_->boolValue(true)); break; case FieldType::Byte: EXPECT_CALL(*protocol_, writeByte(_, 2)); - EXPECT_EQ(ThriftFilters::FilterStatus::Continue, router_->byteValue(2)); + EXPECT_EQ(FilterStatus::Continue, router_->byteValue(2)); break; case FieldType::I16: EXPECT_CALL(*protocol_, writeInt16(_, 3)); - EXPECT_EQ(ThriftFilters::FilterStatus::Continue, router_->int16Value(3)); + EXPECT_EQ(FilterStatus::Continue, router_->int16Value(3)); break; case FieldType::I32: EXPECT_CALL(*protocol_, writeInt32(_, 4)); - EXPECT_EQ(ThriftFilters::FilterStatus::Continue, router_->int32Value(4)); + EXPECT_EQ(FilterStatus::Continue, router_->int32Value(4)); break; case FieldType::I64: EXPECT_CALL(*protocol_, writeInt64(_, 5)); - EXPECT_EQ(ThriftFilters::FilterStatus::Continue, router_->int64Value(5)); + EXPECT_EQ(FilterStatus::Continue, router_->int64Value(5)); break; case FieldType::Double: EXPECT_CALL(*protocol_, writeDouble(_, 6.0)); - EXPECT_EQ(ThriftFilters::FilterStatus::Continue, router_->doubleValue(6.0)); + EXPECT_EQ(FilterStatus::Continue, router_->doubleValue(6.0)); break; case FieldType::String: EXPECT_CALL(*protocol_, writeString(_, "seven")); - EXPECT_EQ(ThriftFilters::FilterStatus::Continue, router_->stringValue("seven")); + EXPECT_EQ(FilterStatus::Continue, router_->stringValue("seven")); break; default: NOT_REACHED_GCOVR_EXCL_LINE; @@ -250,8 +250,8 @@ class ThriftRouterTestBase { EXPECT_CALL(context_.cluster_manager_.tcp_conn_pool_, released(Ref(upstream_connection_))); } - EXPECT_EQ(ThriftFilters::FilterStatus::Continue, router_->messageEnd()); - EXPECT_EQ(ThriftFilters::FilterStatus::Continue, router_->transportEnd()); + EXPECT_EQ(FilterStatus::Continue, router_->messageEnd()); + EXPECT_EQ(FilterStatus::Continue, router_->transportEnd()); } void returnResponse() { @@ -404,7 +404,7 @@ TEST_F(ThriftRouterTest, NoRoute) { EXPECT_EQ(AppExceptionType::UnknownMethod, app_ex.type_); EXPECT_THAT(app_ex.what(), ContainsRegex(".*no route.*")); })); - EXPECT_EQ(ThriftFilters::FilterStatus::StopIteration, router_->messageBegin(metadata_)); + EXPECT_EQ(FilterStatus::StopIteration, router_->messageBegin(metadata_)); } TEST_F(ThriftRouterTest, NoCluster) { @@ -421,7 +421,7 @@ TEST_F(ThriftRouterTest, NoCluster) { EXPECT_EQ(AppExceptionType::InternalError, app_ex.type_); EXPECT_THAT(app_ex.what(), ContainsRegex(".*unknown cluster.*")); })); - EXPECT_EQ(ThriftFilters::FilterStatus::StopIteration, router_->messageBegin(metadata_)); + EXPECT_EQ(FilterStatus::StopIteration, router_->messageBegin(metadata_)); } TEST_F(ThriftRouterTest, ClusterMaintenanceMode) { @@ -440,7 +440,7 @@ TEST_F(ThriftRouterTest, ClusterMaintenanceMode) { EXPECT_EQ(AppExceptionType::InternalError, app_ex.type_); EXPECT_THAT(app_ex.what(), ContainsRegex(".*maintenance mode.*")); })); - EXPECT_EQ(ThriftFilters::FilterStatus::StopIteration, router_->messageBegin(metadata_)); + EXPECT_EQ(FilterStatus::StopIteration, router_->messageBegin(metadata_)); } TEST_F(ThriftRouterTest, NoHealthyHosts) { @@ -460,7 +460,7 @@ TEST_F(ThriftRouterTest, NoHealthyHosts) { EXPECT_THAT(app_ex.what(), ContainsRegex(".*no healthy upstream.*")); })); - EXPECT_EQ(ThriftFilters::FilterStatus::StopIteration, router_->messageBegin(metadata_)); + EXPECT_EQ(FilterStatus::StopIteration, router_->messageBegin(metadata_)); } TEST_F(ThriftRouterTest, TruncatedResponse) { @@ -631,55 +631,54 @@ TEST_P(ThriftRouterContainerTest, DecoderFilterCallbacks) { connectUpstream(); EXPECT_CALL(*protocol_, writeStructBegin(_, "")); - EXPECT_EQ(ThriftFilters::FilterStatus::Continue, router_->structBegin({})); + EXPECT_EQ(FilterStatus::Continue, router_->structBegin({})); EXPECT_CALL(*protocol_, writeFieldBegin(_, "", field_type, 1)); - EXPECT_EQ(ThriftFilters::FilterStatus::Continue, router_->fieldBegin({}, field_type, 1)); + EXPECT_EQ(FilterStatus::Continue, router_->fieldBegin({}, field_type, 1)); switch (field_type) { case FieldType::Map: EXPECT_CALL(*protocol_, writeMapBegin(_, FieldType::I32, FieldType::I32, 2)); - EXPECT_EQ(ThriftFilters::FilterStatus::Continue, - router_->mapBegin(FieldType::I32, FieldType::I32, 2)); + EXPECT_EQ(FilterStatus::Continue, router_->mapBegin(FieldType::I32, FieldType::I32, 2)); for (int i = 0; i < 2; i++) { EXPECT_CALL(*protocol_, writeInt32(_, i)); - EXPECT_EQ(ThriftFilters::FilterStatus::Continue, router_->int32Value(i)); + EXPECT_EQ(FilterStatus::Continue, router_->int32Value(i)); EXPECT_CALL(*protocol_, writeInt32(_, i + 100)); - EXPECT_EQ(ThriftFilters::FilterStatus::Continue, router_->int32Value(i + 100)); + EXPECT_EQ(FilterStatus::Continue, router_->int32Value(i + 100)); } EXPECT_CALL(*protocol_, writeMapEnd(_)); - EXPECT_EQ(ThriftFilters::FilterStatus::Continue, router_->mapEnd()); + EXPECT_EQ(FilterStatus::Continue, router_->mapEnd()); break; case FieldType::List: EXPECT_CALL(*protocol_, writeListBegin(_, FieldType::I32, 3)); - EXPECT_EQ(ThriftFilters::FilterStatus::Continue, router_->listBegin(FieldType::I32, 3)); + EXPECT_EQ(FilterStatus::Continue, router_->listBegin(FieldType::I32, 3)); for (int i = 0; i < 3; i++) { EXPECT_CALL(*protocol_, writeInt32(_, i)); - EXPECT_EQ(ThriftFilters::FilterStatus::Continue, router_->int32Value(i)); + EXPECT_EQ(FilterStatus::Continue, router_->int32Value(i)); } EXPECT_CALL(*protocol_, writeListEnd(_)); - EXPECT_EQ(ThriftFilters::FilterStatus::Continue, router_->listEnd()); + EXPECT_EQ(FilterStatus::Continue, router_->listEnd()); break; case FieldType::Set: EXPECT_CALL(*protocol_, writeSetBegin(_, FieldType::I32, 4)); - EXPECT_EQ(ThriftFilters::FilterStatus::Continue, router_->setBegin(FieldType::I32, 4)); + EXPECT_EQ(FilterStatus::Continue, router_->setBegin(FieldType::I32, 4)); for (int i = 0; i < 4; i++) { EXPECT_CALL(*protocol_, writeInt32(_, i)); - EXPECT_EQ(ThriftFilters::FilterStatus::Continue, router_->int32Value(i)); + EXPECT_EQ(FilterStatus::Continue, router_->int32Value(i)); } EXPECT_CALL(*protocol_, writeSetEnd(_)); - EXPECT_EQ(ThriftFilters::FilterStatus::Continue, router_->setEnd()); + EXPECT_EQ(FilterStatus::Continue, router_->setEnd()); break; default: NOT_REACHED_GCOVR_EXCL_LINE; } EXPECT_CALL(*protocol_, writeFieldEnd(_)); - EXPECT_EQ(ThriftFilters::FilterStatus::Continue, router_->fieldEnd()); + EXPECT_EQ(FilterStatus::Continue, router_->fieldEnd()); EXPECT_CALL(*protocol_, writeFieldBegin(_, _, FieldType::Stop, 0)); EXPECT_CALL(*protocol_, writeStructEnd(_)); - EXPECT_EQ(ThriftFilters::FilterStatus::Continue, router_->structEnd()); + EXPECT_EQ(FilterStatus::Continue, router_->structEnd()); completeRequest(); destroyRouter(); diff --git a/test/extensions/filters/network/thrift_proxy/translation_integration_test.cc b/test/extensions/filters/network/thrift_proxy/translation_integration_test.cc index 24dba246f1f9..79d80312b8b1 100644 --- a/test/extensions/filters/network/thrift_proxy/translation_integration_test.cc +++ b/test/extensions/filters/network/thrift_proxy/translation_integration_test.cc @@ -6,7 +6,6 @@ #include "test/extensions/filters/network/thrift_proxy/utility.h" #include "test/test_common/network_utility.h" -#include "absl/strings/ascii.h" #include "gtest/gtest.h" using testing::Combine; diff --git a/test/extensions/filters/network/thrift_proxy/utility.h b/test/extensions/filters/network/thrift_proxy/utility.h index 178d0943db5a..12851879390a 100644 --- a/test/extensions/filters/network/thrift_proxy/utility.h +++ b/test/extensions/filters/network/thrift_proxy/utility.h @@ -7,8 +7,9 @@ #include "common/buffer/buffer_impl.h" #include "common/common/byte_order.h" -#include "extensions/filters/network/thrift_proxy/protocol.h" +#include "extensions/filters/network/thrift_proxy/thrift.h" +#include "absl/strings/ascii.h" #include "gmock/gmock.h" #include "gtest/gtest.h"