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,37 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0"?>
|
|
2
|
-
<DescribeInstancesResponse xmlns="http://ec2.amazonaws.com/doc/2008-02-01/">
|
|
3
|
-
<reservationSet>
|
|
4
|
-
<item>
|
|
5
|
-
<reservationId>r-6d539104</reservationId>
|
|
6
|
-
<ownerId>161964561164</ownerId>
|
|
7
|
-
<groupSet>
|
|
8
|
-
<item>
|
|
9
|
-
<groupId>default</groupId>
|
|
10
|
-
</item>
|
|
11
|
-
</groupSet>
|
|
12
|
-
<instancesSet>
|
|
13
|
-
<item>
|
|
14
|
-
<instanceId>i-60bc6a09</instanceId>
|
|
15
|
-
<imageId>ami-4bb05422</imageId>
|
|
16
|
-
<instanceState>
|
|
17
|
-
<code>16</code>
|
|
18
|
-
<name>running</name>
|
|
19
|
-
</instanceState>
|
|
20
|
-
<privateDnsName>domU-12-31-39-00-86-15.compute-1.internal</privateDnsName>
|
|
21
|
-
<dnsName>ec2-75-101-242-244.compute-1.amazonaws.com</dnsName>
|
|
22
|
-
<reason/>
|
|
23
|
-
<keyName>auser</keyName>
|
|
24
|
-
<amiLaunchIndex>0</amiLaunchIndex>
|
|
25
|
-
<productCodes/>
|
|
26
|
-
<instanceType>m1.small</instanceType>
|
|
27
|
-
<launchTime>2008-06-25T20:14:35.000Z</launchTime>
|
|
28
|
-
<placement>
|
|
29
|
-
<availabilityZone>us-east-1b</availabilityZone>
|
|
30
|
-
</placement>
|
|
31
|
-
<kernelId>aki-a71cf9ce</kernelId>
|
|
32
|
-
<ramdiskId>ari-a51cf9cc</ramdiskId>
|
|
33
|
-
</item>
|
|
34
|
-
</instancesSet>
|
|
35
|
-
</item>
|
|
36
|
-
</reservationSet>
|
|
37
|
-
</DescribeInstancesResponse>
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0"?>
|
|
2
|
-
<DescribeInstancesResponse xmlns="http://ec2.amazonaws.com/doc/2008-02-01/">
|
|
3
|
-
<reservationSet>
|
|
4
|
-
<item>
|
|
5
|
-
<reservationId>r-7678ba1f</reservationId>
|
|
6
|
-
<ownerId>802044448869</ownerId>
|
|
7
|
-
<groupSet>
|
|
8
|
-
<item>
|
|
9
|
-
<groupId>default</groupId>
|
|
10
|
-
</item>
|
|
11
|
-
</groupSet>
|
|
12
|
-
<instancesSet>
|
|
13
|
-
<item>
|
|
14
|
-
<instanceId>i-6df12704</instanceId>
|
|
15
|
-
<imageId>ami-3057b259</imageId>
|
|
16
|
-
<instanceState>
|
|
17
|
-
<code>16</code>
|
|
18
|
-
<name>running</name>
|
|
19
|
-
</instanceState>
|
|
20
|
-
<privateDnsName>ip-10-251-199-97.ec2.internal</privateDnsName>
|
|
21
|
-
<dnsName>ec2-72-44-39-61.compute-1.amazonaws.com</dnsName>
|
|
22
|
-
<reason/>
|
|
23
|
-
<keyName>pjc-keypair</keyName>
|
|
24
|
-
<amiLaunchIndex>0</amiLaunchIndex>
|
|
25
|
-
<productCodes/>
|
|
26
|
-
<instanceType>m1.small</instanceType>
|
|
27
|
-
<launchTime>2008-06-26T21:55:52.000Z</launchTime>
|
|
28
|
-
<placement>
|
|
29
|
-
<availabilityZone>us-east-1c</availabilityZone>
|
|
30
|
-
</placement>
|
|
31
|
-
<kernelId>aki-a71cf9ce</kernelId>
|
|
32
|
-
<ramdiskId>ari-a51cf9cc</ramdiskId>
|
|
33
|
-
</item>
|
|
34
|
-
</instancesSet>
|
|
35
|
-
</item>
|
|
36
|
-
<item>
|
|
37
|
-
<reservationId>r-4978ba20</reservationId>
|
|
38
|
-
<ownerId>802044448869</ownerId>
|
|
39
|
-
<groupSet>
|
|
40
|
-
<item>
|
|
41
|
-
<groupId>default</groupId>
|
|
42
|
-
</item>
|
|
43
|
-
</groupSet>
|
|
44
|
-
<instancesSet>
|
|
45
|
-
<item>
|
|
46
|
-
<instanceId>i-6cf12705</instanceId>
|
|
47
|
-
<imageId>ami-3057b259</imageId>
|
|
48
|
-
<instanceState>
|
|
49
|
-
<code>16</code>
|
|
50
|
-
<name>running</name>
|
|
51
|
-
</instanceState>
|
|
52
|
-
<privateDnsName>ip-10-251-198-230.ec2.internal</privateDnsName>
|
|
53
|
-
<dnsName>ec2-75-101-236-239.compute-1.amazonaws.com</dnsName>
|
|
54
|
-
<reason/>
|
|
55
|
-
<keyName>pjc-keypair</keyName>
|
|
56
|
-
<amiLaunchIndex>0</amiLaunchIndex>
|
|
57
|
-
<productCodes/>
|
|
58
|
-
<instanceType>m1.small</instanceType>
|
|
59
|
-
<launchTime>2008-06-26T21:55:55.000Z</launchTime>
|
|
60
|
-
<placement>
|
|
61
|
-
<availabilityZone>us-east-1c</availabilityZone>
|
|
62
|
-
</placement>
|
|
63
|
-
<kernelId>aki-a71cf9ce</kernelId>
|
|
64
|
-
<ramdiskId>ari-a51cf9cc</ramdiskId>
|
|
65
|
-
</item>
|
|
66
|
-
</instancesSet>
|
|
67
|
-
</item>
|
|
68
|
-
</reservationSet>
|
|
69
|
-
</DescribeInstancesResponse>
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0"?>
|
|
2
|
-
<DescribeInstancesResponse xmlns="http://ec2.amazonaws.com/doc/2008-02-01/">
|
|
3
|
-
<reservationSet>
|
|
4
|
-
<item>
|
|
5
|
-
<reservationId>r-ec8d4085</reservationId>
|
|
6
|
-
<ownerId>161964561164</ownerId>
|
|
7
|
-
<groupSet>
|
|
8
|
-
<item>
|
|
9
|
-
<groupId>default</groupId>
|
|
10
|
-
</item>
|
|
11
|
-
</groupSet>
|
|
12
|
-
<instancesSet>
|
|
13
|
-
<item>
|
|
14
|
-
<instanceId>i-94f82efd</instanceId>
|
|
15
|
-
<imageId>ami-4bb05422</imageId>
|
|
16
|
-
<instanceState>
|
|
17
|
-
<code>16</code>
|
|
18
|
-
<name>running</name>
|
|
19
|
-
</instanceState>
|
|
20
|
-
<privateDnsName>ip-10-251-203-148.ec2.internal</privateDnsName>
|
|
21
|
-
<dnsName>ec2-75-101-205-180.compute-1.amazonaws.com</dnsName>
|
|
22
|
-
<reason/>
|
|
23
|
-
<keyName>auser</keyName>
|
|
24
|
-
<amiLaunchIndex>0</amiLaunchIndex>
|
|
25
|
-
<productCodes/>
|
|
26
|
-
<instanceType>m1.small</instanceType>
|
|
27
|
-
<launchTime>2008-06-27T02:25:26.000Z</launchTime>
|
|
28
|
-
<placement>
|
|
29
|
-
<availabilityZone>us-east-1a</availabilityZone>
|
|
30
|
-
</placement>
|
|
31
|
-
<kernelId>aki-a71cf9ce</kernelId>
|
|
32
|
-
<ramdiskId>ari-a51cf9cc</ramdiskId>
|
|
33
|
-
</item>
|
|
34
|
-
</instancesSet>
|
|
35
|
-
</item>
|
|
36
|
-
</reservationSet>
|
|
37
|
-
</DescribeInstancesResponse>
|
data/spec/helpers/ec2_mock.rb
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
module PoolParty
|
|
2
|
-
module Ec2Wrapper
|
|
3
|
-
module InstanceMethods
|
|
4
|
-
def ec2
|
|
5
|
-
@ec2 ||= EC2::Base.new(:access_key_id => "access", :secret_access_key => "shhhh")
|
|
6
|
-
end
|
|
7
|
-
end
|
|
8
|
-
end
|
|
9
|
-
class Master
|
|
10
|
-
def launch_new_instance!
|
|
11
|
-
letter = ("a".."z").to_a[instances.size] # For unique instance_ids
|
|
12
|
-
h = {:instance_id => "i-58ba56#{letter}", :ip => "ip-127-0-0-1.aws.amazonaws.com", :status => "pending", :keypair => "alist", :launching_time => Time.now }
|
|
13
|
-
instances << h
|
|
14
|
-
Thread.new {wait 0.01;h[:status] = "running"} # Simulate the startup time
|
|
15
|
-
return h
|
|
16
|
-
end
|
|
17
|
-
# Shutdown the instance by instance_id
|
|
18
|
-
def terminate_instance!(instance_id)
|
|
19
|
-
instances.select {|a| a[:instance_id] == instance_id}[0][:status] = "terminating"
|
|
20
|
-
end
|
|
21
|
-
# Instance description
|
|
22
|
-
def describe_instance(id)
|
|
23
|
-
item = instances.select {|a| a[:instance_id] == id}[0]
|
|
24
|
-
EC2ResponseObject.get_hash_from_response(item)
|
|
25
|
-
end
|
|
26
|
-
# Get instance by id
|
|
27
|
-
def get_instance_by_id(id)
|
|
28
|
-
get_instances_description.select {|a| a.instance_id == id}[0] rescue nil
|
|
29
|
-
end
|
|
30
|
-
# Get the s3 description for the response in a hash format
|
|
31
|
-
def get_instances_description
|
|
32
|
-
instances
|
|
33
|
-
end
|
|
34
|
-
def get_non_empty_instances_description
|
|
35
|
-
EC2::Response.parse(:xml => open("#{File.dirname(__FILE__)}/../files/response.txt").read)
|
|
36
|
-
end
|
|
37
|
-
# Fake the ec2 connection
|
|
38
|
-
def ec2
|
|
39
|
-
@ec2 ||= EC2::Base.new(:access_key_id => "not a key", :secret_access_key => "not a key")
|
|
40
|
-
end
|
|
41
|
-
# Some basic instances, not totally necessary
|
|
42
|
-
def instances
|
|
43
|
-
@instances ||= []
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
class RemoteInstance
|
|
47
|
-
def ssh(l="")
|
|
48
|
-
"true"
|
|
49
|
-
end
|
|
50
|
-
def scp(s,d,o={})
|
|
51
|
-
"true"
|
|
52
|
-
end
|
|
53
|
-
def run(s)
|
|
54
|
-
"true"
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
end
|
data/spec/lib/core/core_spec.rb
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
require File.dirname(__FILE__) + '/../../spec_helper'
|
|
2
|
-
|
|
3
|
-
describe "Hash" do
|
|
4
|
-
it "should preserve the contents of the original hash when safe_merge'ing" do
|
|
5
|
-
a = {:a => "10", :b => "20"}
|
|
6
|
-
b = {:b => "30", :c => "40"}
|
|
7
|
-
a.safe_merge(b).should == {:a => "10", :b => "20", :c => "40"}
|
|
8
|
-
end
|
|
9
|
-
it "should preserve the contents of the original hash when safe_merge!'ing" do
|
|
10
|
-
a = {:a => "10", :b => "20"}
|
|
11
|
-
b = {:b => "30", :c => "40"}
|
|
12
|
-
a.safe_merge!(b)
|
|
13
|
-
a.should == {:a => "10", :b => "20", :c => "40"}
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
describe "String" do
|
|
17
|
-
before(:each) do
|
|
18
|
-
@str =<<-EOS
|
|
19
|
-
echo 'hi'
|
|
20
|
-
puts 'hi'
|
|
21
|
-
EOS
|
|
22
|
-
end
|
|
23
|
-
it "should be able to convert a big string with \n to a runnable string" do
|
|
24
|
-
@str.runnable.should == "echo 'hi' && puts 'hi'"
|
|
25
|
-
end
|
|
26
|
-
end
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
require File.dirname(__FILE__) + '/../../spec_helper'
|
|
2
|
-
|
|
3
|
-
describe "Kernel extensions" do
|
|
4
|
-
before(:each) do
|
|
5
|
-
@host = Master.new
|
|
6
|
-
end
|
|
7
|
-
it "should eval the string into time" do
|
|
8
|
-
@host.should_receive(:sleep).once.and_return true
|
|
9
|
-
@host.wait "10.seconds"
|
|
10
|
-
end
|
|
11
|
-
end
|
|
12
|
-
describe "Object extensions" do
|
|
13
|
-
before(:each) do
|
|
14
|
-
@klass = Object.new
|
|
15
|
-
@klass.instance_eval <<-EOE
|
|
16
|
-
def hello
|
|
17
|
-
puts "hello"
|
|
18
|
-
end
|
|
19
|
-
EOE
|
|
20
|
-
end
|
|
21
|
-
it "should be able to get a list of the defined methods on the object" do
|
|
22
|
-
@klass.my_methods.should == ["hello"]
|
|
23
|
-
end
|
|
24
|
-
end
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
require File.dirname(__FILE__) + '/../../spec_helper'
|
|
2
|
-
|
|
3
|
-
describe "String" do
|
|
4
|
-
before(:each) do
|
|
5
|
-
@string = "string"
|
|
6
|
-
@string.stub!(:bucket_objects).and_return([])
|
|
7
|
-
end
|
|
8
|
-
# Dumb test
|
|
9
|
-
it "should be able to call bucket_objects on itself" do
|
|
10
|
-
@string.should_receive(:bucket_objects)
|
|
11
|
-
@string.bucket_objects
|
|
12
|
-
end
|
|
13
|
-
describe "with config replacements" do
|
|
14
|
-
it "should replace those syms in the string" do
|
|
15
|
-
("new :port" ^ {:port => 100}).should == "new 100"
|
|
16
|
-
end
|
|
17
|
-
it "should be able to detect vars" do
|
|
18
|
-
@string=<<-EOC
|
|
19
|
-
listen web_proxy 127.0.0.1::client_port
|
|
20
|
-
\tserver web1 127.0.0.1::port weight 1 minconn 3 maxconn 6 check inter 30000
|
|
21
|
-
EOC
|
|
22
|
-
(@string ^ {:client_port => 3000, :port => 3001}).should ==<<-EOO
|
|
23
|
-
listen web_proxy 127.0.0.1:3000
|
|
24
|
-
\tserver web1 127.0.0.1:3001 weight 1 minconn 3 maxconn 6 check inter 30000
|
|
25
|
-
EOO
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
@@ -1,213 +0,0 @@
|
|
|
1
|
-
require File.dirname(__FILE__) + '/../../spec_helper'
|
|
2
|
-
|
|
3
|
-
class TestCallbacks
|
|
4
|
-
include Callbacks
|
|
5
|
-
attr_reader :str
|
|
6
|
-
|
|
7
|
-
before :world, :hello
|
|
8
|
-
after :world, :thanks
|
|
9
|
-
|
|
10
|
-
def hello(caller)
|
|
11
|
-
string << "hello "
|
|
12
|
-
end
|
|
13
|
-
def world
|
|
14
|
-
string << "world"
|
|
15
|
-
end
|
|
16
|
-
def thanks(caller)
|
|
17
|
-
string << ", thank you"
|
|
18
|
-
end
|
|
19
|
-
after :pop, :boom
|
|
20
|
-
def pop
|
|
21
|
-
string << "pop"
|
|
22
|
-
end
|
|
23
|
-
def boom(caller)
|
|
24
|
-
string << " goes boom"
|
|
25
|
-
end
|
|
26
|
-
def string
|
|
27
|
-
@str ||= String.new
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
describe "Callbacks" do
|
|
31
|
-
before(:each) do
|
|
32
|
-
@klass = TestCallbacks.new
|
|
33
|
-
end
|
|
34
|
-
it "should retain it's class identifier" do
|
|
35
|
-
@klass.class.should == TestCallbacks
|
|
36
|
-
end
|
|
37
|
-
it "should callback the method before the method runs" do
|
|
38
|
-
@klass.world.should == "hello world, thank you"
|
|
39
|
-
end
|
|
40
|
-
it "should callback the method before the method runs" do
|
|
41
|
-
@klass.pop.should == "pop goes boom"
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
class TestMultipleCallbacks
|
|
45
|
-
include Callbacks
|
|
46
|
-
attr_reader :str
|
|
47
|
-
def hi(caller)
|
|
48
|
-
string << "hi, "
|
|
49
|
-
end
|
|
50
|
-
def hello(caller)
|
|
51
|
-
string << "hello "
|
|
52
|
-
end
|
|
53
|
-
def world
|
|
54
|
-
string << "world"
|
|
55
|
-
end
|
|
56
|
-
def string
|
|
57
|
-
@str ||= String.new
|
|
58
|
-
end
|
|
59
|
-
before :world, :hi, :hello
|
|
60
|
-
end
|
|
61
|
-
describe "Multiple callbacks" do
|
|
62
|
-
before(:each) do
|
|
63
|
-
@klass = TestMultipleCallbacks.new
|
|
64
|
-
end
|
|
65
|
-
it "should be able to have multiple callbacks on the same call" do
|
|
66
|
-
@klass.world.should == "hi, hello world"
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
class OutsideClass
|
|
70
|
-
def self.hello(caller)
|
|
71
|
-
"hello"
|
|
72
|
-
end
|
|
73
|
-
end
|
|
74
|
-
class TestOutsideClass
|
|
75
|
-
include Callbacks
|
|
76
|
-
before :world, {:hello => OutsideClass}
|
|
77
|
-
def world
|
|
78
|
-
"world"
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
describe "Options" do
|
|
82
|
-
before(:each) do
|
|
83
|
-
@c = TestOutsideClass.new
|
|
84
|
-
end
|
|
85
|
-
it "should be able to pass external class options to the callback" do
|
|
86
|
-
OutsideClass.should_receive(:hello).and_return "hello"
|
|
87
|
-
@c.world
|
|
88
|
-
end
|
|
89
|
-
end
|
|
90
|
-
class BlockClass
|
|
91
|
-
include Callbacks
|
|
92
|
-
before :world do
|
|
93
|
-
string << "hello "
|
|
94
|
-
end
|
|
95
|
-
def world
|
|
96
|
-
string << "world"
|
|
97
|
-
end
|
|
98
|
-
def string
|
|
99
|
-
@string ||= ""
|
|
100
|
-
end
|
|
101
|
-
end
|
|
102
|
-
describe "Block callbacks" do
|
|
103
|
-
it "should call the block on the callback" do
|
|
104
|
-
BlockClass.new.world.should == "hello world"
|
|
105
|
-
end
|
|
106
|
-
end
|
|
107
|
-
class BlockAndMethodClass
|
|
108
|
-
include Callbacks
|
|
109
|
-
before :world, :hi do
|
|
110
|
-
string << "hello "
|
|
111
|
-
end
|
|
112
|
-
def world
|
|
113
|
-
string << "world"
|
|
114
|
-
end
|
|
115
|
-
def hi(caller)
|
|
116
|
-
string << "hi, "
|
|
117
|
-
end
|
|
118
|
-
def string
|
|
119
|
-
@string ||= ""
|
|
120
|
-
end
|
|
121
|
-
end
|
|
122
|
-
describe "Block and method callbacks" do
|
|
123
|
-
it "should call the block on the callback and add the block" do
|
|
124
|
-
BlockAndMethodClass.new.world.should == "hi, hello world"
|
|
125
|
-
end
|
|
126
|
-
end
|
|
127
|
-
class ExternalMethodCallClass
|
|
128
|
-
include Callbacks
|
|
129
|
-
before :world, :hello
|
|
130
|
-
after :hello, :peter
|
|
131
|
-
|
|
132
|
-
def world
|
|
133
|
-
string << "world"
|
|
134
|
-
end
|
|
135
|
-
def hello(caller)
|
|
136
|
-
string << "hello "
|
|
137
|
-
end
|
|
138
|
-
def peter(caller)
|
|
139
|
-
string << "peter "
|
|
140
|
-
end
|
|
141
|
-
def string
|
|
142
|
-
@string ||= ""
|
|
143
|
-
end
|
|
144
|
-
end
|
|
145
|
-
describe "External method callbacks inside a method" do
|
|
146
|
-
it "should call the block on the callback and add the " do
|
|
147
|
-
ExternalMethodCallClass.new.world.should == "hello peter world"
|
|
148
|
-
end
|
|
149
|
-
end
|
|
150
|
-
class OutsideBindingClass
|
|
151
|
-
def hello(caller)
|
|
152
|
-
caller.string << "hello"
|
|
153
|
-
end
|
|
154
|
-
end
|
|
155
|
-
class BindingClass
|
|
156
|
-
include Callbacks
|
|
157
|
-
before :world, :hello => "OutsideBindingClass"
|
|
158
|
-
def world
|
|
159
|
-
string << "#{@hello} world"
|
|
160
|
-
end
|
|
161
|
-
def string
|
|
162
|
-
@string ||= ""
|
|
163
|
-
end
|
|
164
|
-
end
|
|
165
|
-
describe "Methods" do
|
|
166
|
-
it "should have access to the local variables of the call" do
|
|
167
|
-
BindingClass.new.world.should == "hello world"
|
|
168
|
-
end
|
|
169
|
-
end
|
|
170
|
-
class EvilOutsideClass
|
|
171
|
-
attr_reader :name
|
|
172
|
-
def get_name(caller)
|
|
173
|
-
@name = caller.hello
|
|
174
|
-
end
|
|
175
|
-
def show_name(caller)
|
|
176
|
-
@name
|
|
177
|
-
end
|
|
178
|
-
end
|
|
179
|
-
class BindingClass
|
|
180
|
-
include Callbacks
|
|
181
|
-
before :print, :get_name => "EvilOutsideClass"
|
|
182
|
-
def print
|
|
183
|
-
"hello"
|
|
184
|
-
end
|
|
185
|
-
def hello
|
|
186
|
-
"franke"
|
|
187
|
-
end
|
|
188
|
-
end
|
|
189
|
-
describe "Variables on the plugin callbacker class" do
|
|
190
|
-
it "should have a new method of the class" do
|
|
191
|
-
BindingClass.new.print
|
|
192
|
-
BindingClass.new.methods.include?("eviloutsideclass").should == true
|
|
193
|
-
end
|
|
194
|
-
end
|
|
195
|
-
class DoubleClass
|
|
196
|
-
include Callbacks
|
|
197
|
-
before :print, :hello => "OutsideBindingClass"
|
|
198
|
-
after :print, :hello => "OutsideBindingClass"
|
|
199
|
-
|
|
200
|
-
def print
|
|
201
|
-
string
|
|
202
|
-
end
|
|
203
|
-
def string
|
|
204
|
-
@string ||= ""
|
|
205
|
-
end
|
|
206
|
-
end
|
|
207
|
-
describe "Chaining" do
|
|
208
|
-
it "should be able to call both a before and an after spec" do
|
|
209
|
-
@d = DoubleClass.new
|
|
210
|
-
@d.print
|
|
211
|
-
@d.string.should == "hellohello"
|
|
212
|
-
end
|
|
213
|
-
end
|