Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/bareos/bareos-docs.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'manuals/en/developers/regression.md')
-rw-r--r--manuals/en/developers/regression.md495
1 files changed, 0 insertions, 495 deletions
diff --git a/manuals/en/developers/regression.md b/manuals/en/developers/regression.md
deleted file mode 100644
index d7d3c23..0000000
--- a/manuals/en/developers/regression.md
+++ /dev/null
@@ -1,495 +0,0 @@
-Bareos Regression Testing
-=========================
-
-Setting up Regession Testing
-----------------------------
-
-This document is intended mostly for developers who wish to ensure that
-their changes to Bareos don’t introduce bugs in the base code. However,
-you don’t need to be a developer to run the regression scripts, and we
-recommend them before putting your system into production, and before
-each upgrade, especially if you build from source code. They are simply
-shell scripts that drive Bareos through bconsole and then typically
-compare the input and output with <span>**diff**</span>.
-
-You can find the existing regression scripts in the Bareos developer’s
-<span>**git**</span> repository on SourceForge. We strongly recommend
-that you <span>**clone**</span> the repository because afterwards, you
-can easily get pull the updates that have been made.
-
-To get started, we recommend that you create a directory named
-<span>**bareos**</span>, under which you will put the current source
-code and the current set of regression scripts. Below, we will describe
-how to set this up.
-
-The top level directory that we call <span>**bareos**</span> can be
-named anything you want. Note, all the standard regression scripts run
-as non-root and can be run on the same machine as a production Bareos
-system (the developers run it this way).
-
-To create the directory structure for the current trunk and to clone the
-repository, do the following (note, we assume you are working in your
-home directory in a non-root account):
-
- git clone https://github.com/bareos/bareos-regress.git
-
-This will create the directory <span>**bareos-regress**</span>.
-The above should be needed only once. Thereafter to
-update to the latest code, you do:
-
- cd bareos-regress
- git pull
-
-There are two different aspects of regression testing that this document
-will discuss: 1. Running the Regression Script, 2. Writing a Regression
-test.
-
-Running the Regression Script
------------------------------
-
-There are a number of different tests that may be run, such as: the
-standard set that uses disk Volumes and runs under any userid; a small
-set of tests that write to tape; another set of tests where you must be
-root to run them. Normally, I run all my tests as non-root and very
-rarely run the root tests. The tests vary in length, and running the
-full tests including disk based testing, tape based testing, autochanger
-based testing, and multiple drive autochanger based testing can take 3
-or 4 hours.
-
-### Setting the Configuration Parameters
-
-There is nothing you need to change in the source directory.
-
-To begin:
-
- cd bareos-regress
-
-The very first time you are going to run the regression scripts, you
-will need to create a custom config file for your system. We suggest
-that you start by:
-
- cp prototype.conf config
-
-Then you can edit the <span>**config**</span> file directly.
-
-
- # Where to get the source to be tested
- BAREOS_SOURCE="${HOME}/bareos/bareos"
-
- # Where to send email !!!!! Change me !!!!!!!
- EMAIL=your-name@your-domain.com
- SMTP_HOST="localhost"
-
- TAPE_DRIVE="/dev/nst0"
- # if you don't have an autochanger set AUTOCHANGER to /dev/null
- AUTOCHANGER="/dev/sg0"
- # For two drive tests -- set to /dev/null if you do not have it
- TAPE_DRIVE1="/dev/null"
-
- # This must be the path to the autochanger including its name
- AUTOCHANGER_PATH="/usr/sbin/mtx"
-
- # Set what backend to use "postresql" "mysql" or "sqlite3"
- DBTYPE="postgresql"
-
- # Set your database here
- #WHICHDB="--with-${DBTYPE}=${SQLITE3_DIR}"
- WHICHDB="--with-${DBTYPE}"
-
- # Set this to "--with-tcp-wrappers" or "--without-tcp-wrappers"
- TCPWRAPPERS="--with-tcp-wrappers"
-
- # Set this to "" to disable OpenSSL support, "--with-openssl=yes"
- # to enable it, or provide the path to the OpenSSL installation,
- # eg "--with-openssl=/usr/local"
- OPENSSL="--with-openssl"
-
- # You may put your real host name here, but localhost or 127.0.0.1
- # is valid also and it has the advantage that it works on a
- # non-networked machine
- HOST="localhost"
-
-- <span>**BAREOS_SOURCE**</span> should be the full path to the
- Bareos source code that you wish to test. It will be loaded
- configured, compiled, and installed with the “make setup” command,
- which needs to be done only once each time you change the source
- code.
-
-- <span>**EMAIL**</span> should be your email addres. Please remember
- to change this or I will get a flood of unwanted messages. You may
- or may not want to see these emails. In my case, I don’t need them
- so I direct it to the bit bucket.
-
-- <span>**SMTP\_HOST**</span> defines where your SMTP server is.
-
-- <span>**SQLITE\_DIR**</span> should be the full path to the sqlite
- package, must be build before running a Bareos regression, if you
- are using SQLite. This variable is ignored if you are using MySQL or
- PostgreSQL. To use PostgreSQL, edit the Makefile and change (or add)
- WHICHDB?=“`--`with-postgresql”. For MySQL use
- “WHICHDB=”`--`with-mysql\`\`.
-
- The advantage of using SQLite is that it is totally independent of
- any installation you may have running on your system, and there is
- no special configuration or authorization that must be done to run
- it. With both MySQL and PostgreSQL, you must pre-install the
- packages, initialize them and ensure that you have authorization to
- access the database and create and delete tables.
-
-- <span>**TAPE\_DRIVE**</span> is the full path to your tape drive.
- The base set of regression tests do not use a tape, so this is only
- important if you want to run the full tests. Set this to /dev/null
- if you do not have a tape drive.
-
-- <span>**TAPE\_DRIVE1**</span> is the full path to your second tape
- drive, if have one. The base set of regression tests do not use a
- tape, so this is only important if you want to run the full two
- drive tests. Set this to /dev/null if you do not have a second tape
- drive.
-
-- <span>**AUTOCHANGER**</span> is the name of your autochanger control
- device. Set this to /dev/null if you do not have an autochanger.
-
-- <span>**AUTOCHANGER\_PATH**</span> is the full path including the
- program name for your autochanger program (normally
- <span>**mtx**</span>. Leave the default value if you do not have
- one.
-
-- <span>**TCPWRAPPERS**</span> defines whether or not you want the
- ./configure to be performed with tcpwrappers enabled.
-
-- <span>**OPENSSL**</span> used to enable/disable SSL support for
- Bareos communications and data encryption.
-
-- <span>**HOST**</span> is the hostname that it will use when building
- the scripts. The Bareos daemons will be named \<HOST\>-dir,
- \<HOST\>-fd, ... It is also the name of the HOST machine that to
- connect to the daemons by the network. Hence the name should either
- be your real hostname (with an appropriate DNS or /etc/hosts entry)
- or <span>**localhost**</span> as it is in the default file.
-
-- <span>**bin**</span> is the binary location.
-
-- <span>**scripts**</span> is the bareos scripts location (where we
- could find database creation script, autochanger handler, etc.)
-
-### Building the Test Bareos
-
-Once the above variables are set, you can build the setup by entering:
-
- make setup
-
-This will setup the regression testing and you should not need to do
-this again unless you want to change the database or other regression
-configuration parameters.
-
-### Setting up your SQL engine
-
-If you are using SQLite or SQLite3, there is nothing more to do; you can
-simply run the tests as described in the next section.
-
-If you are using MySQL or PostgreSQL, you will need to establish an
-account with your database engine for the user name
-<span>**regress**</span> and you will need to manually create a database
-named <span>**regress**</span> that can be used by user name regress,
-which means you will have to give the user regress sufficient
-permissions to use the database named regress. There is no password on
-the regress account.
-
-You have probably already done this procedure for the user name and
-database named bareos. If not, the manual describes roughly how to do
-it, and the scripts in bareos/regress/build/src/cats named
-create\_mysql\_database, create\_postgresql\_database,
-grant\_mysql\_privileges, and grant\_postgresql\_privileges may be of a
-help to you.
-
-Generally, to do the above, you will need to run under root to be able
-to create databases and modify permissions within MySQL and PostgreSQL.
-
-It is possible to configure MySQL access for database accounts that
-require a password to be supplied. This can be done by creating a
- /.my.cnf file which supplies the credentials by default to the MySQL
-commandline utilities.
-
- [client]
- host = localhost
- user = regress
- password = asecret
-
-A similar technique can be used PostgreSQL regression testing where the
-database is configured to require a password. The  /.pgpass file should
-contain a line with the database connection properties.
-
- hostname:port:database:username:password
-
-### Running the Disk Only Regression
-
-The simplest way to copy the source code, configure it, compile it, link
-it, and run the tests is to use a helper script:
-
- ./do_disk
-
-This will run the base set of tests using disk Volumes. If you are
-testing on a non-Linux machine several of the of the tests may not be
-run. In any case, as we add new tests, the number will vary. It will
-take about 1 hour and you don’t need to be root to run these tests (I
-run under my regular userid). The result should be something similar to:
-
- Test results
- ===== auto-label-test OK 12:31:33 =====
- ===== backup-bareos-test OK 12:32:32 =====
- ===== bextract-test OK 12:33:27 =====
- ===== bscan-test OK 12:34:47 =====
- ===== bsr-opt-test OK 12:35:46 =====
- ===== compressed-test OK 12:36:52 =====
- ===== compressed-encrypt-test OK 12:38:18 =====
- ===== concurrent-jobs-test OK 12:39:49 =====
- ===== data-encrypt-test OK 12:41:11 =====
- ===== encrypt-bug-test OK 12:42:00 =====
- ===== fifo-test OK 12:43:46 =====
- ===== backup-bareos-fifo OK 12:44:54 =====
- ===== differential-test OK 12:45:36 =====
- ===== four-concurrent-jobs-test OK 12:47:39 =====
- ===== four-jobs-test OK 12:49:22 =====
- ===== incremental-test OK 12:50:38 =====
- ===== query-test OK 12:51:37 =====
- ===== recycle-test OK 12:53:52 =====
- ===== restore2-by-file-test OK 12:54:53 =====
- ===== restore-by-file-test OK 12:55:40 =====
- ===== restore-disk-seek-test OK 12:56:29 =====
- ===== six-vol-test OK 12:57:44 =====
- ===== span-vol-test OK 12:58:52 =====
- ===== sparse-compressed-test OK 13:00:00 =====
- ===== sparse-test OK 13:01:04 =====
- ===== two-jobs-test OK 13:02:39 =====
- ===== two-vol-test OK 13:03:49 =====
- ===== verify-vol-test OK 13:04:56 =====
- ===== weird-files2-test OK 13:05:47 =====
- ===== weird-files-test OK 13:06:33 =====
- ===== migration-job-test OK 13:08:15 =====
- ===== migration-jobspan-test OK 13:09:33 =====
- ===== migration-volume-test OK 13:10:48 =====
- ===== migration-time-test OK 13:12:59 =====
- ===== hardlink-test OK 13:13:50 =====
- ===== two-pool-test OK 13:18:17 =====
- ===== fast-two-pool-test OK 13:24:02 =====
- ===== two-volume-test OK 13:25:06 =====
- ===== incremental-2disk OK 13:25:57 =====
- ===== 2drive-incremental-2disk OK 13:26:53 =====
- ===== scratch-pool-test OK 13:28:01 =====
- Total time = 0:57:55 or 3475 secs
-
-and the working tape tests are run with
-
- make full_test
-
- Test results
-
- ===== Bareos tape test OK =====
- ===== Small File Size test OK =====
- ===== restore-by-file-tape test OK =====
- ===== incremental-tape test OK =====
- ===== four-concurrent-jobs-tape OK =====
- ===== four-jobs-tape OK =====
-
-Each separate test is self contained in that it initializes to run
-Bareos from scratch (i.e. newly created database). It will also kill any
-Bareos session that is currently running. In addition, it uses ports
-8101, 8102, and 8103 so that it does not intefere with a production
-system.
-
-Alternatively, you can do the ./do\_disk work by hand with:
-
- make setup
-
-The above will then copy the source code within the regression tree (in
-directory regress/build), configure it, and build it. There should be no
-errors. If there are, please correct them before continuing. From this
-point on, as long as you don’t change the Bareos source code, you should
-not need to repeat any of the above steps. If you pull down a new
-version of the source code, simply run <span>**make setup**</span>
-again.
-
-Once Bareos is built, you can run the basic disk only non-root
-regression test by entering:
-
- make test
-
-### Other Tests
-
-There are a number of other tests that can be run as well. All the tests
-are a simply shell script keep in the regress directory. For example the
-”make test\`\` simply executes <span>**./all-non-root-tests**</span>.
-The other tests, which are invoked by directly running the script are:
-
-all\_non-root-tests
-: All non-tape tests not requiring root. This is the standard set of
- tests, that in general, backup some data, then restore it, and
- finally compares the restored data with the original data.
-
-all-root-tests
-: All non-tape tests requiring root permission. These are a relatively
- small number of tests that require running as root. The amount of
- data backed up can be quite large. For example, one test backs up
- /usr, another backs up /etc. One or more of these tests reports an
- error – I’ll fix it one day.
-
-all-non-root-tape-tests
-: All tape test not requiring root. There are currently three tests,
- all run without being root, and backup to a tape. The first two
- tests use one volume, and the third test requires an autochanger,
- and uses two volumes. If you don’t have an autochanger, then this
- script will probably produce an error.
-
-all-tape-and-file-tests
-: All tape and file tests not requiring root. This includes just about
- everything, and I don’t run it very often.
-
-### If a Test Fails
-
-If you one or more tests fail, the line output will be similar to:
-
- !!!!! concurrent-jobs-test failed!!! !!!!!
-
-If you want to determine why the test failed, you will need to rerun the
-script with the debug output turned on. You do so by defining the
-environment variable <span>**REGRESS\_DEBUG**</span> with commands such
-as:
-
- REGRESS_DEBUG=1
- export REGRESS_DEBUG
-
-Then from the “regress” directory (all regression scripts assume that
-you have “regress” as the current directory), enter:
-
- tests/test-name
-
-where test-name should be the name of a test script – for example:
-<span>**tests/backup-bareos-test**</span>.
-
-Testing a Binary Installation
------------------------------
-
-If you have installed your Bareos from a binary release such as (rpms or
-debs), you can still run regression tests on it. First, make sure that
-your regression <span>**config**</span> file uses the same catalog
-backend as your installed binaries. Then define the variables `bin` and
-`scripts` variables in your config file.
-
-Example:
-
- bin=/usr/sbin/
- scripts=/usr/lib/bareos/scripts/
-
-The `./scripts/prepare-other-loc` will tweak the regress scripts to use
-your binary location. You will need to run it manually once before you
-run any regression tests.
-
- $ ./scripts/prepare-other-loc
- $ ./tests/backup-bareos-test
- ...
-
-All regression scripts must be run by hand or by calling the test
-scripts. These are principally scripts that begin with
-<span>**all\_...**</span> such as <span>**all\_disk\_tests**</span>,
-<span>**./all\_test**</span> ...
-
-None of the
-<span>**./do\_disk**</span>, <span>**./do\_all**</span>,
-<span>**./nightly...**</span> scripts will work.
-
-If you want to switch back to running the regression scripts from
-source, first remove the <span>**bin**</span> and
-<span>**scripts**</span> variables from your <span>**config**</span>
-file and rerun the `make setup` step.
-
-Running a Single Test
----------------------
-
-If you wish to run a single test, you can simply:
-
- cd regress
- tests/<name-of-test>
-
-or, if the source code has been updated, you would do:
-
- cd bareos
- git pull
- cd regress
- make setup
- tests/backup-to-null
-
-Writing a Regression Test
--------------------------
-
-Any developer, who implements a major new feature, should write a
-regression test that exercises and validates the new feature. Each
-regression test is a complete test by itself. It terminates any running
-Bareos, initializes the database, starts Bareos, then runs the test by
-using the console program.
-
-### Running the Tests by Hand
-
-You can run any individual test by hand by cd’ing to the
-<span>**regress**</span> directory and entering:
-
- tests/<test-name>
-
-### Directory Structure
-
-The directory structure of the regression tests is:
-
- regress - Makefile, scripts to start tests
- |------ scripts - Scripts (and old configuration files)
- |------ tests - All test scripts are here
- |------ configs - configuration files (for newer tests)
- |
- |------------------ -- All directories below this point are used
- | for testing, but are created from the
- | above directories and are removed with
- | "make distclean"
- |
- |------ bin - This is the install directory for
- | Bareos to be used testing
- |------ build - Where the Bareos source build tree is
- |------ tmp - Most temp files go here
- |------ working - Bareos working directory
- |------ weird-files - Weird files used in two of the tests.
-
-### Adding a New Test
-
-If you want to write a new regression test, it is best to start with one
-of the existing test scripts, and modify it to do the new test.
-
-When adding a new test, be extremely careful about adding anything to
-any of the daemons’ configuration files. The reason is that it may
-change the prompts that are sent to the console. For example, adding a
-Pool means that the current scripts, which assume that Bareos
-automatically selects a Pool, will now be presented with a new prompt,
-so the test will fail. If you need to enhance the configuration files,
-consider making your own versions.
-
-### Running a Test Under The Debugger
-
-You can run a test under the debugger (actually run a Bareos daemon
-under the debugger) by first setting the environment variable
-<span>**REGRESS\_WAIT**</span> with commands such as:
-
- REGRESS_WAIT=1
- export REGRESS_WAIT
-
-Then executing the script. When the script prints the following line:
-
- Start Bareos under debugger and enter anything when ready ...
-
-You start the Bareos component you want to run under the debugger in a
-different shell window. For example:
-
- cd .../regress/bin
- gdb bareos-sd
- (possibly set breakpoints, ...)
- run -s -f
-
-Then enter any character in the window with the above message. An error
-message will appear saying that the daemon you are debugging is already
-running, which is the case. You can simply ignore the error message.