Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 17fb8e72 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge changes from topic "regress"

* changes:
  Fix concurrency bug in bottom-up resolution walk.
  An ActionSet doesn't need to walk the graph.
  Create regression test to catch concurrency error
  Create regression test to catch WalkAction error.
  Fix tests so they can fail.
parents 0ffb3e52 f9d23a9f
Loading
Loading
Loading
Loading
+53 −0
Original line number Diff line number Diff line
@@ -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) {
+62 −0
Original line number Diff line number Diff line
## 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}
}
```
+13 −0
Original line number Diff line number Diff line
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"
}
+13 −0
Original line number Diff line number Diff line
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"
}
+13 −0
Original line number Diff line number Diff line
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"
}
Loading