summaryrefslogtreecommitdiffstats
path: root/tests/test_git_config.py
diff options
context:
space:
mode:
authorRaman Tenneti <rtenneti@google.com>2021-07-28 14:36:49 -0700
committerRaman Tenneti <rtenneti@google.com>2021-07-29 19:20:57 +0000
commit7954de13b79182e299163307c430ad96f9cdbd38 (patch)
treee9b8cf74daa7c4827cb55d63a90dfd040492c150 /tests/test_git_config.py
parentae86a460222c34b2f9cd600e6d17f8fd4f467fae (diff)
downloadgit-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.py17
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
108class GitConfigReadWriteTests(unittest.TestCase): 125class GitConfigReadWriteTests(unittest.TestCase):
109 """Read/write tests of the GitConfig class.""" 126 """Read/write tests of the GitConfig class."""