mirror of
https://gerrit.googlesource.com/git-repo
synced 2024-12-21 07:16:21 +00:00
Log repo.* config variables in git trace2 logger.
Bug: [google internal] b/181758736 Testing: - Unit tests - Verified repo git trace2 logs had expected data Change-Id: I9af8a574377bd91115f085808c1271e9dee16a36 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/299182 Tested-by: Ian Kasprzak <iankaz@google.com> Reviewed-by: Mike Frysinger <vapier@google.com> Reviewed-by: Raman Tenneti <rtenneti@google.com>
This commit is contained in:
parent
ef99ec07b4
commit
835a34bdb9
@ -145,6 +145,21 @@ class GitConfig(object):
|
|||||||
except ValueError:
|
except ValueError:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
def DumpConfigDict(self):
|
||||||
|
"""Returns the current configuration dict.
|
||||||
|
|
||||||
|
Configuration data is information only (e.g. logging) and
|
||||||
|
should not be considered a stable data-source.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
dict of {<key>, <value>} for git configuration cache.
|
||||||
|
<value> are strings converted by GetString.
|
||||||
|
"""
|
||||||
|
config_dict = {}
|
||||||
|
for key in self._cache:
|
||||||
|
config_dict[key] = self.GetString(key)
|
||||||
|
return config_dict
|
||||||
|
|
||||||
def GetBoolean(self, name):
|
def GetBoolean(self, name):
|
||||||
"""Returns a boolean from the configuration file.
|
"""Returns a boolean from the configuration file.
|
||||||
None : The value was not defined, or is not a boolean.
|
None : The value was not defined, or is not a boolean.
|
||||||
|
@ -132,6 +132,21 @@ class EventLog(object):
|
|||||||
exit_event['code'] = result
|
exit_event['code'] = result
|
||||||
self._log.append(exit_event)
|
self._log.append(exit_event)
|
||||||
|
|
||||||
|
def DefParamRepoEvents(self, config):
|
||||||
|
"""Append a 'def_param' event for each repo.* config key to the current log.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
config: Repo configuration dictionary
|
||||||
|
"""
|
||||||
|
# Only output the repo.* config parameters.
|
||||||
|
repo_config = {k: v for k, v in config.items() if k.startswith('repo.')}
|
||||||
|
|
||||||
|
for param, value in repo_config.items():
|
||||||
|
def_param_event = self._CreateEventDict('def_param')
|
||||||
|
def_param_event['param'] = param
|
||||||
|
def_param_event['value'] = value
|
||||||
|
self._log.append(def_param_event)
|
||||||
|
|
||||||
def _GetEventTargetPath(self):
|
def _GetEventTargetPath(self):
|
||||||
"""Get the 'trace2.eventtarget' path from git configuration.
|
"""Get the 'trace2.eventtarget' path from git configuration.
|
||||||
|
|
||||||
|
2
main.py
2
main.py
@ -297,6 +297,8 @@ class _Repo(object):
|
|||||||
|
|
||||||
cmd.event_log.FinishEvent(cmd_event, finish,
|
cmd.event_log.FinishEvent(cmd_event, finish,
|
||||||
result is None or result == 0)
|
result is None or result == 0)
|
||||||
|
git_trace2_event_log.DefParamRepoEvents(
|
||||||
|
cmd.manifest.manifestProject.config.DumpConfigDict())
|
||||||
git_trace2_event_log.ExitEvent(result)
|
git_trace2_event_log.ExitEvent(result)
|
||||||
|
|
||||||
if gopts.event_log:
|
if gopts.event_log:
|
||||||
|
@ -161,6 +161,55 @@ class EventLogTestCase(unittest.TestCase):
|
|||||||
self.assertIn('code', exit_event)
|
self.assertIn('code', exit_event)
|
||||||
self.assertEqual(exit_event['code'], 2)
|
self.assertEqual(exit_event['code'], 2)
|
||||||
|
|
||||||
|
def test_def_params_event_repo_config(self):
|
||||||
|
"""Test 'def_params' event data outputs only repo config keys.
|
||||||
|
|
||||||
|
Expected event log:
|
||||||
|
<version event>
|
||||||
|
<def_param event>
|
||||||
|
<def_param event>
|
||||||
|
"""
|
||||||
|
config = {
|
||||||
|
'git.foo': 'bar',
|
||||||
|
'repo.partialclone': 'true',
|
||||||
|
'repo.partialclonefilter': 'blob:none',
|
||||||
|
}
|
||||||
|
self._event_log_module.DefParamRepoEvents(config)
|
||||||
|
|
||||||
|
with tempfile.TemporaryDirectory(prefix='event_log_tests') as tempdir:
|
||||||
|
log_path = self._event_log_module.Write(path=tempdir)
|
||||||
|
self._log_data = self.readLog(log_path)
|
||||||
|
|
||||||
|
self.assertEqual(len(self._log_data), 3)
|
||||||
|
def_param_events = self._log_data[1:]
|
||||||
|
self.verifyCommonKeys(self._log_data[0], expected_event_name='version')
|
||||||
|
|
||||||
|
for event in def_param_events:
|
||||||
|
self.verifyCommonKeys(event, expected_event_name='def_param')
|
||||||
|
# Check for 'def_param' event specific fields.
|
||||||
|
self.assertIn('param', event)
|
||||||
|
self.assertIn('value', event)
|
||||||
|
self.assertTrue(event['param'].startswith('repo.'))
|
||||||
|
|
||||||
|
def test_def_params_event_no_repo_config(self):
|
||||||
|
"""Test 'def_params' event data won't output non-repo config keys.
|
||||||
|
|
||||||
|
Expected event log:
|
||||||
|
<version event>
|
||||||
|
"""
|
||||||
|
config = {
|
||||||
|
'git.foo': 'bar',
|
||||||
|
'git.core.foo2': 'baz',
|
||||||
|
}
|
||||||
|
self._event_log_module.DefParamRepoEvents(config)
|
||||||
|
|
||||||
|
with tempfile.TemporaryDirectory(prefix='event_log_tests') as tempdir:
|
||||||
|
log_path = self._event_log_module.Write(path=tempdir)
|
||||||
|
self._log_data = self.readLog(log_path)
|
||||||
|
|
||||||
|
self.assertEqual(len(self._log_data), 1)
|
||||||
|
self.verifyCommonKeys(self._log_data[0], expected_event_name='version')
|
||||||
|
|
||||||
def test_write_with_filename(self):
|
def test_write_with_filename(self):
|
||||||
"""Test Write() with a path to a file exits with None."""
|
"""Test Write() with a path to a file exits with None."""
|
||||||
self.assertIsNone(self._event_log_module.Write(path='path/to/file'))
|
self.assertIsNone(self._event_log_module.Write(path='path/to/file'))
|
||||||
|
Loading…
Reference in New Issue
Block a user