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 /git_trace2_event_log.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 'git_trace2_event_log.py')
-rw-r--r-- | git_trace2_event_log.py | 20 |
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.""" |