mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
132 lines
3.3 KiB
Ruby
132 lines
3.3 KiB
Ruby
Shindo.tests("Fog::AWS[:beanstalk] | environment", ['aws', 'beanstalk']) do
|
|
|
|
pending if Fog.mocking?
|
|
|
|
@beanstalk = Fog::AWS[:beanstalk]
|
|
|
|
@application_name = uniq_id('fog-test-app')
|
|
@environment_name = uniq_id('fog-test-env')
|
|
@version_names = []
|
|
# Create two unique version names
|
|
2.times {
|
|
@version_names << uniq_id('fog-test-version')
|
|
}
|
|
|
|
@application = @beanstalk.applications.create({:name => @application_name})
|
|
|
|
@versions = []
|
|
@version_names.each { |name|
|
|
@versions << @beanstalk.versions.create({
|
|
:label => name,
|
|
:application_name => @application_name,
|
|
})
|
|
}
|
|
|
|
@environment_opts = {
|
|
:application_name => @application_name,
|
|
:name => @environment_name,
|
|
:version_label => @version_names[0],
|
|
:solution_stack_name => '32bit Amazon Linux running Tomcat 7'
|
|
}
|
|
|
|
# Note: These model tests can take quite a bit of time to run, about 10 minutes typically.
|
|
model_tests(@beanstalk.environments, @environment_opts, false) do
|
|
# Wait for initial ready before next tests.
|
|
tests("#ready?").succeeds do
|
|
@instance.wait_for { ready? }
|
|
end
|
|
|
|
tests("#healthy?").succeeds do
|
|
@instance.wait_for { healthy? }
|
|
end
|
|
|
|
test("#events") do
|
|
# There should be some events now.
|
|
@instance.events.length > 0
|
|
end
|
|
|
|
test("#version") do
|
|
@instance.version.label == @version_names[0]
|
|
end
|
|
|
|
test("#version= string") do
|
|
# Set to version 2
|
|
@instance.version = @version_names[1]
|
|
|
|
count = 0
|
|
if @instance.version.label == @version_names[1]
|
|
@instance.events.each { |event|
|
|
if event.message == "Environment update is starting."
|
|
count = count + 1
|
|
end
|
|
}
|
|
end
|
|
|
|
count == 1
|
|
end
|
|
|
|
tests("#ready? after version= string").succeeds do
|
|
@instance.wait_for { ready? }
|
|
end
|
|
|
|
test("#version= version object") do
|
|
# reset back to first version using version object
|
|
@instance.version = @versions[0]
|
|
|
|
count = 0
|
|
if @instance.version.label == @version_names[0]
|
|
@instance.events.each { |event|
|
|
if event.message == "Environment update is starting."
|
|
count = count + 1
|
|
end
|
|
}
|
|
end
|
|
|
|
# Pass if we have two environment updating events
|
|
count == 2
|
|
end
|
|
|
|
tests("#ready? after version= version object").succeeds do
|
|
@instance.wait_for { ready? }
|
|
end
|
|
|
|
|
|
test('#restart_app_server') do
|
|
@instance.restart_app_server
|
|
|
|
passed = false
|
|
@instance.events.each { |event|
|
|
if event.message == "restartAppServer is starting."
|
|
passed = true
|
|
end
|
|
}
|
|
passed
|
|
end
|
|
|
|
test('#rebuild') do
|
|
@instance.rebuild
|
|
passed = false
|
|
@instance.events.each { |event|
|
|
if event.message == "rebuildEnvironment is starting."
|
|
passed = true
|
|
end
|
|
}
|
|
passed
|
|
end
|
|
|
|
# Wait for ready or next tests may fail
|
|
tests("#ready? after rebuild").succeeds do
|
|
@instance.wait_for { ready? }
|
|
end
|
|
|
|
end
|
|
|
|
# Wait for instance to terminate before deleting application
|
|
tests('#terminated?').succeeds do
|
|
@instance.wait_for { terminated? }
|
|
end
|
|
|
|
# delete application
|
|
@application.destroy
|
|
|
|
end
|