You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Fix print_metric and print_property for is_null values.
Currently, the library will not properly format metrics and/or
properties with the is_null flag being set and NULL values. In either
case, the library still tries to check the value's which_type which
is initiliazed to 0, an invalid value.
The fix is a simple check for is_null and printing an appropriate
message.
Here is the output before the change:
$ ./testing_formatting_null
Add property to set...
Init metric...
Add propertyset to metric...
Adding metric to payload...
-----PAYLOAD BEGIN-----
metrics=[0x556afa369750] (count=1)
metric[0].name=nullMetric [0x556afa369730]
metric[0].datatype=3
metric[0].is_null=1
metric[0].properties.keys=[0x556afa3696b0] (count=1)
metric[0].properties. keys[0]=nullProperty [0x556afa369710]
metric[0].properties.values=[0x556afa3696d0] (count=1)
metric[0].properties.values[0].type=3
metric[0].properties.values[0].is_null=1
metric[0].properties.values[0].invalid which_value=0
metric[0].invalid which_type=0
-----PAYLOAD END-----
Here is the output with the fix:
$ ./testing_formatting_null
Add property to set...
Init metric...
Add propertyset to metric...
Adding metric to payload...
-----PAYLOAD BEGIN-----
metrics=[0x5592e32d0750] (count=1)
metric[0].name=nullMetric [0x5592e32d0730]
metric[0].datatype=3
metric[0].is_null=1
metric[0].properties.keys=[0x5592e32d06b0] (count=1)
metric[0].properties. keys[0]=nullProperty [0x5592e32d0710]
metric[0].properties.values=[0x5592e32d06d0] (count=1)
metric[0].properties.values[0].type=3
metric[0].properties.values[0].is_null=1
-----PAYLOAD END-----
Here is the test application
$ cat testing_formatting_null.cpp
int main(int argc, char **argv)
{
auto payload_out = org_eclipse_tahu_protobuf_Payload(org_eclipse_tahu_protobuf_Payload_init_zero);
auto nullMetric = org_eclipse_tahu_protobuf_Payload_Metric(org_eclipse_tahu_protobuf_Payload_Metric_init_default);
auto nullMetricPropertySet = org_eclipse_tahu_protobuf_Payload_PropertySet(org_eclipse_tahu_protobuf_Payload_PropertySet_init_default);
add_property_to_set(&nullMetricPropertySet, "nullProperty", METRIC_DATA_TYPE_INT32, NULL, 0);
init_metric(&nullMetric, "nullMetric", false, 0, METRIC_DATA_TYPE_INT32, false, false, NULL, 0);
add_propertyset_to_metric(&nullMetric, &nullMetricPropertySet);
add_metric_to_payload(&payload_out, &nullMetric);
print_payload(&payload_out);
return 0;
}
0 commit comments