beaker 2.29.0 → 2.29.1

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,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MzFmNmVhOTYzNjFkNjM3NjNmYTBjMDk3Njc1NGYwYmE2MGQ0NzM2ZA==
4
+ NDZlMGU2MGNjMGIzZmQxNzkyZjlhZjRhYmE1ODgwZDVlYTQ3ZTE3Yw==
5
5
  data.tar.gz: !binary |-
6
- ZGIzM2M4YzE1MzZkYWNiNDNiMGYxMDc2ZmI0MTVkZmEzN2I4OThmOA==
6
+ OGY0NDVlMDJiNTk4Mjg0Mzk4MjVjOTdjN2JlOGI4YmNhNTAwYjRlNQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NTA5Yjk4YWNkOWRmMjE5OGNlMGQ1NGQ2OTgwNWVhZjYyZjI5YjA1OTgxZWYx
10
- NjM1ZjMxYzU2Yzg0MDViOWZkZjQzNzJhYjA2NmY5ZjU1MjMxNmMyMWU1MDli
11
- M2U0NmI3Njk4OGU1YzIwYTM4NjVmOThhNmZjYzU0ODE0NTkzZDg=
9
+ NTYzNjJjODNkNDE1ZGU1MTYxNTQyMjZhZjM0MTQzZDc5MzQ4ZGM1Nzc4M2Y3
10
+ YWRkNWRhYjQwMGQyZWU2Y2I3Y2FiN2QxMTI5YTk2NDAzMTUxZDU4NTU3MmQ0
11
+ NGU0MWJiNzQ2N2JjMTYzMTMxYjQwNzA4NjdjN2ExNGRhOWJiZjY=
12
12
  data.tar.gz: !binary |-
13
- OTVlN2UzYjljMWQxNjU4ODE0ZTlkYmY0NDg0NmNlZTliOTUyOGE5ZWU2MTQ5
14
- NGE5OTRlYWE5NjRkZWY2N2IzOTFmNTY4ZjVjMjk2MDRhZjU0ZjRiMWU4ZGNh
15
- ZWJjNTEzY2ZjYTVmYTEzZTZiOWY2ZTc4MTc3YTk4OWMxMWI3ZjI=
13
+ ZjFiZmE3NzNiODg0ODgyZTAwMzNjMjhiMmY4YzA5MWU5NWQ1ZjlmZDI5YTY5
14
+ MWVkY2U4NzZlMGEwNDY2YjU2MmM2NzRhOTEzYzRhOGVmNWMzYjk0N2FhODMx
15
+ ZWQ0MzQ1MWRlYjFiNGIxMzQ5ZDM5MjllNzMzYzhlY2JjNDk0YjA=
data/HISTORY.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # default - History
2
2
  ## Tags
3
- * [LATEST - 18 Nov, 2015 (5ae7782f)](#LATEST)
3
+ * [LATEST - 23 Nov, 2015 (5781838d)](#LATEST)
4
+ * [2.29.0 - 18 Nov, 2015 (33fd2399)](#2.29.0)
4
5
  * [2.28.0 - 4 Nov, 2015 (89829551)](#2.28.0)
5
6
  * [2.27.0 - 21 Oct, 2015 (0378d13a)](#2.27.0)
6
7
  * [2.26.0 - 13 Oct, 2015 (427a512b)](#2.26.0)
@@ -101,7 +102,48 @@
101
102
  * [pe1.2 - 6 Sep, 2011 (ba3dadd2)](#pe1.2)
102
103
 
103
104
  ## Details
104
- ### <a name = "LATEST">LATEST - 18 Nov, 2015 (5ae7782f)
105
+ ### <a name = "LATEST">LATEST - 23 Nov, 2015 (5781838d)
106
+
107
+ * (GEM) update beaker version to 2.29.1 (5781838d)
108
+
109
+ * Merge pull request #1019 from ody/bkr633_lesser_ruby (41647b80)
110
+
111
+
112
+ ```
113
+ Merge pull request #1019 from ody/bkr633_lesser_ruby
114
+
115
+ (BKR-633) Explicitly depend on mime-types.
116
+ ```
117
+ * (BKR-633) Explicitly depend on mime-types. (99fb8b11)
118
+
119
+
120
+ ```
121
+ (BKR-633) Explicitly depend on mime-types.
122
+
123
+ This commit will add an explicit dependency on the mime-types gem to
124
+ beaker's gemspec that installs versions less than 3.0 on systems with
125
+ a Ruby version less than 2.0.
126
+
127
+ This has to be done in order for beaker to install freshly on systems
128
+ where it hasn't been installed before. The mime-types gem dropped
129
+ ruby 1.9.2 support with 3.0 and one of beaker's dependency, fog
130
+ depends on any version of mime-types greater than 0.
131
+ ```
132
+ * Merge pull request #1009 from kevpl/bkr499_solaris10_fixups (22fe3324)
133
+
134
+
135
+ ```
136
+ Merge pull request #1009 from kevpl/bkr499_solaris10_fixups
137
+
138
+ (BKR-499) solaris10 fixups
139
+ ```
140
+ * (BKR-499) refactoring set_env into host logic (a661dfe0)
141
+
142
+ * (BKR-499) Solaris 10 Fixes (ba1289ca)
143
+
144
+ ### <a name = "2.29.0">2.29.0 - 18 Nov, 2015 (33fd2399)
145
+
146
+ * (HISTORY) update beaker history for gem release 2.29.0 (33fd2399)
105
147
 
106
148
  * (GEM) update beaker version to 2.29.0 (5ae7782f)
107
149
 
@@ -57,9 +57,9 @@ test_name "dsl::helpers::host_helpers #create_remote_file" do
57
57
  end
58
58
 
59
59
  # NOTE: there does not seem to be a reliable way to confine to cygwin hosts.
60
- confine_block :to, :platform => /windows|solaris.*10/ do
60
+ confine_block :to, :platform => /windows/ do
61
61
 
62
- # NOTE: rsync methods are not working currently on windows and solaris 10 platforms
62
+ # NOTE: rsync methods are not working currently on windows platforms
63
63
 
64
64
  step "#create_remote_file CURRENTLY fails on #{default['platform']}, using rsync" do
65
65
  remote_tmpdir = tmpdir_on default
@@ -74,7 +74,7 @@ test_name "dsl::helpers::host_helpers #create_remote_file" do
74
74
  end
75
75
  end
76
76
 
77
- confine_block :except, :platform => /windows|solaris.*10/ do
77
+ confine_block :except, :platform => /windows/ do
78
78
 
79
79
  step "#create_remote_file creates a remote file with the specified contents, using rsync" do
80
80
  remote_tmpdir = tmpdir_on default
@@ -137,9 +137,9 @@ test_name "dsl::helpers::host_helpers #create_remote_file" do
137
137
  end
138
138
 
139
139
  # NOTE: there does not appear to be a way to confine just to cygwin hosts
140
- confine_block :to, :platform => /windows|solaris.*10/ do
140
+ confine_block :to, :platform => /windows/ do
141
141
 
142
- # NOTE: rsync methods are not working currently on windows and solaris 10
142
+ # NOTE: rsync methods are not working currently on windows
143
143
  # platforms. Would expect this to be documented better.
144
144
 
145
145
  step "#create_remote_file creates remote files on all remote hosts, when given an array, using rsync" do
@@ -158,7 +158,7 @@ test_name "dsl::helpers::host_helpers #create_remote_file" do
158
158
  end
159
159
  end
160
160
 
161
- confine_block :except, :platform => /windows|solaris.*10|fedora/ do
161
+ confine_block :except, :platform => /windows|fedora/ do
162
162
 
163
163
  step "#create_remote_file creates remote files on all remote hosts, when given an array, using rsync" do
164
164
  remote_tmpdir = tmpdir_on default
@@ -22,20 +22,11 @@ test_name "dsl::helpers::host_helpers #install_package" do
22
22
  end
23
23
  end
24
24
 
25
- confine_block :to, :platform => /solaris/ do
26
-
27
- step "#install_package CURRENTLY fails on solaris platforms" do
28
- assert_raises Beaker::Host::CommandFailure do
29
- install_package default, "rsync"
30
- end
31
- end
32
- end
33
-
34
25
  confine_block :to, :platform => /osx/ do
35
26
  # TODO: install_package on OSX installs via a .dmg file -- how to test this?
36
27
  end
37
28
 
38
- confine_block :except, :platform => /windows|solaris|osx/ do
29
+ confine_block :except, :platform => /windows|osx/ do
39
30
 
40
31
  step "#install_package fails if package is not known on the OS" do
41
32
  assert_raises Beaker::Host::CommandFailure do
@@ -2,29 +2,6 @@ require "helpers/test_helper"
2
2
 
3
3
  test_name "dsl::helpers::host_helpers #rsync_to" do
4
4
 
5
- confine_block :to, :platform => /^solaris.*10/ do
6
-
7
- step "#rsync_to CURRENTLY will fail without error, but not copy the requested file, on #{default['platform']} due to lack of installed rsync" do
8
-
9
- # NOTE: this should be documented
10
- # FIXME: This is also true for CentOS/EL-*, but package removal appears
11
- # to not be working properly, so we cannot get test isolation
12
- # to test this as if the system is pristine.
13
- Dir.mktmpdir do |local_dir|
14
- local_filename, contents = create_local_file_from_fixture("simple_text_file", local_dir, "testfile.txt")
15
- remote_tmpdir = tmpdir_on default
16
-
17
- rsync_to default, local_filename, remote_tmpdir
18
-
19
- remote_filename = File.join(remote_tmpdir, "testfile.txt")
20
-
21
- assert_raises Beaker::Host::CommandFailure do
22
- remote_contents = on(default, "cat #{remote_filename}").stdout
23
- end
24
- end
25
- end
26
- end
27
-
28
5
  confine_block :to, :platform => /^centos|el-\d|fedora/ do
29
6
  step "installing `rsync` on #{default['platform']} for all later test steps" do
30
7
  hosts.each do |host|
@@ -54,7 +31,7 @@ test_name "dsl::helpers::host_helpers #rsync_to" do
54
31
  end
55
32
  end
56
33
 
57
- confine_block :except, :platform => /windows|solaris.*10/ do
34
+ confine_block :except, :platform => /windows/ do
58
35
 
59
36
  step "#rsync_to fails if the local file cannot be found" do
60
37
  remote_tmpdir = tmpdir_on default
@@ -33,18 +33,7 @@ test_name "dsl::helpers::host_helpers #upgrade_package" do
33
33
  end
34
34
  end
35
35
 
36
- confine_block :to, :platform => /solaris/ do
37
-
38
- step "#upgrade_package CURRENTLY fails on solaris platforms" do
39
- # NOTE: pkgutil doesn't appear to be installed by default -- documentation
40
- # could be better here.
41
- assert_raises Beaker::Host::CommandFailure do
42
- upgrade_package default, "bash"
43
- end
44
- end
45
- end
46
-
47
- confine_block :except, :platform => /windows|solaris|osx/ do
36
+ confine_block :except, :platform => /windows|osx/ do
48
37
  confine_block :to, :platform => /centos|el-\d/ do
49
38
 
50
39
  step "#upgrade_package CURRENTLY does not fail on CentOS if unknown package is specified" do
@@ -0,0 +1,32 @@
1
+ test_name "confirm host prebuilt steps behave correctly" do
2
+
3
+ confine_block :except, :platform => /f5|windows/ do
4
+ step "confirm ssh environment file existence" do
5
+ hosts.each do |host|
6
+ assert(host.file_exist?(host[:ssh_env_file]))
7
+ end
8
+ end
9
+
10
+ step "confirm PATH env variable is set in the ssh environment file" do
11
+ hosts.each do |host|
12
+ assert(0 == on(host, "grep \"PATH\" #{host[:ssh_env_file]}").exit_code)
13
+ end
14
+ end
15
+ end
16
+
17
+ confine_block :to, :platform => /solaris-10/ do
18
+ step "confirm /opt/csw/bin has been added to the path" do
19
+ hosts.each do |host|
20
+ assert(0 == on(host, "grep \"/opt/csw/bin\" #{host[:ssh_env_file]}").exit_code)
21
+ end
22
+ end
23
+ end
24
+
25
+ confine_block :to, :platform => /openbsd/ do
26
+ step "confirm PKG_PATH is set in the ssh environment file" do
27
+ hosts.each do |host|
28
+ assert(0 == on(host, "grep \"PKG_PATH\" #{host[:ssh_env_file]}").exit_code)
29
+ end
30
+ end
31
+ end
32
+ end
@@ -19,6 +19,8 @@ def get_host_pkg(host)
19
19
  Beaker::HostPrebuiltSteps::FREEBSD_PACKAGES
20
20
  when host['platform'] =~ /openbsd/
21
21
  Beaker::HostPrebuiltSteps::OPENBSD_PACKAGES
22
+ when host['platform'] =~ /solaris-10/
23
+ Beaker::HostPrebuiltSteps::SOLARIS10_PACKAGES
22
24
  else
23
25
  Beaker::HostPrebuiltSteps::UNIX_PACKAGES
24
26
  end
@@ -48,8 +50,9 @@ hosts.each do |host|
48
50
  # this works on Windows as well, althought it pulls in
49
51
  # a lot of dependencies.
50
52
  package = 'zsh'
53
+ package = 'CSWzsh' if host['platform'] =~ /solaris-10/
51
54
 
52
- if host['platform'] =~ /solaris/
55
+ if host['platform'] =~ /solaris-11/
53
56
  logger.debug("#{package} should be uninstalled on #{host}")
54
57
  host.uninstall_package(package)
55
58
  assert_equal(false, host.check_for_package(package), "'#{package}' should not be installed")
@@ -51,6 +51,7 @@ Gem::Specification.new do |s|
51
51
  s.add_runtime_dependency 'google-api-client', '~> 0.8'
52
52
  s.add_runtime_dependency 'aws-sdk', '~> 1.57'
53
53
  s.add_runtime_dependency 'docker-api'
54
+ s.add_runtime_dependency 'mime-types', '~> 2.99' if RUBY_VERSION < '2.0' # dropped ruby 1.9 rupport in 3.0
54
55
  s.add_runtime_dependency 'fog-google', '~> 0.0.9' # dropped ruby 1.9 support in 0.1
55
56
  s.add_runtime_dependency 'fog', ['~> 1.25', '< 1.35.0']
56
57
 
@@ -1,5 +1,5 @@
1
1
  [ 'host', 'command_factory' ].each do |lib|
2
- require "beaker/#{lib}"
2
+ require "beaker/#{lib}"
3
3
  end
4
4
 
5
5
  module Aix
@@ -8,4 +8,22 @@ module Aix::Exec
8
8
  def get_ip
9
9
  execute("ifconfig -a inet| awk '/broadcast/ {print $2}' | cut -d/ -f1 | head -1").strip
10
10
  end
11
+
12
+ # Restarts the SSH service
13
+ #
14
+ # @return [Result] result of starting ssh service
15
+ def ssh_service_restart
16
+ exec(Beaker::Command.new("stopsrc -g ssh"))
17
+ exec(Beaker::Command.new("startsrc -g ssh"))
18
+ end
19
+
20
+ # Sets the PermitUserEnvironent setting & restarts the SSH service
21
+ #
22
+ # @api private
23
+ # @return [Result] result of the command starting the SSH service
24
+ # (from {#ssh_service_restart}).
25
+ def ssh_permit_user_environment
26
+ exec(Beaker::Command.new("echo '\nPermitUserEnvironment yes' >> /etc/ssh/sshd_config"))
27
+ ssh_service_restart()
28
+ end
11
29
  end
@@ -5,4 +5,26 @@ module Mac::Exec
5
5
  (abs ? '/usr/bin/touch' : 'touch') + " #{file}"
6
6
  end
7
7
 
8
+ # Restarts the SSH service
9
+ #
10
+ # @return [Result] result of starting SSH service
11
+ def ssh_service_restart
12
+ launch_daemons_plist = '/System/Library/LaunchDaemons/ssh.plist'
13
+ exec(Beaker::Command.new("launchctl unload #{launch_daemons_plist}"))
14
+ exec(Beaker::Command.new("launchctl load #{launch_daemons_plist}"))
15
+ end
16
+
17
+ # Sets the PermitUserEnvironment setting & restarts the SSH service
18
+ #
19
+ # @api private
20
+ # @return [Result] result of the command starting the SSH service
21
+ # (from {#ssh_service_restart})
22
+ def ssh_permit_user_environment
23
+ ssh_config_file = '/etc/sshd_config'
24
+ ssh_config_file = '/private/etc/ssh/sshd_config' if self['platform'] =~ /osx-10\.*11/
25
+
26
+ exec(Beaker::Command.new("echo '\nPermitUserEnvironment yes' >> #{ssh_config_file}"))
27
+ ssh_service_restart()
28
+ end
29
+
8
30
  end
@@ -148,4 +148,28 @@ module PSWindows::Exec
148
148
  self.close #refresh the state
149
149
  end
150
150
 
151
+ # Overrides the {Windows::Exec#ssh_permit_user_environment} method,
152
+ # since no steps are needed in this setup to allow user ssh environments
153
+ # to work.
154
+ def ssh_permit_user_environment
155
+ end
156
+
157
+ # Sets the user SSH environment.
158
+ #
159
+ # @param [Hash{String=>String}] env Environment variables to set on the system,
160
+ # in the form of a hash of String variable
161
+ # names to their corresponding String values.
162
+ #
163
+ # @note this class doesn't manipulate an SSH environment file, it just sets
164
+ # the environment variables on the system.
165
+ #
166
+ # @api private
167
+ # @return nil
168
+ def ssh_set_user_environment(env)
169
+ #add the env var set to this test host
170
+ env.each_pair do |var, value|
171
+ add_env_var(var, value)
172
+ end
173
+ end
174
+
151
175
  end
@@ -159,4 +159,82 @@ module Unix::Exec
159
159
  mirror_env_to_profile_d(env_file)
160
160
  end
161
161
 
162
+ # Restarts the SSH service.
163
+ #
164
+ # @return [Result] result of restarting the SSH service
165
+ def ssh_service_restart
166
+ case self['platform']
167
+ when /debian|ubuntu|cumulus/
168
+ exec(Beaker::Command.new("service ssh restart"))
169
+ when /el-7|centos-7|redhat-7|oracle-7|scientific-7|eos-7/
170
+ exec(Beaker::Command.new("systemctl restart sshd.service"))
171
+ when /el-|centos|fedora|redhat|oracle|scientific|eos/
172
+ exec(Beaker::Command.new("/sbin/service sshd restart"))
173
+ when /sles/
174
+ exec(Beaker::Command.new("rcsshd restart"))
175
+ when /solaris/
176
+ exec(Beaker::Command.new("svcadm restart svc:/network/ssh:default"))
177
+ when /(free|open)bsd/
178
+ exec(Beaker::Command.new("sudo /etc/rc.d/sshd restart"))
179
+ end
180
+ end
181
+
182
+ # Sets the PermitUserEnvironment setting & restarts the SSH service.
183
+ #
184
+ # @api private
185
+ # @return [Result] result of the command restarting the SSH service
186
+ # (from {#ssh_service_restart}).
187
+ def ssh_permit_user_environment
188
+ case self['platform']
189
+ when /debian|ubuntu|cumulus/
190
+ exec(Beaker::Command.new("echo '\nPermitUserEnvironment yes' >> /etc/ssh/sshd_config"))
191
+ when /el-7|centos-7|redhat-7|oracle-7|scientific-7|eos-7/
192
+ exec(Beaker::Command.new("echo '\nPermitUserEnvironment yes' >> /etc/ssh/sshd_config"))
193
+ when /el-|centos|fedora|redhat|oracle|scientific|eos/
194
+ exec(Beaker::Command.new("echo '\nPermitUserEnvironment yes' >> /etc/ssh/sshd_config"))
195
+ when /sles/
196
+ exec(Beaker::Command.new("echo '\nPermitUserEnvironment yes' >> /etc/ssh/sshd_config"))
197
+ when /solaris/
198
+ # kept solaris here because refactoring it into its own Host module
199
+ # conflicts with the solaris hypervisor that already exists
200
+ exec(Beaker::Command.new("echo '\nPermitUserEnvironment yes' >> /etc/ssh/sshd_config"))
201
+ when /(free|open)bsd/
202
+ exec(Beaker::Command.new("sudo perl -pi -e 's/^#?PermitUserEnvironment no/PermitUserEnvironment yes/' /etc/ssh/sshd_config"), {:pty => true} )
203
+ end
204
+
205
+ ssh_service_restart()
206
+ end
207
+
208
+ # Fills the user SSH environment file.
209
+ #
210
+ # @param [Hash{String=>String}] env Environment variables to set on the system,
211
+ # in the form of a hash of String variable
212
+ # names to their corresponding String values.
213
+ #
214
+ # @api private
215
+ # @return nil
216
+ def ssh_set_user_environment(env)
217
+ #ensure that ~/.ssh/environment exists
218
+ ssh_env_file_dir = Pathname.new(self[:ssh_env_file]).dirname
219
+ mkdir_p(ssh_env_file_dir)
220
+ exec(Beaker::Command.new("chmod 0600 #{ssh_env_file_dir}"))
221
+ exec(Beaker::Command.new("touch #{self[:ssh_env_file]}"))
222
+ #add the constructed env vars to this host
223
+ add_env_var('PATH', '$PATH')
224
+ # FIXME
225
+ if self['platform'] =~ /openbsd-(\d)\.?(\d)-(.+)/
226
+ version = "#{$1}.#{$2}"
227
+ arch = $3
228
+ arch = 'amd64' if ['x64', 'x86_64'].include?(arch)
229
+ add_env_var('PKG_PATH', "http://ftp.openbsd.org/pub/OpenBSD/#{version}/packages/#{arch}/")
230
+ elsif self['platform'] =~ /solaris-10/
231
+ add_env_var('PATH', '/opt/csw/bin')
232
+ end
233
+
234
+ #add the env var set to this test host
235
+ env.each_pair do |var, value|
236
+ add_env_var(var, value)
237
+ end
238
+ end
239
+
162
240
  end
@@ -11,7 +11,11 @@ module Unix::Pkg
11
11
  result = exec(Beaker::Command.new("which #{name}"), :accept_all_exit_codes => true)
12
12
  case self['platform']
13
13
  when /solaris-10/
14
- result.stdout =~ %r|/.*/#{name}|
14
+ # solaris 10 appears to have considered `which` to have run successfully,
15
+ # even if the command didn't exist, so it'll return a 0 exit code in
16
+ # either case. Instead we match for the phrase output when a match isn't
17
+ # found: "no #{name} in $PATH", reversing it to match our API
18
+ !( result.stdout.match(/^no\ #{name}\ in\ /) )
15
19
  else
16
20
  result.exit_code == 0
17
21
  end
@@ -36,6 +40,9 @@ module Unix::Pkg
36
40
  result = execute("pkg info #{name}", opts) { |result| result }
37
41
  when /solaris-10/
38
42
  result = execute("pkginfo #{name}", opts) { |result| result }
43
+ if result.exit_code == 1
44
+ result = execute("pkginfo CSW#{name}", opts) { |result| result }
45
+ end
39
46
  when /freebsd-9/
40
47
  result = execute("pkg_info #{name}", opts) { |result| result }
41
48
  when /freebsd-10/
@@ -82,6 +89,11 @@ module Unix::Pkg
82
89
  update_apt_if_needed
83
90
  execute("apt-get install --force-yes #{cmdline_args} -y #{name}", opts)
84
91
  when /solaris-11/
92
+ if opts[:acceptable_exit_codes]
93
+ opts[:acceptable_exit_codes] << 4
94
+ else
95
+ opts[:acceptable_exit_codes] = [0, 4] unless opts[:accept_all_exit_codes]
96
+ end
85
97
  execute("pkg #{cmdline_args} install #{name}", opts)
86
98
  when /solaris-10/
87
99
  execute("pkgutil -i -y #{cmdline_args} #{name}", opts)
@@ -180,9 +192,14 @@ module Unix::Pkg
180
192
  update_apt_if_needed
181
193
  execute("apt-get install -o Dpkg::Options::='--force-confold' #{cmdline_args} -y --force-yes #{name}", opts)
182
194
  when /solaris-11/
195
+ if opts[:acceptable_exit_codes]
196
+ opts[:acceptable_exit_codes] << 4
197
+ else
198
+ opts[:acceptable_exit_codes] = [0, 4] unless opts[:accept_all_exit_codes]
199
+ end
183
200
  execute("pkg #{cmdline_args} update #{name}", opts)
184
201
  when /solaris-10/
185
- execute("pkgutil -u -y #{cmdline_args} ${name}", opts)
202
+ execute("pkgutil -u -y #{cmdline_args} #{name}", opts)
186
203
  else
187
204
  raise "Package #{name} cannot be upgraded on #{self}"
188
205
  end
@@ -50,4 +50,30 @@ module Windows::Exec
50
50
  result.exit_code == 0
51
51
  end
52
52
 
53
+ # Restarts the SSH service.
54
+ #
55
+ # @return [Result] result of starting SSH service
56
+ def ssh_service_restart
57
+ command_result = nil
58
+ # we get periodic failures to restart the service, so looping these with re-attempts
59
+ repeat_fibonacci_style_for(5) do
60
+ 0 == exec(Beaker::Command.new("cygrunsrv -E sshd"), :acceptable_exit_codes => [0, 1] ).exit_code
61
+ end
62
+ repeat_fibonacci_style_for(5) do
63
+ command_result = exec(Beaker::Command.new("cygrunsrv -S sshd"), :acceptable_exit_codes => [0, 1] )
64
+ 0 == command_result.exit_code
65
+ end
66
+ command_result
67
+ end
68
+
69
+ # Sets the PermitUserEnvironment setting & restarts the SSH service
70
+ #
71
+ # @api private
72
+ # @return [Result] result of the command starting the SSH service
73
+ # (from {#ssh_service_restart}).
74
+ def ssh_permit_user_environment
75
+ exec(Beaker::Command.new("echo '\nPermitUserEnvironment yes' >> /etc/sshd_config"))
76
+ ssh_service_restart()
77
+ end
78
+
53
79
  end
@@ -21,6 +21,7 @@ module Beaker
21
21
  SLES_PACKAGES = ['curl', 'ntp']
22
22
  DEBIAN_PACKAGES = ['curl', 'ntpdate', 'lsb-release']
23
23
  CUMULUS_PACKAGES = ['curl', 'ntpdate']
24
+ SOLARIS10_PACKAGES = ['CSWcurl', 'CSWntp']
24
25
  ETC_HOSTS_PATH = "/etc/hosts"
25
26
  ETC_HOSTS_PATH_SOLARIS = "/etc/inet/hosts"
26
27
  ROOT_KEYS_SCRIPT = "https://raw.githubusercontent.com/puppetlabs/puppetlabs-sshkeys/master/templates/scripts/manage_root_authorized_keys"
@@ -107,6 +108,8 @@ module Beaker
107
108
  check_and_install_packages_if_needed(host, FREEBSD_PACKAGES)
108
109
  when host['platform'] =~ /openbsd/
109
110
  check_and_install_packages_if_needed(host, OPENBSD_PACKAGES)
111
+ when host['platform'] =~ /solaris-10/
112
+ check_and_install_packages_if_needed(host, SOLARIS10_PACKAGES)
110
113
  when host['platform'] !~ /debian|aix|solaris|windows|sles-|osx-|cumulus|f5-/
111
114
  check_and_install_packages_if_needed(host, UNIX_PACKAGES)
112
115
  end
@@ -523,72 +526,13 @@ module Beaker
523
526
  next if host['platform'] =~ /f5/
524
527
  env = construct_env(host, opts)
525
528
  logger.debug("setting local environment on #{host.name}")
526
- case host['platform']
527
- when /windows/
528
- if host.is_cygwin?
529
- host.exec(Command.new("echo '\nPermitUserEnvironment yes' >> /etc/sshd_config"))
530
- # we get periodic failures to restart the service, so looping these with re-attempts
531
- repeat_fibonacci_style_for(5) do
532
- 0 == host.exec(Command.new("cygrunsrv -E sshd"), :acceptable_exit_codes => [0, 1] ).exit_code
533
- end
534
- repeat_fibonacci_style_for(5) do
535
- 0 == host.exec(Command.new("cygrunsrv -S sshd"), :acceptable_exit_codes => [0, 1] ).exit_code
536
- end
537
- env['CYGWIN'] = 'nodosfilewarning'
538
- else
539
- #nothing to do here
540
- end
541
- when /osx-10\.*11/
542
- host.exec(Command.new("echo '\nPermitUserEnvironment yes' >> /private/etc/ssh/sshd_config"))
543
- host.exec(Command.new("launchctl unload /System/Library/LaunchDaemons/ssh.plist"))
544
- host.exec(Command.new("launchctl load /System/Library/LaunchDaemons/ssh.plist"))
545
- when /osx/
546
- host.exec(Command.new("echo '\nPermitUserEnvironment yes' >> /etc/sshd_config"))
547
- host.exec(Command.new("launchctl unload /System/Library/LaunchDaemons/ssh.plist"))
548
- host.exec(Command.new("launchctl load /System/Library/LaunchDaemons/ssh.plist"))
549
- when /debian|ubuntu|cumulus/
550
- host.exec(Command.new("echo '\nPermitUserEnvironment yes' >> /etc/ssh/sshd_config"))
551
- host.exec(Command.new("service ssh restart"))
552
- when /el-7|centos-7|redhat-7|oracle-7|scientific-7|eos-7/
553
- host.exec(Command.new("echo '\nPermitUserEnvironment yes' >> /etc/ssh/sshd_config"))
554
- host.exec(Command.new("systemctl restart sshd.service"))
555
- when /el-|centos|fedora|redhat|oracle|scientific|eos/
556
- host.exec(Command.new("echo '\nPermitUserEnvironment yes' >> /etc/ssh/sshd_config"))
557
- host.exec(Command.new("/sbin/service sshd restart"))
558
- when /sles/
559
- host.exec(Command.new("echo '\nPermitUserEnvironment yes' >> /etc/ssh/sshd_config"))
560
- host.exec(Command.new("rcsshd restart"))
561
- when /solaris/
562
- host.exec(Command.new("echo '\nPermitUserEnvironment yes' >> /etc/ssh/sshd_config"))
563
- host.exec(Command.new("svcadm restart svc:/network/ssh:default"))
564
- when /aix/
565
- host.exec(Command.new("echo '\nPermitUserEnvironment yes' >> /etc/ssh/sshd_config"))
566
- host.exec(Command.new("stopsrc -g ssh"))
567
- host.exec(Command.new("startsrc -g ssh"))
568
- when /(free|open)bsd/
569
- host.exec(Command.new("sudo perl -pi -e 's/^#?PermitUserEnvironment no/PermitUserEnvironment yes/' /etc/ssh/sshd_config"), {:pty => true} )
570
- host.exec(Command.new("sudo /etc/rc.d/sshd restart"))
529
+ if host['platform'] =~ /windows/ and host.is_cygwin?
530
+ env['CYGWIN'] = 'nodosfilewarning'
571
531
  end
532
+ host.ssh_permit_user_environment()
533
+
534
+ host.ssh_set_user_environment(env)
572
535
 
573
- if not host.is_powershell?
574
- #ensure that ~/.ssh/environment exists
575
- host.exec(Command.new("mkdir -p #{Pathname.new(host[:ssh_env_file]).dirname}"))
576
- host.exec(Command.new("chmod 0600 #{Pathname.new(host[:ssh_env_file]).dirname}"))
577
- host.exec(Command.new("touch #{host[:ssh_env_file]}"))
578
- #add the constructed env vars to this host
579
- host.add_env_var('PATH', '$PATH')
580
- # FIXME
581
- if host['platform'] =~ /openbsd-(\d)\.?(\d)-(.+)/
582
- version = "#{$1}.#{$2}"
583
- arch = $3
584
- arch = 'amd64' if ['x64', 'x86_64'].include?(arch)
585
- host.add_env_var('PKG_PATH', "http://ftp.openbsd.org/pub/OpenBSD/#{version}/packages/#{arch}/")
586
- end
587
- end
588
- #add the env var set to this test host
589
- env.each_pair do |var, value|
590
- host.add_env_var(var, value)
591
- end
592
536
  # REMOVE POST BEAKER 3: backwards compatability, do some setup based upon the global type
593
537
  # this is the worst and i hate it
594
538
  Class.new.extend(Beaker::DSL).configure_type_defaults_on(host)
@@ -1,5 +1,5 @@
1
1
  module Beaker
2
2
  module Version
3
- STRING = '2.29.0'
3
+ STRING = '2.29.1'
4
4
  end
5
5
  end
@@ -492,71 +492,69 @@ describe Beaker do
492
492
  context "set_env" do
493
493
  subject { dummy_class.new }
494
494
 
495
- it "can set the environment on a windows host" do
496
- commands = [
497
- "echo '\nPermitUserEnvironment yes' >> /etc/sshd_config",
498
- "cygrunsrv -E sshd",
499
- "cygrunsrv -S sshd"
500
- ]
501
- set_env_helper('windows', commands)
495
+ it "permits user environments on an OS X host" do
496
+ test_host_ssh_permit_user_environment('osx')
502
497
  end
503
498
 
504
- it "can set the environment on an OS X host" do
505
- commands = [
506
- "echo '\nPermitUserEnvironment yes' >> /etc/sshd_config",
507
- "launchctl unload /System/Library/LaunchDaemons/ssh.plist",
508
- "launchctl load /System/Library/LaunchDaemons/ssh.plist"
509
- ]
510
- set_env_helper('osx', commands)
499
+ it "permits user environments on an ssh-based linux host" do
500
+ test_host_ssh_permit_user_environment('ubuntu')
511
501
  end
512
502
 
513
- it "can set the environment on an ssh-based linux host" do
514
- commands = [
515
- "echo '\nPermitUserEnvironment yes' >> /etc/ssh/sshd_config",
516
- "service ssh restart"
517
- ]
518
- set_env_helper('ubuntu', commands)
503
+ it "permits user environments on an sshd-based linux host" do
504
+ test_host_ssh_permit_user_environment('eos')
519
505
  end
520
506
 
521
- it "can set the environment on an sshd-based linux host" do
522
- commands = [
523
- "echo '\nPermitUserEnvironment yes' >> /etc/ssh/sshd_config",
524
- "/sbin/service sshd restart"
525
- ]
526
- set_env_helper('eos', commands)
507
+ it "permits user environments on an sles host" do
508
+ test_host_ssh_permit_user_environment('sles')
527
509
  end
528
510
 
529
- it "can set the environment on an sles host" do
530
- commands = [
531
- "echo '\nPermitUserEnvironment yes' >> /etc/ssh/sshd_config",
532
- "rcsshd restart"
533
- ]
534
- set_env_helper('sles', commands)
511
+ it "permits user environments on a solaris host" do
512
+ test_host_ssh_permit_user_environment('solaris')
535
513
  end
536
514
 
537
- it "can set the environment on a solaris host" do
538
- commands = [
539
- "echo '\nPermitUserEnvironment yes' >> /etc/ssh/sshd_config",
540
- "svcadm restart svc:/network/ssh:default"
541
- ]
542
- set_env_helper('solaris', commands)
515
+ it "permits user environments on an aix host" do
516
+ test_host_ssh_permit_user_environment('aix')
543
517
  end
544
518
 
545
- it "can set the environment on an aix host" do
546
- commands = [
547
- "echo '\nPermitUserEnvironment yes' >> /etc/ssh/sshd_config",
548
- "stopsrc -g ssh",
549
- "startsrc -g ssh"
550
- ]
551
- set_env_helper('aix', commands)
519
+ it "permits user environments on a FreeBSD host" do
520
+ test_host_ssh_permit_user_environment('freebsd')
552
521
  end
553
522
 
554
- it "can set the environment on a FreeBSD host" do
555
- commands = [
556
- "sudo perl -pi -e 's/^#?PermitUserEnvironment no/PermitUserEnvironment yes/' /etc/ssh/sshd_config",
557
- "sudo /etc/rc.d/sshd restart",
558
- ]
559
- set_env_helper('freebsd', commands)
523
+ it "permits user environments on a windows host" do
524
+ test_host_ssh_permit_user_environment('windows')
525
+ end
526
+
527
+
528
+ it "sets user ssh environment on an OS X host" do
529
+ test_host_ssh_set_user_environment('osx')
530
+ end
531
+
532
+ it "sets user ssh environment on an ssh-based linux host" do
533
+ test_host_ssh_set_user_environment('ubuntu')
534
+ end
535
+
536
+ it "sets user ssh environment on an sshd-based linux host" do
537
+ test_host_ssh_set_user_environment('eos')
538
+ end
539
+
540
+ it "sets user ssh environment on an sles host" do
541
+ test_host_ssh_set_user_environment('sles')
542
+ end
543
+
544
+ it "sets user ssh environment on a solaris host" do
545
+ test_host_ssh_set_user_environment('solaris')
546
+ end
547
+
548
+ it "sets user ssh environment on an aix host" do
549
+ test_host_ssh_set_user_environment('aix')
550
+ end
551
+
552
+ it "sets user ssh environment on a FreeBSD host" do
553
+ test_host_ssh_set_user_environment('freebsd')
554
+ end
555
+
556
+ it "sets user ssh environment on a windows host" do
557
+ test_host_ssh_set_user_environment('windows')
560
558
  end
561
559
 
562
560
  it "skips an f5 host correctly" do
@@ -585,33 +583,27 @@ describe Beaker do
585
583
  subject.set_env(host, options.merge( opts ))
586
584
  end
587
585
 
588
- def set_env_helper(platform_name, host_specific_commands_array)
586
+ def test_host_ssh_permit_user_environment(platform_name)
587
+ test_host_ssh_calls(platform_name, :ssh_permit_user_environment)
588
+ end
589
+
590
+ def test_host_ssh_set_user_environment(platform_name)
591
+ test_host_ssh_calls(platform_name, :ssh_set_user_environment)
592
+ end
593
+
594
+ def test_host_ssh_calls(platform_name, method_call_sym)
589
595
  host = make_host('name', {
590
596
  :platform => platform_name,
591
597
  :ssh_env_file => 'ssh_env_file',
592
598
  :is_cygwin => true,
593
- } )
599
+ } )
594
600
  opts = {
595
- :env1_key => :env1_value,
596
- :env2_key => :env2_value
601
+ :env1_key => :env1_value,
602
+ :env2_key => :env2_value
597
603
  }
598
604
 
599
605
  expect( subject ).to receive( :construct_env ).and_return( opts )
600
- host_specific_commands_array.each do |command|
601
- expect( Beaker::Command ).to receive( :new ).with( command ).once
602
- end
603
-
604
- expect( Beaker::Command ).to receive( :new ).with( "mkdir -p #{Pathname.new(host[:ssh_env_file]).dirname}" ).once
605
- expect( Beaker::Command ).to receive( :new ).with( "chmod 0600 #{Pathname.new(host[:ssh_env_file]).dirname}" ).once
606
- expect( Beaker::Command ).to receive( :new ).with( "touch #{host[:ssh_env_file]}" ).once
607
- expect_any_instance_of( Class ).to receive( :extend ).and_return( double( 'class' ).as_null_object )
608
- expect( Beaker::Command ).to receive( :new ).with( "cat #{host[:ssh_env_file]}" ).once
609
- expect( host ).to receive( :add_env_var ).with( 'PATH', '$PATH' ).once
610
- opts.each_pair do |key, value|
611
- expect( host ).to receive( :add_env_var ).with( key, value ).once
612
- end
613
- expect( host ).to receive( :add_env_var ).with( 'CYGWIN', 'nodosfilewarning' ).once if platform_name =~ /windows/
614
- expect( host ).to receive( :exec ).exactly( host_specific_commands_array.length + 4 ).times
606
+ expect( host ).to receive( method_call_sym )
615
607
 
616
608
  subject.set_env(host, options.merge( opts ))
617
609
  end
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: 2.29.0
4
+ version: 2.29.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppetlabs
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-18 00:00:00.000000000 Z
11
+ date: 2015-11-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -360,6 +360,20 @@ dependencies:
360
360
  - - ! '>='
361
361
  - !ruby/object:Gem::Version
362
362
  version: '0'
363
+ - !ruby/object:Gem::Dependency
364
+ name: mime-types
365
+ requirement: !ruby/object:Gem::Requirement
366
+ requirements:
367
+ - - ~>
368
+ - !ruby/object:Gem::Version
369
+ version: '2.99'
370
+ type: :runtime
371
+ prerelease: false
372
+ version_requirements: !ruby/object:Gem::Requirement
373
+ requirements:
374
+ - - ~>
375
+ - !ruby/object:Gem::Version
376
+ version: '2.99'
363
377
  - !ruby/object:Gem::Dependency
364
378
  name: fog-google
365
379
  requirement: !ruby/object:Gem::Requirement
@@ -505,6 +519,7 @@ files:
505
519
  - acceptance/tests/base/dsl/helpers/host_helpers/upgrade_package_test.rb
506
520
  - acceptance/tests/base/dsl/install_utils/clone_git_repo_on_test.rb
507
521
  - acceptance/tests/base/dsl/structure_test.rb
522
+ - acceptance/tests/base/host_prebuilt_steps/ssh_environment_test.rb
508
523
  - acceptance/tests/base/host_test.rb
509
524
  - acceptance/tests/base/packages.rb
510
525
  - acceptance/tests/base/packages_unix.rb