1
0
Commit graph

9 Commits

Autor SHA1 Nachricht Datum
Lars Hjemli
939d32fda7 Redesign the caching layer
The original caching layer in cgit has no upper bound on the number of
concurrent cache entries, so when cgit is traversed by a spider (like the
googlebot), the cache might end up filling your disk. Also, if any error
occurs in the cache layer, no content is returned to the client.

This patch redesigns the caching layer to avoid these flaws by
* giving the cache a bound number of slots
* disabling the cache for the current request when errors occur

The cache size limit is implemented by hashing the querystring (the cache
lookup key) and generating a cache filename based on this hash modulo the
cache size. In order to detect hash collisions, the full lookup key (i.e.
the querystring) is stored in the cache file (separated from its associated
content by ascii 0).

The cache filename is the reversed 8-digit hexadecimal representation of

  hash(key) % cache_size

which should make the filesystem lookup pretty fast (if directory content
is indexed/sorted); reversing the representation avoids the problem where
all keys have equal prefix.

There is a new config option, cache-size, which sets the upper bound for
the cache. Default value for this option is 0, which has the same effect
as setting nocache=1 (hence nocache is now deprecated).

Included in this patch is also a new testfile which verifies that the
new option works as intended.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-04-28 11:32:42 +02:00
Lars Hjemli
e01f1403b9 Fix segfault in patch view for root commit
The code for patch view assumed the current commit would always have a parent,
which made cgit segfault when that wasn't the case.

This fixes the bug and adds a test-script for patch view which includes a test
for the inital commit.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-03-17 23:51:47 +01:00
Lars Hjemli
538cb4a7d7 tests/setup.sh: cleanup test script output and logging
Log the complete output from each test-script in test-output.log and tell the
user about the logfile when a test-script fails.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-02-24 20:25:20 +01:00
Lars Hjemli
20cdffd5e0 t0010-validate.sh: return on cgit errors
The earlier segfault in cgit passed by unnoticed by this test-script due to
the pipe between cgit and sed.

There might be a more elegant solution to this problem, but my shellscript-
foo is weak.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-02-24 19:53:08 +01:00
Lars Hjemli
b44b02a982 Make output from make test more readable
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-02-24 16:05:58 +01:00
Lars Hjemli
e5ca46bf4b Brown paper bag: don't use grep -v
For some inexplicable reason I'd gotten the semantics of `grep -v` totally
backwards, thinking it somehow would make the exitcode from grep indicate
the non-match of the specified pattern.

This fixes the broken tests and gives me a valuable lession about shell
programming at the same time.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-02-24 15:55:01 +01:00
Lars Hjemli
19134112bf Add regression-test for description-less repos
The segfault fixed in commit eacde43d71 was
triggered when the html-functions manipulated string literals. One callpatch
which could trigger the bug is in ui-repolist.c when repo descriptions are
passed to html_ntxt(): if a repo is lacking a description, the literal
string "[no description]" is used.

This patch changes test/setup.sh such that the first repo has no description,
and adds tests for both "[no description]" and "the bar repo" (description
of the other repo) to tests/t0101-index.sh, which should be enought to catch
regressions in these functions.

Noticed-by: Hiroki Hattori <seagull.kamome@gmail.com>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-02-24 15:27:33 +01:00
Lars Hjemli
2915483ef6 Fix html error detected by test-suite
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-11-11 13:04:28 +01:00
Lars Hjemli
b4649fc905 Create initial testsuite
This creates a simple testsuite, heavily inspired by the testsuite in git.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-11-11 12:00:13 +01:00