From 77d49e6a73b3a1e142ec865d05dc3dd9a708ab6a Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Wed, 28 Oct 2020 15:08:49 +0000 Subject: Add latest changes from gitlab-org/gitlab@master --- scripts/generate-test-mapping | 19 +++++++++++++++++++ scripts/pack-test-mapping | 19 +++++++++++++++++++ scripts/rspec_helpers.sh | 37 +++++++++++++++++++++++++++++++++++++ scripts/unpack-test-mapping | 17 +++++++++++++++++ 4 files changed, 92 insertions(+) create mode 100755 scripts/generate-test-mapping create mode 100755 scripts/pack-test-mapping create mode 100755 scripts/unpack-test-mapping (limited to 'scripts') diff --git a/scripts/generate-test-mapping b/scripts/generate-test-mapping new file mode 100755 index 00000000000..eabe6a5b513 --- /dev/null +++ b/scripts/generate-test-mapping @@ -0,0 +1,19 @@ +#!/usr/bin/env ruby + +require 'json' +require_relative '../tooling/lib/tooling/test_map_generator' + +test_mapping_json = ARGV.shift +crystalball_yamls = ARGV + +unless test_mapping_json && !crystalball_yamls.empty? + puts "usage: #{__FILE__} [crystalball_yamls...]" + exit 1 +end + +map_generator = Tooling::TestMapGenerator.new +map_generator.parse(crystalball_yamls) +mapping = map_generator.mapping + +File.write(test_mapping_json, JSON.pretty_generate(mapping)) +puts "Saved #{test_mapping_json}." diff --git a/scripts/pack-test-mapping b/scripts/pack-test-mapping new file mode 100755 index 00000000000..58ace3eca67 --- /dev/null +++ b/scripts/pack-test-mapping @@ -0,0 +1,19 @@ +#!/usr/bin/env ruby + +require 'json' +require_relative '../tooling/lib/tooling/test_map_packer' + +unpacked_json_mapping, packed_json_mapping = ARGV.shift(2) +unless packed_json_mapping && unpacked_json_mapping + puts "usage: #{__FILE__} " + exit 1 +end + +puts "Compressing #{unpacked_json_mapping}" + +mapping = JSON.parse(File.read(unpacked_json_mapping)) +packed_mapping = Tooling::TestMapPacker.new.pack(mapping) + +puts "Writing packed #{packed_json_mapping}" +File.write(packed_json_mapping, JSON.generate(packed_mapping)) +puts "Saved #{packed_json_mapping}." diff --git a/scripts/rspec_helpers.sh b/scripts/rspec_helpers.sh index 3812a8b8ef7..9fe7d089d93 100644 --- a/scripts/rspec_helpers.sh +++ b/scripts/rspec_helpers.sh @@ -48,6 +48,43 @@ function update_tests_metadata() { fi } +function retrieve_tests_mapping() { + mkdir -p crystalball/ + + if [[ ! -f "${RSPEC_PACKED_TESTS_MAPPING_PATH}" ]]; then + (wget -O "${RSPEC_PACKED_TESTS_MAPPING_PATH}.gz" "http://${TESTS_METADATA_S3_BUCKET}.s3.amazonaws.com/${RSPEC_PACKED_TESTS_MAPPING_PATH}.gz" && gzip -d "${RSPEC_PACKED_TESTS_MAPPING_PATH}.gz") || echo "{}" > "${RSPEC_PACKED_TESTS_MAPPING_PATH}" + fi + + scripts/unpack-test-mapping "${RSPEC_PACKED_TESTS_MAPPING_PATH}" "${RSPEC_TESTS_MAPPING_PATH}" +} + +function update_tests_mapping() { + if ! crystalball_rspec_data_exists; then + echo "No crystalball rspec data found." + return 0 + fi + + scripts/generate-test-mapping "${RSPEC_TESTS_MAPPING_PATH}" crystalball/rspec*.yml + + scripts/pack-test-mapping "${RSPEC_TESTS_MAPPING_PATH}" "${RSPEC_PACKED_TESTS_MAPPING_PATH}" + + gzip "${RSPEC_PACKED_TESTS_MAPPING_PATH}" + + if [[ -n "${TESTS_METADATA_S3_BUCKET}" ]]; then + if [[ "$CI_PIPELINE_SOURCE" == "schedule" ]]; then + scripts/sync-reports put "${TESTS_METADATA_S3_BUCKET}" "${RSPEC_PACKED_TESTS_MAPPING_PATH}.gz" + else + echo "Not uploading report to S3 as the pipeline is not a scheduled one." + fi + fi + + rm -f crystalball/rspec*.yml +} + +function crystalball_rspec_data_exists() { + compgen -G "crystalball/rspec*.yml" > /dev/null; +} + function rspec_simple_job() { local rspec_opts="${1}" diff --git a/scripts/unpack-test-mapping b/scripts/unpack-test-mapping new file mode 100755 index 00000000000..c0f706c3f9f --- /dev/null +++ b/scripts/unpack-test-mapping @@ -0,0 +1,17 @@ +#!/usr/bin/env ruby + +require 'json' +require_relative '../tooling/lib/tooling/test_map_packer' + +packed_json_mapping, unpacked_json_mapping = ARGV.shift(2) +unless packed_json_mapping && unpacked_json_mapping + puts "usage: #{__FILE__} " + exit 1 +end + +packed_mapping = JSON.parse(File.read(packed_json_mapping)) +mapping = Tooling::TestMapPacker.new.unpack(packed_mapping) + +puts "Writing unpacked #{unpacked_json_mapping}" +File.write(unpacked_json_mapping, JSON.generate(mapping)) +puts "Saved #{unpacked_json_mapping}." -- cgit v1.2.3