sapling/tests/helpers-wireprotologging.sh
Thomas Orozco fa4e12df09 wireproto logging: capture getpack
Summary:
ignore-conflict-markers

This updates Mercurial to add a loggetpack option for wire proto logging that
allows capturing getpack responses. This will be useful to verify correctness
for ovrsource on Mononoke (right now, Mononoke isn't serving traffic for hosts
that use getpack).

Reviewed By: StanislavGlebik

Differential Revision: D17091537

fbshipit-source-id: 755a429949d7645010dddab95202c613025f2984
2019-08-30 05:08:18 -07:00

37 lines
1.0 KiB
Bash

capturewireprotologs() {
cat >> "$TESTTMP/uilog.py" <<EOF
from edenscm.mercurial import extensions
from edenscm.mercurial import ui as uimod
def uisetup(ui):
extensions.wrapfunction(uimod.ui, 'log', mylog)
def mylog(orig, self, service, *msg, **opts):
if service in ['wireproto_requests']:
kw = []
for k, v in sorted(opts.iteritems()):
if k == 'args':
v = eval(v)
for arg in v:
if isinstance(arg, dict):
v = sorted(list(arg.iteritems()))
v = str(v)
kw.append("%s=%s" % (k, v))
kwstr = ", ".join(kw)
msgstr = msg[0] % msg[1:]
self.warn('%s: %s (%s)\n' % (service, msgstr, kwstr))
with open('$TESTTMP/loggedrequests', 'a') as f:
f.write('%s: %s (%s)\n' % (service, msgstr, kwstr))
return orig(self, service, *msg, **opts)
EOF
cat >> "$HGRCPATH" <<EOF
[extensions]
uilog=$TESTTMP/uilog.py
[wireproto]
logrequests=batch,branchmap,getbundle,hello,listkeys,lookup,between,unbundle
loggetpack=True
EOF
}