86 lines
3.1 KiB
Plaintext
86 lines
3.1 KiB
Plaintext
The Berkeley DB Upgrade Tests
|
|
|
|
Quick ref:
|
|
|
|
Running the tests:
|
|
(in tclsh)
|
|
% source ../test/test.tcl
|
|
% upgrade
|
|
|
|
Generating the test databases:
|
|
(in tclsh)
|
|
% source ../test/test.tcl
|
|
% gen_upgrade /where/you/want/them
|
|
|
|
(in your shell)
|
|
$ cd /where/you/want/them
|
|
$ perl $db_dir/upgrade/scripts/pack-3.0.pl
|
|
$ mv 3.0 $db_dir/upgrade/databases
|
|
|
|
What they are:
|
|
|
|
The DB upgrade tests are a framework for testing two main features of
|
|
Berkeley DB: the db_dump utility, and the "DB_UPGRADE" flag to DB->open.
|
|
They work by taking a tarred, gzipped set of test databases and dumps, and
|
|
verifying that the set of items is the same in the original database (as
|
|
dumped by the version of DB that created it) as in the upgraded one,
|
|
and is the same in the original database and in a new database generated by
|
|
db_loading a db_dump.
|
|
|
|
In db 3.X and higher, the upgrade test is repeated on a database with
|
|
the opposite endianness to the system the database was generated on.
|
|
|
|
How to generate test databases:
|
|
|
|
Ordinarily, this is something that only very rarely has to occur;
|
|
an archive of upgrade test databases can and should be kept, so ideally
|
|
the generation step only needs to be done once for each major DB release.
|
|
|
|
To generate the test databases, execute the command "gen_upgrade <dir>"
|
|
inside a tclsh. The method tests will run twice, once for each endianness,
|
|
and all the databases will be saved in a hierarchy named by <dir>.
|
|
|
|
Once the databases have been built, the archives expected by the upgrade tests
|
|
must be built using the "pack" script, in upgrade/scripts/pack-<version>.pl.
|
|
This script must be edited slightly to specify the location on a given system
|
|
of the DB source tree and utilities; it then converts the set of databases
|
|
under the current working directory into a set of .tar.gz files containing
|
|
the databases as well as flat files with their contents in item-by-item and
|
|
db_dump formats.
|
|
|
|
How to run the upgrade tests:
|
|
|
|
Run "upgrade" from tclsh in the DB build directory. By default, this
|
|
looks in upgrade/databases, in the DB source tree. An optional first argument
|
|
can be used to specify an alternate directory.
|
|
|
|
A note on 2.X tests:
|
|
|
|
The 2.X packing script, as well as a patch against a 2.6.6 test directory
|
|
to allow it to generate test databases, is in upgrade/generate-2.X.
|
|
|
|
Note that the upgrade tests can be *run* on an the 2.X test archives
|
|
without anything in this directory. It is provided only for
|
|
archival reasons, in case there is ever reason to generate a new
|
|
set of test databases.
|
|
|
|
XXX: Note also that it quite likely has paths hard-coded for a specific
|
|
system that is not yours.
|
|
|
|
Known Issues:
|
|
|
|
1. The following 2.X databases trigger a bug in the db 2.X hash code.
|
|
This bug affects only empty and near-empty databases, and has been
|
|
corrected in db 3.X, but it will prevent the following from passing
|
|
the db_dump test. (They have been removed from the canonical database
|
|
collection.)
|
|
|
|
2.X hash -- test026
|
|
2.X hash -- test038
|
|
2.X hash -- test039
|
|
2.X hash -- test040
|
|
|
|
2. The 2.X recno versions of test043 cannot be made to pass the db_dump
|
|
test because the 2.X version of db_dump has no -k flag and cannot preserve
|
|
sparsely populated databases.
|