virtualmonkey 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (178) hide show
  1. data/.document +5 -0
  2. data/LICENSE +20 -0
  3. data/README.rdoc +77 -0
  4. data/Rakefile +51 -0
  5. data/VERSION +1 -0
  6. data/bin/grinder +102 -0
  7. data/bin/mcicp +46 -0
  8. data/bin/monkey +12 -0
  9. data/bin/vary_instance_types +59 -0
  10. data/config/cloud_variables/all_clouds.json +30 -0
  11. data/config/cloud_variables/east.json +9 -0
  12. data/config/cloud_variables/rackspace.json +7 -0
  13. data/config/cloud_variables/west.json +9 -0
  14. data/config/common_inputs/apache_haproxy.json +27 -0
  15. data/config/common_inputs/base.json +5 -0
  16. data/config/common_inputs/ebs_toolbox.json +10 -0
  17. data/config/common_inputs/haproxy.json +15 -0
  18. data/config/common_inputs/lamp.json +30 -0
  19. data/config/common_inputs/mysql.json +24 -0
  20. data/config/common_inputs/none.json +4 -0
  21. data/config/common_inputs/php.json +25 -0
  22. data/config/common_inputs/php_aio_trial_chef_alpha.json +3 -0
  23. data/config/common_inputs/php_app_fe_chef.json +12 -0
  24. data/config/common_inputs/php_elb.json +12 -0
  25. data/config/common_inputs/qstart.json +5 -0
  26. data/config/common_inputs/rails.json +31 -0
  27. data/config/common_inputs/rails_aio_demo_chef_alpha.json +3 -0
  28. data/config/common_inputs/rails_aio_developer_chef_alpha.json +10 -0
  29. data/config/common_inputs/rsgrid.json +10 -0
  30. data/config/common_inputs/tomcat.json +15 -0
  31. data/config/common_inputs/windows_blog_engine.json +3 -0
  32. data/config/common_inputs/windows_net_aio.json +14 -0
  33. data/config/troop/11H1/backup/base.json +10 -0
  34. data/config/troop/11H1/backup/lamp_mysql_50.json +10 -0
  35. data/config/troop/11H1/backup/lamp_mysql_51.json +10 -0
  36. data/config/troop/11H1/backup/loadbalancer-php.json +13 -0
  37. data/config/troop/11H1/backup/loadbalancer.json +14 -0
  38. data/config/troop/11H1/backup/loadbalancer_rails.json +13 -0
  39. data/config/troop/11H1/backup/loadbalancer_tomcat6.json +13 -0
  40. data/config/troop/11H1/backup/mysql50.json +11 -0
  41. data/config/troop/11H1/backup/mysql50_toolbox.json +12 -0
  42. data/config/troop/11H1/backup/mysql51.json +11 -0
  43. data/config/troop/11H1/backup/mysql51_toolbox.json +12 -0
  44. data/config/troop/11H1/backup/php_elb.json +11 -0
  45. data/config/troop/11H1/base.json +10 -0
  46. data/config/troop/11H1/ebs_toolbox.json +12 -0
  47. data/config/troop/11H1/lamp_mysql_50.json +10 -0
  48. data/config/troop/11H1/lamp_mysql_51.json +10 -0
  49. data/config/troop/11H1/loadbalancer-php.json +13 -0
  50. data/config/troop/11H1/loadbalancer.json +17 -0
  51. data/config/troop/11H1/loadbalancer_rails.json +13 -0
  52. data/config/troop/11H1/loadbalancer_tomcat6.json +13 -0
  53. data/config/troop/11H1/mysql50.json +11 -0
  54. data/config/troop/11H1/mysql50_toolbox.json +12 -0
  55. data/config/troop/11H1/mysql51.json +11 -0
  56. data/config/troop/11H1/mysql51_awsdns.json +11 -0
  57. data/config/troop/11H1/mysql51_debug.json +11 -0
  58. data/config/troop/11H1/mysql51_toolbox.json +12 -0
  59. data/config/troop/11H1/php.json +13 -0
  60. data/config/troop/11H1/php_elb.json +11 -0
  61. data/config/troop/11H1/rails.json +13 -0
  62. data/config/troop/11H1/tomcat6.json +13 -0
  63. data/config/troop/chef_quickstart.json +10 -0
  64. data/config/troop/just_elb +10 -0
  65. data/config/troop/lamp_v4.json +10 -0
  66. data/config/troop/patch_test.json +10 -0
  67. data/config/troop/rightlink.json +10 -0
  68. data/config/troop/simple_fail.json +11 -0
  69. data/config/troop/simple_pass.json +11 -0
  70. data/config/troop/windows_blog_engine.json +10 -0
  71. data/config/troop/windows_net_aio.json +10 -0
  72. data/config/troop/windows_quick_start.json +10 -0
  73. data/features/base.rb +31 -0
  74. data/features/db_toolbox.rb +59 -0
  75. data/features/ebs_toolbox.rb +62 -0
  76. data/features/lamp.rb +33 -0
  77. data/features/lb-apache-haproxy.rb +49 -0
  78. data/features/mysql_5.x_v2_v4_from_scratch.rb +71 -0
  79. data/features/mysql_5.x_v2_v4_from_scratch_awsdns.rb +71 -0
  80. data/features/mysql_5.x_v2_v4_from_scratch_dyndns.rb +71 -0
  81. data/features/mysql_v1_upgrade_v2.rb +54 -0
  82. data/features/old_cuke_features/Rakefile +121 -0
  83. data/features/old_cuke_features/Steps-TODO +31 -0
  84. data/features/old_cuke_features/app_state.feature +25 -0
  85. data/features/old_cuke_features/app_test.feature +24 -0
  86. data/features/old_cuke_features/base.feature +16 -0
  87. data/features/old_cuke_features/chef_quickstart.feature +11 -0
  88. data/features/old_cuke_features/db_toolbox.feature +38 -0
  89. data/features/old_cuke_features/ebs_toolbox.feature +39 -0
  90. data/features/old_cuke_features/elb_create_delete.feature +41 -0
  91. data/features/old_cuke_features/elb_generic.feature +27 -0
  92. data/features/old_cuke_features/fe_app_checks.feature +21 -0
  93. data/features/old_cuke_features/just-start.feature +13 -0
  94. data/features/old_cuke_features/lamp.feature +15 -0
  95. data/features/old_cuke_features/lb-apache-haproxy.feature +27 -0
  96. data/features/old_cuke_features/mysql_5.x_v2_v4_from_scratch.feature +33 -0
  97. data/features/old_cuke_features/mysql_5.x_v2_v4_from_scratch_awsdns.feature +33 -0
  98. data/features/old_cuke_features/mysql_5.x_v2_v4_from_scratch_dyndns.feature +33 -0
  99. data/features/old_cuke_features/mysql_chef_premium.feature +27 -0
  100. data/features/old_cuke_features/mysql_chef_premium_from_scratch.feature +37 -0
  101. data/features/old_cuke_features/mysql_v1_upgrade_v2.feature +42 -0
  102. data/features/old_cuke_features/php.feature +27 -0
  103. data/features/old_cuke_features/php_aio_trial_chef_alpha.feature +11 -0
  104. data/features/old_cuke_features/php_chef.feature +21 -0
  105. data/features/old_cuke_features/php_elb.feature +41 -0
  106. data/features/old_cuke_features/rails.feature +26 -0
  107. data/features/old_cuke_features/rails_aio_developer_chef.feature +17 -0
  108. data/features/old_cuke_features/reboot.feature +23 -0
  109. data/features/old_cuke_features/rightlink.feature +19 -0
  110. data/features/old_cuke_features/rsgrid.feature +19 -0
  111. data/features/old_cuke_features/simple.feature +8 -0
  112. data/features/old_cuke_features/simple_fail.feature +9 -0
  113. data/features/old_cuke_features/start-stop.feature +13 -0
  114. data/features/old_cuke_features/step_definitions/app.rb +21 -0
  115. data/features/old_cuke_features/step_definitions/deployment_steps.rb +112 -0
  116. data/features/old_cuke_features/step_definitions/ebs.rb +36 -0
  117. data/features/old_cuke_features/step_definitions/elb.rb +35 -0
  118. data/features/old_cuke_features/step_definitions/lb.rb +22 -0
  119. data/features/old_cuke_features/step_definitions/mysql_steps.rb +84 -0
  120. data/features/old_cuke_features/terminate.feature +7 -0
  121. data/features/old_cuke_features/tomcat6-tests-TODO +29 -0
  122. data/features/old_cuke_features/tomcat6.feature +27 -0
  123. data/features/patch_test.rb +33 -0
  124. data/features/php.rb +54 -0
  125. data/features/php_elb.rb +78 -0
  126. data/features/rails.rb +54 -0
  127. data/features/start_only.rb +26 -0
  128. data/features/tomcat6.rb +54 -0
  129. data/lib/virtualmonkey.rb +28 -0
  130. data/lib/virtualmonkey/application.rb +75 -0
  131. data/lib/virtualmonkey/application_frontend.rb +42 -0
  132. data/lib/virtualmonkey/command.rb +39 -0
  133. data/lib/virtualmonkey/command/clone.rb +50 -0
  134. data/lib/virtualmonkey/command/create.rb +21 -0
  135. data/lib/virtualmonkey/command/destroy.rb +51 -0
  136. data/lib/virtualmonkey/command/list.rb +10 -0
  137. data/lib/virtualmonkey/command/run.rb +76 -0
  138. data/lib/virtualmonkey/command/troop.rb +146 -0
  139. data/lib/virtualmonkey/cuke_monk.rb +184 -0
  140. data/lib/virtualmonkey/deployment_monk.rb +132 -0
  141. data/lib/virtualmonkey/deployment_runner.rb +333 -0
  142. data/lib/virtualmonkey/ebs.rb +161 -0
  143. data/lib/virtualmonkey/ebs_runner.rb +59 -0
  144. data/lib/virtualmonkey/elb_runner.rb +194 -0
  145. data/lib/virtualmonkey/fe_app_runner.rb +7 -0
  146. data/lib/virtualmonkey/file_locations.rb +7 -0
  147. data/lib/virtualmonkey/frontend.rb +124 -0
  148. data/lib/virtualmonkey/http_checks.rb +33 -0
  149. data/lib/virtualmonkey/index.html.erb +109 -0
  150. data/lib/virtualmonkey/lamp_runner.rb +29 -0
  151. data/lib/virtualmonkey/mysql.rb +172 -0
  152. data/lib/virtualmonkey/mysql_runner.rb +108 -0
  153. data/lib/virtualmonkey/mysql_toolbox_runner.rb +51 -0
  154. data/lib/virtualmonkey/patch_runner.rb +46 -0
  155. data/lib/virtualmonkey/php_aio_trial_chef_runner.rb +6 -0
  156. data/lib/virtualmonkey/php_chef_runner.rb +69 -0
  157. data/lib/virtualmonkey/rails_aio_developer_chef_runner.rb +8 -0
  158. data/lib/virtualmonkey/shared_dns.rb +67 -0
  159. data/lib/virtualmonkey/simple.rb +5 -0
  160. data/lib/virtualmonkey/simple_runner.rb +6 -0
  161. data/lib/virtualmonkey/test_case_interface.rb +151 -0
  162. data/lib/virtualmonkey/unified_application.rb +40 -0
  163. data/spec/bug3518.rb +16 -0
  164. data/spec/concurrent_writes_spec.rb +26 -0
  165. data/spec/cuke_job_spec.rb +26 -0
  166. data/spec/ek.rb +28 -0
  167. data/spec/little_ruby.rb +20 -0
  168. data/spec/mini.rb +25 -0
  169. data/spec/monitoring.rb +13 -0
  170. data/spec/release_aws_dns.rb +5 -0
  171. data/spec/release_dns.rb +5 -0
  172. data/spec/release_dyndns.rb +5 -0
  173. data/spec/shared_resources_spec.rb +25 -0
  174. data/spec/spec.opts +1 -0
  175. data/spec/spec_helper.rb +11 -0
  176. data/spec/virtualmonkey_spec.rb +7 -0
  177. data/virtualmonkey.gemspec +265 -0
  178. metadata +428 -0
@@ -0,0 +1,36 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__) , '..','..','spec','spec_helper'))
2
+
3
+ Given /A EBS Toolbox deployment/ do
4
+ raise "FATAL: Please set the environment variable $DEPLOYMENT" unless ENV['DEPLOYMENT']
5
+
6
+ @runner = VirtualMonkey::EBSRunner.new(ENV['DEPLOYMENT'])
7
+ @runner.lookup_scripts
8
+ end
9
+
10
+ Then /^I should set a variation volume size "([^\"]*)"$/ do |size|
11
+ @runner.set_variation_volume_size(size)
12
+ end
13
+
14
+ Then /^I should set a variation mount point "([^\"]*)"$/ do |mnt|
15
+ @runner.set_variation_mount_point(mnt)
16
+ end
17
+
18
+ Then /^I should create a new EBS stripe$/ do
19
+ @runner.create_stripe
20
+ end
21
+
22
+ Then /^I should test the backup script operations$/ do
23
+ @runner.test_backup_script_operations
24
+ end
25
+
26
+ Then /^I should backup the volume$/ do
27
+ @runner.create_backup
28
+ end
29
+
30
+ Then /^I should test the restore operations$/ do
31
+ @runner.test_restore
32
+ end
33
+
34
+ Then /^I should test the restore grow operations$/ do
35
+ @runner.test_restore_grow
36
+ end
@@ -0,0 +1,35 @@
1
+ When /^I create EC2 Elastic Load Balancer$/ do
2
+ @runner.create_elb
3
+ end
4
+
5
+ Then /^I should set a variation ELB_NAME$/ do
6
+ @runner.set_elb_name
7
+ end
8
+
9
+ Then /^I should run EC2 Elastic Load Balancer unified_app checks$/ do
10
+ @runner.run_elb_checks
11
+ end
12
+
13
+ When /^I disconnect all servers from ELB$/ do
14
+ @runner.elb_disconnect_all
15
+ end
16
+
17
+ Then /^I should get a http code (\d+) from ELB$/ do |code|
18
+ @runner.elb_response_code(code)
19
+ end
20
+
21
+ Then /^all instances should be registered with ELB$/ do
22
+ @runner.elb_registration_check(:all)
23
+ end
24
+
25
+ Then /^no instances should be registered with ELB$/ do
26
+ @runner.elb_registration_check(:none)
27
+ end
28
+
29
+ When /^I delete EC2 Elastic Load Balancer$/ do
30
+ @runner.destroy_elb
31
+ end
32
+
33
+ #Then /^the servers should strand with "([^"]*)"$/ do |arg1|
34
+ # pending # express the regexp above with the code you wish you had
35
+ #end
@@ -0,0 +1,22 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__) , '..','..','spec','spec_helper'))
2
+
3
+ Given /^An Apache with HAproxy deployment/ do
4
+ raise "FATAL: Please set the environment variable $DEPLOYMENT" unless ENV['DEPLOYMENT']
5
+ @runner = VirtualMonkey::FeAppRunner.new(ENV['DEPLOYMENT'])
6
+ end
7
+
8
+ Then /^I should run log rotation checks/ do
9
+ @runner.log_rotation_checks
10
+ end
11
+
12
+ Then /^I should run frontend checks/ do
13
+ @runner.frontend_checks
14
+ end
15
+
16
+ Then /^I should cross connect the frontends/ do
17
+ @runner.cross_connect_frontends
18
+ end
19
+
20
+ Then /^I should set a variation LB_HOSTNAME/ do
21
+ @runner.set_lb_hostname
22
+ end
@@ -0,0 +1,84 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__) , '..','..','spec','spec_helper'))
2
+
3
+ Then /I should run mysql checks/ do
4
+ @runner.run_checks
5
+ end
6
+
7
+ Then /I should run mysqlslap stress test/ do
8
+ @runner.run_mysqlslap_check
9
+ end
10
+
11
+ Then /I should check that ulimit was set correctly/ do
12
+ @runner.ulimit_check
13
+ end
14
+
15
+ #Then /I should set a variation backup prefix/ do
16
+ # @runner.set_variation_backup_prefix
17
+ #end
18
+
19
+ Then /I should set a variation bucket/ do
20
+ @runner.set_variation_bucket
21
+ end
22
+
23
+ Then /I should test promotion operations on the deployment/ do
24
+ @runner.run_promotion_operations
25
+ end
26
+
27
+ #Then /I should set a chef variation lineage/ do
28
+ # @runner.set_variation_lineage("chef")
29
+ #end
30
+
31
+ Then /I should set a variation lineage/ do
32
+ @runner.set_variation_lineage
33
+ end
34
+
35
+ Then /^I should set a variation stripe count of "([^\"]*)"$/ do |stripe|
36
+ @runner.set_variation_stripe_count(stripe)
37
+ end
38
+
39
+ # This is a hack - when we get rid of cucumber we can clean this up
40
+ # so we only have one DNS variation method
41
+ Then /^I should set a variation AWSDNS provider/ do
42
+ @runner.setup_dns("virtualmonkey_awsdns")
43
+ end
44
+
45
+ Then /^I should set a variation DNS provider/ do
46
+ @runner.setup_dns("virtualmonkey_dyndns")
47
+ end
48
+
49
+ Then /^I should set a variation MySQL DNS/ do
50
+ @runner.setup_dns("virtualmonkey_shared_resources")
51
+ end
52
+
53
+ Then /^I should create the migration script/ do
54
+ @runner.create_migration_script
55
+ end
56
+
57
+ Then /^I should migrate a new slave/ do
58
+ @runner.migrate_slave
59
+ end
60
+
61
+ Then /^I should init a new v2 slave/ do
62
+ @runner.launch_v2_slave
63
+ end
64
+
65
+ Then /^I should test the new v2 slave/ do
66
+ @runner.run_checks
67
+ end
68
+
69
+ Then /^I should release the dns records for use with other deployments$/ do
70
+ @runner.release_dns
71
+ end
72
+
73
+ #Then /^I should setup master dns to point at server "([^\"]*)"$/ do |server_index|
74
+ # @runner.set_master_dns(server_index)
75
+ #end
76
+
77
+ Then /^I should create master from scratch$/ do
78
+ @runner.create_master
79
+ end
80
+
81
+ Then /^I should run a restore using OPT_DB_RESTORE_TIMESTAMP_OVERRIDE$/ do
82
+ @runner.run_restore_with_timestamp_override
83
+ end
84
+
@@ -0,0 +1,7 @@
1
+ Feature: Terminates all servers in all deployments
2
+ Terminate all
3
+
4
+ Scenario: stop all
5
+
6
+ Given A simple deployment
7
+ Then I should stop the servers
@@ -0,0 +1,29 @@
1
+ This is a list of TODO tests. A centralized place for keeping track of the TODO's.
2
+ If the TODO is from ticket then put in the comment.
3
+ # Add test for operational script application checkout.
4
+ WHen I run SCRIPT
5
+ Then it should exit successfully on all servers
6
+ And ?current directory exists with war file?
7
+ And ?can still query the app_server test?
8
+
9
+
10
+ Put these tests back in
11
+ -# When I run "service haproxy status" on all servers
12
+ -# Then it should exit successfully on all servers
13
+ -
14
+ - When I run "apache2ctl -t" on all servers
15
+ - Then it should exit successfully on all servers
16
+ -
17
+ - When I run "test -e /home/haproxy/haproxy" on all servers
18
+ - Then it should exit successfully on all servers
19
+ -
20
+ - When I run "service haproxy check" on all servers
21
+ - Then it should exit successfully on all servers
22
+
23
+ # Check that jcollectd data is collected - make sure after reboot - #3251
24
+
25
+ # Check that SSL certs are installed correctly #3208
26
+
27
+ # Check apache/ps_count is collected - #3393
28
+
29
+ # modify tomcat templates to include inputs for Xms Xmx values #3302
@@ -0,0 +1,27 @@
1
+ @lb_test
2
+
3
+ Feature: PHP Server Templates
4
+ Tests the PHP servers
5
+
6
+ Scenario: PHP server test
7
+
8
+ Given A frontend with application servers deployment
9
+ Then I should stop the servers
10
+ Then I should set a variation for connecting to shared database host
11
+
12
+ When I launch the "Front End" servers
13
+ Then I should wait for the state of "Front End" servers to be "booting"
14
+ Then I should wait for the state of "Front End" servers to be "operational"
15
+ Then I should set a variation LB_HOSTNAME
16
+ When I launch the "App Server" servers
17
+ Then I should wait for the state of "App Server" servers to be "booting"
18
+ Then I should wait for the state of "App Server" servers to be "operational"
19
+ Then I should cross connect the frontends
20
+
21
+ Then I should run unified application checks
22
+ Then I should run frontend checks
23
+ Then I should run log rotation checks
24
+
25
+ Then I should test reboot operations on the deployment
26
+
27
+ Then I should check that monitoring is enabled
@@ -0,0 +1,33 @@
1
+ #@patch
2
+ #
3
+ # Feature: Base Server Test
4
+ # Tests the base server functions
5
+ #
6
+ # Scenario: base server test
7
+ #
8
+ # Given A simple deployment
9
+ @runner = VirtualMonkey::PatchRunner.new(ENV['DEPLOYMENT'])
10
+
11
+ # Then I should stop the servers
12
+ @runner.behavior(:stop_all)
13
+
14
+ #uncomment this line to test patches from dev bucket
15
+ @runner.behavior(:set_user_data, "RS_patch_url=http://s3.amazonaws.com/rightscale_rightlink_dev")
16
+
17
+ # Then I should launch all servers
18
+ @runner.behavior(:launch_all)
19
+
20
+ # Then I should wait for the state of "all" servers to be "operational"
21
+ @runner.behavior(:wait_for_all, "operational")
22
+
23
+ @runner.behavior(:run_patch_test)
24
+
25
+ # Then I should reboot the servers
26
+ @runner.behavior(:reboot_all)
27
+
28
+ @runner.behavior(:run_patch_test)
29
+
30
+ # Then I should wait for the state of "all" servers to be "operational"
31
+ @runner.behavior(:wait_for_all, "operational")
32
+
33
+
@@ -0,0 +1,54 @@
1
+ #@lb_test
2
+ #
3
+ #Feature: PHP Server Templates
4
+ # Tests the PHP servers
5
+ #
6
+ #Scenario: PHP server test
7
+ #
8
+ # Given A frontend with application servers deployment
9
+ @runner = VirtualMonkey::FeAppRunner.new(ENV['DEPLOYMENT'])
10
+
11
+ # Then I should stop the servers
12
+ @runner.behavior(:stop_all)
13
+
14
+ # Then I should set a variation for connecting to shared database host
15
+ @runner.set_var(:set_master_db_dnsname)
16
+
17
+ # When I launch the "Front End" servers
18
+ @runner.behavior(:launch_set, "Front End")
19
+
20
+ # Then I should wait for the state of "Front End" servers to be "booting"
21
+ @runner.behavior(:wait_for_set, "Front End", "booting")
22
+
23
+ # Then I should wait for the state of "Front End" servers to be "operational"
24
+ @runner.behavior(:wait_for_set, "Front End", "operational")
25
+
26
+ # Then I should set a variation LB_HOSTNAME
27
+ @runner.set_var(:set_lb_hostname)
28
+
29
+ # When I launch the "App Server" servers
30
+ @runner.behavior(:launch_set, "App Server")
31
+
32
+ # Then I should wait for the state of "App Server" servers to be "booting"
33
+ @runner.behavior(:wait_for_set, "App Server", "booting")
34
+
35
+ # Then I should wait for the state of "App Server" servers to be "operational"
36
+ @runner.behavior(:wait_for_set, "App Server", "operational")
37
+
38
+ # Then I should cross connect the frontends
39
+ @runner.behavior(:cross_connect_frontends)
40
+
41
+ # Then I should run unified application checks
42
+ @runner.behavior(:run_unified_application_checks, @runner.send(:app_servers))
43
+
44
+ # Then I should run frontend checks
45
+ @runner.behavior(:frontend_checks)
46
+
47
+ # Then I should run log rotation checks
48
+ @runner.behavior(:log_rotation_checks)
49
+
50
+ # Then I should test reboot operations on the deployment
51
+ @runner.behavior(:run_reboot_operations)
52
+
53
+ # Then I should check that monitoring is enabled
54
+ @runner.behavior(:check_monitoring)
@@ -0,0 +1,78 @@
1
+ #@elb_test
2
+ #
3
+ #Feature: PHP App Server Elastic Load Balancing test
4
+ # Tests the Elastic Load Balancing RightScripts using PHP App Server
5
+ #
6
+ #Scenario: Connect/Disconnect PHP App Server to ELB
7
+ #
8
+ # Given An ELB Test deployment
9
+ @runner = VirtualMonkey::ELBRunner.new(ENV['DEPLOYMENT'])
10
+
11
+ # When I create EC2 Elastic Load Balancer
12
+ @runner.set_var(:create_elb)
13
+
14
+ # Then I should stop the servers
15
+ @runner.set_var(:stop_all)
16
+
17
+ # Then I should set a variation for connecting to shared database host
18
+ @runner.set_var(:set_master_db_dnsname)
19
+
20
+ # Then I should set a variation ELB_NAME
21
+ @runner.set_var(:set_elb_name)
22
+
23
+ # When I launch the "App Server" servers
24
+ @runner.behavior(:launch_set, "App Server")
25
+
26
+ # Then I should wait for the state of "App Server" servers to be "booting"
27
+ @runner.behavior(:wait_for_set, "App Server", "booting")
28
+
29
+ # Then I should wait for the state of "App Server" servers to be "operational"
30
+ @runner.behavior(:wait_for_set, "App Server", "operational")
31
+
32
+ # Then I should run EC2 Elastic Load Balancer unified_app checks
33
+ @runner.behavior(:run_elb_checks)
34
+
35
+ # Then all instances should be registered with ELB
36
+ @runner.behavior(:elb_registration_check, :all)
37
+
38
+ ## Then I should run log rotation checks
39
+ # @runner.behavior(:log_rotation_checks)
40
+ #
41
+ ## Then I should check that monitoring is enabled
42
+ # @runner.behavior(:check_monitoring)
43
+ #
44
+ ## Then I should reboot the servers
45
+ # @runner.behavior(:reboot_all)
46
+ #
47
+ ## Then I should run EC2 Elastic Load Balancer unified_app checks
48
+ # @runner.behavior(:run_elb_checks)
49
+ #
50
+ ## Then all instances should be registered with ELB
51
+ # @runner.behavior(:elb_registration_check, :all)
52
+ #
53
+ ## Then I should run log rotation checks
54
+ # @runner.behavior(:log_rotation_checks)
55
+ #
56
+ ## Then I should check that monitoring is enabled
57
+ # @runner.behavior(:check_monitoring)
58
+ #
59
+ # Then I should stop the servers
60
+ @runner.behavior(:stop_all)
61
+
62
+ # Then no instances should be registered with ELB
63
+ @runner.behavior(:elb_registration_check, :none)
64
+
65
+ # When I delete EC2 Elastic Load Balancer
66
+ @runner.behavior(:destroy_elb)
67
+
68
+ ## When I launch the "App Server" servers
69
+ # @runner.behavior(:launch_set, "App Server")
70
+ #
71
+ ## When I should wait for the state of "App Server" servers to be "booting"
72
+ # @runner.behavior(:wait_for_set, "App Server", "booting")
73
+ #
74
+ ## Then I should wait for the state of "App Server" servers to be "stranded"
75
+ # @runner.behavior(:wait_for_set, "App Server", "stranded")
76
+ #
77
+ ## Then I should stop the servers
78
+ # @runner.behavior(:stop_all)
@@ -0,0 +1,54 @@
1
+ #@lb_test
2
+ #
3
+ #Feature: Rails Server Templates
4
+ # Tests the Rails servers
5
+ #
6
+ #Scenario: Rails server test
7
+ #
8
+ # Given A frontend with application servers deployment
9
+ @runner = VirtualMonkey::FeAppRunner.new(ENV['DEPLOYMENT'])
10
+
11
+ # Then I should stop the servers
12
+ @runner.behavior(:stop_all)
13
+
14
+ # Then I should set a variation for connecting to shared database host
15
+ @runner.set_var(:set_master_db_dnsname)
16
+
17
+ # When I launch the "Front End" servers
18
+ @runner.behavior(:launch_set, "Front End")
19
+
20
+ # Then I should wait for the state of "Front End" servers to be "booting"
21
+ @runner.behavior(:wait_for_set, "Front End", "booting")
22
+
23
+ # Then I should wait for the state of "Front End" servers to be "operational"
24
+ @runner.behavior(:wait_for_set, "Front End", "operational")
25
+
26
+ # Then I should set a variation LB_HOSTNAME
27
+ @runner.set_var(:set_lb_hostname)
28
+
29
+ # When I launch the "App Server" servers
30
+ @runner.behavior(:launch_set, "App Server")
31
+
32
+ # Then I should wait for the state of "App Server" servers to be "booting"
33
+ @runner.behavior(:wait_for_set, "App Server", "booting")
34
+
35
+ # Then I should wait for the state of "App Server" servers to be "operational"
36
+ @runner.behavior(:wait_for_set, "App Server", "operational")
37
+
38
+ # Then I should cross connect the frontends
39
+ @runner.behavior(:cross_connect_frontends)
40
+
41
+ # Then I should run unified application checks
42
+ @runner.behavior(:run_unified_application_checks, @runner.send(:app_servers))
43
+
44
+ # Then I should run frontend checks
45
+ @runner.behavior(:frontend_checks)
46
+
47
+ # Then I should run log rotation checks
48
+ @runner.behavior(:log_rotation_checks)
49
+
50
+ # Then I should test reboot operations on the deployment
51
+ @runner.behavior(:run_reboot_operations)
52
+
53
+ # Then I should check that monitoring is enabled
54
+ @runner.behavior(:check_monitoring)