def build_measurer(benchmark: str) -> bool: """Do a coverage build for a benchmark.""" try: logger.info('Building measurer for benchmark: %s.', benchmark) if benchmark_utils.is_oss_fuzz(benchmark): gcb_build_oss_fuzz_project_coverage(benchmark) else: gcb_build_benchmark_coverage(benchmark) docker_name = benchmark_utils.get_docker_name(benchmark) archive_name = 'coverage-build-%s.tar.gz' % docker_name coverage_binaries_dir = get_coverage_binaries_dir() benchmark_coverage_binary_dir = coverage_binaries_dir / benchmark os.mkdir(benchmark_coverage_binary_dir) cloud_bucket_archive_path = exp_path.gcs(coverage_binaries_dir / archive_name) gsutil.cp(cloud_bucket_archive_path, str(benchmark_coverage_binary_dir), parallel=False) archive_path = benchmark_coverage_binary_dir / archive_name tar = tarfile.open(archive_path, 'r:gz') tar.extractall(benchmark_coverage_binary_dir) os.remove(archive_path) logs.info('Done building measurer for benchmark: %s.', benchmark) return True except Exception: # pylint: disable=broad-except logger.error('Failed to build measurer for %s.', benchmark) return False
def build_fuzzer_benchmark(fuzzer: str, benchmark: str) -> bool: """Builds |benchmark| for |fuzzer|.""" logger.info('Building benchmark: %s, fuzzer: %s.', benchmark, fuzzer) try: if benchmark_utils.is_oss_fuzz(benchmark): gcb_build_oss_fuzz_project_fuzzer(benchmark, fuzzer) else: gcb_build_benchmark_fuzzer(benchmark, fuzzer) except subprocess.CalledProcessError: logger.error('Failed to build benchmark: %s, fuzzer: %s.', benchmark, fuzzer) return False logs.info('Done building benchmark: %s, fuzzer: %s.', benchmark, fuzzer) return True
def test_is_oss_fuzz(benchmark, expected_result, oss_fuzz_benchmark): """Test that we can distinguish OSS-Fuzz benchmarks from non-OSS-Fuzz benchmarks.""" assert benchmark_utils.is_oss_fuzz(benchmark) == expected_result
def build_coverage(benchmark): """Build coverage image for benchmark on GCB.""" if benchmark_utils.is_oss_fuzz(benchmark): _build_oss_fuzz_project_coverage(benchmark) else: _build_benchmark_coverage(benchmark)
def build_fuzzer_benchmark(fuzzer: str, benchmark: str) -> bool: """Builds |benchmark| for |fuzzer|.""" if benchmark_utils.is_oss_fuzz(benchmark): _build_oss_fuzz_project_fuzzer(benchmark, fuzzer) else: _build_benchmark_fuzzer(benchmark, fuzzer)