mirror of
https://github.com/facebook/sapling.git
synced 2024-10-11 09:17:30 +03:00
73a45df608
Summary: Before this patch, all the events logged by the sampling extensions were dumped to the log file. With this patch, one can specify the relevant events to log as well as a value to be added for each event. This will be useful to specify what logging table to use for each of the logged events. More information added to the documentation accordingly. Test Plan: The test changes accordingly and we add events that gets stopped by the filter to make sure that the filter works. Reviewers: ttung, durham Differential Revision: https://phabricator.intern.facebook.com/D3387446
61 lines
1.7 KiB
Perl
61 lines
1.7 KiB
Perl
Setup
|
|
|
|
$ PYTHONPATH=$TESTDIR/..:$PYTHONPATH
|
|
$ export PYTHONPATH
|
|
|
|
$ mkcommit() {
|
|
> echo "$1" > "$1"
|
|
> hg add "$1"
|
|
> echo "add $1" > msg
|
|
> echo "" >> msg
|
|
> hg ci -l msg
|
|
> }
|
|
Init the repo
|
|
$ hg init testrepo
|
|
$ cd testrepo
|
|
$ mkcommit a
|
|
Create an extension that logs every commit and also call repo.revs twice
|
|
|
|
Create an extension that logs the call to commit
|
|
$ cat > $TESTTMP/logcommit.py << EOF
|
|
> from mercurial import extensions, localrepo
|
|
> def cb(sample):
|
|
> return len(sample)
|
|
> def _commit(orig, repo, *args, **kwargs):
|
|
> repo.ui.log("commit", "match filter", k=1, a={"hi":"ho"})
|
|
> repo.ui.log("foo", "does not match filter", k=1, a={"hi":"ho"})
|
|
> return orig(repo, *args, **kwargs)
|
|
> def extsetup(ui):
|
|
> extensions.wrapfunction(localrepo.localrepository, 'commit', _commit)
|
|
> EOF
|
|
|
|
|
|
Set up the extension and set a log file
|
|
We whitelist only the 'commit' key, only the events with that key will be
|
|
logged
|
|
$ cat >> $HGRCPATH << EOF
|
|
> [sampling]
|
|
> key.commit=commit_table
|
|
> [extensions]
|
|
> sampling=
|
|
> EOF
|
|
$ LOGDIR=`pwd`/logs
|
|
$ mkdir $LOGDIR
|
|
$ echo "logcommit=$TESTTMP/logcommit.py" >> $HGRCPATH
|
|
$ echo "[sampling]" >> $HGRCPATH
|
|
$ echo "filepath = $LOGDIR/samplingpath.txt" >> $HGRCPATH
|
|
|
|
Do a couple of commits we expect to log two call to repo.revs for each commit
|
|
|
|
$ mkcommit b
|
|
$ mkcommit c
|
|
>>> import json
|
|
>>> with open("$LOGDIR/samplingpath.txt") as f:
|
|
... data = f.read()
|
|
>>> for record in data.strip("\0").split("\0"):
|
|
... parsedrecord = json.loads(record)
|
|
... print parsedrecord["data"]["msg"], parsedrecord["category"]
|
|
... assert len(parsedrecord["data"]) == 3
|
|
[u'match filter'] commit_table
|
|
[u'match filter'] commit_table
|