diff options
| author | Mike Frysinger <vapier@google.com> | 2022-12-07 09:41:47 -0500 |
|---|---|---|
| committer | Mike Frysinger <vapier@google.com> | 2022-12-08 15:06:24 +0000 |
| commit | f159ce0f9ef5bce5a4866a677f0534e3b45a80e2 (patch) | |
| tree | 0d8410ff9ef7377f9bc2fa7c413bb408cb7cd6c1 /tests | |
| parent | 802cd0c6016d91c62c25178ee1ccc1e78505502c (diff) | |
| download | git-repo-f159ce0f9ef5bce5a4866a677f0534e3b45a80e2.tar.gz | |
sync: fix manifest sync-j handling
Since --jobs defaults to 0, not None, we never pull the value out
of the manifest. Treat values of 0 and None the same to fix.
Bug: http://b/239712300
Bug: http://b/260908907
Change-Id: I9b1026682072366616825fd72f90bd90c10a252f
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/354254
Tested-by: Mike Frysinger <vapier@google.com>
Reviewed-by: Josip Sokcevic <sokcevic@google.com>
Reviewed-by: Sam Saccone <samccone@google.com>
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/test_subcmds_sync.py | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/tests/test_subcmds_sync.py b/tests/test_subcmds_sync.py index 13f3f873..236d54e5 100644 --- a/tests/test_subcmds_sync.py +++ b/tests/test_subcmds_sync.py | |||
| @@ -13,11 +13,13 @@ | |||
| 13 | # limitations under the License. | 13 | # limitations under the License. |
| 14 | """Unittests for the subcmds/sync.py module.""" | 14 | """Unittests for the subcmds/sync.py module.""" |
| 15 | 15 | ||
| 16 | import os | ||
| 16 | import unittest | 17 | import unittest |
| 17 | from unittest import mock | 18 | from unittest import mock |
| 18 | 19 | ||
| 19 | import pytest | 20 | import pytest |
| 20 | 21 | ||
| 22 | import command | ||
| 21 | from subcmds import sync | 23 | from subcmds import sync |
| 22 | 24 | ||
| 23 | 25 | ||
| @@ -43,6 +45,51 @@ def test_get_current_branch_only(use_superproject, cli_args, result): | |||
| 43 | assert cmd._GetCurrentBranchOnly(opts, cmd.manifest) == result | 45 | assert cmd._GetCurrentBranchOnly(opts, cmd.manifest) == result |
| 44 | 46 | ||
| 45 | 47 | ||
| 48 | # Used to patch os.cpu_count() for reliable results. | ||
| 49 | OS_CPU_COUNT = 24 | ||
| 50 | |||
| 51 | @pytest.mark.parametrize('argv, jobs_manifest, jobs, jobs_net, jobs_check', [ | ||
| 52 | # No user or manifest settings. | ||
| 53 | ([], None, OS_CPU_COUNT, 1, command.DEFAULT_LOCAL_JOBS), | ||
| 54 | # No user settings, so manifest settings control. | ||
| 55 | ([], 3, 3, 3, 3), | ||
| 56 | # User settings, but no manifest. | ||
| 57 | (['--jobs=4'], None, 4, 4, 4), | ||
| 58 | (['--jobs=4', '--jobs-network=5'], None, 4, 5, 4), | ||
| 59 | (['--jobs=4', '--jobs-checkout=6'], None, 4, 4, 6), | ||
| 60 | (['--jobs=4', '--jobs-network=5', '--jobs-checkout=6'], None, 4, 5, 6), | ||
| 61 | (['--jobs-network=5'], None, OS_CPU_COUNT, 5, command.DEFAULT_LOCAL_JOBS), | ||
| 62 | (['--jobs-checkout=6'], None, OS_CPU_COUNT, 1, 6), | ||
| 63 | (['--jobs-network=5', '--jobs-checkout=6'], None, OS_CPU_COUNT, 5, 6), | ||
| 64 | # User settings with manifest settings. | ||
| 65 | (['--jobs=4'], 3, 4, 4, 4), | ||
| 66 | (['--jobs=4', '--jobs-network=5'], 3, 4, 5, 4), | ||
| 67 | (['--jobs=4', '--jobs-checkout=6'], 3, 4, 4, 6), | ||
| 68 | (['--jobs=4', '--jobs-network=5', '--jobs-checkout=6'], 3, 4, 5, 6), | ||
| 69 | (['--jobs-network=5'], 3, 3, 5, 3), | ||
| 70 | (['--jobs-checkout=6'], 3, 3, 3, 6), | ||
| 71 | (['--jobs-network=5', '--jobs-checkout=6'], 3, 3, 5, 6), | ||
| 72 | # Settings that exceed rlimits get capped. | ||
| 73 | (['--jobs=1000000'], None, 83, 83, 83), | ||
| 74 | ([], 1000000, 83, 83, 83), | ||
| 75 | ]) | ||
| 76 | def test_cli_jobs(argv, jobs_manifest, jobs, jobs_net, jobs_check): | ||
| 77 | """Tests --jobs option behavior.""" | ||
| 78 | mp = mock.MagicMock() | ||
| 79 | mp.manifest.default.sync_j = jobs_manifest | ||
| 80 | |||
| 81 | cmd = sync.Sync() | ||
| 82 | opts, args = cmd.OptionParser.parse_args(argv) | ||
| 83 | cmd.ValidateOptions(opts, args) | ||
| 84 | |||
| 85 | with mock.patch.object(sync, '_rlimit_nofile', return_value=(256, 256)): | ||
| 86 | with mock.patch.object(os, 'cpu_count', return_value=OS_CPU_COUNT): | ||
| 87 | cmd._ValidateOptionsWithManifest(opts, mp) | ||
| 88 | assert opts.jobs == jobs | ||
| 89 | assert opts.jobs_network == jobs_net | ||
| 90 | assert opts.jobs_checkout == jobs_check | ||
| 91 | |||
| 92 | |||
| 46 | class GetPreciousObjectsState(unittest.TestCase): | 93 | class GetPreciousObjectsState(unittest.TestCase): |
| 47 | """Tests for _GetPreciousObjectsState.""" | 94 | """Tests for _GetPreciousObjectsState.""" |
| 48 | 95 | ||
