This is an automated email from the ASF dual-hosted git repository.

yuanz pushed a commit to branch main
in repository 
https://gitbox.apache.org/repos/asf/incubator-teaclave-trustzone-sdk.git


The following commit(s) were added to refs/heads/main by this push:
     new bc14fb6  Change the output formation of ToString method of Uuid
bc14fb6 is described below

commit bc14fb63f65bfff77456eea1b9097c1619d30b04
Author: ivila <[email protected]>
AuthorDate: Fri Nov 29 11:01:42 2024 +0800

    Change the output formation of ToString method of Uuid
    
    1) change the realization of Display trait of Uuid, make its formation
       const of 36 bytes.
    2) introduce an env(SYS_BUILD_TYPE) in optee-utee-sys and optee-teec-sys
       so that developers can run unit tests on host machine(even x86)
    3) add unit tests to ci
    
    Signed-off-by: ivila <[email protected]>
    Acked-by: Yuan Zhuang <[email protected]>
    Reviewed-by: Sumit Garg <[email protected]>
---
 .github/workflows/ci.yml           |  4 ++++
 optee-teec/optee-teec-sys/build.rs | 15 +++++++++++++++
 optee-teec/src/uuid.rs             | 25 +++++++++++++++++++++++--
 optee-utee/optee-utee-sys/build.rs | 16 ++++++++++++++++
 optee-utee/src/uuid.rs             | 27 +++++++++++++++++++++++++--
 5 files changed, 83 insertions(+), 4 deletions(-)

diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 3bd0747..8346633 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -45,6 +45,10 @@ jobs:
           export OPTEE_DIR=$HOME
           source environment
 
+          # Run unit tests
+          (cd optee-utee && SYS_BUILD_TYPE=unit_test cargo test --lib 
--features no_panic_handler -vv)
+          (cd optee-teec && SYS_BUILD_TYPE=unit_test cargo test --lib -vv)
+
           # Build Rust optee-utee and optee-teec
           (cd optee-utee && cargo build --target aarch64-unknown-linux-gnu -vv)
           (cd optee-teec && cargo build --target aarch64-unknown-linux-gnu -vv)
diff --git a/optee-teec/optee-teec-sys/build.rs 
b/optee-teec/optee-teec-sys/build.rs
index 8e822bb..c2e406e 100644
--- a/optee-teec/optee-teec-sys/build.rs
+++ b/optee-teec/optee-teec-sys/build.rs
@@ -19,6 +19,21 @@ use std::env;
 use std::path::Path;
 
 fn main() {
+    const ENV_SYS_BUILD_TYPE: &str = "SYS_BUILD_TYPE";
+    println!("cargo:rerun-if-env-changed={}", ENV_SYS_BUILD_TYPE);
+
+    let build_type = 
env::var(ENV_SYS_BUILD_TYPE).unwrap_or(String::from("")).to_lowercase();
+    match build_type.as_str() {
+        "unit_test" => unit_test_build(),
+        _ => production_build(),
+    }
+}
+
+// this allow developers to run unit tests in host machine(even x86)
+fn unit_test_build() {
+}
+
+fn production_build() {
     let optee_client_dir = 
env::var("OPTEE_CLIENT_EXPORT").expect("OPTEE_CLIENT_EXPORT is not set");
     let search_path = Path::new(&optee_client_dir).join("usr/lib");
     println!("cargo:rustc-link-search={}", search_path.display());
diff --git a/optee-teec/src/uuid.rs b/optee-teec/src/uuid.rs
index 4d21b03..2939fc6 100644
--- a/optee-teec/src/uuid.rs
+++ b/optee-teec/src/uuid.rs
@@ -106,11 +106,32 @@ impl fmt::Display for Uuid {
     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
         write!(
             f,
-            "{:x}-{:x}-{:x}-{}",
+            "{:08x}-{:04x}-{:04x}-{}-{}",
             self.raw.timeLow,
             self.raw.timeMid,
             self.raw.timeHiAndVersion,
-            hex::encode(self.raw.clockSeqAndNode)
+            hex::encode(&self.raw.clockSeqAndNode[0..2]),
+            hex::encode(&self.raw.clockSeqAndNode[2..8]),
         )
     }
 }
+
+#[cfg(test)]
+mod tests {
+    use super::Uuid;
+
+    #[test]
+    fn test_to_string() {
+        let uuids = [
+            "00173366-2aca-49bc-beb7-10c975e6131e", // uuid with timeLow 
leading zeros
+            "11173366-0aca-49bc-beb7-10c975e6131e", // uuid with timeMid 
leading zeros
+            "11173366-2aca-09bc-beb7-10c975e6131e", // uuid with 
timeHiAndVersion leading zeros
+            "11173366-2aca-19bc-beb7-10c975e6131e", // random uuid
+        ];
+        for origin in uuids.iter() {
+            let uuid = Uuid::parse_str(origin).unwrap();
+            let formatted = uuid.to_string();
+            assert_eq!(origin, &formatted);
+        }
+    }
+}
diff --git a/optee-utee/optee-utee-sys/build.rs 
b/optee-utee/optee-utee-sys/build.rs
index a59da9a..5a7233d 100644
--- a/optee-utee/optee-utee-sys/build.rs
+++ b/optee-utee/optee-utee-sys/build.rs
@@ -19,6 +19,22 @@ use std::env;
 use std::path::Path;
 
 fn main() {
+    const ENV_SYS_BUILD_TYPE: &str = "SYS_BUILD_TYPE";
+    println!("cargo:rerun-if-env-changed={}", ENV_SYS_BUILD_TYPE);
+
+    let build_type = 
env::var(ENV_SYS_BUILD_TYPE).unwrap_or(String::from("")).to_lowercase();
+    match build_type.as_str() {
+        "unit_test" => unit_test_build(),
+        _ => production_build(),
+    }
+}
+
+// this allow developers to run unit tests in host machine by
+// SYS_BUILD_TYPE=unit_test cargo test --lib --features no_panic_handler
+fn unit_test_build() {
+}
+
+fn production_build() {
     let optee_os_dir = env::var("TA_DEV_KIT_DIR").unwrap();
     let search_path = Path::new(&optee_os_dir).join("lib");
 
diff --git a/optee-utee/src/uuid.rs b/optee-utee/src/uuid.rs
index c629a98..64527f7 100644
--- a/optee-utee/src/uuid.rs
+++ b/optee-utee/src/uuid.rs
@@ -105,11 +105,34 @@ impl fmt::Display for Uuid {
     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
         write!(
             f,
-            "{:x}-{:x}-{:x}-{}",
+            "{:08x}-{:04x}-{:04x}-{}-{}",
             self.raw.timeLow,
             self.raw.timeMid,
             self.raw.timeHiAndVersion,
-            hex::encode(self.raw.clockSeqAndNode)
+            hex::encode(&self.raw.clockSeqAndNode[0..2]),
+            hex::encode(&self.raw.clockSeqAndNode[2..8]),
         )
     }
 }
+
+#[cfg(test)]
+mod tests {
+    extern crate alloc;
+    use super::*;
+    use alloc::string::ToString;
+
+    #[test]
+    fn test_to_string() {
+        let uuids = [
+            "00173366-2aca-49bc-beb7-10c975e6131e", // uuid with timeLow 
leading zeros
+            "11173366-0aca-49bc-beb7-10c975e6131e", // uuid with timeMid 
leading zeros
+            "11173366-2aca-09bc-beb7-10c975e6131e", // uuid with 
timeHiAndVersion leading zeros
+            "11173366-2aca-19bc-beb7-10c975e6131e", // random uuid
+        ];
+        for origin in uuids.iter() {
+            let uuid = Uuid::parse_str(origin).unwrap();
+            let formatted = uuid.to_string();
+            assert_eq!(origin, &formatted);
+        }
+    }
+}


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to