Paraduct
Paraduct (parallel + parameterize + product) is matrix test runner
Architecture
Requirements
- ruby 2.0+
- rsync
Installation
Add this line to your application's Gemfile:
gem 'paraduct'
And then execute:
$ bundle
Or install it yourself as:
$ gem install paraduct
Usage
$ paraduct --help
Commands:
paraduct generate # generate .paraduct.yml
paraduct help [COMMAND] # Describe available commands or one specific command
paraduct test # run matrix test
1. Generate config file
$ paraduct generate
create .paraduct.yml
create .paraduct_rsync_exclude.txt
2. Customize .paraduct.yml
$ vi .paraduct.yml
$ vi .paraduct_rsync_exclude.txt
3. Run test
$ paraduct test
.paraduct.yml Format
script: |-
echo "[START] NAME1=${NAME1}, NAME2=${NAME2}"
after_script: |-
echo "[END] NAME1=${NAME1}, NAME2=${NAME2}"
work_dir: tmp/paraduct_workspace
variables:
NAME1:
- value1a
- value1b
NAME2:
- value2a
- value2b
max_threads: 4
rsync_option:
exclude_from: .paraduct_rsync_exclude.txt
exclude:
- NAME1: value1a
NAME2: value2b
script
script to run
after_script
script to run after both script
successful and script
failure
work_dir
diretory to run
- own job is run under
work_dir/$PARADUCT_JOB_NAME
- if
work_dir
is empty, own job is run under current directory.- rsync is disabled
variables
Parameters to be combined
-
$PARADUCT_JOB_NAME
is generated with variables
$PARADUCT_JOB_ID | NAME1 | NAME2 | $PARADUCT_JOB_NAME | current directory where the test is performed |
---|---|---|---|---|
1 | value1a | value2a | NAME1_value1a_NAME2_value2a | tmp/paraduct_workspace/NAME1_value1a_NAME2_value2a |
2 | value1a | value2b | NAME1_value1a_NAME2_value2b | tmp/paraduct_workspace/NAME1_value1a_NAME2_value2b |
3 | value1b | value2a | NAME1_value1b_NAME2_value2a | tmp/paraduct_workspace/NAME1_value1b_NAME2_value2a |
4 | value1b | value2b | NAME1_value1b_NAME2_value2b | tmp/paraduct_workspace/NAME1_value1b_NAME2_value2b |
max_threads
maximum concurrent execution number of jobs
rsync_option
support only exclude-from
exclude
exclude pattern from product variables
Contributing
- Fork it ( https://github.com/sue445/paraduct/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request