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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 77c1a3954ba46fdb90013e09113edb3b0e9f4976da6ed8598befc0e0c4faf54a
4
- data.tar.gz: 8a514875b6013196ee000cd5fe1fa430057c80408511d6e6be1e28c37fd6e651
3
+ metadata.gz: 1a02ef74d16885231f54a0de64150eba5ff7cfa6bc944c8e31e833dbeb6ebf0c
4
+ data.tar.gz: 314c9cba9fc50a0966f3bd4d49624041eac4b25dea6dd46cd0e85e1781a95577
5
5
  SHA512:
6
- metadata.gz: b142270c19368140de4dc01202d20c366d2ea914704c00d37eefb869d92136858063935b1780e8b08e0cc5afc1accd605951d93da06994584945fcbd8f97e9ca
7
- data.tar.gz: cd3e194d4e98dfcf5c01eeb22ede113561c20ae54d90d3ce8e95cfa19b864d5ca65bbc0e3f4f25b583354100b7177e71d73620652ca7ad34c7991fb3c47aa5f1
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 = get_host_pkg(host)[0]
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.6'
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
 
@@ -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 /amazon|el-[89]|fedora/.match?(host['platform'])
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
- case host['platform']
106
- when /amazon/
107
- AMAZON2023_PACKAGES
108
- when /el-[89]/
109
- RHEL8_PACKAGES
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
@@ -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
@@ -1,5 +1,5 @@
1
1
  module Beaker
2
2
  module Version
3
- STRING = '6.2.0'
3
+ STRING = '6.4.0'
4
4
  end
5
5
  end
@@ -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 || 'unix' }
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', 'pswindows', [], false
28
+ it_behaves_like 'enables_root_login', 'windows-11-64', [], false
45
29
 
46
- # Non-cygwin Windows
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', 'freesbd', [
53
- "sudo su -c \"sed -ri 's/^#?PermitRootLogin no|^#?PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config\"",
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 /sbin/service sshd reload",
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 unix hosts" do
116
- hosts = make_hosts({ :platform => 'unix' })
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 => 'unix', :exit_code => [1, 0] })
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 => 'unix', :exit_code => 1 })
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 unix hosts" do
188
- hosts = make_hosts({ :platform => 'unix' })
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
- @platform = 'solaris'
257
+ host = make_host('host', { 'platform' => 'solaris-11-64' })
278
258
 
279
- expect(Beaker::Command).to receive(:new).with(sync_cmd % "bash").exactly(3).times
259
+ expect(Beaker::Command).to receive(:new).with(sync_cmd % "bash").once
280
260
 
281
- subject.sync_root_keys(hosts, options)
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
- expect(Beaker::Command).to receive(:new).with(sync_cmd % "env PATH=\"/usr/gnu/bin:$PATH\" bash").exactly(3).times
265
+ host = make_host('host', { 'platform' => 'el-9-64' })
286
266
 
287
- subject.sync_root_keys(hosts, options)
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 unix hosts" do
295
- hosts.each do |host|
296
- unix_only_pkgs.each do |pkg|
297
- expect(host).to receive(:check_for_package).with(pkg).once.and_return(false)
298
- expect(host).to receive(:install_package).with(pkg).once
299
- end
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(hosts, options)
284
+ subject.validate_host(host, options)
303
285
  end
304
286
 
305
287
  it "can validate windows hosts" do
306
- @platform = 'windows'
307
-
308
- hosts.each do |host|
309
- windows_pkgs.each do |pkg|
310
- allow(host).to receive(:cygwin_installed?).and_return(true)
311
- allow(host).to receive(:is_cygwin?).and_return(true)
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(hosts, options)
296
+ subject.validate_host(host, options)
318
297
  end
319
298
 
320
299
  it "can validate SLES hosts" do
321
- @platform = 'sles-13.1-x64'
300
+ host = make_host('host', { :platform => 'sles-13.1-x86_64' })
322
301
 
323
- hosts.each do |host|
324
- sles_only_pkgs.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
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(hosts, options)
307
+ subject.validate_host(host, options)
331
308
  end
332
309
 
333
310
  it "can validate opensuse hosts" do
334
- @platform = 'opensuse-15-x86_x64'
311
+ host = make_host('host', { :platform => 'opensuse-15-x86_x64' })
335
312
 
336
- hosts.each do |host|
337
- sles_only_pkgs.each do |pkg|
338
- expect(host).to receive(:check_for_package).with(pkg).once.and_return(false)
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(hosts, options)
318
+ subject.validate_host(host, options)
344
319
  end
345
320
 
346
321
  it "can validate RHEL8 hosts" do
347
- @platform = 'el-8-x86_x64'
322
+ host = make_host('host', { :platform => 'el-8-64' })
348
323
 
349
- hosts.each do |host|
350
- rhel8_packages.each do |pkg|
351
- expect(host).to receive(:check_for_package).with(pkg).once.and_return(false)
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(hosts, options)
329
+ subject.validate_host(host, options)
357
330
  end
358
331
 
359
332
  it "can validate Fedora hosts" do
360
- @platform = 'fedora-32-x86_64'
333
+ host = make_host('host', { :platform => 'fedora-32-x86_64' })
361
334
 
362
- hosts.each do |host|
363
- fedora_packages.each do |pkg|
364
- expect(host).to receive(:check_for_package).with(pkg).once.and_return(false)
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(hosts, options)
340
+ subject.validate_host(host, options)
370
341
  end
371
342
 
372
343
  it "can validate Amazon hosts" do
373
- @platform = 'amazon-2023-x86_64'
344
+ host = make_host('host', { :platform => 'amazon-2023-x86_64' })
374
345
 
375
- hosts.each do |host|
376
- amazon2023_packages.each do |pkg|
377
- expect(host).to receive(:check_for_package).with(pkg).once.and_return(false)
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(hosts, options)
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) do
428
- make_host('name', {
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 centos redhat].each do |platform|
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)
@@ -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('unix', 's/^key=/key=\\/my\\/first\\/value:/', '~/.ssh/environment')
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('unix', '/key=\\/my\\/first\\/value$/d', '~/.ssh/environment')
120
- expect(Beaker::SedCommand).to receive(:new).with("unix", "s/key=\\(.*\\)[;:]\\/my\\/first\\/value/key=\\1/", "~/.ssh/environment")
121
- expect(Beaker::SedCommand).to receive(:new).with("unix", "s/key=\\/my\\/first\\/value[;:]/key=/", "~/.ssh/environment")
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
- %w[centos redhat].each do |platform|
298
- it "generates the right absolute command for a #{platform} host" do
299
- @platform = platform
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
@@ -2,7 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  module Beaker
4
4
  describe Hypervisor do
5
- let(:hosts) { make_hosts({ :platform => 'el-5' }) }
5
+ let(:hosts) { make_hosts({ :platform => 'el-9-64' }) }
6
6
 
7
7
  describe "#create" do
8
8
  let(:hypervisor) { described_class }
@@ -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 match(/Setup perf on host: myHost/)
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 = [make_host("myHost", @options), make_host("myOtherHost", @options)]
38
- hosts.each { |host| host['platform'] = "centos-6-x86_64" }
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 match(/Setup perf on host: myHost*\nSetup perf on host: myOtherHost/)
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 = [make_host("myHost", @options), make_host("myOtherHost", @options), make_host("myThirdHost", @options)]
47
- hosts[0]['platform'] = "centos-6-x86_64"
48
- hosts[1]['platform'] = "sles-11-x86_64"
49
- hosts[2]['platform'] = "opensuse-15-x86_64"
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 match(/Setup perf on host: myHost\nSetup perf on host: myOtherHost/)
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
- @hosts[0]['platform'] = "centos-6-x86_64"
72
+ hosts = [make_host("myHost", @options.merge('platform' => 'centos-6-64'))]
72
73
  @my_logger.remove_destination(STDOUT)
73
- perf = described_class.new(@hosts, @options)
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 match(/Setup perf on host: myHost\nSetup perf on host: myOtherHost\nPerf \(sysstat\) not supported on host: myOtherHost\nGetting perf data for host: myHost\nGetting perf data for host: myOtherHost\nPerf \(sysstat\) not supported on host: myOtherHost/)
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
- @hosts[0]['platform'] = "windows"
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(@hosts, @options)
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 match(/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/)
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 || 'unix' }
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 => 'unix',
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.2.0
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-03 00:00:00.000000000 Z
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.6'
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.6'
82
+ version: '0.12'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: minitest
85
85
  requirement: !ruby/object:Gem::Requirement