2121# include " opentelemetry/exporters/otlp/protobuf_include_prefix.h"
2222# include " opentelemetry/nostd/shared_ptr.h"
2323
24- # include " opentelemetry/proto/collector/trace/v1/trace_service.grpc.pb.h"
2524// Problematic code that pulls in Gmock and breaks with vs2019/c++latest :
2625# include " opentelemetry/proto/collector/trace/v1/trace_service_mock.grpc.pb.h"
2726
27+ # include " opentelemetry/proto/collector/trace/v1/trace_service.grpc.pb.h"
28+
2829# include " opentelemetry/exporters/otlp/protobuf_include_suffix.h"
2930
3031# include " opentelemetry/sdk/trace/simple_processor.h"
@@ -432,73 +433,79 @@ struct TestTraceService : public opentelemetry::proto::collector::trace::v1::Tra
432433 std::vector<grpc::StatusCode> status_codes_;
433434};
434435
436+ using StatusCodeVector = std::vector<grpc::StatusCode>;
437+
435438class OtlpGrpcExporterRetryIntegrationTests
436- : public ::testing::TestWithParam<std::tuple<bool , std::vector<grpc::StatusCode> , std::size_t >>
439+ : public ::testing::TestWithParam<std::tuple<bool , StatusCodeVector , std::size_t >>
437440{};
438441
439442INSTANTIATE_TEST_SUITE_P (
440443 StatusCodes,
441444 OtlpGrpcExporterRetryIntegrationTests,
442445 testing::Values (
443446 // With retry policy enabled
444- std::make_tuple (true , std::vector {grpc::StatusCode::CANCELLED}, 5 ),
445- std::make_tuple(true , std::vector {grpc::StatusCode::UNKNOWN}, 1 ),
446- std::make_tuple(true , std::vector {grpc::StatusCode::INVALID_ARGUMENT}, 1 ),
447- std::make_tuple(true , std::vector {grpc::StatusCode::DEADLINE_EXCEEDED}, 5 ),
448- std::make_tuple(true , std::vector {grpc::StatusCode::NOT_FOUND}, 1 ),
449- std::make_tuple(true , std::vector {grpc::StatusCode::ALREADY_EXISTS}, 1 ),
450- std::make_tuple(true , std::vector {grpc::StatusCode::PERMISSION_DENIED}, 1 ),
451- std::make_tuple(true , std::vector {grpc::StatusCode::UNAUTHENTICATED}, 1 ),
452- std::make_tuple(true , std::vector {grpc::StatusCode::RESOURCE_EXHAUSTED}, 1 ),
453- std::make_tuple(true , std::vector {grpc::StatusCode::FAILED_PRECONDITION}, 1 ),
454- std::make_tuple(true , std::vector {grpc::StatusCode::ABORTED}, 5 ),
455- std::make_tuple(true , std::vector {grpc::StatusCode::OUT_OF_RANGE}, 5 ),
456- std::make_tuple(true , std::vector {grpc::StatusCode::UNIMPLEMENTED}, 1 ),
457- std::make_tuple(true , std::vector {grpc::StatusCode::INTERNAL}, 1 ),
458- std::make_tuple(true , std::vector {grpc::StatusCode::UNAVAILABLE}, 5 ),
459- std::make_tuple(true , std::vector {grpc::StatusCode::DATA_LOSS}, 5 ),
460- std::make_tuple(true , std::vector {grpc::StatusCode::OK}, 1 ),
447+ std::make_tuple (true , StatusCodeVector {grpc::StatusCode::CANCELLED}, 5 ),
448+ std::make_tuple(true , StatusCodeVector {grpc::StatusCode::UNKNOWN}, 1 ),
449+ std::make_tuple(true , StatusCodeVector {grpc::StatusCode::INVALID_ARGUMENT}, 1 ),
450+ std::make_tuple(true , StatusCodeVector {grpc::StatusCode::DEADLINE_EXCEEDED}, 5 ),
451+ std::make_tuple(true , StatusCodeVector {grpc::StatusCode::NOT_FOUND}, 1 ),
452+ std::make_tuple(true , StatusCodeVector {grpc::StatusCode::ALREADY_EXISTS}, 1 ),
453+ std::make_tuple(true , StatusCodeVector {grpc::StatusCode::PERMISSION_DENIED}, 1 ),
454+ std::make_tuple(true , StatusCodeVector {grpc::StatusCode::UNAUTHENTICATED}, 1 ),
455+ std::make_tuple(true , StatusCodeVector {grpc::StatusCode::RESOURCE_EXHAUSTED}, 1 ),
456+ std::make_tuple(true , StatusCodeVector {grpc::StatusCode::FAILED_PRECONDITION}, 1 ),
457+ std::make_tuple(true , StatusCodeVector {grpc::StatusCode::ABORTED}, 5 ),
458+ std::make_tuple(true , StatusCodeVector {grpc::StatusCode::OUT_OF_RANGE}, 5 ),
459+ std::make_tuple(true , StatusCodeVector {grpc::StatusCode::UNIMPLEMENTED}, 1 ),
460+ std::make_tuple(true , StatusCodeVector {grpc::StatusCode::INTERNAL}, 1 ),
461+ std::make_tuple(true , StatusCodeVector {grpc::StatusCode::UNAVAILABLE}, 5 ),
462+ std::make_tuple(true , StatusCodeVector {grpc::StatusCode::DATA_LOSS}, 5 ),
463+ std::make_tuple(true , StatusCodeVector {grpc::StatusCode::OK}, 1 ),
461464 std::make_tuple(true ,
462- std::vector{grpc::StatusCode::UNAVAILABLE, grpc::StatusCode::ABORTED,
463- grpc::StatusCode::OUT_OF_RANGE, grpc::StatusCode::DATA_LOSS},
465+ StatusCodeVector{grpc::StatusCode::UNAVAILABLE, grpc::StatusCode::ABORTED,
466+ grpc::StatusCode::OUT_OF_RANGE,
467+ grpc::StatusCode::DATA_LOSS},
464468 5 ),
465469 std::make_tuple(true ,
466- std::vector{grpc::StatusCode::UNAVAILABLE, grpc::StatusCode::UNAVAILABLE,
467- grpc::StatusCode::UNAVAILABLE, grpc::StatusCode::OK},
470+ StatusCodeVector{grpc::StatusCode::UNAVAILABLE,
471+ grpc::StatusCode::UNAVAILABLE,
472+ grpc::StatusCode::UNAVAILABLE, grpc::StatusCode::OK},
468473 4 ),
469474 std::make_tuple(true ,
470- std::vector {grpc::StatusCode::UNAVAILABLE, grpc::StatusCode::CANCELLED,
471- grpc::StatusCode::DEADLINE_EXCEEDED, grpc::StatusCode::OK},
475+ StatusCodeVector {grpc::StatusCode::UNAVAILABLE, grpc::StatusCode::CANCELLED,
476+ grpc::StatusCode::DEADLINE_EXCEEDED, grpc::StatusCode::OK},
472477 4 ),
473478 // With retry policy disabled
474- std::make_tuple(false , std::vector {grpc::StatusCode::CANCELLED}, 1 ),
475- std::make_tuple(false , std::vector {grpc::StatusCode::UNKNOWN}, 1 ),
476- std::make_tuple(false , std::vector {grpc::StatusCode::INVALID_ARGUMENT}, 1 ),
477- std::make_tuple(false , std::vector {grpc::StatusCode::DEADLINE_EXCEEDED}, 1 ),
478- std::make_tuple(false , std::vector {grpc::StatusCode::NOT_FOUND}, 1 ),
479- std::make_tuple(false , std::vector {grpc::StatusCode::ALREADY_EXISTS}, 1 ),
480- std::make_tuple(false , std::vector {grpc::StatusCode::PERMISSION_DENIED}, 1 ),
481- std::make_tuple(false , std::vector {grpc::StatusCode::UNAUTHENTICATED}, 1 ),
482- std::make_tuple(false , std::vector {grpc::StatusCode::RESOURCE_EXHAUSTED}, 1 ),
483- std::make_tuple(false , std::vector {grpc::StatusCode::FAILED_PRECONDITION}, 1 ),
484- std::make_tuple(false , std::vector {grpc::StatusCode::ABORTED}, 1 ),
485- std::make_tuple(false , std::vector {grpc::StatusCode::OUT_OF_RANGE}, 1 ),
486- std::make_tuple(false , std::vector {grpc::StatusCode::UNIMPLEMENTED}, 1 ),
487- std::make_tuple(false , std::vector {grpc::StatusCode::INTERNAL}, 1 ),
488- std::make_tuple(false , std::vector {grpc::StatusCode::UNAVAILABLE}, 1 ),
489- std::make_tuple(false , std::vector {grpc::StatusCode::DATA_LOSS}, 1 ),
490- std::make_tuple(false , std::vector {grpc::StatusCode::OK}, 1 ),
479+ std::make_tuple(false , StatusCodeVector {grpc::StatusCode::CANCELLED}, 1 ),
480+ std::make_tuple(false , StatusCodeVector {grpc::StatusCode::UNKNOWN}, 1 ),
481+ std::make_tuple(false , StatusCodeVector {grpc::StatusCode::INVALID_ARGUMENT}, 1 ),
482+ std::make_tuple(false , StatusCodeVector {grpc::StatusCode::DEADLINE_EXCEEDED}, 1 ),
483+ std::make_tuple(false , StatusCodeVector {grpc::StatusCode::NOT_FOUND}, 1 ),
484+ std::make_tuple(false , StatusCodeVector {grpc::StatusCode::ALREADY_EXISTS}, 1 ),
485+ std::make_tuple(false , StatusCodeVector {grpc::StatusCode::PERMISSION_DENIED}, 1 ),
486+ std::make_tuple(false , StatusCodeVector {grpc::StatusCode::UNAUTHENTICATED}, 1 ),
487+ std::make_tuple(false , StatusCodeVector {grpc::StatusCode::RESOURCE_EXHAUSTED}, 1 ),
488+ std::make_tuple(false , StatusCodeVector {grpc::StatusCode::FAILED_PRECONDITION}, 1 ),
489+ std::make_tuple(false , StatusCodeVector {grpc::StatusCode::ABORTED}, 1 ),
490+ std::make_tuple(false , StatusCodeVector {grpc::StatusCode::OUT_OF_RANGE}, 1 ),
491+ std::make_tuple(false , StatusCodeVector {grpc::StatusCode::UNIMPLEMENTED}, 1 ),
492+ std::make_tuple(false , StatusCodeVector {grpc::StatusCode::INTERNAL}, 1 ),
493+ std::make_tuple(false , StatusCodeVector {grpc::StatusCode::UNAVAILABLE}, 1 ),
494+ std::make_tuple(false , StatusCodeVector {grpc::StatusCode::DATA_LOSS}, 1 ),
495+ std::make_tuple(false , StatusCodeVector {grpc::StatusCode::OK}, 1 ),
491496 std::make_tuple(false ,
492- std::vector{grpc::StatusCode::UNAVAILABLE, grpc::StatusCode::ABORTED,
493- grpc::StatusCode::OUT_OF_RANGE, grpc::StatusCode::DATA_LOSS},
497+ StatusCodeVector{grpc::StatusCode::UNAVAILABLE, grpc::StatusCode::ABORTED,
498+ grpc::StatusCode::OUT_OF_RANGE,
499+ grpc::StatusCode::DATA_LOSS},
494500 1 ),
495501 std::make_tuple(false ,
496- std::vector{grpc::StatusCode::UNAVAILABLE, grpc::StatusCode::UNAVAILABLE,
497- grpc::StatusCode::UNAVAILABLE, grpc::StatusCode::OK},
502+ StatusCodeVector{grpc::StatusCode::UNAVAILABLE,
503+ grpc::StatusCode::UNAVAILABLE,
504+ grpc::StatusCode::UNAVAILABLE, grpc::StatusCode::OK},
498505 1 ),
499506 std::make_tuple(false ,
500- std::vector {grpc::StatusCode::UNAVAILABLE, grpc::StatusCode::CANCELLED,
501- grpc::StatusCode::DEADLINE_EXCEEDED, grpc::StatusCode::OK},
507+ StatusCodeVector {grpc::StatusCode::UNAVAILABLE, grpc::StatusCode::CANCELLED,
508+ grpc::StatusCode::DEADLINE_EXCEEDED, grpc::StatusCode::OK},
502509 1 )));
503510
504511TEST_P (OtlpGrpcExporterRetryIntegrationTests, StatusCodes)
@@ -513,7 +520,7 @@ TEST_P(OtlpGrpcExporterRetryIntegrationTests, StatusCodes)
513520 std::unique_ptr<grpc::Server> server;
514521
515522 std::thread server_thread ([&server, &service]() {
516- std::string address (" 0.0.0.0 :4317" );
523+ std::string address (" localhost :4317" );
517524 grpc::ServerBuilder builder;
518525 builder.RegisterService (&service);
519526 builder.AddListeningPort (address, grpc::InsecureServerCredentials ());
@@ -542,6 +549,7 @@ TEST_P(OtlpGrpcExporterRetryIntegrationTests, StatusCodes)
542549 auto processor = trace_sdk::SimpleSpanProcessorFactory::Create (std::move (exporter));
543550 auto provider = trace_sdk::TracerProviderFactory::Create (std::move (processor));
544551 provider->GetTracer (" Test tracer" )->StartSpan (" Test span" )->End ();
552+ provider->ForceFlush ();
545553
546554 ASSERT_TRUE (server);
547555 server->Shutdown ();
0 commit comments