beaker 6.2.0 → 6.4.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/CHANGELOG.md +18 -0
- data/acceptance/tests/base/host/packages.rb +1 -24
- data/beaker.gemspec +1 -1
- data/lib/beaker/host/unix/pkg.rb +4 -0
- data/lib/beaker/host_prebuilt_steps.rb +8 -58
- data/lib/beaker/platform.rb +55 -0
- data/lib/beaker/version.rb +1 -1
- data/spec/beaker/command_spec.rb +1 -1
- data/spec/beaker/host/windows/file_spec.rb +2 -2
- data/spec/beaker/host_prebuilt_steps_spec.rb +101 -140
- data/spec/beaker/host_spec.rb +16 -18
- data/spec/beaker/hypervisor/hypervisor_spec.rb +1 -1
- data/spec/beaker/perf_spec.rb +22 -18
- data/spec/beaker/shared/host_manager_spec.rb +1 -1
- data/spec/helpers.rb +3 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1a02ef74d16885231f54a0de64150eba5ff7cfa6bc944c8e31e833dbeb6ebf0c
|
4
|
+
data.tar.gz: 314c9cba9fc50a0966f3bd4d49624041eac4b25dea6dd46cd0e85e1781a95577
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: da309a092cffe2872e0927d5d304d1beb62a618f0c5c223e2cefc723ac3edb7473a3b3ab42f5e3682af2f75a622e158e150258126d0528453e80d1960d7aee3b
|
7
|
+
data.tar.gz: cacc9f2b9679f618c71eda3c4f8de1960f476fb9bbe155a3577a1e7a22cd92d3be9753fc251ac0b7db4e36e214b4da69b4a4cb6c42812aed6f5791d0e9e7fba5
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,23 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## [6.4.0](https://github.com/voxpupuli/beaker/tree/6.4.0) (2024-08-27)
|
4
|
+
|
5
|
+
**Implemented enhancements:**
|
6
|
+
|
7
|
+
- Only install timesync packages if needed [\#1853](https://github.com/voxpupuli/beaker/pull/1853)
|
8
|
+
- Ensure platform is Beaker::Platform in tests [\#1855](https://github.com/voxpupuli/beaker/pull/1855)
|
9
|
+
- Avoid mocking stdout on host and use explicit hosts in host_prebuilt_steps_spec.rb [\#1900](https://github.com/voxpupuli/beaker/pull/1900)
|
10
|
+
|
11
|
+
## [6.3.0](https://github.com/voxpupuli/beaker/tree/6.3.0) (2024-08-13)
|
12
|
+
|
13
|
+
**Implemented enhancements:**
|
14
|
+
|
15
|
+
- build(deps): update minitar requirement from ~> 0.6 to ~> 0.12 [\#1895](https://github.com/voxpupuli/beaker/pull/1895)
|
16
|
+
|
17
|
+
**Fixed bugs:**
|
18
|
+
|
19
|
+
- Arch Linux: Generate keyring before installing packages [\#1897](https://github.com/voxpupuli/beaker/pull/1897) ([bastelfreak](https://github.com/bastelfreak))
|
20
|
+
|
3
21
|
## [6.2.0](https://github.com/voxpupuli/beaker/tree/6.2.0) (2024-07-24)
|
4
22
|
|
5
23
|
**Implemented enhancements:**
|
@@ -1,29 +1,6 @@
|
|
1
1
|
test_name 'confirm packages on hosts behave correctly'
|
2
2
|
confine :except, :platform => %w(osx)
|
3
3
|
|
4
|
-
def get_host_pkg(host)
|
5
|
-
case host['platform']
|
6
|
-
when /sles-10/
|
7
|
-
Beaker::HostPrebuiltSteps::SLES10_PACKAGES
|
8
|
-
when /opensuse|sles-/
|
9
|
-
Beaker::HostPrebuiltSteps::SLES_PACKAGES
|
10
|
-
when /debian/
|
11
|
-
Beaker::HostPrebuiltSteps::DEBIAN_PACKAGES
|
12
|
-
when /windows/
|
13
|
-
host.is_cygwin? ? Beaker::HostPrebuiltSteps::WINDOWS_PACKAGES : Beaker::HostPrebuiltSteps::PSWINDOWS_PACKAGES
|
14
|
-
when /freebsd/
|
15
|
-
Beaker::HostPrebuiltSteps::FREEBSD_PACKAGES
|
16
|
-
when /openbsd/
|
17
|
-
Beaker::HostPrebuiltSteps::OPENBSD_PACKAGES
|
18
|
-
when /solaris-10/
|
19
|
-
Beaker::HostPrebuiltSteps::SOLARIS10_PACKAGES
|
20
|
-
when /el-[89]/
|
21
|
-
Beaker::HostPrebuiltSteps::RHEL8_PACKAGES
|
22
|
-
else
|
23
|
-
Beaker::HostPrebuiltSteps::UNIX_PACKAGES
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
4
|
step '#check_for_command : can determine where a command exists'
|
28
5
|
hosts.each do |host|
|
29
6
|
logger.debug "echo package should be installed on #{host}"
|
@@ -34,7 +11,7 @@ end
|
|
34
11
|
|
35
12
|
step '#check_for_package : can determine if a package is installed'
|
36
13
|
hosts.each do |host|
|
37
|
-
package =
|
14
|
+
package = 'bash'
|
38
15
|
|
39
16
|
logger.debug "#{package} package should be installed on #{host}"
|
40
17
|
assert(host.check_for_package(package), "'#{package}' should be installed")
|
data/beaker.gemspec
CHANGED
@@ -25,7 +25,7 @@ Gem::Specification.new do |s|
|
|
25
25
|
s.add_development_dependency 'voxpupuli-rubocop', '~> 2.8.0'
|
26
26
|
|
27
27
|
# Run time dependencies
|
28
|
-
s.add_runtime_dependency 'minitar', '~> 0.
|
28
|
+
s.add_runtime_dependency 'minitar', '~> 0.12' # newer versions require Ruby 3.1
|
29
29
|
s.add_runtime_dependency 'minitest', '~> 5.4'
|
30
30
|
s.add_runtime_dependency 'rexml', '~> 3.2', '>= 3.2.5'
|
31
31
|
|
data/lib/beaker/host/unix/pkg.rb
CHANGED
@@ -74,6 +74,10 @@ module Unix::Pkg
|
|
74
74
|
return unless self['platform'].include?('archlinux')
|
75
75
|
return unless @pacman_needs_update
|
76
76
|
|
77
|
+
# creates a GPG key + local keyring
|
78
|
+
execute("pacman-key --init")
|
79
|
+
# `archlinux-keyring` contains GPG keys that will be imported into the local keyring
|
80
|
+
# used to verify package signatures
|
77
81
|
execute("pacman --sync --noconfirm --noprogressbar --refresh archlinux-keyring")
|
78
82
|
execute("pacman --sync --noconfirm --noprogressbar --refresh --sysupgrade --ignore linux --ignore linux-docs --ignore linux-headers")
|
79
83
|
@pacman_needs_update = false
|
@@ -10,20 +10,6 @@ module Beaker
|
|
10
10
|
NTPSERVER = 'pool.ntp.org'
|
11
11
|
SLEEPWAIT = 5
|
12
12
|
TRIES = 5
|
13
|
-
AMAZON2023_PACKAGES = %w[chrony]
|
14
|
-
RHEL8_PACKAGES = %w[chrony iputils] # iputils provides ping. beaker assumes that's present
|
15
|
-
FEDORA_PACKAGES = %w[chrony iputils]
|
16
|
-
UNIX_PACKAGES = %w[curl ntpdate]
|
17
|
-
FREEBSD_PACKAGES = ['curl', 'perl5|perl']
|
18
|
-
OPENBSD_PACKAGES = ['curl']
|
19
|
-
ARCHLINUX_PACKAGES = %w[curl ntp net-tools openssh]
|
20
|
-
WINDOWS_PACKAGES = ['curl']
|
21
|
-
PSWINDOWS_PACKAGES = []
|
22
|
-
SLES10_PACKAGES = ['curl']
|
23
|
-
SLES_PACKAGES = %w[curl ntp]
|
24
|
-
DEBIAN_PACKAGES = %w[curl ntpdate lsb-release apt-transport-https]
|
25
|
-
SOLARIS10_PACKAGES = %w[CSWcurl CSWntp wget]
|
26
|
-
SOLARIS11_PACKAGES = %w[curl ntp]
|
27
13
|
ETC_HOSTS_PATH = "/etc/hosts"
|
28
14
|
ETC_HOSTS_PATH_SOLARIS = "/etc/inet/hosts"
|
29
15
|
ROOT_KEYS_SCRIPT = "https://raw.githubusercontent.com/puppetlabs/puppetlabs-sshkeys/master/templates/scripts/manage_root_authorized_keys"
|
@@ -48,7 +34,7 @@ module Beaker
|
|
48
34
|
host.exec(Command.new("w32tm /resync"))
|
49
35
|
logger.notify "NTP date succeeded on #{host}"
|
50
36
|
else
|
51
|
-
if
|
37
|
+
if host['platform'].uses_chrony?
|
52
38
|
ntp_command = "chronyc add server #{ntp_server} prefer trust;chronyc makestep;chronyc burst 1/2"
|
53
39
|
elsif /opensuse-|sles-/.match?(host['platform'])
|
54
40
|
ntp_command = "sntp #{ntp_server}"
|
@@ -79,12 +65,6 @@ module Beaker
|
|
79
65
|
# Validate that hosts are prepared to be used as SUTs, if packages are missing attempt to
|
80
66
|
# install them.
|
81
67
|
#
|
82
|
-
# Verifies the presence of #{HostPrebuiltSteps::UNIX_PACKAGES} on unix platform hosts,
|
83
|
-
# {HostPrebuiltSteps::SLES_PACKAGES} on SUSE platform hosts,
|
84
|
-
# {HostPrebuiltSteps::DEBIAN_PACKAGES} on debian platform hosts,
|
85
|
-
# {HostPrebuiltSteps::WINDOWS_PACKAGES} on cygwin-installed windows platform hosts,
|
86
|
-
# and {HostPrebuiltSteps::PSWINDOWS_PACKAGES} on non-cygwin windows platform hosts.
|
87
|
-
#
|
88
68
|
# @param [Host, Array<Host>, String, Symbol] host One or more hosts to act upon
|
89
69
|
# @param [Hash{Symbol=>String}] opts Options to alter execution.
|
90
70
|
# @option opts [Beaker::Logger] :logger A {Beaker::Logger} object
|
@@ -102,44 +82,14 @@ module Beaker
|
|
102
82
|
# @param [Host] host A host return the packages for
|
103
83
|
# @return [Array<String>] A list of packages to install
|
104
84
|
def host_packages(host)
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
when /sles-10/
|
111
|
-
SLES10_PACKAGES
|
112
|
-
when /opensuse|sles-/
|
113
|
-
SLES_PACKAGES
|
114
|
-
when /debian/
|
115
|
-
DEBIAN_PACKAGES
|
116
|
-
when /windows/
|
117
|
-
if host.is_cygwin?
|
118
|
-
raise RuntimeError, "cygwin is not installed on #{host}" if !host.cygwin_installed?
|
119
|
-
|
120
|
-
WINDOWS_PACKAGES
|
121
|
-
else
|
122
|
-
PSWINDOWS_PACKAGES
|
123
|
-
end
|
124
|
-
when /freebsd/
|
125
|
-
FREEBSD_PACKAGES
|
126
|
-
when /openbsd/
|
127
|
-
OPENBSD_PACKAGES
|
128
|
-
when /solaris-10/
|
129
|
-
SOLARIS10_PACKAGES
|
130
|
-
when /solaris-1[1-9]/
|
131
|
-
SOLARIS11_PACKAGES
|
132
|
-
when /archlinux/
|
133
|
-
ARCHLINUX_PACKAGES
|
134
|
-
when /fedora/
|
135
|
-
FEDORA_PACKAGES
|
136
|
-
else
|
137
|
-
if !/aix|solaris|osx-/.match?(host['platform'])
|
138
|
-
UNIX_PACKAGES
|
139
|
-
else
|
140
|
-
[]
|
141
|
-
end
|
85
|
+
packages = host['platform'].base_packages
|
86
|
+
if host.is_cygwin?
|
87
|
+
raise RuntimeError, "cygwin is not installed on #{host}" if !host.cygwin_installed?
|
88
|
+
|
89
|
+
packages << 'curl'
|
142
90
|
end
|
91
|
+
packages += host['platform'].timesync_packages if host[:timesync]
|
92
|
+
packages
|
143
93
|
end
|
144
94
|
|
145
95
|
# Installs the given packages if they aren't already on a host
|
data/lib/beaker/platform.rb
CHANGED
@@ -100,5 +100,60 @@ module Beaker
|
|
100
100
|
def with_version_number
|
101
101
|
[@variant, @version, @arch].join('-')
|
102
102
|
end
|
103
|
+
|
104
|
+
def uses_chrony?
|
105
|
+
case @variant
|
106
|
+
when 'amazon', 'fedora'
|
107
|
+
true
|
108
|
+
when 'el'
|
109
|
+
@version.to_i >= 8
|
110
|
+
else
|
111
|
+
false
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
# Return a list of packages that should always be present.
|
116
|
+
#
|
117
|
+
# @return [Array<String>] A list of packages to install
|
118
|
+
def base_packages
|
119
|
+
case @variant
|
120
|
+
when 'el'
|
121
|
+
@version.to_i >= 8 ? ['curl-minimal', 'iputils'] : %w[curl]
|
122
|
+
when 'debian'
|
123
|
+
%w[curl lsb-release apt-transport-https]
|
124
|
+
when 'freebsd'
|
125
|
+
%w[curl perl5|perl]
|
126
|
+
when 'solaris'
|
127
|
+
@version.to_i >= 11 ? %w[curl] : %w[CSWcurl wget]
|
128
|
+
when 'archlinux'
|
129
|
+
%w[curl net-tools openssh]
|
130
|
+
when 'amazon', 'fedora'
|
131
|
+
['curl-minimal', 'iputils']
|
132
|
+
when 'aix', 'osx', 'windows'
|
133
|
+
[]
|
134
|
+
else
|
135
|
+
%w[curl]
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
# Return a list of packages that are needed for timesync
|
140
|
+
#
|
141
|
+
# @return [Array<String>] A list of packages to install for timesync
|
142
|
+
def timesync_packages
|
143
|
+
return ['chrony'] if uses_chrony?
|
144
|
+
|
145
|
+
case @variant
|
146
|
+
when 'freebsd', 'openbsd', 'windows', 'aix', 'osx'
|
147
|
+
[]
|
148
|
+
when 'archlinux', 'opensuse'
|
149
|
+
['ntp']
|
150
|
+
when 'sles'
|
151
|
+
@version.to_i >= 11 ? %w[ntp] : []
|
152
|
+
when 'solaris'
|
153
|
+
@version.to_i >= 11 ? %w[ntp] : %w[CSWntp]
|
154
|
+
else
|
155
|
+
%w[ntpdate]
|
156
|
+
end
|
157
|
+
end
|
103
158
|
end
|
104
159
|
end
|
data/lib/beaker/version.rb
CHANGED
data/spec/beaker/command_spec.rb
CHANGED
@@ -125,7 +125,7 @@ module Beaker
|
|
125
125
|
allow(h).to receive(:append_commands).and_return('')
|
126
126
|
h
|
127
127
|
end
|
128
|
-
let(:platform) { @platform || '
|
128
|
+
let(:platform) { @platform || 'el-9-64' }
|
129
129
|
let(:expression) { @expression || 's/b/s/' }
|
130
130
|
let(:filename) { @filename || '/fakefile' }
|
131
131
|
let(:options) { @options || {} }
|
@@ -6,7 +6,7 @@ module Beaker
|
|
6
6
|
let(:group) { 'somegroup' }
|
7
7
|
let(:path) { 'C:\Foo\Bar' }
|
8
8
|
let(:newpath) { '/Foo/Bar' }
|
9
|
-
let(:host) { make_host('name', { :platform => 'windows' }) }
|
9
|
+
let(:host) { make_host('name', { :platform => 'windows-11-64' }) }
|
10
10
|
|
11
11
|
describe '#chown' do
|
12
12
|
it 'calls cygpath first' do
|
@@ -60,7 +60,7 @@ module Beaker
|
|
60
60
|
end
|
61
61
|
|
62
62
|
it 'replaces backslashes with forward slashes when using BitVise and powershell' do
|
63
|
-
host = make_host('name', platform: 'windows', is_cygwin: false)
|
63
|
+
host = make_host('name', platform: 'windows-11-64', is_cygwin: false)
|
64
64
|
allow(host).to receive(:determine_ssh_server).and_return(:bitvise)
|
65
65
|
expect(host.scp_path(path)).to eq('C:/Windows')
|
66
66
|
end
|
@@ -6,22 +6,6 @@ describe Beaker do
|
|
6
6
|
let(:options_ntp) { make_opts.merge({ 'ntp_server' => ntpserver_set }) }
|
7
7
|
let(:ntpserver) { Beaker::HostPrebuiltSteps::NTPSERVER }
|
8
8
|
let(:sync_cmd) { Beaker::HostPrebuiltSteps::ROOT_KEYS_SYNC_CMD }
|
9
|
-
let(:windows_pkgs) { Beaker::HostPrebuiltSteps::WINDOWS_PACKAGES }
|
10
|
-
let(:unix_only_pkgs) { Beaker::HostPrebuiltSteps::UNIX_PACKAGES }
|
11
|
-
let(:sles_only_pkgs) { Beaker::HostPrebuiltSteps::SLES_PACKAGES }
|
12
|
-
let(:rhel8_packages) { Beaker::HostPrebuiltSteps::RHEL8_PACKAGES }
|
13
|
-
let(:fedora_packages) { Beaker::HostPrebuiltSteps::FEDORA_PACKAGES }
|
14
|
-
let(:amazon2023_packages) { Beaker::HostPrebuiltSteps::AMAZON2023_PACKAGES }
|
15
|
-
let(:platform) { @platform || 'unix' }
|
16
|
-
let(:ip) { "ip.address.0.0" }
|
17
|
-
let(:stdout) { @stdout || ip }
|
18
|
-
let(:hosts) do
|
19
|
-
hosts = make_hosts({ :stdout => stdout, :platform => platform })
|
20
|
-
hosts[0][:roles] = ['agent']
|
21
|
-
hosts[1][:roles] = %w[master dashboard agent database]
|
22
|
-
hosts[2][:roles] = ['agent']
|
23
|
-
hosts
|
24
|
-
end
|
25
9
|
let(:dummy_class) { Class.new { include Beaker::HostPrebuiltSteps } }
|
26
10
|
|
27
11
|
shared_examples 'enables_root_login' do |platform, commands, non_cygwin|
|
@@ -41,79 +25,75 @@ describe Beaker do
|
|
41
25
|
end
|
42
26
|
|
43
27
|
# Non-cygwin Windows
|
44
|
-
it_behaves_like 'enables_root_login', '
|
28
|
+
it_behaves_like 'enables_root_login', 'windows-11-64', [], false
|
45
29
|
|
46
|
-
#
|
47
|
-
it_behaves_like 'enables_root_login', 'windows', [
|
30
|
+
# cygwin Windows
|
31
|
+
it_behaves_like 'enables_root_login', 'windows-11-64', [
|
48
32
|
"sed -ri 's/^#?PermitRootLogin /PermitRootLogin yes/' /etc/sshd_config",
|
49
33
|
], true
|
50
34
|
|
51
35
|
# FreeBSD
|
52
|
-
it_behaves_like 'enables_root_login', '
|
53
|
-
"sudo
|
36
|
+
it_behaves_like 'enables_root_login', 'freebsd-14-64', [
|
37
|
+
"sudo sed -i -e 's/#PermitRootLogin no/PermitRootLogin yes/g' /etc/ssh/sshd_config",
|
38
|
+
"sudo /etc/rc.d/sshd restart",
|
54
39
|
], true
|
55
40
|
|
56
|
-
it_behaves_like 'enables_root_login', 'osx-10.10', [
|
41
|
+
it_behaves_like 'enables_root_login', 'osx-10.10-64', [
|
57
42
|
"sudo sed -i '' 's/#PermitRootLogin yes/PermitRootLogin Yes/g' /etc/sshd_config",
|
58
43
|
"sudo sed -i '' 's/#PermitRootLogin no/PermitRootLogin Yes/g' /etc/sshd_config",
|
59
44
|
]
|
60
45
|
|
61
|
-
it_behaves_like 'enables_root_login', 'osx-10.11', [
|
46
|
+
it_behaves_like 'enables_root_login', 'osx-10.11-64', [
|
62
47
|
"sudo sed -i '' 's/#PermitRootLogin yes/PermitRootLogin Yes/g' /private/etc/ssh/sshd_config",
|
63
48
|
"sudo sed -i '' 's/#PermitRootLogin no/PermitRootLogin Yes/g' /private/etc/ssh/sshd_config",
|
64
49
|
]
|
65
50
|
|
66
|
-
it_behaves_like 'enables_root_login', 'osx-10.12', [
|
51
|
+
it_behaves_like 'enables_root_login', 'osx-10.12-64', [
|
67
52
|
"sudo sed -i '' 's/#PermitRootLogin yes/PermitRootLogin Yes/g' /private/etc/ssh/sshd_config",
|
68
53
|
"sudo sed -i '' 's/#PermitRootLogin no/PermitRootLogin Yes/g' /private/etc/ssh/sshd_config",
|
69
54
|
]
|
70
55
|
|
71
|
-
it_behaves_like 'enables_root_login', 'osx-10.13', [
|
56
|
+
it_behaves_like 'enables_root_login', 'osx-10.13-64', [
|
72
57
|
"sudo sed -i '' 's/#PermitRootLogin yes/PermitRootLogin Yes/g' /private/etc/ssh/sshd_config",
|
73
58
|
"sudo sed -i '' 's/#PermitRootLogin no/PermitRootLogin Yes/g' /private/etc/ssh/sshd_config",
|
74
59
|
]
|
75
60
|
|
76
61
|
# Solaris
|
77
|
-
it_behaves_like 'enables_root_login', 'solaris-10', [
|
62
|
+
it_behaves_like 'enables_root_login', 'solaris-10-64', [
|
78
63
|
"sudo -E svcadm restart network/ssh",
|
79
64
|
"sudo gsed -i -e 's/#PermitRootLogin no/PermitRootLogin yes/g' /etc/ssh/sshd_config",
|
80
65
|
], true
|
81
66
|
|
82
|
-
it_behaves_like 'enables_root_login', 'solaris-11', [
|
67
|
+
it_behaves_like 'enables_root_login', 'solaris-11-64', [
|
83
68
|
"sudo -E svcadm restart network/ssh",
|
84
69
|
"sudo gsed -i -e 's/PermitRootLogin no/PermitRootLogin yes/g' /etc/ssh/sshd_config",
|
85
70
|
"if grep \"root::::type=role\" /etc/user_attr; then sudo rolemod -K type=normal root; else echo \"root user already type=normal\"; fi",
|
86
71
|
], true
|
87
72
|
|
88
|
-
it_behaves_like 'enables_root_login', 'amazon-2023', [
|
89
|
-
"sudo -E systemctl restart sshd.service",
|
73
|
+
it_behaves_like 'enables_root_login', 'amazon-2023-64', [
|
90
74
|
"sudo su -c \"sed -ri 's/^#?PermitRootLogin no|^#?PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config\"",
|
75
|
+
"sudo -E systemctl restart sshd.service",
|
91
76
|
]
|
92
77
|
|
93
|
-
%w[debian ubuntu].each do |deb_like|
|
78
|
+
%w[debian-12-64 ubuntu-2204-64].each do |deb_like|
|
94
79
|
it_behaves_like 'enables_root_login', deb_like, [
|
95
80
|
"sudo su -c \"sed -ri 's/^#?PermitRootLogin no|^#?PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config\"",
|
96
81
|
"sudo su -c \"service ssh restart\"",
|
97
82
|
]
|
98
83
|
end
|
99
84
|
|
100
|
-
['centos', 'el-', 'redhat'].each do |redhat_like|
|
85
|
+
['centos-9-64', 'el-9-64', 'redhat-9-64', 'fedora-39-64'].each do |redhat_like|
|
101
86
|
it_behaves_like 'enables_root_login', redhat_like, [
|
102
87
|
"sudo su -c \"sed -ri 's/^#?PermitRootLogin no|^#?PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config\"",
|
103
|
-
"sudo -E
|
88
|
+
"sudo -E systemctl restart sshd.service",
|
104
89
|
]
|
105
90
|
end
|
106
91
|
|
107
|
-
it_behaves_like 'enables_root_login', 'fedora', [
|
108
|
-
"sudo su -c \"sed -ri 's/^#?PermitRootLogin no|^#?PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config\"",
|
109
|
-
"sudo -E systemctl restart sshd.service",
|
110
|
-
]
|
111
|
-
|
112
92
|
context 'timesync' do
|
113
93
|
subject { dummy_class.new }
|
114
94
|
|
115
|
-
it "can sync time on
|
116
|
-
hosts = make_hosts({ :platform => '
|
95
|
+
it "can sync time on el-7 hosts" do
|
96
|
+
hosts = make_hosts({ :platform => 'el-7-64' })
|
117
97
|
|
118
98
|
expect(Beaker::Command).to receive(:new).with("ntpdate -u -t 20 #{ntpserver}").exactly(3).times
|
119
99
|
|
@@ -121,7 +101,7 @@ describe Beaker do
|
|
121
101
|
end
|
122
102
|
|
123
103
|
it "can retry on failure on unix hosts" do
|
124
|
-
hosts = make_hosts({ :platform => '
|
104
|
+
hosts = make_hosts({ :platform => 'el-7-64', :exit_code => [1, 0] })
|
125
105
|
allow(subject).to receive(:sleep).and_return(true)
|
126
106
|
|
127
107
|
expect(Beaker::Command).to receive(:new).with("ntpdate -u -t 20 #{ntpserver}").exactly(6).times
|
@@ -130,7 +110,7 @@ describe Beaker do
|
|
130
110
|
end
|
131
111
|
|
132
112
|
it "eventually gives up and raises an error when unix hosts can't be synched" do
|
133
|
-
hosts = make_hosts({ :platform => '
|
113
|
+
hosts = make_hosts({ :platform => 'el-7-64', :exit_code => 1 })
|
134
114
|
allow(subject).to receive(:sleep).and_return(true)
|
135
115
|
|
136
116
|
expect(Beaker::Command).to receive(:new).with("ntpdate -u -t 20 #{ntpserver}").exactly(5).times
|
@@ -139,7 +119,7 @@ describe Beaker do
|
|
139
119
|
end
|
140
120
|
|
141
121
|
it "can sync time on windows hosts" do
|
142
|
-
hosts = make_hosts({ :platform => 'windows' })
|
122
|
+
hosts = make_hosts({ :platform => 'windows-11-64' })
|
143
123
|
|
144
124
|
expect(Beaker::Command).to receive(:new).with("w32tm /register").exactly(3).times
|
145
125
|
expect(Beaker::Command).to receive(:new).with("net start w32time").exactly(3).times
|
@@ -184,8 +164,8 @@ describe Beaker do
|
|
184
164
|
subject.timesync(hosts, options)
|
185
165
|
end
|
186
166
|
|
187
|
-
it "can set time server on
|
188
|
-
hosts = make_hosts({ :platform => '
|
167
|
+
it "can set time server on el-7 hosts" do
|
168
|
+
hosts = make_hosts({ :platform => 'el-7-64' })
|
189
169
|
|
190
170
|
expect(Beaker::Command).to receive(:new).with("ntpdate -u -t 20 #{ntpserver_set}").exactly(3).times
|
191
171
|
|
@@ -193,7 +173,7 @@ describe Beaker do
|
|
193
173
|
end
|
194
174
|
|
195
175
|
it "can set time server on windows hosts" do
|
196
|
-
hosts = make_hosts({ :platform => 'windows' })
|
176
|
+
hosts = make_hosts({ :platform => 'windows-11-64' })
|
197
177
|
|
198
178
|
expect(Beaker::Command).to receive(:new).with("w32tm /register").exactly(3).times
|
199
179
|
expect(Beaker::Command).to receive(:new).with("net start w32time").exactly(3).times
|
@@ -225,7 +205,7 @@ describe Beaker do
|
|
225
205
|
subject { dummy_class.new }
|
226
206
|
|
227
207
|
it "can perform apt-get on ubuntu hosts" do
|
228
|
-
host = make_host('testhost', { :platform => 'ubuntu' })
|
208
|
+
host = make_host('testhost', { :platform => 'ubuntu-2204-64' })
|
229
209
|
|
230
210
|
expect(Beaker::Command).to receive(:new).with("apt-get update -qq").once
|
231
211
|
|
@@ -233,7 +213,7 @@ describe Beaker do
|
|
233
213
|
end
|
234
214
|
|
235
215
|
it "can perform apt-get on debian hosts" do
|
236
|
-
host = make_host('testhost', { :platform => 'debian' })
|
216
|
+
host = make_host('testhost', { :platform => 'debian-12-64' })
|
237
217
|
|
238
218
|
expect(Beaker::Command).to receive(:new).with("apt-get update -qq").once
|
239
219
|
|
@@ -241,7 +221,7 @@ describe Beaker do
|
|
241
221
|
end
|
242
222
|
|
243
223
|
it "does nothing on non debian/ubuntu hosts" do
|
244
|
-
host = make_host('testhost', { :platform => 'windows' })
|
224
|
+
host = make_host('testhost', { :platform => 'windows-11-64' })
|
245
225
|
|
246
226
|
expect(Beaker::Command).not_to receive(:new)
|
247
227
|
|
@@ -256,7 +236,7 @@ describe Beaker do
|
|
256
236
|
content = "this is the content"
|
257
237
|
tempfilepath = "/path/to/tempfile"
|
258
238
|
filepath = "/path/to/file"
|
259
|
-
host = make_host('testhost', { :platform => 'windows' })
|
239
|
+
host = make_host('testhost', { :platform => 'windows-11-64' })
|
260
240
|
tempfile = double('tempfile')
|
261
241
|
allow(tempfile).to receive(:path).and_return(tempfilepath)
|
262
242
|
allow(Tempfile).to receive(:open).and_yield(tempfile)
|
@@ -274,112 +254,101 @@ describe Beaker do
|
|
274
254
|
subject { dummy_class.new }
|
275
255
|
|
276
256
|
it "can sync keys on a solaris host" do
|
277
|
-
|
257
|
+
host = make_host('host', { 'platform' => 'solaris-11-64' })
|
278
258
|
|
279
|
-
expect(Beaker::Command).to receive(:new).with(sync_cmd % "bash").
|
259
|
+
expect(Beaker::Command).to receive(:new).with(sync_cmd % "bash").once
|
280
260
|
|
281
|
-
subject.sync_root_keys(
|
261
|
+
subject.sync_root_keys(host, options)
|
282
262
|
end
|
283
263
|
|
284
264
|
it "can sync keys on a non-solaris host" do
|
285
|
-
|
265
|
+
host = make_host('host', { 'platform' => 'el-9-64' })
|
286
266
|
|
287
|
-
|
267
|
+
expect(Beaker::Command).to receive(:new).with(sync_cmd % "env PATH=\"/usr/gnu/bin:$PATH\" bash").once
|
268
|
+
|
269
|
+
subject.sync_root_keys(host, options)
|
288
270
|
end
|
289
271
|
end
|
290
272
|
|
291
273
|
context "validate_host" do
|
292
274
|
subject { dummy_class.new }
|
293
275
|
|
294
|
-
it "can validate
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
276
|
+
it "can validate el-9 hosts" do
|
277
|
+
host = make_host('host', { :platform => 'el-9-64' })
|
278
|
+
|
279
|
+
['curl-minimal', 'iputils'].each do |pkg|
|
280
|
+
expect(host).to receive(:check_for_package).with(pkg).once.and_return(false)
|
281
|
+
expect(host).to receive(:install_package).with(pkg).once
|
300
282
|
end
|
301
283
|
|
302
|
-
subject.validate_host(
|
284
|
+
subject.validate_host(host, options)
|
303
285
|
end
|
304
286
|
|
305
287
|
it "can validate windows hosts" do
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
expect(host).to receive(:check_for_package).with(pkg).once.and_return(false)
|
313
|
-
expect(host).to receive(:install_package).with(pkg).once
|
314
|
-
end
|
288
|
+
host = make_host('host', { :platform => 'windows-11-64', :is_cygwin => true })
|
289
|
+
allow(host).to receive(:cygwin_installed?).and_return(true)
|
290
|
+
|
291
|
+
['curl'].each do |pkg|
|
292
|
+
expect(host).to receive(:check_for_package).with(pkg).once.and_return(false)
|
293
|
+
expect(host).to receive(:install_package).with(pkg).once
|
315
294
|
end
|
316
295
|
|
317
|
-
subject.validate_host(
|
296
|
+
subject.validate_host(host, options)
|
318
297
|
end
|
319
298
|
|
320
299
|
it "can validate SLES hosts" do
|
321
|
-
|
300
|
+
host = make_host('host', { :platform => 'sles-13.1-x86_64' })
|
322
301
|
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
expect(host).to receive(:install_package).with(pkg).once
|
327
|
-
end
|
302
|
+
['curl'].each do |pkg|
|
303
|
+
expect(host).to receive(:check_for_package).with(pkg).once.and_return(false)
|
304
|
+
expect(host).to receive(:install_package).with(pkg).once
|
328
305
|
end
|
329
306
|
|
330
|
-
subject.validate_host(
|
307
|
+
subject.validate_host(host, options)
|
331
308
|
end
|
332
309
|
|
333
310
|
it "can validate opensuse hosts" do
|
334
|
-
|
311
|
+
host = make_host('host', { :platform => 'opensuse-15-x86_x64' })
|
335
312
|
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
expect(host).to receive(:install_package).with(pkg).once
|
340
|
-
end
|
313
|
+
['curl'].each do |pkg|
|
314
|
+
expect(host).to receive(:check_for_package).with(pkg).once.and_return(false)
|
315
|
+
expect(host).to receive(:install_package).with(pkg).once
|
341
316
|
end
|
342
317
|
|
343
|
-
subject.validate_host(
|
318
|
+
subject.validate_host(host, options)
|
344
319
|
end
|
345
320
|
|
346
321
|
it "can validate RHEL8 hosts" do
|
347
|
-
|
322
|
+
host = make_host('host', { :platform => 'el-8-64' })
|
348
323
|
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
expect(host).to receive(:install_package).with(pkg).once
|
353
|
-
end
|
324
|
+
['curl-minimal', 'iputils'].each do |pkg|
|
325
|
+
expect(host).to receive(:check_for_package).with(pkg).once.and_return(false)
|
326
|
+
expect(host).to receive(:install_package).with(pkg).once
|
354
327
|
end
|
355
328
|
|
356
|
-
subject.validate_host(
|
329
|
+
subject.validate_host(host, options)
|
357
330
|
end
|
358
331
|
|
359
332
|
it "can validate Fedora hosts" do
|
360
|
-
|
333
|
+
host = make_host('host', { :platform => 'fedora-32-x86_64' })
|
361
334
|
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
expect(host).to receive(:install_package).with(pkg).once
|
366
|
-
end
|
335
|
+
['curl-minimal', 'iputils'].each do |pkg|
|
336
|
+
expect(host).to receive(:check_for_package).with(pkg).once.and_return(false)
|
337
|
+
expect(host).to receive(:install_package).with(pkg).once
|
367
338
|
end
|
368
339
|
|
369
|
-
subject.validate_host(
|
340
|
+
subject.validate_host(host, options)
|
370
341
|
end
|
371
342
|
|
372
343
|
it "can validate Amazon hosts" do
|
373
|
-
|
344
|
+
host = make_host('host', { :platform => 'amazon-2023-x86_64' })
|
374
345
|
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
expect(host).to receive(:install_package).with(pkg).once
|
379
|
-
end
|
346
|
+
['curl-minimal', 'iputils'].each do |pkg|
|
347
|
+
expect(host).to receive(:check_for_package).with(pkg).once.and_return(false)
|
348
|
+
expect(host).to receive(:install_package).with(pkg).once
|
380
349
|
end
|
381
350
|
|
382
|
-
subject.validate_host(
|
351
|
+
subject.validate_host(host, options)
|
383
352
|
end
|
384
353
|
end
|
385
354
|
|
@@ -388,6 +357,11 @@ describe Beaker do
|
|
388
357
|
|
389
358
|
shared_examples 'find domain name' do
|
390
359
|
it "finds the domain name" do
|
360
|
+
cmd = instance_double(Beaker::Command)
|
361
|
+
expect(Beaker::Command).to receive(:new).with(cat).once.and_return(cmd)
|
362
|
+
result = instance_double(Beaker::Result)
|
363
|
+
expect(host).to receive(:exec).with(cmd).and_return(result)
|
364
|
+
expect(result).to receive(:stdout).and_return(stdout)
|
391
365
|
expect(subject.get_domain_name(host)).to be === "labs.lan"
|
392
366
|
end
|
393
367
|
end
|
@@ -395,45 +369,32 @@ describe Beaker do
|
|
395
369
|
context "on windows" do
|
396
370
|
let(:host) do
|
397
371
|
make_host('name', {
|
398
|
-
:platform => 'windows',
|
372
|
+
:platform => 'windows-11-64',
|
399
373
|
:is_cygwin => cygwin,
|
400
|
-
:stdout => "domain labs.lan d.labs.net dc1.labs.net labs.com\nnameserver 10.16.22.10\nnameserver 10.16.22.11",
|
401
374
|
})
|
402
375
|
end
|
403
376
|
|
377
|
+
let(:stdout) { "domain labs.lan d.labs.net dc1.labs.net labs.com\nnameserver 10.16.22.10\nnameserver 10.16.22.11" }
|
378
|
+
|
404
379
|
context "with cygwin" do
|
405
380
|
let(:cygwin) { true }
|
406
|
-
|
407
|
-
before do
|
408
|
-
expect(Beaker::Command).to receive(:new).with("cat /cygdrive/c/Windows/System32/drivers/etc/hosts").once
|
409
|
-
end
|
381
|
+
let(:cat) { "cat /cygdrive/c/Windows/System32/drivers/etc/hosts" }
|
410
382
|
|
411
383
|
include_examples 'find domain name'
|
412
384
|
end
|
413
385
|
|
414
386
|
context "without cygwin" do
|
415
387
|
let(:cygwin) { false }
|
416
|
-
|
417
|
-
before do
|
418
|
-
expect(Beaker::Command).to receive(:new).with('type C:\Windows\System32\drivers\etc\hosts').once
|
419
|
-
end
|
388
|
+
let(:cat) { 'type C:\Windows\System32\drivers\etc\hosts' }
|
420
389
|
|
421
390
|
include_examples 'find domain name'
|
422
391
|
end
|
423
392
|
end
|
424
393
|
|
425
|
-
%w[amazon centos redhat].each do |platform|
|
394
|
+
%w[amazon-2023-64 centos-9-64 redhat-9-64].each do |platform|
|
426
395
|
context "on platform '#{platform}'" do
|
427
|
-
let(:host)
|
428
|
-
|
429
|
-
:platform => platform,
|
430
|
-
:stdout => stdout,
|
431
|
-
})
|
432
|
-
end
|
433
|
-
|
434
|
-
before do
|
435
|
-
expect(Beaker::Command).to receive(:new).with("cat /etc/resolv.conf").once
|
436
|
-
end
|
396
|
+
let(:host) { make_host('name', { :platform => platform }) }
|
397
|
+
let(:cat) { "cat /etc/resolv.conf" }
|
437
398
|
|
438
399
|
context "with a domain entry" do
|
439
400
|
let(:stdout) { "domain labs.lan d.labs.net dc1.labs.net labs.com\nnameserver 10.16.22.10\nnameserver 10.16.22.11" }
|
@@ -480,7 +441,7 @@ describe Beaker do
|
|
480
441
|
subject { dummy_class.new }
|
481
442
|
|
482
443
|
it "can copy ssh to root in windows hosts with no cygwin" do
|
483
|
-
host = make_host('testhost', { :platform => 'windows', :is_cygwin => false })
|
444
|
+
host = make_host('testhost', { :platform => 'windows-11-64', :is_cygwin => false })
|
484
445
|
expect(Beaker::Command).to receive(:new).with("if exist .ssh (xcopy .ssh C:\\Users\\Administrator\\.ssh /s /e /y /i)").once
|
485
446
|
|
486
447
|
subject.copy_ssh_to_root(host, options)
|
@@ -493,7 +454,7 @@ describe Beaker do
|
|
493
454
|
proxyurl = "http://192.168.2.100:3128"
|
494
455
|
|
495
456
|
it "can set proxy config on a debian/ubuntu host" do
|
496
|
-
host = make_host('name', { :platform => 'debian' })
|
457
|
+
host = make_host('name', { :platform => 'debian-12-64' })
|
497
458
|
|
498
459
|
expect(Beaker::Command).to receive(:new).with("echo 'Acquire::http::Proxy \"#{proxyurl}/\";' >> /etc/apt/apt.conf.d/10proxy").once
|
499
460
|
expect(host).to receive(:exec).once
|
@@ -501,7 +462,7 @@ describe Beaker do
|
|
501
462
|
subject.package_proxy(host, options.merge({ 'package_proxy' => proxyurl }))
|
502
463
|
end
|
503
464
|
|
504
|
-
%w[amazon
|
465
|
+
%w[amazon-2023-64 el-9-64].each do |platform|
|
505
466
|
it "can set proxy config on a '#{platform}' host" do
|
506
467
|
host = make_host('name', { :platform => platform })
|
507
468
|
|
@@ -517,43 +478,43 @@ describe Beaker do
|
|
517
478
|
subject { dummy_class.new }
|
518
479
|
|
519
480
|
it "sets user ssh environment on an OS X 10.10 host" do
|
520
|
-
test_host_ssh_calls('osx-10.10')
|
481
|
+
test_host_ssh_calls('osx-10.10-64')
|
521
482
|
end
|
522
483
|
|
523
484
|
it "sets user ssh environment on an OS X 10.11 host" do
|
524
|
-
test_host_ssh_calls('osx-10.11')
|
485
|
+
test_host_ssh_calls('osx-10.11-64')
|
525
486
|
end
|
526
487
|
|
527
488
|
it "sets user ssh environment on an OS X 10.12 host" do
|
528
|
-
test_host_ssh_calls('osx-10.12')
|
489
|
+
test_host_ssh_calls('osx-10.12-64')
|
529
490
|
end
|
530
491
|
|
531
492
|
it "sets user ssh environment on an OS X 10.13 host" do
|
532
|
-
test_host_ssh_calls('osx-10.13')
|
493
|
+
test_host_ssh_calls('osx-10.13-64')
|
533
494
|
end
|
534
495
|
|
535
496
|
it "sets user ssh environment on an ssh-based linux host" do
|
536
|
-
test_host_ssh_calls('ubuntu')
|
497
|
+
test_host_ssh_calls('ubuntu-2204-64')
|
537
498
|
end
|
538
499
|
|
539
500
|
it "sets user ssh environment on an sles host" do
|
540
|
-
test_host_ssh_calls('sles')
|
501
|
+
test_host_ssh_calls('sles-15-64')
|
541
502
|
end
|
542
503
|
|
543
504
|
it "sets user ssh environment on a solaris host" do
|
544
|
-
test_host_ssh_calls('solaris')
|
505
|
+
test_host_ssh_calls('solaris-11-64')
|
545
506
|
end
|
546
507
|
|
547
508
|
it "sets user ssh environment on an aix host" do
|
548
|
-
test_host_ssh_calls('aix')
|
509
|
+
test_host_ssh_calls('aix-7.2-power')
|
549
510
|
end
|
550
511
|
|
551
512
|
it "sets user ssh environment on a FreeBSD host" do
|
552
|
-
test_host_ssh_calls('freebsd')
|
513
|
+
test_host_ssh_calls('freebsd-14-64')
|
553
514
|
end
|
554
515
|
|
555
516
|
it "sets user ssh environment on a windows host" do
|
556
|
-
test_host_ssh_calls('windows')
|
517
|
+
test_host_ssh_calls('windows-11-64')
|
557
518
|
end
|
558
519
|
|
559
520
|
def test_host_ssh_calls(platform_name)
|
data/spec/beaker/host_spec.rb
CHANGED
@@ -7,7 +7,7 @@ module Beaker
|
|
7
7
|
let(:host) { make_host('name', options.merge(platform)) }
|
8
8
|
|
9
9
|
it 'creates a windows host given a windows config' do
|
10
|
-
@platform = 'windows'
|
10
|
+
@platform = 'windows-11-64'
|
11
11
|
expect(host).to be_a Windows::Host
|
12
12
|
end
|
13
13
|
|
@@ -109,16 +109,16 @@ module Beaker
|
|
109
109
|
result.exit_code = 0
|
110
110
|
expect(Beaker::Command).to receive(:new).with(/grep \^key= ~\/\.ssh\/environment/)
|
111
111
|
expect(host).to receive(:exec).and_return(result)
|
112
|
-
expect(Beaker::SedCommand).to receive(:new).with('
|
112
|
+
expect(Beaker::SedCommand).to receive(:new).with('el-9-64', 's/^key=/key=\\/my\\/first\\/value:/', '~/.ssh/environment')
|
113
113
|
host.add_env_var('key', '/my/first/value')
|
114
114
|
end
|
115
115
|
end
|
116
116
|
|
117
117
|
describe "#delete_env_var" do
|
118
118
|
it "deletes env var" do
|
119
|
-
expect(Beaker::SedCommand).to receive(:new).with('
|
120
|
-
expect(Beaker::SedCommand).to receive(:new).with("
|
121
|
-
expect(Beaker::SedCommand).to receive(:new).with("
|
119
|
+
expect(Beaker::SedCommand).to receive(:new).with('el-9-64', '/key=\\/my\\/first\\/value$/d', '~/.ssh/environment')
|
120
|
+
expect(Beaker::SedCommand).to receive(:new).with("el-9-64", "s/key=\\(.*\\)[;:]\\/my\\/first\\/value/key=\\1/", "~/.ssh/environment")
|
121
|
+
expect(Beaker::SedCommand).to receive(:new).with("el-9-64", "s/key=\\/my\\/first\\/value[;:]/key=/", "~/.ssh/environment")
|
122
122
|
host.delete_env_var('key', '/my/first/value')
|
123
123
|
end
|
124
124
|
end
|
@@ -250,7 +250,7 @@ module Beaker
|
|
250
250
|
describe "#mkdir_p" do
|
251
251
|
it "does the right thing on a bash host, identified as is_cygwin=true" do
|
252
252
|
@options = { :is_cygwin => true }
|
253
|
-
@platform = 'windows'
|
253
|
+
@platform = 'windows-11-64'
|
254
254
|
result = double
|
255
255
|
allow(result).to receive(:exit_code).and_return(0)
|
256
256
|
allow(host).to receive(:exec).and_return(result)
|
@@ -261,7 +261,7 @@ module Beaker
|
|
261
261
|
|
262
262
|
it "does the right thing on a bash host, identified as is_cygwin=nil" do
|
263
263
|
@options = { :is_cygwin => nil }
|
264
|
-
@platform = 'windows'
|
264
|
+
@platform = 'windows-11-64'
|
265
265
|
result = double
|
266
266
|
allow(result).to receive(:exit_code).and_return(0)
|
267
267
|
allow(host).to receive(:exec).and_return(result)
|
@@ -272,7 +272,7 @@ module Beaker
|
|
272
272
|
|
273
273
|
it "does the right thing on a non-bash host, identified as is_cygwin=false (powershell)" do
|
274
274
|
@options = { :is_cygwin => false }
|
275
|
-
@platform = 'windows'
|
275
|
+
@platform = 'windows-11-64'
|
276
276
|
result = double
|
277
277
|
allow(result).to receive(:exit_code).and_return(0)
|
278
278
|
allow(host).to receive(:exec).and_return(result)
|
@@ -290,19 +290,17 @@ module Beaker
|
|
290
290
|
|
291
291
|
describe "#touch" do
|
292
292
|
it "generates the right absolute command for a windows host" do
|
293
|
-
@platform = 'windows'
|
293
|
+
@platform = 'windows-11-64'
|
294
294
|
expect(host.touch('touched_file')).to eq "c:\\\\windows\\\\system32\\\\cmd.exe /c echo. 2> touched_file"
|
295
295
|
end
|
296
296
|
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
expect(host.touch('touched_file')).to eq "/bin/touch touched_file"
|
301
|
-
end
|
297
|
+
it "generates the right absolute command for an el-9-64 host" do
|
298
|
+
@platform = 'el-9-64'
|
299
|
+
expect(host.touch('touched_file')).to eq "/bin/touch touched_file"
|
302
300
|
end
|
303
301
|
|
304
|
-
it "generates the right absolute command for an osx host" do
|
305
|
-
@platform = 'osx'
|
302
|
+
it "generates the right absolute command for an osx-12-64 host" do
|
303
|
+
@platform = 'osx-12-64'
|
306
304
|
expect(host.touch('touched_file')).to eq "/usr/bin/touch touched_file"
|
307
305
|
end
|
308
306
|
end
|
@@ -762,12 +760,12 @@ module Beaker
|
|
762
760
|
|
763
761
|
describe "#fips_mode?" do
|
764
762
|
it 'returns false on non-linux hosts' do
|
765
|
-
@platform = 'windows'
|
763
|
+
@platform = 'windows-11-64'
|
766
764
|
expect(host).to receive(:file_exist?).with('/proc/sys/crypto/fips_enabled').and_return(false)
|
767
765
|
expect(host.fips_mode?).to be false
|
768
766
|
end
|
769
767
|
|
770
|
-
platforms = %w[el-7 el-8 centos]
|
768
|
+
platforms = %w[el-7-64 el-8-64 centos-9-64]
|
771
769
|
|
772
770
|
platforms.each do |platform|
|
773
771
|
context "on #{platform}" do
|
data/spec/beaker/perf_spec.rb
CHANGED
@@ -25,32 +25,34 @@ module Beaker
|
|
25
25
|
end
|
26
26
|
|
27
27
|
it 'creates a new Perf object with a single host' do
|
28
|
-
hosts = [make_host("myHost", @options)]
|
29
|
-
hosts.each { |host| host['platform'] = "centos-6-x86_64" }
|
28
|
+
hosts = [make_host("myHost", @options.merge('platform' => 'centos-6-64'))]
|
30
29
|
@my_logger.remove_destination(STDOUT)
|
31
30
|
perf = described_class.new(hosts, @options)
|
32
31
|
expect(perf).to be_a described_class
|
33
|
-
expect(@my_io.string).to
|
32
|
+
expect(@my_io.string).to eq("Setup perf on host: myHost\n")
|
34
33
|
end
|
35
34
|
|
36
35
|
it 'creates a new Perf object with multiple hosts' do
|
37
|
-
hosts = [
|
38
|
-
|
36
|
+
hosts = [
|
37
|
+
make_host("myHost", @options.merge('platform' => 'centos-6-64')),
|
38
|
+
make_host("myOtherHost", @options.merge('platform' => 'centos-6-64')),
|
39
|
+
]
|
39
40
|
@my_logger.remove_destination(STDOUT)
|
40
41
|
perf = described_class.new(hosts, @options)
|
41
42
|
expect(perf).to be_a described_class
|
42
|
-
expect(@my_io.string).to
|
43
|
+
expect(@my_io.string).to eq("Setup perf on host: myHost\nSetup perf on host: myOtherHost\n")
|
43
44
|
end
|
44
45
|
|
45
46
|
it 'creates a new Perf object with multiple hosts, SLES' do
|
46
|
-
hosts = [
|
47
|
-
|
48
|
-
|
49
|
-
|
47
|
+
hosts = [
|
48
|
+
make_host("myHost", @options.merge('platform' => 'centos-6-64')),
|
49
|
+
make_host("myOtherHost", @options.merge('platform' => 'sles-11-64')),
|
50
|
+
make_host("myThirdHost", @options.merge('platform' => 'opensuse-15-64')),
|
51
|
+
]
|
50
52
|
@my_logger.remove_destination(STDOUT)
|
51
53
|
perf = described_class.new(hosts, @options)
|
52
54
|
expect(perf).to be_a described_class
|
53
|
-
expect(@my_io.string).to
|
55
|
+
expect(@my_io.string).to include("Setup perf on host: myHost\nSetup perf on host: myOtherHost\n")
|
54
56
|
end
|
55
57
|
end
|
56
58
|
|
@@ -60,7 +62,6 @@ module Beaker
|
|
60
62
|
@options[:collect_perf_data] = 'normal'
|
61
63
|
@options[:log_level] = :debug
|
62
64
|
@options[:color] = false
|
63
|
-
@hosts = [make_host("myHost", @options), make_host("myOtherHost", @options)]
|
64
65
|
@my_io = StringIO.new
|
65
66
|
@my_logger = Beaker::Logger.new(@options)
|
66
67
|
@my_logger.add_destination(@my_io)
|
@@ -68,21 +69,24 @@ module Beaker
|
|
68
69
|
end
|
69
70
|
|
70
71
|
it "Does the Right Thing on Linux hosts" do
|
71
|
-
|
72
|
+
hosts = [make_host("myHost", @options.merge('platform' => 'centos-6-64'))]
|
72
73
|
@my_logger.remove_destination(STDOUT)
|
73
|
-
perf = described_class.new(
|
74
|
+
perf = described_class.new(hosts, @options)
|
74
75
|
expect(perf).to be_a described_class
|
75
76
|
perf.print_perf_info
|
76
|
-
expect(@my_io.string).to
|
77
|
+
expect(@my_io.string).to eq("Setup perf on host: myHost\nGetting perf data for host: myHost\n")
|
77
78
|
end
|
78
79
|
|
79
80
|
it "Does the Right Thing on non-Linux hosts" do
|
80
|
-
|
81
|
+
hosts = [
|
82
|
+
make_host("myHost", @options.merge('platform' => 'windows-11-64')),
|
83
|
+
make_host("myOtherHost", @options.merge('platform' => 'solaris-11-64')),
|
84
|
+
]
|
81
85
|
@my_logger.remove_destination(STDOUT)
|
82
|
-
perf = described_class.new(
|
86
|
+
perf = described_class.new(hosts, @options)
|
83
87
|
expect(perf).to be_a described_class
|
84
88
|
perf.print_perf_info
|
85
|
-
expect(@my_io.string).to
|
89
|
+
expect(@my_io.string).to eq("Setup perf on host: myHost\nPerf (sysstat) not supported on host: myHost\nSetup perf on host: myOtherHost\nPerf (sysstat) not supported on host: myOtherHost\nGetting perf data for host: myHost\nPerf (sysstat) not supported on host: myHost\nGetting perf data for host: myOtherHost\nPerf (sysstat) not supported on host: myOtherHost\n")
|
86
90
|
end
|
87
91
|
end
|
88
92
|
end
|
@@ -11,7 +11,7 @@ module Beaker
|
|
11
11
|
let(:logger) { double('logger') }
|
12
12
|
let(:host_handler) { described_class }
|
13
13
|
let(:spec_block) { Proc.new { |arr| arr } }
|
14
|
-
let(:platform) { @platform || '
|
14
|
+
let(:platform) { @platform || 'el-9-64' }
|
15
15
|
let(:role0) { "role0" }
|
16
16
|
let(:role1) { :role1 }
|
17
17
|
let(:role2) { :role2 }
|
data/spec/helpers.rb
CHANGED
@@ -24,7 +24,7 @@ module TestFileHelpers
|
|
24
24
|
end
|
25
25
|
|
26
26
|
module HostHelpers
|
27
|
-
HOST_DEFAULTS = { :platform => '
|
27
|
+
HOST_DEFAULTS = { :platform => 'el-9-64',
|
28
28
|
:roles => ['agent'],
|
29
29
|
:snapshot => 'snap',
|
30
30
|
:ip => 'default.ip.address',
|
@@ -91,6 +91,8 @@ module HostHelpers
|
|
91
91
|
def make_host name, host_hash
|
92
92
|
host_hash = Beaker::Options::OptionsHash.new.merge(HOST_DEFAULTS.merge(host_hash))
|
93
93
|
|
94
|
+
host_hash['platform'] = Beaker::Platform.new(host_hash['platform']) unless host_hash['platform'].is_a?(Beaker::Platform)
|
95
|
+
|
94
96
|
host = Beaker::Host.create(name, host_hash, make_opts)
|
95
97
|
|
96
98
|
allow(host).to receive(:exec).and_return(generate_result(name, host_hash))
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: beaker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.
|
4
|
+
version: 6.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Puppet
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-08-
|
11
|
+
date: 2024-08-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fakefs
|
@@ -72,14 +72,14 @@ dependencies:
|
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '0.
|
75
|
+
version: '0.12'
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '0.
|
82
|
+
version: '0.12'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: minitest
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|