diff options
author | Raman Tenneti <rtenneti@google.com> | 2021-07-28 14:36:49 -0700 |
---|---|---|
committer | Raman Tenneti <rtenneti@google.com> | 2021-07-29 19:20:57 +0000 |
commit | 7954de13b79182e299163307c430ad96f9cdbd38 (patch) | |
tree | e9b8cf74daa7c4827cb55d63a90dfd040492c150 /tests/test_git_config.py | |
parent | ae86a460222c34b2f9cd600e6d17f8fd4f467fae (diff) | |
download | git-repo-7954de13b79182e299163307c430ad96f9cdbd38.tar.gz |
sync: Added logging of repo sync state and config options for analysis.
git_config.py:
+ Added SyncAnalysisState class, which saves the following data
into the config object.
++ sys.argv, options, superproject's logging data.
++ repo.*, branch.* and remote.* parameters from config object.
++ current time as synctime.
++ Version number of the object.
+ All the keys for the above data are prepended with 'repo.syncstate.'
+ Added GetSyncAnalysisStateData and UpdateSyncAnalysisState methods
to GitConfig object to save/get the above data.
git_trace2_event_log.py:
+ Added LogConfigEvents method with code from DefParamRepoEvents
to log events.
sync.py:
+ superproject_logging_data is a dictionary that collects all the
superproject data that is to be logged as trace2 event.
+ Sync at the end logs the previously saved syncstate.* parameters
as previous_sync_state. Then it calls config's UpdateSyncAnalysisState
to save and log all the current options, superproject logged data.
docs/internal-fs-layout.md:
+ Added doc string explaining [repo.syncstate ...] sections of
.repo/manifests.git/config file.
test_git_config.py:
+ Added unit test for the new methods of GitConfig object.
Tested:
$ ./run_tests
$ repo_dev init --use-superproject -u https://android.googlesource.com/platform/manifest
Tested it by running the following command multiple times.
$ repo_dev sync -j 20
repo sync has finished successfully
Verified config file has [syncstate ...] data saved.
Bug: [google internal] b/188573450
Change-Id: I1f914ce50f3382111b72940ca56de7c41b53d460
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/313123
Tested-by: Raman Tenneti <rtenneti@google.com>
Reviewed-by: Mike Frysinger <vapier@google.com>
Reviewed-by: Xin Li <delphij@google.com>
Diffstat (limited to 'tests/test_git_config.py')
-rw-r--r-- | tests/test_git_config.py | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/tests/test_git_config.py b/tests/test_git_config.py index 3300c12f..44ff5974 100644 --- a/tests/test_git_config.py +++ b/tests/test_git_config.py | |||
@@ -104,6 +104,23 @@ class GitConfigReadOnlyTests(unittest.TestCase): | |||
104 | for key, value in TESTS: | 104 | for key, value in TESTS: |
105 | self.assertEqual(value, self.config.GetInt('section.%s' % (key,))) | 105 | self.assertEqual(value, self.config.GetInt('section.%s' % (key,))) |
106 | 106 | ||
107 | def test_GetSyncAnalysisStateData(self): | ||
108 | """Test config entries with a sync state analysis data.""" | ||
109 | superproject_logging_data = {} | ||
110 | superproject_logging_data['test'] = False | ||
111 | options = type('options', (object,), {})() | ||
112 | options.verbose = 'true' | ||
113 | TESTS = ( | ||
114 | ('superproject.test', 'false'), | ||
115 | ('options.verbose', 'true'), | ||
116 | ('main.version', '1'), | ||
117 | ) | ||
118 | self.config.UpdateSyncAnalysisState(options, superproject_logging_data) | ||
119 | sync_data = self.config.GetSyncAnalysisStateData() | ||
120 | for key, value in TESTS: | ||
121 | self.assertEqual(sync_data[f'{git_config.SYNC_STATE_PREFIX}{key}'], value) | ||
122 | self.assertTrue(sync_data[f'{git_config.SYNC_STATE_PREFIX}main.synctime']) | ||
123 | |||
107 | 124 | ||
108 | class GitConfigReadWriteTests(unittest.TestCase): | 125 | class GitConfigReadWriteTests(unittest.TestCase): |
109 | """Read/write tests of the GitConfig class.""" | 126 | """Read/write tests of the GitConfig class.""" |