Project

General

Profile

Download (13.2 KB) Statistics
| Branch: | Tag: | Revision:
#
# Copyright 2014 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public
# License as published by the Free Software Foundation; either version
# 2 of the License (GPLv2) or (at your option) any later version.
# There is NO WARRANTY for this software, express or implied,
# including the implied warranties of MERCHANTABILITY,
# NON-INFRINGEMENT, or FITNESS FOR A PARTICULAR PURPOSE. You should
# have received a copy of GPLv2 along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.

require 'katello_test_helper'

module Katello
describe TaskStatus do
let(:package_groups) { ["@mammals", "FTP Server"] }
let(:packages) { %w[cheetah penguin] }
let(:result) { {:errors => [] } }
let(:task_type) { "package_install" }
let(:state) { "running" }
let(:parameters) { {} }

subject do
system = System.new(:name => "test.example.com")
task_status = TaskStatus.new(:task_type => task_type,
:parameters => parameters,
:result => result,
:state => state,
:uuid => "1234",
:task_owner => system)
end

it "has valid as_json" do
subject.as_json.must_include(:description)
subject.as_json.must_include(:result_description)
subject.as_json.must_include(:system_name)
end

describe "Package installation" do
let(:task_type) { :package_install }
let(:parameters) { { :packages => packages } }
let(:state) { "finished" }

it "has a valid description" do
subject.description.must_equal("Package Install: cheetah, penguin")
end

describe "No packages installed" do
let(:result) { { :details => {:rpm => { :succeeded => true, :details => { :deps => [], :resolved => []} } } } }

it "has a result description of with no new packages installed" do
subject.result_description.must_equal(["No new packages installed"])
end
end

describe "Packages installed" do
let(:result) do
{ :details =>
{ :rpm =>
{ :succeeded => true,
:details =>
{ "deps"=>
[{"qname"=>"elephant-8.8-1.noarch",
"repoid"=>"zoo-repo-updates",
"name"=>"elephant",
"version"=>"8.8",
"arch"=>"noarch",
"epoch"=>"0",
"release"=>"1"}],
"resolved"=>
[{"qname"=>"cheetah-1.26.3-5.noarch",
"repoid"=>"zoo-repo-updates",
"name"=>"cheetah",
"version"=>"1.26.3",
"arch"=>"noarch",
"epoch"=>"0",
"release"=>"5"}]
}
}
}
}.with_indifferent_access
end

it "has a result description of with packages" do
subject.result_description.must_equal(['cheetah-1.26.3-5.noarch', 'elephant-8.8-1.noarch'])
end
end
end

describe "Package group installation" do
let(:task_type) { :package_group_install }
let(:parameters) { { :groups => package_groups } }
let(:state) { "finished" }

it "has a valid description" do
subject.description.must_equal("Package Group Install: @mammals, @FTP Server")
end

describe "No packages installed" do
let(:result) { { :details => {:package_group => { :succeeded => true, :details => { :deps => [], :resolved => []} } } } }

it "has a result description of with no new packages installed" do
subject.result_description.must_equal(["No new packages installed"])
end
end

describe "Packages installed" do
let(:result) do
{ :details =>
{ :package_group =>
{ :succeeded => true,
:details =>
{ "deps"=>
[{"qname"=>"elephant-8.8-1.noarch",
"repoid"=>"zoo-repo-updates",
"name"=>"elephant",
"version"=>"8.8",
"arch"=>"noarch",
"epoch"=>"0",
"release"=>"1"}],
"resolved"=>
[{"qname"=>"cheetah-1.26.3-5.noarch",
"repoid"=>"zoo-repo-updates",
"name"=>"cheetah",
"version"=>"1.26.3",
"arch"=>"noarch",
"epoch"=>"0",
"release"=>"5"}]
}
}
}
}.with_indifferent_access
end

it "has a result description of with packages" do
subject.result_description.must_equal(['cheetah-1.26.3-5.noarch', 'elephant-8.8-1.noarch'])
end
end
end

describe "Package uninstallation" do
let(:task_type) { :package_remove }
let(:parameters) { { :packages => ["elephant"] } }
let(:state) { "finished" }

it "has a valid description" do
subject.description.must_equal("Package Remove: elephant")
end

describe "No packages removed" do
let(:result) { { :details => {:rpm => { :succeeded => true, :details => { :deps => [], :resolved => []} } } } }

it "has a result description of with no packates removed" do
subject.result_description.must_equal(["No packages removed"])
end
end

describe "Packages removed" do
let(:result) do
{ :details =>
{ :rpm =>
{ :succeeded => true,
:details =>
{ "deps"=>
[{"qname"=>"cheetah-1.26.3-5.noarch",
"repoid"=>"installed",
"name"=>"cheetah",
"version"=>"1.26.3",
"arch"=>"noarch",
"epoch"=>"0",
"release"=>"5"}],
"resolved"=>
[{"qname"=>"elephant-8.8-1.noarch",
"repoid"=>"installed",
"name"=>"elephant",
"version"=>"8.8",
"arch"=>"noarch",
"epoch"=>"0",
"release"=>"1"}]
}
}
}
}.with_indifferent_access
end

it "has a result description of with packages" do
subject.result_description.must_equal(['cheetah-1.26.3-5.noarch', 'elephant-8.8-1.noarch'])
end
end
end

describe "Package group uninstallation" do
let(:task_type) { :package_group_remove }
let(:parameters) { { :groups => package_groups } }
let(:state) { "finished" }

it "has a valid description" do
subject.description.must_equal("Package Group Remove: @mammals, @FTP Server")
end

describe "No packages removed" do
let(:result) { { :details => {:package_group => { :succeeded => true, :details => { :deps => [], :resolved => []} } } } }

it "has a result description of with no packates removed" do
subject.result_description.must_equal(["No packages removed"])
end
end

describe "Packages removed" do
let(:result) do
{ :details =>
{ :package_group =>
{ :succeeded => true,
:details =>
{ "deps"=>
[{"qname"=>"elephant-8.8-1.noarch",
"repoid"=>"zoo-repo-updates",
"name"=>"elephant",
"version"=>"8.8",
"arch"=>"noarch",
"epoch"=>"0",
"release"=>"1"}],
"resolved"=>
[{"qname"=>"cheetah-1.26.3-5.noarch",
"repoid"=>"zoo-repo-updates",
"name"=>"cheetah",
"version"=>"1.26.3",
"arch"=>"noarch",
"epoch"=>"0",
"release"=>"5"}]
}
}
}
}.with_indifferent_access
end

it "has a result description with packages" do
subject.result_description.must_equal(['cheetah-1.26.3-5.noarch', 'elephant-8.8-1.noarch'])
end
end
end

describe "Package update" do
let(:task_type) { :package_update }
let(:parameters) { { :packages => ["cheetah"] } }
let(:state) { "finished" }

it "has a valid description" do
subject.description.must_equal("Package Update: cheetah")
end

describe "No packages updated" do
let(:result) { { :details => {:rpm => { :succeeded => true, :details => { :deps => [], :resolved => []} } } } }

it "has a result description of with no packates updated" do
subject.result_description.must_equal(["No packages updated"])
end
end

describe "Packages updated" do
let(:result) do
{ :details =>
{ :rpm =>
{ :succeeded => true,
:details =>
{ "deps"=>
[{"qname"=>"elephant-8.8-1.noarch",
"repoid"=>"zoo-repo-updates",
"name"=>"elephant",
"version"=>"8.8",
"arch"=>"noarch",
"epoch"=>"0",
"release"=>"1"}],
"resolved"=>
[{"qname"=>"cheetah-1.26.3-5.noarch",
"repoid"=>"zoo-repo-updates",
"name"=>"cheetah",
"version"=>"1.26.3",
"arch"=>"noarch",
"epoch"=>"0",
"release"=>"5"}]
}
}
}
}.with_indifferent_access
end

it "has a result description with packages" do
subject.result_description.must_equal(['cheetah-1.26.3-5.noarch', 'elephant-8.8-1.noarch'])
end
end
end

describe "Yum error" do
let(:result) do
{:errors=>
["['Errors were encountered while downloading packages.', 'katello-all-0.1.149-1.fc16.noarch: failure: katello-all-0.1.149-1.fc16.noarch.rpm from katello: [Errno 256] No more mirrors to try.']",
["Traceback (most recent call last):\n",
" File \"/usr/lib/python2.7/site-packages/pulp/server/tasking/task.py\", line 404, in run\n result = self.callable(*self.args, **self.kwargs)\n",
" File \"/usr/lib/python2.7/site-packages/pulp/server/api/consumer.py\", line 520, in __updatepackages\n return packages.update(names)\n",
" File \"/usr/lib/python2.7/site-packages/gofer/rmi/stub.py\", line 72, in __call__\n return self.stub._send(request, opts)\n",
" File \"/usr/lib/python2.7/site-packages/gofer/rmi/stub.py\", line 133, in _send\n return self.__send(request, options)\n",
" File \"/usr/lib/python2.7/site-packages/gofer/rmi/stub.py\", line 164, in __send\n any=opts.any)\n",
" File \"/usr/lib/python2.7/site-packages/gofer/rmi/policy.py\", line 144, in send\n return self.__getreply(sn, reader)\n",
" File \"/usr/lib/python2.7/site-packages/gofer/rmi/policy.py\", line 181, in __getreply\n return self.__onreply(envelope)\n",
" File \"/usr/lib/python2.7/site-packages/gofer/rmi/policy.py\", line 197, in __onreply\n raise RemoteException.instance(reply)\n",
"YumDownloadError: ['Errors were encountered while downloading packages.', 'katello-all-0.1.149-1.fc16.noarch: failure: katello-all-0.1.149-1.fc16.noarch.rpm from katello: [Errno 256] No more mirrors to try.']\n"]]}
end
let(:state) { "error" }

it "has a valid result_description" do
message = "Errors were encountered while downloading packages\n"
message += "katello-all-0.1.149-1.fc16.noarch: failure: "
message += "katello-all-0.1.149-1.fc16.noarch.rpm from katello: "
message += "[Errno 256] No more mirrors to try"
subject.result_description.must_equal(message)
end
end

describe "Pulp error" do
let(:result) do
{:errors=>
["('8341bcac-b627-49ce-9383-f75c75f24202', 0)",
["Traceback (most recent call last):\n",
" File \"/usr/lib/python2.7/site-packages/pulp/server/tasking/task.py\", line 404, in run\n result = self.callable(*self.args, **self.kwargs)\n",
" File \"/usr/lib/python2.7/site-packages/pulp/server/api/consumer.py\", line 456, in __installpackages\n return packages.install(names, reboot)\n",
" File \"/usr/lib/python2.7/site-packages/gofer/rmi/stub.py\", line 72, in __call__\n return self.stub._send(request, opts)\n",
" File \"/usr/lib/python2.7/site-packages/gofer/rmi/stub.py\", line 133, in _send\n return self.__send(request, options)\n",
" File \"/usr/lib/python2.7/site-packages/gofer/rmi/stub.py\", line 164, in __send\n any=opts.any)\n",
" File \"/usr/lib/python2.7/site-packages/gofer/rmi/policy.py\", line 143, in send\n self.__getstarted(sn, reader)\n",
" File \"/usr/lib/python2.7/site-packages/gofer/rmi/policy.py\", line 166, in __getstarted\n raise RequestTimeout(sn, 0)\n",
"RequestTimeout: ('8341bcac-b627-49ce-9383-f75c75f24202', 0)\n"]]}
end
let(:state) { "error" }

it "has a result description" do
subject.result_description.must_equal('RequestTimeout')
end
end

end
end
(21-21/21)