summaryrefslogtreecommitdiffstats
path: root/tests/test_git_trace2_event_log.py
diff options
context:
space:
mode:
authorRaman Tenneti <rtenneti@google.com>2021-09-13 17:40:07 -0700
committerRaman Tenneti <rtenneti@google.com>2021-09-14 21:36:12 +0000
commit6448a4f2af53c241594b5d12eb0d03b18f889eda (patch)
tree554753373be6dbd595a659907d2016ac203268cd /tests/test_git_trace2_event_log.py
parent1328c35a4d0b47c7e8c00fe351f0e587481e28c2 (diff)
downloadgit-repo-6448a4f2af53c241594b5d12eb0d03b18f889eda.tar.gz
sync: Log repo sync state events as 'data' events.
git_trace2_event_log.py: + Added LogDataConfigEvents method to log 'data' events. Sync's current_sync_state and previous_sync_state are logged as 'data' events in the current log. It logs are key/value in the |config| argument. Each key is prefixed with |prefix| argument. The following are sample events that are logged during repo sync. {"event":"data", "sid":"repo-20210914T181545Z-P000330c0/repo-20210914T181545Z-P000330c0", "thread":"MainThread", "time":"2021-09-14T18:16:19.935846Z", "key":"previous_sync_state/repo.syncstate.main.synctime", "value":"2021-09-14T17:27:11.573717Z"} {"event":"data", "sid":"repo-20210914T181545Z-P000330c0/repo-20210914T181545Z-P000330c0", "thread":"MainThread", "time":"2021-09-14T18:16:19.955546Z", "key":"current_sync_state/repo.syncstate.main.synctime", "value":"2021-09-14T18:16:19.935979Z"} tests/test_git_trace2_event_log.py: + Added unit tests sync.py: + Changed logging calls to LogDataConfigEvents. Tested: $ ./run_tests Tested it by running the following command multiple times. $ repo_dev sync -j 20 repo sync has finished successfully Verified config data is looged in trace2 event logs. Bug: [google internal] b/199758376 Change-Id: I75fd830e90c1811ec28510538c99a2632b104e85 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/317823 Reviewed-by: Josh Steadmon <steadmon@google.com> Reviewed-by: Xin Li <delphij@google.com> Tested-by: Raman Tenneti <rtenneti@google.com>
Diffstat (limited to 'tests/test_git_trace2_event_log.py')
-rw-r--r--tests/test_git_trace2_event_log.py33
1 files changed, 33 insertions, 0 deletions
diff --git a/tests/test_git_trace2_event_log.py b/tests/test_git_trace2_event_log.py
index bee5865b..a5a6cbba 100644
--- a/tests/test_git_trace2_event_log.py
+++ b/tests/test_git_trace2_event_log.py
@@ -234,6 +234,39 @@ class EventLogTestCase(unittest.TestCase):
234 self.assertEqual(len(self._log_data), 1) 234 self.assertEqual(len(self._log_data), 1)
235 self.verifyCommonKeys(self._log_data[0], expected_event_name='version') 235 self.verifyCommonKeys(self._log_data[0], expected_event_name='version')
236 236
237 def test_data_event_config(self):
238 """Test 'data' event data outputs all config keys.
239
240 Expected event log:
241 <version event>
242 <data event>
243 <data event>
244 """
245 config = {
246 'git.foo': 'bar',
247 'repo.partialclone': 'false',
248 'repo.syncstate.superproject.hassuperprojecttag': 'true',
249 }
250 prefix_value = 'prefix'
251 self._event_log_module.LogDataConfigEvents(config, prefix_value)
252
253 with tempfile.TemporaryDirectory(prefix='event_log_tests') as tempdir:
254 log_path = self._event_log_module.Write(path=tempdir)
255 self._log_data = self.readLog(log_path)
256
257 self.assertEqual(len(self._log_data), 4)
258 data_events = self._log_data[1:]
259 self.verifyCommonKeys(self._log_data[0], expected_event_name='version')
260
261 for event in data_events:
262 self.verifyCommonKeys(event, expected_event_name='data')
263 # Check for 'data' event specific fields.
264 self.assertIn('key', event)
265 self.assertIn('value', event)
266 key = event['key'].removeprefix(f'{prefix_value}/')
267 value = event['value']
268 self.assertTrue(key in config and value == config[key])
269
237 def test_error_event(self): 270 def test_error_event(self):
238 """Test and validate 'error' event data is valid. 271 """Test and validate 'error' event data is valid.
239 272