From b53f533b17de85e8855675d1c412fa89fe692a56 Mon Sep 17 00:00:00 2001 From: Antoine Toulme Date: Wed, 9 Aug 2023 17:54:39 -0700 Subject: [PATCH] Remove sending a metric as part of auto-instrumentation --- instrumentation/Makefile | 11 +- instrumentation/README.md | 5 - instrumentation/install/instrumentation.conf | 1 - instrumentation/src/config.c | 6 - instrumentation/src/config.h | 1 - instrumentation/src/metrics_client.c | 133 ------------------ instrumentation/src/metrics_client.h | 10 -- instrumentation/src/splunk.c | 13 +- instrumentation/src/splunk.h | 4 +- instrumentation/src/test_main.c | 123 +++++----------- instrumentation/src/test_main.h | 10 -- .../testdata/instrumentation-options.conf | 1 - 12 files changed, 43 insertions(+), 275 deletions(-) delete mode 100644 instrumentation/src/metrics_client.c delete mode 100644 instrumentation/src/metrics_client.h diff --git a/instrumentation/Makefile b/instrumentation/Makefile index 967d8721cc..a0fddf9cbe 100644 --- a/instrumentation/Makefile +++ b/instrumentation/Makefile @@ -24,9 +24,6 @@ obj/logger.o: obj src/logger.c src/logger.h obj/config.o: obj src/config.c src/config.h gcc -c -Wall -Werror -fpic -o obj/config.o src/config.c -obj/metrics_client.o: obj src/metrics_client.c src/metrics_client.h - gcc -c -Wall -Werror -fpic -o obj/metrics_client.o src/metrics_client.c - obj/splunk.o: obj src/splunk.c src/splunk.h gcc -c -Wall -Werror -fpic -o obj/splunk.o src/splunk.c @@ -36,12 +33,12 @@ obj/args.o: obj src/args.c src/args.h obj/cmdline_reader.o: obj src/cmdline_reader.c src/cmdline_reader.h gcc -c -Wall -Werror -fpic -o obj/cmdline_reader.o src/cmdline_reader.c -so/libsplunk.so: obj so obj/logger.o obj/config.o obj/metrics_client.o obj/cmdline_reader.o obj/args.o obj/splunk.o - gcc -shared -o so/libsplunk.so obj/logger.o obj/config.o obj/metrics_client.o obj/cmdline_reader.o obj/args.o obj/splunk.o +so/libsplunk.so: obj so obj/logger.o obj/config.o obj/cmdline_reader.o obj/args.o obj/splunk.o + gcc -shared -o so/libsplunk.so obj/logger.o obj/config.o obj/cmdline_reader.o obj/args.o obj/splunk.o tests: src/test_main.h src/test_main.c src/test_utils.h src/test_utils.c src/logger.h src/test_logger.c \ -src/metrics_client.h src/cmdline_reader.h src/cmdline_reader_test.c obj/config.o obj/metrics_client.o obj/args.o obj/splunk.o - gcc -g -o tests src/test_main.c src/test_utils.c src/test_logger.c src/cmdline_reader_test.c obj/config.o obj/metrics_client.o obj/args.o obj/splunk.o +src/cmdline_reader.h src/cmdline_reader_test.c obj/config.o obj/args.o obj/splunk.o + gcc -g -o tests src/test_main.c src/test_utils.c src/test_logger.c src/cmdline_reader_test.c obj/config.o obj/args.o obj/splunk.o .PHONY: test test: tests diff --git a/instrumentation/README.md b/instrumentation/README.md index fc6604f7c2..33eabb75d3 100644 --- a/instrumentation/README.md +++ b/instrumentation/README.md @@ -53,11 +53,6 @@ variable will then be picked up by the Java instrumentation jar. Typically, it w to set the deployment environment for the Splunk backend. -#### `disable_telemetry` (optional) - -Set this value to `true` to disable the preloader from sending the `splunk.linux-autoinstr.executions` metric to the -local collector. Default: `false`. - #### `generate_service_name` (optional) Set this value to `false` to prevent the preloader from setting the `OTEL_SERVICE_NAME` environment variable. If this diff --git a/instrumentation/install/instrumentation.conf b/instrumentation/install/instrumentation.conf index 9c4631f816..dfef931b81 100644 --- a/instrumentation/install/instrumentation.conf +++ b/instrumentation/install/instrumentation.conf @@ -3,7 +3,6 @@ java_agent_jar=/usr/lib/splunk-instrumentation/splunk-otel-javaagent.jar #service_name=hardcoded.service # note: any of the the following lines may be uncommented to override defaults -#disable_telemetry=true #generate_service_name=false #enable_profiler=true #enable_profiler_memory=true diff --git a/instrumentation/src/config.c b/instrumentation/src/config.c index c34f00797c..05c9278a03 100644 --- a/instrumentation/src/config.c +++ b/instrumentation/src/config.c @@ -22,7 +22,6 @@ void load_config(logger log, struct config *cfg, char *file_name) { log_config_field(log, "service_name", cfg->service_name); log_config_field(log, "java_agent_jar", cfg->java_agent_jar); log_config_field(log, "resource_attributes", cfg->resource_attributes); - log_config_field(log, "disable_telemetry", cfg->disable_telemetry); log_config_field(log, "generate_service_name", cfg->generate_service_name); log_config_field(log, "enable_profiler", cfg->enable_profiler); log_config_field(log, "enable_profiler_memory", cfg->enable_profiler_memory); @@ -69,8 +68,6 @@ void read_lines(struct config *cfg, FILE *fp) { cfg->service_name = strdup(pair.v); } else if (streq(pair.k, "resource_attributes")) { cfg->resource_attributes = strdup(pair.v); - } else if (streq(pair.k, "disable_telemetry")) { - cfg->disable_telemetry = strdup(pair.v); } else if (streq(pair.k, "generate_service_name")) { cfg->generate_service_name = strdup(pair.v); } else if (streq(pair.k, "enable_profiler")) { @@ -108,9 +105,6 @@ void free_config(struct config *cfg) { if (cfg->resource_attributes != NULL) { free(cfg->resource_attributes); } - if (cfg->disable_telemetry != NULL) { - free(cfg->disable_telemetry); - } if (cfg->generate_service_name != NULL) { free(cfg->generate_service_name); } diff --git a/instrumentation/src/config.h b/instrumentation/src/config.h index c384a11e51..def67caf01 100644 --- a/instrumentation/src/config.h +++ b/instrumentation/src/config.h @@ -7,7 +7,6 @@ struct config { char *java_agent_jar; char *service_name; char *resource_attributes; - char *disable_telemetry; char *generate_service_name; char *enable_profiler; char *enable_profiler_memory; diff --git a/instrumentation/src/metrics_client.c b/instrumentation/src/metrics_client.c deleted file mode 100644 index 3130e0dfc4..0000000000 --- a/instrumentation/src/metrics_client.c +++ /dev/null @@ -1,133 +0,0 @@ -#include "metrics_client.h" - -#include -#include -#include -#include -#include -#include - -static const int RECV_BUF_LEN = 1024; - -static const int METRIC_JSON_MAX_LEN = 1024; - -static char *const expected = "HTTP/1.1 200 OK"; - -int http_post(char *host, int port, char *method, char *path, char *postData, logger pImpl); - -int make_socket(int timeout_seconds); - -int connect_http(const char *host, int port, int socket_descriptor); - -int post(int socket_descriptor, char *host, int port, char *method, char *path, char *postData); - -int receive(int socket_descriptor); - -int mk_metrics_json(char *dest, int max_len, char *service_name); - -void send_otlp_metric(logger log, char *service_name) { - char json[METRIC_JSON_MAX_LEN]; - int len = mk_metrics_json(json, METRIC_JSON_MAX_LEN, service_name); - if (len == METRIC_JSON_MAX_LEN - 1) { - log_debug(log, "otlp metric json too long, not sending"); - return; - } - char *host = "127.0.0.1"; - int port = 4318; - char *method = "POST"; - char *path = "/v1/metrics"; - if (http_post(host, port, method, path, json, log)) { - log_debug(log, "send otlp metric succeeded"); - } else { - log_debug(log, "send otlp metric failed"); - } -} - -int mk_metrics_json(char *dest, int max_len, char *service_name) { - char *format = "{\"resourceMetrics\":[{\"resource\":{},\"scopeMetrics\":[{\"scope\":{},\"metrics\":" - "[{\"name\":\"splunk.linux-autoinstr.executions\",\"sum\":{\"dataPoints\":" - "[{\"attributes\":[{\"key\":\"service.name\",\"value\":{\"stringValue\":\"%s\"}}],\"asInt\":\"1\"}]," - "\"aggregationTemporality\":\"AGGREGATION_TEMPORALITY_DELTA\"}}]}]}]}"; - return snprintf(dest, max_len, format, service_name); -} - -int http_post(char *host, int port, char *method, char *path, char *postData, logger log) { - int socket_descriptor = make_socket(1); - if (socket_descriptor == -1) { - log_debug(log, "metrics client failed to open socket"); - return 0; - } - - if (!connect_http(host, port, socket_descriptor)) { - log_debug(log, "metrics client failed to connect"); - return 0; - } - - if (!post(socket_descriptor, host, port, method, path, postData)) { - log_debug(log, "metrics client failed to send"); - return 0; - } - - if (!receive(socket_descriptor)) { - log_debug(log, "metrics client failed to receive response"); - return 0; - } - - return 1; -} - -int make_socket(int timeout_seconds) { - int socket_descriptor = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); - if (socket_descriptor == -1) { - return -1; - } - - struct timeval timeout; - timeout.tv_sec = timeout_seconds; - timeout.tv_usec = 0; - - if (setsockopt(socket_descriptor, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof(timeout)) < 0) { - return -1; - } - - if (setsockopt(socket_descriptor, SOL_SOCKET, SO_SNDTIMEO, &timeout, sizeof(timeout)) < 0) { - return -1; - } - - return socket_descriptor; -} - -int connect_http(const char *host, int port, int socket_descriptor) { - struct sockaddr_in address; - address.sin_family = AF_INET; - address.sin_addr.s_addr = inet_addr(host); - address.sin_port = htons(port); - int errno = connect(socket_descriptor, (struct sockaddr *) &address, sizeof(address)); - return errno == 0; -} - -int post(int socket_descriptor, char *host, int port, char *method, char *path, char *postData) { - char *req_pattern = "%s %s HTTP/1.1\n" - "Host: %s:%d\n" - "Content-Type: application/json\n" - "Content-Length: %d\n" - "User-Agent: splunk-zc/1.0\n" - "Accept: */*\n\n%s"; - char req_str[1024]; - sprintf(req_str, req_pattern, method, path, host, port, strlen(postData), postData); - - size_t req_len = strlen(req_str); - ssize_t num_bytes_sent = send(socket_descriptor, req_str, req_len, 0); - return num_bytes_sent == req_len; -} - -int receive(int socket_descriptor) { - char buf[RECV_BUF_LEN]; - ssize_t recv_size = recv(socket_descriptor, buf, RECV_BUF_LEN, 0); - size_t expected_len = strlen(expected); - if (recv_size < expected_len) { - return 0; - } - - return strncmp(expected, buf, expected_len) == 0; -} diff --git a/instrumentation/src/metrics_client.h b/instrumentation/src/metrics_client.h deleted file mode 100644 index e43a348949..0000000000 --- a/instrumentation/src/metrics_client.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef INSTRUMENTATION_METRICS_CLIENT_H -#define INSTRUMENTATION_METRICS_CLIENT_H - -#include "logger.h" - -typedef void (*send_otlp_metric_func_t)(logger, char *); - -void send_otlp_metric(logger, char *); - -#endif //INSTRUMENTATION_METRICS_CLIENT_H diff --git a/instrumentation/src/splunk.c b/instrumentation/src/splunk.c index fa456f5248..1fbad2bfbb 100644 --- a/instrumentation/src/splunk.c +++ b/instrumentation/src/splunk.c @@ -1,6 +1,5 @@ #include "splunk.h" #include "config.h" -#include "metrics_client.h" #include "args.h" #include @@ -49,7 +48,7 @@ void __attribute__((constructor)) splunk_instrumentation_enter() { if (cr == NULL) { return; } - auto_instrument(l, has_read_access, program_invocation_short_name, load_config, cr, send_otlp_metric); + auto_instrument(l, has_read_access, program_invocation_short_name, load_config, cr); cmdline_reader_close(cr); free_logger(l); } @@ -59,8 +58,7 @@ void auto_instrument( has_access_func_t has_access, const char *program_name, load_config_func_t load_config_func, - cmdline_reader cr, - send_otlp_metric_func_t send_otlp_metric_func + cmdline_reader cr ) { if (!streq(program_name, "java")) { return; @@ -78,7 +76,6 @@ void auto_instrument( .java_agent_jar = NULL, .resource_attributes = NULL, .service_name = NULL, - .disable_telemetry = NULL, .generate_service_name = NULL, .enable_profiler = NULL, .enable_profiler_memory = NULL, @@ -111,12 +108,6 @@ void auto_instrument( set_env_var_from_attr(log, "resource_attributes", resource_attributes_var, cfg.resource_attributes); - if (str_to_bool(cfg.disable_telemetry, 0)) { - log_info(log, "disabling telemetry as per config"); - } else { - send_otlp_metric_func(log, service_name); - } - free_config(&cfg); } diff --git a/instrumentation/src/splunk.h b/instrumentation/src/splunk.h index 0f17279f86..db1d8e27f0 100644 --- a/instrumentation/src/splunk.h +++ b/instrumentation/src/splunk.h @@ -4,7 +4,6 @@ #include "logger.h" #include "config.h" #include "cmdline_reader.h" -#include "metrics_client.h" static char *const disable_env_var = "DISABLE_SPLUNK_AUTOINSTRUMENTATION"; static char *const java_tool_options_var = "JAVA_TOOL_OPTIONS"; @@ -20,8 +19,7 @@ void auto_instrument( has_access_func_t has_access, const char *program_name, load_config_func_t load_config_func, - cmdline_reader cr, - send_otlp_metric_func_t send_otlp_metric_func + cmdline_reader cr ); int streq(const char *expected, const char *actual); diff --git a/instrumentation/src/test_main.c b/instrumentation/src/test_main.c index 4bab4bca75..59d54f58c4 100644 --- a/instrumentation/src/test_main.c +++ b/instrumentation/src/test_main.c @@ -56,8 +56,6 @@ void run_tests() { test_is_legal_java_module_main_class, test_is_legal_module, test_str_to_bool, - test_disable_telemetry, - test_enable_telemetry, test_enable_profiling, test_enable_profiling_memory, test_enable_metrics, @@ -85,17 +83,15 @@ void run_test(test_func_t run_test) { void test_auto_instrument_svc_name_specified(logger l) { cmdline_reader cr = new_default_test_cmdline_reader(); - auto_instrument(l, access_check_true, "java", fake_config_svcname_explicitly_specified, cr, - fake_send_otlp_metric); + auto_instrument(l, access_check_true, "java", fake_config_svcname_explicitly_specified, cr); char *logs[256]; int n = get_logs(l, logs); char *funcname = "test_auto_instrument_svc_name_specified"; - require_equal_ints(funcname, 4, n); + require_equal_ints(funcname, 3, n); require_equal_strings(funcname, "setting OTEL_SERVICE_NAME='my.override'", logs[0]); require_equal_strings(funcname, "setting JAVA_TOOL_OPTIONS='-javaagent:/foo/asdf.jar'", logs[1]); require_equal_strings(funcname, "setting OTEL_RESOURCE_ATTRIBUTES='myattr=myval'", logs[2]); - require_equal_strings(funcname, "sending metric", logs[3]); require_env(funcname, "-javaagent:/foo/asdf.jar", java_tool_options_var); require_env(funcname, "my.override", otel_service_name_var); cmdline_reader_close(cr); @@ -104,53 +100,49 @@ void test_auto_instrument_svc_name_specified(logger l) { void test_auto_instrument_gen_svc_name_explicitly_enabled(logger l) { char *funcname = "test_auto_instrument_gen_svc_name_explicitly_enabled"; cmdline_reader cr = new_default_test_cmdline_reader(); - auto_instrument(l, access_check_true, "java", fake_config_generate_svcname_enabled, cr, fake_send_otlp_metric); + auto_instrument(l, access_check_true, "java", fake_config_generate_svcname_enabled, cr); char *logs[256]; int n = get_logs(l, logs); require_equal_strings(funcname, "setting OTEL_SERVICE_NAME='foo'", logs[0]); require_equal_strings(funcname, "setting JAVA_TOOL_OPTIONS='-javaagent:/foo/asdf.jar'", logs[1]); require_equal_strings(funcname, "setting OTEL_RESOURCE_ATTRIBUTES='myattr=myval'", logs[2]); - require_equal_strings(funcname, "sending metric", logs[3]); - require_equal_ints(funcname, 4, n); + require_equal_ints(funcname, 3, n); require_env(funcname, "foo", otel_service_name_var); } void test_auto_instrument_gen_svc_name_explicitly_disabled(logger l) { char *funcname = "test_auto_instrument_gen_svc_name_explicitly_disabled"; cmdline_reader cr = new_default_test_cmdline_reader(); - auto_instrument(l, access_check_true, "java", fake_config_generate_svcname_disabled, cr, fake_send_otlp_metric); + auto_instrument(l, access_check_true, "java", fake_config_generate_svcname_disabled, cr); char *logs[256]; int n = get_logs(l, logs); require_equal_strings(funcname, "service name generation explicitly disabled", logs[0]); require_equal_strings(funcname, "setting JAVA_TOOL_OPTIONS='-javaagent:/foo/asdf.jar'", logs[1]); - require_equal_strings(funcname, "sending metric", logs[2]); - require_equal_ints(funcname, 3, n); + require_equal_ints(funcname, 2, n); require_unset_env(funcname, otel_service_name_var); } void test_auto_instrument_gen_svcname_disabled_but_specified(logger l) { char *funcname = "test_auto_instrument_gen_svcname_disabled_but_specified"; cmdline_reader cr = new_default_test_cmdline_reader(); - auto_instrument(l, access_check_true, "java", fake_config_generate_svcname_disabled_but_explicitly_specified, cr, fake_send_otlp_metric); + auto_instrument(l, access_check_true, "java", fake_config_generate_svcname_disabled_but_explicitly_specified, cr); char *logs[256]; int n = get_logs(l, logs); require_equal_strings(funcname, "service name generation explicitly disabled", logs[0]); require_equal_strings(funcname, "setting JAVA_TOOL_OPTIONS='-javaagent:/foo/asdf.jar'", logs[1]); - require_equal_strings(funcname, "sending metric", logs[2]); - require_equal_ints(funcname, 3, n); + require_equal_ints(funcname, 2, n); require_unset_env(funcname, otel_service_name_var); } void test_auto_instrument_no_svc_name_in_config(logger l) { cmdline_reader cr = new_default_test_cmdline_reader(); - auto_instrument(l, access_check_true, "java", fake_config_no_svcname, cr, fake_send_otlp_metric); + auto_instrument(l, access_check_true, "java", fake_config_no_svcname, cr); char *logs[256]; int n = get_logs(l, logs); char *funcname = "test_auto_instrument_no_svc_name_in_config"; - require_equal_ints(funcname, 3, n); + require_equal_ints(funcname, 2, n); require_equal_strings(funcname, "setting OTEL_SERVICE_NAME='foo'", logs[0]); require_equal_strings(funcname, "setting JAVA_TOOL_OPTIONS='-javaagent:/foo/asdf.jar'", logs[1]); - require_equal_strings(funcname, "sending metric", logs[2]); require_env(funcname, "-javaagent:/foo/asdf.jar", java_tool_options_var); require_env(funcname, "foo", otel_service_name_var); cmdline_reader_close(cr); @@ -158,8 +150,7 @@ void test_auto_instrument_no_svc_name_in_config(logger l) { void test_auto_instrument_not_java(logger l) { cmdline_reader cr = new_default_test_cmdline_reader(); - auto_instrument(l, access_check_true, "foo", fake_config_svcname_explicitly_specified, cr, - fake_send_otlp_metric); + auto_instrument(l, access_check_true, "foo", fake_config_svcname_explicitly_specified, cr); char *funcname = "test_auto_instrument_not_java"; require_unset_env(funcname, java_tool_options_var); char *logs[256]; @@ -170,8 +161,7 @@ void test_auto_instrument_not_java(logger l) { void test_auto_instrument_no_access(logger l) { cmdline_reader cr = new_default_test_cmdline_reader(); - auto_instrument(l, access_check_false, "java", fake_config_svcname_explicitly_specified, cr, - fake_send_otlp_metric); + auto_instrument(l, access_check_false, "java", fake_config_svcname_explicitly_specified, cr); require_unset_env("test_auto_instrument_no_access", java_tool_options_var); char *logs[256]; char *funcname = "test_auto_instrument_no_access"; @@ -183,8 +173,7 @@ void test_auto_instrument_no_access(logger l) { void test_auto_instrument_splunk_env_var_true(logger l) { setenv(disable_env_var, "true", 0); cmdline_reader cr = new_default_test_cmdline_reader(); - auto_instrument(l, access_check_true, "java", fake_config_svcname_explicitly_specified, cr, - fake_send_otlp_metric); + auto_instrument(l, access_check_true, "java", fake_config_svcname_explicitly_specified, cr); require_unset_env("test_auto_instrument_splunk_env_var_true", "JAVA_TOOL_OPTIONS"); cmdline_reader_close(cr); } @@ -192,8 +181,7 @@ void test_auto_instrument_splunk_env_var_true(logger l) { void test_auto_instrument_splunk_env_var_false(logger l) { setenv(disable_env_var, "false", 0); cmdline_reader cr = new_default_test_cmdline_reader(); - auto_instrument(l, access_check_true, "java", fake_config_svcname_explicitly_specified, cr, - fake_send_otlp_metric); + auto_instrument(l, access_check_true, "java", fake_config_svcname_explicitly_specified, cr); require_env("test_auto_instrument_splunk_env_var_false", "-javaagent:/foo/asdf.jar", "JAVA_TOOL_OPTIONS"); cmdline_reader_close(cr); } @@ -201,8 +189,7 @@ void test_auto_instrument_splunk_env_var_false(logger l) { void test_auto_instrument_splunk_env_var_false_caps(logger l) { setenv(disable_env_var, "FALSE", 0); cmdline_reader cr = new_default_test_cmdline_reader(); - auto_instrument(l, access_check_true, "java", fake_config_svcname_explicitly_specified, cr, - fake_send_otlp_metric); + auto_instrument(l, access_check_true, "java", fake_config_svcname_explicitly_specified, cr); require_env("test_auto_instrument_splunk_env_var_false_caps", "-javaagent:/foo/asdf.jar", "JAVA_TOOL_OPTIONS"); cmdline_reader_close(cr); } @@ -210,7 +197,7 @@ void test_auto_instrument_splunk_env_var_false_caps(logger l) { void test_auto_instrument_splunk_env_var_zero(logger l) { setenv(disable_env_var, "0", 0); cmdline_reader cr = new_default_test_cmdline_reader(); - auto_instrument(l, access_check_true, "java", fake_config_svcname_explicitly_specified, cr, fake_send_otlp_metric); + auto_instrument(l, access_check_true, "java", fake_config_svcname_explicitly_specified, cr); require_env("test_auto_instrument_splunk_env_var_zero", "-javaagent:/foo/asdf.jar", "JAVA_TOOL_OPTIONS"); cmdline_reader_close(cr); } @@ -221,20 +208,18 @@ void test_read_config_default(logger l) { char *logs[256]; int n = get_logs(l, logs); char *funcname = "test_read_config_default"; - require_equal_ints(funcname, 9, n); + require_equal_ints(funcname, 8, n); require_equal_strings(funcname, "reading config file: testdata/instrumentation-default.conf", logs[0]); require_equal_strings(funcname, "config: service_name not specified", logs[1]); require_equal_strings(funcname, "config: java_agent_jar=/usr/lib/splunk-instrumentation/splunk-otel-javaagent.jar", logs[2]); require_equal_strings(funcname, "config: resource_attributes=deployment.environment=test", logs[3]); - require_equal_strings(funcname, "config: disable_telemetry not specified", logs[4]); - require_equal_strings(funcname, "config: generate_service_name not specified", logs[5]); - require_equal_strings(funcname, "config: enable_profiler not specified", logs[6]); - require_equal_strings(funcname, "config: enable_profiler_memory not specified", logs[7]); - require_equal_strings(funcname, "config: enable_metrics not specified", logs[8]); + require_equal_strings(funcname, "config: generate_service_name not specified", logs[4]); + require_equal_strings(funcname, "config: enable_profiler not specified", logs[5]); + require_equal_strings(funcname, "config: enable_profiler_memory not specified", logs[6]); + require_equal_strings(funcname, "config: enable_metrics not specified", logs[7]); require_equal_strings(funcname, "/usr/lib/splunk-instrumentation/splunk-otel-javaagent.jar", cfg.java_agent_jar); require_equal_strings(funcname, NULL, cfg.service_name); require_equal_strings(funcname, "deployment.environment=test", cfg.resource_attributes); - require_equal_strings(funcname, NULL, cfg.disable_telemetry); require_equal_strings(funcname, NULL, cfg.generate_service_name); require_equal_strings(funcname, NULL, cfg.enable_profiler); require_equal_strings(funcname, NULL, cfg.enable_profiler_memory); @@ -248,21 +233,19 @@ void test_read_config_all_options(logger l) { char *logs[256]; int n = get_logs(l, logs); char *funcname = "test_read_config_all_options"; - require_equal_ints(funcname, 9, n); + require_equal_ints(funcname, 8, n); require_equal_strings(funcname, "reading config file: testdata/instrumentation-options.conf", logs[0]); require_equal_strings(funcname, "config: service_name=default.service", logs[1]); require_equal_strings(funcname, "config: java_agent_jar=/usr/lib/splunk-instrumentation/splunk-otel-javaagent.jar", logs[2]); require_equal_strings(funcname, "config: resource_attributes=deployment.environment=test", logs[3]); - require_equal_strings(funcname, "config: disable_telemetry=true", logs[4]); - require_equal_strings(funcname, "config: generate_service_name=true", logs[5]); - require_equal_strings(funcname, "config: enable_profiler=true", logs[6]); - require_equal_strings(funcname, "config: enable_profiler_memory=true", logs[7]); - require_equal_strings(funcname, "config: enable_metrics=true", logs[8]); + require_equal_strings(funcname, "config: generate_service_name=true", logs[4]); + require_equal_strings(funcname, "config: enable_profiler=true", logs[5]); + require_equal_strings(funcname, "config: enable_profiler_memory=true", logs[6]); + require_equal_strings(funcname, "config: enable_metrics=true", logs[7]); require_equal_strings(funcname, "default.service", cfg.service_name); require_equal_strings(funcname, "/usr/lib/splunk-instrumentation/splunk-otel-javaagent.jar", cfg.java_agent_jar); require_equal_strings(funcname, "deployment.environment=test", cfg.resource_attributes); - require_equal_strings(funcname, "true", cfg.disable_telemetry); require_equal_strings(funcname, "true", cfg.generate_service_name); require_equal_strings(funcname, "true", cfg.enable_profiler); require_equal_strings(funcname, "true", cfg.enable_profiler_memory); @@ -276,16 +259,15 @@ void test_read_config_missing_file(logger l) { char *logs[256]; int n = get_logs(l, logs); char *funcname = "test_read_config_missing_file"; - require_equal_ints(funcname, 9, n); + require_equal_ints(funcname, 8, n); require_equal_strings(funcname, "file not found: foo.txt", logs[0]); require_equal_strings(funcname, "config: service_name not specified", logs[1]); require_equal_strings(funcname, "config: java_agent_jar not specified", logs[2]); require_equal_strings(funcname, "config: resource_attributes not specified", logs[3]); - require_equal_strings(funcname, "config: disable_telemetry not specified", logs[4]); - require_equal_strings(funcname, "config: generate_service_name not specified", logs[5]); - require_equal_strings(funcname, "config: enable_profiler not specified", logs[6]); - require_equal_strings(funcname, "config: enable_profiler_memory not specified", logs[7]); - require_equal_strings(funcname, "config: enable_metrics not specified", logs[8]); + require_equal_strings(funcname, "config: generate_service_name not specified", logs[4]); + require_equal_strings(funcname, "config: enable_profiler not specified", logs[5]); + require_equal_strings(funcname, "config: enable_profiler_memory not specified", logs[6]); + require_equal_strings(funcname, "config: enable_metrics not specified", logs[7]); require_equal_strings(funcname, NULL, cfg.service_name); require_equal_strings(funcname, NULL, cfg.java_agent_jar); free_config(&cfg); @@ -503,8 +485,7 @@ void test_dots_to_dashes(logger l) { void test_env_var_already_set(logger l) { setenv("JAVA_TOOL_OPTIONS", "hello", 0); cmdline_reader cr = new_default_test_cmdline_reader(); - auto_instrument(l, access_check_true, "java", fake_config_svcname_explicitly_specified, cr, - fake_send_otlp_metric); + auto_instrument(l, access_check_true, "java", fake_config_svcname_explicitly_specified, cr); char *funcname = "test_env_var_already_set"; require_env(funcname, "hello", java_tool_options_var); cmdline_reader_close(cr); @@ -554,38 +535,21 @@ void test_str_to_bool(logger l) { require_true("test_str_bool", str_to_bool(NULL, 1)); } -void test_enable_telemetry(logger l) { - cmdline_reader cr = new_default_test_cmdline_reader(); - auto_instrument(l, access_check_true, "java", fake_config_disable_telemetry_not_specified, cr, - fake_send_otlp_metric); - char *logs[256]; - get_logs(l, logs); - require_equal_strings("test_enable_telemetry", "sending metric", logs[2]); -} - -void test_disable_telemetry(logger l) { - cmdline_reader cr = new_default_test_cmdline_reader(); - auto_instrument(l, access_check_true, "java", fake_config_disable_telemetry_true, cr, fake_send_otlp_metric); - char *logs[256]; - get_logs(l, logs); - require_equal_strings("test_disable_telemetry", "disabling telemetry as per config", logs[2]); -} - void test_enable_profiling(logger l) { cmdline_reader cr = new_default_test_cmdline_reader(); - auto_instrument(l, access_check_true, "java", fake_config_enable_profiler, cr, fake_send_otlp_metric); + auto_instrument(l, access_check_true, "java", fake_config_enable_profiler, cr); require_env("test_enable_profiling", "-javaagent:/foo/asdf.jar -Dsplunk.profiler.enabled=true", "JAVA_TOOL_OPTIONS"); } void test_enable_profiling_memory(logger l) { cmdline_reader cr = new_default_test_cmdline_reader(); - auto_instrument(l, access_check_true, "java", fake_config_enable_profiler_memory, cr, fake_send_otlp_metric); + auto_instrument(l, access_check_true, "java", fake_config_enable_profiler_memory, cr); require_env("test_enable_profiling_memory", "-javaagent:/foo/asdf.jar -Dsplunk.profiler.memory.enabled=true", "JAVA_TOOL_OPTIONS"); } void test_enable_metrics(logger l) { cmdline_reader cr = new_default_test_cmdline_reader(); - auto_instrument(l, access_check_true, "java", fake_config_enable_metrics, cr, fake_send_otlp_metric); + auto_instrument(l, access_check_true, "java", fake_config_enable_metrics, cr); require_env("test_enable_metrics", "-javaagent:/foo/asdf.jar -Dsplunk.metrics.enabled=true", "JAVA_TOOL_OPTIONS"); } @@ -623,7 +587,7 @@ void test_concat_string_to_nonempty_just_enough_room(logger l) { void test_long_cfg_attributes(logger l) { cmdline_reader cr = new_default_test_cmdline_reader(); - auto_instrument(l, access_check_true, "java", fake_config_max_attributes, cr, fake_send_otlp_metric); + auto_instrument(l, access_check_true, "java", fake_config_max_attributes, cr); require_env_len("test_long_cfg_attributes", 255, "OTEL_SERVICE_NAME"); require_env_len("test_long_cfg_attributes", 365, "JAVA_TOOL_OPTIONS"); require_env_len("test_long_cfg_attributes", 255, "OTEL_RESOURCE_ATTRIBUTES"); @@ -631,21 +595,15 @@ void test_long_cfg_attributes(logger l) { // fakes/testdata -void fake_send_otlp_metric(logger log, char *service_name) { - log_debug(log, "sending metric"); -} - void fake_config_svcname_explicitly_specified(logger log, struct config *cfg, char *path) { cfg->java_agent_jar = strdup("/foo/asdf.jar"); cfg->service_name = strdup("my.override"); cfg->resource_attributes = strdup("myattr=myval"); - cfg->disable_telemetry = strdup("false"); } void fake_config_generate_svcname_enabled(logger log, struct config *cfg, char *path) { cfg->java_agent_jar = strdup("/foo/asdf.jar"); cfg->resource_attributes = strdup("myattr=myval"); - cfg->disable_telemetry = strdup("false"); cfg->generate_service_name = strdup("true"); } @@ -664,15 +622,6 @@ void fake_config_no_svcname(logger log, struct config *cfg, char *path) { cfg->java_agent_jar = strdup("/foo/asdf.jar"); } -void fake_config_disable_telemetry_not_specified(logger log, struct config *cfg, char *path) { - cfg->java_agent_jar = strdup("/foo/asdf.jar"); -} - -void fake_config_disable_telemetry_true(logger log, struct config *cfg, char *path) { - cfg->java_agent_jar = strdup("/foo/asdf.jar"); - cfg->disable_telemetry = strdup("true"); -} - void fake_config_enable_profiler(logger log, struct config *cfg, char *path) { cfg->java_agent_jar = strdup("/foo/asdf.jar"); cfg->enable_profiler = strdup("true"); diff --git a/instrumentation/src/test_main.h b/instrumentation/src/test_main.h index f3ad32141a..6546f1be2c 100644 --- a/instrumentation/src/test_main.h +++ b/instrumentation/src/test_main.h @@ -87,10 +87,6 @@ void test_is_legal_module(logger l); void test_str_to_bool(logger l); -void test_enable_telemetry(logger l); - -void test_disable_telemetry(logger l); - void test_enable_profiling(logger l); void test_enable_profiling_memory(logger l); @@ -111,8 +107,6 @@ void test_auto_instrument_gen_svcname_disabled_but_specified(logger l); // fakes/testdata -void fake_send_otlp_metric(logger log, char *service_name); - void fake_config_svcname_explicitly_specified(logger log, struct config *cfg, char *path); void fake_config_generate_svcname_enabled(logger log, struct config *cfg, char *path); @@ -123,10 +117,6 @@ void fake_config_generate_svcname_disabled_but_explicitly_specified(logger log, void fake_config_no_svcname(logger log, struct config *cfg, char *path); -void fake_config_disable_telemetry_not_specified(logger log, struct config *cfg, char *path); - -void fake_config_disable_telemetry_true(logger log, struct config *cfg, char *path); - void fake_config_enable_profiler(logger log, struct config *cfg, char *path); void fake_config_enable_profiler_memory(logger log, struct config *cfg, char *path); diff --git a/instrumentation/testdata/instrumentation-options.conf b/instrumentation/testdata/instrumentation-options.conf index aa74a6262b..d3d41fe91b 100644 --- a/instrumentation/testdata/instrumentation-options.conf +++ b/instrumentation/testdata/instrumentation-options.conf @@ -1,7 +1,6 @@ java_agent_jar=/usr/lib/splunk-instrumentation/splunk-otel-javaagent.jar service_name=default.service resource_attributes=deployment.environment=test -disable_telemetry=true generate_service_name=true enable_profiler=true enable_profiler_memory=true