Skip to content

Commit addcdec

Browse files
hahuja2mfulb
authored andcommitted
chore(axiom): add unit tests
1 parent e4e0491 commit addcdec

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
@@ -8134,6 +8134,126 @@ static void test_segment_record_error(void) {
81348134
nr_txn_destroy(&txn);
81358135
}
81368136

8137+
static void test_segment_record_error_with_additional_params(void) {
8138+
nrapp_t app = {
8139+
.state = NR_APP_OK,
8140+
.limits = {
8141+
.analytics_events = NR_MAX_ANALYTIC_EVENTS,
8142+
.span_events = NR_DEFAULT_SPAN_EVENTS_MAX_SAMPLES_STORED,
8143+
},
8144+
};
8145+
nrtxnopt_t opts;
8146+
nr_segment_t* segment;
8147+
nrtxn_t* txn;
8148+
8149+
/* Setup transaction and segment */
8150+
nr_memset(&opts, 0, sizeof(opts));
8151+
opts.distributed_tracing_enabled = 1;
8152+
opts.span_events_enabled = 1;
8153+
txn = nr_txn_begin(&app, &opts, NULL);
8154+
segment = nr_segment_start(txn, NULL, NULL);
8155+
nr_distributed_trace_set_sampled(txn->distributed_trace, true);
8156+
txn->options.allow_raw_exception_messages = 1;
8157+
8158+
/* No error attributes added if error collection isn't enabled */
8159+
txn->options.err_enabled = 0;
8160+
nr_txn_record_error_with_additional_attributes(
8161+
txn, 1, true, "low priority message", "low priority class", "random.php",
8162+
150, "random context", 256, "[\"A\",\"B\"]");
8163+
tlib_pass_if_null("No segment error created", segment->error);
8164+
txn->options.err_enabled = 1;
8165+
8166+
/* Do not add to current segment */
8167+
nr_txn_record_error_with_additional_attributes(txn, 0.5, false,
8168+
"low priority message", "low priority class", "random php", 150, "random context", 256, "[\"A\",\"B\"]");
8169+
tlib_pass_if_not_null("Txn error event created", txn->error);
8170+
tlib_pass_if_null("Segment error NOT created", segment->error);
8171+
tlib_pass_if_str_equal("Correct txn error.message", "low priority message",
8172+
nr_error_get_message(txn->error));
8173+
tlib_pass_if_str_equal("Correct txn error.class", "low priority class",
8174+
nr_error_get_klass(txn->error));
8175+
8176+
/* Normal operation: txn error prioritized over previous */
8177+
nr_txn_record_error_with_additional_attributes(
8178+
txn, 1, true, "random message", "random class", "random.php",
8179+
150, "random context", 256, "[\"A\",\"B\"]");
8180+
tlib_pass_if_not_null("Txn error event created", txn->error);
8181+
tlib_pass_if_not_null("Segment error created", segment->error);
8182+
tlib_pass_if_str_equal("Correct segment error.message", "random message",
8183+
segment->error->error_message);
8184+
tlib_pass_if_str_equal("Correct segment error.class", "random class",
8185+
segment->error->error_class);
8186+
tlib_pass_if_str_equal("Correct segment error.file", "random.php",
8187+
segment->error->error_file);
8188+
tlib_pass_if_int_equal("Correct segment error.line", 150,
8189+
segment->error->error_line);
8190+
tlib_pass_if_str_equal("Correct segment error.context", "random context",
8191+
segment->error->error_context);
8192+
tlib_pass_if_int_equal("Correct segment error.no", 256,
8193+
segment->error->error_no);
8194+
tlib_pass_if_str_equal("txn error message matches segment error message",
8195+
segment->error->error_message,
8196+
nr_error_get_message(txn->error));
8197+
tlib_pass_if_str_equal("txn error class matches segment error class",
8198+
segment->error->error_class,
8199+
nr_error_get_klass(txn->error));
8200+
8201+
/* Multiple errors on the same segment */
8202+
nr_txn_record_error_with_additional_attributes(
8203+
txn, 1, true, "random message 2", "random class 2", "random.php2",
8204+
150, "random context2", 256, "[\"A\",\"B\"]");
8205+
8206+
tlib_pass_if_str_equal("Segment error.message overwritten", "random message 2",
8207+
segment->error->error_message);
8208+
tlib_pass_if_str_equal("Segment error.class overwritten", "random class 2",
8209+
segment->error->error_class);
8210+
tlib_pass_if_str_equal("txn error message matches segment error message",
8211+
segment->error->error_message,
8212+
nr_error_get_message(txn->error));
8213+
tlib_pass_if_str_equal("txn error class matches segment error class",
8214+
segment->error->error_class,
8215+
nr_error_get_klass(txn->error));
8216+
8217+
/* High_security */
8218+
txn->high_security = 1;
8219+
nr_txn_record_error_with_additional_attributes(
8220+
txn, 1, true, "secure message", "random class", "random.php",
8221+
150, "random context", 256, "[\"A\",\"B\"]");
8222+
tlib_pass_if_not_null("Segment error created", segment->error);
8223+
tlib_pass_if_str_equal("Secure error.message",
8224+
NR_TXN_HIGH_SECURITY_ERROR_MESSAGE,
8225+
segment->error->error_message);
8226+
tlib_pass_if_str_equal("Correct segment error class", "random class",
8227+
segment->error->error_class);
8228+
tlib_pass_if_str_equal("txn error message matches segment error message",
8229+
segment->error->error_message,
8230+
nr_error_get_message(txn->error));
8231+
tlib_pass_if_str_equal("txn error class matches segment error class",
8232+
segment->error->error_class,
8233+
nr_error_get_klass(txn->error));
8234+
txn->high_security = 0;
8235+
8236+
/* allow_raw_exception_messages */
8237+
txn->options.allow_raw_exception_messages = 0;
8238+
nr_txn_record_error_with_additional_attributes(
8239+
txn, 1, true, "another secure message", "another random class", "random.php",
8240+
150, "random context", 256, "[\"A\",\"B\"]");
8241+
tlib_pass_if_not_null("Segment error created", segment->error);
8242+
tlib_pass_if_str_equal("Secure error message",
8243+
NR_TXN_ALLOW_RAW_EXCEPTION_MESSAGE,
8244+
segment->error->error_message);
8245+
tlib_pass_if_str_equal("Correct segment error.class", "another random class",
8246+
segment->error->error_class);
8247+
tlib_pass_if_str_equal("txn error message matches segment error message",
8248+
segment->error->error_message,
8249+
nr_error_get_message(txn->error));
8250+
tlib_pass_if_str_equal("txn error class matches segment error class",
8251+
segment->error->error_class,
8252+
nr_error_get_klass(txn->error));
8253+
8254+
nr_txn_destroy(&txn);
8255+
}
8256+
81378257
static nrtxn_t* new_txn_for_record_log_event_test(char* entity_name) {
81388258
nrapp_t app;
81398259
nrtxnopt_t opts;
@@ -8721,6 +8841,7 @@ void test_main(void* p NRUNUSED) {
87218841
test_txn_accept_distributed_trace_payload_w3c_and_nr();
87228842
test_span_queue();
87238843
test_segment_record_error();
8844+
test_segment_record_error_with_additional_params();
87248845
test_log_level_verify();
87258846
test_record_log_event();
87268847
test_txn_log_configuration();

0 commit comments

Comments
 (0)