mirror of
https://github.com/jcwimer/docker-swarm-autoscaler
synced 2026-05-21 12:09:25 +00:00
First release with tests
This commit is contained in:
71
tests/spec/autoscaler_spec.rb
Normal file
71
tests/spec/autoscaler_spec.rb
Normal file
@@ -0,0 +1,71 @@
|
||||
require 'spec_helper'
|
||||
current_dir=Dir.pwd
|
||||
# tests dir is current
|
||||
autoscale="#{current_dir}/../docker-swarm-autoscaler/auto-scale.sh"
|
||||
|
||||
describe 'auto-scale.sh' do
|
||||
create_standard_mocks
|
||||
|
||||
context 'scaling docker swarm services' do
|
||||
it 'scales a service with lower than the minimum replicas' do
|
||||
set_standard_mock_outputs
|
||||
|
||||
stdout, stderr, status = stubbed_env.execute("/bin/bash #{autoscale}", {'LOOP' => 'false'})
|
||||
expect(stdout).to include("Service hello_helloworld_too_low_cpu has an autoscale label.")
|
||||
expect(stdout).to include("Service hello_helloworld_too_low_cpu is below the minimum. Scaling to the minimum of 3")
|
||||
expect(status.exitstatus).to eq 0
|
||||
end
|
||||
|
||||
it 'scales a service with low cpu down by 1 replica' do
|
||||
set_standard_mock_outputs
|
||||
|
||||
stdout, stderr, status = stubbed_env.execute("/bin/bash #{autoscale}", {'LOOP' => 'false'})
|
||||
expect(stdout).to include("Service hello_helloworld_low_cpu has an autoscale label.")
|
||||
expect(stdout).to include("Scaling down the service hello_helloworld_low_cpu to 3")
|
||||
expect(status.exitstatus).to eq 0
|
||||
end
|
||||
it 'does not scale a service with low cpu when the minimum replicas is reached' do
|
||||
set_standard_mock_outputs
|
||||
|
||||
stdout, stderr, status = stubbed_env.execute("/bin/bash #{autoscale}", {'LOOP' => 'false'})
|
||||
expect(stdout).to include("Service hello_helloworld_min_replicas_low_cpu has an autoscale label.")
|
||||
expect(stdout).to include("Service hello_helloworld_min_replicas_low_cpu has the minumum number of replicas.")
|
||||
expect(status.exitstatus).to eq 0
|
||||
end
|
||||
|
||||
it 'scales a service with high cpu up by 1 replica' do
|
||||
set_standard_mock_outputs
|
||||
|
||||
stdout, stderr, status = stubbed_env.execute("/bin/bash #{autoscale}", {'LOOP' => 'false'})
|
||||
expect(stdout).to include("Service hello_helloworld_high_cpu has an autoscale label.")
|
||||
expect(stdout).to include("Scaling up the service hello_helloworld_high_cpu to 4")
|
||||
expect(status.exitstatus).to eq 0
|
||||
end
|
||||
|
||||
it 'does not scale a service with high cpu when the max replicas is reached' do
|
||||
set_standard_mock_outputs
|
||||
|
||||
stdout, stderr, status = stubbed_env.execute("/bin/bash #{autoscale}", {'LOOP' => 'false'})
|
||||
expect(stdout).to include("Service hello_helloworld_high_cpu_full_replicas has an autoscale label.")
|
||||
expect(stdout).to include("Service hello_helloworld_high_cpu_full_replicas already has the maximum of 4 replicas")
|
||||
expect(status.exitstatus).to eq 0
|
||||
end
|
||||
|
||||
it 'scales a service with more than the maximum number of replicas' do
|
||||
set_standard_mock_outputs
|
||||
|
||||
stdout, stderr, status = stubbed_env.execute("/bin/bash #{autoscale}", {'LOOP' => 'false'})
|
||||
expect(stdout).to include("Service hello_helloworld_high_cpu_too_many_replicas has an autoscale label.")
|
||||
expect(stdout).to include("Service hello_helloworld_high_cpu_too_many_replicas is above the maximum. Scaling to the maximum of 4")
|
||||
expect(status.exitstatus).to eq 0
|
||||
end
|
||||
|
||||
it 'does not scale a service without an autoscale label' do
|
||||
set_standard_mock_outputs
|
||||
|
||||
stdout, stderr, status = stubbed_env.execute("/bin/bash #{autoscale}", {'LOOP' => 'false'})
|
||||
expect(stdout).to include("Service autoscale_docker-swarm-autoscaler does not have an autoscale label.")
|
||||
expect(status.exitstatus).to eq 0
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user