Skip to content

Commit 13b4072

Browse files
committed
chore(axiom): add unit tests
1 parent 7a54147 commit 13b4072

File tree

2 files changed

+133
-0
lines changed

2 files changed

+133
-0
lines changed

axiom/tests/test_segment.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2853,6 +2853,12 @@ static void test_segment_set_error_attributes(void) {
28532853
nr_segment_set_error(&segment, NULL, NULL);
28542854
tlib_pass_if_null("Null segment error", segment.error);
28552855

2856+
nr_segment_set_error_with_additional_params(NULL, "error.message", "error.class", "rand1", 125, "rand3", 100);
2857+
tlib_pass_if_null("Null segment error", segment.error);
2858+
2859+
nr_segment_set_error_with_additional_params(NULL, "error.message", NULL, "rand1", 125, NULL, 100);
2860+
tlib_pass_if_null("Null segment error", segment.error);
2861+
28562862
/*
28572863
* Test : Normal operation.
28582864
*/
@@ -2868,6 +2874,12 @@ static void test_segment_set_error_attributes(void) {
28682874
tlib_pass_if_str_equal("error.class", "error.class 1",
28692875
segment.error->error_class);
28702876

2877+
nr_segment_set_error_with_additional_params(&segment, "error.message", "error.class", "error.file", 125, "rand3", 100);
2878+
tlib_pass_if_str_equal("error.file", "error.file",
2879+
segment.error->error_file);
2880+
tlib_pass_if_int_equal("error.line", 125,
2881+
segment.error->error_line);
2882+
28712883
nr_segment_destroy_fields(&segment);
28722884
}
28732885

axiom/tests/test_txn.c

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8098,6 +8098,126 @@ static void test_segment_record_error(void) {
80988098
nr_txn_destroy(&txn);
80998099
}
81008100

8101+
static void test_segment_record_error_with_additional_params(void) {
8102+
nrapp_t app = {
8103+
.state = NR_APP_OK,
8104+
.limits = {
8105+
.analytics_events = NR_MAX_ANALYTIC_EVENTS,
8106+
.span_events = NR_DEFAULT_SPAN_EVENTS_MAX_SAMPLES_STORED,
8107+
},
8108+
};
8109+
nrtxnopt_t opts;
8110+
nr_segment_t* segment;
8111+
nrtxn_t* txn;
8112+
8113+
/* Setup transaction and segment */
8114+
nr_memset(&opts, 0, sizeof(opts));
8115+
opts.distributed_tracing_enabled = 1;
8116+
opts.span_events_enabled = 1;
8117+
txn = nr_txn_begin(&app, &opts, NULL);
8118+
segment = nr_segment_start(txn, NULL, NULL);
8119+
nr_distributed_trace_set_sampled(txn->distributed_trace, true);
8120+
txn->options.allow_raw_exception_messages = 1;
8121+
8122+
/* No error attributes added if error collection isn't enabled */
8123+
txn->options.err_enabled = 0;
8124+
nr_txn_record_error_with_additional_attributes(
8125+
txn, 1, true, "low priority message", "low priority class", "random.php",
8126+
150, "random context", 256, "[\"A\",\"B\"]");
8127+
tlib_pass_if_null("No segment error created", segment->error);
8128+
txn->options.err_enabled = 1;
8129+
8130+
/* Do not add to current segment */
8131+
nr_txn_record_error_with_additional_attributes(txn, 0.5, false,
8132+
"low priority message", "low priority class", "random php", 150, "random context", 256, "[\"A\",\"B\"]");
8133+
tlib_pass_if_not_null("Txn error event created", txn->error);
8134+
tlib_pass_if_null("Segment error NOT created", segment->error);
8135+
tlib_pass_if_str_equal("Correct txn error.message", "low priority message",
8136+
nr_error_get_message(txn->error));
8137+
tlib_pass_if_str_equal("Correct txn error.class", "low priority class",
8138+
nr_error_get_klass(txn->error));
8139+
8140+
/* Normal operation: txn error prioritized over previous */
8141+
nr_txn_record_error_with_additional_attributes(
8142+
txn, 1, true, "random message", "random class", "random.php",
8143+
150, "random context", 256, "[\"A\",\"B\"]");
8144+
tlib_pass_if_not_null("Txn error event created", txn->error);
8145+
tlib_pass_if_not_null("Segment error created", segment->error);
8146+
tlib_pass_if_str_equal("Correct segment error.message", "random message",
8147+
segment->error->error_message);
8148+
tlib_pass_if_str_equal("Correct segment error.class", "random class",
8149+
segment->error->error_class);
8150+
tlib_pass_if_str_equal("Correct segment error.file", "random.php",
8151+
segment->error->error_file);
8152+
tlib_pass_if_int_equal("Correct segment error.line", 150,
8153+
segment->error->error_line);
8154+
tlib_pass_if_str_equal("Correct segment error.context", "random context",
8155+
segment->error->error_context);
8156+
tlib_pass_if_int_equal("Correct segment error.no", 256,
8157+
segment->error->error_no);
8158+
tlib_pass_if_str_equal("txn error message matches segment error message",
8159+
segment->error->error_message,
8160+
nr_error_get_message(txn->error));
8161+
tlib_pass_if_str_equal("txn error class matches segment error class",
8162+
segment->error->error_class,
8163+
nr_error_get_klass(txn->error));
8164+
8165+
/* Multiple errors on the same segment */
8166+
nr_txn_record_error_with_additional_attributes(
8167+
txn, 1, true, "random message 2", "random class 2", "random.php2",
8168+
150, "random context2", 256, "[\"A\",\"B\"]");
8169+
8170+
tlib_pass_if_str_equal("Segment error.message overwritten", "random message 2",
8171+
segment->error->error_message);
8172+
tlib_pass_if_str_equal("Segment error.class overwritten", "random class 2",
8173+
segment->error->error_class);
8174+
tlib_pass_if_str_equal("txn error message matches segment error message",
8175+
segment->error->error_message,
8176+
nr_error_get_message(txn->error));
8177+
tlib_pass_if_str_equal("txn error class matches segment error class",
8178+
segment->error->error_class,
8179+
nr_error_get_klass(txn->error));
8180+
8181+
/* High_security */
8182+
txn->high_security = 1;
8183+
nr_txn_record_error_with_additional_attributes(
8184+
txn, 1, true, "secure message", "random class", "random.php",
8185+
150, "random context", 256, "[\"A\",\"B\"]");
8186+
tlib_pass_if_not_null("Segment error created", segment->error);
8187+
tlib_pass_if_str_equal("Secure error.message",
8188+
NR_TXN_HIGH_SECURITY_ERROR_MESSAGE,
8189+
segment->error->error_message);
8190+
tlib_pass_if_str_equal("Correct segment error class", "random class",
8191+
segment->error->error_class);
8192+
tlib_pass_if_str_equal("txn error message matches segment error message",
8193+
segment->error->error_message,
8194+
nr_error_get_message(txn->error));
8195+
tlib_pass_if_str_equal("txn error class matches segment error class",
8196+
segment->error->error_class,
8197+
nr_error_get_klass(txn->error));
8198+
txn->high_security = 0;
8199+
8200+
/* allow_raw_exception_messages */
8201+
txn->options.allow_raw_exception_messages = 0;
8202+
nr_txn_record_error_with_additional_attributes(
8203+
txn, 1, true, "another secure message", "another random class", "random.php",
8204+
150, "random context", 256, "[\"A\",\"B\"]");
8205+
tlib_pass_if_not_null("Segment error created", segment->error);
8206+
tlib_pass_if_str_equal("Secure error message",
8207+
NR_TXN_ALLOW_RAW_EXCEPTION_MESSAGE,
8208+
segment->error->error_message);
8209+
tlib_pass_if_str_equal("Correct segment error.class", "another random class",
8210+
segment->error->error_class);
8211+
tlib_pass_if_str_equal("txn error message matches segment error message",
8212+
segment->error->error_message,
8213+
nr_error_get_message(txn->error));
8214+
tlib_pass_if_str_equal("txn error class matches segment error class",
8215+
segment->error->error_class,
8216+
nr_error_get_klass(txn->error));
8217+
8218+
nr_txn_destroy(&txn);
8219+
}
8220+
81018221
static nrtxn_t* new_txn_for_record_log_event_test(char* entity_name) {
81028222
nrapp_t app;
81038223
nrtxnopt_t opts;
@@ -8685,6 +8805,7 @@ void test_main(void* p NRUNUSED) {
86858805
test_txn_accept_distributed_trace_payload_w3c_and_nr();
86868806
test_span_queue();
86878807
test_segment_record_error();
8808+
test_segment_record_error_with_additional_params();
86888809
test_log_level_verify();
86898810
test_record_log_event();
86908811
test_txn_log_configuration();

0 commit comments

Comments
 (0)