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