Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
marcalff committed Apr 24, 2024
1 parent 1489835 commit 1bfe4ed
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 28 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/prometheus.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ jobs:
uses: actions/checkout@v3
with:
repository: "open-telemetry/opentelemetry-cpp"
ref: "v1.11.0"
ref: "v1.15.0"
path: "otel_cpp"
submodules: "recursive"
- name: run tests
Expand Down Expand Up @@ -103,7 +103,7 @@ jobs:
uses: actions/checkout@v3
with:
repository: "open-telemetry/opentelemetry-cpp"
ref: "v1.11.0"
ref: "v1.15.0"
path: "otel_cpp"
submodules: "recursive"
- name: setup
Expand Down
36 changes: 16 additions & 20 deletions exporters/prometheus/test/prometheus_test_helper.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,17 +25,16 @@ inline opentelemetry::sdk::resource::Resource &GetEmptyResource()
/**
* Helper function to create ResourceMetrics
*/
inline metric_sdk::ResourceMetrics CreateSumPointData()
inline metric_sdk::ResourceMetrics CreateSumPointData(
opentelemetry::sdk::instrumentationscope::InstrumentationScope *scope)
{
metric_sdk::SumPointData sum_point_data{};
sum_point_data.value_ = 10.0;
metric_sdk::SumPointData sum_point_data2{};
sum_point_data2.value_ = 20.0;
metric_sdk::ResourceMetrics data;
data.resource_ = &GetEmptyResource();
auto instrumentation_scope =
opentelemetry::sdk::instrumentationscope::InstrumentationScope::Create("library_name",
"1.9.1");

metric_sdk::MetricData metric_data{
metric_sdk::InstrumentDescriptor{"library_name", "description", "unit",
metric_sdk::InstrumentType::kCounter,
Expand All @@ -46,11 +45,12 @@ inline metric_sdk::ResourceMetrics CreateSumPointData()
{metric_sdk::PointAttributes{{"a1", "b1"}}, sum_point_data},
{metric_sdk::PointAttributes{{"a2", "b2"}}, sum_point_data2}}};
data.scope_metric_data_ = std::vector<metric_sdk::ScopeMetrics>{
{instrumentation_scope.get(), std::vector<metric_sdk::MetricData>{metric_data}}};
{scope, std::vector<metric_sdk::MetricData>{metric_data}}};
return data;
}

inline metric_sdk::ResourceMetrics CreateHistogramPointData()
inline metric_sdk::ResourceMetrics CreateHistogramPointData(
opentelemetry::sdk::instrumentationscope::InstrumentationScope *scope)
{
metric_sdk::HistogramPointData histogram_point_data{};
histogram_point_data.boundaries_ = std::vector<double>{10.1, 20.2, 30.2};
Expand All @@ -65,9 +65,7 @@ inline metric_sdk::ResourceMetrics CreateHistogramPointData()

metric_sdk::ResourceMetrics data;
data.resource_ = &GetEmptyResource();
auto instrumentation_scope =
opentelemetry::sdk::instrumentationscope::InstrumentationScope::Create("library_name",
"1.9.1");

metric_sdk::MetricData metric_data{
metric_sdk::InstrumentDescriptor{"library_name", "description", "unit",
metric_sdk::InstrumentType::kHistogram,
Expand All @@ -78,17 +76,16 @@ inline metric_sdk::ResourceMetrics CreateHistogramPointData()
{metric_sdk::PointAttributes{{"a1", "b1"}}, histogram_point_data},
{metric_sdk::PointAttributes{{"a2", "b2"}}, histogram_point_data2}}};
data.scope_metric_data_ = std::vector<metric_sdk::ScopeMetrics>{
{instrumentation_scope.get(), std::vector<metric_sdk::MetricData>{metric_data}}};
{scope, std::vector<metric_sdk::MetricData>{metric_data}}};
return data;
}

inline metric_sdk::ResourceMetrics CreateLastValuePointData()
inline metric_sdk::ResourceMetrics CreateLastValuePointData(
opentelemetry::sdk::instrumentationscope::InstrumentationScope *scope)
{
metric_sdk::ResourceMetrics data;
data.resource_ = &GetEmptyResource();
auto instrumentation_scope =
opentelemetry::sdk::instrumentationscope::InstrumentationScope::Create("library_name",
"1.2.0");

metric_sdk::LastValuePointData last_value_point_data{};
last_value_point_data.value_ = 10.0;
last_value_point_data.is_lastvalue_valid_ = true;
Expand All @@ -107,17 +104,16 @@ inline metric_sdk::ResourceMetrics CreateLastValuePointData()
{metric_sdk::PointAttributes{{"a1", "b1"}}, last_value_point_data},
{metric_sdk::PointAttributes{{"a2", "b2"}}, last_value_point_data2}}};
data.scope_metric_data_ = std::vector<metric_sdk::ScopeMetrics>{
{instrumentation_scope.get(), std::vector<metric_sdk::MetricData>{metric_data}}};
{scope, std::vector<metric_sdk::MetricData>{metric_data}}};
return data;
}

inline metric_sdk::ResourceMetrics CreateDropPointData()
inline metric_sdk::ResourceMetrics CreateDropPointData(
opentelemetry::sdk::instrumentationscope::InstrumentationScope *scope)
{
metric_sdk::ResourceMetrics data;
data.resource_ = &GetEmptyResource();
auto instrumentation_scope =
opentelemetry::sdk::instrumentationscope::InstrumentationScope::Create("library_name",
"1.2.0");

metric_sdk::DropPointData drop_point_data{};
metric_sdk::DropPointData drop_point_data2{};
metric_sdk::MetricData metric_data{
Expand All @@ -130,7 +126,7 @@ inline metric_sdk::ResourceMetrics CreateDropPointData()
{metric_sdk::PointAttributes{{"a1", "b1"}}, drop_point_data},
{metric_sdk::PointAttributes{{"a2", "b2"}}, drop_point_data2}}};
data.scope_metric_data_ = std::vector<metric_sdk::ScopeMetrics>{
{instrumentation_scope.get(), std::vector<metric_sdk::MetricData>{metric_data}}};
{scope, std::vector<metric_sdk::MetricData>{metric_data}}};
return data;
}
} // namespace
Expand Down
34 changes: 28 additions & 6 deletions exporters/prometheus/test/push_exporter_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,13 @@ TEST(PrometheusPushExporter, ExportSuccessfully)
PrometheusPushExporterTest p;
PrometheusPushExporter exporter = p.GetExporter();

auto res = exporter.Export(CreateSumPointData());
auto instrumentation_scope =
opentelemetry::sdk::instrumentationscope::InstrumentationScope::Create("library_name",
"1.9.1");

auto data = CreateSumPointData(instrumentation_scope.get());

auto res = exporter.Export(data);

// result should be kSuccess = 0
ExportResult code = ExportResult::kSuccess;
Expand All @@ -109,8 +115,14 @@ TEST(PrometheusPushExporter, ExporterIsShutdown)

exporter.Shutdown();

auto instrumentation_scope =
opentelemetry::sdk::instrumentationscope::InstrumentationScope::Create("library_name",
"1.9.1");

auto data = CreateSumPointData(instrumentation_scope.get());

// send export request after shutdown
auto res = exporter.Export(CreateSumPointData());
auto res = exporter.Export(data);

// result code should be kFailure = 1
ExportResult code = ExportResult::kFailure;
Expand All @@ -134,18 +146,28 @@ TEST(PrometheusPushExporter, CollectionNotEnoughSpace)

int max_collection_size = exporter.GetMaxCollectionSize();

auto instrumentation_scope =
opentelemetry::sdk::instrumentationscope::InstrumentationScope::Create("library_name",
"1.15.0");

// send export request to fill the
// collection in the collector
// In each loop, there are 2 collections:
// - the instrumentation_scope
// - the data
ExportResult code = ExportResult::kSuccess;
for (int count = 1; count <= max_collection_size; ++count)
for (int count = 1; count <= max_collection_size; count += 2)
{
auto res = exporter.Export(CreateSumPointData());
auto data = CreateSumPointData(instrumentation_scope.get());
auto res = exporter.Export(data);
ASSERT_EQ(res, code);
}

auto data = CreateSumPointData(instrumentation_scope.get());

// send export request that does not complete
// due to not enough space in the collection
auto res = exporter.Export(CreateSumPointData());
auto res = exporter.Export(data);

// the result code should be kFailureFull = 2
code = ExportResult::kFailureFull;
Expand Down Expand Up @@ -178,7 +200,7 @@ TEST(PrometheusPushExporterFactory, Create)
{
PrometheusPushExporterOptions options;
options.host = "localhost";
options.port = 4138;
options.port = "4138";
options.jobname = "jobname";
options.labels["test_label"] = "test_value";
options.username = "user";
Expand Down

0 comments on commit 1bfe4ed

Please sign in to comment.