mirror of
https://github.com/OpenNebula/one.git
synced 2024-12-27 03:21:29 +03:00
feature #788: Add quota tests
This commit is contained in:
parent
a3fa381852
commit
6b2c903ea2
26
src/authm_mad/remotes/quota/test/fixtures/imagepool.xml
vendored
Normal file
26
src/authm_mad/remotes/quota/test/fixtures/imagepool.xml
vendored
Normal file
@ -0,0 +1,26 @@
|
||||
<IMAGE_POOL>
|
||||
<% images.each do |id,image| %>
|
||||
<IMAGE>
|
||||
<ID><%= id %></ID>
|
||||
<UID><%= image[:uid] ? image[:uid] : 0 %></UID>
|
||||
<GID><%= image[:gid] ? image[:gid] : 0 %></GID>
|
||||
<UNAME><%= image[:uname] ? image[:uname] : 'oneadmin' %></UNAME>
|
||||
<GNAME><%= image[:gname] ? image[:gname] : 'oneadmin' %></GNAME>
|
||||
<NAME><%= image[:name] ? image[:name] : 'ttylinux' %></NAME>
|
||||
<TYPE><%= image[:type] ? image[:type] : 0 %></TYPE>
|
||||
<PUBLIC><%= image[:pub] ? image[:pub] : 0 %></PUBLIC>
|
||||
<PERSISTENT><%= image[:persistent] ? image[:persistent] : 0 %></PERSISTENT>
|
||||
<REGTIME>1314875019</REGTIME>
|
||||
<SOURCE><%= image[:source] ? image[:source] : '/etc/hosts' %></SOURCE>
|
||||
<STATE><%= image[:state] ? image[:state] : 1 %></STATE>
|
||||
<SIZE><%= image[:size] ? image[:size] : 100 %></SIZE>
|
||||
<RUNNING_VMS>0</RUNNING_VMS>
|
||||
<TEMPLATE>
|
||||
<DEV_PREFIX><![CDATA[hd]]></DEV_PREFIX>
|
||||
<NAME><![CDATA[PEPE]]></NAME>
|
||||
<PATH><![CDATA[/etc/hosts]]></PATH>
|
||||
<TYPE><![CDATA[OS]]></TYPE>
|
||||
</TEMPLATE>
|
||||
</IMAGE>
|
||||
<% end %>
|
||||
</IMAGE_POOL>
|
46
src/authm_mad/remotes/quota/test/fixtures/vm.xml
vendored
Normal file
46
src/authm_mad/remotes/quota/test/fixtures/vm.xml
vendored
Normal file
@ -0,0 +1,46 @@
|
||||
<VM>
|
||||
<ID><%= id %></ID>
|
||||
<UID><%= vm[:uid] ? vm[:uid] : 0 %></UID>
|
||||
<GID><%= vm[:gid] ? vm[:gid] : 0 %></GID>
|
||||
<NAME><%= vm[:name] ? vm[:uid] : 'pepe' %></NAME>
|
||||
<LAST_POLL><%= vm[:last_poll] ? vm[:last_poll] : '1309275256' %></LAST_POLL>
|
||||
<STATE><%= vm[:state] ? vm[:state] : 3 %></STATE>
|
||||
<LCM_STATE>3</LCM_STATE>
|
||||
<STIME>1309275252</STIME>
|
||||
<ETIME>0</ETIME>
|
||||
<DEPLOY_ID>dummy</DEPLOY_ID>
|
||||
<MEMORY><%= vm[:memory] ? vm[:memory] : 128 %></MEMORY>
|
||||
<CPU><%= vm[:cpu] ? vm[:cpu] : 1 %></CPU>
|
||||
<NET_TX><%= vm[:net_tx] ? vm[:net_tx] : 0 %></NET_TX>
|
||||
<NET_RX><%= vm[:net_rx] ? vm[:net_rx] : 0 %></NET_RX>
|
||||
<TEMPLATE>
|
||||
<CPU><![CDATA[1]]></CPU>
|
||||
<MEMORY><![CDATA[1024]]></MEMORY>
|
||||
<NAME><![CDATA[PEPEPE]]></NAME>
|
||||
<VCPU><![CDATA[1]]></VCPU>
|
||||
<VMID><![CDATA[4]]></VMID>
|
||||
</TEMPLATE>
|
||||
<% if history = vm[:history] %>
|
||||
<HISTORY_RECORDS>
|
||||
<% history.each do |h| %>
|
||||
<HISTORY>
|
||||
<SEQ><%= h[:seq] ? h[:seq] : 0 %></SEQ>
|
||||
<HOSTNAME><%= h[:hostname] ? h[:hostname] : "kvxen" %></HOSTNAME>
|
||||
<VM_DIR>/Users/dmolina/trabajo/acctmoni/install/var/</VM_DIR>
|
||||
<HID><%= h[:hid] ? h[:hid] : 0 %></HID>
|
||||
<STIME>1309275256</STIME>
|
||||
<ETIME>0</ETIME>
|
||||
<VMMMAD>vmm_dummy</VMMMAD>
|
||||
<TMMAD>tm_dummy</TMMAD>
|
||||
<PSTIME><%= h[:pstime] ? h[:pstime] : 0 %></PSTIME>
|
||||
<PETIME><%= h[:petime] ? h[:petime] : 0 %></PETIME>
|
||||
<RSTIME><%= h[:rstime] ? h[:rstime] : 0 %></RSTIME>
|
||||
<RETIME><%= h[:retime] ? h[:retime] : 0 %></RETIME>
|
||||
<ESTIME><%= h[:estime] ? h[:estime] : 0 %></ESTIME>
|
||||
<EETIME><%= h[:eetime] ? h[:eetime] : 0 %></EETIME>
|
||||
<REASON><%= h[:reason] ? h[:reason] : 0 %></REASON>
|
||||
</HISTORY>
|
||||
<% end %>
|
||||
</HISTORY_RECORDS>
|
||||
<% end %>
|
||||
</VM>
|
49
src/authm_mad/remotes/quota/test/fixtures/vmpool.xml
vendored
Normal file
49
src/authm_mad/remotes/quota/test/fixtures/vmpool.xml
vendored
Normal file
@ -0,0 +1,49 @@
|
||||
<VM_POOL>
|
||||
<% vms.each do |id,vm| %>
|
||||
<VM>
|
||||
<ID><%= id %></ID>
|
||||
<UID><%= vm[:uid] ? vm[:uid] : 0 %></UID>
|
||||
<GID><%= vm[:gid] ? vm[:gid] : 0 %></GID>
|
||||
<NAME><%= vm[:name] ? vm[:uid] : 'pepe' %></NAME>
|
||||
<LAST_POLL><%= vm[:last_poll] ? vm[:last_poll] : '1309275256' %></LAST_POLL>
|
||||
<STATE><%= vm[:state] ? vm[:state] : 3 %></STATE>
|
||||
<LCM_STATE>3</LCM_STATE>
|
||||
<STIME>1309275252</STIME>
|
||||
<ETIME>0</ETIME>
|
||||
<DEPLOY_ID>dummy</DEPLOY_ID>
|
||||
<MEMORY><%= vm[:memory] ? vm[:memory] : 128 %></MEMORY>
|
||||
<CPU><%= vm[:cpu] ? vm[:cpu] : 1 %></CPU>
|
||||
<NET_TX><%= vm[:net_tx] ? vm[:net_tx] : 0 %></NET_TX>
|
||||
<NET_RX><%= vm[:net_rx] ? vm[:net_rx] : 0 %></NET_RX>
|
||||
<TEMPLATE>
|
||||
<CPU><![CDATA[<%= vm[:cpu] ? vm[:cpu] : 1 %>]]></CPU>
|
||||
<MEMORY><![CDATA[<%= vm[:memory] ? vm[:memory] : 128 %>]]></MEMORY>
|
||||
<NAME><![CDATA[PEPEPE]]></NAME>
|
||||
<VCPU><![CDATA[1]]></VCPU>
|
||||
<VMID><![CDATA[4]]></VMID>
|
||||
</TEMPLATE>
|
||||
<% if history = vm[:history] %>
|
||||
<HISTORY_RECORDS>
|
||||
<% h = history.last %>
|
||||
<HISTORY>
|
||||
<SEQ><%= h[:seq] ? h[:seq] : 0 %></SEQ>
|
||||
<HOSTNAME><%= h[:hostname] ? h[:hostname] : "kvxen" %></HOSTNAME>
|
||||
<VM_DIR>/Users/dmolina/trabajo/acctmoni/install/var/</VM_DIR>
|
||||
<HID><%= h[:hid] ? h[:hid] : 0 %></HID>
|
||||
<STIME>1309275256</STIME>
|
||||
<ETIME>0</ETIME>
|
||||
<VMMMAD>vmm_dummy</VMMMAD>
|
||||
<TMMAD>tm_dummy</TMMAD>
|
||||
<PSTIME><%= h[:pstime] ? h[:pstime] : 0 %></PSTIME>
|
||||
<PETIME><%= h[:petime] ? h[:petime] : 0 %></PETIME>
|
||||
<RSTIME><%= h[:rstime] ? h[:rstime] : 0 %></RSTIME>
|
||||
<RETIME><%= h[:retime] ? h[:retime] : 0 %></RETIME>
|
||||
<ESTIME><%= h[:estime] ? h[:estime] : 0 %></ESTIME>
|
||||
<EETIME><%= h[:eetime] ? h[:eetime] : 0 %></EETIME>
|
||||
<REASON><%= h[:reason] ? h[:reason] : 0 %></REASON>
|
||||
</HISTORY>
|
||||
</HISTORY_RECORDS>
|
||||
<% end %>
|
||||
</VM>
|
||||
<% end %>
|
||||
</VM_POOL>
|
53
src/authm_mad/remotes/quota/test/helper/mock_client.rb
Normal file
53
src/authm_mad/remotes/quota/test/helper/mock_client.rb
Normal file
@ -0,0 +1,53 @@
|
||||
require 'erb'
|
||||
|
||||
FPATH = "./fixtures/"
|
||||
|
||||
class MockClient
|
||||
def initialize
|
||||
@vms = Hash.new
|
||||
@done_vms = Hash.new
|
||||
|
||||
@images = Hash.new
|
||||
end
|
||||
|
||||
|
||||
def call(action, *args)
|
||||
xmlrpc_action = "one."+action
|
||||
|
||||
case xmlrpc_action
|
||||
when "one.vm.info"
|
||||
id = args[0]
|
||||
vm = @vms[id]
|
||||
return ERB.new(File.read(FPATH+'vm.xml')).result(binding)
|
||||
when "one.vmpool.info"
|
||||
case args[3]
|
||||
when -1
|
||||
vms = @vms
|
||||
return ERB.new(File.read(FPATH+'vmpool.xml')).result(binding)
|
||||
when 6 then
|
||||
vms = @done_vms
|
||||
return ERB.new(File.read(FPATH+'vmpool.xml')).result(binding)
|
||||
end
|
||||
when "one.imagepool.info"
|
||||
images = @images
|
||||
return ERB.new(File.read(FPATH+'imagepool.xml')).result(binding)
|
||||
end
|
||||
end
|
||||
|
||||
def add_vm(id, values)
|
||||
if values[:state] == 6
|
||||
@done_vms[id] = values.clone
|
||||
else
|
||||
@vms[id] = values.clone
|
||||
end
|
||||
end
|
||||
|
||||
def delete_vm(id)
|
||||
@vms.delete(id)
|
||||
@vms_done.delete(id)
|
||||
end
|
||||
|
||||
def add_image(id, values)
|
||||
@images[id] = values
|
||||
end
|
||||
end
|
31
src/authm_mad/remotes/quota/test/helper/test_helper.rb
Normal file
31
src/authm_mad/remotes/quota/test/helper/test_helper.rb
Normal file
@ -0,0 +1,31 @@
|
||||
|
||||
ONE_LOCATION = ENV['ONE_LOCATION']
|
||||
if !ONE_LOCATION
|
||||
RUBY_LIB_LOCATION="/usr/lib/one/ruby"
|
||||
else
|
||||
RUBY_LIB_LOCATION=ONE_LOCATION+"/lib/ruby"
|
||||
end
|
||||
|
||||
$: << RUBY_LIB_LOCATION
|
||||
|
||||
$: << './helper'
|
||||
$: << '.'
|
||||
$: << '..'
|
||||
|
||||
require 'mock_client'
|
||||
require 'opennebula'
|
||||
require 'quota'
|
||||
|
||||
class Quota
|
||||
def set_client(client)
|
||||
@client = client
|
||||
end
|
||||
|
||||
def rm_and_set_testdb
|
||||
`rm -f /tmp/onequota_test.db`
|
||||
@db=Sequel.connect("sqlite:///tmp/onequota_test.db")
|
||||
|
||||
create_table(QUOTA_TABLE)
|
||||
create_table(USAGE_TABLE)
|
||||
end
|
||||
end
|
341
src/authm_mad/remotes/quota/test/quota_spec.rb
Normal file
341
src/authm_mad/remotes/quota/test/quota_spec.rb
Normal file
@ -0,0 +1,341 @@
|
||||
require 'helper/test_helper'
|
||||
|
||||
describe "Quota testing" do
|
||||
before(:all) do
|
||||
@mock_client = MockClient.new
|
||||
|
||||
@quota = Quota.new
|
||||
@quota.set_client(@mock_client)
|
||||
@quota.rm_and_set_testdb
|
||||
|
||||
@uid1 = 0
|
||||
@quota1 = {
|
||||
:cpu => 2.4,
|
||||
:memory => 1024,
|
||||
:num_vms => 4,
|
||||
:storage => 10000
|
||||
}
|
||||
|
||||
@uid2 = 1
|
||||
@quota2 = {
|
||||
:cpu => 1.2,
|
||||
:memory => 512,
|
||||
:num_vms => 2,
|
||||
:storage => 5000
|
||||
}
|
||||
|
||||
# Generate VM ACL request
|
||||
vm_template = <<-EOT
|
||||
<TEMPLATE>
|
||||
<CPU>2</CPU>
|
||||
<MEMORY>128</MEMORY>
|
||||
<TEMPLATE>
|
||||
EOT
|
||||
|
||||
vm_base64 = Base64::encode64(vm_template)
|
||||
@acl_vm_create = "VM:#{vm_base64}:CREATE:0:1:1"
|
||||
|
||||
# Generate IMAGE ACL request
|
||||
image_template = <<-EOT
|
||||
<TEMPLATE>
|
||||
<PATH>/etc/hosts</PATH>
|
||||
<TEMPLATE>
|
||||
EOT
|
||||
|
||||
image_base64 = Base64::encode64(image_template)
|
||||
@acl_image_create = "IMAGE:#{image_base64}:CREATE:0:1:1"
|
||||
|
||||
# Generate TEMPLATE ACL request
|
||||
temp_template = <<-EOT
|
||||
<TEMPLATE>
|
||||
<CPU>2</CPU>
|
||||
<MEMORY>128</MEMORY>
|
||||
<TEMPLATE>
|
||||
EOT
|
||||
|
||||
temp_base64 = Base64::encode64(temp_template)
|
||||
@acl_template_instantiate = "TEMPLATE:#{temp_base64}:INSTANTIATE:0:1:1"
|
||||
end
|
||||
|
||||
it "should check default quotas" do
|
||||
quota1 = @quota.get_quota(@uid1)
|
||||
quota1[:uid].should eql(0)
|
||||
quota1[:num_vms].should eql(nil)
|
||||
quota1[:cpu].should eql(nil)
|
||||
quota1[:memory].should eql(nil)
|
||||
quota1[:storage].should eql(nil)
|
||||
end
|
||||
|
||||
it "should check default usage cache" do
|
||||
usage1cache = @quota.get_usage(@uid1)
|
||||
usage1cache[:uid].should eql(0)
|
||||
usage1cache[:num_vms].should eql(nil)
|
||||
usage1cache[:cpu].should eql(nil)
|
||||
usage1cache[:memory].should eql(nil)
|
||||
usage1cache[:storage].should eql(nil)
|
||||
end
|
||||
|
||||
it "should check default cache (force)" do
|
||||
usage1force = @quota.get_usage(@uid1, nil, true)
|
||||
usage1force[:uid].should eql(0)
|
||||
usage1force[:num_vms].should eql(nil)
|
||||
usage1force[:cpu].should eql(nil)
|
||||
usage1force[:memory].should eql(nil)
|
||||
usage1force[:storage].should eql(nil)
|
||||
end
|
||||
|
||||
it "should authorize the user because there is no quota defined" do
|
||||
@quota.authorize(@uid1, @acl_vm_create).should eql(false)
|
||||
@quota.authorize(@uid1, @acl_image_create).should eql(false)
|
||||
@quota.authorize(@uid1, @acl_template_instantiate).should eql(false)
|
||||
end
|
||||
|
||||
it "should add a new VM" do
|
||||
values = {
|
||||
:cpu => 2,
|
||||
:memory => 128,
|
||||
:uid => 2,
|
||||
:gid => 4,
|
||||
}
|
||||
|
||||
@mock_client.add_vm(0, values)
|
||||
end
|
||||
|
||||
it "should check the usage cache is not updated" do
|
||||
usage1cache = @quota.get_usage(@uid1)
|
||||
usage1cache[:uid].should eql(0)
|
||||
usage1cache[:num_vms].should eql(nil)
|
||||
usage1cache[:cpu].should eql(nil)
|
||||
usage1cache[:memory].should eql(nil)
|
||||
usage1cache[:storage].should eql(nil)
|
||||
end
|
||||
|
||||
it "should check the cache (force)" do
|
||||
usage1force = @quota.get_usage(@uid1, nil, true)
|
||||
usage1force[:uid].should eql(0)
|
||||
usage1force[:num_vms].should eql(1)
|
||||
usage1force[:cpu].should eql(2.0)
|
||||
usage1force[:memory].should eql(128)
|
||||
usage1force[:storage].should eql(nil)
|
||||
end
|
||||
|
||||
it "should check the usage cache is updated and contains the last usage" do
|
||||
usage1cache = @quota.get_usage(@uid1)
|
||||
usage1cache[:uid].should eql(0)
|
||||
usage1cache[:num_vms].should eql(1)
|
||||
usage1cache[:cpu].should eql(2.0)
|
||||
usage1cache[:memory].should eql(128)
|
||||
usage1cache[:storage].should eql(nil)
|
||||
end
|
||||
|
||||
it "should add a new Image" do
|
||||
values = {
|
||||
:uid => 2,
|
||||
:gid => 4,
|
||||
:size => 1000
|
||||
}
|
||||
|
||||
@mock_client.add_image(0, values)
|
||||
end
|
||||
|
||||
it "should check the usage cache is not updated" do
|
||||
usage1cache = @quota.get_usage(@uid1)
|
||||
usage1cache[:uid].should eql(0)
|
||||
usage1cache[:num_vms].should eql(1)
|
||||
usage1cache[:cpu].should eql(2.0)
|
||||
usage1cache[:memory].should eql(128)
|
||||
usage1cache[:storage].should eql(nil)
|
||||
end
|
||||
|
||||
it "should check the cache (force)" do
|
||||
usage1force = @quota.get_usage(@uid1, nil, true)
|
||||
usage1force[:uid].should eql(0)
|
||||
usage1force[:num_vms].should eql(1)
|
||||
usage1force[:cpu].should eql(2.0)
|
||||
usage1force[:memory].should eql(128)
|
||||
usage1force[:storage].should eql(1000)
|
||||
end
|
||||
|
||||
it "should check the usage cache is updated and contains the last usage" do
|
||||
usage1cache = @quota.get_usage(@uid1)
|
||||
usage1cache[:uid].should eql(0)
|
||||
usage1cache[:num_vms].should eql(1)
|
||||
usage1cache[:cpu].should eql(2.0)
|
||||
usage1cache[:memory].should eql(128)
|
||||
usage1cache[:storage].should eql(1000)
|
||||
end
|
||||
|
||||
it "should add a second VM" do
|
||||
values = {
|
||||
:cpu => 2,
|
||||
:memory => 128,
|
||||
:uid => 2,
|
||||
:gid => 4,
|
||||
}
|
||||
|
||||
@mock_client.add_vm(1, values)
|
||||
end
|
||||
|
||||
it "should check the usage cache is not updated" do
|
||||
usage1cache = @quota.get_usage(@uid1)
|
||||
usage1cache[:uid].should eql(0)
|
||||
usage1cache[:num_vms].should eql(1)
|
||||
usage1cache[:cpu].should eql(2.0)
|
||||
usage1cache[:memory].should eql(128)
|
||||
usage1cache[:storage].should eql(1000)
|
||||
end
|
||||
|
||||
it "should check the cache (force)" do
|
||||
usage1force = @quota.get_usage(@uid1, nil, true)
|
||||
usage1force[:uid].should eql(0)
|
||||
usage1force[:num_vms].should eql(1*2)
|
||||
usage1force[:cpu].should eql(2.0*2)
|
||||
usage1force[:memory].should eql(128*2)
|
||||
usage1force[:storage].should eql(1000)
|
||||
end
|
||||
|
||||
it "should check the usage cache is updated and contains the last usage" do
|
||||
usage1cache = @quota.get_usage(@uid1)
|
||||
usage1cache[:uid].should eql(0)
|
||||
usage1cache[:num_vms].should eql(1*2)
|
||||
usage1cache[:cpu].should eql(2.0*2)
|
||||
usage1cache[:memory].should eql(128*2)
|
||||
usage1cache[:storage].should eql(1000)
|
||||
end
|
||||
|
||||
it "should add a second Image" do
|
||||
values = {
|
||||
:uid => 2,
|
||||
:gid => 4,
|
||||
:size => 1000
|
||||
}
|
||||
|
||||
@mock_client.add_image(1, values)
|
||||
end
|
||||
|
||||
it "should check the usage cache is not updated" do
|
||||
usage1cache = @quota.get_usage(@uid1)
|
||||
usage1cache[:uid].should eql(0)
|
||||
usage1cache[:num_vms].should eql(1*2)
|
||||
usage1cache[:cpu].should eql(2.0*2)
|
||||
usage1cache[:memory].should eql(128*2)
|
||||
usage1cache[:storage].should eql(1000)
|
||||
end
|
||||
|
||||
it "should check the cache (force)" do
|
||||
usage1force = @quota.get_usage(@uid1, nil, true)
|
||||
usage1force[:uid].should eql(0)
|
||||
usage1force[:num_vms].should eql(1*2)
|
||||
usage1force[:cpu].should eql(2.0*2)
|
||||
usage1force[:memory].should eql(128*2)
|
||||
usage1force[:storage].should eql(1000*2)
|
||||
end
|
||||
|
||||
it "should check the usage cache is updated and contains the last usage" do
|
||||
usage1cache = @quota.get_usage(@uid1)
|
||||
usage1cache[:uid].should eql(0)
|
||||
usage1cache[:num_vms].should eql(1*2)
|
||||
usage1cache[:cpu].should eql(2.0*2)
|
||||
usage1cache[:memory].should eql(128*2)
|
||||
usage1cache[:storage].should eql(1000*2)
|
||||
end
|
||||
|
||||
it "should add a new quota and check it" do
|
||||
@quota.set_quota(@uid1, @quota1)
|
||||
|
||||
quota = @quota.get_quota(@uid1)
|
||||
@quota1.each{ |key,value|
|
||||
quota[key].should eql(value)
|
||||
}
|
||||
end
|
||||
|
||||
it "should not authorize the user because the vm quota is spent" do
|
||||
err_msg = "CPU quota exceeded (Quota: 2.4, Used: 4.0, Asked: 2.0)."
|
||||
@quota.authorize(@uid1, @acl_vm_create).should eql(err_msg)
|
||||
@quota.authorize(@uid1, @acl_template_instantiate).should eql(err_msg)
|
||||
|
||||
@quota.authorize(@uid1, @acl_image_create).should eql(false)
|
||||
end
|
||||
|
||||
it "should add a new quota for another user and check it" do
|
||||
@quota.set_quota(@uid2, @quota2)
|
||||
|
||||
quota = @quota.get_quota(@uid2)
|
||||
@quota2.each{ |key,value|
|
||||
quota[key].should eql(value)
|
||||
}
|
||||
end
|
||||
|
||||
it "should list all the defined quotas" do
|
||||
quotas = @quota.get_quota
|
||||
quotas.each { |quota|
|
||||
if quota[:uid] == @uid1
|
||||
@quota1.each{ |key,value|
|
||||
quota[key].should eql(value)
|
||||
}
|
||||
elsif quota[:uid] == @uid2
|
||||
@quota2.each{ |key,value|
|
||||
quota[key].should eql(value)
|
||||
}
|
||||
end
|
||||
}
|
||||
|
||||
end
|
||||
|
||||
it "should update the first user quota and check it" do
|
||||
new_quota = Hash.new
|
||||
@quota1.each { |key,value|
|
||||
new_quota[key] = value*3
|
||||
}
|
||||
|
||||
@quota.set_quota(@uid1, new_quota)
|
||||
|
||||
quota = @quota.get_quota(@uid1)
|
||||
new_quota.each{ |key,value|
|
||||
quota[key] == value
|
||||
}
|
||||
end
|
||||
|
||||
it "should authorize the user because the quota is not spent" do
|
||||
@quota.authorize(@uid1, @acl_vm_create).should eql(false)
|
||||
@quota.authorize(@uid1, @acl_image_create).should eql(false)
|
||||
@quota.authorize(@uid1, @acl_template_instantiate).should eql(false)
|
||||
end
|
||||
|
||||
it "should update the first user quota and check it" do
|
||||
new_quota = {
|
||||
:storage => 0
|
||||
}
|
||||
|
||||
@quota.set_quota(@uid1, new_quota)
|
||||
|
||||
quota = @quota.get_quota(@uid1)
|
||||
|
||||
quota[:storage].should eql(new_quota[:storage])
|
||||
end
|
||||
|
||||
it "should not authorize the user because the image quota is spent" do
|
||||
@quota.authorize(@uid1, @acl_vm_create).should eql(false)
|
||||
@quota.authorize(@uid1, @acl_template_instantiate).should eql(false)
|
||||
|
||||
err_msg = "STORAGE quota exceeded (Quota: 0, Used: 2000, Asked: 1474)."
|
||||
@quota.authorize(@uid1, @acl_image_create).should eql(err_msg)
|
||||
end
|
||||
|
||||
it "should delete the quota and check it" do
|
||||
@quota.delete_quota(@uid1)
|
||||
|
||||
quota1 = @quota.get_quota(@uid1)
|
||||
quota1[:uid].should eql(0)
|
||||
quota1[:num_vms].should eql(nil)
|
||||
quota1[:cpu].should eql(nil)
|
||||
quota1[:memory].should eql(nil)
|
||||
quota1[:storage].should eql(nil)
|
||||
end
|
||||
|
||||
it "should authorize the user because the quota was deleted" do
|
||||
@quota.authorize(@uid1, @acl_vm_create).should eql(false)
|
||||
@quota.authorize(@uid1, @acl_image_create).should eql(false)
|
||||
@quota.authorize(@uid1, @acl_template_instantiate).should eql(false)
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue
Block a user