cc_teec/common/
vsock_define.rs1#![allow(dead_code)]
6
7use std::env;
8
9pub const DEFAULT_VSOCK_SERVER_CID: u32 = 103;
11
12pub const DEFAULT_VSOCK_PORT: u32 = 9999;
14
15pub fn get_vsock_cid() -> u32 {
26 env::var("VSOCK_CID")
27 .ok()
28 .and_then(|s| s.parse().ok())
29 .unwrap_or(DEFAULT_VSOCK_SERVER_CID)
30}
31
32pub fn get_vsock_port() -> u32 {
43 env::var("VSOCK_PORT")
44 .ok()
45 .and_then(|s| s.parse().ok())
46 .unwrap_or(DEFAULT_VSOCK_PORT)
47}
48
49#[cfg(test)]
50mod tests {
51 use super::*;
52 use std::env;
53
54 #[test]
55 fn test_default_vsock_cid() {
56 unsafe { env::remove_var("VSOCK_CID") };
59 let cid = get_vsock_cid();
60 assert_eq!(
61 cid, DEFAULT_VSOCK_SERVER_CID,
62 "默认 CID 应该为 {}",
63 DEFAULT_VSOCK_SERVER_CID
64 );
65 }
66
67 #[test]
68 fn test_default_vsock_port() {
69 unsafe { env::remove_var("VSOCK_PORT") };
72 let port = get_vsock_port();
73 assert_eq!(
74 port, DEFAULT_VSOCK_PORT,
75 "默认 Port 应该为 {}",
76 DEFAULT_VSOCK_PORT
77 );
78 }
79
80 #[test]
81 fn test_custom_vsock_cid() {
82 let old_value = env::var("VSOCK_CID").ok();
84
85 unsafe { env::set_var("VSOCK_CID", "200") };
88 let cid = get_vsock_cid();
89 assert_eq!(cid, 200, "自定义 CID 应该为 200");
90
91 match old_value {
93 Some(val) => unsafe { env::set_var("VSOCK_CID", val) },
94 None => unsafe { env::remove_var("VSOCK_CID") },
95 }
96 }
97
98 #[test]
99 fn test_custom_vsock_port() {
100 let old_value = env::var("VSOCK_PORT").ok();
102
103 unsafe { env::set_var("VSOCK_PORT", "8888") };
106 let port = get_vsock_port();
107 assert_eq!(port, 8888, "自定义 Port 应该为 8888");
108
109 match old_value {
111 Some(val) => unsafe { env::set_var("VSOCK_PORT", val) },
112 None => unsafe { env::remove_var("VSOCK_PORT") },
113 }
114 }
115
116 #[test]
117 fn test_invalid_vsock_cid() {
118 let old_value = env::var("VSOCK_CID").ok();
120
121 unsafe { env::set_var("VSOCK_CID", "invalid") };
124 let cid = get_vsock_cid();
125 assert_eq!(cid, DEFAULT_VSOCK_SERVER_CID, "无效 CID 应该回退到默认值");
126
127 match old_value {
129 Some(val) => unsafe { env::set_var("VSOCK_CID", val) },
130 None => unsafe { env::remove_var("VSOCK_CID") },
131 }
132 }
133
134 #[test]
135 fn test_invalid_vsock_port() {
136 let old_value = env::var("VSOCK_PORT").ok();
138
139 unsafe { env::set_var("VSOCK_PORT", "not_a_number") };
142 let port = get_vsock_port();
143 assert_eq!(port, DEFAULT_VSOCK_PORT, "无效 Port 应该回退到默认值");
144
145 match old_value {
147 Some(val) => unsafe { env::set_var("VSOCK_PORT", val) },
148 None => unsafe { env::remove_var("VSOCK_PORT") },
149 }
150 }
151}