summaryrefslogtreecommitdiffstats
path: root/git_trace2_event_log.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 /git_trace2_event_log.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 'git_trace2_event_log.py')
-rw-r--r--git_trace2_event_log.py20
1 files changed, 14 insertions, 6 deletions
diff --git a/git_trace2_event_log.py b/git_trace2_event_log.py
index fae3d4c8..9c9e5a70 100644
--- a/git_trace2_event_log.py
+++ b/git_trace2_event_log.py
@@ -144,6 +144,19 @@ class EventLog(object):
144 command_event['subcommands'] = subcommands 144 command_event['subcommands'] = subcommands
145 self._log.append(command_event) 145 self._log.append(command_event)
146 146
147 def LogConfigEvents(self, config, event_dict_name):
148 """Append a |event_dict_name| event for each config key in |config|.
149
150 Args:
151 config: Configuration dictionary.
152 event_dict_name: Name of the event dictionary for items to be logged under.
153 """
154 for param, value in config.items():
155 event = self._CreateEventDict(event_dict_name)
156 event['param'] = param
157 event['value'] = value
158 self._log.append(event)
159
147 def DefParamRepoEvents(self, config): 160 def DefParamRepoEvents(self, config):
148 """Append a 'def_param' event for each repo.* config key to the current log. 161 """Append a 'def_param' event for each repo.* config key to the current log.
149 162
@@ -152,12 +165,7 @@ class EventLog(object):
152 """ 165 """
153 # Only output the repo.* config parameters. 166 # Only output the repo.* config parameters.
154 repo_config = {k: v for k, v in config.items() if k.startswith('repo.')} 167 repo_config = {k: v for k, v in config.items() if k.startswith('repo.')}
155 168 self.LogConfigEvents(repo_config, 'def_param')
156 for param, value in repo_config.items():
157 def_param_event = self._CreateEventDict('def_param')
158 def_param_event['param'] = param
159 def_param_event['value'] = value
160 self._log.append(def_param_event)
161 169
162 def ErrorEvent(self, msg, fmt): 170 def ErrorEvent(self, msg, fmt):
163 """Append a 'error' event to the current log.""" 171 """Append a 'error' event to the current log."""