beaker 5.4.0 → 5.5.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: bfd2ad07fea03a806838c759f62a7d8012f47da31b9e408d8caf5eae018a7353
4
- data.tar.gz: ef99fa2273d9ed94a4fa5ccb9f6b43157e270e2cd72d685ce08016a14b8ba5b6
3
+ metadata.gz: 4bd64151b4d7038041d90e11963d3cf10ebef210df726cf0732904d991f9307b
4
+ data.tar.gz: 90952c9a755e89c4c9a2df207f71829152ed2a1824b481df0daa1d9695563d82
5
5
  SHA512:
6
- metadata.gz: 4ef30fb6d9538ec1d4cc2644e0a4231a8788e93f36a657205ec5f11b030462fa1bf429a6dead72db0a98118928f51dd610c675489b8a7f0a0955ed2aa7c645f6
7
- data.tar.gz: 443b0624611e79c3d3a4bb3f10148bee8b2a9a96d0a01364f2b62399a288bee5f05364bdfb33b31a9064b5bcd893bf918867f4063817c63487cfbb58bf672250
6
+ metadata.gz: b6962dadc9e45225e1f861c171a02031bf7d1a76cfc50933b850f874d50b652105d380aed5b68ee0c4ce28318d631ef0a2c32bd89e96653afa93224b9592a3e5
7
+ data.tar.gz: 34b7603729a023b0549a693c06269a2fc8d953179ed6a03a691083d30b2eaee5ac7bbbc45a27844d02c788cb2849b8612b1d57c4caacc9c13ee077031c2a9123
data/.rubocop_todo.yml CHANGED
@@ -199,7 +199,7 @@ RSpec/MultipleDescribes:
199
199
  # Offense count: 134
200
200
  # Configuration parameters: AllowSubject.
201
201
  RSpec/MultipleMemoizedHelpers:
202
- Max: 17
202
+ Max: 18
203
203
 
204
204
  # Offense count: 500
205
205
  # Configuration parameters: EnforcedStyle, IgnoreSharedExamples.
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## [5.5.0](https://github.com/voxpupuli/beaker/tree/5.5.0) (2023-10-02)
4
+
5
+ [Full Changelog](https://github.com/voxpupuli/beaker/compare/5.4.0...5.5.0)
6
+
7
+ **Implemented enhancements:**
8
+
9
+ - Allow amazon as a platform [\#1824](https://github.com/voxpupuli/beaker/pull/1824) ([yachub](https://github.com/yachub))
10
+
3
11
  ## [5.4.0](https://github.com/voxpupuli/beaker/tree/5.4.0) (2023-09-12)
4
12
 
5
13
  [Full Changelog](https://github.com/voxpupuli/beaker/compare/5.3.0...5.4.0)
@@ -280,7 +280,7 @@ module Unix::Exec
280
280
  case self['platform']
281
281
  when /debian|ubuntu|cumulus|huaweios/
282
282
  exec(Beaker::Command.new("service ssh restart"))
283
- when /(el|centos|redhat|oracle|scientific)-[7-9]|eos-7|fedora-(1[4-9]|2[0-9]|3[0-9])|archlinux-/
283
+ when /amazon|(el|centos|redhat|oracle|scientific)-[7-9]|eos-7|fedora-(1[4-9]|2[0-9]|3[0-9])|archlinux-/
284
284
  exec(Beaker::Command.new("systemctl restart sshd.service"))
285
285
  when /el-|centos|fedora|redhat|oracle|scientific|eos/
286
286
  exec(Beaker::Command.new("/sbin/service sshd restart"))
@@ -302,7 +302,7 @@ module Unix::Exec
302
302
  # (from {#ssh_service_restart}).
303
303
  def ssh_permit_user_environment
304
304
  case self['platform']
305
- when /debian|ubuntu|cumulus|huaweios|archlinux|el-|centos|fedora|redhat|oracle|scientific|eos|opensuse|sles|solaris/
305
+ when /amazon|debian|ubuntu|cumulus|huaweios|archlinux|el-|centos|fedora|redhat|oracle|scientific|eos|opensuse|sles|solaris/
306
306
  directory = tmpdir
307
307
  exec(Beaker::Command.new("echo 'PermitUserEnvironment yes' | cat - /etc/ssh/sshd_config > #{directory}/sshd_config.permit"))
308
308
  exec(Beaker::Command.new("mv #{directory}/sshd_config.permit /etc/ssh/sshd_config"))
@@ -88,7 +88,7 @@ module Unix::File
88
88
  # @return [String] Path to package config dir
89
89
  def package_config_dir
90
90
  case self['platform']
91
- when /fedora|el-|redhat|centos/
91
+ when /amazon|fedora|el-|redhat|centos/
92
92
  '/etc/yum.repos.d/'
93
93
  when /opensuse|sles/
94
94
  '/etc/zypp/repos.d/'
@@ -149,7 +149,7 @@ module Unix::File
149
149
  # @return [String] Type of repo (rpm|deb)
150
150
  def repo_type
151
151
  case self['platform']
152
- when /fedora|el-|redhat|centos|opensuse|sles/
152
+ when /amazon|fedora|el-|redhat|centos|opensuse|sles/
153
153
  'rpm'
154
154
  when /debian|ubuntu|cumulus|huaweios/
155
155
  'deb'
@@ -40,7 +40,7 @@ module Unix::Pkg
40
40
  when /el-4/
41
41
  @logger.debug("Package query not supported on rhel4")
42
42
  return false
43
- when /cisco|fedora|centos|redhat|eos|el-/
43
+ when /amazon|cisco|fedora|centos|redhat|eos|el-/
44
44
  result = execute("rpm -q #{name}", opts) { |result| result }
45
45
  when /ubuntu|debian|cumulus|huaweios/
46
46
  result = execute("dpkg -s #{name}", opts) { |result| result }
@@ -87,7 +87,7 @@ module Unix::Pkg
87
87
  execute("zypper --non-interactive --gpg-auto-import-keys in #{name}", opts)
88
88
  when /el-4/
89
89
  @logger.debug("Package installation not supported on rhel4")
90
- when /fedora-(2[2-9]|3[0-9])/
90
+ when /amazon|fedora-(2[2-9]|3[0-9])/
91
91
  name = "#{name}-#{version}" if version
92
92
  execute("dnf -y #{cmdline_args} install #{name}", opts)
93
93
  when /cisco|fedora|centos|redhat|eos|el-/
@@ -172,7 +172,7 @@ module Unix::Pkg
172
172
  execute("zypper --non-interactive rm #{name}", opts)
173
173
  when /el-4/
174
174
  @logger.debug("Package uninstallation not supported on rhel4")
175
- when /edora-(2[2-9]|3[0-9])/
175
+ when /amazon|edora-(2[2-9]|3[0-9])/
176
176
  execute("dnf -y #{cmdline_args} remove #{name}", opts)
177
177
  when /cisco|fedora|centos|redhat|eos|el-/
178
178
  execute("yum -y #{cmdline_args} remove #{name}", opts)
@@ -264,9 +264,9 @@ module Unix::Pkg
264
264
  def install_local_package(onhost_package_file, onhost_copy_dir = nil)
265
265
  variant, version, _arch, _codename = self['platform'].to_array
266
266
  case variant
267
- when /^(fedora|el|redhat|centos)$/
267
+ when /^(amazon|fedora|el|redhat|centos)$/
268
268
  command_name = 'yum'
269
- command_name = 'dnf' if variant == 'fedora' && version.to_i > 21
269
+ command_name = 'dnf' if (variant == 'fedora' && version.to_i > 21) || (variant == 'amazon' && version.to_i >= 2023)
270
270
  execute("#{command_name} --nogpgcheck localinstall -y #{onhost_package_file}")
271
271
  when /^(opensuse|sles)$/
272
272
  execute("zypper --non-interactive --no-gpg-checks in #{onhost_package_file}")
@@ -294,7 +294,7 @@ module Unix::Pkg
294
294
  def uncompress_local_tarball(onhost_tar_file, onhost_base_dir, download_file)
295
295
  variant, version, _arch, _codename = self['platform'].to_array
296
296
  case variant
297
- when /^(fedora|el|centos|redhat|opensuse|sles|debian|ubuntu|cumulus)$/
297
+ when /^(amazon|fedora|el|centos|redhat|opensuse|sles|debian|ubuntu|cumulus)$/
298
298
  execute("tar -zxvf #{onhost_tar_file} -C #{onhost_base_dir}")
299
299
  when /^solaris$/
300
300
  # uncompress PE puppet-agent tarball
@@ -10,6 +10,7 @@ module Beaker
10
10
  NTPSERVER = 'pool.ntp.org'
11
11
  SLEEPWAIT = 5
12
12
  TRIES = 5
13
+ AMAZON2023_PACKAGES = %w[curl-minimal chrony]
13
14
  RHEL8_PACKAGES = %w[curl chrony]
14
15
  RHEL9_PACKAGES = ['chrony']
15
16
  FEDORA_PACKAGES = %w[curl chrony]
@@ -49,7 +50,7 @@ module Beaker
49
50
  host.exec(Command.new("w32tm /resync"))
50
51
  logger.notify "NTP date succeeded on #{host}"
51
52
  else
52
- if /el-[89]|fedora/.match?(host['platform'])
53
+ if /amazon|el-[89]|fedora/.match?(host['platform'])
53
54
  ntp_command = "chronyc add server #{ntp_server} prefer trust;chronyc makestep;chronyc burst 1/2"
54
55
  elsif /opensuse-|sles-/.match?(host['platform'])
55
56
  ntp_command = "sntp #{ntp_server}"
@@ -108,6 +109,8 @@ module Beaker
108
109
  # @return [Array<String>] A list of packages to install
109
110
  def host_packages(host)
110
111
  case host['platform']
112
+ when /amazon/
113
+ AMAZON2023_PACKAGES
111
114
  when /el-8/
112
115
  RHEL8_PACKAGES
113
116
  when /el-9/
@@ -387,7 +390,7 @@ module Beaker
387
390
  # restart sshd
388
391
  if /debian|ubuntu|cumulus/.match?(host['platform'])
389
392
  host.exec(Command.new("sudo su -c \"service ssh restart\""), { :pty => true })
390
- elsif /arch|(centos|el|redhat)-[789]|fedora-(1[4-9]|2[0-9]|3[0-9])/.match?(host['platform'])
393
+ elsif /amazon|arch|(centos|el|redhat)-[789]|fedora-(1[4-9]|2[0-9]|3[0-9])/.match?(host['platform'])
391
394
  host.exec(Command.new("sudo -E systemctl restart sshd.service"), { :pty => true })
392
395
  elsif /centos|el-|redhat|fedora|eos/.match?(host['platform'])
393
396
  host.exec(Command.new("sudo -E /sbin/service sshd reload"), { :pty => true })
@@ -431,7 +434,7 @@ module Beaker
431
434
  case host['platform']
432
435
  when /ubuntu/, /debian/, /cumulus/
433
436
  host.exec(Command.new("echo 'Acquire::http::Proxy \"#{opts[:package_proxy]}/\";' >> /etc/apt/apt.conf.d/10proxy"))
434
- when /^el-/, /centos/, /fedora/, /redhat/, /eos/
437
+ when /amazon/, /^el-/, /centos/, /fedora/, /redhat/, /eos/
435
438
  host.exec(Command.new("echo 'proxy=#{opts[:package_proxy]}/' >> /etc/yum.conf"))
436
439
  when /solaris-11/
437
440
  host.exec(Command.new("/usr/bin/pkg unset-publisher solaris || :"))
data/lib/beaker/perf.rb CHANGED
@@ -3,8 +3,8 @@ module Beaker
3
3
  class Perf
4
4
  PERF_PACKAGES = ['sysstat']
5
5
  # SLES does not treat sysstat as a service that can be started
6
- PERF_SUPPORTED_PLATFORMS = /debian|ubuntu|redhat|centos|oracle|scientific|fedora|el|eos|cumulus|opensuse|sles/
7
- PERF_START_PLATFORMS = /debian|ubuntu|redhat|centos|oracle|scientific|fedora|el|eos|cumulus/
6
+ PERF_SUPPORTED_PLATFORMS = /amazon|debian|ubuntu|redhat|centos|oracle|scientific|fedora|el|eos|cumulus|opensuse|sles/
7
+ PERF_START_PLATFORMS = /amazon|debian|ubuntu|redhat|centos|oracle|scientific|fedora|el|eos|cumulus/
8
8
 
9
9
  # Create the Perf instance and runs setup_perf_on_host on all hosts if --collect-perf-data
10
10
  # was used as an option on the Baker command line invocation. Instances of this class do not
@@ -47,7 +47,7 @@ module Beaker
47
47
  @logger.perf_output("Enabling aggressive sysstat polling")
48
48
  if /debian|ubuntu/.match?(host['platform'])
49
49
  host.exec(Command.new('sed -i s/5-55\\\/10/*/ /etc/cron.d/sysstat'))
50
- elsif /centos|el|fedora|oracle|redhat|scientific/.match?(host['platform'])
50
+ elsif /amazon|centos|el|fedora|oracle|redhat|scientific/.match?(host['platform'])
51
51
  host.exec(Command.new('sed -i s/*\\\/10/*/ /etc/cron.d/sysstat'))
52
52
  end
53
53
  end
@@ -3,7 +3,9 @@ module Beaker
3
3
  # all String methods while adding several platform-specific use cases.
4
4
  class Platform < String
5
5
  # Supported platforms
6
- PLATFORMS = /^(alpine|huaweios|cisco_nexus|cisco_ios_xr|(free|open)bsd|osx|centos|fedora|debian|oracle|redhat|redhatfips|scientific|opensuse|sles|ubuntu|windows|solaris|aix|archlinux|el|eos|cumulus|f5|netscaler)\-.+\-.+$/
6
+ # rubocop:disable Layout/LineLength
7
+ PLATFORMS = /^(alpine|amazon|huaweios|cisco_nexus|cisco_ios_xr|(free|open)bsd|osx|centos|fedora|debian|oracle|redhat|redhatfips|scientific|opensuse|sles|ubuntu|windows|solaris|aix|archlinux|el|eos|cumulus|f5|netscaler)\-.+\-.+$/
8
+ # rubocop:enable Layout/LineLength
7
9
  # Platform version numbers vs. codenames conversion hash
8
10
  PLATFORM_VERSION_CODES =
9
11
  { :debian => { "forky" => "14",
@@ -56,6 +58,7 @@ module Beaker
56
58
  # Creates the Platform object. Checks to ensure that the platform String
57
59
  # provided meets the platform formatting rules. Platforms name must be of
58
60
  # the format /^OSFAMILY-VERSION-ARCH.*$/ where OSFAMILY is one of:
61
+ # * amazon
59
62
  # * huaweios
60
63
  # * cisco_nexus
61
64
  # * cisco_ios_xr
@@ -1,5 +1,5 @@
1
1
  module Beaker
2
2
  module Version
3
- STRING = '5.4.0'
3
+ STRING = '5.5.0'
4
4
  end
5
5
  end
@@ -33,7 +33,7 @@ module Beaker
33
33
  let(:instance) { UnixFileTest.new(opts.merge(platform), logger) }
34
34
 
35
35
  describe '#repo_type' do
36
- %w[centos redhat].each do |platform|
36
+ %w[amazon centos redhat].each do |platform|
37
37
  it "returns correctly for platform '#{platform}'" do
38
38
  @platform = "#{platform}-5-x86_64"
39
39
  expect(instance.repo_type).to be === 'rpm'
@@ -54,7 +54,7 @@ module Beaker
54
54
  end
55
55
 
56
56
  describe '#package_config_dir' do
57
- %w[centos redhat].each do |platform|
57
+ %w[amazon centos redhat].each do |platform|
58
58
  it "returns correctly for platform '#{platform}'" do
59
59
  @platform = "#{platform}-5-x86_64"
60
60
  expect(instance.package_config_dir).to be === '/etc/yum.repos.d/'
@@ -58,7 +58,7 @@ module Beaker
58
58
  expect(instance.check_for_package(pkg)).to be === true
59
59
  end
60
60
 
61
- %w[centos redhat].each do |platform|
61
+ %w[amazon centos redhat].each do |platform|
62
62
  it "checks correctly on #{platform}" do
63
63
  @opts = { 'platform' => "#{platform}-is-me" }
64
64
  pkg = "#{platform}_package"
@@ -195,6 +195,14 @@ module Beaker
195
195
  end
196
196
  end
197
197
 
198
+ it "uses dnf on amazon-2023" do
199
+ @opts = { 'platform' => "amazon-2023-is-me" }
200
+ pkg = 'amazon_package'
201
+ expect(Beaker::Command).to receive(:new).with("dnf -y install #{pkg}", [], { :prepend_cmds => nil, :cmdexe => false }).and_return('')
202
+ expect(instance).to receive(:exec).with('', {}).and_return(generate_result("hello", { :exit_code => 0 }))
203
+ expect(instance.install_package(pkg)).to be == "hello"
204
+ end
205
+
198
206
  it "uses pacman on archlinux" do
199
207
  @opts = { 'platform' => 'archlinux-is-me' }
200
208
  pkg = 'archlinux_package'
@@ -291,6 +299,14 @@ module Beaker
291
299
  allow(instance).to receive(:[]).with('platform') { Beaker::Platform.new("#{platform}-#{version}-x86_64") }
292
300
  end
293
301
 
302
+ it 'amazon-2023: uses dnf' do
303
+ @platform = platform
304
+ @version = '2023'
305
+ package_file = 'test_123.yay'
306
+ expect(instance).to receive(:execute).with(/^dnf.*#{package_file}$/)
307
+ instance.install_local_package(package_file)
308
+ end
309
+
294
310
  it 'Fedora 22-39: uses dnf' do
295
311
  (22...39).each do |version|
296
312
  @version = version
@@ -11,6 +11,7 @@ describe Beaker do
11
11
  let(:sles_only_pkgs) { Beaker::HostPrebuiltSteps::SLES_PACKAGES }
12
12
  let(:rhel8_packages) { Beaker::HostPrebuiltSteps::RHEL8_PACKAGES }
13
13
  let(:fedora_packages) { Beaker::HostPrebuiltSteps::FEDORA_PACKAGES }
14
+ let(:amazon2023_packages) { Beaker::HostPrebuiltSteps::AMAZON2023_PACKAGES }
14
15
  let(:platform) { @platform || 'unix' }
15
16
  let(:ip) { "ip.address.0.0" }
16
17
  let(:stdout) { @stdout || ip }
@@ -85,6 +86,11 @@ describe Beaker do
85
86
  "if grep \"root::::type=role\" /etc/user_attr; then sudo rolemod -K type=normal root; else echo \"root user already type=normal\"; fi",
86
87
  ], true
87
88
 
89
+ it_behaves_like 'enables_root_login', 'amazon-2023', [
90
+ "sudo -E systemctl restart sshd.service",
91
+ "sudo su -c \"sed -ri 's/^#?PermitRootLogin no|^#?PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config\"",
92
+ ]
93
+
88
94
  %w[debian ubuntu cumulus].each do |deb_like|
89
95
  it_behaves_like 'enables_root_login', deb_like, [
90
96
  "sudo su -c \"sed -ri 's/^#?PermitRootLogin no|^#?PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config\"",
@@ -147,6 +153,15 @@ describe Beaker do
147
153
  subject.timesync(hosts, options)
148
154
  end
149
155
 
156
+ it "can sync time on amazon2023 hosts" do
157
+ hosts = make_hosts(:platform => 'amazon-2023-x86_64')
158
+ expect(Beaker::Command).to receive(:new)
159
+ .with("chronyc add server #{ntpserver} prefer trust;chronyc makestep;chronyc burst 1/2")
160
+ .exactly(3)
161
+ .times
162
+ subject.timesync(hosts, options)
163
+ end
164
+
150
165
  it "can sync time on RHEL8 hosts" do
151
166
  hosts = make_hosts(:platform => 'el-8-x86_x64')
152
167
  expect(Beaker::Command).to receive(:new)
@@ -358,6 +373,19 @@ describe Beaker do
358
373
  subject.validate_host(hosts, options)
359
374
  end
360
375
 
376
+ it "can validate Amazon hosts" do
377
+ @platform = 'amazon-2023-x86_64'
378
+
379
+ hosts.each do |host|
380
+ amazon2023_packages.each do |pkg|
381
+ expect(host).to receive(:check_for_package).with(pkg).once.and_return(false)
382
+ expect(host).to receive(:install_package).with(pkg).once
383
+ end
384
+ end
385
+
386
+ subject.validate_host(hosts, options)
387
+ end
388
+
361
389
  it 'skips validation on cisco hosts' do
362
390
  host = make_host('cisco-7', { stdout: stdout, platform: 'cisco_nexus-7-x86_64' })
363
391
  expect(subject).to receive(:check_and_install_packages_if_needed).with(host, []).once
@@ -404,7 +432,7 @@ describe Beaker do
404
432
  end
405
433
  end
406
434
 
407
- %w[centos redhat].each do |platform|
435
+ %w[amazon centos redhat].each do |platform|
408
436
  context "on platform '#{platform}'" do
409
437
  let(:host) do
410
438
  make_host('name', {
@@ -483,7 +511,7 @@ describe Beaker do
483
511
  subject.package_proxy(host, options.merge({ 'package_proxy' => proxyurl }))
484
512
  end
485
513
 
486
- %w[centos redhat].each do |platform|
514
+ %w[amazon centos redhat].each do |platform|
487
515
  it "can set proxy config on a '#{platform}' host" do
488
516
  host = make_host('name', { :platform => platform })
489
517
 
data/spec/helpers.rb CHANGED
@@ -127,7 +127,8 @@ module PlatformHelpers
127
127
 
128
128
  FEDORASYSTEMD = (14..39).to_a.collect! { |i| "fedora-#{i}" }
129
129
 
130
- SYSTEMDPLATFORMS = %w[el-7
130
+ SYSTEMDPLATFORMS = %w[amazon-2023
131
+ el-7
131
132
  centos-7
132
133
  redhat-7
133
134
  oracle-7
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: 5.4.0
4
+ version: 5.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppet
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-09-12 00:00:00.000000000 Z
11
+ date: 2023-10-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fakefs