beaker 4.0.0 → 4.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7d46e3ea54f2a217a78497681c57a24921de8719
4
- data.tar.gz: 175ef59e2be00d70d0238f49e8f3d49e95257e2f
3
+ metadata.gz: 2607aad1f0cfd6109c43fedd0299d4b63e4bdaf4
4
+ data.tar.gz: 98b8eba8588799c8390c3795ffc8c119435cee7e
5
5
  SHA512:
6
- metadata.gz: abc5a220b83dd595577f90140ce3b60b1daf282d77e27279f110732cc643e20d46652046be5bec9beb55aa51dec38b82928c15814a34ce78efa8460335654295
7
- data.tar.gz: ce529642242f5408f0ea4a8bc515f00f496c977854737f21f4787a04769ef02d003d1694bd818b9ae2478af5382329e4f0019f433a09bb2983b2fb4f0acfdbe8
6
+ metadata.gz: 023baf9c93434352d5d14a9529a484608f089112cac04356ac5bae33f0df69c7cdeee7168d7c2c5f61624fda1e427a726d3d0d75d343f3aa26eb3cf39b8c0cd4
7
+ data.tar.gz: 2947ce85bb0fbbfbcbe673b721c7d6809df62dba9dadfb4d70bf618f6bf264492d3f58b45eee47c7d54d45baf963fbca9977ab2b84a8af67d8c0f8e015837126
@@ -11,7 +11,18 @@ Tracking in this Changelog began for this project in version 3.25.0.
11
11
  If you're looking for changes from before this, refer to the project's
12
12
  git logs & PR history.
13
13
 
14
- # [Unreleased](https://github.com/puppetlabs/beaker/compare/4.0.0...master)
14
+ # [Unreleased](https://github.com/puppetlabs/beaker/compare/4.1.0...master)
15
+
16
+ # [4.1.0](https://github.com/puppetlabs/beaker/compare/4.0.0...4.1.0) - 2018.10.25
17
+
18
+ ### Added
19
+
20
+ - `--preserve-state` flag will preserve a given host options hash across subcommand runs(BKR-1541)
21
+
22
+ ### Changed
23
+
24
+ - Added additional tests for EL-like systems and added 'redhat' support where necessary
25
+ - Test if puppet module is installed in '/' and avoid stripping of path seperator
15
26
 
16
27
  # [4.0.0](https://github.com/puppetlabs/beaker/compare/3.37.0...4.0.0) - 2018-08-06
17
28
 
@@ -112,7 +112,19 @@ test_name "dsl::helpers::host_helpers #create_remote_file" do
112
112
  remote_filename = File.join(remote_tmpdir, "testfile.txt")
113
113
  contents = fixture_contents("simple_text_file")
114
114
 
115
- result = create_remote_file default, remote_filename, contents, { :protocol => "rsync" }
115
+ repeat_fibonacci_style_for(10) do
116
+ begin
117
+ result = create_remote_file(
118
+ default, remote_filename, contents, { :protocol => "rsync" }
119
+ ) # return of block is whether or not we're done repeating
120
+ result.success?
121
+ rescue Beaker::Host::CommandFailure => err
122
+ logger.info("Rsync threw command failure, details: ")
123
+ logger.info(" #{err}")
124
+ logger.info("continuing back-off execution")
125
+ false
126
+ end
127
+ end
116
128
 
117
129
  fails_intermittently("https://tickets.puppetlabs.com/browse/BKR-612",
118
130
  "default" => default,
@@ -1,4 +1,5 @@
1
1
  require "helpers/test_helper"
2
+ require "rsync"
2
3
 
3
4
  test_name "dsl::helpers::host_helpers #rsync_to" do
4
5
 
@@ -123,7 +124,23 @@ test_name "dsl::helpers::host_helpers #rsync_to" do
123
124
  on hosts, "mkdir -p #{remote_tmpdir}"
124
125
  remote_filename = File.join(remote_tmpdir, "testfile.txt")
125
126
 
126
- result = rsync_to hosts, local_filename, remote_tmpdir
127
+ repeat_fibonacci_style_for(10) do
128
+ begin
129
+ result = rsync_to hosts, local_filename, remote_tmpdir
130
+ return result.success? if result.is_a? Rsync::Result
131
+
132
+ result.each do |individual_result|
133
+ next if individual_result.success?
134
+ return false
135
+ end
136
+ true
137
+ rescue Beaker::Host::CommandFailure => err
138
+ logger.info("Rsync threw command failure, details: ")
139
+ logger.info(" #{err}")
140
+ logger.info("continuing back-off execution")
141
+ false
142
+ end
143
+ end
127
144
 
128
145
  hosts.each do |host|
129
146
  fails_intermittently("https://tickets.puppetlabs.com/browse/QENG-3053",
@@ -1,6 +1,22 @@
1
- Beaker maintains yard documentation, which covers the [Beaker DSL](http://www.rubydoc.info/github/puppetlabs/beaker/).
1
+ # The Beaker DSL
2
2
 
3
+ The Beaker [Domain-Specific Language (DSL)](https://en.wikipedia.org/wiki/Domain-specific_language) is a set of Ruby convenience methods provided by Beaker to make testing easier.
3
4
 
5
+ Beaker maintains [yard documentation](http://www.rubydoc.info/github/puppetlabs/beaker/) covering the DSL to help you use it. That documentation can sometimes be difficult to navigate, however, so this doc has been created to help you find your way around.
6
+
7
+ ## DSL Caveats
8
+
9
+ Note that if you're using a beaker-library, any methods provided there won't be documented here. You can refer to the [beaker-libraries listing doc](../concepts/beaker_libraries.md) for links to those projects which should include their own documentation.
10
+
11
+ Another common point of confusion about the Beaker DSL is that there is a similar set of methods that come along in Host objects themselves. You can tell these methods apart in a test by their invocation method. Host methods are Ruby instance methods on Host objects, so they'll be invoked on a Host object like so:
12
+ ```ruby
13
+ host.host_method_name(host_method_params)
14
+ ```
15
+ and they'll know by default which hosts to act on because you've provided them that through choosing which hosts to call them on. Beaker DSL methods are called in the wider context of the test itself, however, and often need to be passed the hosts you'd like them to act on:
16
+ ```ruby
17
+ on(hosts, "cowsay 'the tortoise lives in agony'")
18
+ ```
19
+ Another way you can tell them apart is their location in the codebase, & thus in the Rubydocs. Beaker DSL methods live under the [Beaker::DSL module](https://www.rubydoc.info/github/puppetlabs/beaker/Beaker/DSL), whereas Host methods are all included in the [Beaker::Host object itself](https://www.rubydoc.info/github/puppetlabs/beaker/Beaker/Host). Follow that link to the Host Rubydoc and checkout the Instance Method Summary to see a listing of Host methods. Note that they won't be listed here though.
4
20
 
5
21
  ## Assertions
6
22
 
@@ -12,14 +28,7 @@ To be used for confirming the result of a test is as expected. Beaker include a
12
28
 
13
29
  ## Helpers
14
30
 
15
- DSL methods designed to help you interact with installed projects (like facter and puppet), with hosts (like running arbitrary commands on hosts) or interacting with the web (checking is a given URL is alive or not).
16
-
17
- ### Facter
18
-
19
- DSL methods for interacting with facter. As of Beaker 4.0, moved to `beaker-puppet`. See [upgrade_from_3_to_4.md](upgrade_from_3_to_4.md).
20
-
21
- * [fact_on](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/Helpers/FacterHelpers#fact_on-instance_method)
22
- * [fact](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/Helpers/FacterHelpers#fact-instance_method)
31
+ DSL methods designed to help you interact with hosts (like running arbitrary commands on them) or interacting with the web (checking is a given URL is alive or not).
23
32
 
24
33
  ### Host
25
34
 
@@ -49,48 +58,6 @@ DSL methods for host manipulation.
49
58
  * [create_tmpdir_on](http://www.rubydoc.info/github/puppetlabs/beaker/Beaker/DSL/Helpers/HostHelpers#create_tmpdir_on-instance_method) As of Beaker 4.0, moved to `beaker-puppet`. See [upgrade_from_3_to_4.md](upgrade_from_3_to_4.md).
50
59
  * [echo_on](http://www.rubydoc.info/github/puppetlabs/beaker/Beaker/DSL/Helpers/HostHelpers#echo_on-instance_method)
51
60
 
52
- ### Puppet
53
-
54
- DSL methods for interacting with puppet. As of Beaker 4.0, moved to `beaker-puppet`. See [upgrade_from_3_to_4.md](upgrade_from_3_to_4.md).
55
-
56
- * [puppet_user](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/Helpers/PuppetHelpers#puppet_user-instance_method)
57
- * [puppet_group](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/Helpers/PuppetHelpers#puppet_group-instance_method)
58
- * [with_puppet_running_on](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/Helpers/PuppetHelpers#with_puppet_running_on-instance_method)
59
- * [with_puppet_running](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/Helpers/PuppetHelpers#with_puppet_running-instance_method)
60
- * [restore_puppet_conf_from_backup](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/Helpers/PuppetHelpers#restore_puppet_conf_from_backup-instance_method)
61
- * [start_puppet_from_source_on!](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/Helpers/PuppetHelpers#start_puppet_from_source_on!-instance_method)
62
- * [stop_puppet_from_source_on](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/Helpers/PuppetHelpers#stop_puppet_from_source_on-instance_method)
63
- * [dump_puppet_log](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/Helpers/PuppetHelpers#dump_puppet_log-instance_method)
64
- * [lay_down_new_puppet_conf](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/Helpers/PuppetHelpers#lay_down_new_puppet_conf-instance_method)
65
- * [puppet_conf_for](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/Helpers/PuppetHelpers#puppet_conf_for-instance_method)
66
- * [bounce_service](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/Helpers/PuppetHelpers#bounce_service-instance_method)
67
- * [apply_manifest_on](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/Helpers/PuppetHelpers#apply_manifest_on-instance_method)
68
- * [apply_manifest](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/Helpers/PuppetHelpers#apply_manifest-instance_method)
69
- * [run_agent_on](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/Helpers/PuppetHelpers#run_agent_on-instance_method)
70
- * [stub_hosts_on](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/Helpers/PuppetHelpers#stub_hosts_on-instance_method)
71
- * [with_host_stubbed_on](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/Helpers/PuppetHelpers#with_host_stubbed_on-instance_method)
72
- * [stub_hosts](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/Helpers/PuppetHelpers#stub_hosts-instance_method)
73
- * [stub_forge_on](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/Helpers/PuppetHelpers#stub_forge_on-instance_method)
74
- * [with_forge_stubbed_on](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/Helpers/PuppetHelpers#with_forge_stubbed_on-instance_method)
75
- * [with_forge_stubbed](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/Helpers/PuppetHelpers#with_forge_stubbed-instance_method)
76
- * [stub_forge](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/Helpers/PuppetHelpers#stub_forge-instance_method)
77
- * [sleep_until_puppetdb_started](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/Helpers/PuppetHelpers#sleep_until_puppetdb_started-instance_method)
78
- * [sleep_until_puppetserver_started](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/Helpers/PuppetHelpers#sleep_until_puppetserver_started-instance_method)
79
- * [sleep_until_nc_started](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/Helpers/PuppetHelpers#sleep_until_nc_started-instance_method)
80
- * [stop_agent_on](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/Helpers/PuppetHelpers#stop_agent_on-instance_method)
81
- * [stop_agent](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/Helpers/PuppetHelpers#stop_agent-instance_method)
82
- * [wait_for_host_in_dashboard](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/Helpers/PuppetHelpers#wait_for_host_in_dashboard-instance_method)
83
- * [sign_certificate_for](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/Helpers/PuppetHelpers#sign_certificate_for-instance_method)
84
- * [sign_certificate](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/Helpers/PuppetHelpers#sign_certificate-instance_method)
85
- * [create_tmpdir_for_user](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/Helpers/PuppetHelpers#create_tmpdir_for_user-instance_method)
86
-
87
- ### TK
88
-
89
- Convenience methods for TrapperKeeper configuration. As of Beaker 4.0, moved to `beaker-puppet`. See [upgrade_from_3_to_4.md](upgrade_from_3_to_4.md).
90
-
91
- * [modify_tk_config](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/Helpers/TkHelpers#modify_tk_config-instance_method)
92
- * [read_tk_config_string](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/Helpers/TkHelpers#read_tk_config_string-instance_method)
93
-
94
61
  ### Web
95
62
 
96
63
  Helpers for web actions.
@@ -111,139 +78,6 @@ DSL methods for setting information about the current test.
111
78
  * [set_current_test_filename](http://www.rubydoc.info/github/puppetlabs/beaker/Beaker/DSL/Helpers/TestHelpers#set_current_test_filename-instance_method)
112
79
  * [set_current_step_name](http://www.rubydoc.info/github/puppetlabs/beaker/Beaker/DSL/Helpers/TestHelpers#set_current_step_name-instance_method)
113
80
 
114
- ## Install Utilities
115
-
116
- DSL methods for installing PuppetLabs projects. As of Beaker 4.0, moved to `beaker-puppet`. See [upgrade_from_3_to_4.md](upgrade_from_3_to_4.md).
117
-
118
- ### EZBake
119
-
120
- EZBake convenience methods. As of Beaker 4.0, moved to `beaker-puppet`. See [upgrade_from_3_to_4.md](upgrade_from_3_to_4.md).
121
-
122
- * [install_from_ezbake](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/EzbakeUtils#install_from_ezbake-instance_method)
123
- * [install_termini_from_ezbake](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/EzbakeUtils#install_termini_from_ezbake-instance_method)
124
- * [ezbake_dev_build](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/EzbakeUtils#ezbake_dev_build-instance_method)
125
- * [ezbake_validate_support](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/EzbakeUtils#ezbake_validate_support-instance_method)
126
- * [install_ezbake_tarball_on_host](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/EzbakeUtils#install_ezbake_tarball_on_host-instance_method)
127
- * [ezbake_tools_available?](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/EzbakeUtils#ezbake_tools_available?-instance_method)
128
- * [ezbake_config](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/EzbakeUtils#ezbake_config-instance_method)
129
- * [ezbake_lein_prefix](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/EzbakeUtils#ezbake_lein_prefix-instance_method)
130
- * [ezbake_stage](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/EzbakeUtils#ezbake_stage-instance_method)
131
- * [ezbake_local_cmd](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/EzbakeUtils#ezbake_local_cmd-instance_method)
132
- * [ezbake_install_name](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/EzbakeUtils#ezbake_install_name-instance_method)
133
- * [ezbake_install_dir](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/EzbakeUtils#ezbake_install_dir-instance_method)
134
- * [ezbake_installsh](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/EzbakeUtils#ezbake_installsh-instance_method)
135
- * [conditionally_clone](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/EzbakeUtils#conditionally_clone-instance_method)
136
-
137
- ### AIO
138
-
139
- Agent-only installation utilities. As of Beaker 4.0, moved to `beaker-puppet`. See [upgrade_from_3_to_4.md](upgrade_from_3_to_4.md).
140
-
141
- * [add_platform_aio_defaults](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/AIODefaults#add_platform_aio_defaults-instance_method)
142
- * [add_aio_defaults_on](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/AIODefaults#add_aio_defaults_on-instance_method)
143
- * [remove_platform_aio_defaults](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/AIODefaults#remove_platform_aio_defaults-instance_method)
144
- * [remove_aio_defaults_on](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/AIODefaults#remove_aio_defaults_on-instance_method)
145
-
146
- ### FOSS
147
-
148
- DSL methods for installing FOSS PuppetLabs projects. As of Beaker 4.0, moved to `beaker-puppet`. See [upgrade_from_3_to_4.md](upgrade_from_3_to_4.md).
149
-
150
- * [add_platform_foss_defaults](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/FOSSDefaults#add_platform_foss_defaults-instance_method)
151
- * [add_foss_defaults_on](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/FOSSDefaults#add_foss_defaults_on-instance_method)
152
- * [remove_platform_foss_defaults](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/FOSSDefaults#remove_platform_foss_defaults-instance_method)
153
- * [remove_foss_defaults_on](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/FOSSDefaults#remove_foss_defaults_on-instance_method)
154
- * [lookup_in_env](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/FOSSUtils#lookup_in_env-instance_method)
155
- * [build_git_url](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/FOSSUtils#build_git_url-instance_method)
156
- * [extract_repo_info_from](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/FOSSUtils#extract_repo_info_from-instance_method)
157
- * [order_packages](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/FOSSUtils#order_packages-instance_method)
158
- * [find_git_repo_versions](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/FOSSUtils#find_git_repo_versions-instance_method)
159
- * [clone_git_repo_on](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/FOSSUtils#clone_git_repo_on-instance_method)
160
- * [install_from_git_on](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/FOSSUtils#install_from_git_on-instance_method)
161
- * [install_puppet](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/FOSSUtils#install_puppet-instance_method)
162
- * [install_puppet_on](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/FOSSUtils#install_puppet_on-instance_method)
163
- * [install_puppet_agent_on](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/FOSSUtils#install_puppet_agent_on-instance_method)
164
- * [configure_puppet](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/FOSSUtils#configure_puppet-instance_method)
165
- * [configure_puppet_on](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/FOSSUtils#configure_puppet_on-instance_method)
166
- * [install_puppet_from_rpm_on](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/FOSSUtils#install_puppet_from_rpm_on-instance_method)
167
- * [install_puppet_from_deb_on](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/FOSSUtils#install_puppet_from_deb_on-instance_method)
168
- * [install_puppet_from_msi_on](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/FOSSUtils#install_puppet_from_msi_on-instance_method)
169
- * [compute_puppet_msi_name](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/FOSSUtils#compute_puppet_msi_name-instance_method)
170
- * [install_puppet_agent_from_msi_on](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/FOSSUtils#install_puppet_agent_from_msi_on-instance_method)
171
- * [install_a_puppet_msi_on](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/FOSSUtils#install_a_puppet_msi_on-instance_method)
172
- * [install_puppet_from_freebsd_ports_on](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/FOSSUtils#install_puppet_from_freebsd_ports_on-instance_method)
173
- * [install_puppet_from_dmg_on](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/FOSSUtils#install_puppet_from_dmg_on-instance_method)
174
- * [install_puppet_agent_from_dmg_on](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/FOSSUtils#install_puppet_agent_from_dmg_on-instance_method)
175
- * [install_puppet_from_openbsd_packages_on](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/FOSSUtils#install_puppet_from_openbsd_packages_on-instance_method)
176
- * [install_puppet_from_gem_on](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/FOSSUtils#install_puppet_from_gem_on-instance_method)
177
- * [install_puppetlabs_release_repo_on](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/FOSSUtils#install_puppetlabs_release_repo_on-instance_method)
178
- * [install_puppetlabs_dev_repo](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/FOSSUtils#install_puppetlabs_dev_repo-instance_method)
179
- * [install_packages_from_local_dev_repo](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/FOSSUtils#install_packages_from_local_dev_repo-instance_method)
180
- * [install_puppet_agent_dev_repo_on](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/FOSSUtils#install_puppet_agent_dev_repo_on-instance_method)
181
- * [install_puppet_agent_pe_promoted_repo_on](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/FOSSUtils#install_puppet_agent_pe_promoted_repo_on-instance_method)
182
- * [install_cert_on_windows](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/FOSSUtils#install_cert_on_windows-instance_method)
183
-
184
- ### PE
185
-
186
- DSL methods for installing Puppet Enterprise. As of Beaker 4.0, moved to `beaker-pe`. See [upgrade_from_3_to_4.md](upgrade_from_3_to_4.md).
187
-
188
- * [add_platform_pe_defaults](http://www.rubydoc.info/github/puppetlabs/beaker-pe/Beaker/DSL/InstallUtils/PeDefaults#add_platform_pe_defaults-instance_method)
189
- * [add_pe_defaults_on](http://www.rubydoc.info/github/puppetlabs/beaker-pe/Beaker/DSL/InstallUtils/PeDefaults#add_pe_defaults_on-instance_method)
190
- * [remove_platform_pe_defaults](http://www.rubydoc.info/github/puppetlabs/beaker-pe/Beaker/DSL/InstallUtils/PeDefaults#remove_platform_pe_defaults-instance_method)
191
- * [remove_pe_defaults_on](http://www.rubydoc.info/github/puppetlabs/beaker-pe/Beaker/DSL/InstallUtils/PeDefaults#remove_pe_defaults_on-instance_method)
192
- * [sorted_hosts](http://www.rubydoc.info/github/puppetlabs/beaker-pe/Beaker/DSL/InstallUtils/PeUtils#sorted_hosts-instance_method)
193
- * [installer_cmd](http://www.rubydoc.info/github/puppetlabs/beaker-pe/Beaker/DSL/InstallUtils/PeUtils#installer_cmd-instance_method)
194
- * [fetch_pe_on_mac](http://www.rubydoc.info/github/puppetlabs/beaker-pe/Beaker/DSL/InstallUtils/PeUtils#fetch_pe_on_mac-instance_method)
195
- * [fetch_pe_on_windows](http://www.rubydoc.info/github/puppetlabs/beaker-pe/Beaker/DSL/InstallUtils/PeUtils#fetch_pe_on_windows-instance_method)
196
- * [fetch_pe_on_unix](http://www.rubydoc.info/github/puppetlabs/beaker-pe/Beaker/DSL/InstallUtils/PeUtils#fetch_pe_on_unix-instance_method)
197
- * [fetch_pe](http://www.rubydoc.info/github/puppetlabs/beaker-pe/Beaker/DSL/InstallUtils/PeUtils#fetch_pe-instance_method)
198
- * [deploy_frictionless_to_master](http://www.rubydoc.info/github/puppetlabs/beaker-pe/Beaker/DSL/InstallUtils/PeUtils#deploy_frictionless_to_master-instance_method)
199
- * [do_install](http://www.rubydoc.info/github/puppetlabs/beaker-pe/Beaker/DSL/InstallUtils/PeUtils#do_install-instance_method)
200
- * [create_agent_specified_arrays](http://www.rubydoc.info/github/puppetlabs/beaker-pe/Beaker/DSL/InstallUtils/PeUtils#create_agent_specified_arrays-instance_method)
201
- * [setup_defaults_and_config_helper_on](http://www.rubydoc.info/github/puppetlabs/beaker-pe/Beaker/DSL/InstallUtils/PeUtils#setup_defaults_and_config_helper_on-instance_method)
202
- * [install_pe](http://www.rubydoc.info/github/puppetlabs/beaker-pe/Beaker/DSL/InstallUtils/PeUtils#install_pe-instance_method)
203
- * [install_pe_on](http://www.rubydoc.info/github/puppetlabs/beaker-pe/Beaker/DSL/InstallUtils/PeUtils#install_pe_on-instance_method)
204
- * [upgrade_pe](http://www.rubydoc.info/github/puppetlabs/beaker-pe/Beaker/DSL/InstallUtils/PeUtils#upgrade_pe-instance_method)
205
- * [upgrade_pe_on](http://www.rubydoc.info/github/puppetlabs/beaker-pe/Beaker/DSL/InstallUtils/PeUtils#upgrade_pe_on-instance_method)
206
- * [higgs_installer_cmd](http://www.rubydoc.info/github/puppetlabs/beaker-pe/Beaker/DSL/InstallUtils/PeUtils#higgs_installer_cmd-instance_method)
207
- * [do_higgs_install](http://www.rubydoc.info/github/puppetlabs/beaker-pe/Beaker/DSL/InstallUtils/PeUtils#do_higgs_install-instance_method)
208
- * [install_higgs](http://www.rubydoc.info/github/puppetlabs/beaker-pe/Beaker/DSL/InstallUtils/PeUtils#install_higgs-instance_method)
209
- * [fetch_and_push_pe](http://www.rubydoc.info/github/puppetlabs/beaker-pe/Beaker/DSL/InstallUtils/PeUtils#fetch_and_push_pe-instance_method)
210
-
211
- ### Puppet
212
-
213
- DSL methods that can be used for both FOSS/PE puppet installations. As of Beaker 4.0, moved to `beaker-puppet`. See [upgrade_from_3_to_4.md](upgrade_from_3_to_4.md).
214
-
215
- * [normalize_type](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/PuppetUtils#normalize_type-instance_method)
216
- * [construct_puppet_path](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/PuppetUtils#construct_puppet_path-instance_method)
217
- * [add_puppet_paths_on](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/PuppetUtils#add_puppet_paths_on-instance_method)
218
- * [remove_puppet_paths_on](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/PuppetUtils#remove_puppet_paths_on-instance_method)
219
- * [configure_defaults_on](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/PuppetUtils#configure_defaults_on-instance_method)
220
- * [configure_type_defaults_on](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/PuppetUtils#configure_type_defaults_on-instance_method)
221
- * [remove_defaults_on](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/PuppetUtils#remove_defaults_on-instance_method)
222
-
223
- ### Windows
224
-
225
- DSL convenience methods for installing packages on Windows SUTs. As of Beaker 4.0, moved to `beaker-puppet`. See [upgrade_from_3_to_4.md](upgrade_from_3_to_4.md).
226
-
227
- * [get_temp_path](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/WindowsUtils#get_temp_path-instance_method)
228
- * [msi_install_script](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/WindowsUtils#msi_install_script-instance_method)
229
- * [create_install_msi_batch_on](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/WindowsUtils#create_install_msi_batch_on-instance_method)
230
- * [install_msi_on](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/WindowsUtils#install_msi_on-instance_method)
231
-
232
- ### Module
233
-
234
- DSL methods for installing puppet modules. As of Beaker 4.0, moved to `beaker-puppet`. See [upgrade_from_3_to_4.md](upgrade_from_3_to_4.md).
235
-
236
- * [install_dev_puppet_module_on](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/ModuleUtils#install_dev_puppet_module_on-instance_method)
237
- * [install_dev_puppet_module](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/ModuleUtils#install_dev_puppet_module-instance_method)
238
- * [install_puppet_module_via_pmt_on](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/ModuleUtils#install_puppet_module_via_pmt_on-instance_method)
239
- * [install_puppet_module_via_pmt](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/ModuleUtils#install_puppet_module_via_pmt-instance_method)
240
- * [copy_module_to](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/ModuleUtils#copy_module_to-instance_method)
241
- * [parse_for_moduleroot](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/ModuleUtils#parse_for_moduleroot-instance_method)
242
- * [parse_for_modulename](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/ModuleUtils#parse_for_modulename-instance_method)
243
- * [get_module_name](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/ModuleUtils#get_module_name-instance_method)
244
- * [split_author_modulename](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/ModuleUtils#split_author_modulename-instance_method)
245
- * [build_ignore_list](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/InstallUtils/ModuleUtils#build_ignore_list-instance_method)
246
-
247
81
  ## Outcomes
248
82
 
249
83
  Methods that indicate how the given test completed (fail, pass, skip or pending).
@@ -294,13 +128,3 @@ DSL methods that describe and define how a test is executed.
294
128
  * [tag](http://www.rubydoc.info/github/puppetlabs/beaker/Beaker/DSL/Structure#tag-instance_method)
295
129
  * [select_hosts](http://www.rubydoc.info/github/puppetlabs/beaker/Beaker/DSL/Structure#select_hosts-instance_method)
296
130
  * [inspect_host](http://www.rubydoc.info/github/puppetlabs/beaker/Beaker/DSL/Structure#inspect_host-instance_method)
297
-
298
- ## Wrappers
299
-
300
- Wrappers around commonly used commands. As of Beaker 4.0, moved to `beaker-puppet`. See [upgrade_from_3_to_4.md](upgrade_from_3_to_4.md).
301
-
302
- * [facter](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/Wrappers#facter-instance_method)
303
- * [cfacter](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/Wrappers#cfacter-instance_method)
304
- * [hiera](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/Wrappers#hiera-instance_method)
305
- * [puppet](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/Wrappers#puppet-instance_method)
306
- * [powershell](http://www.rubydoc.info/github/puppetlabs/beaker-puppet/Beaker/DSL/Wrappers#powershell-instance_method)
@@ -1,6 +1,6 @@
1
1
  # How To Upgrade from 3.y to 4.0
2
2
 
3
- This is a guide detailing all the issues to be aware of, and to help people make any changes that you might need to move from beaker 2.y to 3.0. To test out beaker 4.0.0, we recommend implementing the strategy outlined [here](test_arbitrary_beaker_versions.md) to ensure this new major release does not break your existing testing.
3
+ This is a guide detailing all the issues to be aware of, and to help people make any changes that you might need to move from beaker 3.y to 4.0. To test out beaker 4.0.0, we recommend implementing the strategy outlined [here](test_arbitrary_beaker_versions.md) to ensure this new major release does not break your existing testing.
4
4
 
5
5
  ## PE Dependency
6
6
 
@@ -33,15 +33,15 @@ Beaker will automatically load the appropriate hypervisors for any given hosts f
33
33
 
34
34
  The following hypervisor libraries were removed in 4.0:
35
35
 
36
- - [beaker-abs](github.com/puppetlabs/beaker-abs)
37
- - [beaker-aws](github.com/puppetlabs/beaker-aws)
38
- - [beaker-docker](github.com/puppetlabs/beaker-docker)
39
- - [beaker-google](github.com/puppetlabs/beaker-google)
40
- - [beaker-openstack](github.com/puppetlabs/beaker-openstack)
41
- - [beaker-vagrant](github.com/puppetlabs/beaker-vagrant)
42
- - [beaker-vcloud](github.com/puppetlabs/beaker-vcloud)
43
- - [beaker-vmpooler](github.com/puppetlabs/beaker-vmpooler)
44
- - [beaker-vmware](github.com/puppetlabs/beaker-vmware)
36
+ - [beaker-abs](https://github.com/puppetlabs/beaker-abs)
37
+ - [beaker-aws](https://github.com/puppetlabs/beaker-aws)
38
+ - [beaker-docker](https://github.com/puppetlabs/beaker-docker)
39
+ - [beaker-google](https://github.com/puppetlabs/beaker-google)
40
+ - [beaker-openstack](https://github.com/puppetlabs/beaker-openstack)
41
+ - [beaker-vagrant](https://github.com/puppetlabs/beaker-vagrant)
42
+ - [beaker-vcloud](https://github.com/puppetlabs/beaker-vcloud)
43
+ - [beaker-vmpooler](https://github.com/puppetlabs/beaker-vmpooler)
44
+ - [beaker-vmware](https://github.com/puppetlabs/beaker-vmware)
45
45
 
46
46
  For acceptance testing, beaker-vmpooler, beaker-aws, and beaker-abs have been retained as development dependencies. These will be removed as the CI pipelines is upgraded, so *do not rely on them being there for your project*.
47
47
 
@@ -139,7 +139,7 @@ module Beaker
139
139
  return !version_is_less(version, '4.0') if version && !version.empty?
140
140
  end
141
141
  return true if host[:roles] && host[:roles].include?('aio')
142
- return true if host[:type] && !!(host[:type] =~ /(\A|-)(aio|git)(\Z|-)/ )
142
+ return true if host[:type] && !!(host[:type] =~ /(\A|-)aio(\Z|-)/ )
143
143
  false
144
144
  end
145
145
 
@@ -452,7 +452,7 @@ module Beaker
452
452
  require 'pathname'
453
453
  required_dirs.each do |dir|
454
454
  dir_path = Pathname.new(dir)
455
- if dir_path.absolute?
455
+ if dir_path.absolute? and (File.dirname(File.absolute_path(source)).to_s != '/')
456
456
  mkdir_p(File.join(target, dir.gsub(/#{Regexp.escape(File.dirname(File.absolute_path(source)))}/, '')))
457
457
  else
458
458
  mkdir_p( File.join(target, dir) )
@@ -466,7 +466,7 @@ module Beaker
466
466
  next if File.directory?(s)
467
467
 
468
468
  s_path = Pathname.new(s)
469
- if s_path.absolute?
469
+ if s_path.absolute? and (File.dirname(File.absolute_path(source)).to_s != '/')
470
470
  file_path = File.join(target, File.dirname(s).gsub(/#{Regexp.escape(File.dirname(File.absolute_path(source)))}/,''))
471
471
  else
472
472
  file_path = File.join(target, File.dirname(s))
@@ -80,7 +80,7 @@ module Unix::File
80
80
  # @return [String] Path to package config dir
81
81
  def package_config_dir
82
82
  case self['platform']
83
- when /fedora|el-|centos/
83
+ when /fedora|el-|redhat|centos/
84
84
  '/etc/yum.repos.d/'
85
85
  when /sles/
86
86
  '/etc/zypp/repos.d/'
@@ -105,8 +105,9 @@ module Unix::File
105
105
  repo_filename = "pl-%s-%s-" % [ package_name, build_version ]
106
106
 
107
107
  case variant
108
- when /fedora|el|centos|cisco_nexus|cisco_ios_xr|sles/
109
- variant = 'el' if variant == 'centos'
108
+ when /fedora|el|redhat|centos|cisco_nexus|cisco_ios_xr|sles/
109
+ variant = 'el' if ['centos', 'redhat'].include?(variant)
110
+
110
111
  if variant == 'cisco_nexus'
111
112
  variant = 'cisco-wrlinux'
112
113
  version = '5'
@@ -144,7 +145,7 @@ module Unix::File
144
145
  # @return [String] Type of repo (rpm|deb)
145
146
  def repo_type
146
147
  case self['platform']
147
- when /fedora|el-|centos|sles/
148
+ when /fedora|el-|redhat|centos|sles/
148
149
  'rpm'
149
150
  when /debian|ubuntu|cumulus|huaweios/
150
151
  'deb'
@@ -39,7 +39,7 @@ module Unix::Pkg
39
39
  when /el-4/
40
40
  @logger.debug("Package query not supported on rhel4")
41
41
  return false
42
- when /cisco|fedora|centos|eos|el-/
42
+ when /cisco|fedora|centos|redhat|eos|el-/
43
43
  result = execute("rpm -q #{name}", opts) { |result| result }
44
44
  when /ubuntu|debian|cumulus|huaweios/
45
45
  result = execute("dpkg -s #{name}", opts) { |result| result }
@@ -82,7 +82,7 @@ module Unix::Pkg
82
82
  name = "#{name}-#{version}"
83
83
  end
84
84
  execute("dnf -y #{cmdline_args} install #{name}", opts)
85
- when /cisco|fedora|centos|eos|el-/
85
+ when /cisco|fedora|centos|redhat|eos|el-/
86
86
  if version
87
87
  name = "#{name}-#{version}"
88
88
  end
@@ -170,7 +170,7 @@ module Unix::Pkg
170
170
  @logger.debug("Package uninstallation not supported on rhel4")
171
171
  when /edora-(2[2-9])/
172
172
  execute("dnf -y #{cmdline_args} remove #{name}", opts)
173
- when /cisco|fedora|centos|eos|el-/
173
+ when /cisco|fedora|centos|redhat|eos|el-/
174
174
  execute("yum -y #{cmdline_args} remove #{name}", opts)
175
175
  when /ubuntu|debian|cumulus|huaweios/
176
176
  execute("apt-get purge #{cmdline_args} -y #{name}", opts)
@@ -200,7 +200,7 @@ module Unix::Pkg
200
200
  @logger.debug("Package upgrade is not supported on rhel4")
201
201
  when /fedora-(2[2-9])/
202
202
  execute("dnf -y #{cmdline_args} update #{name}", opts)
203
- when /cisco|fedora|centos|eos|el-/
203
+ when /cisco|fedora|centos|redhat|eos|el-/
204
204
  execute("yum -y #{cmdline_args} update #{name}", opts)
205
205
  when /ubuntu|debian|cumulus|huaweios/
206
206
  update_apt_if_needed
@@ -285,7 +285,7 @@ module Unix::Pkg
285
285
  case self['platform']
286
286
  when /el-4/
287
287
  @logger.debug("Package repo deploy is not supported on rhel4")
288
- when /fedora|centos|eos|el-/
288
+ when /fedora|centos|redhat|eos|el-/
289
289
  deploy_yum_repo(path, name, version)
290
290
  when /ubuntu|debian|cumulus|huaweios/
291
291
  deploy_apt_repo(path, name, version)
@@ -451,8 +451,8 @@ module Unix::Pkg
451
451
 
452
452
  variant, version, arch, codename = self['platform'].to_array
453
453
  case variant
454
- when /^(fedora|el|centos|sles)$/
455
- variant = ((variant == 'centos') ? 'el' : variant)
454
+ when /^(fedora|el|centos|redhat|sles)$/
455
+ variant = ((['centos', 'redhat'].include?(variant)) ? 'el' : variant)
456
456
  release_file = "/repos/#{variant}/#{version}/#{puppet_collection}/#{arch}/puppet-agent-*.rpm"
457
457
  download_file = "puppet-agent-#{variant}-#{version}-#{arch}.tar.gz"
458
458
  when /^(debian|ubuntu|cumulus)$/
@@ -509,7 +509,7 @@ module Unix::Pkg
509
509
  def install_local_package(onhost_package_file, onhost_copy_dir = nil)
510
510
  variant, version, arch, codename = self['platform'].to_array
511
511
  case variant
512
- when /^(fedora|el|centos)$/
512
+ when /^(fedora|el|redhat|centos)$/
513
513
  command_name = 'yum'
514
514
  command_name = 'dnf 'if variant == 'fedora' && version > 21 && version <= 29
515
515
  execute("#{command_name} --nogpgcheck localinstall -y #{onhost_package_file}")
@@ -539,7 +539,7 @@ module Unix::Pkg
539
539
  def uncompress_local_tarball(onhost_tar_file, onhost_base_dir, download_file)
540
540
  variant, version, arch, codename = self['platform'].to_array
541
541
  case variant
542
- when /^(fedora|el|centos|sles|debian|ubuntu|cumulus)$/
542
+ when /^(fedora|el|centos|redhat|sles|debian|ubuntu|cumulus)$/
543
543
  execute("tar -zxvf #{onhost_tar_file} -C #{onhost_base_dir}")
544
544
  when /^solaris$/
545
545
  # uncompress PE puppet-agent tarball
@@ -561,30 +561,31 @@ module Beaker
561
561
 
562
562
  block_on host do |host|
563
563
  skip_msg = host.skip_set_env?
564
- if skip_msg.nil?
565
- env = construct_env(host, opts)
566
- logger.debug("setting local environment on #{host.name}")
567
- if host['platform'] =~ /windows/ and host.is_cygwin?
568
- env['CYGWIN'] = 'nodosfilewarning'
569
- end
570
- host.ssh_permit_user_environment
571
- host.ssh_set_user_environment(env)
572
- else
573
- logger.debug(skip_msg)
564
+ unless skip_msg.nil?
565
+ logger.debug( skip_msg )
566
+ next
574
567
  end
575
568
 
576
- if skip_msg.nil?
577
- #close the host to re-establish the connection with the new sshd settings
578
- host.close
569
+ env = construct_env(host, opts)
579
570
 
580
- # print out the working env
581
- if host.is_powershell?
582
- host.exec(Command.new("SET"))
583
- else
584
- host.exec(Command.new("cat #{host[:ssh_env_file]}"))
585
- end
571
+ logger.debug("setting local environment on #{host.name}")
572
+
573
+ if host['platform'] =~ /windows/ && host.is_cygwin?
574
+ env['CYGWIN'] = 'nodosfilewarning'
586
575
  end
587
576
 
577
+ host.ssh_permit_user_environment
578
+ host.ssh_set_user_environment(env)
579
+
580
+ #close the host to re-establish the connection with the new sshd settings
581
+ host.close
582
+
583
+ # print out the working env
584
+ if host.is_powershell?
585
+ host.exec(Command.new("SET"))
586
+ else
587
+ host.exec(Command.new("cat #{host[:ssh_env_file]}"))
588
+ end
588
589
  end
589
590
  end
590
591
 
@@ -61,6 +61,14 @@ module Beaker
61
61
  @cmd_options[:pre_cleanup] = value
62
62
  end
63
63
 
64
+ opts.on '--preserve-state',
65
+ 'Preserve the state of the host vm hash for a beaker exec run',
66
+ 'This adds any additional host settings that are defined',
67
+ 'during a beaker subcommand run to .beaker/subcommand_options.yaml,',
68
+ 'allowing us to preserve state across beaker subcommand runs.' do |bool|
69
+ @cmd_options[:preserve_state] = bool
70
+ end
71
+
64
72
  opts.on '--[no-]provision',
65
73
  'Do not provision vm images before testing',
66
74
  '(default: true)' do |bool|
@@ -50,7 +50,7 @@ module Beaker
50
50
  @logger.perf_output("Enabling aggressive sysstat polling")
51
51
  if host['platform'] =~ /debian|ubuntu/
52
52
  host.exec(Command.new('sed -i s/5-55\\\/10/*/ /etc/cron.d/sysstat'))
53
- elsif host['platform'] =~ /centos|el|fedora|oracle|redhats|scientific/
53
+ elsif host['platform'] =~ /centos|el|fedora|oracle|redhat|scientific/
54
54
  host.exec(Command.new('sed -i s/*\\\/10/*/ /etc/cron.d/sysstat'))
55
55
  end
56
56
  end
@@ -3,7 +3,7 @@ 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 = /^(huaweios|cisco_nexus|cisco_ios_xr|(free|open)bsd|osx|centos|fedora|debian|oracle|redhat|scientific|sles|ubuntu|windows|solaris|aix|archlinux|el|eos|cumulus|f5|netscaler)\-.+\-.+$/
6
+ PLATFORMS = /^(alpine|huaweios|cisco_nexus|cisco_ios_xr|(free|open)bsd|osx|centos|fedora|debian|oracle|redhat|scientific|sles|ubuntu|windows|solaris|aix|archlinux|el|eos|cumulus|f5|netscaler)\-.+\-.+$/
7
7
  # Platform version numbers vs. codenames conversion hash
8
8
  PLATFORM_VERSION_CODES =
9
9
  { :debian => { "stretch" => "9",
@@ -30,6 +30,7 @@ module Beaker
30
30
  class_option :'pre-cleanup', :type => :string, :group => 'Beaker run'
31
31
  class_option :'provision', :type => :boolean, :group => 'Beaker run'
32
32
  class_option :'preserve-hosts', :type => :string, :group => 'Beaker run'
33
+ class_option :'preserve-state', :type => :boolean, :group => 'Beaker run'
33
34
  class_option :'root-keys', :type => :boolean, :group => 'Beaker run'
34
35
  class_option :keyfile, :type => :string, :group => 'Beaker run'
35
36
  class_option :timeout, :type => :string, :group => 'Beaker run'
@@ -202,6 +203,15 @@ module Beaker
202
203
  end
203
204
 
204
205
  @cli.execute!
206
+
207
+ if options['preserve-state']
208
+ @cli.logger.notify 'updating HOSTS key in subcommand_options'
209
+ hosts = SubcommandUtil.sanitize_options_for_save(@cli.combined_instance_and_options_hosts)
210
+ options_storage = YAML::Store.new(SubcommandUtil::SUBCOMMAND_OPTIONS)
211
+ options_storage.transaction do
212
+ options_storage['HOSTS'] = hosts
213
+ end
214
+ end
205
215
  end
206
216
 
207
217
  desc "destroy", "Destroys the provisioned VMs"
@@ -1,5 +1,5 @@
1
1
  module Beaker
2
2
  module Version
3
- STRING = '4.0.0'
3
+ STRING = '4.1.0'
4
4
  end
5
5
  end
@@ -37,9 +37,11 @@ module Beaker
37
37
 
38
38
  describe '#repo_type' do
39
39
 
40
- it 'returns correctly for el-based platforms' do
41
- @platform = 'centos-6-x86_64'
42
- expect( instance.repo_type ).to be === 'rpm'
40
+ ['centos','redhat'].each do |platform|
41
+ it "returns correctly for platform '#{platform}'" do
42
+ @platform = "#{platform}-5-x86_64"
43
+ expect( instance.repo_type ).to be === 'rpm'
44
+ end
43
45
  end
44
46
 
45
47
  it 'returns correctly for debian-based platforms' do
@@ -57,9 +59,11 @@ module Beaker
57
59
 
58
60
  describe '#package_config_dir' do
59
61
 
60
- it 'returns correctly for el-based platforms' do
61
- @platform = 'centos-6-x86_64'
62
- expect( instance.package_config_dir ).to be === '/etc/yum.repos.d/'
62
+ ['centos','redhat'].each do |platform|
63
+ it "returns correctly for platform '#{platform}'" do
64
+ @platform = "#{platform}-5-x86_64"
65
+ expect( instance.package_config_dir ).to be === '/etc/yum.repos.d/'
66
+ end
63
67
  end
64
68
 
65
69
  it 'returns correctly for debian-based platforms' do
@@ -82,11 +86,13 @@ module Beaker
82
86
 
83
87
  describe '#repo_filename' do
84
88
 
85
- it 'sets the el portion correctly for centos platforms' do
86
- @platform = 'centos-5-x86_64'
87
- allow( instance ).to receive( :is_pe? ) { false }
88
- filename = instance.repo_filename( 'pkg_name', 'pkg_version7' )
89
- expect( filename ).to match( /sion7\-el\-/ )
89
+ ['centos','redhat'].each do |platform|
90
+ it "sets the el portion correctly for '#{platform}'" do
91
+ @platform = "#{platform}-5-x86_64"
92
+ allow( instance ).to receive( :is_pe? ) { false }
93
+ filename = instance.repo_filename( 'pkg_name', 'pkg_version7' )
94
+ expect( filename ).to match( /sion7\-el\-/ )
95
+ end
90
96
  end
91
97
 
92
98
  it 'sets the sles portion correctly for sles platforms' do
@@ -111,12 +111,14 @@ module Beaker
111
111
  expect( instance.check_for_package(pkg) ).to be === true
112
112
  end
113
113
 
114
- it "checks correctly on centos" do
115
- @opts = {'platform' => 'centos-is-me'}
116
- pkg = 'centos_package'
117
- expect( Beaker::Command ).to receive(:new).with("rpm -q #{pkg}", [], {:prepend_cmds=>nil, :cmdexe=>false}).and_return('')
118
- expect( instance ).to receive(:exec).with('', :accept_all_exit_codes => true).and_return(generate_result("hello", {:exit_code => 0}))
119
- expect( instance.check_for_package(pkg) ).to be === true
114
+ ['centos','redhat'].each do |platform|
115
+ it "checks correctly on #{platform}" do
116
+ @opts = {'platform' => "#{platform}-is-me"}
117
+ pkg = "#{platform}_package"
118
+ expect( Beaker::Command ).to receive(:new).with("rpm -q #{pkg}", [], {:prepend_cmds=>nil, :cmdexe=>false}).and_return('')
119
+ expect( instance ).to receive(:exec).with('', :accept_all_exit_codes => true).and_return(generate_result("hello", {:exit_code => 0}))
120
+ expect( instance.check_for_package(pkg) ).to be === true
121
+ end
120
122
  end
121
123
 
122
124
  it "checks correctly on EOS" do
@@ -534,7 +536,7 @@ module Beaker
534
536
 
535
537
  it 'Centos & EL: uses yum' do
536
538
  package_file = 'testing_789.yay'
537
- ['centos', 'el'].each do |platform|
539
+ ['centos','redhat'].each do |platform|
538
540
  @platform = platform
539
541
  expect( instance ).to receive( :execute ).with( /^yum.*#{package_file}$/ )
540
542
  instance.install_local_package( package_file )
@@ -91,8 +91,8 @@ describe Beaker do
91
91
  ]
92
92
  end
93
93
 
94
- ['centos','el-','redhat','fedora','eos'].each do | rhel_like |
95
- it_should_behave_like 'enables_root_login', rhel_like, [
94
+ ['centos','el-','redhat','fedora','eos'].each do | redhat_like |
95
+ it_should_behave_like 'enables_root_login', redhat_like, [
96
96
  "sudo su -c \"sed -ri 's/^#?PermitRootLogin no|^#?PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config\"",
97
97
  "sudo -E /sbin/service sshd reload"
98
98
  ]
@@ -346,7 +346,7 @@ describe Beaker do
346
346
 
347
347
  expect( Beaker::Command ).to receive( :new ).with(
348
348
  "rpm -qa | grep epel-release"
349
- ).exactly( 4 ).times
349
+ ).exactly( hosts.count ).times
350
350
  hosts.each do |host|
351
351
  expect(host).to receive( :install_package_with_rpm ).with(
352
352
  "http://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm", "--replacepkgs", {:package_proxy => false}
@@ -354,13 +354,13 @@ describe Beaker do
354
354
  end
355
355
  expect( Beaker::Command ).to receive( :new ).with(
356
356
  "sed -i -e 's;#baseurl.*$;baseurl=http://dl\\.fedoraproject\\.org/pub/epel/6/$basearch;' /etc/yum.repos.d/epel.repo"
357
- ).exactly( 4 ).times
357
+ ).exactly( hosts.count ).times
358
358
  expect( Beaker::Command ).to receive( :new ).with(
359
359
  "sed -i -e '/mirrorlist/d' /etc/yum.repos.d/epel.repo"
360
- ).exactly( 4 ).times
360
+ ).exactly( hosts.count ).times
361
361
  expect( Beaker::Command ).to receive( :new ).with(
362
362
  "yum clean all && yum makecache"
363
- ).exactly( 4 ).times
363
+ ).exactly( hosts.count ).times
364
364
 
365
365
  subject.add_el_extras( hosts, options )
366
366
 
@@ -485,38 +485,40 @@ describe Beaker do
485
485
  end
486
486
  end
487
487
 
488
- context "on other platforms" do
489
- let(:host) { make_host( 'name', {
490
- :platform => 'centos',
491
- :stdout => stdout,
492
- } ) }
488
+ ['centos','redhat'].each do |platform|
489
+ context "on platform '#{platform}'" do
490
+ let(:host) { make_host( 'name', {
491
+ :platform => platform,
492
+ :stdout => stdout,
493
+ } ) }
493
494
 
494
- before(:each) do
495
- expect( Beaker::Command ).to receive( :new ).with( "cat /etc/resolv.conf" ).once
496
- end
495
+ before(:each) do
496
+ expect( Beaker::Command ).to receive( :new ).with( "cat /etc/resolv.conf" ).once
497
+ end
497
498
 
498
- context "with a domain entry" do
499
- let(:stdout) { "domain labs.lan d.labs.net dc1.labs.net labs.com\nnameserver 10.16.22.10\nnameserver 10.16.22.11" }
499
+ context "with a domain entry" do
500
+ let(:stdout) { "domain labs.lan d.labs.net dc1.labs.net labs.com\nnameserver 10.16.22.10\nnameserver 10.16.22.11" }
500
501
 
501
- include_examples 'find domain name'
502
- end
502
+ include_examples 'find domain name'
503
+ end
503
504
 
504
- context "with a search entry" do
505
- let(:stdout) { "search labs.lan d.labs.net dc1.labs.net labs.com\nnameserver 10.16.22.10\nnameserver 10.16.22.11" }
505
+ context "with a search entry" do
506
+ let(:stdout) { "search labs.lan d.labs.net dc1.labs.net labs.com\nnameserver 10.16.22.10\nnameserver 10.16.22.11" }
506
507
 
507
- include_examples 'find domain name'
508
- end
508
+ include_examples 'find domain name'
509
+ end
509
510
 
510
- context "with a both a domain and a search entry" do
511
- let(:stdout) { "domain labs.lan\nsearch d.labs.net dc1.labs.net labs.com\nnameserver 10.16.22.10\nnameserver 10.16.22.11" }
511
+ context "with a both a domain and a search entry" do
512
+ let(:stdout) { "domain labs.lan\nsearch d.labs.net dc1.labs.net labs.com\nnameserver 10.16.22.10\nnameserver 10.16.22.11" }
512
513
 
513
- include_examples 'find domain name'
514
- end
514
+ include_examples 'find domain name'
515
+ end
515
516
 
516
- context "with a both a domain and a search entry, the search entry first" do
517
- let(:stdout) { "search foo.example.net\ndomain labs.lan d.labs.net dc1.labs.net labs.com\nnameserver 10.16.22.10\nnameserver 10.16.22.11" }
517
+ context "with a both a domain and a search entry, the search entry first" do
518
+ let(:stdout) { "search foo.example.net\ndomain labs.lan d.labs.net dc1.labs.net labs.com\nnameserver 10.16.22.10\nnameserver 10.16.22.11" }
518
519
 
519
- include_examples 'find domain name'
520
+ include_examples 'find domain name'
521
+ end
520
522
  end
521
523
  end
522
524
  end
@@ -584,15 +586,16 @@ describe Beaker do
584
586
  subject.package_proxy(host, options.merge( {'package_proxy' => proxyurl}) )
585
587
  end
586
588
 
587
- it "can set proxy config on a centos host" do
588
- host = make_host('name', { :platform => 'centos' } )
589
+ ['centos','redhat'].each do |platform|
590
+ it "can set proxy config on a '#{platform}' host" do
591
+ host = make_host('name', { :platform => platform } )
589
592
 
590
- expect( Beaker::Command ).to receive( :new ).with( "echo 'proxy=#{proxyurl}/' >> /etc/yum.conf" ).once
591
- expect( host ).to receive( :exec ).once
593
+ expect( Beaker::Command ).to receive( :new ).with( "echo 'proxy=#{proxyurl}/' >> /etc/yum.conf" ).once
594
+ expect( host ).to receive( :exec ).once
592
595
 
593
- subject.package_proxy(host, options.merge( {'package_proxy' => proxyurl}) )
596
+ subject.package_proxy(host, options.merge( {'package_proxy' => proxyurl}) )
597
+ end
594
598
  end
595
-
596
599
  end
597
600
 
598
601
  context "set_env" do
@@ -363,9 +363,11 @@ module Beaker
363
363
  expect( host.touch('touched_file') ).to be == "c:\\\\windows\\\\system32\\\\cmd.exe /c echo. 2> touched_file"
364
364
  end
365
365
 
366
- it "generates the right absolute command for a unix host" do
367
- @platform = 'centos'
368
- expect( host.touch('touched_file') ).to be == "/bin/touch touched_file"
366
+ ['centos','redhat'].each do |platform|
367
+ it "generates the right absolute command for a #{platform} host" do
368
+ @platform = platform
369
+ expect( host.touch('touched_file') ).to be == "/bin/touch touched_file"
370
+ end
369
371
  end
370
372
 
371
373
  it "generates the right absolute command for an osx host" do
@@ -487,6 +489,67 @@ module Beaker
487
489
  host.do_scp_to *args
488
490
  end
489
491
  end
492
+
493
+ context "using an ignore array with an absolute source path in host root" do
494
+ let( :source_path ) { '/puppetlabs-inifile' }
495
+ let( :target_path ) { '/etc/puppetlabs/modules/inifile' }
496
+
497
+ before :each do
498
+ test_dir = "#{source_path}/tests"
499
+ other_test_dir = "#{source_path}/tests/tests2"
500
+ another_test_dir = "#{source_path}/tests/tests3"
501
+
502
+ files = [
503
+ '00_EnvSetup.rb', '035_StopFirewall.rb', '05_HieraSetup.rb',
504
+ '01_TestSetup.rb', '03_PuppetMasterSanity.rb',
505
+ '06_InstallModules.rb','02_PuppetUserAndGroup.rb',
506
+ '04_ValidateSignCert.rb', '07_InstallCACerts.rb' ]
507
+
508
+ @fileset1 = files.shuffle.map {|file| test_dir + '/' + file }
509
+ @fileset2 = files.shuffle.map {|file| other_test_dir + '/' + file }
510
+ @fileset3 = files.shuffle.map {|file| another_test_dir + '/' + file }
511
+
512
+ create_files( @fileset1 )
513
+ create_files( @fileset2 )
514
+ create_files( @fileset3 )
515
+ end
516
+
517
+ it "should create target dirs with correct path seperator" do
518
+ create_files(['source'])
519
+ exclude_file = '04_ValidateSignCert.rb'
520
+ logger = host[:logger]
521
+ conn = double(:connection)
522
+ @options = { :logger => logger }
523
+ host.instance_variable_set :@connection, conn
524
+ args = [ source_path, target_path, {:ignore => [exclude_file]} ]
525
+ conn_args = args
526
+
527
+ allow( Dir ).to receive( :glob ).and_return( @fileset1 + @fileset2 + @fileset3)
528
+
529
+ created_target_path = File.join(target_path, File.basename(source_path))
530
+ expect( host ).to receive( :mkdir_p ).with("#{created_target_path}/tests")
531
+ expect( host ).to receive( :mkdir_p ).with("#{created_target_path}/tests/tests2")
532
+ expect( host ).to receive( :mkdir_p ).with("#{created_target_path}/tests/tests3")
533
+
534
+ (@fileset1 + @fileset2 + @fileset3).each do |file|
535
+ if file !~ /#{exclude_file}/
536
+ file_args = [ file, File.join(created_target_path, File.dirname(file).gsub(source_path,'')), {:ignore => [exclude_file], :dry_run => false} ]
537
+ conn_args = file_args
538
+ expect( conn ).to receive(:scp_to).with( *conn_args ).and_return(Beaker::Result.new(host, 'output!'))
539
+ else
540
+ file_args = [ file, File.join(created_target_path, File.dirname(file).gsub(source_path,'')), {:ignore => [exclude_file], :dry_run => false} ]
541
+ conn_args = file_args
542
+ expect( conn ).to_not receive(:scp_to).with( *conn_args )
543
+ end
544
+ end
545
+ allow( conn ).to receive(:ip).and_return(host['ip'])
546
+ allow( conn ).to receive(:vmhostname).and_return(host['vmhostname'])
547
+ allow( conn ).to receive(:hostname).and_return(host.name)
548
+
549
+ host.do_scp_to *args
550
+ end
551
+ end
552
+
490
553
  context "using an ignore array" do
491
554
 
492
555
  before :each do
@@ -97,11 +97,12 @@ module Beaker
97
97
  expect( platform.with_version_codename ).to be === 'ubuntu-lucid-xxx'
98
98
  end
99
99
 
100
- it "leaves centos-7-xxx alone" do
101
- @name = 'centos-7-xxx'
102
- expect( platform.with_version_codename ).to be === 'centos-7-xxx'
100
+ ['centos','redhat'].each do |p|
101
+ it "leaves #{p}-7-xxx alone" do
102
+ @name = "#{p}-7-xxx"
103
+ expect( platform.with_version_codename ).to be === "#{p}-7-xxx"
104
+ end
103
105
  end
104
-
105
106
  end
106
107
 
107
108
  context 'with_version_number' do
@@ -126,11 +127,12 @@ module Beaker
126
127
  expect( platform.with_version_number ).to be === 'ubuntu-1210-xxx'
127
128
  end
128
129
 
129
- it "leaves centos-7-xxx alone" do
130
- @name = 'centos-7-xxx'
131
- expect( platform.with_version_number ).to be === 'centos-7-xxx'
130
+ ['centos','redhat'].each do |p|
131
+ it "leaves #{p}-7-xxx alone" do
132
+ @name = "#{p}-7-xxx"
133
+ expect( platform.with_version_number ).to be === "#{p}-7-xxx"
134
+ end
132
135
  end
133
-
134
136
  end
135
137
 
136
138
  context 'round tripping from yaml', if: RUBY_VERSION =~ /^1\.9/ do
@@ -43,6 +43,7 @@ module Beaker
43
43
  'pre-cleanup',
44
44
  'provision',
45
45
  'preserve-hosts',
46
+ 'preserve-state',
46
47
  'root-keys',
47
48
  'keyfile',
48
49
  'timeout',
@@ -248,6 +249,32 @@ module Beaker
248
249
  subcommand.exec('pre-suite,tests/whoops')
249
250
  }.to raise_error(ArgumentError, %r{Unable to parse pre-suite,tests/whoops})
250
251
  end
252
+
253
+
254
+ let( :yaml_store_mock ) { double('yaml_store_mock') }
255
+ let( :host_hash ) { {'mynode.net' => {:name => 'mynode', :platform => Beaker::Platform.new('centos-6-x86_64')}}}
256
+ let( :cleaned_hosts ) {double()}
257
+ it 'updates the subcommand_options file with new host info if `preserve-state` is set' do
258
+ allow(yaml_store_mock).to receive(:[]).and_return(false)
259
+ allow(subcommand).to receive(:options).and_return('preserve-state' => true)
260
+
261
+ expect(subcommand.cli).to receive(:parse_options).and_return(subcommand.cli)
262
+ expect(subcommand.cli).to receive(:combined_instance_and_options_hosts).and_return(host_hash)
263
+ expect(SubcommandUtil).to receive(:sanitize_options_for_save).and_return(cleaned_hosts)
264
+ expect(YAML::Store).to receive(:new).with(SubcommandUtil::SUBCOMMAND_OPTIONS).and_return(yaml_store_mock)
265
+ expect(yaml_store_mock).to receive(:transaction).and_yield.once
266
+ expect(yaml_store_mock).to receive(:[]=).with('HOSTS', cleaned_hosts)
267
+ expect(subcommand.cli.logger).to receive(:notify)
268
+
269
+ subcommand.exec('tests')
270
+ end
271
+
272
+ it 'does not attempt preserve state if the flag is not passed in' do
273
+ subcommand.exec('tests')
274
+
275
+ expect(SubcommandUtil).to receive(:sanitize_options_for_save).never
276
+ expect(subcommand.cli.options['preserve-state']).to be_nil
277
+ end
251
278
  end
252
279
 
253
280
  context 'destroy' do
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: 4.0.0
4
+ version: 4.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppet
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-08-06 00:00:00.000000000 Z
11
+ date: 2018-10-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -643,7 +643,6 @@ files:
643
643
  - spec/beaker/host_prebuilt_steps_spec.rb
644
644
  - spec/beaker/host_spec.rb
645
645
  - spec/beaker/hypervisor/hypervisor_spec.rb
646
- - spec/beaker/hypervisor/hypervisor_spec.rb.orig
647
646
  - spec/beaker/logger_junit_spec.rb
648
647
  - spec/beaker/logger_spec.rb
649
648
  - spec/beaker/network_manager_spec.rb
@@ -1,80 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Beaker
4
- describe Hypervisor do
5
- let( :hypervisor ) { Beaker::Hypervisor }
6
-
7
- it "creates an aix hypervisor for aix hosts" do
8
- aix = double( 'aix' )
9
- aix.stub( :provision ).and_return( true )
10
-
11
- Aixer.should_receive( :new ).once.and_return( aix )
12
- expect( hypervisor.create( 'aix', [], make_opts() ) ).to be === aix
13
- end
14
-
15
- it "creates a solaris hypervisor for solaris hosts" do
16
- solaris = double( 'solaris' )
17
- solaris.stub( :provision ).and_return( true )
18
- Solaris.should_receive( :new ).once.and_return( solaris )
19
- expect( hypervisor.create( 'solaris', [], make_opts() ) ).to be === solaris
20
- end
21
-
22
- it "creates a vsphere hypervisor for vsphere hosts" do
23
- vsphere = double( 'vsphere' )
24
- vsphere.stub( :provision ).and_return( true )
25
- Vsphere.should_receive( :new ).once.and_return( vsphere )
26
- expect( hypervisor.create( 'vsphere', [], make_opts() ) ).to be === vsphere
27
- end
28
-
29
- it "creates a fusion hypervisor for fusion hosts" do
30
- fusion = double( 'fusion' )
31
- fusion.stub( :provision ).and_return( true )
32
- Fusion.should_receive( :new ).once.and_return( fusion )
33
- expect( hypervisor.create( 'fusion', [], make_opts() ) ).to be === fusion
34
- end
35
-
36
- it "creates a vcloudpooled hypervisor for vcloud hosts that are pooled" do
37
- vcloud = double( 'vcloud' )
38
- vcloud.stub( :provision ).and_return( true )
39
- VcloudPooled.should_receive( :new ).once.and_return( vcloud )
40
- expect( hypervisor.create( 'vcloud', [], make_opts().merge( { 'pooling_api' => true } ) ) ).to be === vcloud
41
- end
42
-
43
- it "creates a vcloud hypervisor for vcloud hosts that are not pooled" do
44
- vcloud = double( 'vcloud' )
45
- vcloud.stub( :provision ).and_return( true )
46
- Vcloud.should_receive( :new ).once.and_return( vcloud )
47
- expect( hypervisor.create( 'vcloud', [], make_opts().merge( { 'pooling_api' => false } ) ) ).to be === vcloud
48
- end
49
-
50
- it "creates a vagrant hypervisor for vagrant hosts" do
51
- vagrant = double( 'vagrant' )
52
- vagrant.stub( :provision ).and_return( true )
53
- Vagrant.should_receive( :new ).once.and_return( vagrant )
54
- expect( hypervisor.create( 'vagrant', [], make_opts() ) ).to be === vagrant
55
- end
56
-
57
- it "creates a vagrant_fusion hypervisor for vagrant vmware fusion hosts" do
58
- vagrant = double( 'vagrant_fusion' )
59
- vagrant.stub( :provision ).and_return( true )
60
- VagrantFusion.should_receive( :new ).once.and_return( vagrant )
61
- expect( hypervisor.create( 'vagrant_fusion', [], make_opts() ) ).to be === vagrant
62
- end
63
-
64
- it "creates a vagrant_virtualbox hypervisor for vagrant virtualbox hosts" do
65
- vagrant = double( 'vagrant_virtualbox' )
66
- vagrant.stub( :provision ).and_return( true )
67
- VagrantVirtualbox.should_receive( :new ).once.and_return( vagrant )
68
- expect( hypervisor.create( 'vagrant_virtualbox', [], make_opts() ) ).to be === vagrant
69
- end
70
-
71
- it "creates a blimpy hypervisor for blimpy hosts" do
72
- blimpy = double( 'blimpy' )
73
- blimpy.stub( :provision ).and_return( true )
74
- Blimper.should_receive( :new ).once.and_return( blimpy )
75
- expect( hypervisor.create( 'blimpy', [], make_opts() ) ).to be === blimpy
76
- end
77
-
78
-
79
- end
80
- end