1
0
mirror of https://github.com/jcwimer/docker-swarm-autoscaler synced 2026-03-24 23:04:43 +00:00
Files
docker-swarm-autoscaler/tests/spec/autoscaler_spec.rb

72 lines
3.2 KiB
Ruby

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