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