blob: d8913b44b54ea5e2cc1cf656dfbc4b4acb47536d [file] [log] [blame]
#!/usr/bin/env vpython3
# Copyright 2020 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# pylint: disable=protected-access
import os
import unittest
from pylib.local.machine import local_machine_junit_test_run
from py_utils import tempfile_ext
from mock import patch # pylint: disable=import-error
class LocalMachineJunitTestRunTests(unittest.TestCase):
def testAddPropertiesJar(self):
with tempfile_ext.NamedTemporaryDirectory() as temp_dir:
apk = 'resource_apk'
cmd_list = []
local_machine_junit_test_run.AddPropertiesJar(cmd_list, temp_dir, apk)
self.assertEqual(cmd_list, [])
cmd_list = [['test1']]
local_machine_junit_test_run.AddPropertiesJar(cmd_list, temp_dir, apk)
self.assertEqual(
cmd_list[0],
['test1', '--classpath',
os.path.join(temp_dir, 'properties.jar')])
cmd_list = [['test1'], ['test2']]
local_machine_junit_test_run.AddPropertiesJar(cmd_list, temp_dir, apk)
self.assertEqual(len(cmd_list[0]), 3)
self.assertEqual(
cmd_list[1],
['test2', '--classpath',
os.path.join(temp_dir, 'properties.jar')])
@patch('multiprocessing.cpu_count')
def testChooseNumOfShards(self, mock_cpu_count):
mock_cpu_count.return_value = 36
# Test shards is 1 when filter is set.
test_shards = 1
test_classes = [1] * 50
shards = local_machine_junit_test_run.ChooseNumOfShards(
test_classes, test_shards)
self.assertEqual(1, shards)
# Tests setting shards.
test_shards = 4
shards = local_machine_junit_test_run.ChooseNumOfShards(
test_classes, test_shards)
self.assertEqual(4, shards)
# Tests using min_class per shards.
test_classes = [1] * 20
test_shards = 8
shards = local_machine_junit_test_run.ChooseNumOfShards(
test_classes, test_shards)
self.assertEqual(2, shards)
def testGroupTestsForShard(self):
test_classes = []
results = local_machine_junit_test_run.GroupTestsForShard(1, test_classes)
self.assertDictEqual(results, {0: []})
test_classes = ['dir/test.class'] * 5
results = local_machine_junit_test_run.GroupTestsForShard(1, test_classes)
self.assertDictEqual(results, {0: ['dir.test*'] * 5})
test_classes = ['dir/test.class'] * 5
results = local_machine_junit_test_run.GroupTestsForShard(2, test_classes)
ans_dict = {
0: ['dir.test*'] * 3,
1: ['dir.test*'] * 2,
}
self.assertDictEqual(results, ans_dict)
test_classes = ['a10 warthog', 'b17', 'SR71']
results = local_machine_junit_test_run.GroupTestsForShard(3, test_classes)
ans_dict = {
0: ['a10 warthog'],
1: ['b17'],
2: ['SR71'],
}
self.assertDictEqual(results, ans_dict)
if __name__ == '__main__':
unittest.main()