Commit graph

62 commits

Author SHA1 Message Date
David Bremner
de23409704 perf-test/tag: add maildir sync tests
Today someone asked me the (reasonable) question of how much
performance impact there is from synching tags to maildir flags. It
turns out it is noticeable, about a 50% overhead compared to
non-synched tags (according to these tests).  In practice I don't know
if it's a big problem for users, since I don't know what fraction of
tagging operations involve "special" tags.
2024-04-05 07:33:41 -03:00
David Bremner
f873790b6f perf-test: update corpus signature
In the decade (!) since this corpus was last updated, the keyserver
network is essentially dead, and I have migrated gpg keys. Bump the
version number as a clean way of switching signatures. Also update the
instructions to suggest using "--locate-external-key" to download the
public key. By default this uses WKD, which is now supported for my
UID.
2023-07-09 12:14:29 -03:00
David Bremner
c66f0dea7a perf-test: add tests notmuch-git
The main focus of these initial tests is the (currently unacceptably
slow) checkout performance.
2022-07-16 20:27:40 -04:00
David Bremner
ded2eb1a50 perf-test/emacs: test showing longish threads
This particular thread takes about 100 times longer to display in
emacs than on the command line.

The parameter notmuch-show-max-text-part-size exists, but is currently
ineffective for this task because it only hides attachments, not
part 0.

In future commits, the parameter notmuch-show-{depth,height}-limit
will trigger a similar kind of hiding for bodies as
n-s-m-text-part-size already does for attachments.
2022-07-14 04:50:33 -03:00
David Bremner
a70c93515b perf-test: emacs tagging
Time tag operations, to see if it is worthwhile keeping both the
batch and the non-batch calls to notmuch tag.
2022-02-25 08:38:21 -04:00
David Bremner
b21fa0e433 perf-test: allow running test_emacs from performance test suite.
test_require_external prereq has to move to test-lib-common.sh, and
the new shell functions print_emacs_header and time_emacs are provided.

The somewhat indirect way of printing the output is to avoid the extra
"" present on string values from emacsclient.
2022-02-25 08:38:03 -04:00
David Bremner
371fa28ced test: split variable settings to their own file
This allows sharing more variable settings between the (correctness)
tests and the performance-tests. Unfortunately it seems a bit tricky
to move settings to test-lib-common.sh, as that is sourced late in
test-lib.sh, and moving it earlier breaks things.
2022-02-25 08:37:14 -04:00
Felipe Contreras
6fec5d771e perf-test: fix for verbose
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
2021-08-05 09:04:53 -03:00
Felipe Contreras
02cf4a50bb perf-test: add ruby test
Simply list the message-id of all the messages in a loop 100 times.

Suggested-by: David Bremner <david@tethera.net>
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
2021-07-18 16:50:27 -03:00
David Bremner
8cb30b08d8 perf-test: add test for reindexing after removal/renaming msgs
At this point it is a bit tricky to measure the performance increase
from the new message deletion code, since the same commit (9ad19e4)
that improved the performance also seems to have fixed a bug with an
uncaught Xapian exception triggered by this test.
2021-05-23 08:22:31 -03:00
David Bremner
564a83077a perf-test/T00-new: fix backup creation.
"xargs tar cf backup.tar < $manifest" recreates the tar file with each
"batch" execed by xargs. In general this results in only a fraction of
the desired files being backed up.
2021-05-19 08:54:44 -03:00
David Bremner
6a20478abb perf-test: add option to run perf
Although the generation of perf data is not as slow as valgrind, it
seems simplest to re-use the machinery already there to save the logs
in a timestamped subdirectory.
2021-04-28 08:49:07 -03:00
David Bremner
8a64f725df perf-tests: add test for removing files.
Without the proposed fix for deletion performance [1], this test is
probably unreasonably slow compared to others at the same
small/medium/large scale.

[1]: id:20210414021627.1236560-3-david@tethera.net
2021-04-18 09:50:26 -03:00
Jonas Bernoulli
c454135376 emacs: Use makefile-gmake-mode in Makefile*s
Use `makefile-gmake-mode' instead of `makefile-mode' because the
former also highlights ifdef et al. while the latter does not.

"./Makefile.global" and one "Makefile.local" failed to specify any
major mode at all but doing so is necessary because Emacs does not
automatically figure out that these are Makefiles (of any flavor).
2020-08-09 21:14:36 -03:00
William Casarin
5f22d16273 perf-tests: #!/bin/bash -> #!/usr/bin/env bash
I couldn't run the performance tests on my machines due to a hardcoded
bash path. Use env for finding bash in weird systems like NixOS.

Signed-off-by: William Casarin <jb55@jb55.com>
2019-06-07 07:59:56 -03:00
David Bremner
a56aa472d1 performance-tests: tests for renamed/copied files in notmuch new
Several people have observed that this is surprisingly slow, and we
have a proposal to add tagging into this code path, so we want to make
sure it doesn't imply too much of a performance hit.
2019-04-05 12:14:58 -03:00
David Bremner
c9aa29291b performance-test: fix copy-paste error in test description 2019-03-31 11:59:46 -03:00
David Bremner
60fcec82d2 perf-test: add simple test for thread subqueries
This is not a particularly sensible query, but thread:{date:2010} is a
good way to generate fairly large intermediate queries.
2018-05-07 08:42:53 -03:00
David Bremner
1e4e8e3bf5 test: unbreak performance tests
In 8e7fb88237 Jani replaced the use of $(pwd -P) to find the
TEST_DIRECTORY in order to better support out of tree
builds. Unfortunately the performance-tests need a different value for
the variable and were thus broken.

This commit splits out the setting of this variable for the two sets
of tests.  Performance tests still don't work out of tree, because
the handling of the downloaded corpus needs to be updated.
2017-12-04 21:04:38 -04:00
Jani Nikula
2e16b05152 perf-test: use source and build paths in perf-test-lib.sh
Make a distinction between source and build directories.
2017-10-20 19:54:22 -03:00
Jani Nikula
fd36ae9f51 perf-test: use $(dirname "$0") for sourcing perf-test-lib.sh
Don't assume the tests are always run from within the source tree.
2017-10-20 19:53:14 -03:00
David Bremner
49d4f52f27 perf-test: add memory test for notmuch-insert
In the future it might be worthwhile selecting corpus messages to
insert, but that seems a bit overcomplicated for now
2017-08-20 08:48:43 -03:00
David Bremner
6da87a1369 perf-test: renumber tests
One test per number so ordering is clear.
2017-08-20 08:34:12 -03:00
Vladimir Panteleev
ca4688e103 Use rooted paths in .gitignore files
A leading / in paths in a .gitignore file matches the beginning of the
path, meaning that for patterns without slashes, git will match files
only in the current directory as opposed to in any subdirectory.

Prefix relevant paths with / in .gitignore files, to prevent
accidentally ignoring files in subdirectories and possibly slightly
improve the performance of "git status".
2017-08-18 19:42:35 -03:00
Daniel Kahn Gillmor
e5beec39d6 add "notmuch reindex" subcommand
This new subcommand takes a set of search terms, and re-indexes the
list of matching messages.
2017-08-01 21:17:47 -04:00
David Bremner
e86fa3226c perf-test: add memory test for reply
Looking at the code for notmuch-reply, there seems to be several gmime
related memory leaks. This test is supposed to help eliminate those.
2017-05-30 09:02:17 -03:00
David Bremner
2571d535a3 perf-test/mem: add simple memory tests for notmuch search
Just copy and replace from the show tests. Currently these show no
major leaks.
2017-03-18 20:43:19 -03:00
David Bremner
b5d08ebdb9 perf-test: add simple memory tests for notmuch-show
These are probably too slow to run with the full corpus
2017-03-18 13:40:25 -03:00
David Bremner
0c8ce66ef4 perf-test: use 'eval' in memory_run
This allows the use of redirection in the tests
2017-03-18 13:34:32 -03:00
Daniel Kahn Gillmor
6a833a6e83 Use https instead of http where possible
Many of the external links found in the notmuch source can be resolved
using https instead of http.  This changeset addresses as many as i
could find, without touching the e-mail corpus or expected outputs
found in tests.
2016-06-05 08:32:17 -03:00
Tomi Ollila
b183f2635e test: copyright information updates
Files in test directories had only copyright of a single individual,
of which code was adapted here as a base of the test system.
Since then many Notmuch Developers have contributed to the test
system, which is now acknowledged with a constant string in some
of the test files.

The README file in test directory instructed new files contain a
copyright notice, but that has never been done (and it is also not
needed). To simplify things a bit (and lessen confusion) this
instruction is now removed.

As a side enchangement, all of the 3 entries in the whole source
tree cd'ing to `dirname` of "$0" now uses syntax cd "$(dirname "$0")".
This makes these particular lines work when current working directory
is e.g. /c/Program Files/notmuch/test/.
(Probably it would fail elsewhere, though.)
2016-05-19 07:56:58 -03:00
Tomi Ollila
02a2eeb427 test: make script exit (1) if it "fails" to source (.) a file
The files (test) scripts source (with builtin command `.`) provides
information which the scripts depend, and without the `source` to
succeed allowing script to continue may lead to dangerous situations
(e.g. rm -rf "${undefined_variable}"/*).

At the end of all source (.) lines construct ' || exit 1' was added;
In our case the script script will exit if it cannot find (or read) the
file to be sourced. Additionally script would also exits if the last
command of the sourced file exited nonzero.
2015-08-07 21:56:39 +02:00
J. Lewis Muir
d08af93c65 cli: change "setup" to "set up" where used as a verb
The word "setup" is a noun, not a verb.  Change occurrences of "setup"
where used as a verb to "set up".
2015-05-31 19:14:42 +02:00
David Bremner
fe8cd90f97 build: add dataclean
It turns out to be inconvenient to delete the downloaded datafiles with
distclean, so I propose a new target which does that instead.

The closest conventional target is 'maintainer-clean'; the difference
here is that having the original source tarball is not enough to
reconstruct these files.
2014-05-28 09:52:10 -03:00
David Bremner
e7a7943862 build: don't overwrite DISTCLEAN in performance-test
This might have worked once for some fixed order of including
makefiles, but it is clearly wrong now.
2014-05-28 09:51:40 -03:00
David Bremner
8fcc3260a9 perf-test: use command line arguments for directories
It seems that between version 1.26 and 1.27 of gnu tar, directories to
be extracted read with --files-from are no longer recursively extacted.
This patch puts them on the command line instead.
2014-03-14 21:47:43 -03:00
David Bremner
2de8ce9b37 perf-test: bump version to 0.4, use manifest files
The new revision of the performance test includes manifests for each corpus,
so update the support library to use these manifests at the same time.
2013-12-10 04:00:38 +08:00
Austin Clements
abedb55a45 perf: Clean corpus and caches in distclean, not clean
Previously, we cleaned the downloaded performance corpus and the
cached indexes on 'make clean'.  This seems heavy-handed, since these
take a long time to download, unpack, and index.  They also aren't
make targets to begin with.  Move cleaning these to 'make distclean'.
This isn't exactly the right meaning of "distclean", but it's closer.
2013-10-25 21:24:43 -03:00
Jani Nikula
2cbd68de92 build: fix out-of-tree builds
Support for out-of-tree builds was added in
commit 3e4a9d60a9
Author: Carl Worth <cworth@cworth.org>
Date:   Wed Mar 9 15:02:42 2011 -0800

    build: Add support for non-source-directory builds.

and broken in
commit 7beeb8c88a
Author: David Bremner <bremner@debian.org>
Date:   Sat Nov 17 12:28:15 2012 -0400

    test: initial performance testing infrastructure

Fix the build breakage.

Out-of-tree 'make test' has been broken since earlier than the above,
and remains broken, as does out-of-tree perf test, but at least the
build now works.
2013-05-26 18:49:04 -03:00
David Bremner
e1cc5159b0 perf-test: add notmuch-memory-test
Somehow this file was not added to the patch set which split the tests
into time and memory tests. Take advantage of the the "new" way of
running tests to avoid listing the explicitly.
2013-05-15 22:23:29 -03:00
David Bremner
e9cdff74cc perf-test: run all appropriately named time tests
This avoids hassle with manually adding every test to the master list.
2013-05-15 22:23:29 -03:00
David Bremner
0eab376658 perf-test: rename time tests to have .sh suffix
This will simplify notmuch time tests
2013-05-15 22:23:29 -03:00
David Bremner
23e2154cae perf-test: rename memory tests
The common suffix will help running them all automatically.
2013-05-15 22:23:29 -03:00
David Bremner
8d05dcfffe perf-test: initial support for talloc leak report in memory tests
As with the valgrind logs, we print a (very) brief summary and leave
the log for inspection.
2012-12-30 21:12:11 -04:00
David Bremner
e233f6dfde perf-test: add memory leak test for dump restore
In id:87vcc2q5n2.fsf@nikula.org, Jani points out a memory leak in the
current version of the sup restore code. Among other things, this test
is intended to verify a fix for that leak.
2012-12-25 08:49:24 -04:00
David Bremner
098ef4af4d perf-test: initial version of memory test infrastructure.
The idea is run some code under valgrind --leak-check=full and report
a summary, leaving the user to peruse the log file if they want.

We go to some lengths to preserve the log files from accidental
overwriting; the full corpus takes about 3 hours to run under valgrind
on my machine.

The naming of the log directories may be slightly controversial; in
the unlikely event of two runs in less than a second, the log will be
overwritten. A previous version with mktemp+timestamp was dismissed as
overkill; just mktemp alone does not sort nicely.

One new test is included, to check notmuch new for memory leaks.
2012-12-25 08:49:24 -04:00
David Bremner
047cd7a595 perf-test: rename current tests as "time tests"
This is almost entirely renaming files, except for updating a few
references to those file names, and changing the makefile target.

A new set of memory tests will be run separately because they take
much longer.
2012-12-25 08:49:24 -04:00
David Bremner
f43b23f8e0 perf-test: remove redundant "initial notmuch new"
The initial notmuch-new and caching are now done automatically by
time_start
2012-12-25 08:49:24 -04:00
David Bremner
327f30a8f3 perf-test: use nmbug tags in dump-restore tests
This makes the tag set a bit less trivial.

Note that if you use the small corpus, this is not so interesting (and
is also a bit noisy) since the messages will not be found. In the
future this could be checked for.

Conflicts:
	performance-test/01-dump-restore
2012-12-15 08:30:13 -04:00
David Bremner
51b0f8ff33 perf-test: split basic into 00-new, 01-dump-restore, and 02-tag
We use the new "time_start" function to restore the database from cache
if possible.
2012-12-15 08:29:08 -04:00