annotate tests/test-remotefilelog-hgweb.t @ 50400:95acba2c29f6

encoding: avoid quadratic time complexity when json-encoding non-UTF8 strings Apparently the code uses "+=" with a bytes object, which is linear-time, so the whole encoding is quadratic-time. This patch makes us use a bytearray object, instead, which has a(n amortized-)constant-time append operation. The encoding is still not particularly fast, but at least a 10MB file takes tens of seconds, not many hours to encode.
author Arseniy Alekseyev <aalekseyev@janestreet.com>
date Mon, 06 Mar 2023 11:27:57 +0000
parents 9e63108123a4
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
44569
5483e9c759e4 tests: add test for remotefilelog interactions with hgweb
Augie Fackler <augie@google.com>
parents:
diff changeset
1 #require no-windows serve
5483e9c759e4 tests: add test for remotefilelog interactions with hgweb
Augie Fackler <augie@google.com>
parents:
diff changeset
2
5483e9c759e4 tests: add test for remotefilelog interactions with hgweb
Augie Fackler <augie@google.com>
parents:
diff changeset
3 $ . "$TESTDIR/remotefilelog-library.sh"
5483e9c759e4 tests: add test for remotefilelog interactions with hgweb
Augie Fackler <augie@google.com>
parents:
diff changeset
4
5483e9c759e4 tests: add test for remotefilelog interactions with hgweb
Augie Fackler <augie@google.com>
parents:
diff changeset
5 $ cat >> $HGRCPATH <<EOF
5483e9c759e4 tests: add test for remotefilelog interactions with hgweb
Augie Fackler <augie@google.com>
parents:
diff changeset
6 > [extensions]
5483e9c759e4 tests: add test for remotefilelog interactions with hgweb
Augie Fackler <augie@google.com>
parents:
diff changeset
7 > remotefilelog=
5483e9c759e4 tests: add test for remotefilelog interactions with hgweb
Augie Fackler <augie@google.com>
parents:
diff changeset
8 > share=
5483e9c759e4 tests: add test for remotefilelog interactions with hgweb
Augie Fackler <augie@google.com>
parents:
diff changeset
9 > EOF
5483e9c759e4 tests: add test for remotefilelog interactions with hgweb
Augie Fackler <augie@google.com>
parents:
diff changeset
10
5483e9c759e4 tests: add test for remotefilelog interactions with hgweb
Augie Fackler <augie@google.com>
parents:
diff changeset
11 $ hg init master
5483e9c759e4 tests: add test for remotefilelog interactions with hgweb
Augie Fackler <augie@google.com>
parents:
diff changeset
12 $ cd master
5483e9c759e4 tests: add test for remotefilelog interactions with hgweb
Augie Fackler <augie@google.com>
parents:
diff changeset
13 $ cat >> .hg/hgrc <<EOF
5483e9c759e4 tests: add test for remotefilelog interactions with hgweb
Augie Fackler <augie@google.com>
parents:
diff changeset
14 > [remotefilelog]
5483e9c759e4 tests: add test for remotefilelog interactions with hgweb
Augie Fackler <augie@google.com>
parents:
diff changeset
15 > server=True
5483e9c759e4 tests: add test for remotefilelog interactions with hgweb
Augie Fackler <augie@google.com>
parents:
diff changeset
16 > EOF
5483e9c759e4 tests: add test for remotefilelog interactions with hgweb
Augie Fackler <augie@google.com>
parents:
diff changeset
17 $ echo x > x
5483e9c759e4 tests: add test for remotefilelog interactions with hgweb
Augie Fackler <augie@google.com>
parents:
diff changeset
18 $ hg commit -qAm x
5483e9c759e4 tests: add test for remotefilelog interactions with hgweb
Augie Fackler <augie@google.com>
parents:
diff changeset
19
5483e9c759e4 tests: add test for remotefilelog interactions with hgweb
Augie Fackler <augie@google.com>
parents:
diff changeset
20 $ cd ..
5483e9c759e4 tests: add test for remotefilelog interactions with hgweb
Augie Fackler <augie@google.com>
parents:
diff changeset
21
5483e9c759e4 tests: add test for remotefilelog interactions with hgweb
Augie Fackler <augie@google.com>
parents:
diff changeset
22
5483e9c759e4 tests: add test for remotefilelog interactions with hgweb
Augie Fackler <augie@google.com>
parents:
diff changeset
23 $ hgcloneshallow ssh://user@dummy/master wdir --noupdate -q
5483e9c759e4 tests: add test for remotefilelog interactions with hgweb
Augie Fackler <augie@google.com>
parents:
diff changeset
24 $ cd wdir
5483e9c759e4 tests: add test for remotefilelog interactions with hgweb
Augie Fackler <augie@google.com>
parents:
diff changeset
25 $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -E errors.log
5483e9c759e4 tests: add test for remotefilelog interactions with hgweb
Augie Fackler <augie@google.com>
parents:
diff changeset
26 $ cat hg.pid >> $DAEMON_PIDS
44570
9e63108123a4 remotefilelog: add fake heads() method that allows viewing a file in hgweb
Augie Fackler <augie@google.com>
parents: 44569
diff changeset
27 $ get-with-headers.py localhost:$HGPORT 'file/tip/x' | head -n 10
9e63108123a4 remotefilelog: add fake heads() method that allows viewing a file in hgweb
Augie Fackler <augie@google.com>
parents: 44569
diff changeset
28 200 Script output follows
44569
5483e9c759e4 tests: add test for remotefilelog interactions with hgweb
Augie Fackler <augie@google.com>
parents:
diff changeset
29
44570
9e63108123a4 remotefilelog: add fake heads() method that allows viewing a file in hgweb
Augie Fackler <augie@google.com>
parents: 44569
diff changeset
30 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
9e63108123a4 remotefilelog: add fake heads() method that allows viewing a file in hgweb
Augie Fackler <augie@google.com>
parents: 44569
diff changeset
31 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
9e63108123a4 remotefilelog: add fake heads() method that allows viewing a file in hgweb
Augie Fackler <augie@google.com>
parents: 44569
diff changeset
32 <head>
9e63108123a4 remotefilelog: add fake heads() method that allows viewing a file in hgweb
Augie Fackler <augie@google.com>
parents: 44569
diff changeset
33 <link rel="icon" href="/static/hgicon.png" type="image/png" />
9e63108123a4 remotefilelog: add fake heads() method that allows viewing a file in hgweb
Augie Fackler <augie@google.com>
parents: 44569
diff changeset
34 <meta name="robots" content="index, nofollow" />
9e63108123a4 remotefilelog: add fake heads() method that allows viewing a file in hgweb
Augie Fackler <augie@google.com>
parents: 44569
diff changeset
35 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
9e63108123a4 remotefilelog: add fake heads() method that allows viewing a file in hgweb
Augie Fackler <augie@google.com>
parents: 44569
diff changeset
36 <script type="text/javascript" src="/static/mercurial.js"></script>
9e63108123a4 remotefilelog: add fake heads() method that allows viewing a file in hgweb
Augie Fackler <augie@google.com>
parents: 44569
diff changeset
37
44569
5483e9c759e4 tests: add test for remotefilelog interactions with hgweb
Augie Fackler <augie@google.com>
parents:
diff changeset
38