From a2cbf86376d2fc338c239162163755d7fa03ed42 Mon Sep 17 00:00:00 2001 From: Johann Bahl Date: Mon, 27 Nov 2023 17:43:01 +0100 Subject: [PATCH] update documentation --- HACKING.txt | 19 ++- README.txt | 24 +-- doc/man-backy.rst | 376 ++++++++++++++++++++++++++++++---------------- pytest.ini | 6 +- 4 files changed, 272 insertions(+), 153 deletions(-) diff --git a/HACKING.txt b/HACKING.txt index 7cb68bde..37c73a4e 100644 --- a/HACKING.txt +++ b/HACKING.txt @@ -7,15 +7,15 @@ Hacking Development setup ================= -Backy is intended to be compatible with Python 3.4. It is expected to work +Backy is intended to be compatible with Python 3.10. It is expected to work properly on Linux and Mac OS X, even though specific backends may not be -available on all platforms. Use `zc.buildout` to get a development setup:: +available on all platforms. Use `poetry` to get a development setup:: - $ hg clone https://bitbucket.org/flyingcircus/backy + $ git clone https://github.com/flyingcircusio/backy.git $ cd backy - $ virtualenv --python=python3.4 . - $ bin/pip install zc.buildout - $ bin/buildout + $ poetry install + or + $ nix develop Running tests @@ -24,17 +24,16 @@ Running tests Backy has some end-to-end tests which take a while. To run only quick unit tests:: - $ bin/py.test + $ pytest -m "not slow" To run all tests:: - $ bin/py.test -m 1 + $ pytest Releasing ========= - -Install `zest.releaser` on your workstation. Then use:: +Install `zest.releaser` (`nix develop`) on your workstation. Then use:: $ fullrelease diff --git a/README.txt b/README.txt index b4d5e430..0982df9c 100644 --- a/README.txt +++ b/README.txt @@ -48,12 +48,16 @@ Restore the full image through a Pipe:: $ backy restore -r - | rbd import - / +Restoring individual files +-------------------------- + +Take a look at `backy-extract`_ to mount a backup via fuse and extract +single files. Setting up backy ---------------- -#. Create a sufficiently large backup partition using a COW-capable filesystem - like btrfs and mount it under `/srv/backy`. +#. Create a sufficiently large backup partition and mount it under `/srv/backy`. #. Create a configuration file at `/etc/backy.conf`. See man page for details. @@ -63,7 +67,7 @@ Setting up backy The scheduler runs in the foreground until it is shot by SIGTERM. -#. Set up monitoring using `backy check`. +#. Set up monitoring using `backy client -c /path/to/backy.conf check`. #. Set up log rotation for `/var/log/backy.conf` and `/srv/backy/*/backy.log`. @@ -77,13 +81,13 @@ Features Self-check ---------- -Backy includes a self-checking facility. Invoke `backy check` to see if there is -a recent revision present for all configured backup jobs:: +Backy includes a self-checking facility. Invoke `backy client check` to see if +there is a recent revision present for all configured backup jobs:: - $ backy check - OK: 9 jobs within SLA + $ backy client check + [...] CLIClient/check-exit exitcode=0 jobs=9 -Both output and exit code are suited for processing with Nagios-compatible +The exit code is suited for processing with Nagios-compatible monitoring systems. @@ -188,9 +192,9 @@ GPLv3 Links ===== -* `Bitbucket repository `_ +* `Github repository `_ * `PyPI page `_ * `Online docs `_ -* `Build server `_ +* `backy-extract `_ .. vim: set ft=rst spell spelllang=en sw=3: diff --git a/doc/man-backy.rst b/doc/man-backy.rst index 8e158ea7..bf7c827b 100644 --- a/doc/man-backy.rst +++ b/doc/man-backy.rst @@ -6,35 +6,67 @@ Synopsis **backy** [*GLOBAL OPTIONS*] *ACTION* [*OPTIONS*] +**backy** [*GLOBAL OPTIONS*] client [*CLIENT OPTIONS*] *CLIENT ACTION* [*OPTIONS*] + +**backy** --help + +Scheduler +^^^^^^^^^ + **backy scheduler** [**-c** *CONFIG*] -**backy check** [**-c** *CONFIG*] +Client +^^^^^^ -**backy** [**-b** *DIRECTORY*] **backup** *TAGS* +**backy client check** -**backy** [**-b** *DIRECTORY*] **find** [**-r** *REVISION*] +**backy client jobs** [*FILTER*] -**backy** [**-b** *DIRECTORY*] **init** *TYPE* *SOURCE* +**backy client status** -**backy** [**-b** *DIRECTORY*] **restore** *TARGET* +**backy client run** *JOB* -**backy** [**-b** *DIRECTORY*] **status** +**backy client runall** -**backy** --help +**backy client reload** + +Job +^^^ + +**backy backup** [**-f**] *TAGS* + +**backy restore** [**-r** *REVISION*] *TARGET* + +**backy purge** + +**backy status** [**--yaml**] + +**backy upgrade** + +**backy scheduler** [**-c** *CONFIG*] + +**backy distrust** [**-r** *REVISION* | [**-f** *FROM*] [**-u** *UNTIL*]] + +**backy verify** [**-r** *REVISION*] + +**backy forget** **-r** *REVISION* + +**backy tags** [**-f**] [**--autoremove**] [**--expect** *TAGS*] {**set**, **add**, **remove**} *REVISION* *TAGS* + +**backy expire** Description ----------- **backy** performs backup and recovery for block devices. Backup revisions are -stored as binary images. This allows for trivial recovery. **backy**'s data -storage relies on COW-capable filesystems like **btrfs** or **ZFS**. +stored as deduplicated and compressed chunks. Typically, **backy scheduler** is started with a configuration file describing all backup jobs. A *job* consists of a *source* specification and a *schedule* and creates a set of backup *revisions* in a job directory on the backup server. The scheduler invokes each job's low-level commands when they are due. -Manually invoked low-level commands do not interfer with those spawned by the +Manually invoked low-level commands do not interfere with those spawned by the scheduler. **backy** employs a flexible retention scheme. Each backup is tagged with a set @@ -53,27 +85,57 @@ Global options Global options can be combined with any subcommand. -l LOGFILE, --logfile LOGFILE - Writes logs into the specified log file. If this option is not specified, - logs are written to stdout. It is safe to rename log files for log - rotation. **backy** will reopen them automatically. + Writes verbose logs into the specified log file. If this option is not + specified, logs are written to `/var/log/backy.log` for the **scheduler** + subcommand. **client** has no default logfile, all other subcommands default + to `$backupdir/backy.log`. + Logs will always be written to stderr. -v, --verbose - Includes diagnostic messages in log output. + Includes diagnostic messages in stderr log output. -b DIRECTORY, --backupdir DIRECTORY The given directory is used for this backup job. Useful for low-level - subcommands like **backup**, **find** etc. Although technically permitted, - this option has no effect with the **scheduler** and **check** subcommands. + subcommands like **backup**, **status** etc. Although technically permitted, + this option has no effect with the **scheduler** and **client** subcommands. If no **-b** option is given, the current directory is used. +-t TASKID, --taskid TASKID + ID to include in log output. Useful to identify multiple commands as + belonging to the same task. + This value is transmitted to remote servers on contact. + -h, --help Prints a usage summary. Can be combined with action subcommands to give usage instructions for that specific subcommand. +Client options +^^^^^^^^^^^^^^ + +**-c** *CONFIG*, **--config** *CONFIG* + Path to the scheduler configuration file. Defaults to `/etc/backy.conf`. See + below for an detailed description of the configuration file format. + + Also valid for the *scheduler* subcommand. + +**-p** *PEER*, **--peer** *PEER* + The peer name to use when connecting to the backy daemon. + Defaults to the cli default configured in the config file. + +**--url** *URL* + The url to use when connecting to the backy daemon. + Only useful in combination with **--token**. + Overwrites **--config** and **--peer**. + +**--token** *TOKEN* + The token to use when connecting to the backy daemon. + Only useful in combination with **--url**. + Overwrites **--config** and **--peer**. + Action subcommands ^^^^^^^^^^^^^^^^^^ -**scheduler** +**scheduler** [**-c** *CONFIG*] Starts a long-running process which reads job definitions from a configuration file (see below). Individual backups are started according to the schedule defined in the configuration file. Job schedules are defined @@ -86,73 +148,123 @@ Action subcommands being off for a while, it will automatically catch up on jobs missed in the meantime. -**check** +**client check** Returns an overall status if all backup jobs are serviced in time. The - output of the **check** subcommand is given in a Nagios-compatible format, - so that it can be easily processed by various monitoring systems. + exit code of the **check** subcommand is given in a Nagios-compatible + format, so that it can be easily processed by various monitoring systems. A backup job is considered in time if it is no more late than 1.5 times its regular interval. For example, a job that is supposed to run every 24h will be considered stale after 36h. If any defined job is stale, **backy check** will return a CRITICAL state. -**backup** *TAG*, *TAG*, ... - Creates a new revision of an existing backup job. The job directory - must be specified using the **-b** option. A comma-separated set of *tags* - is assigned to the revision for retention control. Note that the tag set - must be passed as single argument. Use shell quotes if needed. +**client jobs** [*FILTER*] + Prints out a table about every backup job (including backup directories + which no longer have a job). Provide a regular expression to filter the + table. See :ref:`example` section for more details. - Use this subcommand to create a backup manually regardless of schedule. +**client status** + Prints out the number of backup jobs for each state. Valid states are: + Dead, waiting for deadline, waiting for worker slot (*SPEED*), + running (*SPEED*), failed and finished. *SPEED* can be slow or fast. + +**client run** *JOB* + Triggers an immediate run for the specified job. + +**client runall** + Triggers an immediate run for all jobs. -**find -r** *REVISION* - Outputs the full path to the image representing the given revision or the - latest image if no revision is specified. See below for possible revision - specifications. +**client reload** + Triggers a daemon config reload. -**init** *TYPE* *SOURCE* - Creates a fresh job directory and writes an initial configuration. The job - directory should be given using the global **-b** option. *TYPE* is the name - of a source type. The meaning of the *SOURCE* parameter depends on the - selected source type and is explained in Section :ref:`source_types`. +**backup** [**-f**] *TAG*, *TAG*, ... + Creates a new revision of an existing backup job. The job directory + must be specified using the **-b** option. + + A comma-separated set of *tags* is assigned to the revision for retention + control. See the **-f** option for more details. + Note that the tag set must be passed as single argument. Use shell quotes + if needed. - Note that this command should hardly be invoked manually. The recommended - way is to define jobs in the scheduler config file and let **backy - scheduler** take care of the rest. + Use this subcommand to create a backup manually regardless of schedule. -**restore** *TARGET* +**restore** [**-r** REVISION] *TARGET* Copies out an backup image to a target file or device. Writes data to stdout - if *TARGET* is **-**. An alternative approach would be to locate the desired - revision via **backy find** and copy the image file using standard UNIX - tools to the target location. + if *TARGET* is **-**. Use **-r** to specify which revision to restore + instead of the latest. + +**purge** + Removes all chunks which are no longer referred to by a revision. -**backy status** +**status** [**--yaml**] Prints out a table containing details about all revisions present in the job directory. Details include a timestamp, the revision ID, image size, backup - duration, and a set of tags. Note that incomplete revisions are indicated by + duration, a set of tags, trust state, and the server the revision is + located on. Note that incomplete revisions are indicated by a zero backup duration. They are cleared out at the next backup run. -Subcommand-specific options -^^^^^^^^^^^^^^^^^^^^^^^^^^^ + Use the **--yaml** flag to get this data in YAML format. -**-c** *CONFIG* - Path to the scheduler configuration file. Defaults to `/etc/backy.conf`. See - below for an detailed description of the configuration file format. +**upgrade** + Upgrade this backup (incl. its data) to the newest supported version. + This can take a long time and is intended to be interruptable. + +**distrust** [**-r** *REVISION* | [**-f** *FROM*] [**-u** *UNTIL*]] + Distrust the revision specified by **-r** or all revisions in the range + from **-f** to **-u**. Defaults to all revisions. See :ref:`trust` for more + details. + +**verify** [**-r** *REVISION*] + Verifies the revision specified by **-r** or all `DISTRUSTED` revisions if + unspecified. Revisions which fail verification will be removed. See + :ref:`trust` for more details. - Valid for **scheduler** and **check** subcommands. +**forget** **-r** *REVISION* + Removes the revision specified by **-r**. Unreferenced chunks will be + removed by the next **purge** call. -**-r** *REVISION* +**tags** [**-f**] [**--autoremove**] [**--expect** *TAGS*] {**set**, **add**, **remove**} *REVISION* *TAGS* + Sets, adds, or removes the comma-separated set of tags to the specified + revision. See the **-f** option for more details. + Note that the tag set must be passed as single argument. Use shell quotes + if needed. + + Use **--autoremove** to remove the revision if it has no tags at the end of + the operation. Otherwise the revision will be removed by the next + **expire** invocation. + + Use **--expect** to only modify the tags if the existing tags equal the + specified tags. + +**expire** + Removes tags from revisions which are no longer needed according to the + specified schedule. Tags with the `manual:` prefix will not be removed. + Revisions without tags will be removed. + +Shared subcommand-specific options +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +**-r** *REVISION*, **--revision** *REVISION* Selects a revision other than the last revision. Revisions can be specified in the following ways: - * A full revision ID as printed with **backy status**. ID prefixes are OK as - long as they are unique. + * A full revision ID as printed with **backy status**. * A relative revision count: 0 is the last revision, 1 the one before, ... * The key word **last** or **latest** as alias for the last revision. * A revision tag. If several revisions with the given tag exist, the newest one will be given. - Valid for **find** and **restore** subcommands. + Valid for **distrust**, **verify**, **forget**, **tags** and **restore** + subcommands. + +**-f**, **--force** + Disable tag validation. This can be used to assign tags which are not part + of the schedule and are not starting with `manual:` to a revision. + + Note that the next **expire** call may remove these tags again. + + Valid for **backup** and **tags** subcommands. .. _source_types: @@ -172,9 +284,11 @@ file filename Path to the source file. - Init syntax: - - **backy init file** *FILENAME* + cow + Allow backups in a cow friendly way by only writing changes to the + target. This attribute is similar to the inverse of full-always in ceph. + There is no need to change this if you are using the chunked backend. + Defaults to True. ceph Reads Ceph RBD images. For each image, a snapshot is created to ensure @@ -197,11 +311,7 @@ ceph full-always Never create diffs but do always a full backup. No long-lived snapshots are needed in this case. This option is meant for volumes with very high - change rates. - - Init syntax: - - **backy init ceph-rbd** *POOL*/*IMAGE* + change rates. Defaults to False. flyingcircus Reads Ceph RBD images and provides integration with the hosting @@ -217,16 +327,33 @@ flyingcircus consul_acl_token (optional) Credentials used to talk to the Consul server. - Init syntax: +.. _trust: + +Trust +----- +Every revision has a trust state of either `TRUSTED`, `VERIFIED` or +`DISTRUSTED`. +After creation a revision has the `TRUSTED` state. Trust state can be +modified via the **verify** and **distrust** commands. + +The `VERIFIED` state means that the integrity of this revision has (at some +point in the past) been checked. - **backy init flyingcircus** *POOL*/*IMAGE*,*VM*,*CONSUL_ACL_TOKEN* +The `DISTRUSTED` state means that is possible that the revision has +integrity errors. The existence of such a revision will cause **backy** to +overwrite existing chunks and disable the differential backup implementation. +On each **backup** the latest `DISTRUSTED` revision is verified. A revision +which fails verification is removed. + +Some events such as an integrity error on reading a chunk may cause all +revisions to become `DISTRUSTED`. Exit Status ----------- **backy** generally exists with exit status 0 if the operation completed -successfully, 1 in all other cases. A notable exception is that **backy check** -exists with status 2 to indicate a CRITICAL check outcome. +successfully, 1 in all other cases. A notable exception is that **backy +client check** exists with status 2 to indicate a CRITICAL check outcome. Environment @@ -257,15 +384,16 @@ global Defines global scheduler options. base-dir - Directory containing all job subdirectories. Defaults to `/srv/backy`. + Directory containing all job subdirectories. worker-limit Maximum number of concurrent processes spawned by the scheduler. Defaults to 1 (no parallel backups). backup-completed-callback - Command/Script to invoke after the scheduler successfully completed a backup. - The first argument is the job name. The output of `backy status --yaml` is available on stdin. + Command/Script to invoke after the scheduler successfully completed a + backup. The first argument is the job name. The output of + `backy status --yaml` is available on stdin. api addrs @@ -276,14 +404,23 @@ api Port number of the api server (default: 6023). tokens - A Token->Server-name mapping. Used for authenticating incoming api requests. + A Token->Server-name mapping. Used for authenticating incoming api + requests. cli-default token - Default Token to use when issuing api requests via the `backy client` command. + Default Token to use when issuing api requests via the + `backy client` command. peers - List of known backy servers with url and token. Currently used for synchronizing available revisions. + List of known backy servers with url and token. Currently used for + synchronizing available revisions. The structure is as follows:: + + peers: + SERVER1: + url: ... + token: ... + ... .. _schedules: @@ -340,29 +477,34 @@ jobs selected source type. See Section :ref:`source_types` for a list of source types along with their configuration parameters. -/srv/backy -^^^^^^^^^^ - -Default data directory which contains subdirectories for all backup jobs, -subject to the **base-dir** global configuration setting. -/srv/backy/{job} -^^^^^^^^^^^^^^^^ +$base-dir/{job} +^^^^^^^^^^^^^^^ Individual backup job directory. Should be passed via the **-b** option if backy subcommands are invoked manually. A job directory can be safely deleted to remove a complete backup job. -/srv/backy/{job}/config -^^^^^^^^^^^^^^^^^^^^^^^ +$base-dir/{job}/config +^^^^^^^^^^^^^^^^^^^^^^ Job-specific configuration snippet configuring a job's backup source. This file -gets written by **backy init** or during the scheduler with information from the +gets written by the scheduler with information from the main configuration file. Its purpose is to support stand-alone invocation of low-level subcommands like **backy backup**. -Notes ------ +$base-dir/{job}/quarantine +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Contains reports about chunks and the chunks themselves which did not match the +source immediately after revision creation. + +Notes when using the legacy cowfile backend +------------------------------------------- + +The following notes only apply if you are using the legacy cowfile backend. +New backup jobs will default to the new chunked backend. You can migrate +existing jobs to the new backend with the **upgrade** command. The base directory should be placed on a COW-capable filesystem as backing store to avoid excessive space consumption. The underlying filesystem is expected to @@ -403,58 +545,36 @@ backups. Weekly backups are kept for 12 weeks and no monthly backups are created in that case. Three backup jobs are configured with different source types and schedules. -After the backup directory has been created on a COW-capable filesystem, the +After the backup directory has been created, the scheduler can now be started with:: backy -c /path/to/main.conf -l /path/to/backy.log scheduler -The running scheduler may now be inspected via telnet:: - - telnet localhost 6023 - Trying 127.0.0.1... - Connected to localhost. - Escape character is '^]'. - backy-2.0 % jobs - +--------+-----+---------+---------------------+-----------+----------+---------------------+--------------+ - | Job | SLA | Status | Last Backup (UTC) | Last Tags | Last Dur | Next Backup (UTC) | Next Tags | - +--------+-----+---------+---------------------+-----------+----------+---------------------+--------------+ - | test01 | OK | waiting | 2015-11-05 11:56:10 | daily | 50.7 s | 2015-11-06 11:56:10 | daily,weekly | - | test02 | OK | waiting | 2015-11-05 10:32:03 | daily | 88.1 s | 2015-11-06 10:32:03 | daily | - | test03 | OK | waiting | 2015-11-06 09:49:27 | hourly | 17.7 s | 2015-11-06 10:15:09 | hourly | - +--------+-----+---------+---------------------+-----------+----------+---------------------+--------------+ +The running scheduler may now be inspected via **client** commands:: + + backy client -c backy.conf jobs + ┏━━━━━━━━┳━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ Last Backup ┃ ┃ ┃ Next Backup ┃ ┃ + ┃ Job ┃ SLA ┃ SLA overdue ┃ Status ┃ (Europe/Berlin) ┃ Last Tags ┃ Last Duration ┃ (Europe/Berlin) ┃ Next Tags ┃ + ┡━━━━━━━━╇━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━┩ + │ test01 │ OK │ - │ waiting for deadline │ 2015-11-05 11:56:10 │ daily │ 50 seconds │ 2015-11-06 11:56:10 │ daily,weekly │ + │ test02 │ OK │ - │ waiting for deadline │ 2015-11-05 10:32:03 │ daily │ a minute │ 2015-11-06 10:32:03 │ daily │ + │ test03 │ OK │ - │ waiting for deadline │ 2015-11-06 09:49:27 │ hourly │ 17 seconds │ 2015-11-06 10:15:09 │ hourly │ + └────────┴─────┴─────────────┴──────────────────────┴─────────────────────┴───────────┴───────────────┴──────────────────────┴──────────────┘ + 3 jobs shown Information about individual revisions can be obtained using **backy status**:: backy -b /my/backydir/test03 status - +---------------------+------------------------+------------+---------+--------------+ - | Date (UTC) | ID | Size | Durat | Tags | - +---------------------+------------------------+------------+---------+--------------+ - | 2015-11-04 20:09:32 | Q5N5Ng5kFzNFVv6FDDDCHi | 10.00 GiB | 150.9 s | daily,weekly | - | 2015-11-05 06:15:09 | FqZGAe6iG2hadwJoHdpigW | 149.31 MiB | 24.9 s | daily | - | 2015-11-06 06:15:09 | ENpdQfhQVgzoiWwT4KuQqP | 184.99 MiB | 28.7 s | daily | - | 2015-11-06 09:49:27 | ojtLPmKfGNhJQbaJYo6a4C | 44.61 MiB | 17.7 s | hourly | - +---------------------+------------------------+------------+---------+--------------+ - 4 revisions containing 10.37 GiB data (estimated) - -Use **backy find** to print out the path to the last daily backup, for example:: - - backy -b /my/backydir/test03 find -r daily - /my/backydir/test03/ENpdQfhQVgzoiWwT4KuQqP - -To restore files from a revision, use either **backy restore** to copy out a -whole revision or mount a revision image directly to copy out individual files:: - - test03# kpartx -av ENpdQfhQVgzoiWwT4KuQqP - add map loop0p1 (253:0): 0 20961280 linear /dev/loop0 8192 - add map loop0p2 (253:1): 0 2048 linear /dev/loop0 2048 - test03# mount -o ro /dev/mapper/loop0p1 /mnt/restore - test03# ls /mnt/restore - bin dev home lost+found mnt proc run srv tmp var - boot etc lib media opt root sbin sys usr - test03# cp /mnt/restore/home/ckauhaus/important_file ... - test03# umount /mnt/restore - test03# kpartx -d ENpdQfhQVgzoiWwT4KuQqP - loop deleted : /dev/loop0 + ┏━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┓ + ┃ Date (Europe/Berlin) ┃ ID ┃ Size ┃ Duration ┃ Tags ┃ Trust ┃ Server ┃ + ┡━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━┩ + │ 2015-11-04 20:09:32 │ 46mWHmKy2XP3TQwrjbnd9F │ 10.0 GiB │ 2 minutes │ weekly,daily │ trusted │ │ + │ 2015-11-05 06:15:09 │ ECHtbbhrDUFaenAyZmgHSF │ 149.3 MiB │ 24 seconds │ daily │ trusted │ │ + │ 2015-11-06 06:15:09 │ NuAHAwfjiSJceoftU3gNbd │ 185.0 MiB │ 28 seconds │ daily │ trusted │ │ + │ 2015-11-06 09:49:27 │ BxG4RUvCfn2oDyKkmdjkPa │ 44.6 MiB │ 17 seconds │ hourly │ trusted │ │ + └──────────────────────┴────────────────────────┴───────────┴────────────┴──────────────┴─────────┴────────┘ + 4 revisions containing 10.4 GiB data (estimated) See also diff --git a/pytest.ini b/pytest.ini index d3c553f2..b4066f7a 100644 --- a/pytest.ini +++ b/pytest.ini @@ -1,9 +1,5 @@ [pytest] addopts = --timeout=30 --tb=native --cov=src --cov-report=html src -r w -markers = slow: This is a non-unit test and thus is not run by default. Use ``-m slow`` to run these, or ``-m 1`` to run all tests. +markers = slow: This is a slow test. Use ``-m "not slow"`` to ignore these. log_level = NOTSET asyncio_mode = auto - - -filterwarnings = - ignore::DeprecationWarning:telnetlib3.*: