blob: 8afca7c1f9e3c2a76f6cbb6b19d1b01c72783652 [file] [log] [blame]
#!/usr/bin/env python
# Copyright (c) 2013 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Tests for module csv_merger."""
import datetime
import filecmp
import os
import shutil
import tempfile
import unittest
import csv_comparer
class TestCsvComparer(unittest.TestCase):
def setUp(self):
self._test_csv_dir = os.path.join(
os.path.dirname(os.path.realpath(__file__)),
'test_data', 'csv_comparer')
self._actual_output_dir = tempfile.mkdtemp()
# Set mocks.
class _MockUtcNow(object):
@staticmethod
def strftime(format_str):
self.assertEqual('%Y-%m-%d %H:%M UTC', format_str)
return '2014-05-19 16:50 UTC'
class _MockDatetime(object):
@staticmethod
def utcnow():
return _MockUtcNow()
self._original_datetime = datetime.datetime
datetime.datetime = _MockDatetime
def tearDown(self):
shutil.rmtree(self._actual_output_dir)
datetime.datetime = self._original_datetime
def _AssertHTMLFiles(self, sub_dir, additional_files=()):
# Ensure that the two html files we care about are as expected.
for html_file in ('index.html', 'fieldname1.html') + additional_files:
self.assertTrue(
filecmp.cmp(os.path.join(self._test_csv_dir, sub_dir, html_file),
os.path.join(self._actual_output_dir, html_file)))
def test_E2EComparerWithDiscardOutliers(self):
comparer = csv_comparer.CsvComparer(
csv_file1=os.path.join(self._test_csv_dir, 'comparer_csv1.csv'),
csv_file2=os.path.join(self._test_csv_dir, 'comparer_csv2.csv'),
output_html_dir=self._actual_output_dir,
requester_email='superman@krypton.com',
chromium_patch_link='http://chromium-patch.com',
skia_patch_link='http://skia-patch.com',
raw_csv_nopatch='http://raw-csv-nopatch.com',
raw_csv_withpatch='http://raw-csv-withpatch.com',
variance_threshold=10,
absolute_url='',
min_pages_in_each_field=1,
discard_outliers=12.5,
num_repeated=3,
target_platform='Android',
crashed_instances='build1-b5 build10-b5',
missing_devices='build99-b5 build100-b5',
browser_args_nopatch='--test=1',
browser_args_withpatch='--test=2',
pageset_type='Mobile10k',
chromium_hash='abcdefg1234567',
skia_hash='tuvwxyz1234567',
missing_output_workers='1 3 100',
logs_link_prefix=('https://chrome-swarming.appspot.com/tasklist?'
'l=500&f=runid:testing&f=name:perf_task_'),
description='E2EComparerWithDiscardOutliers',
total_archives='',
)
comparer.Compare()
self._AssertHTMLFiles('discard_outliers')
def test_E2EComparerWithNoDiscardOutliers(self):
comparer = csv_comparer.CsvComparer(
csv_file1=os.path.join(self._test_csv_dir, 'comparer_csv1.csv'),
csv_file2=os.path.join(self._test_csv_dir, 'comparer_csv2.csv'),
output_html_dir=self._actual_output_dir,
requester_email='superman@krypton.com',
chromium_patch_link='http://chromium-patch.com',
skia_patch_link='http://skia-patch.com',
raw_csv_nopatch='http://raw-csv-nopatch.com',
raw_csv_withpatch='http://raw-csv-withpatch.com',
variance_threshold=0,
absolute_url='',
min_pages_in_each_field=0,
discard_outliers=0,
num_repeated=3,
target_platform='Linux',
crashed_instances='',
missing_devices='',
browser_args_nopatch='',
browser_args_withpatch='',
pageset_type='10k',
chromium_hash='abcdefg1234567',
skia_hash='tuvwxyz1234567',
missing_output_workers='',
logs_link_prefix='',
description='E2EComparerWithNoDiscardOutliers',
total_archives='10',
)
comparer.Compare()
self._AssertHTMLFiles('keep_outliers',
('fieldname2.html', 'fieldname3.html'))
if __name__ == '__main__':
unittest.main()