Rusty Russell [Wed, 31 Aug 2011 06:01:08 +0000 (15:31 +0930)]
tdb2: fix bogus error from tdb_unlockall() after fork in tdb1 backend.
We're always allowed to unlock after a fork; by setting the count to 0
before calling the generic unlock function we don't trigger the pid
check.
Rusty Russell [Wed, 31 Aug 2011 06:01:08 +0000 (15:31 +0930)]
tdb2: check lock owner in tdb1 backend.
This reports errors if we fork() while holding a lock, or misuse a tdb
which we have dual-opened.
Rusty Russell [Wed, 31 Aug 2011 06:01:08 +0000 (15:31 +0930)]
tdb2: return TDB_ERR_RDONLY from transactions on R/O databases, log nesting
Rather than rturning TDB_ERR_EINVAL, return TDB_ERR_RDONLY, and log
when we fail due to nesting.
Rusty Russell [Wed, 31 Aug 2011 06:01:08 +0000 (15:31 +0930)]
tdb2: add stats to tdb1 backend.
It's actually quite a good fit; we use compare_wrong_bucket for dead
records, which is kind of correct (they should be in the free list).
Rusty Russell [Wed, 31 Aug 2011 06:01:07 +0000 (15:31 +0930)]
tdb2: increment seqnum on tdb_wipe_all in tdb1 backend.
Rusty Russell [Wed, 31 Aug 2011 06:01:07 +0000 (15:31 +0930)]
tdb2: log an error when calling tdb_store() on read-only TDB in tdb1 backend.
Rusty Russell [Wed, 31 Aug 2011 06:01:07 +0000 (15:31 +0930)]
tdb2: catch errors in tdb1_needs_recovery()
The tdb1 backend simply returns "true" if there's an error determining
if a tdb needs recovery. But this leads failtest down a rabbit hole;
it's better to return the error at this case (and makes for better for
diagnostics, since they will come from the first fault, not later in
tdb1_transaction_recover().
Rusty Russell [Wed, 31 Aug 2011 06:01:07 +0000 (15:31 +0930)]
tdb2: add tdb_attribute_tdb1_max_dead
This allows us to simulate the old "volatile" flag for tdb1. It's not
necessary for tdb2.
As this is the last function in tdb1.h, we remove that file.
Rusty Russell [Wed, 31 Aug 2011 06:01:07 +0000 (15:31 +0930)]
tdb2: expose and document tdb1_incompatible_hash.
Rusty Russell [Wed, 31 Aug 2011 06:01:07 +0000 (15:31 +0930)]
tdb2: make tdb1_null static.
It's only used in two files, make it static in one and do it manually
in the other.
Rusty Russell [Wed, 31 Aug 2011 06:01:07 +0000 (15:31 +0930)]
tdb2: tdb_repack
Move the tdb1_repack() code into the core, make it general, rename to
tdb_repack().
It's generic code: copy database into temporary, wipe it, copy back.
Rusty Russell [Wed, 31 Aug 2011 06:01:07 +0000 (15:31 +0930)]
tdb2: unify tdb1_wipe into tdb_wipe.
Switch on the TDB_VERSION1 flag.
Rusty Russell [Wed, 31 Aug 2011 06:01:07 +0000 (15:31 +0930)]
tdb2: unify tdb1_get_seqnum/tdb1_increment_seqnum into tdb_get_seqnum/tdb_inc_seqnum
Switch on the TDB_VERSION1 flag.
Rusty Russell [Wed, 31 Aug 2011 06:01:07 +0000 (15:31 +0930)]
tdb2: unify tdb1_firstkey/tdb1_nextkey into tdb_firstkey/tdb_nextkey.
Switch on the TDB_VERSION1 flag.
Rusty Russell [Wed, 31 Aug 2011 06:01:07 +0000 (15:31 +0930)]
tdb2: unify tdb1_check and tdb1_summary into tdb_check and tdb_summary.
Switch on the TDB_VERSION1 flag. Also, change tdb1_check's checkfn argument
to return an error code (and set tdb->last_error accordingly).
Rusty Russell [Wed, 31 Aug 2011 06:01:07 +0000 (15:31 +0930)]
tdb2: unify tdb1_transaction_start etc. into tdb_transaction_start.
Switch on the TDB_VERSION1 flag.
Rusty Russell [Wed, 31 Aug 2011 06:01:06 +0000 (15:31 +0930)]
tdb2: unify tdb1_parse_record into tdb_parse_record
Switch on the TDB_VERSION1 flag.
Rusty Russell [Wed, 31 Aug 2011 06:01:06 +0000 (15:31 +0930)]
tdb2: unify tdb1_chainlock et al. into tdb_chainlock
Switch on the TDB_VERSION1 flag.
Rusty Russell [Wed, 31 Aug 2011 06:01:06 +0000 (15:31 +0930)]
tdb2: unify tdb1_traverse into tdb_traverse
Switch on the TDB_VERSION1 flag; we now only do a tdb1_traverse_read on a
read-only database, as there is no tdb2 equivalent.
Rusty Russell [Wed, 31 Aug 2011 06:01:06 +0000 (15:31 +0930)]
tdb2: unify tdb1_store into tdb_store
Switch on the TDB_VERSION1 flag.
Rusty Russell [Wed, 31 Aug 2011 06:01:06 +0000 (15:31 +0930)]
tdb2: unify tdb1_delete into tdb_delete.
Switch on the TDB_VERSION1 flag.
Rusty Russell [Wed, 31 Aug 2011 06:01:06 +0000 (15:31 +0930)]
tdb2: unify tdb1_append into tdb_append
Switch on the TDB_VERSION1 flag.
Rusty Russell [Wed, 31 Aug 2011 06:01:06 +0000 (15:31 +0930)]
tdb2: unify tdb1_fetch into tdb_fetch
Switch on the TDB_VERSION1 flag.
Rusty Russell [Wed, 31 Aug 2011 06:01:06 +0000 (15:31 +0930)]
tdb2: unify tdb1_store into tdb_store
Switch on the TDB_VERSION1 flag.
Rusty Russell [Wed, 31 Aug 2011 06:01:06 +0000 (15:31 +0930)]
tdb2: unify tdb1_open into tdb_open
Finally, we gut tdb1_open() to the tdb1-specific parts, and call it
from tdb_open if they specify the TDB_VERSION1 flag or the version is
a TDB1.
We also unify tdb_close(), based on the TDB_VERSION1 flag.
Note that tdb_open(TDB_VERSION1) will fail on an existing tdb if it's
a TDB2.
Rusty Russell [Wed, 31 Aug 2011 06:01:06 +0000 (15:31 +0930)]
tdb2: disallow SEED attribute with TDB_VERSION1.
It also only makes sense with O_CREAT.
Rusty Russell [Wed, 31 Aug 2011 06:01:06 +0000 (15:31 +0930)]
tdb2: add TDB_ATTRIBUTE_TDB1_HASHSIZE
This replaces the tdb1_open "hash_size" argument. It will only be
valid when you call tdb_open() with O_CREAT in open_flags, and
TDB_VERSION1 in tdb_flags.
Rusty Russell [Wed, 31 Aug 2011 06:01:06 +0000 (15:31 +0930)]
tdb2: make tdb1_open use attributes for logging, hash function.
This brings it closer to tdb_open(), so we can unify more easily.
Rusty Russell [Wed, 31 Aug 2011 06:01:05 +0000 (15:31 +0930)]
tdb2: make jenkins_hash function non-static, rename to tdb_jenkins_hash.
We're going to need access to it from tdb1_open, so expose it now.
It's better in hash.c anyway.
Rusty Russell [Wed, 31 Aug 2011 06:00:16 +0000 (15:30 +0930)]
tdb2: remove double-open detection for TDB1 databases.
This is a percursor to unifying with tdb_open() from tdb2, which handles
this itself.
Rusty Russell [Wed, 31 Aug 2011 05:59:16 +0000 (15:29 +0930)]
tdb2: merge tdb1_context into tdb_context.
Finally, we split out the tdb2-specific parts of tdb_context, and put
them into a "tdb2" sub-struct; the tdb1 parts go into a "tdb1"
sub-struct. We get rido of tdb1_context and use tdb_context
everywhere.
Rusty Russell [Wed, 31 Aug 2011 05:58:16 +0000 (15:28 +0930)]
tdb2: use tdb->flags & TDB_RDONLY instead of tdb->read_only for TDB1 code.
There's also a semantic change here: for tdb1, being read-only meant no
locking, and it was an error to try to lock a r/o database. For TDB2, you'd
need to specify TDB_NOLOCK, which suppresses locking silently.
Rusty Russell [Wed, 31 Aug 2011 05:57:16 +0000 (15:27 +0930)]
tdb2: Make TDB1 use the same tdb_hash() wrapper as TDB2
This means converting the tdb1 inbuilt hash functions to the
tdb2-style, so they return 64 bit. We truncate to 32 bit everywhere
but in tdb_check() which needs to do so explicitly.
Rusty Russell [Wed, 31 Aug 2011 05:56:16 +0000 (15:26 +0930)]
tdb2: don't cancel transactions on lock failures in tdb1 backend.
In TDB2, the user can override locking functions, so they may
deliberarely fail (eg. be non-blocking) expecting to retry.
For this reason, the TDB2 API requires the caller to cancel the
transaction if tdb_transaction_prepare_commit() fails.
Rusty Russell [Wed, 31 Aug 2011 05:55:16 +0000 (15:25 +0930)]
tdb2: suppress tdb1 backend logging when locking returns EINTR or EAGAIN
The TDB1 code logs multiple times on errors; we must prevent that in
the limited case where locking fails. With TDB2, this can happen due
to the lock function attribute, where the user supplies replacement
locking functions which are allowed to return with errno EAGAIN or
EINTR for various special-effects. Flooding the logs for this is
unfriendly.
Rusty Russell [Wed, 31 Aug 2011 05:54:16 +0000 (15:24 +0930)]
tdb2: make tdb1 use same low-level lock functions.
This means they will use the TDB_ATTRIBUTE_FLOCK functions, and get automatic
reopen support.
Rusty Russell [Wed, 31 Aug 2011 05:53:16 +0000 (15:23 +0930)]
tdb2: Make tdb1 use the tdb_file structure.
Because tdb2 allows multiple opens of the same TDB, we separate out
the file information from the struct tdb_context. Do the same for
tdb1.
Rusty Russell [Wed, 31 Aug 2011 05:52:16 +0000 (15:22 +0930)]
tdb2: add TDB_VERSION1 flag.
This will be set for old TDBs; we can start distinguishing paths based
on it now.
Rusty Russell [Wed, 31 Aug 2011 05:51:16 +0000 (15:21 +0930)]
tdb2: Make TDB1 code use TDB2's open flags.
This means getting rid of TDB_VOLATILE (perhaps we should use an
attribute for that?), TDB_INCOMPATIBLE_HASH (use the
tdb_attribute_hash for that) and TDB_CLEAR_IF_FIRST (use the
tdb_attribute_openhook for that).
We also get rid of TDB_DISALLOW_NESTING: that's the default for TDB2.
Rusty Russell [Wed, 31 Aug 2011 05:50:16 +0000 (15:20 +0930)]
tdb2: approximate INCOMPATIBLE_HASH flag with tdb1_incompatible_hash()
Rather than leak TDB_INCOMPATIBLE_HASH through to the TDB2 API, we make
it that if they use the tdb1_incompatible_hash function as their hash,
then we treat it as if they had specified the TDB_INCOMPATIBLE_HASH
flag (ie. we mark the header so it's unusable by tdb < 1.2.6).
This precludes the possibility of using TDB_INCOMPATIBLE_HASH with a
custom hash function: that used to allow the user to ensure that old TDB
versions couldn't open the TDB file (and recent ones check the header to
ensure they're using the right hash). But that's a small loss.
Rusty Russell [Wed, 31 Aug 2011 05:49:16 +0000 (15:19 +0930)]
tdb2: Make tdb1 share tdb_store flags, struct tdb_data and TDB_MAGIC_FOOD.
Rusty Russell [Wed, 31 Aug 2011 05:48:16 +0000 (15:18 +0930)]
tdb2: make TDB1 code use tdb2's TDB_ERROR and tdb_logerr()
To do this, we make sure that the first few fields of tdb1_context and
tdb_context are the same.
This sweep also fixes up a few paths where we weren't setting
tdb->ecode before our old logging function.
Rusty Russell [Wed, 31 Aug 2011 05:47:16 +0000 (15:17 +0930)]
tdb2: make tdb1 headers include tdb2 headers.
They're about to start sharing TDB2's definitions.
Rusty Russell [Wed, 31 Aug 2011 05:46:16 +0000 (15:16 +0930)]
tdb2: rearrange tdb_context layout so tdb1_context can match
By moving all the parts of struct tdb_context which logging and
locking use to the beginning of the structure, we can make
tdb1_context match, and thus pass that directly to the tdb_logerr()
function, and later the locking functions.
This is only necessary until we unify tdb1_context and tdb_context.
Rusty Russell [Wed, 31 Aug 2011 05:45:16 +0000 (15:15 +0930)]
tdb2: remove TDB1 TDB_NO_FSYNC environment variable hack.
The caller should do this: the SAMBA compatibility later does.
Rusty Russell [Wed, 31 Aug 2011 05:44:16 +0000 (15:14 +0930)]
tdb2: get rid of TDB1 mark and nonblock functions.
We do this using hooks in tdb2.
Rusty Russell [Wed, 31 Aug 2011 05:43:16 +0000 (15:13 +0930)]
tdb2: remove _PUBLIC_ in tdb1 functions.
They'll all be accessed via the tdb2 API.
Rusty Russell [Wed, 31 Aug 2011 05:42:16 +0000 (15:12 +0930)]
tdb2: Remove unused tdb1 functions.
We're going to use TDB2's API, so some TDB1 APIs are obviously unnecessary.
We also get rid of USE_RIGHT_MERGES and TRACE code.
Rusty Russell [Wed, 31 Aug 2011 05:41:16 +0000 (15:11 +0930)]
tdb2: test: import tdb1's tests.
The main change is to s/tdb/tdb1_/ everywhere.
Rusty Russell [Wed, 31 Aug 2011 05:40:16 +0000 (15:10 +0930)]
tdb2: include tdb1 source in tests.
Since we've renamed everything in tdb1, they won't clash.
Rusty Russell [Wed, 31 Aug 2011 05:39:16 +0000 (15:09 +0930)]
tdb2: import TDB1 code.
We import the entire codebase, putting a "tdb1_" prefix on the files
and changing the "tdb_" prefix to "tdb1_" everywhere.
The next patches will gradually merge it with the TDB2 code where
necessary.
Rusty Russell [Wed, 31 Aug 2011 05:38:16 +0000 (15:08 +0930)]
tdb2: make tests include a single mega-header to simplify future patches
This lets us add the new files to a single place.
Rusty Russell [Wed, 31 Aug 2011 05:37:16 +0000 (15:07 +0930)]
tdb2: tdb_foreach()
Create an iterator over every open tdb (not internal TDBs). This is
useful for re-establishing the tdb1-style active lock for
CLEAR_IF_FIRST.
Rusty Russell [Wed, 31 Aug 2011 05:37:13 +0000 (15:07 +0930)]
tdb2: keep link of every non-internal tdb.
Instead of a per-file linked list, use a per-tdb list. This is needed
for tdb_foreach().
Rusty Russell [Wed, 31 Aug 2011 05:36:25 +0000 (15:06 +0930)]
tdb2: save openhook, allow tdb_get_attribute() on it.
This makes it easy to call it again after a fork(), such as for
re-establishing the CLEAR_IF_FIRST files locks.
Rusty Russell [Wed, 31 Aug 2011 04:28:15 +0000 (13:58 +0930)]
tdb2: add TDB_RDONLY flag, allow setting/unsetting it.
You can only unset it if the TDB was originally opened O_RDWR.
Also, cleaned up error handling in tdb_allrecord_lock() so we only get
one log message on a r/o database.
Rusty Russell [Wed, 31 Aug 2011 04:27:15 +0000 (13:57 +0930)]
tdb2: return TDB_ERR_RDONLY if trying to start a transaction on a R/O tdb.
This is more accurate than returning TDB_ERR_EINVAL.
Rusty Russell [Wed, 31 Aug 2011 04:26:15 +0000 (13:56 +0930)]
tdb2: save open_flags instead of mmap_flags.
It's more consistent with what tdb1 does, and slightly more encapsulated.
Rusty Russell [Wed, 31 Aug 2011 04:25:15 +0000 (13:55 +0930)]
tdb2: Hand error code to logging function.
Since we've deprecated tdb_error() function (and it didn't work right
from inside the logging function anyway, since we didn't set
tdb->ecode yet) we need to hand it to the log function.
Rusty Russell [Wed, 31 Aug 2011 01:15:12 +0000 (10:45 +0930)]
tdb2: move transaction lock
Make it the same offset as TDB1. This isn't strictly necessary, but
it would allow for total unification later, since TDB1 and TDB2's
transaction code is otherwise completely compatible.
Rusty Russell [Wed, 31 Aug 2011 01:14:12 +0000 (10:44 +0930)]
tdb2: enforce TDB_CONVERT
If the caller actually specifies TDB_CONVERT, fail if the TDB does not
need conversion. It's unusual for the user to specify TDB_CONVERT
(it's auto-detected) but better to be strict.
Rusty Russell [Wed, 31 Aug 2011 01:13:12 +0000 (10:43 +0930)]
tdb2: cleanup oob handling.
The tdb_oob() function can fail due to errors, as well as because the length
asked for is greater than the size of the file. Clean that up:
(1) If probe is true, only fail if there's an error, not if the length is
too great.
(2) Exit tdb_open() if it tdb_oob() probe fails; this helps cut down
test time for failtest.
(3) Don't set probe to true in tdb_direct() fail; a minor issue, but it means
we log failure.
Rusty Russell [Wed, 31 Aug 2011 01:12:12 +0000 (10:42 +0930)]
tdb2: fix tdb_lock offset.
It can be 64 bits, for huge databases.
Rusty Russell [Wed, 31 Aug 2011 01:11:12 +0000 (10:41 +0930)]
tdb2: fix internal tdb_write_convert() error handling in tdb_open()
As noted, failtest was taking a long time, because a failure injected here
was not detected.
Rusty Russell [Wed, 31 Aug 2011 01:10:12 +0000 (10:40 +0930)]
tdb2: Fix to always use 64-bit offset definition
We use off_t in the tdb2 interface (for tdb_attribute_flock); we need
to make sure that all callers agree on the size.
This also causes a problem in the tests: it's not enough to include
config.h first, we need the _FILE_OFFSET_BITS define from private.h.
Otherwise, we can disagree about the definitions of F_SETLK, F_SETLKW
and off_t, causing strange problems.
Volker Lendecke [Wed, 10 Aug 2011 17:53:53 +0000 (19:53 +0200)]
tally: Adapt tally_histogram to Samba coding conventions
Autobuild-User: Volker Lendecke <vlendec@samba.org>
Autobuild-Date: Wed Aug 10 21:12:59 CEST 2011 on sn-devel-104
(Imported from SAMBA commit
f7b820c3590ac78dd0dea67ac882f53ae6f550d9)
Volker Lendecke [Wed, 10 Aug 2011 17:52:58 +0000 (19:52 +0200)]
tally: Adapt get_max_bucket to Samba coding conventions
(Imported from SAMBA commit
fed977514019e130322fb21ad5726ee997965898)
Volker Lendecke [Wed, 10 Aug 2011 17:52:40 +0000 (19:52 +0200)]
tally: Adapt tally_approx_median to Samba coding conventions
(Imported from SAMBA commit
35550ba641d251a2dc3762b08eda92d0f7ce6bed)
Volker Lendecke [Wed, 10 Aug 2011 17:52:15 +0000 (19:52 +0200)]
tally: Adapt bucket_range to Samba coding conventions
(Imported from SAMBA commit
eac2f44cde39d16b827b7e2d360f7a7fb1d940e5)
Volker Lendecke [Wed, 10 Aug 2011 17:51:56 +0000 (19:51 +0200)]
tally: Adapt tally_mean to Samba coding conventions
(Imported from SAMBA commit
06a41594554a1a6881dcbf9d051a822f8f955b56)
Volker Lendecke [Wed, 10 Aug 2011 17:51:26 +0000 (19:51 +0200)]
tally: Adapt divls64 to Samba coding conventions
(Imported from SAMBA commit
f589af19821e12aba6145492fd4ded58f07131b8)
Volker Lendecke [Wed, 10 Aug 2011 17:50:52 +0000 (19:50 +0200)]
tally: Avoid some // style comments in divls64
(Imported from SAMBA commit
b32f086d643eb39c3806e30b19a028e6a59f0054)
Volker Lendecke [Wed, 10 Aug 2011 17:49:55 +0000 (19:49 +0200)]
tally: Adapt divlu64 to Samba coding conventions
(Imported from SAMBA commit
ee91004f4bddcda873f8ccde1db16609a66a493b)
Volker Lendecke [Wed, 10 Aug 2011 17:49:23 +0000 (19:49 +0200)]
tally: Avoid some // style comments in divlu64
(Imported from SAMBA commit
26795b3dd1a90c61424cd8f1761f98bc60b3ddc4)
Volker Lendecke [Wed, 10 Aug 2011 17:46:52 +0000 (19:46 +0200)]
tally: Adapt fls64 to Samba coding conventions
(Imported from SAMBA commit
73414d0ee7bbe371b0f9b275b44ce5854a10b9f2)
Volker Lendecke [Wed, 10 Aug 2011 17:46:37 +0000 (19:46 +0200)]
tally: Adapt tally_num to Samba coding conventions
(Imported from SAMBA commit
3f67063dfab1a7add95da5157206ccebb2f75df8)
Volker Lendecke [Wed, 10 Aug 2011 17:46:24 +0000 (19:46 +0200)]
tally: Adapt tally_add to Samba coding conventions
(Imported from SAMBA commit
9c32c86783bf6a3e126e6e83f51ccdf0ecdd132d)
Volker Lendecke [Wed, 10 Aug 2011 17:46:00 +0000 (19:46 +0200)]
tally: Adapt renormalize to Samba coding conventions
(Imported from SAMBA commit
1fa4236c40a727d7ae648e12d14d1f0f9fcf79b5)
Volker Lendecke [Wed, 10 Aug 2011 17:45:40 +0000 (19:45 +0200)]
tally: Adapt shift_overflows to Samba coding conventions
(Imported from SAMBA commit
4a3913fbb9399685785efa430765e0b5836ded60)
Volker Lendecke [Wed, 10 Aug 2011 17:45:24 +0000 (19:45 +0200)]
tally: Adapt bucket_min to Samba coding conventions
(Imported from SAMBA commit
a2d1d0b51485f2d383d1d69fa3bd6b79b9e8d5aa)
Volker Lendecke [Wed, 10 Aug 2011 17:45:14 +0000 (19:45 +0200)]
tally: Adapt bucket_of to Samba coding conventions
(Imported from SAMBA commit
68d0843437b05dc8a36091e4a307bfd912cbc09f)
Volker Lendecke [Wed, 10 Aug 2011 17:44:45 +0000 (19:44 +0200)]
tally: Adapt tally_new to Samba coding conventions
(Imported from SAMBA commit
c6ae297d613fc22b92c34d26c61ec1715058b484)
Volker Lendecke [Wed, 10 Aug 2011 17:44:10 +0000 (19:44 +0200)]
tally: Slightly simplify tally_new
(Imported from SAMBA commit
066d36a1a635e1115f62c452c49a9830d484c03b)
Volker Lendecke [Wed, 10 Aug 2011 17:43:21 +0000 (19:43 +0200)]
tally: Fix a c++ warning
(Imported from SAMBA commit
cb5c6f441f394f91bedf641aa76841bdb833e440)
Volker Lendecke [Wed, 10 Aug 2011 17:42:54 +0000 (19:42 +0200)]
tally: Fix a c++ warning
(Imported from SAMBA commit
54282e9f4eda083e70c7e56dda2bf425209add6d)
Rusty Russell [Tue, 30 Aug 2011 04:31:26 +0000 (14:01 +0930)]
Makefile: speed fastcheck
Rather than timeout, explicitly disable tests_pass_valgrind and
tests_compile_coverage. This is important now we run under valgrind
the first time we run the tests, thus would always time out and not
run most of the tests at all!
"make check" takes 7m57s, old "make fastcheck" takes 3m28s, and this takes
only 1m57s, but much more is run (as shown by the larger score total).
Rusty Russell [Tue, 30 Aug 2011 04:31:25 +0000 (14:01 +0930)]
ccanlint: clean up reduced feature handling.
Putting the reduced config.h in the current directory means that it's
actually being picked up by other tests, such as the string checks.
So move it to a sub-directory where we need an explicit -I.
We also fix the dependencies, so that "--target
tests_pass_without_features" works.
Rusty Russell [Tue, 30 Aug 2011 04:31:25 +0000 (14:01 +0930)]
ccanlint: show each test as we execute it with -vv
Tests can be slow to run, and this way we can monitor progress.
Rusty Russell [Tue, 30 Aug 2011 04:31:25 +0000 (14:01 +0930)]
ccanlint: handle duplicate dependencies in _info
We eliminate dependencies as we recurse, but if a single _info file
lists a dependency twice, we add it to the list twice and this skip
over the middle ones.
Rusty Russell [Tue, 30 Aug 2011 04:31:05 +0000 (14:01 +0930)]
ccanlint: add coverage variant of files.
Rather than a separate cov_compiled member, we can add to the
compiled[] array, and we reduce duplication significantly.
Rusty Russell [Tue, 30 Aug 2011 04:27:08 +0000 (13:57 +0930)]
ccanlint: keep separate array of compiled versions.
Rather than mug the old ->compiled version when we reduce features,
keep both in the structure. This makes it clear that we are using the
right version (we weren't in all cases, in particular we weren't
recompiling the test helpers correctly.
Rusty Russell [Mon, 29 Aug 2011 23:57:39 +0000 (09:27 +0930)]
ccanlint: run tests under valgrind initially.
Unless it's not available or suppressed, we might as well run it under
valgrind the first time, which speeds things a little.
We save the valgrind output file for tests_pass_valgrind's use later.
Rusty Russell [Mon, 29 Aug 2011 23:56:39 +0000 (09:26 +0930)]
ccanlint: add is_excluded() helper.
We'll need this in a moment.
Rusty Russell [Mon, 29 Aug 2011 23:55:39 +0000 (09:25 +0930)]
tools: simplify get_safe_ccan_deps
There's no reason to hand in the name of the compiled _info file,
since we don't compile it up in safe mode.
Rusty Russell [Mon, 29 Aug 2011 23:54:39 +0000 (09:24 +0930)]
ccanlint: fix warning about bogus return value.
Rusty Russell [Mon, 29 Aug 2011 23:53:39 +0000 (09:23 +0930)]
ccanlint: rename obj_list in examples_compile.c to example_obj_list.
Trivial cleanup, but differentiates from the general obj_list used
elsewhere.
Rusty Russell [Mon, 29 Aug 2011 23:52:39 +0000 (09:22 +0930)]
failtest: replay --failpath correctly on really failing opens.
When an open() call fails, we don't inject an error, but we didn't
apply this logic when replaying a failpath, with strange results.
Rusty Russell [Mon, 29 Aug 2011 23:51:39 +0000 (09:21 +0930)]
failtest: add --show-slowest
This is useful for seeing where failures cause us to run slowly
(ie. we continue for a long time before terminating).
Rusty Russell [Mon, 29 Aug 2011 23:50:39 +0000 (09:20 +0930)]
failtest: use ccan/time
Rusty Russell [Mon, 29 Aug 2011 08:03:25 +0000 (17:33 +0930)]
failtest: use 64 bit offsets if available.
We have to be consistent with the caller, so turn on 64 bit offsets if
available for both the caller and us.