ztk 1.4.5 → 1.4.6
Sign up to get free protection for your applications and to get access to all the features.
- data/.travis.yml +6 -6
- data/Gemfile +2 -0
- data/lib/ztk/template.rb +4 -2
- data/lib/ztk/version.rb +1 -1
- data/spec/support/before_install.sh +41 -0
- data/spec/ztk/parallel_spec.rb +62 -23
- data/spec/ztk/ssh_spec.rb +30 -6
- data/spec/ztk/template_spec.rb +40 -6
- metadata +5 -3
data/.travis.yml
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
language: ruby
|
2
2
|
|
3
3
|
rvm:
|
4
|
+
- ree
|
4
5
|
- 1.9.2
|
5
6
|
- 1.9.3
|
6
7
|
- 2.0.0
|
7
8
|
|
8
|
-
before_install:
|
9
|
-
- sudo apt-get -qq --force-yes update
|
10
|
-
|
11
|
-
bundler_args: --binstubs
|
12
|
-
|
13
|
-
script: "rake test"
|
9
|
+
before_install: ./spec/support/before_install.sh
|
14
10
|
|
15
11
|
notifications:
|
16
12
|
irc: "irc.freenode.net#jovelabs"
|
13
|
+
|
14
|
+
matrix:
|
15
|
+
allow_failures:
|
16
|
+
- rvm: ree
|
data/Gemfile
CHANGED
data/lib/ztk/template.rb
CHANGED
@@ -52,8 +52,10 @@ module ZTK
|
|
52
52
|
|
53
53
|
notice << char
|
54
54
|
notice << "#{char} WARNING: AUTOMATICALLY GENERATED FILE; DO NOT EDIT!"
|
55
|
-
|
56
|
-
|
55
|
+
if !message.nil?
|
56
|
+
notice << char
|
57
|
+
notice << "#{char} #{message}"
|
58
|
+
end
|
57
59
|
notice << char
|
58
60
|
notice << "#{char} Generated @ #{Time.now.utc}"
|
59
61
|
notice << char
|
data/lib/ztk/version.rb
CHANGED
@@ -0,0 +1,41 @@
|
|
1
|
+
################################################################################
|
2
|
+
#
|
3
|
+
# Author: Zachary Patten <zachary AT jovelabs DOT com>
|
4
|
+
# Copyright: Copyright (c) Zachary Patten
|
5
|
+
# License: Apache License, Version 2.0
|
6
|
+
#
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
8
|
+
# you may not use this file except in compliance with the License.
|
9
|
+
# You may obtain a copy of the License at
|
10
|
+
#
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
12
|
+
#
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16
|
+
# See the License for the specific language governing permissions and
|
17
|
+
# limitations under the License.
|
18
|
+
#
|
19
|
+
################################################################################
|
20
|
+
#!/bin/bash
|
21
|
+
set -x
|
22
|
+
|
23
|
+
sudo apt-get -qq update
|
24
|
+
|
25
|
+
ssh -V
|
26
|
+
cat /etc/ssh/sshd_config
|
27
|
+
ls -la $HOME
|
28
|
+
|
29
|
+
eval `ssh-agent -s`
|
30
|
+
ssh-add -L
|
31
|
+
|
32
|
+
mkdir -p $HOME/.ssh
|
33
|
+
ssh-keygen -N '' -f $HOME/.ssh/id_rsa
|
34
|
+
|
35
|
+
ls -la $HOME/.ssh
|
36
|
+
|
37
|
+
cat $HOME/.ssh/id_rsa.pub | tee $HOME/.ssh/authorized_keys
|
38
|
+
cat $HOME/.ssh/id_rsa.pub | tee $HOME/.ssh/authorized_keys2
|
39
|
+
|
40
|
+
ssh-add $HOME/.ssh/id_rsa
|
41
|
+
ssh-add -L
|
data/spec/ztk/parallel_spec.rb
CHANGED
@@ -32,42 +32,81 @@ describe ZTK::Parallel do
|
|
32
32
|
|
33
33
|
end
|
34
34
|
|
35
|
-
describe "
|
35
|
+
describe "methods" do
|
36
36
|
|
37
|
-
it "should throw an exception if the process method is called without a block" do
|
38
|
-
lambda{ subject.process }.should raise_error ZTK::ParallelError, "You must supply a block to the process method!"
|
39
|
-
end
|
40
37
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
38
|
+
describe "#process" do
|
39
|
+
|
40
|
+
it "should throw an exception if the process method is called without a block" do
|
41
|
+
lambda{ subject.process }.should raise_error ZTK::ParallelError, "You must supply a block to the process method!"
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should spawn multiple processes to handle each iteration" do
|
45
|
+
3.times do |x|
|
46
|
+
subject.process do
|
47
|
+
Process.pid
|
48
|
+
end
|
45
49
|
end
|
50
|
+
|
51
|
+
subject.waitall
|
52
|
+
|
53
|
+
subject.results.all?{ |r| r.should be_kind_of Integer }
|
54
|
+
subject.results.all?{ |r| r.should > 0 }
|
55
|
+
subject.results.uniq.count.should == 3
|
56
|
+
subject.results.include?(Process.pid).should be false
|
46
57
|
end
|
47
58
|
|
48
|
-
|
59
|
+
end
|
60
|
+
|
61
|
+
describe "#wait" do
|
62
|
+
|
63
|
+
it "should be able to incrementally wait the forks" do
|
64
|
+
3.times do |x|
|
65
|
+
subject.process do
|
66
|
+
Process.pid
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
3.times do
|
71
|
+
subject.wait
|
72
|
+
end
|
73
|
+
|
74
|
+
subject.results.all?{ |r| r.should be_kind_of Integer }
|
75
|
+
subject.results.all?{ |r| r.should > 0 }
|
76
|
+
subject.results.uniq.count.should == 3
|
77
|
+
subject.results.include?(Process.pid).should be false
|
78
|
+
end
|
49
79
|
|
50
|
-
subject.results.all?{ |r| r.should be_kind_of Integer }
|
51
|
-
subject.results.all?{ |r| r.should > 0 }
|
52
|
-
subject.results.uniq.count.should == 3
|
53
|
-
subject.results.include?(Process.pid).should be false
|
54
80
|
end
|
55
81
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
82
|
+
describe "#waitall" do
|
83
|
+
|
84
|
+
it "should be able to wait for all forks to stop" do
|
85
|
+
3.times do |x|
|
86
|
+
subject.process do
|
87
|
+
Process.pid
|
88
|
+
end
|
60
89
|
end
|
90
|
+
|
91
|
+
subject.waitall
|
92
|
+
subject.count.should == 0
|
61
93
|
end
|
62
94
|
|
63
|
-
|
64
|
-
|
95
|
+
end
|
96
|
+
|
97
|
+
describe "#count" do
|
98
|
+
|
99
|
+
it "should return the number of active forked processes" do
|
100
|
+
3.times do |x|
|
101
|
+
subject.process do
|
102
|
+
sleep(WAIT_SMALL)
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
subject.count.should == 3
|
107
|
+
subject.waitall
|
65
108
|
end
|
66
109
|
|
67
|
-
subject.results.all?{ |r| r.should be_kind_of Integer }
|
68
|
-
subject.results.all?{ |r| r.should > 0 }
|
69
|
-
subject.results.uniq.count.should == 3
|
70
|
-
subject.results.include?(Process.pid).should be false
|
71
110
|
end
|
72
111
|
|
73
112
|
end
|
data/spec/ztk/ssh_spec.rb
CHANGED
@@ -245,7 +245,13 @@ describe ZTK::SSH do
|
|
245
245
|
File.exists?(remote_file) && File.delete(remote_file)
|
246
246
|
|
247
247
|
local_file = File.join("/tmp", "ssh-upload-local")
|
248
|
-
|
248
|
+
if RUBY_VERSION < "1.9.3"
|
249
|
+
File.open(local_file, 'w') do |file|
|
250
|
+
file.puts(data)
|
251
|
+
end
|
252
|
+
else
|
253
|
+
IO.write(local_file, data)
|
254
|
+
end
|
249
255
|
|
250
256
|
File.exists?(remote_file).should == false
|
251
257
|
subject.upload(local_file, remote_file)
|
@@ -273,7 +279,13 @@ describe ZTK::SSH do
|
|
273
279
|
File.exists?(local_file) && File.delete(local_file)
|
274
280
|
|
275
281
|
remote_file = File.join("/tmp", "ssh-download-remote")
|
276
|
-
|
282
|
+
if RUBY_VERSION < "1.9.3"
|
283
|
+
File.open(remote_file, 'w') do |file|
|
284
|
+
file.puts(data)
|
285
|
+
end
|
286
|
+
else
|
287
|
+
IO.write(remote_file, data)
|
288
|
+
end
|
277
289
|
|
278
290
|
File.exists?(local_file).should == false
|
279
291
|
subject.download(remote_file, local_file)
|
@@ -285,7 +297,7 @@ describe ZTK::SSH do
|
|
285
297
|
|
286
298
|
end
|
287
299
|
|
288
|
-
end
|
300
|
+
end
|
289
301
|
|
290
302
|
describe "proxy SSH behaviour" do
|
291
303
|
|
@@ -515,7 +527,13 @@ describe ZTK::SSH do
|
|
515
527
|
File.exists?(remote_file) && File.delete(remote_file)
|
516
528
|
|
517
529
|
local_file = File.join("/tmp", "ssh-upload-local")
|
518
|
-
|
530
|
+
if RUBY_VERSION < "1.9.3"
|
531
|
+
File.open(local_file, 'w') do |file|
|
532
|
+
file.puts(data)
|
533
|
+
end
|
534
|
+
else
|
535
|
+
IO.write(local_file, data)
|
536
|
+
end
|
519
537
|
|
520
538
|
File.exists?(remote_file).should == false
|
521
539
|
subject.upload(local_file, remote_file)
|
@@ -545,7 +563,13 @@ describe ZTK::SSH do
|
|
545
563
|
File.exists?(local_file) && File.delete(local_file)
|
546
564
|
|
547
565
|
remote_file = File.join("/tmp", "ssh-download-remote")
|
548
|
-
|
566
|
+
if RUBY_VERSION < "1.9.3"
|
567
|
+
File.open(remote_file, 'w') do |file|
|
568
|
+
file.puts(data)
|
569
|
+
end
|
570
|
+
else
|
571
|
+
IO.write(remote_file, data)
|
572
|
+
end
|
549
573
|
|
550
574
|
File.exists?(local_file).should == false
|
551
575
|
subject.download(remote_file, local_file)
|
@@ -557,6 +581,6 @@ describe ZTK::SSH do
|
|
557
581
|
|
558
582
|
end
|
559
583
|
|
560
|
-
end
|
584
|
+
end
|
561
585
|
|
562
586
|
end
|
data/spec/ztk/template_spec.rb
CHANGED
@@ -32,13 +32,47 @@ describe ZTK::Template do
|
|
32
32
|
|
33
33
|
end
|
34
34
|
|
35
|
-
describe "
|
35
|
+
describe "methods" do
|
36
|
+
|
37
|
+
describe "do_not_edit_notice" do
|
38
|
+
|
39
|
+
it "should render the notice with no options" do
|
40
|
+
result = subject.do_not_edit_notice
|
41
|
+
result.should =~ /WARNING: AUTOMATICALLY GENERATED FILE; DO NOT EDIT!/
|
42
|
+
result.should =~ /Generated @/
|
43
|
+
result.should =~ /#/
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should render the notice with our message inside" do
|
47
|
+
message = "Hello World"
|
48
|
+
result = subject.do_not_edit_notice(:message => message)
|
49
|
+
result.should =~ /WARNING: AUTOMATICALLY GENERATED FILE; DO NOT EDIT!/
|
50
|
+
result.should =~ /Generated @/
|
51
|
+
result.should =~ /#/
|
52
|
+
result.should =~ /#{message}/
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should allow us to change the comment character" do
|
56
|
+
message = "Hello World"
|
57
|
+
char = "ZZ"
|
58
|
+
result = subject.do_not_edit_notice(:message => message, :char => char)
|
59
|
+
result.should =~ /WARNING: AUTOMATICALLY GENERATED FILE; DO NOT EDIT!/
|
60
|
+
result.should =~ /Generated @/
|
61
|
+
result.should =~ /#{message}/
|
62
|
+
result.should =~ /#{char}/
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
66
|
+
|
67
|
+
describe "render" do
|
68
|
+
|
69
|
+
it "should render the template with the supplied context" do
|
70
|
+
template_file = File.expand_path(File.join(File.dirname(__FILE__), "..", "support", "test-template.txt.erb"))
|
71
|
+
context = { :test_variable => "Hello World" }
|
72
|
+
output = subject.render(template_file, context)
|
73
|
+
output.should == "Hello World"
|
74
|
+
end
|
36
75
|
|
37
|
-
it "should render the template with the supplied context" do
|
38
|
-
template_file = File.expand_path(File.join(File.dirname(__FILE__), "..", "support", "test-template.txt.erb"))
|
39
|
-
context = { :test_variable => "Hello World" }
|
40
|
-
output = subject.render(template_file, context)
|
41
|
-
output.should == "Hello World"
|
42
76
|
end
|
43
77
|
|
44
78
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ztk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -228,6 +228,7 @@ files:
|
|
228
228
|
- lib/ztk/ui.rb
|
229
229
|
- lib/ztk/version.rb
|
230
230
|
- spec/spec_helper.rb
|
231
|
+
- spec/support/before_install.sh
|
231
232
|
- spec/support/test-config.rb
|
232
233
|
- spec/support/test-template.txt.erb
|
233
234
|
- spec/ztk/background_spec.rb
|
@@ -263,7 +264,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
263
264
|
version: '0'
|
264
265
|
segments:
|
265
266
|
- 0
|
266
|
-
hash: -
|
267
|
+
hash: -4478842353570464598
|
267
268
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
268
269
|
none: false
|
269
270
|
requirements:
|
@@ -272,7 +273,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
272
273
|
version: '0'
|
273
274
|
segments:
|
274
275
|
- 0
|
275
|
-
hash: -
|
276
|
+
hash: -4478842353570464598
|
276
277
|
requirements: []
|
277
278
|
rubyforge_project:
|
278
279
|
rubygems_version: 1.8.25
|
@@ -281,6 +282,7 @@ specification_version: 3
|
|
281
282
|
summary: Zachary's (DevOp) Tool Kit
|
282
283
|
test_files:
|
283
284
|
- spec/spec_helper.rb
|
285
|
+
- spec/support/before_install.sh
|
284
286
|
- spec/support/test-config.rb
|
285
287
|
- spec/support/test-template.txt.erb
|
286
288
|
- spec/ztk/background_spec.rb
|