mirror of
https://github.com/ansible-collections/community.general.git
synced 2026-04-25 07:56:38 +00:00
Fix ansible-test coverage stub memory usage. (#53652)
Split coverage stub files into multiple parts based on the number of lines in files included in each stub. This will keep memory usage down to avoid hanging on Shippable.
This commit is contained in:
@@ -55,7 +55,28 @@ def command_coverage_combine(args):
|
||||
sources = []
|
||||
|
||||
if args.stub:
|
||||
groups['=stub'] = dict((source, set()) for source in sources)
|
||||
stub_group = []
|
||||
stub_groups = [stub_group]
|
||||
stub_line_limit = 500000
|
||||
stub_line_count = 0
|
||||
|
||||
for source in sources:
|
||||
with open(source, 'r') as source_fd:
|
||||
source_line_count = len(source_fd.read().splitlines())
|
||||
|
||||
stub_group.append(source)
|
||||
stub_line_count += source_line_count
|
||||
|
||||
if stub_line_count > stub_line_limit:
|
||||
stub_line_count = 0
|
||||
stub_group = []
|
||||
stub_groups.append(stub_group)
|
||||
|
||||
for stub_index, stub_group in enumerate(stub_groups):
|
||||
if not stub_group:
|
||||
continue
|
||||
|
||||
groups['=stub-%02d' % (stub_index + 1)] = dict((source, set()) for source in stub_group)
|
||||
|
||||
for coverage_file in coverage_files:
|
||||
counter += 1
|
||||
|
||||
@@ -90,6 +90,8 @@ function cleanup
|
||||
for file in test/results/reports/coverage=*.xml; do
|
||||
flags="${file##*/coverage=}"
|
||||
flags="${flags%.xml}"
|
||||
# remove numbered component from stub files when converting to tags
|
||||
flags="${flags//stub-[0-9]*/stub}"
|
||||
flags="${flags//=/,}"
|
||||
flags="${flags//[^a-zA-Z0-9_,]/_}"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user