#376: added specs
This commit is contained in:
parent
16f2bbb246
commit
602df4e57a
|
@ -3,7 +3,7 @@ class RestartNodesJob
|
||||||
|
|
||||||
def self.perform
|
def self.perform
|
||||||
return if NodeInstruction.all_locked?
|
return if NodeInstruction.all_locked?
|
||||||
available_nodes = RpmBuildNode.all.map{ |n| n.user_id }.compact.uniq
|
available_nodes = RpmBuildNode.all.map{ |n| n.user_id if n.user.try(:system?) }.compact.uniq
|
||||||
NodeInstruction.where(status: NodeInstruction::READY).
|
NodeInstruction.where(status: NodeInstruction::READY).
|
||||||
where.not(user_id: available_nodes).find_each(&:restart)
|
where.not(user_id: available_nodes).find_each(&:restart)
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
FactoryGirl.define do
|
||||||
|
factory :node_instruction do
|
||||||
|
association :user, factory: :system_user
|
||||||
|
instruction { FactoryGirl.generate(:string) }
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,6 @@
|
||||||
|
FactoryGirl.define do
|
||||||
|
factory :rpm_build_node do
|
||||||
|
id { FactoryGirl.generate(:string) }
|
||||||
|
user_id { FactoryGirl.create(:user).id }
|
||||||
|
end
|
||||||
|
end
|
|
@ -12,4 +12,8 @@ FactoryGirl.define do
|
||||||
factory :admin, parent: :user do
|
factory :admin, parent: :user do
|
||||||
role 'admin'
|
role 'admin'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
factory :system_user, parent: :user do
|
||||||
|
role 'system'
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,40 @@
|
||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe RestartNodesJob do
|
||||||
|
|
||||||
|
it 'ensures that not raises error' do
|
||||||
|
lambda do
|
||||||
|
RestartNodesJob.perform
|
||||||
|
end.should_not raise_exception
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'ensures that do nothing when all instructions disabled' do
|
||||||
|
NodeInstruction.lock_all
|
||||||
|
expect(RpmBuildNode).to_not receive(:all)
|
||||||
|
RestartNodesJob.perform
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'ensures that creates tasks' do
|
||||||
|
allow_any_instance_of(NodeInstruction).to receive(:perform_restart)
|
||||||
|
|
||||||
|
# ABF active node
|
||||||
|
ni1 = FactoryGirl.create(:node_instruction)
|
||||||
|
FactoryGirl.create(:rpm_build_node, user_id: ni1.user_id)
|
||||||
|
|
||||||
|
# User node
|
||||||
|
FactoryGirl.create(:rpm_build_node)
|
||||||
|
|
||||||
|
FactoryGirl.create(:node_instruction, status: NodeInstruction::DISABLED)
|
||||||
|
ni2 = FactoryGirl.create(:node_instruction, status: NodeInstruction::RESTARTING)
|
||||||
|
FactoryGirl.create(:node_instruction, status: NodeInstruction::FAILED)
|
||||||
|
|
||||||
|
ni3 = FactoryGirl.create(:node_instruction)
|
||||||
|
|
||||||
|
RestartNodesJob.perform
|
||||||
|
|
||||||
|
NodeInstruction.where(status: NodeInstruction::RESTARTING).should have(2).items
|
||||||
|
NodeInstruction.where(status: NodeInstruction::RESTARTING).should include(ni2, ni3)
|
||||||
|
NodeInstruction.where(status: NodeInstruction::RESTARTING).should_not include(ni1)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
|
@ -0,0 +1,9 @@
|
||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe NodeInstruction do
|
||||||
|
|
||||||
|
it 'is valid given valid attributes' do
|
||||||
|
FactoryGirl.build(:node_instruction).should be_valid
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
Loading…
Reference in New Issue