mirror of
https://github.com/puppetlabs/vmpooler.git
synced 2026-01-26 10:08:40 -05:00
(POOLER-73) Restructure tests to unit and integration directories
Previously all of the spec tests for VM Pooler were all together in the specs directory. However some tests require a working local Redis server to operate and other instead mock all external dependencies. This commit splits the test files between unit and integration, where integration tests require a working Redis instance, and unit tests do not. This commit also removes the root `vmpooler` directory as it is not required. The tests rake test still operates correctly. This commit also adds the mock_redis library for testing for the pool_manager.
This commit is contained in:
parent
eb67ccad5a
commit
8bcf74872a
9 changed files with 1 additions and 0 deletions
173
spec/integration/dashboard_spec.rb
Normal file
173
spec/integration/dashboard_spec.rb
Normal file
|
|
@ -0,0 +1,173 @@
|
|||
require 'spec_helper'
|
||||
require 'rack/test'
|
||||
|
||||
describe Vmpooler::API do
|
||||
include Rack::Test::Methods
|
||||
|
||||
def app()
|
||||
described_class
|
||||
end
|
||||
|
||||
describe 'Dashboard' do
|
||||
|
||||
before(:each) do
|
||||
redis.flushdb
|
||||
end
|
||||
|
||||
context '/' do
|
||||
before { get '/' }
|
||||
|
||||
it { expect(last_response.status).to eq(302) }
|
||||
it { expect(last_response.location).to eq('http://example.org/dashboard/') }
|
||||
end
|
||||
|
||||
context '/dashboard/' do
|
||||
let(:config) { {
|
||||
config: {'site_name' => 'test pooler'}
|
||||
} }
|
||||
|
||||
before do
|
||||
$config = config
|
||||
get '/dashboard/'
|
||||
end
|
||||
|
||||
it { expect(last_response).to be_ok }
|
||||
it { expect(last_response.body).to match(/test pooler/) }
|
||||
it { expect(last_response.body).not_to match(/<b>vmpooler<\/b>/) }
|
||||
end
|
||||
|
||||
context 'unknown route' do
|
||||
before { get '/doesnotexist' }
|
||||
|
||||
it { expect(last_response.status).to eq(404) }
|
||||
it { expect(last_response.header['Content-Type']).to eq('application/json') }
|
||||
it { expect(last_response.body).to eq(JSON.pretty_generate({ok: false})) }
|
||||
end
|
||||
|
||||
describe '/dashboard/stats/vmpooler/pool' do
|
||||
let(:config) { {
|
||||
pools: [
|
||||
{'name' => 'pool1', 'size' => 5},
|
||||
{'name' => 'pool2', 'size' => 1}
|
||||
],
|
||||
graphite: {}
|
||||
} }
|
||||
|
||||
before do
|
||||
$config = config
|
||||
app.settings.set :config, config
|
||||
app.settings.set :redis, redis
|
||||
app.settings.set :environment, :test
|
||||
end
|
||||
|
||||
context 'without history param' do
|
||||
it 'returns basic JSON' do
|
||||
create_ready_vm('pool1', 'vm1')
|
||||
create_ready_vm('pool1', 'vm2')
|
||||
create_ready_vm('pool1', 'vm3')
|
||||
create_ready_vm('pool2', 'vm4')
|
||||
create_ready_vm('pool2', 'vm5')
|
||||
|
||||
get '/dashboard/stats/vmpooler/pool'
|
||||
|
||||
json_hash = {
|
||||
pool1: {size: 5, ready: 3},
|
||||
pool2: {size: 1, ready: 2}
|
||||
}
|
||||
|
||||
expect(last_response).to be_ok
|
||||
expect(last_response.body).to eq(JSON.pretty_generate(json_hash))
|
||||
expect(last_response.header['Content-Type']).to eq('application/json')
|
||||
end
|
||||
end
|
||||
|
||||
context 'with history param' do
|
||||
it 'returns JSON with zeroed history when redis does not have values' do
|
||||
get '/dashboard/stats/vmpooler/pool', :history => true
|
||||
|
||||
json_hash = {
|
||||
pool1: {size: 5, ready: 0, history: [0]},
|
||||
pool2: {size: 1, ready: 0, history: [0]}
|
||||
}
|
||||
|
||||
expect(last_response).to be_ok
|
||||
expect(last_response.body).to eq(JSON.pretty_generate(json_hash))
|
||||
expect(last_response.header['Content-Type']).to eq('application/json')
|
||||
end
|
||||
|
||||
it 'returns JSON with history when redis has values' do
|
||||
create_ready_vm('pool1', 'vm1')
|
||||
create_ready_vm('pool1', 'vm2')
|
||||
create_ready_vm('pool1', 'vm3')
|
||||
create_ready_vm('pool2', 'vm4')
|
||||
create_ready_vm('pool2', 'vm5')
|
||||
|
||||
get '/dashboard/stats/vmpooler/pool', :history => true
|
||||
|
||||
json_hash = {
|
||||
pool1: {size: 5, ready: 3, history: [3]},
|
||||
pool2: {size: 1, ready: 2, history: [2]}
|
||||
}
|
||||
|
||||
expect(last_response).to be_ok
|
||||
expect(last_response.body).to eq(JSON.pretty_generate(json_hash))
|
||||
expect(last_response.header['Content-Type']).to eq('application/json')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '/dashboard/stats/vmpooler/running' do
|
||||
let(:config) { {
|
||||
pools: [
|
||||
{'name' => 'pool-1', 'size' => 5},
|
||||
{'name' => 'pool-2', 'size' => 1},
|
||||
{'name' => 'diffpool-1', 'size' => 3}
|
||||
],
|
||||
graphite: {}
|
||||
} }
|
||||
|
||||
before do
|
||||
$config = config
|
||||
app.settings.set :config, config
|
||||
app.settings.set :redis, redis
|
||||
app.settings.set :environment, :test
|
||||
end
|
||||
|
||||
context 'without history param' do
|
||||
|
||||
it 'returns basic JSON' do
|
||||
get '/dashboard/stats/vmpooler/running'
|
||||
|
||||
json_hash = {pool: {running: 0}, diffpool: {running: 0}}
|
||||
|
||||
expect(last_response).to be_ok
|
||||
expect(last_response.body).to eq(JSON.pretty_generate(json_hash))
|
||||
expect(last_response.header['Content-Type']).to eq('application/json')
|
||||
end
|
||||
|
||||
it 'adds major correctly' do
|
||||
create_running_vm('pool-1', 'vm1')
|
||||
create_running_vm('pool-1', 'vm2')
|
||||
create_running_vm('pool-1', 'vm3')
|
||||
|
||||
create_running_vm('pool-2', 'vm4')
|
||||
create_running_vm('pool-2', 'vm5')
|
||||
create_running_vm('pool-2', 'vm6')
|
||||
create_running_vm('pool-2', 'vm7')
|
||||
create_running_vm('pool-2', 'vm8')
|
||||
|
||||
create_running_vm('diffpool-1', 'vm9')
|
||||
create_running_vm('diffpool-1', 'vm10')
|
||||
|
||||
get '/dashboard/stats/vmpooler/running'
|
||||
|
||||
json_hash = {pool: {running: 8}, diffpool: {running: 2}}
|
||||
|
||||
expect(last_response).to be_ok
|
||||
expect(last_response.body).to eq(JSON.pretty_generate(json_hash))
|
||||
expect(last_response.header['Content-Type']).to eq('application/json')
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue