beaker 4.41.2 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/dependabot.yml +9 -0
- data/.github/workflows/release.yml +2 -2
- data/.github/workflows/test.yml +26 -13
- data/.rubocop.yml +23 -10
- data/.rubocop_todo.yml +34 -10
- data/CHANGELOG.md +16 -52
- data/Gemfile +12 -7
- data/HISTORY.md +605 -0
- data/Rakefile +99 -111
- data/acceptance/config/acceptance-options.rb +1 -1
- data/acceptance/config/base/acceptance-options.rb +2 -2
- data/acceptance/config/hypervisor/acceptance-options.rb +2 -2
- data/acceptance/config/subcommands/acceptance-options.rb +2 -2
- data/acceptance/fixtures/module/Rakefile +1 -1
- data/acceptance/fixtures/module/spec/acceptance/demo_spec.rb +8 -12
- data/acceptance/fixtures/module/spec/classes/init_spec.rb +0 -1
- data/acceptance/fixtures/module/spec/spec_helper_acceptance.rb +3 -5
- data/acceptance/lib/helpers/test_helper.rb +6 -5
- data/acceptance/pre_suite/subcommands/05_install_ruby.rb +2 -3
- data/acceptance/pre_suite/subcommands/08_install_beaker.rb +1 -2
- data/acceptance/tests/base/dsl/helpers/configuration_test.rb +4 -4
- data/acceptance/tests/base/dsl/helpers/hocon_helpers_test.rb +1 -2
- data/acceptance/tests/base/dsl/helpers/host_helpers/add_system32_hosts_entry_test.rb +0 -3
- data/acceptance/tests/base/dsl/helpers/host_helpers/archive_file_from_test.rb +3 -1
- data/acceptance/tests/base/dsl/helpers/host_helpers/backup_the_file_test.rb +9 -9
- data/acceptance/tests/base/dsl/helpers/host_helpers/check_for_package_test.rb +0 -4
- data/acceptance/tests/base/dsl/helpers/host_helpers/create_remote_file_test.rb +19 -26
- data/acceptance/tests/base/dsl/helpers/host_helpers/curl_on_test.rb +2 -2
- data/acceptance/tests/base/dsl/helpers/host_helpers/curl_with_retries_test.rb +0 -1
- data/acceptance/tests/base/dsl/helpers/host_helpers/on_test.rb +18 -13
- data/acceptance/tests/base/dsl/helpers/host_helpers/retry_on_test.rb +3 -3
- data/acceptance/tests/base/dsl/helpers/host_helpers/rsync_to_test.rb +22 -27
- data/acceptance/tests/base/dsl/helpers/host_helpers/run_cron_on_test.rb +12 -16
- data/acceptance/tests/base/dsl/helpers/host_helpers/run_script_on_test.rb +3 -4
- data/acceptance/tests/base/dsl/helpers/host_helpers/run_script_test.rb +3 -3
- data/acceptance/tests/base/dsl/helpers/host_helpers/scp_from_test.rb +4 -4
- data/acceptance/tests/base/dsl/helpers/host_helpers/scp_to_test.rb +3 -4
- data/acceptance/tests/base/dsl/helpers/host_helpers/shell_test.rb +5 -5
- data/acceptance/tests/base/dsl/helpers/host_helpers/upgrade_package_test.rb +3 -5
- data/acceptance/tests/base/dsl/platform_tag_confiner_test.rb +14 -17
- data/acceptance/tests/base/dsl/structure_test.rb +5 -11
- data/acceptance/tests/base/host/file_test.rb +2 -2
- data/acceptance/tests/base/host/group_test.rb +0 -1
- data/acceptance/tests/base/host/host_test.rb +66 -63
- data/acceptance/tests/base/host/packages.rb +1 -2
- data/acceptance/tests/base/host/packages_unix.rb +0 -55
- data/acceptance/tests/base/host/user_test.rb +0 -1
- data/acceptance/tests/base/host_prebuilt_steps/ssh_environment_test.rb +1 -2
- data/acceptance/tests/base/test_suite/export.rb +6 -9
- data/acceptance/tests/install/from_file.rb +2 -4
- data/acceptance/tests/load_path_bootstrap.rb +1 -1
- data/acceptance/tests/subcommands/destroy.rb +19 -21
- data/acceptance/tests/subcommands/exec.rb +0 -1
- data/acceptance/tests/subcommands/init.rb +2 -3
- data/acceptance/tests/subcommands/provision.rb +0 -1
- data/beaker.gemspec +4 -7
- data/docs/concepts/argument_processing_and_precedence.md +1 -10
- data/docs/how_to/debug_beaker_tests.md +12 -12
- data/docs/how_to/hosts/eos.md +2 -12
- data/docs/how_to/install_puppet.md +0 -18
- data/docs/how_to/the_beaker_dsl.md +0 -2
- data/lib/beaker/cli.rb +59 -68
- data/lib/beaker/command.rb +20 -28
- data/lib/beaker/command_factory.rb +3 -2
- data/lib/beaker/dsl/assertions.rb +6 -18
- data/lib/beaker/dsl/helpers/hocon_helpers.rb +3 -7
- data/lib/beaker/dsl/helpers/host_helpers.rb +62 -123
- data/lib/beaker/dsl/helpers/test_helpers.rb +3 -5
- data/lib/beaker/dsl/helpers/web_helpers.rb +19 -39
- data/lib/beaker/dsl/helpers.rb +2 -4
- data/lib/beaker/dsl/outcomes.rb +13 -15
- data/lib/beaker/dsl/patterns.rb +1 -3
- data/lib/beaker/dsl/roles.rb +17 -20
- data/lib/beaker/dsl/structure.rb +53 -65
- data/lib/beaker/dsl/test_tagging.rb +7 -10
- data/lib/beaker/dsl/wrappers.rb +15 -16
- data/lib/beaker/dsl.rb +2 -3
- data/lib/beaker/host/aix/exec.rb +1 -1
- data/lib/beaker/host/aix/file.rb +0 -1
- data/lib/beaker/host/aix/group.rb +1 -1
- data/lib/beaker/host/aix/user.rb +1 -1
- data/lib/beaker/host/aix.rb +3 -4
- data/lib/beaker/host/cisco.rb +27 -39
- data/lib/beaker/host/eos.rb +4 -30
- data/lib/beaker/host/freebsd/exec.rb +1 -1
- data/lib/beaker/host/freebsd/pkg.rb +3 -3
- data/lib/beaker/host/freebsd.rb +9 -12
- data/lib/beaker/host/mac/exec.rb +4 -4
- data/lib/beaker/host/mac/group.rb +7 -7
- data/lib/beaker/host/mac/pkg.rb +3 -106
- data/lib/beaker/host/mac/user.rb +2 -2
- data/lib/beaker/host/mac.rb +8 -9
- data/lib/beaker/host/pswindows/exec.rb +66 -70
- data/lib/beaker/host/pswindows/file.rb +3 -5
- data/lib/beaker/host/pswindows/group.rb +3 -3
- data/lib/beaker/host/pswindows/pkg.rb +12 -12
- data/lib/beaker/host/pswindows/user.rb +3 -3
- data/lib/beaker/host/pswindows.rb +4 -3
- data/lib/beaker/host/unix/exec.rb +81 -83
- data/lib/beaker/host/unix/file.rb +40 -45
- data/lib/beaker/host/unix/group.rb +1 -1
- data/lib/beaker/host/unix/pkg.rb +138 -401
- data/lib/beaker/host/unix/user.rb +2 -2
- data/lib/beaker/host/unix.rb +8 -11
- data/lib/beaker/host/windows/exec.rb +17 -17
- data/lib/beaker/host/windows/file.rb +3 -3
- data/lib/beaker/host/windows/group.rb +3 -3
- data/lib/beaker/host/windows/pkg.rb +3 -54
- data/lib/beaker/host/windows/user.rb +3 -3
- data/lib/beaker/host/windows.rb +12 -12
- data/lib/beaker/host.rb +76 -133
- data/lib/beaker/host_prebuilt_steps.rb +88 -196
- data/lib/beaker/hypervisor/noop.rb +2 -4
- data/lib/beaker/hypervisor.rb +44 -61
- data/lib/beaker/local_connection.rb +2 -4
- data/lib/beaker/logger.rb +68 -76
- data/lib/beaker/logger_junit.rb +21 -25
- data/lib/beaker/network_manager.rb +39 -42
- data/lib/beaker/options/command_line_parser.rb +12 -23
- data/lib/beaker/options/hosts_file_parser.rb +16 -25
- data/lib/beaker/options/options_file_parser.rb +3 -6
- data/lib/beaker/options/options_hash.rb +2 -7
- data/lib/beaker/options/parser.rb +86 -102
- data/lib/beaker/options/presets.rb +114 -123
- data/lib/beaker/options/subcommand_options_file_parser.rb +3 -6
- data/lib/beaker/options/validator.rb +26 -31
- data/lib/beaker/perf.rb +25 -30
- data/lib/beaker/platform.rb +26 -37
- data/lib/beaker/result.rb +7 -6
- data/lib/beaker/shared/error_handler.rb +8 -10
- data/lib/beaker/shared/fog_credentials.rb +5 -9
- data/lib/beaker/shared/host_manager.rb +36 -41
- data/lib/beaker/shared/options_resolver.rb +3 -7
- data/lib/beaker/shared/repetition.rb +2 -4
- data/lib/beaker/shared/semvar.rb +37 -41
- data/lib/beaker/shared/timed.rb +0 -3
- data/lib/beaker/shared.rb +1 -1
- data/lib/beaker/ssh_connection.rb +38 -47
- data/lib/beaker/subcommand.rb +17 -24
- data/lib/beaker/subcommands/subcommand_util.rb +4 -4
- data/lib/beaker/tasks/quick_start.rb +4 -9
- data/lib/beaker/tasks/rake_task.rb +25 -27
- data/lib/beaker/tasks/test.rb +4 -4
- data/lib/beaker/test_case.rb +16 -28
- data/lib/beaker/test_suite.rb +35 -39
- data/lib/beaker/test_suite_result.rb +45 -47
- data/lib/beaker/version.rb +1 -1
- data/lib/beaker.rb +6 -7
- data/spec/beaker/cli_spec.rb +121 -142
- data/spec/beaker/command_spec.rb +55 -59
- data/spec/beaker/dsl/assertions_spec.rb +36 -36
- data/spec/beaker/dsl/helpers/host_helpers_spec.rb +110 -131
- data/spec/beaker/dsl/helpers/test_helpers_spec.rb +9 -10
- data/spec/beaker/dsl/helpers/web_helpers_spec.rb +22 -31
- data/spec/beaker/dsl/outcomes_spec.rb +14 -14
- data/spec/beaker/dsl/roles_spec.rb +125 -130
- data/spec/beaker/dsl/structure_spec.rb +172 -161
- data/spec/beaker/dsl/test_tagging_spec.rb +89 -90
- data/spec/beaker/dsl/wrappers_spec.rb +32 -33
- data/spec/beaker/host/aix_spec.rb +14 -14
- data/spec/beaker/host/cisco_spec.rb +84 -94
- data/spec/beaker/host/eos_spec.rb +15 -36
- data/spec/beaker/host/freebsd/exec_spec.rb +3 -6
- data/spec/beaker/host/freebsd/pkg_spec.rb +24 -27
- data/spec/beaker/host/mac/exec_spec.rb +2 -3
- data/spec/beaker/host/mac/group_spec.rb +48 -57
- data/spec/beaker/host/mac/user_spec.rb +54 -63
- data/spec/beaker/host/pswindows/exec_spec.rb +30 -32
- data/spec/beaker/host/pswindows/file_spec.rb +16 -16
- data/spec/beaker/host/pswindows/user_spec.rb +17 -23
- data/spec/beaker/host/pswindows_spec.rb +13 -13
- data/spec/beaker/host/unix/exec_spec.rb +75 -80
- data/spec/beaker/host/unix/file_spec.rb +66 -71
- data/spec/beaker/host/unix/pkg_spec.rb +150 -411
- data/spec/beaker/host/unix_spec.rb +11 -207
- data/spec/beaker/host/windows/exec_spec.rb +30 -32
- data/spec/beaker/host/windows/file_spec.rb +18 -19
- data/spec/beaker/host/windows/group_spec.rb +10 -12
- data/spec/beaker/host/windows/pkg_spec.rb +6 -9
- data/spec/beaker/host/windows/user_spec.rb +17 -23
- data/spec/beaker/host/windows_spec.rb +39 -39
- data/spec/beaker/host_prebuilt_steps_spec.rb +168 -349
- data/spec/beaker/host_spec.rb +204 -284
- data/spec/beaker/hypervisor/hypervisor_spec.rb +36 -61
- data/spec/beaker/localhost_connection_spec.rb +10 -11
- data/spec/beaker/logger_junit_spec.rb +19 -30
- data/spec/beaker/logger_spec.rb +153 -136
- data/spec/beaker/network_manager_spec.rb +23 -23
- data/spec/beaker/options/command_line_parser_spec.rb +20 -23
- data/spec/beaker/options/hosts_file_parser_spec.rb +30 -32
- data/spec/beaker/options/options_file_parser_spec.rb +4 -7
- data/spec/beaker/options/options_hash_spec.rb +4 -6
- data/spec/beaker/options/parser_spec.rb +167 -167
- data/spec/beaker/options/presets_spec.rb +7 -9
- data/spec/beaker/options/subcommand_options_parser_spec.rb +13 -14
- data/spec/beaker/options/validator_spec.rb +10 -11
- data/spec/beaker/perf_spec.rb +18 -21
- data/spec/beaker/platform_spec.rb +25 -50
- data/spec/beaker/shared/error_handler_spec.rb +7 -16
- data/spec/beaker/shared/fog_credentials_spec.rb +29 -29
- data/spec/beaker/shared/host_manager_spec.rb +50 -84
- data/spec/beaker/shared/options_resolver_spec.rb +9 -12
- data/spec/beaker/shared/repetition_spec.rb +17 -24
- data/spec/beaker/shared/semvar_spec.rb +21 -26
- data/spec/beaker/ssh_connection_spec.rb +76 -83
- data/spec/beaker/subcommand/subcommand_util_spec.rb +31 -33
- data/spec/beaker/subcommand_spec.rb +75 -77
- data/spec/beaker/test_case_spec.rb +25 -50
- data/spec/beaker/test_suite_spec.rb +147 -154
- data/spec/helpers.rb +39 -45
- data/spec/matchers.rb +8 -7
- data/spec/mocks.rb +1 -6
- data/spec/spec_helper.rb +0 -1
- metadata +8 -24
- data/acceptance/tests/base/dsl/helpers/host_helpers/deploy_package_repo_test.rb +0 -142
- data/acceptance/tests/base/external_resources_test.rb +0 -31
- data/spec/beaker/host/mac_spec.rb +0 -113
|
@@ -3,32 +3,32 @@ require 'spec_helper'
|
|
|
3
3
|
module PSWindows
|
|
4
4
|
describe Host do
|
|
5
5
|
let(:options) { @options ? @options : {} }
|
|
6
|
-
let(:platform)
|
|
6
|
+
let(:platform) do
|
|
7
7
|
if @platform
|
|
8
|
-
{ :platform => Beaker::Platform.new(
|
|
8
|
+
{ :platform => Beaker::Platform.new(@platform) }
|
|
9
9
|
else
|
|
10
|
-
{ :platform => Beaker::Platform.new(
|
|
10
|
+
{ :platform => Beaker::Platform.new('windows-vers-arch-extra') }
|
|
11
11
|
end
|
|
12
|
-
|
|
13
|
-
let(:host)
|
|
12
|
+
end
|
|
13
|
+
let(:host) do
|
|
14
14
|
opts = options.merge(platform)
|
|
15
15
|
opts[:is_cygwin] = false
|
|
16
|
-
make_host(
|
|
17
|
-
|
|
16
|
+
make_host('name', opts)
|
|
17
|
+
end
|
|
18
18
|
|
|
19
19
|
describe '#external_copy_base' do
|
|
20
20
|
it 'returns previously calculated value if set' do
|
|
21
|
-
external_copy_base_before = host.instance_variable_get(
|
|
21
|
+
external_copy_base_before = host.instance_variable_get(:@external_copy_base)
|
|
22
22
|
test_value = :testn8391
|
|
23
|
-
host.instance_variable_set(
|
|
23
|
+
host.instance_variable_set(:@external_copy_base, test_value)
|
|
24
24
|
|
|
25
|
-
expect(
|
|
26
|
-
expect(
|
|
27
|
-
host.instance_variable_set(
|
|
25
|
+
expect(host).not_to receive(:execute)
|
|
26
|
+
expect(host.external_copy_base).to be === test_value
|
|
27
|
+
host.instance_variable_set(:@external_copy_base, external_copy_base_before)
|
|
28
28
|
end
|
|
29
29
|
|
|
30
30
|
it 'calls the correct command if unset' do
|
|
31
|
-
expect(
|
|
31
|
+
expect(host).to receive(:execute).with(/^for\ .*ALLUSERSPROFILE.*\%\~I$/)
|
|
32
32
|
host.external_copy_base
|
|
33
33
|
end
|
|
34
34
|
end
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
|
|
3
3
|
module Beaker
|
|
4
|
-
|
|
5
4
|
describe Unix::Exec do
|
|
6
5
|
class UnixExecTest
|
|
7
6
|
include Unix::Exec
|
|
@@ -18,19 +17,17 @@ module Beaker
|
|
|
18
17
|
def to_s
|
|
19
18
|
"me"
|
|
20
19
|
end
|
|
21
|
-
|
|
22
20
|
end
|
|
23
21
|
|
|
24
22
|
let(:opts) { @opts || {} }
|
|
25
|
-
let(:logger) { double(
|
|
23
|
+
let(:logger) { double('logger').as_null_object }
|
|
26
24
|
let(:instance) { UnixExecTest.new(opts, logger) }
|
|
27
25
|
|
|
28
26
|
context "rm" do
|
|
29
|
-
|
|
30
27
|
it "deletes" do
|
|
31
28
|
path = '/path/to/delete'
|
|
32
|
-
expect(
|
|
33
|
-
expect(
|
|
29
|
+
expect(instance).to receive(:execute).with("rm -rf #{path}").and_return(0)
|
|
30
|
+
expect(instance.rm_rf(path)).to be === 0
|
|
34
31
|
end
|
|
35
32
|
end
|
|
36
33
|
|
|
@@ -39,15 +36,14 @@ module Beaker
|
|
|
39
36
|
let(:destination) { '/destination/path/of/content' }
|
|
40
37
|
|
|
41
38
|
it 'rm first' do
|
|
42
|
-
expect(
|
|
43
|
-
expect(
|
|
44
|
-
expect(
|
|
45
|
-
|
|
39
|
+
expect(instance).to receive(:execute).with("rm -rf #{destination}").and_return(0)
|
|
40
|
+
expect(instance).to receive(:execute).with("mv #{origin} #{destination}").and_return(0)
|
|
41
|
+
expect(instance.mv(origin, destination)).to be === 0
|
|
46
42
|
end
|
|
47
43
|
|
|
48
44
|
it 'does not rm' do
|
|
49
|
-
|
|
50
|
-
|
|
45
|
+
expect(instance).to receive(:execute).with("mv #{origin} #{destination}").and_return(0)
|
|
46
|
+
expect(instance.mv(origin, destination, false)).to be === 0
|
|
51
47
|
end
|
|
52
48
|
end
|
|
53
49
|
|
|
@@ -55,36 +51,36 @@ module Beaker
|
|
|
55
51
|
it 'calls execute with touch and timestamp' do
|
|
56
52
|
time = '190101010000'
|
|
57
53
|
path = '/path/to/file'
|
|
58
|
-
expect(
|
|
54
|
+
expect(instance).to receive(:execute).with("/bin/touch -mt #{time} #{path}").and_return(0)
|
|
59
55
|
|
|
60
56
|
instance.modified_at(path, time)
|
|
61
57
|
end
|
|
62
58
|
end
|
|
63
59
|
|
|
64
60
|
describe '#environment_string' do
|
|
65
|
-
let(:host) { {'pathseparator' => ':'} }
|
|
61
|
+
let(:host) { { 'pathseparator' => ':' } }
|
|
66
62
|
|
|
67
63
|
it 'returns a blank string if theres no env' do
|
|
68
|
-
expect(
|
|
69
|
-
expect(
|
|
64
|
+
expect(instance).not_to receive(:is_powershell?)
|
|
65
|
+
expect(instance.environment_string({})).to be == ''
|
|
70
66
|
end
|
|
71
67
|
|
|
72
68
|
it 'takes an env hash with var_name/value pairs' do
|
|
73
|
-
expect(
|
|
74
|
-
to be == 'env HOME="/" http_proxy="http://foo" HTTP_PROXY="http://foo"'
|
|
69
|
+
expect(instance.environment_string({ :HOME => '/', :http_proxy => 'http://foo' }))
|
|
70
|
+
.to be == 'env HOME="/" http_proxy="http://foo" HTTP_PROXY="http://foo"'
|
|
75
71
|
end
|
|
76
72
|
|
|
77
73
|
it 'takes an env hash with var_name/value[Array] pairs' do
|
|
78
|
-
expect(
|
|
79
|
-
to be == "env LD_PATH=\"/:/tmp\""
|
|
74
|
+
expect(instance.environment_string({ :LD_PATH => ['/', '/tmp'] }))
|
|
75
|
+
.to be == "env LD_PATH=\"/:/tmp\""
|
|
80
76
|
end
|
|
81
77
|
end
|
|
82
78
|
|
|
83
79
|
describe '#ssh_permit_user_environment' do
|
|
84
80
|
context 'When called without error' do
|
|
85
|
-
let(:directory) {'/directory'}
|
|
86
|
-
let(:ssh_command) {"echo 'PermitUserEnvironment yes' | cat - /etc/ssh/sshd_config > #{directory}/sshd_config.permit"}
|
|
87
|
-
let(:ssh_move) {"mv #{directory}/sshd_config.permit /etc/ssh/sshd_config"}
|
|
81
|
+
let(:directory) { '/directory' }
|
|
82
|
+
let(:ssh_command) { "echo 'PermitUserEnvironment yes' | cat - /etc/ssh/sshd_config > #{directory}/sshd_config.permit" }
|
|
83
|
+
let(:ssh_move) { "mv #{directory}/sshd_config.permit /etc/ssh/sshd_config" }
|
|
88
84
|
|
|
89
85
|
platforms = PlatformHelpers::SYSTEMDPLATFORMS + PlatformHelpers::DEBIANPLATFORMS + PlatformHelpers::SYSTEMVPLATFORMS
|
|
90
86
|
|
|
@@ -96,16 +92,16 @@ module Beaker
|
|
|
96
92
|
expect(Beaker::Command).to receive(:new).with(ssh_move)
|
|
97
93
|
expect(Beaker::Command).to receive(:new).with(ssh_command)
|
|
98
94
|
expect(instance).to receive(:ssh_service_restart)
|
|
99
|
-
expect{instance.ssh_permit_user_environment}.not_to raise_error
|
|
95
|
+
expect { instance.ssh_permit_user_environment }.not_to raise_error
|
|
100
96
|
end
|
|
101
97
|
end
|
|
102
98
|
end
|
|
103
99
|
|
|
104
100
|
it 'raises an error on unsupported platforms' do
|
|
105
101
|
opts['platform'] = 'notarealthing01-parts-arch'
|
|
106
|
-
expect
|
|
102
|
+
expect do
|
|
107
103
|
instance.ssh_permit_user_environment
|
|
108
|
-
|
|
104
|
+
end.to raise_error(ArgumentError, /#{opts['platform']}/)
|
|
109
105
|
end
|
|
110
106
|
end
|
|
111
107
|
|
|
@@ -115,7 +111,7 @@ module Beaker
|
|
|
115
111
|
opts['platform'] = platform
|
|
116
112
|
expect(instance).to receive(:exec)
|
|
117
113
|
expect(Beaker::Command).to receive(:new).with("systemctl restart sshd.service")
|
|
118
|
-
expect{instance.ssh_service_restart}.not_to raise_error
|
|
114
|
+
expect { instance.ssh_service_restart }.not_to raise_error
|
|
119
115
|
end
|
|
120
116
|
end
|
|
121
117
|
|
|
@@ -124,7 +120,7 @@ module Beaker
|
|
|
124
120
|
opts['platform'] = platform
|
|
125
121
|
expect(instance).to receive(:exec)
|
|
126
122
|
expect(Beaker::Command).to receive(:new).with("service ssh restart")
|
|
127
|
-
expect{instance.ssh_service_restart}.not_to raise_error
|
|
123
|
+
expect { instance.ssh_service_restart }.not_to raise_error
|
|
128
124
|
end
|
|
129
125
|
end
|
|
130
126
|
|
|
@@ -133,37 +129,37 @@ module Beaker
|
|
|
133
129
|
opts['platform'] = "#{platform}-arch"
|
|
134
130
|
expect(instance).to receive(:exec)
|
|
135
131
|
expect(Beaker::Command).to receive(:new).with("/sbin/service sshd restart")
|
|
136
|
-
expect{instance.ssh_service_restart}.not_to raise_error
|
|
132
|
+
expect { instance.ssh_service_restart }.not_to raise_error
|
|
137
133
|
end
|
|
138
134
|
end
|
|
139
135
|
|
|
140
136
|
it 'raises an error on unsupported platforms' do
|
|
141
137
|
opts['platform'] = 'notarealthing02-parts-arch'
|
|
142
|
-
expect
|
|
138
|
+
expect do
|
|
143
139
|
instance.ssh_service_restart
|
|
144
|
-
|
|
140
|
+
end.to raise_error(ArgumentError, /#{opts['platform']}/)
|
|
145
141
|
end
|
|
146
142
|
end
|
|
147
143
|
|
|
148
144
|
describe '#prepend_commands' do
|
|
149
145
|
it 'returns the pc parameter unchanged for non-cisco platforms' do
|
|
150
|
-
allow(
|
|
146
|
+
allow(instance).to receive(:[]).with(:platform).and_return('notcisco')
|
|
151
147
|
answer_prepend_commands = 'pc_param_unchanged_13579'
|
|
152
|
-
answer_test = instance.prepend_commands(
|
|
153
|
-
expect(
|
|
148
|
+
answer_test = instance.prepend_commands('fake_cmd', answer_prepend_commands)
|
|
149
|
+
expect(answer_test).to be === answer_prepend_commands
|
|
154
150
|
end
|
|
155
151
|
end
|
|
156
152
|
|
|
157
153
|
describe '#selinux_enabled?' do
|
|
158
154
|
it 'calls selinuxenabled and selinux is enabled' do
|
|
159
155
|
expect(Beaker::Command).to receive(:new).with("sudo selinuxenabled").and_return(0)
|
|
160
|
-
expect(instance).to receive(:exec).with(0, :accept_all_exit_codes => true).and_return(generate_result("test", {:exit_code => 0}))
|
|
156
|
+
expect(instance).to receive(:exec).with(0, :accept_all_exit_codes => true).and_return(generate_result("test", { :exit_code => 0 }))
|
|
161
157
|
expect(instance.selinux_enabled?).to be === true
|
|
162
158
|
end
|
|
163
159
|
|
|
164
160
|
it 'calls selinuxenabled and selinux is not enabled' do
|
|
165
161
|
expect(Beaker::Command).to receive(:new).with("sudo selinuxenabled").and_return(1)
|
|
166
|
-
expect(instance).to receive(:exec).with(1, :accept_all_exit_codes => true).and_return(generate_result("test", {:exit_code => 1}))
|
|
162
|
+
expect(instance).to receive(:exec).with(1, :accept_all_exit_codes => true).and_return(generate_result("test", { :exit_code => 1 }))
|
|
167
163
|
expect(instance.selinux_enabled?).to be === false
|
|
168
164
|
end
|
|
169
165
|
end
|
|
@@ -178,14 +174,14 @@ module Beaker
|
|
|
178
174
|
:success => " system boot #{year}-05-13 03:52",
|
|
179
175
|
},
|
|
180
176
|
:last => {
|
|
181
|
-
|
|
177
|
+
:initial => <<~LAST_F,
|
|
182
178
|
reboot system boot 2.6.32-754.29.1. Tue May 5 17:34:52 #{year} - Tue May 5 17:52:48 #{year} (00:17)
|
|
183
179
|
reboot system boot 2.6.32-754.29.1. Mon May 4 18:45:43 #{year} - Mon May 5 05:35:44 #{year} (4+01:50)
|
|
184
|
-
|
|
185
|
-
|
|
180
|
+
LAST_F
|
|
181
|
+
:success => <<~LAST_F,
|
|
186
182
|
reboot system boot 2.6.32-754.29.1. Tue May 5 17:52:48 #{year} - Tue May 5 17:52:49 #{year} (00:17)
|
|
187
183
|
reboot system boot 2.6.32-754.29.1. Mon May 4 18:45:43 #{year} - Mon May 5 05:35:44 #{year} (4+01:50)
|
|
188
|
-
|
|
184
|
+
LAST_F
|
|
189
185
|
},
|
|
190
186
|
},
|
|
191
187
|
:centos7 => {
|
|
@@ -194,14 +190,14 @@ module Beaker
|
|
|
194
190
|
:success => " system boot #{year}-05-13 03:52",
|
|
195
191
|
},
|
|
196
192
|
:last => {
|
|
197
|
-
|
|
193
|
+
:initial => <<~LAST_F,
|
|
198
194
|
reboot system boot 3.10.0-1127.el7. Tue May 5 17:34:52 #{year} - Tue May 5 17:52:48 #{year} (00:17)
|
|
199
195
|
reboot system boot 3.10.0-1127.el7. Mon May 4 18:45:43 #{year} - Mon May 5 05:35:44 #{year} (4+01:50)
|
|
200
|
-
|
|
201
|
-
|
|
196
|
+
LAST_F
|
|
197
|
+
:success => <<~LAST_F,
|
|
202
198
|
reboot system boot 3.10.0-1127.el7. Tue May 5 17:52:48 #{year} - Tue May 5 17:52:49 #{year} (00:17)
|
|
203
199
|
reboot system boot 3.10.0-1127.el7. Mon May 4 18:45:43 #{year} - Mon May 5 05:35:44 #{year} (4+01:50)
|
|
204
|
-
|
|
200
|
+
LAST_F
|
|
205
201
|
},
|
|
206
202
|
},
|
|
207
203
|
:centos8 => {
|
|
@@ -210,14 +206,14 @@ module Beaker
|
|
|
210
206
|
:success => " system boot #{year}-05-13 03:52",
|
|
211
207
|
},
|
|
212
208
|
:last => {
|
|
213
|
-
|
|
209
|
+
:initial => <<~LAST_F,
|
|
214
210
|
reboot system boot 4.18.0-147.8.1.e Tue May 5 17:34:52 #{year} still running
|
|
215
211
|
reboot system boot 4.18.0-147.8.1.e Mon May 4 17:41:27 #{year} - Tue May 5 17:00:00 #{year} (5+00:11)
|
|
216
|
-
|
|
217
|
-
|
|
212
|
+
LAST_F
|
|
213
|
+
:success => <<~LAST_F,
|
|
218
214
|
reboot system boot 4.18.0-147.8.1.e Tue May 5 17:34:53 #{year} still running
|
|
219
215
|
reboot system boot 4.18.0-147.8.1.e Mon May 4 17:41:27 #{year} - Tue May 5 17:00:00 #{year} (5+00:11)
|
|
220
|
-
|
|
216
|
+
LAST_F
|
|
221
217
|
},
|
|
222
218
|
},
|
|
223
219
|
:freebsd => {
|
|
@@ -225,15 +221,15 @@ module Beaker
|
|
|
225
221
|
:who => {
|
|
226
222
|
:initial => ' system boot May 13 03:51',
|
|
227
223
|
:success => ' system boot May 13 03:52',
|
|
228
|
-
}
|
|
224
|
+
},
|
|
229
225
|
},
|
|
230
226
|
}
|
|
231
227
|
|
|
232
228
|
# no-op response
|
|
233
|
-
let(:response) { double(
|
|
234
|
-
let(:boot_time_initial_response) { double(
|
|
229
|
+
let(:response) { double('response') }
|
|
230
|
+
let(:boot_time_initial_response) { double('response') }
|
|
235
231
|
|
|
236
|
-
let(:boot_time_success_response) { double(
|
|
232
|
+
let(:boot_time_success_response) { double('response') }
|
|
237
233
|
let(:sleep_time) { 10 }
|
|
238
234
|
|
|
239
235
|
before do
|
|
@@ -259,46 +255,46 @@ module Beaker
|
|
|
259
255
|
it 'passes with defaults' do
|
|
260
256
|
expect(instance).to receive(:sleep).with(sleep_time)
|
|
261
257
|
# bypass shutdown command itself
|
|
262
|
-
expect(instance).to receive(
|
|
263
|
-
expect(instance).to receive(
|
|
258
|
+
expect(instance).to receive(:exec).with(:shutdown_command_stub, anything).and_return(response)
|
|
259
|
+
expect(instance).to receive(:exec).with(:boot_time_command_stub, anything).and_return(boot_time_initial_response).once
|
|
264
260
|
# allow the second boot_time and the hash arguments in exec
|
|
265
|
-
expect(instance).to receive(
|
|
261
|
+
expect(instance).to receive(:exec).with(:boot_time_command_stub, anything).and_return(boot_time_success_response).once
|
|
266
262
|
|
|
267
|
-
expect(instance.reboot).to
|
|
263
|
+
expect(instance.reboot).to be_nil
|
|
268
264
|
end
|
|
269
265
|
|
|
270
266
|
it 'passes with wait_time_parameter' do
|
|
271
267
|
expect(instance).to receive(:sleep).with(10)
|
|
272
268
|
# bypass shutdown command itself
|
|
273
|
-
expect(instance).to receive(
|
|
274
|
-
expect(instance).to receive(
|
|
269
|
+
expect(instance).to receive(:exec).with(:shutdown_command_stub, anything).and_return(response).once
|
|
270
|
+
expect(instance).to receive(:exec).with(:boot_time_command_stub, anything).and_return(boot_time_initial_response).once
|
|
275
271
|
# allow the second boot_time and the hash arguments in exec
|
|
276
|
-
expect(instance).to receive(
|
|
272
|
+
expect(instance).to receive(:exec).with(:boot_time_command_stub, anything).and_return(boot_time_success_response).once
|
|
277
273
|
|
|
278
|
-
expect(instance.reboot(10)).to
|
|
274
|
+
expect(instance.reboot(10)).to be_nil
|
|
279
275
|
end
|
|
280
276
|
|
|
281
277
|
it 'passes with max_connection_tries parameter' do
|
|
282
278
|
expect(instance).to receive(:sleep).with(sleep_time)
|
|
283
279
|
# bypass shutdown command itself
|
|
284
|
-
expect(instance).to receive(
|
|
285
|
-
expect(instance).to receive(
|
|
280
|
+
expect(instance).to receive(:exec).with(:shutdown_command_stub, anything).and_return(response).once
|
|
281
|
+
expect(instance).to receive(:exec).with(:boot_time_command_stub, anything).and_return(boot_time_initial_response).once
|
|
286
282
|
# allow the second boot_time and the hash arguments in exec
|
|
287
|
-
expect(instance).to receive(
|
|
283
|
+
expect(instance).to receive(:exec).with(:boot_time_command_stub, hash_including(:max_connection_tries => 20)).and_return(boot_time_success_response).once
|
|
288
284
|
|
|
289
|
-
expect(instance.reboot(sleep_time, 20)).to
|
|
285
|
+
expect(instance.reboot(sleep_time, 20)).to be_nil
|
|
290
286
|
end
|
|
291
287
|
|
|
292
288
|
context 'command errors' do
|
|
293
289
|
before do
|
|
294
|
-
allow(instance).to receive(
|
|
290
|
+
allow(instance).to receive(:exec).with(:boot_time_command_stub, anything).and_return(boot_time_initial_response).at_least(:once)
|
|
295
291
|
end
|
|
296
292
|
|
|
297
293
|
it 'raises a reboot failure when command fails' do
|
|
298
294
|
expect(instance).to receive(:sleep).at_least(:once)
|
|
299
295
|
expect(instance).to receive(:exec).with(:shutdown_command_stub, anything).and_raise(Host::CommandFailure).at_least(:once)
|
|
300
296
|
|
|
301
|
-
expect{ instance.reboot }.to raise_error(Beaker::Host::CommandFailure)
|
|
297
|
+
expect { instance.reboot }.to raise_error(Beaker::Host::CommandFailure)
|
|
302
298
|
end
|
|
303
299
|
|
|
304
300
|
it 'raises a reboot failure when we receive an unexpected error' do
|
|
@@ -314,7 +310,7 @@ module Beaker
|
|
|
314
310
|
|
|
315
311
|
it 'raises a reboot failure' do
|
|
316
312
|
# Handle the 'retry'
|
|
317
|
-
allow(instance).to receive(
|
|
313
|
+
allow(instance).to receive(:exec).with(:boot_time_command_stub, anything).and_return(boot_time_initial_response).at_least(:once)
|
|
318
314
|
|
|
319
315
|
expect(instance).not_to receive(:sleep)
|
|
320
316
|
|
|
@@ -327,11 +323,11 @@ module Beaker
|
|
|
327
323
|
|
|
328
324
|
it 'raises a reboot failure' do
|
|
329
325
|
expect(instance).to receive(:exec).with(:shutdown_command_stub, anything).and_return(response).once
|
|
330
|
-
expect(instance).to receive(
|
|
326
|
+
expect(instance).to receive(:exec).with(:boot_time_command_stub, anything).and_return(boot_time_initial_response).once
|
|
331
327
|
# allow the second boot_time and the hash arguments in exec, repeated 10 times by default
|
|
332
|
-
expect(instance).to receive(
|
|
328
|
+
expect(instance).to receive(:exec).with(:boot_time_command_stub, anything).and_return(boot_time_success_response).at_least(:once)
|
|
333
329
|
|
|
334
|
-
expect { instance.reboot(10,9,1) }.to raise_error(Beaker::Host::RebootWarning, /Found no valid times in .*/)
|
|
330
|
+
expect { instance.reboot(10, 9, 1) }.to raise_error(Beaker::Host::RebootWarning, /Found no valid times in .*/)
|
|
335
331
|
end
|
|
336
332
|
end
|
|
337
333
|
end
|
|
@@ -351,10 +347,10 @@ module Beaker
|
|
|
351
347
|
it 'raises RebootFailure' do
|
|
352
348
|
expect(instance).to receive(:sleep).with(sleep_time)
|
|
353
349
|
# bypass shutdown command itself
|
|
354
|
-
expect(instance).to receive(
|
|
350
|
+
expect(instance).to receive(:exec).with(:shutdown_command_stub, anything).and_return(response).once
|
|
355
351
|
|
|
356
|
-
expect(instance).to receive(
|
|
357
|
-
expect(instance).to receive(
|
|
352
|
+
expect(instance).to receive(:exec).with(:boot_time_command_stub, anything).and_return(boot_time_initial_response).once
|
|
353
|
+
expect(instance).to receive(:exec).with(:boot_time_command_stub, anything).and_return(boot_time_success_response).once
|
|
358
354
|
|
|
359
355
|
expect { instance.reboot }.to raise_error(Beaker::Host::RebootFailure, /Boot time did not reset/)
|
|
360
356
|
end
|
|
@@ -362,9 +358,9 @@ module Beaker
|
|
|
362
358
|
it 'raises RebootFailure if the number of retries is changed' do
|
|
363
359
|
expect(instance).to receive(:sleep).with(sleep_time)
|
|
364
360
|
# bypass shutdown command itself
|
|
365
|
-
expect(instance).to receive(
|
|
366
|
-
expect(instance).to receive(
|
|
367
|
-
expect(instance).to receive(
|
|
361
|
+
expect(instance).to receive(:exec).with(:shutdown_command_stub, anything).and_return(response).once
|
|
362
|
+
expect(instance).to receive(:exec).with(:boot_time_command_stub, anything).and_return(boot_time_initial_response).once
|
|
363
|
+
expect(instance).to receive(:exec).with(:boot_time_command_stub, anything).and_return(boot_time_success_response).once
|
|
368
364
|
|
|
369
365
|
expect { instance.reboot(sleep_time, 9, 10) }.to raise_error(Beaker::Host::RebootFailure, /Boot time did not reset/)
|
|
370
366
|
end
|
|
@@ -382,7 +378,6 @@ module Beaker
|
|
|
382
378
|
expect(Beaker::Command).to receive(:new).with("systemctl restart rsyslog")
|
|
383
379
|
instance.enable_remote_rsyslog
|
|
384
380
|
end
|
|
385
|
-
|
|
386
381
|
end
|
|
387
382
|
|
|
388
383
|
describe '#which' do
|
|
@@ -392,7 +387,7 @@ module Beaker
|
|
|
392
387
|
.with('type -P true', :accept_all_exit_codes => true).and_return('/bin/true').once
|
|
393
388
|
|
|
394
389
|
allow(instance).to receive(:execute)
|
|
395
|
-
|
|
390
|
+
.with(where_command, :accept_all_exit_codes => true).and_return(result)
|
|
396
391
|
end
|
|
397
392
|
|
|
398
393
|
context 'when only the environment variable PATH is used' do
|
|
@@ -427,7 +422,7 @@ module Beaker
|
|
|
427
422
|
.with('which true', :accept_all_exit_codes => true).and_return('/bin/true').once
|
|
428
423
|
|
|
429
424
|
allow(instance).to receive(:execute)
|
|
430
|
-
|
|
425
|
+
.with(where_command, :accept_all_exit_codes => true).and_return(result)
|
|
431
426
|
end
|
|
432
427
|
|
|
433
428
|
context 'when only the environment variable PATH is used' do
|
|
@@ -464,7 +459,7 @@ module Beaker
|
|
|
464
459
|
|
|
465
460
|
context 'when only the environment variable PATH is used' do
|
|
466
461
|
it 'fails correctly' do
|
|
467
|
-
expect{instance.which('ruby')}.to raise_error(/suitable/)
|
|
462
|
+
expect { instance.which('ruby') }.to raise_error(/suitable/)
|
|
468
463
|
end
|
|
469
464
|
end
|
|
470
465
|
end
|