train 1.5.11 → 1.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/train/transports/winrm.rb +16 -4
- data/lib/train/version.rb +1 -1
- metadata +3 -165
- data/.rubocop.yml +0 -77
- data/CHANGELOG.md +0 -900
- data/Gemfile +0 -41
- data/README.md +0 -212
- data/Rakefile +0 -73
- data/test/fixtures/plugins/train-test-fixture/LICENSE +0 -201
- data/test/fixtures/plugins/train-test-fixture/README.md +0 -5
- data/test/fixtures/plugins/train-test-fixture/lib/train-test-fixture/connection.rb +0 -35
- data/test/fixtures/plugins/train-test-fixture/lib/train-test-fixture/platform.rb +0 -18
- data/test/fixtures/plugins/train-test-fixture/lib/train-test-fixture/transport.rb +0 -14
- data/test/fixtures/plugins/train-test-fixture/lib/train-test-fixture/version.rb +0 -5
- data/test/fixtures/plugins/train-test-fixture/lib/train-test-fixture.rb +0 -4
- data/test/fixtures/plugins/train-test-fixture/pkg/train-test-fixture-0.1.0.gem +0 -0
- data/test/fixtures/plugins/train-test-fixture/train-test-fixture.gemspec +0 -35
- data/test/integration/.kitchen.yml +0 -43
- data/test/integration/Berksfile +0 -3
- data/test/integration/bootstrap.sh +0 -22
- data/test/integration/chefignore +0 -1
- data/test/integration/cookbooks/test/metadata.rb +0 -1
- data/test/integration/cookbooks/test/recipes/default.rb +0 -100
- data/test/integration/cookbooks/test/recipes/prep_files.rb +0 -56
- data/test/integration/docker_run.rb +0 -153
- data/test/integration/docker_test.rb +0 -24
- data/test/integration/docker_test_container.rb +0 -24
- data/test/integration/helper.rb +0 -61
- data/test/integration/sudo/customcommand.rb +0 -15
- data/test/integration/sudo/nopasswd.rb +0 -16
- data/test/integration/sudo/passwd.rb +0 -21
- data/test/integration/sudo/reqtty.rb +0 -17
- data/test/integration/sudo/run_as.rb +0 -12
- data/test/integration/test-travis-centos.yml +0 -6
- data/test/integration/test-travis-debian.yml +0 -6
- data/test/integration/test-travis-fedora.yml +0 -8
- data/test/integration/test-travis-oel.yml +0 -6
- data/test/integration/test-travis-ubuntu.yml +0 -8
- data/test/integration/test_local.rb +0 -19
- data/test/integration/test_ssh.rb +0 -39
- data/test/integration/tests/path_block_device_test.rb +0 -74
- data/test/integration/tests/path_character_device_test.rb +0 -74
- data/test/integration/tests/path_file_test.rb +0 -99
- data/test/integration/tests/path_folder_test.rb +0 -90
- data/test/integration/tests/path_missing_test.rb +0 -76
- data/test/integration/tests/path_pipe_test.rb +0 -62
- data/test/integration/tests/path_symlink_test.rb +0 -95
- data/test/integration/tests/run_command_test.rb +0 -35
- data/test/unit/extras/command_wrapper_test.rb +0 -110
- data/test/unit/extras/stat_test.rb +0 -210
- data/test/unit/file/local/unix_test.rb +0 -224
- data/test/unit/file/local/windows_test.rb +0 -101
- data/test/unit/file/local_test.rb +0 -121
- data/test/unit/file/remote/aix_test.rb +0 -81
- data/test/unit/file/remote/linux_test.rb +0 -221
- data/test/unit/file/remote/qnx_test.rb +0 -80
- data/test/unit/file/remote/unix_test.rb +0 -119
- data/test/unit/file/remote/windows_test.rb +0 -72
- data/test/unit/file/remote_test.rb +0 -62
- data/test/unit/file_test.rb +0 -129
- data/test/unit/helper.rb +0 -7
- data/test/unit/platforms/detect/os_common_test.rb +0 -85
- data/test/unit/platforms/detect/os_linux_test.rb +0 -132
- data/test/unit/platforms/detect/os_windows_test.rb +0 -107
- data/test/unit/platforms/detect/scanner_test.rb +0 -61
- data/test/unit/platforms/detect/uuid_test.rb +0 -133
- data/test/unit/platforms/family_test.rb +0 -32
- data/test/unit/platforms/os_detect_test.rb +0 -249
- data/test/unit/platforms/platform_test.rb +0 -405
- data/test/unit/platforms/platforms_test.rb +0 -52
- data/test/unit/plugins/connection_test.rb +0 -219
- data/test/unit/plugins/transport_test.rb +0 -111
- data/test/unit/plugins_test.rb +0 -22
- data/test/unit/train_test.rb +0 -247
- data/test/unit/transports/aws_test.rb +0 -120
- data/test/unit/transports/azure_test.rb +0 -145
- data/test/unit/transports/cisco_ios_connection.rb +0 -92
- data/test/unit/transports/gcp_test.rb +0 -266
- data/test/unit/transports/helpers/azure/file_credentials_test.rb +0 -129
- data/test/unit/transports/local_test.rb +0 -183
- data/test/unit/transports/mock_test.rb +0 -150
- data/test/unit/transports/ssh_test.rb +0 -330
- data/test/unit/transports/vmware_test.rb +0 -159
- data/test/unit/version_test.rb +0 -8
- data/test/windows/local_test.rb +0 -243
- data/test/windows/winrm_test.rb +0 -187
- data/train.gemspec +0 -45
@@ -1,405 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'helper'
|
4
|
-
|
5
|
-
describe 'platform' do
|
6
|
-
def mock_platform(x)
|
7
|
-
plat = Train::Platforms.name(x)
|
8
|
-
plat.family_hierarchy = mock_os_hierarchy(plat).flatten
|
9
|
-
plat.platform[:family] = plat.family_hierarchy[0]
|
10
|
-
plat.add_platform_methods
|
11
|
-
plat
|
12
|
-
end
|
13
|
-
|
14
|
-
def mock_platform_family(x)
|
15
|
-
Train::Platforms.list[x] = nil if x == 'mock'
|
16
|
-
plat = Train::Platforms.name(x).in_family(x)
|
17
|
-
plat.family_hierarchy = mock_os_hierarchy(plat).flatten
|
18
|
-
plat.platform[:family] = plat.family_hierarchy[0]
|
19
|
-
plat.add_platform_methods
|
20
|
-
plat
|
21
|
-
end
|
22
|
-
|
23
|
-
def mock_os_hierarchy(plat)
|
24
|
-
plat.families.each_with_object([]) do |(k, _v), memo|
|
25
|
-
memo << k.name
|
26
|
-
memo << mock_os_hierarchy(k) unless k.families.empty?
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
it 'set platform title' do
|
31
|
-
plat = mock_platform_family('mock')
|
32
|
-
plat.title.must_equal('Mock')
|
33
|
-
plat.title('The Best Mock')
|
34
|
-
plat.title.must_equal('The Best Mock')
|
35
|
-
end
|
36
|
-
|
37
|
-
it 'clean init name' do
|
38
|
-
plat = mock_platform_family('Mo ck')
|
39
|
-
plat.name.must_equal('mo_ck')
|
40
|
-
end
|
41
|
-
|
42
|
-
it 'set name and name override' do
|
43
|
-
plat = mock_platform_family('mock')
|
44
|
-
plat.name.must_equal('mock')
|
45
|
-
plat[:name].must_equal('mock')
|
46
|
-
plat.platform[:name] = 'Mock 2020'
|
47
|
-
plat.add_platform_methods
|
48
|
-
plat.name.must_equal('mock_2020')
|
49
|
-
plat[:name].must_equal('mock_2020')
|
50
|
-
end
|
51
|
-
|
52
|
-
it 'check families' do
|
53
|
-
plat = mock_platform_family('mock')
|
54
|
-
plat.families.keys[0].name.must_equal('mock')
|
55
|
-
end
|
56
|
-
|
57
|
-
it 'check families with condition' do
|
58
|
-
Train::Platforms.list['mock'] = nil
|
59
|
-
plat = Train::Platforms.name('mock', arch: '= x86_64').in_family('linux')
|
60
|
-
plat.families.keys[0].name.must_equal('linux')
|
61
|
-
plat.families.values[0].must_equal({ arch: '= x86_64' })
|
62
|
-
end
|
63
|
-
|
64
|
-
it 'finds family hierarchy' do
|
65
|
-
plat = Train::Platforms.name('linux')
|
66
|
-
plat.find_family_hierarchy
|
67
|
-
plat.family_hierarchy.must_equal ['linux', 'unix', 'os']
|
68
|
-
end
|
69
|
-
|
70
|
-
it 'return direct families' do
|
71
|
-
plat = mock_platform_family('mock')
|
72
|
-
plat.in_family('mock2')
|
73
|
-
plat.in_family('mock3')
|
74
|
-
plat.direct_families.must_equal(["mock", "mock2", "mock3"])
|
75
|
-
end
|
76
|
-
|
77
|
-
it 'return to_hash' do
|
78
|
-
plat = mock_platform_family('mock')
|
79
|
-
plat.to_hash.must_equal({ family: "mock" })
|
80
|
-
end
|
81
|
-
|
82
|
-
it 'return unknown release' do
|
83
|
-
plat = mock_platform_family('mock')
|
84
|
-
plat[:release].must_equal('unknown')
|
85
|
-
end
|
86
|
-
|
87
|
-
it 'return name?' do
|
88
|
-
plat = Train::Platforms.name('windows_rc1')
|
89
|
-
defined?(plat.windows_rc1?).must_be_nil
|
90
|
-
plat.add_platform_methods
|
91
|
-
plat.windows_rc1?.must_equal(true)
|
92
|
-
end
|
93
|
-
|
94
|
-
it 'add platform methods' do
|
95
|
-
Train::Platforms.list['mock'] = nil
|
96
|
-
plat = Train::Platforms.name('mock').in_family('linux')
|
97
|
-
defined?(plat.linux?).must_be_nil
|
98
|
-
plat.family_hierarchy = mock_os_hierarchy(plat).flatten
|
99
|
-
plat.add_platform_methods
|
100
|
-
plat.linux?.must_equal(true)
|
101
|
-
end
|
102
|
-
|
103
|
-
it 'provides a method to access platform data' do
|
104
|
-
family = 'test-os'
|
105
|
-
os = mock_platform_family(family)
|
106
|
-
os[:family].must_equal family
|
107
|
-
end
|
108
|
-
|
109
|
-
it 'provides an accessor for the full hash' do
|
110
|
-
x = 'test-os'
|
111
|
-
os = mock_platform_family(x)
|
112
|
-
os.to_hash.must_equal({ family: x })
|
113
|
-
end
|
114
|
-
|
115
|
-
describe 'with platform set to redhat' do
|
116
|
-
let(:os) { mock_platform('redhat') }
|
117
|
-
it { os.redhat?.must_equal(true) }
|
118
|
-
it { os.debian?.must_equal(false) }
|
119
|
-
it { os.suse?.must_equal(false) }
|
120
|
-
it { os.linux?.must_equal(true) }
|
121
|
-
it { os.unix?.must_equal(true) }
|
122
|
-
end
|
123
|
-
|
124
|
-
describe 'with platform set to oracle' do
|
125
|
-
let(:os) { mock_platform('oracle') }
|
126
|
-
it { os.redhat?.must_equal(true) }
|
127
|
-
it { os.debian?.must_equal(false) }
|
128
|
-
it { os.suse?.must_equal(false) }
|
129
|
-
it { os.linux?.must_equal(true) }
|
130
|
-
it { os.unix?.must_equal(true) }
|
131
|
-
end
|
132
|
-
|
133
|
-
describe 'with platform set to centos' do
|
134
|
-
let(:os) { mock_platform('centos') }
|
135
|
-
it { os.redhat?.must_equal(true) }
|
136
|
-
it { os.debian?.must_equal(false) }
|
137
|
-
it { os.suse?.must_equal(false) }
|
138
|
-
it { os.linux?.must_equal(true) }
|
139
|
-
it { os.unix?.must_equal(true) }
|
140
|
-
end
|
141
|
-
|
142
|
-
describe 'with platform set to cloudlinux' do
|
143
|
-
let(:os) { mock_platform('cloudlinux') }
|
144
|
-
it { os.redhat?.must_equal(true) }
|
145
|
-
it { os.debian?.must_equal(false) }
|
146
|
-
it { os.suse?.must_equal(false) }
|
147
|
-
it { os.linux?.must_equal(true) }
|
148
|
-
it { os.unix?.must_equal(true) }
|
149
|
-
end
|
150
|
-
|
151
|
-
describe 'with platform set to fedora' do
|
152
|
-
let(:os) { mock_platform('fedora') }
|
153
|
-
it { os.fedora?.must_equal(true) }
|
154
|
-
it { os.redhat?.must_equal(false) }
|
155
|
-
it { os.debian?.must_equal(false) }
|
156
|
-
it { os.suse?.must_equal(false) }
|
157
|
-
it { os.linux?.must_equal(true) }
|
158
|
-
it { os.unix?.must_equal(true) }
|
159
|
-
end
|
160
|
-
|
161
|
-
describe 'with platform set to amazon' do
|
162
|
-
let(:os) { mock_platform('amazon') }
|
163
|
-
it { os.fedora?.must_equal(false) }
|
164
|
-
it { os.redhat?.must_equal(true) }
|
165
|
-
it { os.debian?.must_equal(false) }
|
166
|
-
it { os.suse?.must_equal(false) }
|
167
|
-
it { os.linux?.must_equal(true) }
|
168
|
-
it { os.unix?.must_equal(true) }
|
169
|
-
end
|
170
|
-
|
171
|
-
describe 'with platform set to debian' do
|
172
|
-
let(:os) { mock_platform('debian') }
|
173
|
-
it { os.redhat?.must_equal(false) }
|
174
|
-
it { os.debian?.must_equal(true) }
|
175
|
-
it { os.suse?.must_equal(false) }
|
176
|
-
it { os.linux?.must_equal(true) }
|
177
|
-
it { os.unix?.must_equal(true) }
|
178
|
-
end
|
179
|
-
|
180
|
-
describe 'with platform set to ubuntu' do
|
181
|
-
let(:os) { mock_platform('ubuntu') }
|
182
|
-
it { os.redhat?.must_equal(false) }
|
183
|
-
it { os.debian?.must_equal(true) }
|
184
|
-
it { os.suse?.must_equal(false) }
|
185
|
-
it { os.linux?.must_equal(true) }
|
186
|
-
it { os.unix?.must_equal(true) }
|
187
|
-
end
|
188
|
-
|
189
|
-
describe 'with platform set to linuxmint' do
|
190
|
-
let(:os) { mock_platform('linuxmint') }
|
191
|
-
it { os.redhat?.must_equal(false) }
|
192
|
-
it { os.debian?.must_equal(true) }
|
193
|
-
it { os.suse?.must_equal(false) }
|
194
|
-
it { os.linux?.must_equal(true) }
|
195
|
-
it { os.unix?.must_equal(true) }
|
196
|
-
end
|
197
|
-
|
198
|
-
describe 'with platform set to raspbian' do
|
199
|
-
let(:os) { mock_platform('raspbian') }
|
200
|
-
it { os.redhat?.must_equal(false) }
|
201
|
-
it { os.debian?.must_equal(true) }
|
202
|
-
it { os.suse?.must_equal(false) }
|
203
|
-
it { os.linux?.must_equal(true) }
|
204
|
-
it { os.unix?.must_equal(true) }
|
205
|
-
end
|
206
|
-
|
207
|
-
describe 'with platform set to suse' do
|
208
|
-
let(:os) { mock_platform('suse') }
|
209
|
-
it { os.redhat?.must_equal(false) }
|
210
|
-
it { os.debian?.must_equal(false) }
|
211
|
-
it { os.suse?.must_equal(true) }
|
212
|
-
it { os.linux?.must_equal(true) }
|
213
|
-
it { os.unix?.must_equal(true) }
|
214
|
-
end
|
215
|
-
|
216
|
-
describe 'with platform set to opensuse' do
|
217
|
-
let(:os) { mock_platform('opensuse') }
|
218
|
-
it { os.redhat?.must_equal(false) }
|
219
|
-
it { os.debian?.must_equal(false) }
|
220
|
-
it { os.suse?.must_equal(true) }
|
221
|
-
it { os.linux?.must_equal(true) }
|
222
|
-
it { os.unix?.must_equal(true) }
|
223
|
-
end
|
224
|
-
|
225
|
-
describe 'with platform set to alpine' do
|
226
|
-
let(:os) { mock_platform('alpine') }
|
227
|
-
it { os.redhat?.must_equal(false) }
|
228
|
-
it { os.debian?.must_equal(false) }
|
229
|
-
it { os.suse?.must_equal(false) }
|
230
|
-
it { os.linux?.must_equal(true) }
|
231
|
-
it { os.unix?.must_equal(true) }
|
232
|
-
end
|
233
|
-
|
234
|
-
describe 'with platform set to arch' do
|
235
|
-
let(:os) { mock_platform('arch') }
|
236
|
-
it { os.redhat?.must_equal(false) }
|
237
|
-
it { os.debian?.must_equal(false) }
|
238
|
-
it { os.suse?.must_equal(false) }
|
239
|
-
it { os.linux?.must_equal(true) }
|
240
|
-
it { os.unix?.must_equal(true) }
|
241
|
-
end
|
242
|
-
|
243
|
-
describe 'with platform set to coreos' do
|
244
|
-
let(:os) { mock_platform('coreos') }
|
245
|
-
it { os.redhat?.must_equal(false) }
|
246
|
-
it { os.debian?.must_equal(false) }
|
247
|
-
it { os.suse?.must_equal(false) }
|
248
|
-
it { os.linux?.must_equal(true) }
|
249
|
-
it { os.unix?.must_equal(true) }
|
250
|
-
end
|
251
|
-
|
252
|
-
describe 'with platform set to exherbo' do
|
253
|
-
let(:os) { mock_platform('exherbo') }
|
254
|
-
it { os.redhat?.must_equal(false) }
|
255
|
-
it { os.debian?.must_equal(false) }
|
256
|
-
it { os.suse?.must_equal(false) }
|
257
|
-
it { os.linux?.must_equal(true) }
|
258
|
-
it { os.unix?.must_equal(true) }
|
259
|
-
end
|
260
|
-
|
261
|
-
describe 'with platform set to gentoo' do
|
262
|
-
let(:os) { mock_platform('gentoo') }
|
263
|
-
it { os.redhat?.must_equal(false) }
|
264
|
-
it { os.debian?.must_equal(false) }
|
265
|
-
it { os.suse?.must_equal(false) }
|
266
|
-
it { os.linux?.must_equal(true) }
|
267
|
-
it { os.unix?.must_equal(true) }
|
268
|
-
end
|
269
|
-
|
270
|
-
describe 'with platform set to slackware' do
|
271
|
-
let(:os) { mock_platform('slackware') }
|
272
|
-
it { os.redhat?.must_equal(false) }
|
273
|
-
it { os.debian?.must_equal(false) }
|
274
|
-
it { os.suse?.must_equal(false) }
|
275
|
-
it { os.linux?.must_equal(true) }
|
276
|
-
it { os.unix?.must_equal(true) }
|
277
|
-
end
|
278
|
-
|
279
|
-
describe 'with platform set to wrlinux' do
|
280
|
-
let(:os) { mock_platform('wrlinux') }
|
281
|
-
it { os.redhat?.must_equal(true) }
|
282
|
-
it { os.debian?.must_equal(false) }
|
283
|
-
it { os.suse?.must_equal(false) }
|
284
|
-
it { os.linux?.must_equal(true) }
|
285
|
-
it { os.unix?.must_equal(true) }
|
286
|
-
end
|
287
|
-
|
288
|
-
describe 'with platform set to linux' do
|
289
|
-
let(:os) { mock_platform('linux') }
|
290
|
-
it { os.linux?.must_equal(true) }
|
291
|
-
it { os.unix?.must_equal(true) }
|
292
|
-
end
|
293
|
-
|
294
|
-
describe 'with platform set to freebsd' do
|
295
|
-
let(:os) { mock_platform('freebsd') }
|
296
|
-
it { os.bsd?.must_equal(true) }
|
297
|
-
it { os.linux?.must_equal(false) }
|
298
|
-
it { os.unix?.must_equal(true) }
|
299
|
-
end
|
300
|
-
|
301
|
-
describe 'with platform set to netbsd' do
|
302
|
-
let(:os) { mock_platform('netbsd') }
|
303
|
-
it { os.bsd?.must_equal(true) }
|
304
|
-
it { os.linux?.must_equal(false) }
|
305
|
-
it { os.unix?.must_equal(true) }
|
306
|
-
end
|
307
|
-
|
308
|
-
describe 'with platform set to openbsd' do
|
309
|
-
let(:os) { mock_platform('openbsd') }
|
310
|
-
it { os.bsd?.must_equal(true) }
|
311
|
-
it { os.linux?.must_equal(false) }
|
312
|
-
it { os.unix?.must_equal(true) }
|
313
|
-
end
|
314
|
-
|
315
|
-
describe 'with platform set to darwin' do
|
316
|
-
let(:os) { mock_platform('darwin') }
|
317
|
-
it { os.bsd?.must_equal(true) }
|
318
|
-
it { os.linux?.must_equal(false) }
|
319
|
-
it { os.unix?.must_equal(true) }
|
320
|
-
end
|
321
|
-
|
322
|
-
describe 'with platform set to solaris' do
|
323
|
-
let(:os) { mock_platform('solaris') }
|
324
|
-
it { os.solaris?.must_equal(true) }
|
325
|
-
it { os.linux?.must_equal(false) }
|
326
|
-
it { os.unix?.must_equal(true) }
|
327
|
-
end
|
328
|
-
|
329
|
-
describe 'with platform set to smartos' do
|
330
|
-
let(:os) { mock_platform('smartos') }
|
331
|
-
it { os.solaris?.must_equal(true) }
|
332
|
-
it { os.linux?.must_equal(false) }
|
333
|
-
it { os.unix?.must_equal(true) }
|
334
|
-
end
|
335
|
-
|
336
|
-
describe 'with platform set to openindiana' do
|
337
|
-
let(:os) { mock_platform('openindiana') }
|
338
|
-
it { os.solaris?.must_equal(true) }
|
339
|
-
it { os.linux?.must_equal(false) }
|
340
|
-
it { os.unix?.must_equal(true) }
|
341
|
-
end
|
342
|
-
|
343
|
-
describe 'with platform set to opensolaris' do
|
344
|
-
let(:os) { mock_platform('opensolaris') }
|
345
|
-
it { os.solaris?.must_equal(true) }
|
346
|
-
it { os.linux?.must_equal(false) }
|
347
|
-
it { os.unix?.must_equal(true) }
|
348
|
-
end
|
349
|
-
|
350
|
-
describe 'with platform set to nexentacore' do
|
351
|
-
let(:os) { mock_platform('nexentacore') }
|
352
|
-
it { os.solaris?.must_equal(true) }
|
353
|
-
it { os.linux?.must_equal(false) }
|
354
|
-
it { os.unix?.must_equal(true) }
|
355
|
-
end
|
356
|
-
|
357
|
-
describe 'with platform set to windows' do
|
358
|
-
let(:os) { mock_platform('windows') }
|
359
|
-
it { os.solaris?.must_equal(false) }
|
360
|
-
it { os.bsd?.must_equal(false) }
|
361
|
-
it { os.linux?.must_equal(false) }
|
362
|
-
it { os.unix?.must_equal(false) }
|
363
|
-
end
|
364
|
-
|
365
|
-
describe 'with platform set to hpux' do
|
366
|
-
let(:os) { mock_platform('hpux') }
|
367
|
-
it { os.solaris?.must_equal(false) }
|
368
|
-
it { os.linux?.must_equal(false) }
|
369
|
-
it { os.unix?.must_equal(true) }
|
370
|
-
it { os.hpux?.must_equal(true) }
|
371
|
-
end
|
372
|
-
|
373
|
-
describe 'with platform set to esx' do
|
374
|
-
let(:os) { mock_platform('vmkernel') }
|
375
|
-
it { os.solaris?.must_equal(false) }
|
376
|
-
it { os.linux?.must_equal(false) }
|
377
|
-
it { os[:family].must_equal('esx') }
|
378
|
-
it { os.unix?.must_equal(false) }
|
379
|
-
it { os.esx?.must_equal(true) }
|
380
|
-
end
|
381
|
-
|
382
|
-
describe 'with platform set to darwin' do
|
383
|
-
let(:os) { mock_platform('darwin') }
|
384
|
-
it { os.solaris?.must_equal(false) }
|
385
|
-
it { os.linux?.must_equal(false) }
|
386
|
-
it { os[:family].must_equal('darwin') }
|
387
|
-
it { os.bsd?.must_equal(true) }
|
388
|
-
it { os.darwin?.must_equal(true) }
|
389
|
-
it { os.unix?.must_equal(true) }
|
390
|
-
it { os.bsd?.must_equal(true) }
|
391
|
-
it { os.esx?.must_equal(false) }
|
392
|
-
end
|
393
|
-
|
394
|
-
describe 'with platform set to mac_os_x' do
|
395
|
-
let(:os) { mock_platform('mac_os_x') }
|
396
|
-
it { os.solaris?.must_equal(false) }
|
397
|
-
it { os.linux?.must_equal(false) }
|
398
|
-
it { os[:family].must_equal('darwin') }
|
399
|
-
it { os.bsd?.must_equal(true) }
|
400
|
-
it { os.darwin?.must_equal(true) }
|
401
|
-
it { os.unix?.must_equal(true) }
|
402
|
-
it { os.bsd?.must_equal(true) }
|
403
|
-
it { os.esx?.must_equal(false) }
|
404
|
-
end
|
405
|
-
end
|
@@ -1,52 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'helper'
|
4
|
-
|
5
|
-
describe 'platforms' do
|
6
|
-
|
7
|
-
it 'create platform' do
|
8
|
-
Train::Platforms.list['mock'] = nil
|
9
|
-
plat = Train::Platforms.name('mock')
|
10
|
-
Train::Platforms.name('mock').in_family('test')
|
11
|
-
Train::Platforms.name('mock').detect { true }
|
12
|
-
plat.title.must_equal('Mock')
|
13
|
-
plat.detect.call.must_equal(true)
|
14
|
-
plat.families.keys[0].name.must_equal('test')
|
15
|
-
end
|
16
|
-
|
17
|
-
it 'create family' do
|
18
|
-
Train::Platforms.families['mock'] = nil
|
19
|
-
fam = Train::Platforms.family('mock')
|
20
|
-
Train::Platforms.family('mock').in_family('test')
|
21
|
-
Train::Platforms.family('mock').detect { true }
|
22
|
-
fam.title.must_equal('Mock Family')
|
23
|
-
fam.detect.call.must_equal(true)
|
24
|
-
fam.families.keys[0].name.must_equal('test')
|
25
|
-
end
|
26
|
-
|
27
|
-
it 'return top platforms empty' do
|
28
|
-
Train::Platforms.stubs(:list).returns({})
|
29
|
-
Train::Platforms.stubs(:families).returns({})
|
30
|
-
top = Train::Platforms.top_platforms
|
31
|
-
top.count.must_equal(0)
|
32
|
-
end
|
33
|
-
|
34
|
-
it 'return top platforms with data' do
|
35
|
-
plat = Train::Platforms.name('linux')
|
36
|
-
plat.stubs(:families).returns({})
|
37
|
-
Train::Platforms.stubs(:list).returns({ 'linux' => plat })
|
38
|
-
Train::Platforms.stubs(:families).returns({})
|
39
|
-
top = Train::Platforms.top_platforms
|
40
|
-
top.count.must_equal(1)
|
41
|
-
end
|
42
|
-
|
43
|
-
it 'return platforms export with data' do
|
44
|
-
Train::Platforms.__reset
|
45
|
-
Train::Platforms::Detect::Specifications::OS.load
|
46
|
-
export = Train::Platforms.export
|
47
|
-
export.size.must_be :>, 10
|
48
|
-
export[0][:name].must_equal 'aix'
|
49
|
-
expected_families = ['aix', 'unix', 'os']
|
50
|
-
export[0][:families].must_equal expected_families
|
51
|
-
end
|
52
|
-
end
|
@@ -1,219 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require 'helper'
|
3
|
-
|
4
|
-
describe 'v1 Connection Plugin' do
|
5
|
-
describe 'empty v1 connection plugin' do
|
6
|
-
let(:cls) { Train::Plugins::Transport::BaseConnection }
|
7
|
-
let(:connection) { cls.new({}) }
|
8
|
-
|
9
|
-
it 'provides a close method' do
|
10
|
-
connection.close # wont raise
|
11
|
-
end
|
12
|
-
|
13
|
-
it 'raises an exception for run_command' do
|
14
|
-
proc { connection.run_command('') }.must_raise NotImplementedError
|
15
|
-
end
|
16
|
-
|
17
|
-
it 'raises an exception for run_command_via_connection' do
|
18
|
-
proc { connection.send(:run_command_via_connection, '') }.must_raise NotImplementedError
|
19
|
-
end
|
20
|
-
|
21
|
-
it 'raises an exception for os method' do
|
22
|
-
proc { connection.os }.must_raise NotImplementedError
|
23
|
-
end
|
24
|
-
|
25
|
-
it 'raises an exception for file method' do
|
26
|
-
proc { connection.file('') }.must_raise NotImplementedError
|
27
|
-
end
|
28
|
-
|
29
|
-
it 'raises an exception for file_via_connection method' do
|
30
|
-
proc { connection.send(:file_via_connection, '') }.must_raise NotImplementedError
|
31
|
-
end
|
32
|
-
|
33
|
-
it 'raises an exception for login command method' do
|
34
|
-
proc { connection.login_command }.must_raise NotImplementedError
|
35
|
-
end
|
36
|
-
|
37
|
-
it 'can wait until ready' do
|
38
|
-
connection.wait_until_ready # wont raise
|
39
|
-
end
|
40
|
-
|
41
|
-
it 'provides a default logger' do
|
42
|
-
connection.method(:logger).call
|
43
|
-
.must_be_instance_of(Logger)
|
44
|
-
end
|
45
|
-
|
46
|
-
it 'provides direct platform' do
|
47
|
-
plat = connection.force_platform!('mac_os_x')
|
48
|
-
plat.name.must_equal 'mac_os_x'
|
49
|
-
plat.linux?.must_equal false
|
50
|
-
plat.cloud?.must_equal false
|
51
|
-
plat.unix?.must_equal true
|
52
|
-
plat.family.must_equal 'darwin'
|
53
|
-
plat.family_hierarchy.must_equal ['darwin', 'bsd', 'unix', 'os']
|
54
|
-
end
|
55
|
-
|
56
|
-
it 'provides api direct platform' do
|
57
|
-
plat = connection.force_platform!('aws')
|
58
|
-
plat.name.must_equal 'aws'
|
59
|
-
plat.linux?.must_equal false
|
60
|
-
plat.cloud?.must_equal true
|
61
|
-
plat.family.must_equal 'cloud'
|
62
|
-
plat.family_hierarchy.must_equal ['cloud', 'api']
|
63
|
-
end
|
64
|
-
|
65
|
-
it 'provides api direct platform with platform options' do
|
66
|
-
aws_version = Gem.loaded_specs['aws-sdk'].version
|
67
|
-
aws_version = "aws-sdk-v#{aws_version}"
|
68
|
-
details = { release: aws_version }
|
69
|
-
plat = connection.force_platform!('aws', details)
|
70
|
-
plat.name.must_equal 'aws'
|
71
|
-
plat.release.must_equal aws_version
|
72
|
-
plat[:release].must_equal aws_version
|
73
|
-
end
|
74
|
-
|
75
|
-
it 'must use the user-provided logger' do
|
76
|
-
l = rand
|
77
|
-
cls.new({logger: l})
|
78
|
-
.method(:logger).call.must_equal(l)
|
79
|
-
end
|
80
|
-
|
81
|
-
describe 'cached_client helper' do
|
82
|
-
class DemoConnection < Train::Plugins::Transport::BaseConnection
|
83
|
-
def initialize(options = {})
|
84
|
-
super(options)
|
85
|
-
@cache_enabled[:api_call] = true
|
86
|
-
@cache[:api_call] = {}
|
87
|
-
end
|
88
|
-
|
89
|
-
def demo_client
|
90
|
-
cached_client(:api_call, :demo_client) do
|
91
|
-
DemoClient.new
|
92
|
-
end
|
93
|
-
end
|
94
|
-
|
95
|
-
class DemoClient
|
96
|
-
end
|
97
|
-
end
|
98
|
-
|
99
|
-
it 'returns a new connection when cached disabled' do
|
100
|
-
conn = DemoConnection.new
|
101
|
-
conn.disable_cache(:api_call)
|
102
|
-
|
103
|
-
client1 = conn.demo_client
|
104
|
-
client2 = conn.demo_client
|
105
|
-
|
106
|
-
client1.wont_be_same_as client2
|
107
|
-
end
|
108
|
-
|
109
|
-
it 'returns a new connection when cache enabled and not hydrated' do
|
110
|
-
conn = DemoConnection.new
|
111
|
-
conn.enable_cache(:api_call)
|
112
|
-
|
113
|
-
client1 = conn.demo_client
|
114
|
-
|
115
|
-
client1.must_be_instance_of DemoConnection::DemoClient
|
116
|
-
end
|
117
|
-
|
118
|
-
it 'returns a cached connection when cache enabled and hydrated' do
|
119
|
-
conn = DemoConnection.new
|
120
|
-
conn.enable_cache(:api_call)
|
121
|
-
|
122
|
-
client1 = conn.demo_client
|
123
|
-
client2 = conn.demo_client
|
124
|
-
|
125
|
-
client1.must_be_same_as client2
|
126
|
-
end
|
127
|
-
end
|
128
|
-
|
129
|
-
describe 'create cache connection' do
|
130
|
-
it 'default connection cache settings' do
|
131
|
-
connection.cache_enabled?(:file).must_equal true
|
132
|
-
connection.cache_enabled?(:command).must_equal false
|
133
|
-
end
|
134
|
-
end
|
135
|
-
|
136
|
-
describe 'disable/enable caching' do
|
137
|
-
it 'disable file cache via connection' do
|
138
|
-
connection.disable_cache(:file)
|
139
|
-
connection.cache_enabled?(:file).must_equal false
|
140
|
-
end
|
141
|
-
|
142
|
-
it 'enable command cache via cache_connection' do
|
143
|
-
connection.enable_cache(:command)
|
144
|
-
connection.cache_enabled?(:command).must_equal true
|
145
|
-
end
|
146
|
-
|
147
|
-
it 'raises an exception for unknown cache type' do
|
148
|
-
proc { connection.enable_cache(:fake) }.must_raise Train::UnknownCacheType
|
149
|
-
proc { connection.disable_cache(:fake) }.must_raise Train::UnknownCacheType
|
150
|
-
end
|
151
|
-
end
|
152
|
-
|
153
|
-
describe 'cache enable check' do
|
154
|
-
it 'returns true when cache is enabled' do
|
155
|
-
cache_enabled = connection.instance_variable_get(:@cache_enabled)
|
156
|
-
cache_enabled[:test] = true
|
157
|
-
connection.cache_enabled?(:test).must_equal true
|
158
|
-
end
|
159
|
-
|
160
|
-
it 'returns false when cache is disabled' do
|
161
|
-
cache_enabled = connection.instance_variable_get(:@cache_enabled)
|
162
|
-
cache_enabled[:test] = false
|
163
|
-
connection.cache_enabled?(:test).must_equal false
|
164
|
-
end
|
165
|
-
end
|
166
|
-
|
167
|
-
describe 'clear cache' do
|
168
|
-
it 'clear file cache' do
|
169
|
-
cache = connection.instance_variable_get(:@cache)
|
170
|
-
cache[:file]['/tmp'] = 'test'
|
171
|
-
connection.send(:clear_cache, :file)
|
172
|
-
cache = connection.instance_variable_get(:@cache)
|
173
|
-
cache[:file].must_equal({})
|
174
|
-
end
|
175
|
-
end
|
176
|
-
|
177
|
-
describe 'load file' do
|
178
|
-
it 'with caching' do
|
179
|
-
connection.enable_cache(:file)
|
180
|
-
connection.expects(:file_via_connection).once.returns('test_file')
|
181
|
-
connection.file('/tmp/test').must_equal('test_file')
|
182
|
-
connection.file('/tmp/test').must_equal('test_file')
|
183
|
-
assert = { '/tmp/test' => 'test_file' }
|
184
|
-
cache = connection.instance_variable_get(:@cache)
|
185
|
-
cache[:file].must_equal(assert)
|
186
|
-
end
|
187
|
-
|
188
|
-
it 'without caching' do
|
189
|
-
connection.disable_cache(:file)
|
190
|
-
connection.expects(:file_via_connection).twice.returns('test_file')
|
191
|
-
connection.file('/tmp/test').must_equal('test_file')
|
192
|
-
connection.file('/tmp/test').must_equal('test_file')
|
193
|
-
cache = connection.instance_variable_get(:@cache)
|
194
|
-
cache[:file].must_equal({})
|
195
|
-
end
|
196
|
-
end
|
197
|
-
|
198
|
-
describe 'run command' do
|
199
|
-
it 'with caching' do
|
200
|
-
connection.enable_cache(:command)
|
201
|
-
connection.expects(:run_command_via_connection).once.returns('test_user')
|
202
|
-
connection.run_command('whoami').must_equal('test_user')
|
203
|
-
connection.run_command('whoami').must_equal('test_user')
|
204
|
-
assert = { 'whoami' => 'test_user' }
|
205
|
-
cache = connection.instance_variable_get(:@cache)
|
206
|
-
cache[:command].must_equal(assert)
|
207
|
-
end
|
208
|
-
|
209
|
-
it 'without caching' do
|
210
|
-
connection.disable_cache(:command)
|
211
|
-
connection.expects(:run_command_via_connection).twice.returns('test_user')
|
212
|
-
connection.run_command('whoami').must_equal('test_user')
|
213
|
-
connection.run_command('whoami').must_equal('test_user')
|
214
|
-
cache = connection.instance_variable_get(:@cache)
|
215
|
-
cache[:command].must_equal({})
|
216
|
-
end
|
217
|
-
end
|
218
|
-
end
|
219
|
-
end
|