Make authfs tests independent of BuildManifest.apk

Inkeeping with the Fourth of July festivities, let's declare the authfs
tests independent of the details of the device build. In particular,
stop depending on BuildManifest.apk for the fsverity manifest file and
instead provide a manifest just for the tests.

The manifest is generated with the help of fsverity_manifest_generator
and covers the input.4k, input.4k1 and input.4m files and is included in
the MicrodroidTestApk assets to make it available to fsverity within
Microdroid.

This will allow us more flexibility to change both the tests and the
device build without one getting in the way of the other.

Bug: 237384936
Test: atest AuthFsHostTest
Change-Id: I75fef499bcfbf0eaa530ecfeb241cacfb3f695f0
diff --git a/authfs/Android.bp b/authfs/Android.bp
index 84eb0f4..40643b8 100644
--- a/authfs/Android.bp
+++ b/authfs/Android.bp
@@ -65,3 +65,32 @@
         "testdata/input.4m.fsv_meta.bad_merkle",
     ],
 }
+
+java_genrule {
+    name: "authfs_test_apk_assets",
+    out: ["authfs_test_apk_assets.jar"],
+    tools: [
+        "fsverity_manifest_generator",
+        "fsverity",
+    ],
+    srcs: [
+        "testdata/input.4k",
+        "testdata/input.4k1",
+        "testdata/input.4m",
+    ],
+    /*
+     * Create a JAR file with an assets directory that can merge into the
+     * assets of an APK that depends on it in static_libs. Use this mechanism
+     * to load a generated fsverity manifest for the test input files into the
+     * test VM.
+     */
+    cmd: "out_dir=$$(dirname $(out))" +
+        "&& assets_dir=\"assets\" " +
+        "&& mkdir -p $$out_dir/$$assets_dir" +
+        "&& $(location fsverity_manifest_generator) " +
+        "    --fsverity-path $(location fsverity) " +
+        "    --base-dir $$(dirname $(in) | head -1) " +
+        "    --output $$out_dir/$$assets_dir/input_manifest.pb " +
+        "    $(in) " +
+        "&& jar cf $(out) -C $$out_dir $$assets_dir",
+}