[PATCH 6 of 8] blackbox: store the blackbox ui object instead of the log file

Augie Fackler raf at durin42.com
Thu Feb 25 12:59:27 EST 2016


On Wed, Feb 24, 2016 at 02:10:50PM -0600, timeless wrote:
> # HG changeset patch
> # User timeless <timeless at mozdev.org>
> # Date 1454519104 0
> #      Wed Feb 03 17:05:04 2016 +0000
> # Node ID cc84ed9b974032db3b779206b93fb6864e4673ee
> # Parent  1c7c84429436f4a27fed1749963458267c12288e
> blackbox: store the blackbox ui object instead of the log file

Queued 1-6. Will look at 7 and 8 shortly, but 7 looked like it was
complicated enough that it'll take some extra time.

>
> Without this, the last logged entry didn't have access to
> the repository, and thus couldn't report its version
> (and especially that an add or similar dirtied it).
>
> A side-effect is that one repo leaks until process exit...
>
> diff --git a/hgext/blackbox.py b/hgext/blackbox.py
> --- a/hgext/blackbox.py
> +++ b/hgext/blackbox.py
> @@ -54,7 +54,7 @@
>  # be specifying the version(s) of Mercurial they are tested with, or
>  # leave the attribute unspecified.
>  testedwith = 'internal'
> -lastfp = None
> +lastui = None
>
>  filehandles = {}
>
> @@ -115,15 +115,19 @@
>                      fp = _openlog(self._bbvfs)
>              return fp
>
> +        def _bbwrite(self, fmt, *args):
> +            self._bbfp.write(fmt % args)
> +            self._bbfp.flush()
> +
>          def log(self, event, *msg, **opts):
> -            global lastfp
> +            global lastui
>              super(blackboxui, self).log(event, *msg, **opts)
>
>              if not '*' in self.track and not event in self.track:
>                  return
>
> -            if util.safehasattr(self, '_blackbox'):
> -                fp = self._blackbox
> +            if util.safehasattr(self, '_bbfp'):
> +                ui = self
>              elif util.safehasattr(self, '_bbvfs'):
>                  try:
>                      self._bbfp = self._openlogfile()
> @@ -132,41 +136,41 @@
>                                 err.strerror)
>                      del self._bbvfs
>                      self._bbfp = None
> -                fp = self._bbfp
> +                ui = self
>              else:
>                  # certain ui instances exist outside the context of
>                  # a repo, so just default to the last blackbox that
>                  # was seen.
> -                fp = lastfp
> +                ui = lastui
>
> -            if fp:
> +            if (util.safehasattr(ui, '_bbfp') and
> +                ui._bbfp is not None):
>                  date = util.datestr(None, '%Y/%m/%d %H:%M:%S')
>                  user = util.getuser()
>                  pid = str(util.getpid())
>                  formattedmsg = msg[0] % msg[1:]
>                  rev = '(unknown)'
>                  changed = ''
> -                if util.safehasattr(self, '_bbrepo'):
> -                    ctx = self._bbrepo[None]
> +                if util.safehasattr(ui, '_bbrepo'):
> +                    ctx = ui._bbrepo[None]
>                      if ctx.rev() is not None:
>                          rev = hexfn(ctx.node())
>                      else:
>                          parents = ctx.parents()
>                          rev = ('+'.join([hexfn(p.node()) for p in parents]))
> -                        if (self.configbool('blackbox', 'dirty', False) and (
> -                            any(self._bbrepo.status()) or
> +                        if (ui.configbool('blackbox', 'dirty', False) and (
> +                            any(ui._bbrepo.status()) or
>                              any(ctx.sub(s).dirty() for s in ctx.substate)
>                          )):
>                              changed = '+'
>                  try:
> -                    fp.write('%s %s @%s%s (%s)> %s' %
> -                        (date, user, rev, changed, pid, formattedmsg))
> -                    fp.flush()
> +                    ui._bbwrite('%s %s @%s%s (%s)> %s',
> +                        date, user, rev, changed, pid, formattedmsg)
>                  except IOError as err:
>                      self.debug('warning: cannot write to blackbox.log: %s\n' %
>                                 err.strerror)
> -                if not lastfp or util.safehasattr(self, '_bbrepo'):
> -                    lastfp = fp
> +                if not lastui or util.safehasattr(ui, '_bbrepo'):
> +                    lastui = ui
>
>          def setrepo(self, repo):
>              self._bbvfs = repo.vfs
> diff --git a/tests/test-blackbox.t b/tests/test-blackbox.t
> --- a/tests/test-blackbox.t
> +++ b/tests/test-blackbox.t
> @@ -12,12 +12,9 @@
>
>    $ echo a > a
>    $ hg add a
> -  $ hg id --config blackbox.dirty=True > /dev/null
>    $ hg blackbox --config blackbox.dirty=True
>    1970/01/01 00:00:00 bob @0000000000000000000000000000000000000000 (5000)> add a
> -  1970/01/01 00:00:00 bob @(unknown) (5000)> add a exited 0 after * seconds (glob)
> -  1970/01/01 00:00:00 bob @0000000000000000000000000000000000000000+ (5000)> id
> -  1970/01/01 00:00:00 bob @(unknown) (5000)> id --config blackbox.dirty=True exited 0 after * seconds (glob)
> +  1970/01/01 00:00:00 bob @0000000000000000000000000000000000000000 (5000)> add a exited 0 after * seconds (glob)
>    1970/01/01 00:00:00 bob @0000000000000000000000000000000000000000+ (5000)> blackbox
>
>  incoming change tracking
> @@ -52,7 +49,7 @@
>    1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> updated served branch cache in * seconds (glob)
>    1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> wrote served branch cache with 1 labels and 2 nodes
>    1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> 1 incoming changes - new heads: d02f48003e62
> -  1970/01/01 00:00:00 bob @(unknown) (5000)> pull exited 0 after * seconds (glob)
> +  1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> pull exited 0 after * seconds (glob)
>    1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> blackbox -l 6
>
>  we must not cause a failure if we cannot write to the log
> @@ -114,7 +111,7 @@
>    1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> saved backup bundle to $TESTTMP/blackboxtest2/.hg/strip-backup/73f6ee326b27-7612e004-backup.hg
>    1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> updated base branch cache in * seconds (glob)
>    1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> wrote base branch cache with 1 labels and 2 nodes
> -  1970/01/01 00:00:00 bob @(unknown) (5000)> strip tip exited 0 after * seconds (glob)
> +  1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> strip tip exited 0 after * seconds (glob)
>    1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> blackbox -l 6
>
>  extension and python hooks - use the eol extension for a pythonhook
> @@ -132,7 +129,7 @@
>    1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> writing .hg/cache/tags2-visible with 0 tags
>    1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> pythonhook-preupdate: hgext.eol.preupdate finished in * seconds (glob)
>    1970/01/01 00:00:00 bob @d02f48003e62c24e2659d97d30f2a83abe5d5d51 (5000)> exthook-update: echo hooked finished in * seconds (glob)
> -  1970/01/01 00:00:00 bob @(unknown) (5000)> update exited 0 after * seconds (glob)
> +  1970/01/01 00:00:00 bob @d02f48003e62c24e2659d97d30f2a83abe5d5d51 (5000)> update exited 0 after * seconds (glob)
>    1970/01/01 00:00:00 bob @d02f48003e62c24e2659d97d30f2a83abe5d5d51 (5000)> blackbox -l 6
>
>  log rotation
> @@ -182,7 +179,7 @@
>    result: None
>    $ hg blackbox
>    1970/01/01 00:00:00 bob @0000000000000000000000000000000000000000 (5000)> blackbox
> -  1970/01/01 00:00:00 bob @(unknown) (5000)> blackbox exited 0 after * seconds (glob)
> +  1970/01/01 00:00:00 bob @0000000000000000000000000000000000000000 (5000)> blackbox exited 0 after * seconds (glob)
>    1970/01/01 00:00:00 bob @45589e459b2edfbf3dbde7e01f611d2c1e7453d7 (5000)> blackbox
>
>  cleanup
> diff --git a/tests/test-obsolete-tag-cache.t b/tests/test-obsolete-tag-cache.t
> --- a/tests/test-obsolete-tag-cache.t
> +++ b/tests/test-obsolete-tag-cache.t
> @@ -71,7 +71,7 @@
>    1970/01/01 00:00:00 bob @2942a772f72a444bef4bef13874d515f50fa27b6 (5000)> tags
>    1970/01/01 00:00:00 bob @2942a772f72a444bef4bef13874d515f50fa27b6 (5000)> 2/2 cache hits/lookups in * seconds (glob)
>    1970/01/01 00:00:00 bob @2942a772f72a444bef4bef13874d515f50fa27b6 (5000)> writing .hg/cache/tags2-visible with 2 tags
> -  1970/01/01 00:00:00 bob @(unknown) (5000)> tags exited 0 after * seconds (glob)
> +  1970/01/01 00:00:00 bob @2942a772f72a444bef4bef13874d515f50fa27b6 (5000)> tags exited 0 after * seconds (glob)
>    1970/01/01 00:00:00 bob @2942a772f72a444bef4bef13874d515f50fa27b6 (5000)> blackbox -l 5
>
>  Hiding another changeset should cause the filtered hash to change
> @@ -91,7 +91,7 @@
>    1970/01/01 00:00:00 bob @2942a772f72a444bef4bef13874d515f50fa27b6 (5000)> tags
>    1970/01/01 00:00:00 bob @2942a772f72a444bef4bef13874d515f50fa27b6 (5000)> 1/1 cache hits/lookups in * seconds (glob)
>    1970/01/01 00:00:00 bob @2942a772f72a444bef4bef13874d515f50fa27b6 (5000)> writing .hg/cache/tags2-visible with 1 tags
> -  1970/01/01 00:00:00 bob @(unknown) (5000)> tags exited 0 after * seconds (glob)
> +  1970/01/01 00:00:00 bob @2942a772f72a444bef4bef13874d515f50fa27b6 (5000)> tags exited 0 after * seconds (glob)
>    1970/01/01 00:00:00 bob @2942a772f72a444bef4bef13874d515f50fa27b6 (5000)> blackbox -l 5
>
>  Resolving tags on an unfiltered repo writes a separate tags cache
> @@ -112,5 +112,5 @@
>    1970/01/01 00:00:00 bob @2942a772f72a444bef4bef13874d515f50fa27b6 (5000)> --hidden tags
>    1970/01/01 00:00:00 bob @2942a772f72a444bef4bef13874d515f50fa27b6 (5000)> 2/2 cache hits/lookups in * seconds (glob)
>    1970/01/01 00:00:00 bob @2942a772f72a444bef4bef13874d515f50fa27b6 (5000)> writing .hg/cache/tags2 with 3 tags
> -  1970/01/01 00:00:00 bob @(unknown) (5000)> --hidden tags exited 0 after * seconds (glob)
> +  1970/01/01 00:00:00 bob @2942a772f72a444bef4bef13874d515f50fa27b6 (5000)> --hidden tags exited 0 after * seconds (glob)
>    1970/01/01 00:00:00 bob @2942a772f72a444bef4bef13874d515f50fa27b6 (5000)> blackbox -l 5
> diff --git a/tests/test-tags.t b/tests/test-tags.t
> --- a/tests/test-tags.t
> +++ b/tests/test-tags.t
> @@ -141,7 +141,7 @@
>    1970/01/01 00:00:00 bob @b9154636be938d3d431e75a7c906504a079bfe07 (5000)> writing 48 bytes to cache/hgtagsfnodes1
>    1970/01/01 00:00:00 bob @b9154636be938d3d431e75a7c906504a079bfe07 (5000)> 0/1 cache hits/lookups in * seconds (glob)
>    1970/01/01 00:00:00 bob @b9154636be938d3d431e75a7c906504a079bfe07 (5000)> writing .hg/cache/tags2-visible with 1 tags
> -  1970/01/01 00:00:00 bob @(unknown) (5000)> identify exited 0 after * seconds (glob)
> +  1970/01/01 00:00:00 bob @b9154636be938d3d431e75a7c906504a079bfe07 (5000)> identify exited 0 after * seconds (glob)
>    1970/01/01 00:00:00 bob @b9154636be938d3d431e75a7c906504a079bfe07 (5000)> blackbox -l 6
>
>  Failure to acquire lock results in no write
> @@ -155,7 +155,7 @@
>    1970/01/01 00:00:00 bob @b9154636be938d3d431e75a7c906504a079bfe07 (5000)> not writing .hg/cache/hgtagsfnodes1 because lock cannot be acquired
>    1970/01/01 00:00:00 bob @b9154636be938d3d431e75a7c906504a079bfe07 (5000)> 0/1 cache hits/lookups in * seconds (glob)
>    1970/01/01 00:00:00 bob @b9154636be938d3d431e75a7c906504a079bfe07 (5000)> writing .hg/cache/tags2-visible with 1 tags
> -  1970/01/01 00:00:00 bob @(unknown) (5000)> identify exited 0 after * seconds (glob)
> +  1970/01/01 00:00:00 bob @b9154636be938d3d431e75a7c906504a079bfe07 (5000)> identify exited 0 after * seconds (glob)
>    1970/01/01 00:00:00 bob @b9154636be938d3d431e75a7c906504a079bfe07 (5000)> blackbox -l 6
>
>    $ fnodescacheexists
> @@ -218,7 +218,7 @@
>    (branch merge, don't forget to commit)
>    $ hg blackbox -l3
>    1970/01/01 00:00:00 bob @c8edf04160c7f731e4589d66ab3ab3486a64ac28 (5000)> merge 1
> -  1970/01/01 00:00:00 bob @(unknown) (5000)> merge 1 exited 0 after * seconds (glob)
> +  1970/01/01 00:00:00 bob @c8edf04160c7f731e4589d66ab3ab3486a64ac28+b9154636be938d3d431e75a7c906504a079bfe07 (5000)> merge 1 exited 0 after * seconds (glob)
>    1970/01/01 00:00:00 bob @c8edf04160c7f731e4589d66ab3ab3486a64ac28+b9154636be938d3d431e75a7c906504a079bfe07 (5000)> blackbox -l3
>    $ hg id
>    c8edf04160c7+b9154636be93+ tip
> @@ -359,7 +359,7 @@
>    1970/01/01 00:00:00 bob @8dbfe60eff306a54259cfe007db9e330e7ecf866 (5000)> writing 24 bytes to cache/hgtagsfnodes1
>    1970/01/01 00:00:00 bob @8dbfe60eff306a54259cfe007db9e330e7ecf866 (5000)> 2/3 cache hits/lookups in * seconds (glob)
>    1970/01/01 00:00:00 bob @8dbfe60eff306a54259cfe007db9e330e7ecf866 (5000)> writing .hg/cache/tags2-visible with 1 tags
> -  1970/01/01 00:00:00 bob @(unknown) (5000)> tags exited 0 after * seconds (glob)
> +  1970/01/01 00:00:00 bob @8dbfe60eff306a54259cfe007db9e330e7ecf866 (5000)> tags exited 0 after * seconds (glob)
>    1970/01/01 00:00:00 bob @8dbfe60eff306a54259cfe007db9e330e7ecf866 (5000)> blackbox -l 6
>
>  #if unix-permissions no-root
> @@ -380,7 +380,7 @@
>    1970/01/01 00:00:00 bob @b968051b5cf3f624b771779c6d5f84f1d4c3fb5d (5000)> couldn't write cache/hgtagsfnodes1: [Errno 13] Permission denied: '$TESTTMP/t2/.hg/cache/hgtagsfnodes1'
>    1970/01/01 00:00:00 bob @b968051b5cf3f624b771779c6d5f84f1d4c3fb5d (5000)> 2/3 cache hits/lookups in * seconds (glob)
>    1970/01/01 00:00:00 bob @b968051b5cf3f624b771779c6d5f84f1d4c3fb5d (5000)> writing .hg/cache/tags2-visible with 1 tags
> -  1970/01/01 00:00:00 bob @(unknown) (5000)> tags exited 0 after * seconds (glob)
> +  1970/01/01 00:00:00 bob @b968051b5cf3f624b771779c6d5f84f1d4c3fb5d (5000)> tags exited 0 after * seconds (glob)
>    1970/01/01 00:00:00 bob @b968051b5cf3f624b771779c6d5f84f1d4c3fb5d (5000)> blackbox -l 6
>
>    $ chmod a+w .hg/cache/hgtagsfnodes1
> @@ -395,7 +395,7 @@
>    1970/01/01 00:00:00 bob @b968051b5cf3f624b771779c6d5f84f1d4c3fb5d (5000)> writing 24 bytes to cache/hgtagsfnodes1
>    1970/01/01 00:00:00 bob @b968051b5cf3f624b771779c6d5f84f1d4c3fb5d (5000)> 2/3 cache hits/lookups in * seconds (glob)
>    1970/01/01 00:00:00 bob @b968051b5cf3f624b771779c6d5f84f1d4c3fb5d (5000)> writing .hg/cache/tags2-visible with 1 tags
> -  1970/01/01 00:00:00 bob @(unknown) (5000)> tags exited 0 after * seconds (glob)
> +  1970/01/01 00:00:00 bob @b968051b5cf3f624b771779c6d5f84f1d4c3fb5d (5000)> tags exited 0 after * seconds (glob)
>    1970/01/01 00:00:00 bob @b968051b5cf3f624b771779c6d5f84f1d4c3fb5d (5000)> blackbox -l 6
>
>    $ f --size .hg/cache/hgtagsfnodes1
> @@ -423,7 +423,7 @@
>    1970/01/01 00:00:00 bob @0c192d7d5e6b78a714de54a2e9627952a877e25a (5000)> writing 24 bytes to cache/hgtagsfnodes1
>    1970/01/01 00:00:00 bob @0c192d7d5e6b78a714de54a2e9627952a877e25a (5000)> 2/3 cache hits/lookups in * seconds (glob)
>    1970/01/01 00:00:00 bob @0c192d7d5e6b78a714de54a2e9627952a877e25a (5000)> writing .hg/cache/tags2-visible with 1 tags
> -  1970/01/01 00:00:00 bob @(unknown) (5000)> tags exited 0 after * seconds (glob)
> +  1970/01/01 00:00:00 bob @0c192d7d5e6b78a714de54a2e9627952a877e25a (5000)> tags exited 0 after * seconds (glob)
>    1970/01/01 00:00:00 bob @0c192d7d5e6b78a714de54a2e9627952a877e25a (5000)> blackbox -l 5
>
>    $ f --size .hg/cache/hgtagsfnodes1
> @@ -441,7 +441,7 @@
>    1970/01/01 00:00:00 bob @035f65efb448350f4772141702a81ab1df48c465 (5000)> writing 24 bytes to cache/hgtagsfnodes1
>    1970/01/01 00:00:00 bob @035f65efb448350f4772141702a81ab1df48c465 (5000)> 2/3 cache hits/lookups in * seconds (glob)
>    1970/01/01 00:00:00 bob @035f65efb448350f4772141702a81ab1df48c465 (5000)> writing .hg/cache/tags2-visible with 1 tags
> -  1970/01/01 00:00:00 bob @(unknown) (5000)> tags exited 0 after * seconds (glob)
> +  1970/01/01 00:00:00 bob @035f65efb448350f4772141702a81ab1df48c465 (5000)> tags exited 0 after * seconds (glob)
>    1970/01/01 00:00:00 bob @035f65efb448350f4772141702a81ab1df48c465 (5000)> blackbox -l 6
>    $ f --size .hg/cache/hgtagsfnodes1
>    .hg/cache/hgtagsfnodes1: size=144
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


More information about the Mercurial-devel mailing list