license metadata remove path on top-down walk

Performance optimization means not every path will be traversed.

Instead of updating parents via the path, perform a 2nd bottom-up walk
after the top-down walk to propagate the new resolutions to parents.

Note: the 2nd walk method will add resolutions to statically linked
libraries etc. at deeper levels, but those do not affect what gets
reported. In particular, note that test data for dumpresolutions
changes, but none of the test data for listshare, checkshare etc.
changes.

Test: m all systemlicense listshare checkshare dumpgraph dumpresolutions

Bug: 68860345
Bug: 151177513
Bug: 151953481
Change-Id: I76361c4e33bbadbbea38cbec260430e8f9407628
This commit is contained in:
Bob Badour
2021-12-08 12:52:59 -08:00
parent 3a820dd5a0
commit b285515ca1
6 changed files with 177 additions and 78 deletions

View File

@@ -434,6 +434,7 @@ func TestResolveTopDownConditions(t *testing.T) {
{"apacheBin.meta_lic", "mitLib.meta_lic", "gplLib.meta_lic", "restricted"},
{"apacheBin.meta_lic", "mitLib.meta_lic", "mitLib.meta_lic", "notice"},
{"gplLib.meta_lic", "gplLib.meta_lic", "gplLib.meta_lic", "restricted"},
{"mitLib.meta_lic", "mitLib.meta_lic", "gplLib.meta_lic", "restricted"},
{"mitLib.meta_lic", "mitLib.meta_lic", "mitLib.meta_lic", "notice"},
},
},
@@ -480,6 +481,7 @@ func TestResolveTopDownConditions(t *testing.T) {
{"mitBin.meta_lic", "mitBin.meta_lic", "mitBin.meta_lic", "notice"},
{"mitBin.meta_lic", "mitLib.meta_lic", "mitLib.meta_lic", "notice"},
{"mitLib.meta_lic", "mitLib.meta_lic", "mitLib.meta_lic", "notice"},
{"mplLib.meta_lic", "mplLib.meta_lic", "gplLib.meta_lic", "restricted"},
{"mplLib.meta_lic", "mplLib.meta_lic", "mplLib.meta_lic", "reciprocal"},
},
},
@@ -512,6 +514,7 @@ func TestResolveTopDownConditions(t *testing.T) {
{"apacheBin.meta_lic", "gplLib.meta_lic", "gplLib.meta_lic", "restricted"},
{"apacheBin.meta_lic", "mitLib.meta_lic", "gplLib.meta_lic", "restricted"},
{"gplLib.meta_lic", "gplLib.meta_lic", "gplLib.meta_lic", "restricted"},
{"mitLib.meta_lic", "mitLib.meta_lic", "gplLib.meta_lic", "restricted"},
{"mitLib.meta_lic", "mitLib.meta_lic", "mitLib.meta_lic", "notice"},
},
},
@@ -540,6 +543,7 @@ func TestResolveTopDownConditions(t *testing.T) {
{"gplLib.meta_lic", "gplLib.meta_lic", "gplLib.meta_lic", "restricted"},
{"mitBin.meta_lic", "mitBin.meta_lic", "mitBin.meta_lic", "notice"},
{"mitLib.meta_lic", "mitLib.meta_lic", "mitLib.meta_lic", "notice"},
{"mplLib.meta_lic", "mplLib.meta_lic", "gplLib.meta_lic", "restricted"},
{"mplLib.meta_lic", "mplLib.meta_lic", "mplLib.meta_lic", "reciprocal"},
},
},
@@ -573,6 +577,7 @@ func TestResolveTopDownConditions(t *testing.T) {
{"apacheBin.meta_lic", "mitLib.meta_lic", "mitLib.meta_lic", "notice"},
{"apacheBin.meta_lic", "mitLib.meta_lic", "lgplLib.meta_lic", "restricted"},
{"lgplLib.meta_lic", "lgplLib.meta_lic", "lgplLib.meta_lic", "restricted"},
{"mitLib.meta_lic", "mitLib.meta_lic", "lgplLib.meta_lic", "restricted"},
{"mitLib.meta_lic", "mitLib.meta_lic", "mitLib.meta_lic", "notice"},
},
},
@@ -612,6 +617,7 @@ func TestResolveTopDownConditions(t *testing.T) {
{"apacheBin.meta_lic", "mitLib.meta_lic", "mitLib.meta_lic", "notice"},
{"apacheBin.meta_lic", "mitLib.meta_lic", "lgplLib.meta_lic", "restricted"},
{"lgplLib.meta_lic", "lgplLib.meta_lic", "lgplLib.meta_lic", "restricted"},
{"mitLib.meta_lic", "mitLib.meta_lic", "lgplLib.meta_lic", "restricted"},
{"mitLib.meta_lic", "mitLib.meta_lic", "mitLib.meta_lic", "notice"},
},
},
@@ -687,6 +693,7 @@ func TestResolveTopDownConditions(t *testing.T) {
{"apacheBin.meta_lic", "mitLib.meta_lic", "mitLib.meta_lic", "notice"},
{"apacheBin.meta_lic", "mitLib.meta_lic", "gplWithClasspathException.meta_lic", "restricted"},
{"gplWithClasspathException.meta_lic", "gplWithClasspathException.meta_lic", "gplWithClasspathException.meta_lic", "restricted"},
{"mitLib.meta_lic", "mitLib.meta_lic", "gplWithClasspathException.meta_lic", "restricted"},
{"mitLib.meta_lic", "mitLib.meta_lic", "mitLib.meta_lic", "notice"},
},
},
@@ -704,6 +711,7 @@ func TestResolveTopDownConditions(t *testing.T) {
{"dependentModule.meta_lic", "mitLib.meta_lic", "mitLib.meta_lic", "notice"},
{"dependentModule.meta_lic", "mitLib.meta_lic", "gplWithClasspathException.meta_lic", "restricted"},
{"gplWithClasspathException.meta_lic", "gplWithClasspathException.meta_lic", "gplWithClasspathException.meta_lic", "restricted"},
{"mitLib.meta_lic", "mitLib.meta_lic", "gplWithClasspathException.meta_lic", "restricted"},
{"mitLib.meta_lic", "mitLib.meta_lic", "mitLib.meta_lic", "notice"},
},
},
@@ -735,6 +743,7 @@ func TestResolveTopDownConditions(t *testing.T) {
{"dependentModule.meta_lic", "mitLib.meta_lic", "mitLib.meta_lic", "notice"},
{"dependentModule.meta_lic", "mitLib.meta_lic", "gplWithClasspathException.meta_lic", "restricted"},
{"gplWithClasspathException.meta_lic", "gplWithClasspathException.meta_lic", "gplWithClasspathException.meta_lic", "restricted"},
{"mitLib.meta_lic", "mitLib.meta_lic", "gplWithClasspathException.meta_lic", "restricted"},
{"mitLib.meta_lic", "mitLib.meta_lic", "mitLib.meta_lic", "notice"},
},
},