v8/tools/sanitizers/sancov_merger_test.py
machenbach 7d2c514d84 [tools] Fix merging sancov files from multiple test attempts
This differentiates sancov files from several runs of the
same test. This situation happens when a test fails and is
rerun for flake checking.

BUG=v8:5502

Review-Url: https://codereview.chromium.org/2414093003
Cr-Commit-Position: refs/heads/master@{#40304}
2016-10-14 10:00:26 +00:00

83 lines
2.2 KiB
Python

# Copyright 2016 the V8 project authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import unittest
import sancov_merger
# Files on disk after test runner completes. The files are mapped by
# executable name -> file list.
FILE_MAP = {
'd8': [
'd8.test.1.1.sancov',
'd8.test.2.1.sancov',
'd8.test.3.1.sancov',
'd8.test.4.1.sancov',
'd8.test.5.1.sancov',
'd8.test.5.2.sancov',
'd8.test.6.1.sancov',
],
'cctest': [
'cctest.test.1.1.sancov',
'cctest.test.2.1.sancov',
'cctest.test.3.1.sancov',
'cctest.test.4.1.sancov',
],
}
# Inputs for merge process with 2 cpus. The tuples contain:
# (flag, path, executable name, intermediate result index, file list).
EXPECTED_INPUTS_2 = [
(False, '/some/path', 'cctest', 0, [
'cctest.test.1.1.sancov',
'cctest.test.2.1.sancov']),
(False, '/some/path', 'cctest', 1, [
'cctest.test.3.1.sancov',
'cctest.test.4.1.sancov']),
(False, '/some/path', 'd8', 0, [
'd8.test.1.1.sancov',
'd8.test.2.1.sancov',
'd8.test.3.1.sancov',
'd8.test.4.1.sancov']),
(False, '/some/path', 'd8', 1, [
'd8.test.5.1.sancov',
'd8.test.5.2.sancov',
'd8.test.6.1.sancov']),
]
# The same for 4 cpus.
EXPECTED_INPUTS_4 = [
(True, '/some/path', 'cctest', 0, [
'cctest.test.1.1.sancov',
'cctest.test.2.1.sancov']),
(True, '/some/path', 'cctest', 1, [
'cctest.test.3.1.sancov',
'cctest.test.4.1.sancov']),
(True, '/some/path', 'd8', 0, [
'd8.test.1.1.sancov',
'd8.test.2.1.sancov']),
(True, '/some/path', 'd8', 1, [
'd8.test.3.1.sancov',
'd8.test.4.1.sancov']),
(True, '/some/path', 'd8', 2, [
'd8.test.5.1.sancov',
'd8.test.5.2.sancov']),
(True, '/some/path', 'd8', 3, [
'd8.test.6.1.sancov'])]
class MergerTests(unittest.TestCase):
def test_generate_inputs_2_cpu(self):
inputs = sancov_merger.generate_inputs(
False, '/some/path', FILE_MAP, 2)
self.assertEquals(EXPECTED_INPUTS_2, inputs)
def test_generate_inputs_4_cpu(self):
inputs = sancov_merger.generate_inputs(
True, '/some/path', FILE_MAP, 4)
self.assertEquals(EXPECTED_INPUTS_4, inputs)