-
Notifications
You must be signed in to change notification settings - Fork 5
How to create integration test
Here you find information how to create integration test, where to store integration test
Integration tests are kept in MDBCI_DIRECTORY/spec/integration folder.
Create ruby file like this: CUSTOM_TEST_NAME_spec.rb in integration tests folder
Integration test example: https://github.com/OSLL/mdbci/blob/integration/spec/integration/6819_show_box_info_spec.rb
Here you can see block like:
executeShellCommandsAndTestExitCode ([
{'shell_command'=>'./mdbci show boxinfo --box-name ubuntu_trusty_vbox --field platform', 'expectation'=>0},
{'shell_command'=>'./mdbci show boxinfo --box-name ubuntu_trusty_vbox', 'expectation'=>0},
{'shell_command'=>'./mdbci show boxinfo --box-name ubuntu_trusty_vbox --field', 'expectation'=>1},
{'shell_command'=>'./mdbci show boxinfo --box-name ubuntu_trusty_vbox --field WRONG', 'expectation'=>1},
{'shell_command'=>'./mdbci show boxinfo --box-name WRONG --field platform', 'expectation'=>1},
{'shell_command'=>'./mdbci show boxinfo --box-name WRONG --field WRONG', 'expectation'=>1},
{'shell_command'=>'./mdbci show boxinfo --box-name WRONG', 'expectation'=>1}
])
Method executeShellCommandsAndTestExitCode expects an array with hashes. Hashes contains bash command and exit code of command:
[{'shell_command'=>'ls', 'expectation'=>0}]
Here we say: ’let’s test ls command and check it’s exit code to be equal to zero’
If test non parametrized add next line to file MDBCI_DIRECTORY/spec/integration_tasks.rb like:
namespace :run_integration do
...
task :task_CUSTOM_TEST_NAME do |t| RakeTaskManager.new(t).run_integration(PROVIDER_ARGUMENT) end
...
end
If test parametrized add next line to file MDBCI_DIRECTORY/spec/integration_parametrized_tasks.rb:
namespace :run_integration_parametrized do
...
task :task_CUSTOM_TEST_NAME do |t| RakeTaskManager.new(t).run_integration_parametrized(PROVIDER_ARGUMENT) end
...
end
CUSTOM_TEST_NAME is a name of file with test from integration tests directory but without postfix ‘_spec.rb’
Example of CUSTOM_TEST_NAME:
test file: INTEGRATION_TESTS_DIRECTORY/test1_spec.rb
CUSTOM_TEST_NAME: test1
PROVIDER_ARGUMENT is a ruby array filled with no more that 3 different provider names:
- DOCKER
- LIBVIRT
- PPC
Example of PROVIDER_ARGUMENT:
[DOCKER, LIBVIRT]
Depending on PROVIDER_ARGUMENT, for each provider would be created clone