Skip to content

Commit

Permalink
Fix formatting and use MessageDifferencer
Browse files Browse the repository at this point in the history
  • Loading branch information
gargnupur committed Jul 31, 2019
1 parent 553ca37 commit 5300206
Show file tree
Hide file tree
Showing 9 changed files with 54 additions and 57 deletions.
37 changes: 19 additions & 18 deletions src/envoy/tcp/alpn_proxy/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
# Alpn Proxy filter

load(
"@envoy//bazel:envoy_build_system.bzl",
"@envoy//bazel:envoy_build_system.bzl",
"envoy_cc_library",
"envoy_cc_test",
"envoy_package",
Expand All @@ -28,17 +28,21 @@ envoy_package()

envoy_cc_library(
name = "alpn_proxy",
srcs = ["alpn_proxy.cc",
"alpn_proxy_initial_header.cc",
],
hdrs = ["alpn_proxy.h",
"alpn_proxy_initial_header.h",
],
srcs = [
"alpn_proxy.cc",
"alpn_proxy_initial_header.cc",
],
hdrs = [
"alpn_proxy.h",
"alpn_proxy_initial_header.h",
],
repository = "@envoy",
deps = [
"//src/envoy/tcp/alpn_proxy/config:alpn_proxy_cc_proto",
"//src/envoy/tcp/alpn_proxy/header:alpn_proxy_header_proto_cc",
"@com_google_absl//absl/base:core_headers",
"@com_google_absl//absl/base:endian",
"@com_google_absl//absl/strings:strings",
"@com_google_absl//absl/strings",
"@envoy//include/envoy/local_info:local_info_interface",
"@envoy//include/envoy/network:connection_interface",
"@envoy//include/envoy/network:filter_interface",
Expand All @@ -47,8 +51,8 @@ envoy_cc_library(
"@envoy//include/envoy/thread_local:thread_local_interface",
"@envoy//include/envoy/upstream:cluster_manager_interface",
"@envoy//source/common/common:assert_lib",
"@envoy//source/common/common:minimal_logger_lib",
"@envoy//source/common/common:enum_to_int",
"@envoy//source/common/common:minimal_logger_lib",
"@envoy//source/common/http:headers_lib",
"@envoy//source/common/http:message_lib",
"@envoy//source/common/http:rest_api_fetcher_lib",
Expand All @@ -58,8 +62,6 @@ envoy_cc_library(
"@envoy//source/common/network:cidr_range_lib",
"@envoy//source/common/network:utility_lib",
"@envoy//source/extensions/filters/network:well_known_names",
"//src/envoy/tcp/alpn_proxy/config:alpn_proxy_cc_proto",
"//src/envoy/tcp/alpn_proxy/header:alpn_proxy_header_proto_cc",
],
)

Expand All @@ -71,26 +73,25 @@ envoy_cc_library(
visibility = ["//visibility:public"],
deps = [
":alpn_proxy",
"//src/envoy/tcp/alpn_proxy/config:alpn_proxy_cc_proto",
"//src/envoy/utils:utils_lib",
"@envoy//include/envoy/registry",
"@envoy//source/common/config:filter_json_lib",
"@envoy//source/extensions/filters/network/common:factory_base_lib",
"//src/envoy/tcp/alpn_proxy/config:alpn_proxy_cc_proto",
"//src/envoy/utils:utils_lib",
],
)


envoy_cc_test(
name = "alpnproxy_test",
srcs = [
"alpn_proxy_test.cc",
],
repository = "@envoy",
deps = [
":config_lib",
":alpn_proxy",
"@envoy//test/mocks/network:network_mocks",
"@envoy//test/mocks/local_info:local_info_mocks",
":config_lib",
"//src/envoy/tcp/alpn_proxy/header:alpn_proxy_header_proto_cc",
"@envoy//test/mocks/local_info:local_info_mocks",
"@envoy//test/mocks/network:network_mocks",
],
)
)
30 changes: 16 additions & 14 deletions src/envoy/tcp/alpn_proxy/alpn_proxy.cc
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@
#include "envoy/network/connection.h"
#include "envoy/stats/scope.h"
#include "src/envoy/tcp/alpn_proxy/alpn_proxy.h"
#include "src/envoy/tcp/alpn_proxy/header/alpn_proxy_header.pb.h"
#include "src/envoy/tcp/alpn_proxy/alpn_proxy_initial_header.h"
#include "src/envoy/tcp/alpn_proxy/header/alpn_proxy_header.pb.h"

namespace Envoy {
namespace Tcp {
Expand All @@ -41,14 +41,16 @@ std::unique_ptr<::Envoy::Buffer::OwnedImpl> ConstructProxyHeaderData(
const ::google::protobuf::Struct& metadata) {
envoy::tcp::alpnproxy::header::AlpnProxyHeaderProto proxy_header;
proxy_header.mutable_metadata()->CopyFrom(metadata);

AlpnProxyInitialHeader initial_header;
initial_header.magic = absl::ghtonl(AlpnProxyInitialHeader::magic_number);
initial_header.data_size = absl::ghtonl(proxy_header.SerializeAsString().length());
initial_header.data_size =
absl::ghtonl(proxy_header.SerializeAsString().length());

::Envoy::Buffer::OwnedImpl initial_header_buffer{absl::string_view(reinterpret_cast<const char*>(&initial_header),
sizeof(initial_header))};
auto proxy_header_buffer = std::make_unique<::Envoy::Buffer::OwnedImpl>(proxy_header.SerializeAsString());
::Envoy::Buffer::OwnedImpl initial_header_buffer{absl::string_view(
reinterpret_cast<const char*>(&initial_header), sizeof(initial_header))};
auto proxy_header_buffer = std::make_unique<::Envoy::Buffer::OwnedImpl>(
proxy_header.SerializeAsString());
proxy_header_buffer->prepend(initial_header_buffer);
return proxy_header_buffer;
}
Expand All @@ -66,8 +68,7 @@ AlpnProxyConfig::AlpnProxyConfig(
protocol_(protocol),
node_metadata_id_(node_metadata_id),
filter_direction_(filter_direction),
stats_(generateStats(stat_prefix, scope)) {
}
stats_(generateStats(stat_prefix, scope)) {}

Network::FilterStatus AlpnProxyFilter::onData(Buffer::Instance& data, bool) {
// No work needed if we have read connection protocol and its not the expected
Expand Down Expand Up @@ -95,16 +96,16 @@ Network::FilterStatus AlpnProxyFilter::onData(Buffer::Instance& data, bool) {
write_callbacks_->injectWriteDataToFilterChain(*buf, false);

read_callbacks_->connection().streamInfo().setDynamicMetadata(
downstreamDynamicDataKey,
node_metadata->second.struct_value());
downstreamDynamicDataKey, node_metadata->second.struct_value());
config_->stats().metadata_added_.inc();
}
}
}

// Consume Metadata in Downstream Filter.
if (config_->filter_direction_ ==
envoy::tcp::alpnproxy::config::AlpnProxy_FilterDirection::AlpnProxy_FilterDirection_DOWNSTREAM) {
envoy::tcp::alpnproxy::config::AlpnProxy_FilterDirection::
AlpnProxy_FilterDirection_DOWNSTREAM) {
config_->stats().downstream_filter_found_.inc();
const uint32_t initial_header_length = sizeof(AlpnProxyInitialHeader);
if (data.length() < initial_header_length) {
Expand All @@ -115,9 +116,10 @@ Network::FilterStatus AlpnProxyFilter::onData(Buffer::Instance& data, bool) {
std::string initial_header_buf(initial_header_length, 0);
data.copyOut(0, initial_header_length, &initial_header_buf[0]);
const AlpnProxyInitialHeader* initial_header =
reinterpret_cast<const AlpnProxyInitialHeader*>(initial_header_buf.c_str());
reinterpret_cast<const AlpnProxyInitialHeader*>(
initial_header_buf.c_str());
if (absl::gntohl(initial_header->magic) !=
AlpnProxyInitialHeader::magic_number) {
AlpnProxyInitialHeader::magic_number) {
config_->stats().initial_header_not_found_.inc();
done_on_data_ = true;
return Network::FilterStatus::Continue;
Expand Down Expand Up @@ -153,7 +155,7 @@ Network::FilterStatus AlpnProxyFilter::onNewConnection() {
return Network::FilterStatus::Continue;
}

Network::FilterStatus AlpnProxyFilter::onWrite(Buffer::Instance& , bool) {
Network::FilterStatus AlpnProxyFilter::onWrite(Buffer::Instance&, bool) {
return Network::FilterStatus::Continue;
}

Expand Down
7 changes: 3 additions & 4 deletions src/envoy/tcp/alpn_proxy/alpn_proxy_initial_header.cc
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
* limitations under the License.
*/


#include "src/envoy/tcp/alpn_proxy/alpn_proxy_initial_header.h"

namespace Envoy {
Expand All @@ -22,6 +21,6 @@ namespace AlpnProxy {

const uint32_t AlpnProxyInitialHeader::magic_number;

} // namespace AlpnProxy
} // namespace Tcp
} // namespace Envoy
} // namespace AlpnProxy
} // namespace Tcp
} // namespace Envoy
7 changes: 3 additions & 4 deletions src/envoy/tcp/alpn_proxy/alpn_proxy_initial_header.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
* limitations under the License.
*/


#pragma once

#include <cstdint>
Expand All @@ -29,6 +28,6 @@ struct AlpnProxyInitialHeader {
uint32_t data_size; // Size of the data blob in network byte order.
};

} // namespace AlpnProxy
} // namespace Tcp
} // namespace Envoy
} // namespace AlpnProxy
} // namespace Tcp
} // namespace Envoy
15 changes: 4 additions & 11 deletions src/envoy/tcp/alpn_proxy/alpn_proxy_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,17 @@
* limitations under the License.
*/

#include "src/envoy/tcp/alpn_proxy/alpn_proxy.h"
#include "common/buffer/buffer_impl.h"
#include "gmock/gmock.h"
#include "google/protobuf/util/message_differencer.h"
#include "gtest/gtest.h"
#include "src/envoy/tcp/alpn_proxy/alpn_proxy.h"
#include "src/envoy/tcp/alpn_proxy/alpn_proxy_initial_header.h"
#include "src/envoy/tcp/alpn_proxy/header/alpn_proxy_header.pb.h"
#include "test/mocks/local_info/mocks.h"
#include "test/mocks/network/mocks.h"

using ::google::protobuf::util::MessageDifferencer;
using testing::NiceMock;
using testing::Return;
using testing::ReturnRef;
Expand All @@ -30,17 +32,8 @@ namespace Envoy {
namespace Tcp {
namespace AlpnProxy {
namespace {
bool protoMapEq(const ProtobufWkt::Struct& obj,
const ProtobufWkt::Struct& rhs) {
EXPECT_GT(rhs.fields_size(), 0);
for (auto const& entry : rhs.fields()) {
EXPECT_EQ(obj.fields().at(entry.first).string_value(),
entry.second.string_value());
}
return true;
}

MATCHER_P(MapEq, rhs, "") { return protoMapEq(arg, rhs); }
MATCHER_P(MapEq, rhs, "") { return MessageDifferencer::Equals(arg, rhs); }

void ConstructProxyHeaderData(::Envoy::Buffer::OwnedImpl& serialized_header,
google::protobuf::Struct& value) {
Expand Down
4 changes: 2 additions & 2 deletions src/envoy/tcp/alpn_proxy/config.cc
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,11 @@
* limitations under the License.
*/

#include "src/envoy/tcp/alpn_proxy/config.h"
#include "common/config/filter_json.h"
#include "envoy/network/connection.h"
#include "envoy/registry/registry.h"
#include "src/envoy/tcp/alpn_proxy/alpn_proxy.h"
#include "src/envoy/tcp/alpn_proxy/config.h"
#include "src/envoy/utils/config.h"

namespace Envoy {
Expand Down Expand Up @@ -51,7 +51,7 @@ Network::FilterFactoryCb AlpnProxyConfigFactory::createFilterFactory(
const envoy::tcp::alpnproxy::config::AlpnProxy& proto_config,
Server::Configuration::FactoryContext& context) {
ASSERT(!proto_config.protocol().empty());

const std::string stat_prefix =
fmt::format("{}.alpn_proxy.", proto_config.stat_prefix());

Expand Down
5 changes: 4 additions & 1 deletion src/envoy/tcp/alpn_proxy/config/alpn_proxy.proto
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,10 @@ option go_package = "AlpnProxy";
message AlpnProxy {
// Direction of the flow of traffic in which this this AlpnProxy filter
// is plcaed.
enum FilterDirection { DOWNSTREAM = 0; UPSTREAM = 1; }
enum FilterDirection {
DOWNSTREAM = 0;
UPSTREAM = 1;
}
// Protocol that Alpn should support on the server.
string protocol = 1;

Expand Down
2 changes: 0 additions & 2 deletions src/envoy/tcp/alpn_proxy/header/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -27,5 +27,3 @@ envoy_proto_library(
srcs = ["alpn_proxy_header.proto"],
external_deps = ["well_known_protos"],
)


4 changes: 3 additions & 1 deletion src/envoy/tcp/alpn_proxy/header/alpn_proxy_header.proto
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,6 @@ option go_package = "AlpnProxy";
import "google/protobuf/struct.proto";

// [#protodoc-title: AlpnProxyHeaderProto is sent on wire as initial bytes]
message AlpnProxyHeaderProto { google.protobuf.Struct metadata = 1; }
message AlpnProxyHeaderProto {
google.protobuf.Struct metadata = 1;
}

0 comments on commit 5300206

Please sign in to comment.