Add validation of db before and after modification
Add various consistency checks of the database:
- no duplicate extension SDKs
- no duplicate module requirements in one SDK
- no version requirements "moving backwards"
..with associated tests.
Also add verification of the checked in database to presubmit tests
(the build of the binarypb should also fail).
Bug: 173188089
Test: atest gen_sdk_test
Change-Id: I10436cdde1e8829065d77be53d5f10b7264a5a58
diff --git a/gen_sdk/gen_sdk_test.sh b/gen_sdk/gen_sdk_test.sh
index 80e21ca..bdf35b7 100644
--- a/gen_sdk/gen_sdk_test.sh
+++ b/gen_sdk/gen_sdk_test.sh
@@ -42,3 +42,41 @@
diff -u0 testdata/test_extensions_db.textpb extensions_db.textpb
}
test_new_sdk
+
+# Verifies the tool won't allow bogus SDK updates
+function test_validate() {
+ set +e
+
+ rm -f extensions_db.textpb && echo bogus > extensions_db.textpb
+ if gen_sdk --action validate; then
+ echo "expected validate to fail on bogus db"
+ exit 1
+ fi
+
+ rm -f extensions_db.textpb && touch extensions_db.textpb
+ gen_sdk --action new_sdk --sdk 1 --modules MEDIA_PROVIDER
+ if gen_sdk --action new_sdk --sdk 1 --modules SDK_EXTENSIONS; then
+ echo "FAILED: expected duplicate sdk numbers to fail"
+ echo "DB:"
+ cat extensions_db.textpb
+ exit 1
+ fi
+
+ if gen_sdk --action validate --database testdata/dupe_req.textpb; then
+ echo "FAILED: expected duplicate module in one sdk level to fail"
+ exit 1
+ fi
+
+ if gen_sdk --action validate --database testdata/backward_req.textpb; then
+ echo "FAILED: expect version requirement going backward to fail"
+ exit 1
+ fi
+
+ set -e
+}
+test_validate
+
+function test_checked_in_db() {
+ gen_sdk --action validate --database extensions_db.textpb
+}
+test_checked_in_db