mirror of
https://github.com/XRPLF/rippled.git
synced 2026-03-02 18:52:33 +00:00
112 lines
3.7 KiB
C++
112 lines
3.7 KiB
C++
#include <xrpl/basics/BasicConfig.h>
|
|
#include <xrpl/telemetry/Telemetry.h>
|
|
|
|
#include <gtest/gtest.h>
|
|
|
|
#include <chrono>
|
|
|
|
using namespace xrpl;
|
|
|
|
TEST(TelemetryConfig, setup_defaults)
|
|
{
|
|
telemetry::Telemetry::Setup s;
|
|
EXPECT_FALSE(s.enabled);
|
|
EXPECT_EQ(s.serviceName, "rippled");
|
|
EXPECT_TRUE(s.serviceVersion.empty());
|
|
EXPECT_TRUE(s.serviceInstanceId.empty());
|
|
EXPECT_EQ(s.exporterType, "otlp_http");
|
|
EXPECT_EQ(s.exporterEndpoint, "http://localhost:4318/v1/traces");
|
|
EXPECT_FALSE(s.useTls);
|
|
EXPECT_TRUE(s.tlsCertPath.empty());
|
|
EXPECT_DOUBLE_EQ(s.samplingRatio, 1.0);
|
|
EXPECT_EQ(s.batchSize, 512u);
|
|
EXPECT_EQ(s.batchDelay, std::chrono::milliseconds{5000});
|
|
EXPECT_EQ(s.maxQueueSize, 2048u);
|
|
EXPECT_EQ(s.networkId, 0u);
|
|
EXPECT_EQ(s.networkType, "mainnet");
|
|
EXPECT_TRUE(s.traceTransactions);
|
|
EXPECT_TRUE(s.traceConsensus);
|
|
EXPECT_TRUE(s.traceRpc);
|
|
EXPECT_FALSE(s.tracePeer);
|
|
EXPECT_TRUE(s.traceLedger);
|
|
}
|
|
|
|
TEST(TelemetryConfig, parse_empty_section)
|
|
{
|
|
Section section;
|
|
auto setup = telemetry::setup_Telemetry(section, "nHUtest123", "2.0.0");
|
|
|
|
EXPECT_FALSE(setup.enabled);
|
|
EXPECT_EQ(setup.serviceName, "rippled");
|
|
EXPECT_EQ(setup.serviceVersion, "2.0.0");
|
|
EXPECT_EQ(setup.serviceInstanceId, "nHUtest123");
|
|
EXPECT_EQ(setup.exporterType, "otlp_http");
|
|
EXPECT_DOUBLE_EQ(setup.samplingRatio, 1.0);
|
|
EXPECT_TRUE(setup.traceRpc);
|
|
EXPECT_TRUE(setup.traceTransactions);
|
|
EXPECT_TRUE(setup.traceConsensus);
|
|
EXPECT_FALSE(setup.tracePeer);
|
|
EXPECT_TRUE(setup.traceLedger);
|
|
}
|
|
|
|
TEST(TelemetryConfig, parse_full_section)
|
|
{
|
|
Section section;
|
|
section.set("enabled", "1");
|
|
section.set("service_name", "my-rippled");
|
|
section.set("service_instance_id", "custom-id");
|
|
section.set("exporter", "otlp_http");
|
|
section.set("endpoint", "http://collector:4318/v1/traces");
|
|
section.set("use_tls", "1");
|
|
section.set("tls_ca_cert", "/etc/ssl/ca.pem");
|
|
section.set("sampling_ratio", "0.5");
|
|
section.set("batch_size", "256");
|
|
section.set("batch_delay_ms", "3000");
|
|
section.set("max_queue_size", "4096");
|
|
section.set("trace_transactions", "0");
|
|
section.set("trace_consensus", "0");
|
|
section.set("trace_rpc", "1");
|
|
section.set("trace_peer", "1");
|
|
section.set("trace_ledger", "0");
|
|
|
|
auto setup = telemetry::setup_Telemetry(section, "nHUtest123", "2.0.0");
|
|
|
|
EXPECT_TRUE(setup.enabled);
|
|
EXPECT_EQ(setup.serviceName, "my-rippled");
|
|
EXPECT_EQ(setup.serviceInstanceId, "custom-id");
|
|
EXPECT_EQ(setup.exporterType, "otlp_http");
|
|
EXPECT_EQ(setup.exporterEndpoint, "http://collector:4318/v1/traces");
|
|
EXPECT_TRUE(setup.useTls);
|
|
EXPECT_EQ(setup.tlsCertPath, "/etc/ssl/ca.pem");
|
|
EXPECT_DOUBLE_EQ(setup.samplingRatio, 0.5);
|
|
EXPECT_EQ(setup.batchSize, 256u);
|
|
EXPECT_EQ(setup.batchDelay, std::chrono::milliseconds{3000});
|
|
EXPECT_EQ(setup.maxQueueSize, 4096u);
|
|
EXPECT_FALSE(setup.traceTransactions);
|
|
EXPECT_FALSE(setup.traceConsensus);
|
|
EXPECT_TRUE(setup.traceRpc);
|
|
EXPECT_TRUE(setup.tracePeer);
|
|
EXPECT_FALSE(setup.traceLedger);
|
|
}
|
|
|
|
TEST(TelemetryConfig, null_telemetry_factory)
|
|
{
|
|
telemetry::Telemetry::Setup setup;
|
|
setup.enabled = false;
|
|
|
|
beast::Journal::Sink& sink = beast::Journal::getNullSink();
|
|
beast::Journal j(sink);
|
|
auto tel = telemetry::make_Telemetry(setup, j);
|
|
EXPECT_TRUE(tel != nullptr);
|
|
EXPECT_FALSE(tel->isEnabled());
|
|
EXPECT_FALSE(tel->shouldTraceRpc());
|
|
EXPECT_FALSE(tel->shouldTraceTransactions());
|
|
EXPECT_FALSE(tel->shouldTraceConsensus());
|
|
EXPECT_FALSE(tel->shouldTracePeer());
|
|
EXPECT_FALSE(tel->shouldTraceLedger());
|
|
|
|
// start/stop should be no-ops without crashing
|
|
tel->start();
|
|
tel->stop();
|
|
}
|