Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
99 changes: 83 additions & 16 deletions exporters/otlp/test/otlp_http_exporter_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -170,17 +170,34 @@ class OtlpHttpExporterTestPeer : public ::testing::Test
auto no_send_client = std::static_pointer_cast<http_client::nosend::HttpClient>(client);
auto mock_session =
std::static_pointer_cast<http_client::nosend::Session>(no_send_client->session_);
auto received_trace_id_counter = 0;
EXPECT_CALL(*mock_session, SendRequest)
.WillOnce(
[&mock_session, report_trace_id](
.WillRepeatedly(
[&mock_session, report_trace_id, &received_trace_id_counter](
const std::shared_ptr<opentelemetry::ext::http::client::EventHandler> &callback) {
auto check_json =
nlohmann::json::parse(mock_session->GetRequest()->body_, nullptr, false);
auto resource_span = *check_json["resourceSpans"].begin();
auto scope_span = *resource_span["scopeSpans"].begin();
if (check_json["resourceSpans"].size() == 0)
{
return;
}
auto resource_span = *check_json["resourceSpans"].begin();
if (resource_span["scopeSpans"].size() == 0)
{
return;
}
auto scope_span = *resource_span["scopeSpans"].begin();
if (scope_span["spans"].size() == 0)
{
return;
}
auto span = *scope_span["spans"].begin();
auto received_trace_id = span["traceId"].get<std::string>();
EXPECT_EQ(received_trace_id, report_trace_id);
if (received_trace_id != report_trace_id)
{
return;
}
++received_trace_id_counter;

auto custom_header = mock_session->GetRequest()->headers_.find("Custom-Header-Key");
ASSERT_TRUE(custom_header != mock_session->GetRequest()->headers_.end());
Expand All @@ -205,6 +222,9 @@ class OtlpHttpExporterTestPeer : public ::testing::Test
parent_span->End();

provider->ForceFlush();

// Exporting can be retried
EXPECT_GE(received_trace_id_counter, 1);
}

# ifdef ENABLE_ASYNC_EXPORT
Expand Down Expand Up @@ -262,17 +282,34 @@ class OtlpHttpExporterTestPeer : public ::testing::Test
auto no_send_client = std::static_pointer_cast<http_client::nosend::HttpClient>(client);
auto mock_session =
std::static_pointer_cast<http_client::nosend::Session>(no_send_client->session_);
auto received_trace_id_counter = 0;
EXPECT_CALL(*mock_session, SendRequest)
.WillOnce(
[&mock_session, report_trace_id](
.WillRepeatedly(
[&mock_session, report_trace_id, &received_trace_id_counter](
const std::shared_ptr<opentelemetry::ext::http::client::EventHandler> &callback) {
auto check_json =
nlohmann::json::parse(mock_session->GetRequest()->body_, nullptr, false);
auto resource_span = *check_json["resourceSpans"].begin();
auto scope_span = *resource_span["scopeSpans"].begin();
if (check_json["resourceSpans"].size() == 0)
{
return;
}
auto resource_span = *check_json["resourceSpans"].begin();
if (resource_span["scopeSpans"].size() == 0)
{
return;
}
auto scope_span = *resource_span["scopeSpans"].begin();
if (scope_span["spans"].size() == 0)
{
return;
}
auto span = *scope_span["spans"].begin();
auto received_trace_id = span["traceId"].get<std::string>();
EXPECT_EQ(received_trace_id, report_trace_id);
if (received_trace_id != report_trace_id)
{
return;
}
++received_trace_id_counter;

auto custom_header = mock_session->GetRequest()->headers_.find("Custom-Header-Key");
ASSERT_TRUE(custom_header != mock_session->GetRequest()->headers_.end());
Expand Down Expand Up @@ -301,6 +338,9 @@ class OtlpHttpExporterTestPeer : public ::testing::Test
parent_span->End();

provider->ForceFlush();

// Exporting can be retried
EXPECT_GE(received_trace_id_counter, 1);
}
# endif

Expand Down Expand Up @@ -357,17 +397,28 @@ class OtlpHttpExporterTestPeer : public ::testing::Test
auto no_send_client = std::static_pointer_cast<http_client::nosend::HttpClient>(client);
auto mock_session =
std::static_pointer_cast<http_client::nosend::Session>(no_send_client->session_);
auto received_trace_id_counter = 0;
EXPECT_CALL(*mock_session, SendRequest)
.WillOnce(
[&mock_session, report_trace_id](
.WillRepeatedly(
[&mock_session, report_trace_id, &received_trace_id_counter](
const std::shared_ptr<opentelemetry::ext::http::client::EventHandler> &callback) {
opentelemetry::proto::collector::trace::v1::ExportTraceServiceRequest request_body;
request_body.ParseFromArray(
&mock_session->GetRequest()->body_[0],
static_cast<int>(mock_session->GetRequest()->body_.size()));
if (request_body.resource_spans_size() == 0 ||
request_body.resource_spans(0).scope_spans_size() == 0 ||
request_body.resource_spans(0).scope_spans(0).spans_size() == 0)
{
return;
}
auto received_trace_id =
request_body.resource_spans(0).scope_spans(0).spans(0).trace_id();
EXPECT_EQ(received_trace_id, report_trace_id);
if (received_trace_id != report_trace_id)
{
return;
}
++received_trace_id_counter;

auto custom_header = mock_session->GetRequest()->headers_.find("Custom-Header-Key");
ASSERT_TRUE(custom_header != mock_session->GetRequest()->headers_.end());
Expand All @@ -384,6 +435,9 @@ class OtlpHttpExporterTestPeer : public ::testing::Test
parent_span->End();

provider->ForceFlush();

// Exporting can be retried
EXPECT_GE(received_trace_id_counter, 1);
}

# ifdef ENABLE_ASYNC_EXPORT
Expand Down Expand Up @@ -440,17 +494,28 @@ class OtlpHttpExporterTestPeer : public ::testing::Test
auto no_send_client = std::static_pointer_cast<http_client::nosend::HttpClient>(client);
auto mock_session =
std::static_pointer_cast<http_client::nosend::Session>(no_send_client->session_);
auto received_trace_id_counter = 0;
EXPECT_CALL(*mock_session, SendRequest)
.WillOnce(
[&mock_session, report_trace_id](
.WillRepeatedly(
[&mock_session, report_trace_id, &received_trace_id_counter](
const std::shared_ptr<opentelemetry::ext::http::client::EventHandler> &callback) {
opentelemetry::proto::collector::trace::v1::ExportTraceServiceRequest request_body;
request_body.ParseFromArray(
&mock_session->GetRequest()->body_[0],
static_cast<int>(mock_session->GetRequest()->body_.size()));
if (request_body.resource_spans_size() == 0 ||
request_body.resource_spans(0).scope_spans_size() == 0 ||
request_body.resource_spans(0).scope_spans(0).spans_size() == 0)
{
return;
}
auto received_trace_id =
request_body.resource_spans(0).scope_spans(0).spans(0).trace_id();
EXPECT_EQ(received_trace_id, report_trace_id);
if (received_trace_id != report_trace_id)
{
return;
}
++received_trace_id_counter;

auto custom_header = mock_session->GetRequest()->headers_.find("Custom-Header-Key");
ASSERT_TRUE(custom_header != mock_session->GetRequest()->headers_.end());
Expand All @@ -472,6 +537,8 @@ class OtlpHttpExporterTestPeer : public ::testing::Test
parent_span->End();

provider->ForceFlush();
// Exporting can be retried
EXPECT_GE(received_trace_id_counter, 1);
}
# endif
};
Expand Down
101 changes: 81 additions & 20 deletions exporters/otlp/test/otlp_http_log_record_exporter_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -158,20 +158,35 @@ class OtlpHttpLogRecordExporterTestPeer : public ::testing::Test
auto no_send_client = std::static_pointer_cast<http_client::nosend::HttpClient>(client);
auto mock_session =
std::static_pointer_cast<http_client::nosend::Session>(no_send_client->session_);
auto received_record_counter = 0;
EXPECT_CALL(*mock_session, SendRequest)
.WillOnce(
[&mock_session, report_trace_id, report_span_id](
.WillRepeatedly(
[&mock_session, report_trace_id, report_span_id, &received_record_counter](
const std::shared_ptr<opentelemetry::ext::http::client::EventHandler> &callback) {
auto check_json =
nlohmann::json::parse(mock_session->GetRequest()->body_, nullptr, false);
auto resource_logs = *check_json["resourceLogs"].begin();
auto scope_logs = *resource_logs["scopeLogs"].begin();
if (check_json["resourceLogs"].size() == 0)
{
return;
}
auto resource_logs = *check_json["resourceLogs"].begin();
if (resource_logs["scopeLogs"].size() == 0)
{
return;
}
auto scope_logs = *resource_logs["scopeLogs"].begin();
if (scope_logs["logRecords"].size() == 0)
{
return;
}
auto scope = scope_logs["scope"];
auto log = *scope_logs["logRecords"].begin();
auto received_trace_id = log["traceId"].get<std::string>();
auto received_span_id = log["spanId"].get<std::string>();
EXPECT_EQ(received_trace_id, report_trace_id);
EXPECT_EQ(received_span_id, report_span_id);
if (received_trace_id == report_trace_id && received_span_id == report_span_id)
{
++received_record_counter;
}
EXPECT_EQ("Log message", log["body"]["stringValue"].get<std::string>());
EXPECT_LE(15, log["attributes"].size());
auto custom_header = mock_session->GetRequest()->headers_.find("Custom-Header-Key");
Expand Down Expand Up @@ -224,6 +239,9 @@ class OtlpHttpLogRecordExporterTestPeer : public ::testing::Test
std::chrono::system_clock::now());

provider->ForceFlush();

// Exporting can be retried
EXPECT_GE(received_record_counter, 1);
}

# ifdef ENABLE_ASYNC_EXPORT
Expand Down Expand Up @@ -276,26 +294,41 @@ class OtlpHttpLogRecordExporterTestPeer : public ::testing::Test
auto no_send_client = std::static_pointer_cast<http_client::nosend::HttpClient>(client);
auto mock_session =
std::static_pointer_cast<http_client::nosend::Session>(no_send_client->session_);
auto received_record_counter = 0;
EXPECT_CALL(*mock_session, SendRequest)
.WillOnce(
[&mock_session, report_trace_id, report_span_id](
.WillRepeatedly(
[&mock_session, report_trace_id, report_span_id, &received_record_counter](
const std::shared_ptr<opentelemetry::ext::http::client::EventHandler> &callback) {
auto check_json =
nlohmann::json::parse(mock_session->GetRequest()->body_, nullptr, false);
auto resource_logs = *check_json["resourceLogs"].begin();
auto scope_logs = *resource_logs["scopeLogs"].begin();
if (check_json["resourceLogs"].size() == 0)
{
return;
}
auto resource_logs = *check_json["resourceLogs"].begin();
if (resource_logs["scopeLogs"].size() == 0)
{
return;
}
auto scope_logs = *resource_logs["scopeLogs"].begin();
if (scope_logs["logRecords"].size() == 0)
{
return;
}
auto schema_url = scope_logs["schemaUrl"].get<std::string>();
auto scope = scope_logs["scope"];
auto scope_name = scope["name"];
auto scope_version = scope["version"];
auto log = *scope_logs["logRecords"].begin();
auto received_trace_id = log["traceId"].get<std::string>();
auto received_span_id = log["spanId"].get<std::string>();
if (received_trace_id == report_trace_id && received_span_id == report_span_id)
{
++received_record_counter;
}
EXPECT_EQ(schema_url, "https://opentelemetry.io/schemas/1.2.0");
EXPECT_EQ(scope_name, "opentelelemtry_library");
EXPECT_EQ(scope_version, "1.2.0");
EXPECT_EQ(received_trace_id, report_trace_id);
EXPECT_EQ(received_span_id, report_span_id);
EXPECT_EQ("Log message", log["body"]["stringValue"].get<std::string>());
EXPECT_LE(15, log["attributes"].size());
auto custom_header = mock_session->GetRequest()->headers_.find("Custom-Header-Key");
Expand Down Expand Up @@ -353,6 +386,9 @@ class OtlpHttpLogRecordExporterTestPeer : public ::testing::Test
std::chrono::system_clock::now());

provider->ForceFlush();

// Exporting can be retried
EXPECT_GE(received_record_counter, 1);
}
# endif

Expand Down Expand Up @@ -399,21 +435,31 @@ class OtlpHttpLogRecordExporterTestPeer : public ::testing::Test
auto no_send_client = std::static_pointer_cast<http_client::nosend::HttpClient>(client);
auto mock_session =
std::static_pointer_cast<http_client::nosend::Session>(no_send_client->session_);
auto received_record_counter = 0;
EXPECT_CALL(*mock_session, SendRequest)
.WillOnce(
[&mock_session, report_trace_id, report_span_id](
.WillRepeatedly(
[&mock_session, report_trace_id, report_span_id, &received_record_counter](
const std::shared_ptr<opentelemetry::ext::http::client::EventHandler> &callback) {
opentelemetry::proto::collector::logs::v1::ExportLogsServiceRequest request_body;
request_body.ParseFromArray(
&mock_session->GetRequest()->body_[0],
static_cast<int>(mock_session->GetRequest()->body_.size()));
if (request_body.resource_logs_size() == 0 ||
request_body.resource_logs(0).scope_logs_size() == 0 ||
request_body.resource_logs(0).scope_logs(0).log_records_size() == 0)
{
return;
}
auto scope_log = request_body.resource_logs(0).scope_logs(0);
EXPECT_EQ(scope_log.schema_url(), "https://opentelemetry.io/schemas/1.2.0");
EXPECT_EQ(scope_log.scope().name(), "opentelelemtry_library");
EXPECT_EQ(scope_log.scope().version(), "1.2.0");
const auto &received_log = scope_log.log_records(0);
EXPECT_EQ(received_log.trace_id(), report_trace_id);
EXPECT_EQ(received_log.span_id(), report_span_id);
if (received_log.trace_id() == report_trace_id &&
received_log.span_id() == report_span_id)
{
++received_record_counter;
}
EXPECT_EQ("Log message", received_log.body().string_value());
EXPECT_LE(15, received_log.attributes_size());
bool check_service_name = false;
Expand Down Expand Up @@ -467,6 +513,9 @@ class OtlpHttpLogRecordExporterTestPeer : public ::testing::Test
std::chrono::system_clock::now());

provider->ForceFlush();

// Exporting can be retried
EXPECT_GE(received_record_counter, 1);
}

# ifdef ENABLE_ASYNC_EXPORT
Expand Down Expand Up @@ -514,18 +563,28 @@ class OtlpHttpLogRecordExporterTestPeer : public ::testing::Test
auto no_send_client = std::static_pointer_cast<http_client::nosend::HttpClient>(client);
auto mock_session =
std::static_pointer_cast<http_client::nosend::Session>(no_send_client->session_);
auto received_record_counter = 0;
EXPECT_CALL(*mock_session, SendRequest)
.WillOnce(
[&mock_session, report_trace_id, report_span_id, schema_url](
.WillRepeatedly(
[&mock_session, report_trace_id, report_span_id, schema_url, &received_record_counter](
const std::shared_ptr<opentelemetry::ext::http::client::EventHandler> &callback) {
opentelemetry::proto::collector::logs::v1::ExportLogsServiceRequest request_body;
request_body.ParseFromArray(
&mock_session->GetRequest()->body_[0],
static_cast<int>(mock_session->GetRequest()->body_.size()));
if (request_body.resource_logs_size() == 0 ||
request_body.resource_logs(0).scope_logs_size() == 0 ||
request_body.resource_logs(0).scope_logs(0).log_records_size() == 0)
{
return;
}
auto &scope_log = request_body.resource_logs(0).scope_logs(0);
auto received_log = scope_log.log_records(0);
EXPECT_EQ(received_log.trace_id(), report_trace_id);
EXPECT_EQ(received_log.span_id(), report_span_id);
if (received_log.trace_id() == report_trace_id &&
received_log.span_id() == report_span_id)
{
++received_record_counter;
}
EXPECT_EQ("Log message", received_log.body().string_value());
EXPECT_LE(15, received_log.attributes_size());
bool check_service_name = false;
Expand Down Expand Up @@ -586,6 +645,8 @@ class OtlpHttpLogRecordExporterTestPeer : public ::testing::Test
std::chrono::system_clock::now());

provider->ForceFlush();
// Exporting can be retried
EXPECT_GE(received_record_counter, 1);
}
# endif
};
Expand Down
Loading
Loading