Skip to content

Commit 5acfbed

Browse files
committed
Refresh code from PR #2518, to fix review comments.
Added parser yaml tests.
1 parent 59d6259 commit 5acfbed

File tree

6 files changed

+2869
-12
lines changed

6 files changed

+2869
-12
lines changed

sdk/src/configuration/configuration_parser.cc

Lines changed: 52 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@
6262
#include "opentelemetry/sdk/configuration/otlp_grpc_log_record_exporter_configuration.h"
6363
#include "opentelemetry/sdk/configuration/otlp_grpc_push_metric_exporter_configuration.h"
6464
#include "opentelemetry/sdk/configuration/otlp_grpc_span_exporter_configuration.h"
65+
#include "opentelemetry/sdk/configuration/otlp_http_encoding.h"
6566
#include "opentelemetry/sdk/configuration/otlp_http_log_record_exporter_configuration.h"
6667
#include "opentelemetry/sdk/configuration/otlp_http_push_metric_exporter_configuration.h"
6768
#include "opentelemetry/sdk/configuration/otlp_http_span_exporter_configuration.h"
@@ -101,6 +102,22 @@ namespace configuration
101102
// FIXME: proper sizing
102103
constexpr size_t MAX_SAMPLER_DEPTH = 10;
103104

105+
static OtlpHttpEncoding ParseOtlpHttpEncoding(const std::string &name)
106+
{
107+
if (name == "protobuf")
108+
{
109+
return OtlpHttpEncoding::protobuf;
110+
}
111+
112+
if (name == "json")
113+
{
114+
return OtlpHttpEncoding::json;
115+
}
116+
117+
OTEL_INTERNAL_LOG_ERROR("OtlpHttpEncoding: name = " << name);
118+
throw InvalidSchemaException("Illegal OtlpHttpEncoding");
119+
}
120+
104121
static std::unique_ptr<StringArrayConfiguration> ParseStringArrayConfiguration(
105122
const std::unique_ptr<DocumentNode> &node)
106123
{
@@ -199,7 +216,9 @@ ParseOtlpHttpLogRecordExporterConfiguration(const std::unique_ptr<DocumentNode>
199216
model->headers_list = node->GetString("headers_list", "");
200217
model->compression = node->GetString("compression", "");
201218
model->timeout = node->GetInteger("timeout", 10000);
202-
// FIXME: encoding
219+
220+
std::string encoding = node->GetString("encoding", "protobuf");
221+
model->encoding = ParseOtlpHttpEncoding(encoding);
203222

204223
return model;
205224
}
@@ -487,13 +506,17 @@ ParseOtlpHttpPushMetricExporterConfiguration(const std::unique_ptr<DocumentNode>
487506
model->compression = node->GetString("compression", "");
488507
model->timeout = node->GetInteger("timeout", 10000);
489508

490-
std::string temporality_preference = node->GetString("temporality_preference", "");
509+
std::string temporality_preference = node->GetString("temporality_preference", "cumulative");
491510
model->temporality_preference = ParseTemporalityPreference(temporality_preference);
492511

493-
std::string default_histogram_aggregation = node->GetString("default_histogram_aggregation", "");
512+
std::string default_histogram_aggregation =
513+
node->GetString("default_histogram_aggregation", "explicit_bucket_histogram");
494514
model->default_histogram_aggregation =
495515
ParseDefaultHistogramAggregation(default_histogram_aggregation);
496516

517+
std::string encoding = node->GetString("encoding", "protobuf");
518+
model->encoding = ParseOtlpHttpEncoding(encoding);
519+
497520
return model;
498521
}
499522

@@ -519,10 +542,11 @@ ParseOtlpGrpcPushMetricExporterConfiguration(const std::unique_ptr<DocumentNode>
519542
model->compression = node->GetString("compression", "");
520543
model->timeout = node->GetInteger("timeout", 10000);
521544

522-
std::string temporality_preference = node->GetString("temporality_preference", "");
545+
std::string temporality_preference = node->GetString("temporality_preference", "cumulative");
523546
model->temporality_preference = ParseTemporalityPreference(temporality_preference);
524547

525-
std::string default_histogram_aggregation = node->GetString("default_histogram_aggregation", "");
548+
std::string default_histogram_aggregation =
549+
node->GetString("default_histogram_aggregation", "explicit_bucket_histogram");
526550
model->default_histogram_aggregation =
527551
ParseDefaultHistogramAggregation(default_histogram_aggregation);
528552

@@ -540,10 +564,11 @@ ParseOtlpFilePushMetricExporterConfiguration(const std::unique_ptr<DocumentNode>
540564

541565
model->output_stream = node->GetString("output_stream", "");
542566

543-
std::string temporality_preference = node->GetString("temporality_preference", "");
567+
std::string temporality_preference = node->GetString("temporality_preference", "cumulative");
544568
model->temporality_preference = ParseTemporalityPreference(temporality_preference);
545569

546-
std::string default_histogram_aggregation = node->GetString("default_histogram_aggregation", "");
570+
std::string default_histogram_aggregation =
571+
node->GetString("default_histogram_aggregation", "explicit_bucket_histogram");
547572
model->default_histogram_aggregation =
548573
ParseDefaultHistogramAggregation(default_histogram_aggregation);
549574

@@ -556,6 +581,8 @@ ParseConsolePushMetricExporterConfiguration(const std::unique_ptr<DocumentNode>
556581
std::unique_ptr<ConsolePushMetricExporterConfiguration> model(
557582
new ConsolePushMetricExporterConfiguration);
558583

584+
// FIXME-CONFIG: https://github.com/open-telemetry/opentelemetry-configuration/issues/242
585+
559586
return model;
560587
}
561588

@@ -845,8 +872,8 @@ ParseBase2ExponentialBucketHistogramAggregationConfiguration(
845872
std::unique_ptr<Base2ExponentialBucketHistogramAggregationConfiguration> model(
846873
new Base2ExponentialBucketHistogramAggregationConfiguration);
847874

848-
model->max_scale = node->GetInteger("max_scale", 0); // FIXME: default ?
849-
model->max_size = node->GetInteger("max_size", 0); // FIXME: default ?
875+
model->max_scale = node->GetInteger("max_scale", 20);
876+
model->max_size = node->GetInteger("max_size", 160);
850877
model->record_min_max = node->GetBoolean("record_min_max", true);
851878

852879
return model;
@@ -971,11 +998,20 @@ static std::unique_ptr<MeterProviderConfiguration> ParseMeterProviderConfigurati
971998
model->readers.push_back(ParseMetricReaderConfiguration(*it));
972999
}
9731000

974-
child = node->GetRequiredChildNode("views");
1001+
if (model->readers.size() == 0)
1002+
{
1003+
OTEL_INTERNAL_LOG_ERROR("ParseMeterProviderConfiguration: 0 readers ");
1004+
throw InvalidSchemaException("Illegal readers");
1005+
}
9751006

976-
for (auto it = child->begin(); it != child->end(); ++it)
1007+
child = node->GetChildNode("views");
1008+
1009+
if (child != nullptr)
9771010
{
978-
model->views.push_back(ParseViewConfiguration(*it));
1011+
for (auto it = child->begin(); it != child->end(); ++it)
1012+
{
1013+
model->views.push_back(ParseViewConfiguration(*it));
1014+
}
9791015
}
9801016

9811017
return model;
@@ -1047,6 +1083,7 @@ static std::unique_ptr<JaegerRemoteSamplerConfiguration> ParseJaegerRemoteSample
10471083
std::unique_ptr<DocumentNode> child;
10481084

10491085
// Unclear if endpoint and interval are required/optional
1086+
// FIXME-CONFIG: https://github.com/open-telemetry/opentelemetry-configuration/issues/238
10501087
OTEL_INTERNAL_LOG_ERROR("JaegerRemoteSamplerConfiguration: FIXME");
10511088

10521089
model->endpoint = node->GetString("endpoint", "FIXME");
@@ -1213,6 +1250,9 @@ static std::unique_ptr<OtlpHttpSpanExporterConfiguration> ParseOtlpHttpSpanExpor
12131250
model->compression = node->GetString("compression", "");
12141251
model->timeout = node->GetInteger("timeout", 10000);
12151252

1253+
std::string encoding = node->GetString("encoding", "protobuf");
1254+
model->encoding = ParseOtlpHttpEncoding(encoding);
1255+
12161256
return model;
12171257
}
12181258

0 commit comments

Comments
 (0)