auser-poolparty 0.1.2 → 0.2.2
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.
- data/History.txt +22 -0
- data/License.txt +20 -0
- data/README.txt +52 -0
- data/Rakefile +4 -109
- data/bin/cloud +31 -0
- data/bin/cloud-add-keypair +23 -0
- data/bin/cloud-configure +35 -0
- data/bin/cloud-contract +27 -0
- data/bin/cloud-expand +27 -0
- data/bin/cloud-list +32 -0
- data/bin/cloud-maintain +36 -0
- data/bin/cloud-provision +30 -0
- data/bin/cloud-reconfigure +24 -0
- data/bin/cloud-ssh +18 -0
- data/bin/cloud-start +29 -0
- data/bin/pool +23 -75
- data/bin/pool-console +12 -0
- data/bin/pool-describe +9 -0
- data/bin/pool-list +28 -0
- data/bin/pool-provision +34 -0
- data/bin/pool-spec +17 -0
- data/bin/pool-start +32 -0
- data/examples/basic.rb +20 -0
- data/examples/plugin_without_plugin_directory.rb +13 -0
- data/examples/poolparty.rb +12 -0
- data/examples/with_apache_plugin.rb +22 -0
- data/generators/poolspec/USAGE +5 -0
- data/generators/poolspec/poolspec_generator.rb +65 -0
- data/generators/poolspec/templates/pool_spec_template.erb +9 -0
- data/lib/erlang/eb_server.erl +27 -0
- data/lib/poolparty.rb +40 -116
- data/lib/poolparty/base_packages/haproxy.rb +41 -0
- data/lib/poolparty/base_packages/heartbeat.rb +43 -0
- data/lib/poolparty/base_packages/poolparty.rb +18 -0
- data/lib/poolparty/base_packages/ruby.rb +27 -0
- data/lib/poolparty/core/array.rb +24 -0
- data/lib/{core → poolparty/core}/exception.rb +0 -0
- data/lib/{core → poolparty/core}/float.rb +0 -0
- data/lib/poolparty/core/hash.rb +29 -0
- data/lib/poolparty/core/kernel.rb +34 -0
- data/lib/{core → poolparty/core}/module.rb +18 -0
- data/lib/poolparty/core/my_open_struct.rb +18 -0
- data/lib/poolparty/core/object.rb +54 -0
- data/lib/poolparty/core/proc.rb +2 -0
- data/lib/poolparty/core/string.rb +72 -0
- data/lib/poolparty/core/symbol.rb +8 -0
- data/lib/{core → poolparty/core}/time.rb +15 -0
- data/lib/poolparty/exceptions/RemoteException.rb +12 -0
- data/lib/poolparty/exceptions/ResourceException.rb +7 -0
- data/lib/poolparty/exceptions/RuntimeException.rb +7 -0
- data/lib/poolparty/exceptions/SpecException.rb +7 -0
- data/lib/poolparty/exceptions/TemplateNotFound.rb +7 -0
- data/lib/poolparty/helpers/binary.rb +30 -0
- data/lib/poolparty/helpers/console.rb +30 -0
- data/lib/poolparty/helpers/display.rb +25 -0
- data/lib/poolparty/helpers/optioner.rb +61 -0
- data/lib/poolparty/helpers/provisioner_base.rb +226 -0
- data/lib/poolparty/helpers/provisioners/master.rb +120 -0
- data/lib/poolparty/helpers/provisioners/slave.rb +52 -0
- data/lib/poolparty/modules/cloud_resourcer.rb +72 -0
- data/lib/poolparty/modules/configurable.rb +34 -0
- data/lib/poolparty/modules/definable_resource.rb +59 -0
- data/lib/poolparty/modules/file_writer.rb +55 -0
- data/lib/poolparty/modules/method_missing_sugar.rb +17 -0
- data/lib/poolparty/modules/output.rb +13 -0
- data/lib/poolparty/modules/pretty_printer.rb +38 -0
- data/lib/{core/string.rb → poolparty/modules/s3_string.rb} +5 -29
- data/lib/{modules → poolparty/modules}/safe_instance.rb +0 -0
- data/lib/poolparty/monitors/base_monitor.rb +16 -0
- data/lib/poolparty/net/remote.rb +35 -0
- data/lib/poolparty/net/remote_bases/ec2.rb +145 -0
- data/lib/poolparty/net/remote_instance.rb +68 -0
- data/lib/poolparty/net/remoter.rb +209 -0
- data/lib/poolparty/net/remoter_base.rb +117 -0
- data/lib/poolparty/plugins/gem_package.rb +39 -0
- data/lib/poolparty/plugins/line.rb +76 -0
- data/lib/poolparty/plugins/svn.rb +48 -0
- data/lib/poolparty/pool/base.rb +74 -0
- data/lib/poolparty/pool/cloud.rb +132 -0
- data/lib/poolparty/pool/custom_resource.rb +61 -0
- data/lib/poolparty/pool/loggable.rb +29 -0
- data/lib/poolparty/pool/plugin.rb +42 -0
- data/lib/poolparty/pool/plugin_model.rb +48 -0
- data/lib/poolparty/pool/pool.rb +55 -0
- data/lib/poolparty/pool/resource.rb +235 -0
- data/lib/poolparty/pool/resources/class_package.rb +60 -0
- data/lib/poolparty/pool/resources/cron.rb +14 -0
- data/lib/poolparty/pool/resources/directory.rb +23 -0
- data/lib/poolparty/pool/resources/exec.rb +26 -0
- data/lib/poolparty/pool/resources/file.rb +23 -0
- data/lib/poolparty/pool/resources/gem.rb +14 -0
- data/lib/poolparty/pool/resources/host.rb +14 -0
- data/lib/poolparty/pool/resources/package.rb +14 -0
- data/lib/poolparty/pool/resources/remote_file.rb +20 -0
- data/lib/poolparty/pool/resources/service.rb +21 -0
- data/lib/poolparty/pool/resources/sshkey.rb +19 -0
- data/lib/poolparty/pool/resources/variable.rb +27 -0
- data/lib/poolparty/pool/script.rb +21 -0
- data/{config/heartbeat_authkeys.conf → lib/poolparty/templates/authkeys} +0 -0
- data/lib/poolparty/templates/cib.xml +1 -0
- data/lib/poolparty/templates/fileserver.conf +4 -0
- data/{config/heartbeat.conf → lib/poolparty/templates/ha.cf} +3 -1
- data/{config → lib/poolparty/templates}/haproxy.conf +13 -6
- data/lib/poolparty/templates/namespaceauth.conf +19 -0
- data/lib/poolparty/templates/puppet.conf +13 -0
- data/lib/poolparty/version.rb +9 -0
- data/lib/poolpartycl.rb +3 -0
- data/script/destroy +14 -0
- data/script/generate +14 -0
- data/script/txt2html +82 -0
- data/{lib/poolparty/tasks → tasks}/cloud.rake +1 -1
- data/tasks/deployment.rake +34 -0
- data/tasks/development.rake +78 -0
- data/{lib/poolparty/tasks → tasks}/ec2.rake +1 -1
- data/tasks/environment.rake +7 -0
- data/{lib/poolparty/tasks → tasks}/instance.rake +0 -0
- data/{lib/poolparty/tasks → tasks}/server.rake +0 -0
- data/tasks/spec.rake +17 -0
- data/tasks/website.rake +17 -0
- metadata +154 -249
- data/CHANGELOG +0 -23
- data/LICENSE +0 -22
- data/README +0 -139
- data/assets/clouds.png +0 -0
- data/bin/instance +0 -68
- data/bin/poolnotify +0 -34
- data/config/cloud_master_takeover +0 -17
- data/config/create_proxy_ami.sh +0 -582
- data/config/installers/ubuntu_install.sh +0 -77
- data/config/monit.conf +0 -9
- data/config/monit/haproxy.monit.conf +0 -8
- data/config/monit/nginx.monit.conf +0 -0
- data/config/nginx.conf +0 -24
- data/config/reconfigure_instances_script.sh +0 -37
- data/config/sample-config.yml +0 -23
- data/config/scp_instances_script.sh +0 -12
- data/lib/core/array.rb +0 -16
- data/lib/core/hash.rb +0 -11
- data/lib/core/kernel.rb +0 -12
- data/lib/core/object.rb +0 -21
- data/lib/core/proc.rb +0 -15
- data/lib/helpers/plugin_spec_helper.rb +0 -58
- data/lib/modules/callback.rb +0 -133
- data/lib/modules/ec2_wrapper.rb +0 -108
- data/lib/modules/file_writer.rb +0 -38
- data/lib/modules/sprinkle_overrides.rb +0 -27
- data/lib/modules/vlad_override.rb +0 -83
- data/lib/poolparty/application.rb +0 -199
- data/lib/poolparty/init.rb +0 -6
- data/lib/poolparty/master.rb +0 -492
- data/lib/poolparty/monitors.rb +0 -11
- data/lib/poolparty/monitors/cpu.rb +0 -23
- data/lib/poolparty/monitors/memory.rb +0 -33
- data/lib/poolparty/monitors/web.rb +0 -29
- data/lib/poolparty/optioner.rb +0 -20
- data/lib/poolparty/plugin.rb +0 -78
- data/lib/poolparty/provider.rb +0 -104
- data/lib/poolparty/provider/essential.rb +0 -6
- data/lib/poolparty/provider/git.rb +0 -8
- data/lib/poolparty/provider/haproxy.rb +0 -9
- data/lib/poolparty/provider/heartbeat.rb +0 -6
- data/lib/poolparty/provider/rsync.rb +0 -8
- data/lib/poolparty/provider/ruby.rb +0 -65
- data/lib/poolparty/provider/s3fuse.rb +0 -22
- data/lib/poolparty/remote_instance.rb +0 -250
- data/lib/poolparty/remoter.rb +0 -171
- data/lib/poolparty/remoting.rb +0 -137
- data/lib/poolparty/scheduler.rb +0 -93
- data/lib/poolparty/tasks.rb +0 -47
- data/lib/poolparty/tasks/development.rake +0 -78
- data/lib/poolparty/tasks/plugins.rake +0 -30
- data/lib/poolparty/thread_pool.rb +0 -94
- data/lib/s3/s3_object_store_folders.rb +0 -44
- data/poolparty.gemspec +0 -71
- data/spec/files/describe_response +0 -37
- data/spec/files/multi_describe_response +0 -69
- data/spec/files/remote_desc_response +0 -37
- data/spec/helpers/ec2_mock.rb +0 -57
- data/spec/lib/core/core_spec.rb +0 -26
- data/spec/lib/core/kernel_spec.rb +0 -24
- data/spec/lib/core/string_spec.rb +0 -28
- data/spec/lib/modules/callback_spec.rb +0 -213
- data/spec/lib/modules/file_writer_spec.rb +0 -74
- data/spec/lib/poolparty/application_spec.rb +0 -135
- data/spec/lib/poolparty/ec2_wrapper_spec.rb +0 -110
- data/spec/lib/poolparty/master_spec.rb +0 -479
- data/spec/lib/poolparty/optioner_spec.rb +0 -34
- data/spec/lib/poolparty/plugin_spec.rb +0 -115
- data/spec/lib/poolparty/poolparty_spec.rb +0 -60
- data/spec/lib/poolparty/provider_spec.rb +0 -74
- data/spec/lib/poolparty/remote_instance_spec.rb +0 -178
- data/spec/lib/poolparty/remoter_spec.rb +0 -72
- data/spec/lib/poolparty/remoting_spec.rb +0 -148
- data/spec/lib/poolparty/scheduler_spec.rb +0 -70
- data/spec/monitors/cpu_monitor_spec.rb +0 -39
- data/spec/monitors/memory_spec.rb +0 -51
- data/spec/monitors/misc_monitor_spec.rb +0 -51
- data/spec/monitors/web_spec.rb +0 -40
- data/spec/spec_helper.rb +0 -53
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
require File.dirname(__FILE__) + '/../../spec_helper'
|
|
2
|
-
require File.dirname(__FILE__) + '/../../helpers/ec2_mock'
|
|
3
|
-
|
|
4
|
-
class TestRemote
|
|
5
|
-
include Remoter
|
|
6
|
-
include Callbacks
|
|
7
|
-
attr_accessor :ip
|
|
8
|
-
end
|
|
9
|
-
describe "Remoter" do
|
|
10
|
-
before(:each) do
|
|
11
|
-
stub_option_load
|
|
12
|
-
|
|
13
|
-
@instance = RemoteInstance.new
|
|
14
|
-
@master = Master.new
|
|
15
|
-
|
|
16
|
-
@remoter = TestRemote.new
|
|
17
|
-
@remoter.stub!(:put).and_return "true"
|
|
18
|
-
# @tempfile = Tempfile.new("/tmp") do |f|
|
|
19
|
-
# f << "hi"
|
|
20
|
-
# end
|
|
21
|
-
Application.stub!(:ec2_dir).and_return "/Users"
|
|
22
|
-
Application.stub!(:keypair).and_return "app"
|
|
23
|
-
Application.stub!(:username).and_return "root"
|
|
24
|
-
Application.stub!(:keypair_path).and_return "/Users/id_rsa-app"
|
|
25
|
-
end
|
|
26
|
-
it "should have an ssh method that corresponds to ssm with the keypair" do
|
|
27
|
-
RemoteInstance.ssh_string.should =~ /ssh -o StrictHostKeyChecking=no -l 'root' -i/
|
|
28
|
-
end
|
|
29
|
-
it "should an ssh array that just contains the ssh commands" do
|
|
30
|
-
RemoteInstance.ssh_array.should == ["-o StrictHostKeyChecking=no","-l 'root'","-i '/Users/id_rsa-app'"]
|
|
31
|
-
end
|
|
32
|
-
it "should have a list of ssh_tasks" do
|
|
33
|
-
@remoter.ssh_tasks.should == []
|
|
34
|
-
end
|
|
35
|
-
it "should have a list of scp_tasks" do
|
|
36
|
-
@remoter.scp_tasks.should == []
|
|
37
|
-
end
|
|
38
|
-
it "should reset the values to nil when calling reset" do
|
|
39
|
-
@remoter.target_hosts.should_not be_nil
|
|
40
|
-
@remoter.reset!
|
|
41
|
-
@hosts.should be_nil
|
|
42
|
-
end
|
|
43
|
-
describe "executing" do
|
|
44
|
-
it "should call set_hosts before it executes the tasks" do
|
|
45
|
-
@remoter.should_receive(:set_hosts).once
|
|
46
|
-
@remoter.execute_tasks {}
|
|
47
|
-
end
|
|
48
|
-
it "should not call set_hosts before it executes the task if it explicitly doesn't want it to" do
|
|
49
|
-
@remoter.should_not_receive(:set_hosts)
|
|
50
|
-
@remoter.execute_tasks(:dont_set_hosts => true) {}
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
describe "ssh" do
|
|
54
|
-
before(:each) do
|
|
55
|
-
@arr = []
|
|
56
|
-
@arr << @a = proc{puts "hello"}
|
|
57
|
-
@arr << @b = proc{puts "world"}
|
|
58
|
-
@instance.stub!(:ip).and_return("127.0.0.1")
|
|
59
|
-
end
|
|
60
|
-
it "should run the tasks in an array with run_thread_list" do
|
|
61
|
-
@remoter.should_receive(:run_thread_list).once
|
|
62
|
-
@remoter.run_array_of_tasks(@arr)
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
it "should be able to collect the list of the target hosts's ips" do
|
|
66
|
-
Master.should_receive(:new).and_return(@master)
|
|
67
|
-
@master.stub!(:nodes).and_return([@instance])
|
|
68
|
-
@remoter.target_hosts.should == %w(127.0.0.1)
|
|
69
|
-
end
|
|
70
|
-
end
|
|
71
|
-
end
|
|
72
|
-
end
|
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
require File.dirname(__FILE__) + '/../../spec_helper'
|
|
2
|
-
require File.dirname(__FILE__) + '/../../helpers/ec2_mock'
|
|
3
|
-
|
|
4
|
-
describe "Master remoting: " do
|
|
5
|
-
before(:each) do
|
|
6
|
-
stub_option_load
|
|
7
|
-
|
|
8
|
-
Kernel.stub!(:system).and_return true
|
|
9
|
-
Application.stub!(:environment).and_return("test") # So it doesn't daemonize
|
|
10
|
-
Application.stub!(:minimum_instances).and_return(2)
|
|
11
|
-
Application.stub!(:maximum_instances).and_return(10)
|
|
12
|
-
Application.stub!(:polling_time).and_return(0.1)
|
|
13
|
-
Application.stub!(:verbose).and_return(false) # Turn off messaging
|
|
14
|
-
|
|
15
|
-
@master = Master.new
|
|
16
|
-
@master.launch_new_instance!
|
|
17
|
-
end
|
|
18
|
-
describe "listing" do
|
|
19
|
-
before(:each) do
|
|
20
|
-
Application.stub!(:keypair).and_return("alist")
|
|
21
|
-
@a1={:instance_id => "i-a1", :ip => "127.0.0.1", :status => "running", :launching_time => 10.minutes.ago, :keypair => "alist"}
|
|
22
|
-
@a2={:instance_id => "i-a2", :ip => "127.0.0.3", :status => "running", :launching_time => 2.hours.ago, :keypair => "alist"}
|
|
23
|
-
@a3={:instance_id => "i-a3", :ip => "127.0.0.3", :status => "terminated", :launching_time => 2.hours.ago, :keypair => "alist"}
|
|
24
|
-
@a4={:instance_id => "i-a4", :ip => "127.0.0.4", :status => "pending", :launching_time => 2.hours.ago, :keypair => "alist"}
|
|
25
|
-
|
|
26
|
-
@b1={:instance_id => "i-b1", :ip => "127.0.0.2", :status => "terminated", :launching_time => 55.minutes.ago, :keypair => "blist"}
|
|
27
|
-
@c1={:instance_id => "i-c1", :ip => "127.0.0.4", :status => "pending", :launching_time => 2.days.ago, :keypair => "clist"}
|
|
28
|
-
@master.stub!(:get_instances_description).and_return [@a1, @a2, @a3, @a4, @b1, @c1]
|
|
29
|
-
end
|
|
30
|
-
it "should pull out the list those instances with the keypair requested" do
|
|
31
|
-
@master.list_of_instances.collect {|a| a[:instance_id]}.should == ["i-a1", "i-a2", "i-a3", "i-a4"]
|
|
32
|
-
end
|
|
33
|
-
it "should pull out the list with the blist keypair" do
|
|
34
|
-
Application.stub!(:keypair).and_return("blist")
|
|
35
|
-
@master.list_of_instances.collect {|a| a[:instance_id]}.should == ["i-b1"]
|
|
36
|
-
end
|
|
37
|
-
it "should be able to pull out the list_of_nonterminated_instances" do
|
|
38
|
-
@master.list_of_nonterminated_instances.should == [@a1, @a2, @a4]
|
|
39
|
-
end
|
|
40
|
-
it "should be able to pull the list of list_of_pending_instances" do
|
|
41
|
-
@master.list_of_pending_instances.should == [@a4]
|
|
42
|
-
end
|
|
43
|
-
it "should be able to pull the list of list_of_running_instances" do
|
|
44
|
-
@master.list_of_running_instances.should == [@a1, @a2]
|
|
45
|
-
end
|
|
46
|
-
it "should be able to get the number_of_pending_instances" do
|
|
47
|
-
@master.number_of_pending_instances.should == 1
|
|
48
|
-
end
|
|
49
|
-
it "should be able to grab the number_of_running_instances" do
|
|
50
|
-
@master.number_of_running_instances.should == 2
|
|
51
|
-
end
|
|
52
|
-
it "should be able to grab the entire list of instances" do
|
|
53
|
-
@master.list_of_all_instances.should == [@a1, @a2, @a3, @a4, @b1, @c1]
|
|
54
|
-
end
|
|
55
|
-
it "should be able to grab the entire list sorted by keypair" do
|
|
56
|
-
@master.cloud_keypairs.should == ["alist", "blist", "clist"]
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
describe "starting" do
|
|
60
|
-
before(:each) do
|
|
61
|
-
@master.start_cloud!
|
|
62
|
-
|
|
63
|
-
@a1={:instance_id => "i-a1", :ip => "127.0.0.1", :status => "running", :launching_time => 10.minutes.ago, :keypair => "alist"}
|
|
64
|
-
@a2={:instance_id => "i-a2", :ip => "127.0.0.3", :status => "running", :launching_time => 2.hours.ago, :keypair => "alist"}
|
|
65
|
-
@a3={:instance_id => "i-a3", :ip => "127.0.0.3", :status => "terminated", :launching_time => 2.hours.ago, :keypair => "alist"}
|
|
66
|
-
@a4={:instance_id => "i-a4", :ip => "127.0.0.4", :status => "pending", :launching_time => 2.hours.ago, :keypair => "alist"}
|
|
67
|
-
|
|
68
|
-
@b1={:instance_id => "i-b1", :ip => "127.0.0.2", :status => "terminated", :launching_time => 55.minutes.ago, :keypair => "blist"}
|
|
69
|
-
@c1={:instance_id => "i-c1", :ip => "127.0.0.4", :status => "pending", :launching_time => 2.days.ago, :keypair => "clist"}
|
|
70
|
-
@master.stub!(:get_instances_description).and_return [@a1, @a2, @a3, @a4, @b1, @c1]
|
|
71
|
-
|
|
72
|
-
Application.stub!(:keypair).and_return "alist"
|
|
73
|
-
end
|
|
74
|
-
it "should start the cloud with instances" do
|
|
75
|
-
@master.list_of_instances.should_not be_empty
|
|
76
|
-
end
|
|
77
|
-
it "should start the cloud with running instances" do
|
|
78
|
-
@master.list_of_running_instances.should_not be_empty
|
|
79
|
-
end
|
|
80
|
-
it "should start with the minimum_instances running" do
|
|
81
|
-
wait 0.5 # Give the last one time to get to running
|
|
82
|
-
@master.list_of_running_instances.size.should == Application.minimum_instances
|
|
83
|
-
end
|
|
84
|
-
end
|
|
85
|
-
describe "maintaining" do
|
|
86
|
-
before(:each) do
|
|
87
|
-
Application.stub!(:keypair).and_return "alist"
|
|
88
|
-
end
|
|
89
|
-
it "should maintain the minimum_instances if one goes down" do
|
|
90
|
-
@master.start_cloud!
|
|
91
|
-
wait 0.2 # Give the two instances time to boot up
|
|
92
|
-
(Application.minimum_instances - @master.number_of_pending_and_running_instances).should == 0
|
|
93
|
-
|
|
94
|
-
# Kill one off to test how it handles the response
|
|
95
|
-
@master.terminate_instance!(@master.list_of_running_instances[0][:instance_id])
|
|
96
|
-
(Application.minimum_instances - @master.number_of_pending_and_running_instances).should == 1
|
|
97
|
-
@master.launch_minimum_instances # Assume this runs in the bg process
|
|
98
|
-
|
|
99
|
-
(Application.minimum_instances - @master.number_of_pending_and_running_instances).should == 0
|
|
100
|
-
@master.number_of_pending_and_running_instances.should == Application.minimum_instances
|
|
101
|
-
end
|
|
102
|
-
it "should launch a new instance when the load gets too heavy set in the configs" do
|
|
103
|
-
@master.stub!(:expand?).and_return true
|
|
104
|
-
@master.start_cloud!
|
|
105
|
-
wait 0.5 # Give the two instances time to boot up
|
|
106
|
-
(Application.minimum_instances - @master.number_of_pending_and_running_instances).should == 0
|
|
107
|
-
@master.scale_cloud!
|
|
108
|
-
@master.nodes.size.should == Application.minimum_instances + 1
|
|
109
|
-
end
|
|
110
|
-
it "should terminate an instance when the load shows that it's too light" do
|
|
111
|
-
@master.stub!(:contract?).and_return true
|
|
112
|
-
@master.start_cloud!
|
|
113
|
-
@master.request_launch_new_instance
|
|
114
|
-
wait 0.5 # Give the two instances time to boot up
|
|
115
|
-
@master.number_of_pending_and_running_instances.should == Application.minimum_instances + 1
|
|
116
|
-
@master.scale_cloud!
|
|
117
|
-
@master.number_of_pending_and_running_instances.should == Application.minimum_instances
|
|
118
|
-
end
|
|
119
|
-
end
|
|
120
|
-
describe "configuring" do
|
|
121
|
-
before(:each) do
|
|
122
|
-
@instance = RemoteInstance.new
|
|
123
|
-
@instance.stub!(:ip).and_return "127.0.0.1"
|
|
124
|
-
@instance.stub!(:name).and_return "node0"
|
|
125
|
-
Master.stub!(:new).and_return @master
|
|
126
|
-
@master.stub!(:nodes).and_return [@instance]
|
|
127
|
-
end
|
|
128
|
-
it "should call configure on all of the nodes when calling reconfigure_running_instances" do
|
|
129
|
-
@master.nodes.each {|a|
|
|
130
|
-
a.stub!(:status).and_return("running")
|
|
131
|
-
a.should_receive(:configure).and_return true
|
|
132
|
-
}
|
|
133
|
-
@master.configure_cloud
|
|
134
|
-
end
|
|
135
|
-
it "should call restart_with_monit on all of the nodes when calling restart_running_instances_services" do
|
|
136
|
-
@master.nodes.each {|a| a.should_receive(:restart_with_monit).and_return true }
|
|
137
|
-
@master.restart_running_instances_services
|
|
138
|
-
end
|
|
139
|
-
it "should be able to say there are no number_of_unconfigured_nodes left when all the nodes are configured" do
|
|
140
|
-
@master.nodes.each {|a| a.should_receive(:stack_installed?).and_return true }
|
|
141
|
-
@master.number_of_unconfigured_nodes.should == 0
|
|
142
|
-
end
|
|
143
|
-
it "should be able to say that there is an unconfigured node" do
|
|
144
|
-
@master.nodes[-1].should_receive(:stack_installed?).and_return false
|
|
145
|
-
@master.number_of_unconfigured_nodes.should_not == 0
|
|
146
|
-
end
|
|
147
|
-
end
|
|
148
|
-
end
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
require File.dirname(__FILE__) + '/../../spec_helper'
|
|
2
|
-
|
|
3
|
-
class TestSched
|
|
4
|
-
include Scheduler
|
|
5
|
-
end
|
|
6
|
-
describe "Scheduler" do
|
|
7
|
-
before(:each) do
|
|
8
|
-
@test = TestSched.new
|
|
9
|
-
end
|
|
10
|
-
it "should create a ScheduleTasks" do
|
|
11
|
-
@test._tasker.class.should == ScheduleTasks
|
|
12
|
-
end
|
|
13
|
-
describe "run_thread_loop" do
|
|
14
|
-
before(:each) do
|
|
15
|
-
@klass = Class.new
|
|
16
|
-
@klass.stub!(:pop).once.and_return true
|
|
17
|
-
@block = Proc.new {@klass.pop}
|
|
18
|
-
end
|
|
19
|
-
it "should yield the block that it is given" do
|
|
20
|
-
@test.run_thread_list &@block
|
|
21
|
-
end
|
|
22
|
-
it "should run run_threads" do
|
|
23
|
-
@test.should_receive(:run_threads).and_return true
|
|
24
|
-
@test.run_thread_list &@block
|
|
25
|
-
end
|
|
26
|
-
it "should call run on the _tasker" do
|
|
27
|
-
@test._tasker.should_receive(:run).once.and_return true
|
|
28
|
-
@test.run_thread_list &@block
|
|
29
|
-
end
|
|
30
|
-
describe "ScheduleTasks class" do
|
|
31
|
-
before(:each) do
|
|
32
|
-
@stasks = ScheduleTasks.new
|
|
33
|
-
@test.stub!(:_tasker).and_return(@stasks)
|
|
34
|
-
end
|
|
35
|
-
it "should have its tasks listed as an empty array if there are no tasks added" do
|
|
36
|
-
@stasks.tasks.should == []
|
|
37
|
-
end
|
|
38
|
-
it "should have one task listed if it is added" do
|
|
39
|
-
@test.add_task {@klass.pop}
|
|
40
|
-
@stasks.tasks.size.should == 1
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
describe "when running" do
|
|
44
|
-
before(:each) do
|
|
45
|
-
@test.add_task {@klass.pop}
|
|
46
|
-
end
|
|
47
|
-
it "should not run the tasks after adding them" do
|
|
48
|
-
@klass.should_not_receive(:pop)
|
|
49
|
-
@test.add_task {@klass.pop}
|
|
50
|
-
end
|
|
51
|
-
it "should run the tasks when run_thread_list" do
|
|
52
|
-
@klass.should_receive(:pop)
|
|
53
|
-
@test.run_thread_list
|
|
54
|
-
end
|
|
55
|
-
it "should use the ThreadPool" do
|
|
56
|
-
p = ThreadPool.new(10)
|
|
57
|
-
ThreadPool.should_receive(:new).with(10).and_return p
|
|
58
|
-
@test.run_thread_list
|
|
59
|
-
end
|
|
60
|
-
it "should process each of the tasks" do
|
|
61
|
-
@klass.should_receive(:pop)
|
|
62
|
-
@test.run_thread_list
|
|
63
|
-
end
|
|
64
|
-
it "should empty all the tasks after running them in the loop" do
|
|
65
|
-
@test.run_thread_list
|
|
66
|
-
@test._tasker.tasks.size.should == 0
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
end
|
|
70
|
-
end
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
require File.dirname(__FILE__) + '/../spec_helper'
|
|
2
|
-
require "lib/poolparty/monitors/cpu"
|
|
3
|
-
|
|
4
|
-
describe "monitors" do
|
|
5
|
-
describe "when included" do
|
|
6
|
-
before(:each) do
|
|
7
|
-
stub_option_load
|
|
8
|
-
@master = Master.new
|
|
9
|
-
@instance = RemoteInstance.new
|
|
10
|
-
end
|
|
11
|
-
it "should include them in the Monitors module" do
|
|
12
|
-
@master.methods.include?("cpu").should == true
|
|
13
|
-
end
|
|
14
|
-
it "should also include the new methods in the remote model" do
|
|
15
|
-
RemoteInstance.new.methods.include?("cpu").should == true
|
|
16
|
-
end
|
|
17
|
-
describe "master" do
|
|
18
|
-
before(:each) do
|
|
19
|
-
@master.stub!(:list_of_nonterminated_instances).and_return(
|
|
20
|
-
[{:instance_id => "i-abcdde1"}]
|
|
21
|
-
)
|
|
22
|
-
end
|
|
23
|
-
it "should try to collect the cpu for the entire set of remote instances when calling cpu" do
|
|
24
|
-
@master.nodes.should_receive(:inject).once.with(0).and_return 0.0
|
|
25
|
-
@master.cpu
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
describe "remote instance" do
|
|
29
|
-
it "should try to ssh into the remote instance" do
|
|
30
|
-
@instance.should_receive(:run).once.with("uptime")
|
|
31
|
-
@instance.cpu
|
|
32
|
-
end
|
|
33
|
-
it "should be able to find the exact amount of time the processor has been up" do
|
|
34
|
-
@instance.stub!(:run).once.with("uptime").and_return("18:55:31 up 5 min, 1 user, load average: 0.32, 0.03, 0.00")
|
|
35
|
-
@instance.cpu.should == 0.32
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
end
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
require File.dirname(__FILE__) + '/../spec_helper'
|
|
2
|
-
require "lib/poolparty/monitors/memory"
|
|
3
|
-
|
|
4
|
-
describe "monitors" do
|
|
5
|
-
describe "when included" do
|
|
6
|
-
before(:each) do
|
|
7
|
-
stub_option_load
|
|
8
|
-
@master = Master.new
|
|
9
|
-
@instance = RemoteInstance.new
|
|
10
|
-
end
|
|
11
|
-
it "should include them in the Monitors module" do
|
|
12
|
-
@master.methods.include?("memory").should == true
|
|
13
|
-
end
|
|
14
|
-
it "should also include the new methods in the remote model" do
|
|
15
|
-
@instance.methods.include?("memory").should == true
|
|
16
|
-
end
|
|
17
|
-
describe "master" do
|
|
18
|
-
before(:each) do
|
|
19
|
-
@master.stub!(:list_of_nonterminated_instances).and_return(
|
|
20
|
-
[{:instance_id => "i-abcdde1"}]
|
|
21
|
-
)
|
|
22
|
-
end
|
|
23
|
-
it "should try to collect the cpu for the entire set of remote instances when calling cpu" do
|
|
24
|
-
@master.nodes.should_receive(:inject).once.and_return 0.0
|
|
25
|
-
@master.memory
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
describe "remote instance" do
|
|
29
|
-
it "should try to run into the remote instance" do
|
|
30
|
-
@instance.should_receive(:run).once.with("free -m | grep -i mem")
|
|
31
|
-
@instance.memory
|
|
32
|
-
end
|
|
33
|
-
it "should be able to find the exact amount of time the processor has been up" do
|
|
34
|
-
@instance.stub!(:run).once.with("free -m | grep -i mem").and_return("Mem: 1700 546 1644 0 2 18")
|
|
35
|
-
@instance.memory.round_to(2).should == 0.32
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
# it "should web monitor should be able to extract the amount of the requests it can handle" do
|
|
39
|
-
# str = "Request rate: 1.5 req/s (649.9 ms/req)"
|
|
40
|
-
# # Monitors::Web.monitor_from_string(str).should == 1.5
|
|
41
|
-
# end
|
|
42
|
-
# it "should be able to monitor the percentage of memory available on the server" do
|
|
43
|
-
# str = "Mem: 1700 56 1644 0 2 18"
|
|
44
|
-
# # Monitors::Memory.monitor_from_string(str).to_s.should =~ /0.032/
|
|
45
|
-
# end
|
|
46
|
-
# it "should be able to show the load on the cpu available on the server" do
|
|
47
|
-
# str = "18:55:31 up 5 min, 1 user, load average: 0.32, 0.03, 0.00"
|
|
48
|
-
# # Monitors::Cpu.monitor_from_string(str).should == 0.32
|
|
49
|
-
# end
|
|
50
|
-
end
|
|
51
|
-
end
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
require File.dirname(__FILE__) + '/../spec_helper'
|
|
2
|
-
|
|
3
|
-
module Database
|
|
4
|
-
module Master
|
|
5
|
-
def db
|
|
6
|
-
nodes.inject(0) {|i,inst| i * inst.db} / nodes.size
|
|
7
|
-
end
|
|
8
|
-
end
|
|
9
|
-
module Remote
|
|
10
|
-
def db
|
|
11
|
-
5.0
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
PoolParty.register_monitor Database
|
|
17
|
-
|
|
18
|
-
describe "monitors (random, to spec the inclusion)" do
|
|
19
|
-
describe "when included" do
|
|
20
|
-
before(:each) do
|
|
21
|
-
stub_option_load
|
|
22
|
-
@master = Master.new
|
|
23
|
-
@instance = RemoteInstance.new
|
|
24
|
-
end
|
|
25
|
-
it "should include them in the Monitors module" do
|
|
26
|
-
@master.methods.include?("db").should == true
|
|
27
|
-
end
|
|
28
|
-
it "should also include the new methods in the remote model" do
|
|
29
|
-
@instance.methods.include?("db").should == true
|
|
30
|
-
end
|
|
31
|
-
describe "master" do
|
|
32
|
-
before(:each) do
|
|
33
|
-
@master.stub!(:list_of_nonterminated_instances).and_return(
|
|
34
|
-
[{:instance_id => "i-abcdde1"}]
|
|
35
|
-
)
|
|
36
|
-
end
|
|
37
|
-
it "should try to collect the cpu for the entire set of remote instances when calling cpu" do
|
|
38
|
-
@master.nodes.should_receive(:inject).once.and_return 5.0
|
|
39
|
-
@master.db.should == 5.0
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
describe "remote instance" do
|
|
43
|
-
it "should try to run into the remote instance" do
|
|
44
|
-
@instance.db.should == 5.0
|
|
45
|
-
end
|
|
46
|
-
it "should be able to find the exact amount of time the processor has been up" do
|
|
47
|
-
@instance.db.round_to(2).should == 5.0
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
end
|
data/spec/monitors/web_spec.rb
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
require File.dirname(__FILE__) + '/../spec_helper'
|
|
2
|
-
require "lib/poolparty/monitors/web"
|
|
3
|
-
|
|
4
|
-
describe "monitors" do
|
|
5
|
-
describe "when included" do
|
|
6
|
-
before(:each) do
|
|
7
|
-
stub_option_load
|
|
8
|
-
Application.stub!(:client_port).and_return 8001
|
|
9
|
-
@master = Master.new
|
|
10
|
-
@instance = RemoteInstance.new
|
|
11
|
-
end
|
|
12
|
-
it "should include them in the Monitors module" do
|
|
13
|
-
@master.methods.include?("web").should == true
|
|
14
|
-
end
|
|
15
|
-
it "should also include the new methods in the remote model" do
|
|
16
|
-
@instance.methods.include?("web").should == true
|
|
17
|
-
end
|
|
18
|
-
describe "master" do
|
|
19
|
-
before(:each) do
|
|
20
|
-
@master.stub!(:list_of_nonterminated_instances).and_return(
|
|
21
|
-
[{:instance_id => "i-abcdde1"}]
|
|
22
|
-
)
|
|
23
|
-
end
|
|
24
|
-
it "should try to collect the cpu for the entire set of remote instances when calling cpu" do
|
|
25
|
-
@master.nodes.should_receive(:inject).once.and_return 0.0
|
|
26
|
-
@master.web
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
describe "remote instance" do
|
|
30
|
-
it "should try to run into the remote instance" do
|
|
31
|
-
@instance.should_receive(:run).once.with("httperf --server localhost --port #{Application.client_port} --num-conn 3 --timeout 5 | grep 'Request rate'")
|
|
32
|
-
@instance.web
|
|
33
|
-
end
|
|
34
|
-
it "should be able to find the exact amount of time the processor has been up" do
|
|
35
|
-
@instance.stub!(:run).once.and_return("Request rate: 1.5 req/s (649.9 ms/req)")
|
|
36
|
-
@instance.web.round_to(2).should == 1.5
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
end
|