Add integration test for avmdtool dump
Bug: 239534874
Test: atest avmdtool_tests
Change-Id: I2a4713e23d81cbe482a5b9d1a8c37ec135ca3fb2
diff --git a/TEST_MAPPING b/TEST_MAPPING
index 33498d3..c967473 100644
--- a/TEST_MAPPING
+++ b/TEST_MAPPING
@@ -35,6 +35,9 @@
"path": "packages/modules/Virtualization/apkdmverity"
},
{
+ "path": "packages/modules/Virtualization/avmd"
+ },
+ {
"path": "packages/modules/Virtualization/virtualizationservice"
},
{
diff --git a/avmd/Android.bp b/avmd/Android.bp
index 9f0b28b..b09bed5 100644
--- a/avmd/Android.bp
+++ b/avmd/Android.bp
@@ -22,7 +22,6 @@
rust_binary {
name: "avmdtool",
srcs: ["src/main.rs"],
- required: ["avbtool"],
host_supported: true,
prefer_rlib: true,
rustlibs: [
@@ -36,3 +35,16 @@
"libvbmeta_rust",
],
}
+
+rust_test_host {
+ name: "avmdtool_tests",
+ srcs: ["tests/*_test.rs"],
+ test_suites: ["general-tests"],
+ prefer_rlib: true,
+ data: ["tests/data/*"],
+ data_bins: ["avmdtool"],
+ data_libs: [
+ "libcrypto",
+ "libz",
+ ],
+}
diff --git a/avmd/TEST_MAPPING b/avmd/TEST_MAPPING
new file mode 100644
index 0000000..dd687fe
--- /dev/null
+++ b/avmd/TEST_MAPPING
@@ -0,0 +1,7 @@
+{
+ "presubmit" : [
+ {
+ "name" : "avmdtool_tests"
+ }
+ ]
+}
diff --git a/avmd/tests/avmdtool_test.rs b/avmd/tests/avmdtool_test.rs
new file mode 100644
index 0000000..d93cb6f
--- /dev/null
+++ b/avmd/tests/avmdtool_test.rs
@@ -0,0 +1,34 @@
+// Copyright 2022, The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+//! Tests for avmdtool.
+
+use std::fs;
+use std::process::Command;
+
+#[test]
+fn test_dump() {
+ // test.avmd is generated with
+ // ```
+ // avmdtool create /tmp/test.amvd \
+ // --apex-payload microdroid vbmeta ./libs/apexutil/tests/data/test.apex \
+ // --apk microdroid_manager apk \
+ // ./libs/apkverify/tests/data/v3-only-with-rsa-pkcs1-sha256-4096.apk \
+ // --apk microdroid_manager extra-apk ./libs/apkverify/tests/data/v3-only-with-stamp.apk
+ //```
+ let output =
+ Command::new("./avmdtool").args(["dump", "tests/data/test.avmd"]).output().unwrap();
+ assert!(output.status.success());
+ assert_eq!(output.stdout, fs::read("tests/data/test.avmd.dump").unwrap());
+}
diff --git a/avmd/tests/data/test.avmd b/avmd/tests/data/test.avmd
new file mode 100644
index 0000000..52e634f
--- /dev/null
+++ b/avmd/tests/data/test.avmd
Binary files differ
diff --git a/avmd/tests/data/test.avmd.dump b/avmd/tests/data/test.avmd.dump
new file mode 100644
index 0000000..a63a151
--- /dev/null
+++ b/avmd/tests/data/test.avmd.dump
@@ -0,0 +1,16 @@
+Descriptors:
+ VBMeta descriptor:
+ namespace: microdroid
+ name: vbmeta
+ vbmeta digest: 296e32a76544de9da01713e471403ab4667705ad527bb4f1fac0cf61e7ce122d
+ APK descriptor:
+ namespace: microdroid_manager
+ name: apk
+ Signing algorithm ID: 0x103
+ APK digest: 0df2426ea33aedaf495d88e5be0c6a1663ff0a81c5ed12d5b2929ae4b4300f2f
+ APK descriptor:
+ namespace: microdroid_manager
+ name: extra-apk
+ Signing algorithm ID: 0x201
+ APK digest: 626bb647c0089717a7ffa52fd8e845f9403d5e27f7a5a8752e47b3345fb82f5c
+