1 /*
2 * Copyright (C) 2023 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 extern crate hitracechain;
17
18 use hitracechain::HiTraceFlag as HiTraceFlag;
19
20 const HITRACE_ID_PERSIST_ARR_LEN: usize = 16;
21
22 #[test]
hitracechain_rust_unit_test_001()23 fn hitracechain_rust_unit_test_001() {
24 let trace_id = hitracechain::begin!("hitracechain_rust_unit_test_001", HiTraceFlag::Default);
25 assert!(hitracechain::get_id().get_chain_id() == trace_id.get_chain_id());
26 assert!(hitracechain::get_id().is_valid());
27 hitracechain::end(&trace_id);
28 assert!(!hitracechain::get_id().is_valid());
29 }
30
31 #[test]
hitracechain_rust_unit_test_002()32 fn hitracechain_rust_unit_test_002() {
33 let mut trace_id = hitracechain::begin!("hitracechain_rust_unit_test_002", HiTraceFlag::IncludeAsync);
34 assert!(trace_id.is_flag_enabled(HiTraceFlag::IncludeAsync));
35 assert!(!trace_id.is_flag_enabled(HiTraceFlag::DoNotCreateSpan));
36 trace_id.enable_flag(HiTraceFlag::DoNotCreateSpan);
37 assert!(trace_id.is_flag_enabled(HiTraceFlag::DoNotCreateSpan));
38 hitracechain::end(&trace_id);
39 }
40
41 #[test]
hitracechain_rust_unit_test_003()42 fn hitracechain_rust_unit_test_003() {
43 let mut trace_id = hitracechain::begin!("hitracechain_rust_unit_test_003", HiTraceFlag::Default);
44 assert!(trace_id.is_valid());
45 trace_id.set_flags(HiTraceFlag::IncludeAsync | HiTraceFlag::TpInfo);
46 assert!(trace_id.get_flags() == (HiTraceFlag::IncludeAsync | HiTraceFlag::TpInfo));
47 trace_id.set_chain_id(1024u64);
48 assert!(trace_id.get_chain_id() == 1024u64);
49 trace_id.set_span_id(1025u64);
50 assert!(trace_id.get_span_id() == 1025u64);
51 trace_id.set_parent_span_id(1026u64);
52 assert!(trace_id.get_parent_span_id() == 1026u64);
53 hitracechain::end(&trace_id);
54 }
55
56 #[test]
hitracechain_rust_unit_test_004()57 fn hitracechain_rust_unit_test_004() {
58 let mut trace_id = hitracechain::begin!("hitracechain_rust_unit_test_004", HiTraceFlag::Default);
59 assert!(trace_id.is_valid());
60 hitracechain::clear_id();
61 trace_id = hitracechain::get_id();
62 assert!(!trace_id.is_valid());
63 }
64
65 #[test]
hitracechain_rust_unit_test_005()66 fn hitracechain_rust_unit_test_005() {
67 let trace_id = hitracechain::begin!("hitracechain_rust_unit_test_005", HiTraceFlag::Default);
68 assert!(trace_id.is_valid());
69 let trace_span_id = hitracechain::create_span();
70 assert!(trace_span_id.is_valid());
71 assert!(trace_span_id.get_parent_span_id() == trace_id.get_span_id());
72 hitracechain::end(&trace_id);
73 }
74
75 #[test]
hitracechain_rust_unit_test_006()76 fn hitracechain_rust_unit_test_006() {
77 let trace_id = hitracechain::begin!("hitracechain_rust_unit_test_006", HiTraceFlag::Default);
78 let mut persist_dest_arr = [0u8; HITRACE_ID_PERSIST_ARR_LEN];
79 hitracechain::id_to_bytes(&trace_id, &mut persist_dest_arr);
80 let trace_id_from_arr = hitracechain::bytes_to_id(&persist_dest_arr);
81 assert!(trace_id_from_arr.get_chain_id() == trace_id.get_chain_id());
82 hitracechain::end(&trace_id);
83 }
84
85 #[test]
hitracechain_rust_unit_test_007()86 fn hitracechain_rust_unit_test_007() {
87 let trace_id = hitracechain::begin!("hitracechain_rust_unit_test_007",
88 HiTraceFlag::IncludeAsync | HiTraceFlag::TpInfo);
89 hitracechain::tracepoint!(hitracechain::HiTraceCommunicationMode::Default,
90 hitracechain::HiTraceTracepointType::Cs,
91 &trace_id,
92 "chain id of current trace is {:#x}, span id is {:#x}, parent span id is {:#x}",
93 trace_id.get_chain_id(),
94 trace_id.get_span_id(),
95 trace_id.get_parent_span_id());
96 hitracechain::end(&trace_id);
97 }