xref: /aosp_15_r20/system/logging/rust/tests/structured_logging_tests.rs (revision 598139dc91b21518d67c408eaea2644226490971)
1*598139dcSAndroid Build Coastguard Worker // Copyright 2024, The Android Open Source Project
2*598139dcSAndroid Build Coastguard Worker //
3*598139dcSAndroid Build Coastguard Worker // Licensed under the Apache License, Version 2.0 (the "License");
4*598139dcSAndroid Build Coastguard Worker // you may not use this file except in compliance with the License.
5*598139dcSAndroid Build Coastguard Worker // You may obtain a copy of the License at
6*598139dcSAndroid Build Coastguard Worker //
7*598139dcSAndroid Build Coastguard Worker //     http://www.apache.org/licenses/LICENSE-2.0
8*598139dcSAndroid Build Coastguard Worker //
9*598139dcSAndroid Build Coastguard Worker // Unless required by applicable law or agreed to in writing, software
10*598139dcSAndroid Build Coastguard Worker // distributed under the License is distributed on an "AS IS" BASIS,
11*598139dcSAndroid Build Coastguard Worker // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*598139dcSAndroid Build Coastguard Worker // See the License for the specific language governing permissions and
13*598139dcSAndroid Build Coastguard Worker // limitations under the License.
14*598139dcSAndroid Build Coastguard Worker 
15*598139dcSAndroid Build Coastguard Worker //! Rust structured logging API integration tests.
16*598139dcSAndroid Build Coastguard Worker use structured_log::structured_log;
17*598139dcSAndroid Build Coastguard Worker use structured_log::StructuredLogSection::SubsectionEnd;
18*598139dcSAndroid Build Coastguard Worker use structured_log::StructuredLogSection::SubsectionStart;
19*598139dcSAndroid Build Coastguard Worker use structured_log::LOG_ID_EVENTS;
20*598139dcSAndroid Build Coastguard Worker 
21*598139dcSAndroid Build Coastguard Worker const TAG_KEY_SAMPLE: u32 = 0x12345;
22*598139dcSAndroid Build Coastguard Worker 
23*598139dcSAndroid Build Coastguard Worker #[test]
log_i32()24*598139dcSAndroid Build Coastguard Worker fn log_i32() {
25*598139dcSAndroid Build Coastguard Worker     let res = structured_log!(TAG_KEY_SAMPLE, 5i32);
26*598139dcSAndroid Build Coastguard Worker     assert_eq!(res, Ok(()));
27*598139dcSAndroid Build Coastguard Worker }
28*598139dcSAndroid Build Coastguard Worker 
29*598139dcSAndroid Build Coastguard Worker #[test]
log_i64()30*598139dcSAndroid Build Coastguard Worker fn log_i64() {
31*598139dcSAndroid Build Coastguard Worker     let res = structured_log!(log_id: LOG_ID_EVENTS, TAG_KEY_SAMPLE, 5i64);
32*598139dcSAndroid Build Coastguard Worker     assert_eq!(res, Ok(()));
33*598139dcSAndroid Build Coastguard Worker }
34*598139dcSAndroid Build Coastguard Worker 
35*598139dcSAndroid Build Coastguard Worker #[test]
log_f32()36*598139dcSAndroid Build Coastguard Worker fn log_f32() {
37*598139dcSAndroid Build Coastguard Worker     let res = structured_log!(TAG_KEY_SAMPLE, 5f32);
38*598139dcSAndroid Build Coastguard Worker     assert_eq!(res, Ok(()));
39*598139dcSAndroid Build Coastguard Worker }
40*598139dcSAndroid Build Coastguard Worker 
41*598139dcSAndroid Build Coastguard Worker #[test]
log_str()42*598139dcSAndroid Build Coastguard Worker fn log_str() {
43*598139dcSAndroid Build Coastguard Worker     let res = structured_log!(TAG_KEY_SAMPLE, "test string");
44*598139dcSAndroid Build Coastguard Worker     assert_eq!(res, Ok(()));
45*598139dcSAndroid Build Coastguard Worker }
46*598139dcSAndroid Build Coastguard Worker 
47*598139dcSAndroid Build Coastguard Worker #[test]
log_two_entries()48*598139dcSAndroid Build Coastguard Worker fn log_two_entries() {
49*598139dcSAndroid Build Coastguard Worker     let res = structured_log!(TAG_KEY_SAMPLE, "test message", 10f32);
50*598139dcSAndroid Build Coastguard Worker     assert_eq!(res, Ok(()));
51*598139dcSAndroid Build Coastguard Worker }
52*598139dcSAndroid Build Coastguard Worker 
53*598139dcSAndroid Build Coastguard Worker #[test]
log_multiple_entries()54*598139dcSAndroid Build Coastguard Worker fn log_multiple_entries() {
55*598139dcSAndroid Build Coastguard Worker     let res = structured_log!(TAG_KEY_SAMPLE, "test message", 10f32, 4i32, 4i32, 4i32, 4i32);
56*598139dcSAndroid Build Coastguard Worker     assert_eq!(res, Ok(()));
57*598139dcSAndroid Build Coastguard Worker }
58*598139dcSAndroid Build Coastguard Worker 
59*598139dcSAndroid Build Coastguard Worker #[test]
log_subsection()60*598139dcSAndroid Build Coastguard Worker fn log_subsection() {
61*598139dcSAndroid Build Coastguard Worker     let res = structured_log!(TAG_KEY_SAMPLE, SubsectionStart, "test message", SubsectionEnd);
62*598139dcSAndroid Build Coastguard Worker     assert_eq!(res, Ok(()));
63*598139dcSAndroid Build Coastguard Worker }
64*598139dcSAndroid Build Coastguard Worker 
65*598139dcSAndroid Build Coastguard Worker #[test]
log_subsection_start_end_swapped()66*598139dcSAndroid Build Coastguard Worker fn log_subsection_start_end_swapped() {
67*598139dcSAndroid Build Coastguard Worker     let res = structured_log!(TAG_KEY_SAMPLE, SubsectionEnd, "test message", SubsectionStart);
68*598139dcSAndroid Build Coastguard Worker     assert_eq!(res, Err("unable to log value"));
69*598139dcSAndroid Build Coastguard Worker }
70*598139dcSAndroid Build Coastguard Worker 
71*598139dcSAndroid Build Coastguard Worker #[test]
log_subsection_missing_start()72*598139dcSAndroid Build Coastguard Worker fn log_subsection_missing_start() {
73*598139dcSAndroid Build Coastguard Worker     let res = structured_log!(TAG_KEY_SAMPLE, "test message", SubsectionEnd);
74*598139dcSAndroid Build Coastguard Worker     assert_eq!(res, Err("unable to log value"));
75*598139dcSAndroid Build Coastguard Worker }
76*598139dcSAndroid Build Coastguard Worker 
77*598139dcSAndroid Build Coastguard Worker #[test]
log_subsection_missing_end()78*598139dcSAndroid Build Coastguard Worker fn log_subsection_missing_end() {
79*598139dcSAndroid Build Coastguard Worker     let res = structured_log!(TAG_KEY_SAMPLE, SubsectionStart, "test message");
80*598139dcSAndroid Build Coastguard Worker     assert_eq!(res, Err("unable to write log message"));
81*598139dcSAndroid Build Coastguard Worker }
82*598139dcSAndroid Build Coastguard Worker 
83*598139dcSAndroid Build Coastguard Worker #[test]
log_two_subsection()84*598139dcSAndroid Build Coastguard Worker fn log_two_subsection() {
85*598139dcSAndroid Build Coastguard Worker     let res = structured_log!(
86*598139dcSAndroid Build Coastguard Worker         TAG_KEY_SAMPLE,
87*598139dcSAndroid Build Coastguard Worker         SubsectionStart,
88*598139dcSAndroid Build Coastguard Worker         5i32,
89*598139dcSAndroid Build Coastguard Worker         SubsectionEnd,
90*598139dcSAndroid Build Coastguard Worker         SubsectionStart,
91*598139dcSAndroid Build Coastguard Worker         "test message",
92*598139dcSAndroid Build Coastguard Worker         SubsectionEnd
93*598139dcSAndroid Build Coastguard Worker     );
94*598139dcSAndroid Build Coastguard Worker     assert_eq!(res, Ok(()));
95*598139dcSAndroid Build Coastguard Worker }
96*598139dcSAndroid Build Coastguard Worker 
97*598139dcSAndroid Build Coastguard Worker #[test]
log_simple_entry_and_subsection()98*598139dcSAndroid Build Coastguard Worker fn log_simple_entry_and_subsection() {
99*598139dcSAndroid Build Coastguard Worker     let res = structured_log!(
100*598139dcSAndroid Build Coastguard Worker         TAG_KEY_SAMPLE,
101*598139dcSAndroid Build Coastguard Worker         "test message",
102*598139dcSAndroid Build Coastguard Worker         17i64,
103*598139dcSAndroid Build Coastguard Worker         SubsectionStart,
104*598139dcSAndroid Build Coastguard Worker         10f32,
105*598139dcSAndroid Build Coastguard Worker         SubsectionEnd
106*598139dcSAndroid Build Coastguard Worker     );
107*598139dcSAndroid Build Coastguard Worker     assert_eq!(res, Ok(()));
108*598139dcSAndroid Build Coastguard Worker }
109*598139dcSAndroid Build Coastguard Worker 
110*598139dcSAndroid Build Coastguard Worker #[test]
mixed_subsection()111*598139dcSAndroid Build Coastguard Worker fn mixed_subsection() {
112*598139dcSAndroid Build Coastguard Worker     let res = structured_log!(
113*598139dcSAndroid Build Coastguard Worker         TAG_KEY_SAMPLE,
114*598139dcSAndroid Build Coastguard Worker         SubsectionStart,
115*598139dcSAndroid Build Coastguard Worker         10f32,
116*598139dcSAndroid Build Coastguard Worker         SubsectionStart,
117*598139dcSAndroid Build Coastguard Worker         2i32,
118*598139dcSAndroid Build Coastguard Worker         3i32,
119*598139dcSAndroid Build Coastguard Worker         SubsectionEnd,
120*598139dcSAndroid Build Coastguard Worker         SubsectionStart,
121*598139dcSAndroid Build Coastguard Worker         20i32,
122*598139dcSAndroid Build Coastguard Worker         30i32,
123*598139dcSAndroid Build Coastguard Worker         SubsectionEnd,
124*598139dcSAndroid Build Coastguard Worker         SubsectionEnd
125*598139dcSAndroid Build Coastguard Worker     );
126*598139dcSAndroid Build Coastguard Worker     assert_eq!(res, Ok(()));
127*598139dcSAndroid Build Coastguard Worker }
128