From e0684addeeb920ddf83168d5fbbbe50cb9287abd Mon Sep 17 00:00:00 2001 From: David Riley Date: Wed, 5 Apr 2017 00:02:59 -0700 Subject: sync: Add support to dump a JSON event log of all sync events. Change-Id: Id4852968ac1b2bf0093007cf2e5ca951ddab8b3b --- subcmds/sync.py | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) (limited to 'subcmds/sync.py') diff --git a/subcmds/sync.py b/subcmds/sync.py index 82056f33..ef023274 100644 --- a/subcmds/sync.py +++ b/subcmds/sync.py @@ -64,6 +64,7 @@ try: except ImportError: multiprocessing = None +import event_log from git_command import GIT, git_require from git_config import GetUrlCookieFile from git_refs import R_HEADS, HEAD @@ -304,9 +305,10 @@ later is required to fix a server side protocol bug. # - We always set err_event in the case of an exception. # - We always make sure we call sem.release(). # - We always make sure we unlock the lock if we locked it. + start = time.time() + success = False try: try: - start = time.time() success = project.Sync_NetworkHalf( quiet=opt.quiet, current_branch_only=opt.current_branch_only, @@ -345,6 +347,9 @@ later is required to fix a server side protocol bug. finally: if did_lock: lock.release() + finish = time.time() + self.event_log.AddSync(project, event_log.TASK_SYNC_NETWORK, + start, finish, success) return success @@ -720,16 +725,24 @@ later is required to fix a server side protocol bug. _PostRepoUpgrade(self.manifest, quiet=opt.quiet) if not opt.local_only: - mp.Sync_NetworkHalf(quiet=opt.quiet, - current_branch_only=opt.current_branch_only, - no_tags=opt.no_tags, - optimized_fetch=opt.optimized_fetch, - submodules=self.manifest.HasSubmodules) + start = time.time() + success = mp.Sync_NetworkHalf(quiet=opt.quiet, + current_branch_only=opt.current_branch_only, + no_tags=opt.no_tags, + optimized_fetch=opt.optimized_fetch, + submodules=self.manifest.HasSubmodules) + finish = time.time() + self.event_log.AddSync(mp, event_log.TASK_SYNC_NETWORK, + start, finish, success) if mp.HasChanges: syncbuf = SyncBuffer(mp.config) + start = time.time() mp.Sync_LocalHalf(syncbuf, submodules=self.manifest.HasSubmodules) - if not syncbuf.Finish(): + clean = syncbuf.Finish() + self.event_log.AddSync(mp, event_log.TASK_SYNC_LOCAL, + start, time.time(), clean) + if not clean: sys.exit(1) self._ReloadManifest(manifest_name) if opt.jobs is None: @@ -823,7 +836,10 @@ later is required to fix a server side protocol bug. for project in all_projects: pm.update() if project.worktree: + start = time.time() project.Sync_LocalHalf(syncbuf, force_sync=opt.force_sync) + self.event_log.AddSync(project, event_log.TASK_SYNC_LOCAL, + start, time.time(), syncbuf.Recently()) pm.end() print(file=sys.stderr) if not syncbuf.Finish(): @@ -907,6 +923,7 @@ def _VerifyTag(project): return False return True + class _FetchTimes(object): _ALPHA = 0.5 -- cgit v1.2.3-54-g00ecf