Create regression test to catch concurrency error

The bottom-up walk to resolve conditions treats "already started" as
"alreay finished".

Bug: 261787132

Test: m compliance_checkshare
Change-Id: Ibb548bd4f5464b47682633878d475dfe011df3e1
This commit is contained in:
Bob Badour
2022-12-18 14:09:06 -08:00
parent 36f4a72aa7
commit 42b02efd05
21 changed files with 404 additions and 0 deletions

View File

@@ -241,6 +241,59 @@ func Test(t *testing.T) {
roots: []string{"lib/libd.so.meta_lic"},
expectedStdout: "PASS",
},
{
condition: "regressconcur",
name: "container",
roots: []string{"container.zip.meta_lic"},
expectedStdout: "FAIL",
expectedOutcomes: outcomeList{
&outcome{
target: "testdata/regressconcur/bin/bin1.meta_lic",
privacyCondition: "proprietary",
shareCondition: "restricted",
},
&outcome{
target: "testdata/regressconcur/bin/bin2.meta_lic",
privacyCondition: "proprietary",
shareCondition: "restricted",
},
&outcome{
target: "testdata/regressconcur/bin/bin3.meta_lic",
privacyCondition: "proprietary",
shareCondition: "restricted",
},
&outcome{
target: "testdata/regressconcur/bin/bin4.meta_lic",
privacyCondition: "proprietary",
shareCondition: "restricted",
},
&outcome{
target: "testdata/regressconcur/bin/bin5.meta_lic",
privacyCondition: "proprietary",
shareCondition: "restricted",
},
&outcome{
target: "testdata/regressconcur/bin/bin6.meta_lic",
privacyCondition: "proprietary",
shareCondition: "restricted",
},
&outcome{
target: "testdata/regressconcur/bin/bin7.meta_lic",
privacyCondition: "proprietary",
shareCondition: "restricted",
},
&outcome{
target: "testdata/regressconcur/bin/bin8.meta_lic",
privacyCondition: "proprietary",
shareCondition: "restricted",
},
&outcome{
target: "testdata/regressconcur/bin/bin9.meta_lic",
privacyCondition: "proprietary",
shareCondition: "restricted",
},
},
},
}
for _, tt := range tests {
t.Run(tt.condition+" "+tt.name, func(t *testing.T) {

View File

@@ -0,0 +1,62 @@
## Start long walks followed by short walks
Detect concurrency error where "already started" treated as
"already finished".
### Testdata build graph structure:
A restricted licensed library sandwiched between a notice library and a notice
binary. The source-code for the libraries only needs to be shared if shipped
alongside the container with the binaries.
```dot
strict digraph {
rankdir=LR;
bin1 [label="bin/bin1.meta_lic\nproprietary"];
bin2 [label="bin/bin2.meta_lic\nproprietary"];
bin3 [label="bin/bin3.meta_lic\nproprietary"];
bin4 [label="bin/bin4.meta_lic\nproprietary"];
bin5 [label="bin/bin5.meta_lic\nproprietary"];
bin6 [label="bin/bin6.meta_lic\nproprietary"];
bin7 [label="bin/bin7.meta_lic\nproprietary"];
bin8 [label="bin/bin8.meta_lic\nproprietary"];
bin9 [label="bin/bin9.meta_lic\nproprietary"];
container [label="container.zip.meta_lic\nnotice"];
lib1 [label="lib/lib1.so.meta_lic\nnotice"];
lib2 [label="lib/lib2.so.meta_lic\nnotice"];
lib3 [label="lib/lib3.so.meta_lic\nnotice"];
lib4 [label="lib/lib4.so.meta_lic\nnotice"];
lib5 [label="lib/lib5.so.meta_lic\nnotice"];
lib6 [label="lib/lib6.so.meta_lic\nnotice"];
lib7 [label="lib/lib7.so.meta_lic\nnotice"];
lib8 [label="lib/lib8.so.meta_lic\nnotice"];
lib9 [label="lib/lib9.so.meta_lic\nrestricted"];
container -> bin1 [label="static"];
container -> bin2 [label="static"];
container -> bin3 [label="static"];
container -> bin4 [label="static"];
container -> bin5 [label="static"];
container -> bin6 [label="static"];
container -> bin7 [label="static"];
container -> bin8 [label="static"];
container -> bin9 [label="static"];
bin1 -> lib1 [label="static"];
bin2 -> lib2 [label="static"];
bin3 -> lib3 [label="static"];
bin4 -> lib4 [label="static"];
bin5 -> lib5 [label="static"];
bin6 -> lib6 [label="static"];
bin7 -> lib7 [label="static"];
bin8 -> lib8 [label="static"];
bin9 -> lib9 [label="static"];
lib1 -> lib2 [label="static"];
lib2 -> lib3 [label="static"];
lib3 -> lib4 [label="static"];
lib4 -> lib5 [label="static"];
lib5 -> lib6 [label="static"];
lib6 -> lib7 [label="static"];
lib7 -> lib8 [label="static"];
lib8 -> lib9 [label="static"];
{rank=same; container}
}
```

View File

@@ -0,0 +1,13 @@
package_name: "Android"
module_classes: "EXECUTABLES"
projects: "bin/onelibrary"
license_kinds: "legacy_proprietary"
license_conditions: "proprietary"
is_container: false
built: "out/target/product/fictional/obj/EXECUTABLES/bin_intermediates/bin1"
installed: "out/target/product/fictional/system/bin/bin1"
sources: "out/target/product/fictional/system/lib/lib1.a"
deps: {
file: "testdata/regressconcur/lib/lib1.a.meta_lic"
annotations: "static"
}

View File

@@ -0,0 +1,13 @@
package_name: "Android"
module_classes: "EXECUTABLES"
projects: "bin/onelibrary"
license_kinds: "legacy_proprietary"
license_conditions: "proprietary"
is_container: false
built: "out/target/product/fictional/obj/EXECUTABLES/bin_intermediates/bin2"
installed: "out/target/product/fictional/system/bin/bin2"
sources: "out/target/product/fictional/system/lib/lib2.a"
deps: {
file: "testdata/regressconcur/lib/lib2.a.meta_lic"
annotations: "static"
}

View File

@@ -0,0 +1,13 @@
package_name: "Android"
module_classes: "EXECUTABLES"
projects: "bin/onelibrary"
license_kinds: "legacy_proprietary"
license_conditions: "proprietary"
is_container: false
built: "out/target/product/fictional/obj/EXECUTABLES/bin_intermediates/bin3"
installed: "out/target/product/fictional/system/bin/bin3"
sources: "out/target/product/fictional/system/lib/lib3.a"
deps: {
file: "testdata/regressconcur/lib/lib3.a.meta_lic"
annotations: "static"
}

View File

@@ -0,0 +1,13 @@
package_name: "Android"
module_classes: "EXECUTABLES"
projects: "bin/onelibrary"
license_kinds: "legacy_proprietary"
license_conditions: "proprietary"
is_container: false
built: "out/target/product/fictional/obj/EXECUTABLES/bin_intermediates/bin4"
installed: "out/target/product/fictional/system/bin/bin4"
sources: "out/target/product/fictional/system/lib/lib4.a"
deps: {
file: "testdata/regressconcur/lib/lib4.a.meta_lic"
annotations: "static"
}

View File

@@ -0,0 +1,13 @@
package_name: "Android"
module_classes: "EXECUTABLES"
projects: "bin/onelibrary"
license_kinds: "legacy_proprietary"
license_conditions: "proprietary"
is_container: false
built: "out/target/product/fictional/obj/EXECUTABLES/bin_intermediates/bin5"
installed: "out/target/product/fictional/system/bin/bin5"
sources: "out/target/product/fictional/system/lib/lib5.a"
deps: {
file: "testdata/regressconcur/lib/lib5.a.meta_lic"
annotations: "static"
}

View File

@@ -0,0 +1,13 @@
package_name: "Android"
module_classes: "EXECUTABLES"
projects: "bin/onelibrary"
license_kinds: "legacy_proprietary"
license_conditions: "proprietary"
is_container: false
built: "out/target/product/fictional/obj/EXECUTABLES/bin_intermediates/bin6"
installed: "out/target/product/fictional/system/bin/bin6"
sources: "out/target/product/fictional/system/lib/lib6.a"
deps: {
file: "testdata/regressconcur/lib/lib6.a.meta_lic"
annotations: "static"
}

View File

@@ -0,0 +1,13 @@
package_name: "Android"
module_classes: "EXECUTABLES"
projects: "bin/onelibrary"
license_kinds: "legacy_proprietary"
license_conditions: "proprietary"
is_container: false
built: "out/target/product/fictional/obj/EXECUTABLES/bin_intermediates/bin7"
installed: "out/target/product/fictional/system/bin/bin7"
sources: "out/target/product/fictional/system/lib/lib7.a"
deps: {
file: "testdata/regressconcur/lib/lib7.a.meta_lic"
annotations: "static"
}

View File

@@ -0,0 +1,13 @@
package_name: "Android"
module_classes: "EXECUTABLES"
projects: "bin/onelibrary"
license_kinds: "legacy_proprietary"
license_conditions: "proprietary"
is_container: false
built: "out/target/product/fictional/obj/EXECUTABLES/bin_intermediates/bin8"
installed: "out/target/product/fictional/system/bin/bin8"
sources: "out/target/product/fictional/system/lib/lib8.a"
deps: {
file: "testdata/regressconcur/lib/lib8.a.meta_lic"
annotations: "static"
}

View File

@@ -0,0 +1,13 @@
package_name: "Android"
module_classes: "EXECUTABLES"
projects: "bin/onelibrary"
license_kinds: "legacy_proprietary"
license_conditions: "proprietary"
is_container: false
built: "out/target/product/fictional/obj/EXECUTABLES/bin_intermediates/bin9"
installed: "out/target/product/fictional/system/bin/bin9"
sources: "out/target/product/fictional/system/lib/lib9.a"
deps: {
file: "testdata/regressconcur/lib/lib9.a.meta_lic"
annotations: "static"
}

View File

@@ -0,0 +1,60 @@
package_name: "Android"
projects: "container/zip"
license_kinds: "SPDX-license-identifier-MIT"
license_conditions: "notice"
is_container: true
built: "out/target/product/fictional/obj/ETC/container_intermediates/container.zip"
installed: "out/target/product/fictional/data/container.zip"
install_map {
from_path: "out/target/product/fictional/system/lib/"
container_path: "/"
}
install_map {
from_path: "out/target/product/fictional/system/bin/"
container_path: "/"
}
sources: "out/target/product/fictional/system/bin/bin1"
sources: "out/target/product/fictional/system/bin/bin2"
sources: "out/target/product/fictional/system/bin/bin3"
sources: "out/target/product/fictional/system/bin/bin4"
sources: "out/target/product/fictional/system/bin/bin5"
sources: "out/target/product/fictional/system/bin/bin6"
sources: "out/target/product/fictional/system/bin/bin7"
sources: "out/target/product/fictional/system/bin/bin8"
sources: "out/target/product/fictional/system/bin/bin9"
deps: {
file: "testdata/regressconcur/bin/bin1.meta_lic"
annotations: "static"
}
deps: {
file: "testdata/regressconcur/bin/bin2.meta_lic"
annotations: "static"
}
deps: {
file: "testdata/regressconcur/bin/bin3.meta_lic"
annotations: "static"
}
deps: {
file: "testdata/regressconcur/bin/bin4.meta_lic"
annotations: "static"
}
deps: {
file: "testdata/regressconcur/bin/bin5.meta_lic"
annotations: "static"
}
deps: {
file: "testdata/regressconcur/bin/bin6.meta_lic"
annotations: "static"
}
deps: {
file: "testdata/regressconcur/bin/bin7.meta_lic"
annotations: "static"
}
deps: {
file: "testdata/regressconcur/bin/bin8.meta_lic"
annotations: "static"
}
deps: {
file: "testdata/regressconcur/bin/bin9.meta_lic"
annotations: "static"
}

View File

@@ -0,0 +1,13 @@
package_name: "Android"
projects: "lib/restricted"
license_kinds: "SPDX-license-identifier-MIT"
license_conditions: "notice"
is_container: false
built: "out/target/product/fictional/obj/SHARED_LIBRARIES/lib_intermediates/lib1.so"
built: "out/target/product/fictional/obj/SHARED_LIBRARIES/lib_intermediates/lib1.a"
installed: "out/target/product/fictional/system/lib/lib1.so"
sources: "out/target/product/fictional/obj/SHARED_LIBRARIES/lib_intermediates/lib2.a"
deps: {
file: "testdata/regressconcur/lib/lib2.a.meta_lic"
annotations: "static"
}

View File

@@ -0,0 +1,13 @@
package_name: "Android"
projects: "lib/restricted"
license_kinds: "SPDX-license-identifier-MIT"
license_conditions: "notice"
is_container: false
built: "out/target/product/fictional/obj/SHARED_LIBRARIES/lib_intermediates/lib2.so"
built: "out/target/product/fictional/obj/SHARED_LIBRARIES/lib_intermediates/lib2.a"
installed: "out/target/product/fictional/system/lib/lib2.so"
sources: "out/target/product/fictional/obj/SHARED_LIBRARIES/lib_intermediates/lib3.a"
deps: {
file: "testdata/regressconcur/lib/lib3.a.meta_lic"
annotations: "static"
}

View File

@@ -0,0 +1,13 @@
package_name: "Android"
projects: "lib/restricted"
license_kinds: "SPDX-license-identifier-MIT"
license_conditions: "notice"
is_container: false
built: "out/target/product/fictional/obj/SHARED_LIBRARIES/lib_intermediates/lib3.so"
built: "out/target/product/fictional/obj/SHARED_LIBRARIES/lib_intermediates/lib3.a"
installed: "out/target/product/fictional/system/lib/lib3.so"
sources: "out/target/product/fictional/obj/SHARED_LIBRARIES/lib_intermediates/lib4.a"
deps: {
file: "testdata/regressconcur/lib/lib4.a.meta_lic"
annotations: "static"
}

View File

@@ -0,0 +1,13 @@
package_name: "Android"
projects: "lib/restricted"
license_kinds: "SPDX-license-identifier-MIT"
license_conditions: "notice"
is_container: false
built: "out/target/product/fictional/obj/SHARED_LIBRARIES/lib_intermediates/lib4.so"
built: "out/target/product/fictional/obj/SHARED_LIBRARIES/lib_intermediates/lib4.a"
installed: "out/target/product/fictional/system/lib/lib4.so"
sources: "out/target/product/fictional/obj/SHARED_LIBRARIES/lib_intermediates/lib5.a"
deps: {
file: "testdata/regressconcur/lib/lib5.a.meta_lic"
annotations: "static"
}

View File

@@ -0,0 +1,13 @@
package_name: "Android"
projects: "lib/restricted"
license_kinds: "SPDX-license-identifier-MIT"
license_conditions: "notice"
is_container: false
built: "out/target/product/fictional/obj/SHARED_LIBRARIES/lib_intermediates/lib5.so"
built: "out/target/product/fictional/obj/SHARED_LIBRARIES/lib_intermediates/lib5.a"
installed: "out/target/product/fictional/system/lib/lib5.so"
sources: "out/target/product/fictional/obj/SHARED_LIBRARIES/lib_intermediates/lib6.a"
deps: {
file: "testdata/regressconcur/lib/lib6.a.meta_lic"
annotations: "static"
}

View File

@@ -0,0 +1,13 @@
package_name: "Android"
projects: "lib/restricted"
license_kinds: "SPDX-license-identifier-MIT"
license_conditions: "notice"
is_container: false
built: "out/target/product/fictional/obj/SHARED_LIBRARIES/lib_intermediates/lib6.so"
built: "out/target/product/fictional/obj/SHARED_LIBRARIES/lib_intermediates/lib6.a"
installed: "out/target/product/fictional/system/lib/lib6.so"
sources: "out/target/product/fictional/obj/SHARED_LIBRARIES/lib_intermediates/lib7.a"
deps: {
file: "testdata/regressconcur/lib/lib7.a.meta_lic"
annotations: "static"
}

View File

@@ -0,0 +1,13 @@
package_name: "Android"
projects: "lib/restricted"
license_kinds: "SPDX-license-identifier-MIT"
license_conditions: "notice"
is_container: false
built: "out/target/product/fictional/obj/SHARED_LIBRARIES/lib_intermediates/lib7.so"
built: "out/target/product/fictional/obj/SHARED_LIBRARIES/lib_intermediates/lib7.a"
installed: "out/target/product/fictional/system/lib/lib7.so"
sources: "out/target/product/fictional/obj/SHARED_LIBRARIES/lib_intermediates/lib8.a"
deps: {
file: "testdata/regressconcur/lib/lib8.a.meta_lic"
annotations: "static"
}

View File

@@ -0,0 +1,13 @@
package_name: "Android"
projects: "lib/restricted"
license_kinds: "SPDX-license-identifier-MIT"
license_conditions: "notice"
is_container: false
built: "out/target/product/fictional/obj/SHARED_LIBRARIES/lib_intermediates/lib8.so"
built: "out/target/product/fictional/obj/SHARED_LIBRARIES/lib_intermediates/lib8.a"
installed: "out/target/product/fictional/system/lib/lib8.so"
sources: "out/target/product/fictional/obj/SHARED_LIBRARIES/lib_intermediates/lib9.a"
deps: {
file: "testdata/regressconcur/lib/lib9.a.meta_lic"
annotations: "static"
}

View File

@@ -0,0 +1,8 @@
package_name: "Android"
projects: "lib/restricted"
license_kinds: "SPDX-license-identifier-GPL-2.0"
license_conditions: "restricted"
is_container: false
built: "out/target/product/fictional/obj/SHARED_LIBRARIES/lib_intermediates/lib9.so"
built: "out/target/product/fictional/obj/SHARED_LIBRARIES/lib_intermediates/lib9.a"
installed: "out/target/product/fictional/system/lib/lib9.so"