mirror of
https://github.com/pgbackrest/pgbackrest.git
synced 2024-12-14 10:13:05 +02:00
f0ef73db70
Remove embedded Perl from the distributed binary. This includes code, configure, Makefile, and packages. The distributed binary is now pure C. Remove storagePathEnforceSet() from the C Storage object which allowed Perl to write outside of the storage base directory. Update mock/all and real/all integration tests to use storageLocal() where they were violating this rule. Remove "c" option that allowed the remote to tell if it was being called from C or Perl. Code to convert options to JSON for passing to Perl (perl/config.c) has been moved to LibC since it is still required for Perl integration tests. Update build and installation instructions in the user guide. Remove all Perl unit tests. Remove obsolete Perl code. In particular this included all the Perl protocol code which required modifications to the Perl storage, manifest, and db objects that are still required for integration testing but only run locally. Any remaining Perl code is required for testing, documentation, or code generation. Rename perlReq to binReq in define.yaml to indicate that the binary is required for a test. This had been the actual meaning for quite some time but the key was never renamed.
718 lines
25 KiB
YAML
718 lines
25 KiB
YAML
# **********************************************************************************************************************************
|
|
# Test Definition
|
|
#
|
|
# Contains definitions for all unit and integration tests.
|
|
#
|
|
# The definitions consist of modules and tests. Modules group together tests that are related and allow common settings for all the
|
|
# tests. Every module and test must have a name. Tests must also have a total. If this total does not match the actual number of
|
|
# runs in a test then an error will be thrown.
|
|
#
|
|
# Most options can be set for modules and tests (test option will override module option if both are set):
|
|
# * db - determines if the test will be run against multiple db versions
|
|
# * coverage - determines coverage for the test
|
|
# full - the module/test provides full coverage for the code module
|
|
# partial - the module/test provides partial coverage for the code module
|
|
# noCode - the code module should not contain any coverable code. If it does an error will be thrown.
|
|
# * define - defines for C code (will also be applied to the test harness)
|
|
# * define-test - defines for the test harness
|
|
# * debugUnitSuppress - don't define DEBUG_UNIT for unit tests -- this is used to test unit test debugging macros
|
|
# * binReq - is the pgbackrest binary required for this test?
|
|
# * containerReq - is this test required to run in a container?
|
|
#
|
|
# Some options are unique to tests:
|
|
# * total - total runs in the test
|
|
# * vm - VMs that the test will be run on
|
|
# * include - modules to include directly into test.c (all files in coverage are automatically included)
|
|
# This is useful when a module's internal data needs to be manipulated for testing but no coverage is added by the test.
|
|
# **********************************************************************************************************************************
|
|
|
|
# **********************************************************************************************************************************
|
|
# Unit tests
|
|
# **********************************************************************************************************************************
|
|
unit:
|
|
|
|
# ********************************************************************************************************************************
|
|
- name: common
|
|
|
|
test:
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: error
|
|
total: 8
|
|
define-test: -DNO_ERROR -DNO_LOG -DNO_STACK_TRACE -DNO_MEM_CONTEXT
|
|
|
|
coverage:
|
|
common/error: full
|
|
common/error.auto: noCode
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: assert-on
|
|
total: 1
|
|
define-test: -DNO_LOG -DNO_STACK_TRACE -DNO_MEM_CONTEXT
|
|
|
|
coverage:
|
|
common/assert: noCode
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: assert-off
|
|
total: 1
|
|
define: -DNDEBUG
|
|
define-test: -DNO_LOG -DNO_STACK_TRACE -DNO_MEM_CONTEXT
|
|
debugUnitSuppress: true
|
|
|
|
coverage:
|
|
common/assert: noCode
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: stack-trace
|
|
total: 4
|
|
define-test: -DNO_LOG -DNO_STACK_TRACE -DNO_MEM_CONTEXT
|
|
|
|
coverage:
|
|
common/stackTrace: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: mem-context
|
|
total: 7
|
|
define-test: -DNO_MEM_CONTEXT -DNO_LOG
|
|
|
|
coverage:
|
|
common/memContext: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: time
|
|
total: 2
|
|
define-test: -DNO_ERROR -DNO_LOG
|
|
|
|
coverage:
|
|
common/time: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: fork
|
|
total: 1
|
|
define-test: -DNO_LOG
|
|
|
|
coverage:
|
|
common/fork: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: log
|
|
total: 5
|
|
define-test: -DNO_LOG
|
|
|
|
coverage:
|
|
common/log: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: debug-off
|
|
total: 2
|
|
define: -DNDEBUG
|
|
define-test: -DNO_LOG
|
|
debugUnitSuppress: true
|
|
|
|
coverage:
|
|
common/debug: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: debug-on
|
|
total: 4
|
|
|
|
coverage:
|
|
common/debug: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: object
|
|
total: 1
|
|
|
|
coverage:
|
|
common/object: noCode
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: lock
|
|
total: 2
|
|
|
|
coverage:
|
|
common/lock: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: exit
|
|
total: 3
|
|
|
|
coverage:
|
|
common/exit: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: wait
|
|
total: 1
|
|
|
|
coverage:
|
|
common/wait: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: type-convert
|
|
total: 10
|
|
|
|
coverage:
|
|
common/type/convert: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: type-list
|
|
total: 4
|
|
|
|
coverage:
|
|
common/type/list: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: type-string
|
|
total: 26
|
|
|
|
coverage:
|
|
common/type/string: full
|
|
common/type/stringList: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: type-buffer
|
|
total: 6
|
|
|
|
coverage:
|
|
common/type/buffer: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: type-variant
|
|
total: 13
|
|
|
|
coverage:
|
|
common/type/variant: full
|
|
common/type/variantList: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: type-mcv
|
|
total: 1
|
|
|
|
coverage:
|
|
common/type/mcv: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: type-json
|
|
total: 11
|
|
|
|
coverage:
|
|
common/type/json: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: type-key-value
|
|
total: 2
|
|
|
|
coverage:
|
|
common/type/keyValue: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: type-xml
|
|
total: 1
|
|
|
|
coverage:
|
|
common/type/xml: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: user
|
|
total: 1
|
|
|
|
coverage:
|
|
common/user: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: io
|
|
total: 4
|
|
|
|
coverage:
|
|
common/io/bufferRead: full
|
|
common/io/bufferWrite: full
|
|
common/io/filter/buffer: full
|
|
common/io/filter/filter: full
|
|
common/io/filter/group: full
|
|
common/io/filter/sink: full
|
|
common/io/filter/size: full
|
|
common/io/handleRead: full
|
|
common/io/handleWrite: full
|
|
common/io/io: full
|
|
common/io/read: full
|
|
common/io/write: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: io-tls
|
|
total: 4
|
|
containerReq: true
|
|
|
|
coverage:
|
|
common/io/tls/client: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: io-http
|
|
total: 5
|
|
|
|
coverage:
|
|
common/io/http/cache: full
|
|
common/io/http/client: full
|
|
common/io/http/common: full
|
|
common/io/http/header: full
|
|
common/io/http/query: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: compress-gzip
|
|
total: 4
|
|
|
|
coverage:
|
|
common/compress/gzip/common: full
|
|
common/compress/gzip/compress: full
|
|
common/compress/gzip/decompress: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: crypto
|
|
total: 3
|
|
|
|
coverage:
|
|
common/crypto/cipherBlock: full
|
|
common/crypto/common: full
|
|
common/crypto/hash: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: exec
|
|
total: 1
|
|
|
|
coverage:
|
|
common/exec: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: encode
|
|
total: 1
|
|
|
|
coverage:
|
|
common/encode: full
|
|
common/encode/base64: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: reg-exp
|
|
total: 3
|
|
|
|
coverage:
|
|
common/regExp: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: ini
|
|
total: 4
|
|
|
|
coverage:
|
|
common/ini: full
|
|
|
|
# ********************************************************************************************************************************
|
|
- name: postgres
|
|
|
|
test:
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: client
|
|
total: 1
|
|
|
|
coverage:
|
|
postgres/client: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: interface
|
|
total: 8
|
|
|
|
coverage:
|
|
postgres/interface: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: page-checksum
|
|
total: 3
|
|
|
|
coverage:
|
|
postgres/pageChecksum: full
|
|
|
|
# ********************************************************************************************************************************
|
|
- name: config
|
|
|
|
test:
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: define
|
|
total: 2
|
|
|
|
coverage:
|
|
config/define: full
|
|
config/define.auto: noCode
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: config
|
|
total: 4
|
|
|
|
coverage:
|
|
config/config: full
|
|
config/config.auto: noCode
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: parse
|
|
total: 4
|
|
|
|
coverage:
|
|
config/parse: full
|
|
config/parse.auto: noCode
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: load
|
|
total: 4
|
|
|
|
coverage:
|
|
config/load: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: exec
|
|
total: 1
|
|
|
|
coverage:
|
|
config/exec: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: protocol
|
|
total: 1
|
|
|
|
coverage:
|
|
config/protocol: full
|
|
|
|
# ********************************************************************************************************************************
|
|
- name: storage
|
|
|
|
test:
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: cifs
|
|
total: 1
|
|
|
|
coverage:
|
|
storage/cifs/storage: full
|
|
storage/posix/storage: full
|
|
storage/helper: full
|
|
|
|
include:
|
|
- storage/storage
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: posix
|
|
total: 20
|
|
containerReq: true
|
|
|
|
coverage:
|
|
storage/posix/read: full
|
|
storage/posix/storage: full
|
|
storage/posix/write: full
|
|
storage/helper: full
|
|
storage/read: full
|
|
storage/storage: full
|
|
storage/write: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: remote
|
|
total: 12
|
|
containerReq: true
|
|
binReq: true
|
|
|
|
coverage:
|
|
storage/remote/read: full
|
|
storage/remote/protocol: full
|
|
storage/remote/storage: full
|
|
storage/remote/write: full
|
|
storage/helper: full
|
|
storage/storage: full
|
|
|
|
include:
|
|
- storage/read
|
|
- storage/write
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: s3
|
|
total: 3
|
|
|
|
coverage:
|
|
storage/s3/read: full
|
|
storage/s3/storage: full
|
|
storage/s3/write: full
|
|
storage/helper: full
|
|
storage/storage: full
|
|
|
|
# ********************************************************************************************************************************
|
|
- name: protocol
|
|
|
|
test:
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: protocol
|
|
total: 9
|
|
containerReq: true
|
|
binReq: true
|
|
|
|
coverage:
|
|
protocol/client: full
|
|
protocol/command: full
|
|
protocol/helper: full
|
|
protocol/parallel: full
|
|
protocol/parallelJob: full
|
|
protocol/server: full
|
|
|
|
# ********************************************************************************************************************************
|
|
- name: info
|
|
|
|
test:
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: info
|
|
total: 3
|
|
|
|
coverage:
|
|
info/info: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: info-pg
|
|
total: 2
|
|
|
|
coverage:
|
|
info/infoPg: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: info-archive
|
|
total: 2
|
|
|
|
coverage:
|
|
info/infoArchive: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: info-backup
|
|
total: 2
|
|
|
|
coverage:
|
|
info/infoBackup: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: manifest
|
|
total: 6
|
|
|
|
coverage:
|
|
info/manifest: full
|
|
|
|
# ********************************************************************************************************************************
|
|
- name: db
|
|
|
|
test:
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: db
|
|
total: 3
|
|
containerReq: true
|
|
binReq: true
|
|
|
|
coverage:
|
|
db/db: full
|
|
db/helper: full
|
|
db/protocol: full
|
|
|
|
# ********************************************************************************************************************************
|
|
- name: command
|
|
|
|
test:
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: archive-common
|
|
total: 8
|
|
|
|
coverage:
|
|
command/archive/common: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: archive-get
|
|
total: 5
|
|
binReq: true
|
|
|
|
coverage:
|
|
command/archive/get/file: full
|
|
command/archive/get/get: full
|
|
command/archive/get/protocol: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: archive-push
|
|
total: 4
|
|
binReq: true
|
|
|
|
coverage:
|
|
command/archive/push/file: full
|
|
command/archive/push/protocol: full
|
|
command/archive/push/push: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: backup-common
|
|
total: 3
|
|
|
|
coverage:
|
|
command/backup/common: full
|
|
command/backup/pageChecksum: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: backup
|
|
total: 10
|
|
binReq: true
|
|
|
|
coverage:
|
|
command/backup/backup: full
|
|
command/backup/file: full
|
|
command/backup/protocol: full
|
|
|
|
include:
|
|
- info/manifest
|
|
- storage/storage
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: check
|
|
total: 4
|
|
containerReq: true
|
|
|
|
coverage:
|
|
command/check/common: full
|
|
command/check/check: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: command
|
|
total: 1
|
|
|
|
coverage:
|
|
command/command: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: control
|
|
total: 3
|
|
|
|
coverage:
|
|
command/control/common: full
|
|
command/control/start: full
|
|
command/control/stop: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: expire
|
|
total: 7
|
|
|
|
coverage:
|
|
command/expire/expire: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: help
|
|
total: 4
|
|
|
|
coverage:
|
|
command/help/help: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: info
|
|
total: 3
|
|
|
|
coverage:
|
|
command/info/info: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: local
|
|
total: 1
|
|
|
|
coverage:
|
|
command/local/local: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: remote
|
|
total: 1
|
|
|
|
coverage:
|
|
command/remote/remote: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: restore
|
|
total: 11
|
|
containerReq: true
|
|
binReq: true
|
|
|
|
coverage:
|
|
command/restore/file: full
|
|
command/restore/protocol: full
|
|
command/restore/restore: full
|
|
|
|
include:
|
|
- common/user
|
|
- info/infoBackup
|
|
- info/manifest
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: stanza
|
|
total: 5
|
|
|
|
coverage:
|
|
command/stanza/common: full
|
|
command/stanza/create: full
|
|
command/stanza/upgrade: full
|
|
command/stanza/delete: full
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: storage
|
|
total: 1
|
|
|
|
coverage:
|
|
command/storage/list: full
|
|
|
|
# **********************************************************************************************************************************
|
|
# Integration tests
|
|
#
|
|
# Integration tests are not run in a container. They are expected to create their own containers since most integration runs will
|
|
# create more than one. For this reason each run is executed individually.
|
|
# **********************************************************************************************************************************
|
|
integration:
|
|
|
|
# ********************************************************************************************************************************
|
|
- name: mock
|
|
|
|
test:
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: stanza
|
|
total: 2
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: expire
|
|
total: 2
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: archive
|
|
total: 2
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: archive-stop
|
|
total: 2
|
|
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: all
|
|
total: 2
|
|
|
|
# ********************************************************************************************************************************
|
|
- name: real
|
|
db: true
|
|
|
|
test:
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: all
|
|
total: 6
|
|
|
|
# **********************************************************************************************************************************
|
|
# Performance tests
|
|
#
|
|
# Performance tests run in a single container but are more like integration tests than unit tests since they call the pgbackrest
|
|
# executable directly.
|
|
# **********************************************************************************************************************************
|
|
performance:
|
|
|
|
# ********************************************************************************************************************************
|
|
- name: performance
|
|
|
|
test:
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: archive-perl
|
|
total: 1
|
|
|
|
test:
|
|
# ----------------------------------------------------------------------------------------------------------------------------
|
|
- name: type
|
|
total: 3
|