You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@deltacloud.apache.org by mf...@redhat.com on 2012/07/20 17:45:12 UTC

[PATCH core 1/6] Core: Make exception reporting silent on tests

From: Michal Fojtik <mf...@redhat.com>


Signed-off-by: Michal fojtik <mf...@redhat.com>
---
 server/lib/deltacloud/drivers/exceptions.rb |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/server/lib/deltacloud/drivers/exceptions.rb b/server/lib/deltacloud/drivers/exceptions.rb
index a89b05f..d5a8bc3 100644
--- a/server/lib/deltacloud/drivers/exceptions.rb
+++ b/server/lib/deltacloud/drivers/exceptions.rb
@@ -177,7 +177,9 @@ module Deltacloud
           if exdef.match?($!)
             new_exception = exdef.handler($!)
             m = new_exception.message.nil? ? $!.message : new_exception.message
-            $stderr.send(report_method, "#{[$!.class.to_s, m].join(':')}\n#{$!.backtrace[0..10].join("\n")}")
+            unless ENV['RACK_ENV'] == 'test'
+              $stderr.send(report_method, "#{[$!.class.to_s, m].join(':')}\n#{$!.backtrace[0..10].join("\n")}")
+            end
             raise exdef.handler($!) unless new_exception.nil?
           end
         end
-- 
1.7.10.2


Re: [PATCH core 1/6] Core: Make exception reporting silent on tests

Posted by David Lutterkort <lu...@redhat.com>.
On Fri, 2012-07-20 at 17:45 +0200, mfojtik@redhat.com wrote:
> From: Michal Fojtik <mf...@redhat.com>
> 
> 
> Signed-off-by: Michal fojtik <mf...@redhat.com>
> ---
>  server/lib/deltacloud/drivers/exceptions.rb |    4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)

BTW, with this patch series (HEAD at ea4e3584), 'rake test' runs for me
without any memory issues .. 2 failing tests, but the fail quickly ;)

David



[PATCH core 4/6] Core: Added initial tests for Mock driver API

Posted by mf...@redhat.com.
From: Michal Fojtik <mf...@redhat.com>


Signed-off-by: Michal fojtik <mf...@redhat.com>
---
 server/Rakefile                                    |    3 +-
 server/tests/drivers/mock/images_test.rb           |   55 +++++++++++
 server/tests/drivers/mock/instances_test.rb        |   99 ++++++++++++++++++++
 server/tests/drivers/mock/keys_test.rb             |   46 +++++++++
 server/tests/drivers/mock/realms_test.rb           |   37 ++++++++
 .../tests/drivers/mock/storage_snapshots_test.rb   |   37 ++++++++
 server/tests/drivers/mock/storage_volumes_test.rb  |   59 ++++++++++++
 7 files changed, 335 insertions(+), 1 deletion(-)
 create mode 100644 server/tests/drivers/mock/images_test.rb
 create mode 100644 server/tests/drivers/mock/instances_test.rb
 create mode 100644 server/tests/drivers/mock/keys_test.rb
 create mode 100644 server/tests/drivers/mock/realms_test.rb
 create mode 100644 server/tests/drivers/mock/storage_snapshots_test.rb
 create mode 100644 server/tests/drivers/mock/storage_volumes_test.rb

diff --git a/server/Rakefile b/server/Rakefile
index ef1ab1a..f232933 100644
--- a/server/Rakefile
+++ b/server/Rakefile
@@ -118,6 +118,7 @@ Rake::TestTask.new do |t|
     'tests/drivers/base/*test.rb',            # Deltacloud drivers API tests
     'tests/drivers/models/*test.rb',          # Deltacloud models tests
     'tests/deltacloud/*test.rb',              # Deltacloud internal API tests
-    'tests/deltacloud/collections/*test.rb'   # Deltacloud collections
+    'tests/deltacloud/collections/*test.rb',  # Deltacloud collections
+    'tests/drivers/*/*test.rb'                # Deltacloud driver specific unit tests
   ]
 end
diff --git a/server/tests/drivers/mock/images_test.rb b/server/tests/drivers/mock/images_test.rb
new file mode 100644
index 0000000..746000c
--- /dev/null
+++ b/server/tests/drivers/mock/images_test.rb
@@ -0,0 +1,55 @@
+require 'minitest/autorun'
+
+require_relative File.join('..', '..', '..', 'lib', 'deltacloud', 'api.rb')
+
+describe 'MockDriver Images' do
+
+  before do
+    @driver = Deltacloud::new(:mock, :user => 'mockuser', :password => 'mockpassword')
+  end
+
+  it 'must throw error when wrong credentials' do
+    Proc.new do
+      @driver.backend.images(OpenStruct.new(:user => 'unknown', :password => 'wrong'))
+    end.must_raise Deltacloud::ExceptionHandler::AuthenticationFailure, 'Authentication Failure'
+  end
+
+  it 'must return list of images' do
+    @driver.images.wont_be_empty
+    @driver.images.first.must_be_kind_of Image
+  end
+
+  it 'must allow to filter images' do
+    @driver.images(:id => 'img1').wont_be_empty
+    @driver.images(:id => 'img1').must_be_kind_of Array
+    @driver.images(:id => 'img1').size.must_equal 1
+    @driver.images(:id => 'img1').first.id.must_equal 'img1'
+    @driver.images(:owner_id => 'mockuser').size.must_equal 1
+    @driver.images(:owner_id => 'mockuser').first.owner_id.must_equal 'mockuser'
+    @driver.images(:id => 'unknown').must_be_empty
+  end
+
+  it 'must allow to retrieve single image' do
+    @driver.image(:id => 'img1').wont_be_nil
+    @driver.image(:id => 'img1').must_be_kind_of Image
+    @driver.image(:id => 'img1').id.must_equal 'img1'
+    @driver.image(:id => 'unknown').must_be_nil
+  end
+
+  it 'must allow to create a new image if instance supported' do
+    @driver.create_image(:id => 'inst1', :name => 'img1-test', :description => 'Test1').must_be_kind_of Image
+    @driver.image(:id => 'img1-test').wont_be_nil
+    @driver.image(:id => 'img1-test').id.must_equal 'img1-test'
+    @driver.image(:id => 'img1-test').name.must_equal 'img1-test'
+    @driver.image(:id => 'img1-test').description.must_equal 'Test1'
+    Proc.new { @driver.create_image(:id => 'unknown-instance', :name => 'test') }.must_raise Deltacloud::ExceptionHandler::ProviderError, 'CreateImageNotSupported'
+    @driver.image(:id => 'test').must_be_nil
+  end
+
+  it 'must allow to destroy created image' do
+    @driver.create_image(:id => 'inst1', :name => 'img1-test-destroy').must_be_kind_of Image
+    @driver.destroy_image('img1-test-destroy')
+    @driver.image(:id => 'img1-test-destroy').must_be_nil
+  end
+
+end
diff --git a/server/tests/drivers/mock/instances_test.rb b/server/tests/drivers/mock/instances_test.rb
new file mode 100644
index 0000000..fcb690a
--- /dev/null
+++ b/server/tests/drivers/mock/instances_test.rb
@@ -0,0 +1,99 @@
+require 'minitest/autorun'
+
+require_relative File.join('..', '..', '..', 'lib', 'deltacloud', 'api.rb')
+
+describe 'MockDriver Instances' do
+
+  before do
+    @driver = Deltacloud::new(:mock, :user => 'mockuser', :password => 'mockpassword')
+  end
+
+  it 'must throw error when wrong credentials' do
+    Proc.new do
+      @driver.backend.instances(OpenStruct.new(:user => 'unknown', :password => 'wrong'))
+    end.must_raise Deltacloud::ExceptionHandler::AuthenticationFailure, 'Authentication Failure'
+  end
+
+  it 'must return list of instances' do
+    @driver.instances.wont_be_empty
+    @driver.instances.first.must_be_kind_of Instance
+  end
+
+  it 'must allow to filter instances' do
+    @driver.instances(:id => 'inst1').wont_be_empty
+    @driver.instances(:id => 'inst1').must_be_kind_of Array
+    @driver.instances(:id => 'inst1').size.must_equal 1
+    @driver.instances(:id => 'inst1').first.id.must_equal 'inst1'
+    @driver.instances(:owner_id => 'mockuser').size.must_equal 2
+    @driver.instances(:owner_id => 'mockuser').first.owner_id.must_equal 'mockuser'
+    @driver.instances(:id => 'unknown').must_be_empty
+  end
+
+  it 'must allow to retrieve single instance' do
+    @driver.instance(:id => 'inst1').wont_be_nil
+    @driver.instance(:id => 'inst1').must_be_kind_of Instance
+    @driver.instance(:id => 'inst1').id.must_equal 'inst1'
+    @driver.instance(:id => 'unknown').must_be_nil
+  end
+
+  it 'must allow to create a new instance if instance supported' do
+    instance = @driver.create_instance('img1', :name => 'inst1-test', :realm_id => 'us', :hwp_id => 'm1-small')
+    instance.must_be_kind_of Instance
+    @driver.instance(:id => instance.id).wont_be_nil
+    @driver.instance(:id => instance.id).id.must_equal instance.id
+    @driver.instance(:id => instance.id).name.must_equal 'inst1-test'
+    @driver.instance(:id => instance.id).instance_profile.name.must_equal 'm1-small'
+    @driver.instance(:id => instance.id).realm_id.must_equal 'us'
+    @driver.instance(:id => instance.id).owner_id.must_equal 'mockuser'
+    @driver.instance(:id => instance.id).state.must_equal 'RUNNING'
+    @driver.instance(:id => instance.id).public_addresses.wont_be_empty
+    @driver.instance(:id => instance.id).actions.must_include :reboot
+    @driver.instance(:id => instance.id).actions.must_include :stop
+    @driver.destroy_instance(instance.id)
+    @driver.instance(:id => instance.id).must_be_nil
+  end
+
+  it 'must allow to destroy created instance' do
+    instance = @driver.create_instance('img1', :name => 'inst1-test-destroy')
+    instance.must_be_kind_of Instance
+    @driver.destroy_instance(instance.id)
+    @driver.instance(:id => instance.id).must_be_nil
+  end
+
+  it 'must allow to stop instance in running state' do
+    instance = @driver.create_instance('img1', :name => 'inst1-test-destroy')
+    instance.must_be_kind_of Instance
+    instance.state.must_equal 'RUNNING'
+    @driver.stop_instance(instance.id)
+    @driver.instance(:id => instance.id).state.must_equal 'STOPPED'
+    @driver.destroy_instance(instance.id)
+    @driver.instance(:id => instance.id).must_be_nil
+  end
+
+  it 'must allow to start instance in stopped state' do
+    instance = @driver.create_instance('img1', :name => 'inst1-test-destroy')
+    instance.must_be_kind_of Instance
+    instance.state.must_equal 'RUNNING'
+    @driver.stop_instance(instance.id)
+    @driver.instance(:id => instance.id).state.must_equal 'STOPPED'
+    @driver.start_instance(instance.id)
+    @driver.instance(:id => instance.id).state.must_equal 'RUNNING'
+    @driver.destroy_instance(instance.id)
+    @driver.instance(:id => instance.id).must_be_nil
+  end
+
+  it 'must allow to reboot instance in running state' do
+    instance = @driver.create_instance('img1', :name => 'inst1-test-destroy')
+    instance.must_be_kind_of Instance
+    instance.state.must_equal 'RUNNING'
+    @driver.reboot_instance(instance.id)
+    @driver.instance(:id => instance.id).state.must_equal 'RUNNING'
+    @driver.stop_instance(instance.id)
+    @driver.instance(:id => instance.id).state.must_equal 'STOPPED'
+    @driver.reboot_instance(instance.id)
+    @driver.instance(:id => instance.id).state.must_equal 'RUNNING'
+    @driver.destroy_instance(instance.id)
+    @driver.instance(:id => instance.id).must_be_nil
+  end
+
+end
diff --git a/server/tests/drivers/mock/keys_test.rb b/server/tests/drivers/mock/keys_test.rb
new file mode 100644
index 0000000..bebe3ec
--- /dev/null
+++ b/server/tests/drivers/mock/keys_test.rb
@@ -0,0 +1,46 @@
+require 'minitest/autorun'
+
+require_relative File.join('..', '..', '..', 'lib', 'deltacloud', 'api.rb')
+
+describe 'MockDriver Keys' do
+
+  before do
+    @driver = Deltacloud::new(:mock, :user => 'mockuser', :password => 'mockpassword')
+  end
+
+  it 'must throw error when wrong credentials' do
+    Proc.new do
+      @driver.backend.keys(OpenStruct.new(:user => 'unknown', :password => 'wrong'))
+    end.must_raise Deltacloud::ExceptionHandler::AuthenticationFailure, 'Authentication Failure'
+  end
+
+  it 'must return list of keys' do
+    @driver.keys.wont_be_empty
+    @driver.keys.first.must_be_kind_of Key
+  end
+
+  it 'must allow to filter keys' do
+    @driver.keys(:id => 'test-key').wont_be_empty
+    @driver.keys(:id => 'test-key').must_be_kind_of Array
+    @driver.keys(:id => 'test-key').size.must_equal 1
+    @driver.keys(:id => 'test-key').first.id.must_equal 'test-key'
+    @driver.keys(:id => 'unknown').must_be_empty
+  end
+
+  it 'must allow to retrieve single key' do
+    @driver.key(:id => 'test-key').wont_be_nil
+    @driver.key(:id => 'test-key').must_be_kind_of Key
+    @driver.key(:id => 'test-key').id.must_equal 'test-key'
+    @driver.key(:id => 'unknown').must_be_nil
+  end
+
+  it 'must allow to create a new key' do
+    key = @driver.create_key(:key_name => 'test1')
+    key.wont_be_nil
+    key.must_be_kind_of Key
+    Proc.new { @driver.create_key(:key_name => 'test1') }.must_raise Deltacloud::ExceptionHandler::ProviderError, 'KeyExist'
+    @driver.destroy_key :id => key.id
+    @driver.key(:id => key.id).must_be_nil
+  end
+
+end
diff --git a/server/tests/drivers/mock/realms_test.rb b/server/tests/drivers/mock/realms_test.rb
new file mode 100644
index 0000000..046e5b5
--- /dev/null
+++ b/server/tests/drivers/mock/realms_test.rb
@@ -0,0 +1,37 @@
+require 'minitest/autorun'
+
+require_relative File.join('..', '..', '..', 'lib', 'deltacloud', 'api.rb')
+
+describe 'MockDriver Realms' do
+
+  before do
+    @driver = Deltacloud::new(:mock, :user => 'mockuser', :password => 'mockpassword')
+  end
+
+  it 'must throw error when wrong credentials' do
+    Proc.new do
+      @driver.backend.realms(OpenStruct.new(:user => 'unknown', :password => 'wrong'))
+    end.must_raise Deltacloud::ExceptionHandler::AuthenticationFailure, 'Authentication Failure'
+  end
+
+  it 'must return list of realms' do
+    @driver.realms.wont_be_empty
+    @driver.realms.first.must_be_kind_of Realm
+  end
+
+  it 'must allow to filter realms' do
+    @driver.realms(:id => 'us').wont_be_empty
+    @driver.realms(:id => 'us').must_be_kind_of Array
+    @driver.realms(:id => 'us').size.must_equal 1
+    @driver.realms(:id => 'us').first.id.must_equal 'us'
+    @driver.realms(:id => 'unknown').must_be_empty
+  end
+
+  it 'must allow to retrieve single realm' do
+    @driver.realm(:id => 'us').wont_be_nil
+    @driver.realm(:id => 'us').must_be_kind_of Realm
+    @driver.realm(:id => 'us').id.must_equal 'us'
+    @driver.realm(:id => 'unknown').must_be_nil
+  end
+
+end
diff --git a/server/tests/drivers/mock/storage_snapshots_test.rb b/server/tests/drivers/mock/storage_snapshots_test.rb
new file mode 100644
index 0000000..83ab110
--- /dev/null
+++ b/server/tests/drivers/mock/storage_snapshots_test.rb
@@ -0,0 +1,37 @@
+require 'minitest/autorun'
+
+require_relative File.join('..', '..', '..', 'lib', 'deltacloud', 'api.rb')
+
+describe 'MockDriver StorageSnapshots' do
+
+  before do
+    @driver = Deltacloud::new(:mock, :user => 'mockuser', :password => 'mockpassword')
+  end
+
+  it 'must throw error when wrong credentials' do
+    Proc.new do
+      @driver.backend.storage_snapshots(OpenStruct.new(:user => 'unknown', :password => 'wrong'))
+    end.must_raise Deltacloud::ExceptionHandler::AuthenticationFailure, 'Authentication Failure'
+  end
+
+  it 'must return list of storage_snapshots' do
+    @driver.storage_snapshots.wont_be_empty
+    @driver.storage_snapshots.first.must_be_kind_of StorageSnapshot
+  end
+
+  it 'must allow to filter storage_snapshots' do
+    @driver.storage_snapshots(:id => 'snap1').wont_be_empty
+    @driver.storage_snapshots(:id => 'snap1').must_be_kind_of Array
+    @driver.storage_snapshots(:id => 'snap1').size.must_equal 1
+    @driver.storage_snapshots(:id => 'snap1').first.id.must_equal 'snap1'
+    @driver.storage_snapshots(:id => 'unknown').must_be_empty
+  end
+
+  it 'must allow to retrieve single storage_snapshot' do
+    @driver.storage_snapshot(:id => 'snap1').wont_be_nil
+    @driver.storage_snapshot(:id => 'snap1').must_be_kind_of StorageSnapshot
+    @driver.storage_snapshot(:id => 'snap1').id.must_equal 'snap1'
+    @driver.storage_snapshot(:id => 'unknown').must_be_nil
+  end
+
+end
diff --git a/server/tests/drivers/mock/storage_volumes_test.rb b/server/tests/drivers/mock/storage_volumes_test.rb
new file mode 100644
index 0000000..4285d2e
--- /dev/null
+++ b/server/tests/drivers/mock/storage_volumes_test.rb
@@ -0,0 +1,59 @@
+require 'minitest/autorun'
+
+require_relative File.join('..', '..', '..', 'lib', 'deltacloud', 'api.rb')
+
+describe 'MockDriver StorageVolumes' do
+
+  before do
+    @driver = Deltacloud::new(:mock, :user => 'mockuser', :password => 'mockpassword')
+  end
+
+  it 'must throw error when wrong credentials' do
+    Proc.new do
+      @driver.backend.storage_volumes(OpenStruct.new(:user => 'unknown', :password => 'wrong'))
+    end.must_raise Deltacloud::ExceptionHandler::AuthenticationFailure, 'Authentication Failure'
+  end
+
+  it 'must return list of storage_volumes' do
+    @driver.storage_volumes.wont_be_empty
+    @driver.storage_volumes.first.must_be_kind_of StorageVolume
+  end
+
+  it 'must allow to filter storage_volumes' do
+    @driver.storage_volumes(:id => 'vol1').wont_be_empty
+    @driver.storage_volumes(:id => 'vol1').must_be_kind_of Array
+    @driver.storage_volumes(:id => 'vol1').size.must_equal 1
+    @driver.storage_volumes(:id => 'vol1').first.id.must_equal 'vol1'
+    @driver.storage_volumes(:id => 'unknown').must_be_empty
+  end
+
+  it 'must allow to retrieve single storage_volume' do
+    @driver.storage_volume(:id => 'vol1').wont_be_nil
+    @driver.storage_volume(:id => 'vol1').must_be_kind_of StorageVolume
+    @driver.storage_volume(:id => 'vol1').id.must_equal 'vol1'
+    @driver.storage_volume(:id => 'unknown').must_be_nil
+  end
+
+  it 'must allow to create and destroy the storage volume' do
+    volume = @driver.create_storage_volume(:name => 'Test Volume', :capacity => '100')
+    volume.must_be_kind_of StorageVolume
+    volume.name.must_equal 'Test Volume'
+    volume.capacity.must_equal '100'
+    @driver.destroy_storage_volume(:id => volume.id)
+    @driver.storage_volume(:id => volume.id).must_be_nil
+  end
+
+  it 'must allow to attach and detach storage volume to instance' do
+    volume = @driver.create_storage_volume(:name => 'Test Volume', :capacity => '100')
+    volume.must_be_kind_of StorageVolume
+    @driver.attach_storage_volume(:id => volume.id, :device => '/dev/sda', :instance_id => 'inst1')
+    @driver.storage_volume(:id => volume.id).instance_id.must_equal 'inst1'
+    @driver.storage_volume(:id => volume.id).device.must_equal '/dev/sda'
+    @driver.detach_storage_volume(:id => volume.id, :instance_id => 'inst1')
+    @driver.storage_volume(:id => volume.id).instance_id.must_be_nil
+    @driver.storage_volume(:id => volume.id).device.must_be_nil
+    @driver.destroy_storage_volume(:id => volume.id)
+    @driver.storage_volume(:id => volume.id).must_be_nil
+  end
+
+end
-- 
1.7.10.2


[PATCH core 3/6] Core: Move 'pp' into test_helper

Posted by mf...@redhat.com.
From: Michal Fojtik <mf...@redhat.com>


Signed-off-by: Michal fojtik <mf...@redhat.com>
---
 server/tests/deltacloud/common.rb |    1 -
 server/tests/test_helper.rb       |    4 ++++
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/server/tests/deltacloud/common.rb b/server/tests/deltacloud/common.rb
index 23826ad..728ad57 100644
--- a/server/tests/deltacloud/common.rb
+++ b/server/tests/deltacloud/common.rb
@@ -1,7 +1,6 @@
 require 'logger'
 require 'rack/test'
 require 'nokogiri'
-require 'pp'
 
 require_relative File.join('..', '..', 'lib', 'deltacloud_rack.rb')
 
diff --git a/server/tests/test_helper.rb b/server/tests/test_helper.rb
index 0f9b64a..5aed571 100644
--- a/server/tests/test_helper.rb
+++ b/server/tests/test_helper.rb
@@ -1,3 +1,7 @@
+require 'pp'
+
+ENV['RACK_ENV'] = 'test'
+
 %x[rake mock:fixtures:reset]
 
 if ENV['COVERAGE']
-- 
1.7.10.2


[PATCH core 5/6] Mock: Fixed opts parameter to be Hash on some methods

Posted by mf...@redhat.com.
From: Michal Fojtik <mf...@redhat.com>


Signed-off-by: Michal fojtik <mf...@redhat.com>
---
 server/lib/deltacloud/drivers/mock/mock_driver.rb |   14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/server/lib/deltacloud/drivers/mock/mock_driver.rb b/server/lib/deltacloud/drivers/mock/mock_driver.rb
index 5dbd730..4249a95 100644
--- a/server/lib/deltacloud/drivers/mock/mock_driver.rb
+++ b/server/lib/deltacloud/drivers/mock/mock_driver.rb
@@ -258,9 +258,8 @@ module Deltacloud::Drivers::Mock
       volumes
     end
 
-    def create_storage_volume(credentials, opts=nil)
+    def create_storage_volume(credentials, opts={})
       check_credentials(credentials)
-      opts ||= {}
       opts[:capacity] ||= "1"
       id = "Volume#{Time.now.to_i}"
       volume = {
@@ -274,13 +273,13 @@ module Deltacloud::Drivers::Mock
       StorageVolume.new(volume)
     end
 
-    def destroy_storage_volume(credentials, opts=nil)
+    def destroy_storage_volume(credentials, opts={})
       check_credentials(credentials)
       @client.destroy(:storage_volumes, opts[:id])
     end
 
     #opts: {:id=,:instance_id,:device}
-    def attach_storage_volume(credentials, opts)
+    def attach_storage_volume(credentials, opts={})
       check_credentials(credentials)
       attach_volume_instance(opts[:id], opts[:device], opts[:instance_id])
     end
@@ -320,9 +319,10 @@ module Deltacloud::Drivers::Mock
         :fingerprint => Key::generate_mock_fingerprint,
         :pem_rsa_key => Key::generate_mock_pem
       }
-
-      raise "KeyExist" if @client.load(:keys, key_hash[:id])
-      @client.store(:keys, key_hash)
+      safely do
+        raise "KeyExist" if @client.load(:keys, key_hash[:id])
+        @client.store(:keys, key_hash)
+      end
       return Key.new(key_hash)
     end
 
-- 
1.7.10.2


[PATCH core 2/6] Mock: Added missing require and fixed realms param

Posted by mf...@redhat.com.
From: Michal Fojtik <mf...@redhat.com>


Signed-off-by: Michal fojtik <mf...@redhat.com>
---
 server/lib/deltacloud/drivers/mock/mock_client.rb |    2 ++
 server/lib/deltacloud/drivers/mock/mock_driver.rb |    4 ++--
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/server/lib/deltacloud/drivers/mock/mock_client.rb b/server/lib/deltacloud/drivers/mock/mock_client.rb
index 4c27a66..817ae0b 100644
--- a/server/lib/deltacloud/drivers/mock/mock_client.rb
+++ b/server/lib/deltacloud/drivers/mock/mock_client.rb
@@ -19,6 +19,8 @@
 
 module Deltacloud::Drivers::Mock
 
+  require 'fileutils'
+
   class Client
     def initialize(storage_root)
       @storage_root = storage_root
diff --git a/server/lib/deltacloud/drivers/mock/mock_driver.rb b/server/lib/deltacloud/drivers/mock/mock_driver.rb
index 582fb6a..5dbd730 100644
--- a/server/lib/deltacloud/drivers/mock/mock_driver.rb
+++ b/server/lib/deltacloud/drivers/mock/mock_driver.rb
@@ -91,7 +91,7 @@ module Deltacloud::Drivers::Mock
       @client = Client.new(storage_root)
     end
 
-    def realms(credentials, opts=nil)
+    def realms(credentials, opts={})
       check_credentials( credentials )
       results = []
       safely do
@@ -101,7 +101,6 @@ module Deltacloud::Drivers::Mock
         raise "NotImplementedTest" if opts and opts[:id] == "501"
         raise "ProviderErrorTest" if opts and opts[:id] == "502"
         raise "ProviderTimeoutTest" if opts and opts[:id] == "504"
-        return REALMS if ( opts.nil? )
         results = REALMS
       end
       results = filter_on( results, :id, opts )
@@ -189,6 +188,7 @@ module Deltacloud::Drivers::Mock
       end
 
       hwp = find_hardware_profile(credentials, opts[:hwp_id], image_id)
+      hwp ||= find_hardware_profile(credentials, 'm1-small', image_id)
 
       name = opts[:name] || "i-#{Time.now.to_i}"
 
-- 
1.7.10.2


[PATCH core 6/6] Core: Added handler for 403 exceptions

Posted by mf...@redhat.com.
From: Michal Fojtik <mf...@redhat.com>


Signed-off-by: Michal fojtik <mf...@redhat.com>
---
 server/lib/deltacloud/drivers/exceptions.rb |   10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/server/lib/deltacloud/drivers/exceptions.rb b/server/lib/deltacloud/drivers/exceptions.rb
index d5a8bc3..5e679a5 100644
--- a/server/lib/deltacloud/drivers/exceptions.rb
+++ b/server/lib/deltacloud/drivers/exceptions.rb
@@ -37,6 +37,13 @@ module Deltacloud
       end
     end
 
+    class ForbiddenError < DeltacloudException
+      def initialize(e, message=nil)
+        message ||= e.message
+        super(403, e.class.name, message, e.backtrace)
+      end
+    end
+
     class UnknownMediaTypeError < DeltacloudException
       def initialize(e, message=nil)
         message ||= e.message
@@ -136,6 +143,7 @@ module Deltacloud
         return @handler if @handler
         case @status
           when 401 then Deltacloud::ExceptionHandler::AuthenticationFailure.new(e, @message)
+          when 403 then Deltacloud::ExceptionHandler::ForbiddenError.new(e, @message)
           when 404 then Deltacloud::ExceptionHandler::ObjectNotFound.new(e, @message)
           when 406 then Deltacloud::ExceptionHandler::UnknownMediaTypeError.new(e, @message)
           when 405 then Deltacloud::ExceptionHandler::MethodNotAllowed.new(e, @message)
@@ -176,7 +184,7 @@ module Deltacloud
         Deltacloud::ExceptionHandler::exceptions.each do |exdef|
           if exdef.match?($!)
             new_exception = exdef.handler($!)
-            m = new_exception.message.nil? ? $!.message : new_exception.message
+            m = (new_exception && !new_exception.message.nil?) ? new_exception.message : $!.message
             unless ENV['RACK_ENV'] == 'test'
               $stderr.send(report_method, "#{[$!.class.to_s, m].join(':')}\n#{$!.backtrace[0..10].join("\n")}")
             end
-- 
1.7.10.2


Re: [PATCH core 1/6] Core: Make exception reporting silent on tests

Posted by David Lutterkort <lu...@redhat.com>.
On Mon, 2012-07-23 at 12:07 +0300, marios@redhat.com wrote:
> On 20/07/12 18:45, mfojtik@redhat.com wrote:
> > From: Michal Fojtik <mf...@redhat.com>
> > 
> > 
> > Signed-off-by: Michal fojtik <mf...@redhat.com>
> > ---
> >  server/lib/deltacloud/drivers/exceptions.rb |    4 +++-
> >  1 file changed, 3 insertions(+), 1 deletion(-)
> > 
> > diff --git a/server/lib/deltacloud/drivers/exceptions.rb b/server/lib/deltacloud/drivers/exceptions.rb
> > index a89b05f..d5a8bc3 100644
> > --- a/server/lib/deltacloud/drivers/exceptions.rb
> > +++ b/server/lib/deltacloud/drivers/exceptions.rb
> > @@ -177,7 +177,9 @@ module Deltacloud
> >            if exdef.match?($!)
> >              new_exception = exdef.handler($!)
> >              m = new_exception.message.nil? ? $!.message : new_exception.message
> > -            $stderr.send(report_method, "#{[$!.class.to_s, m].join(':')}\n#{$!.backtrace[0..10].join("\n")}")
> > +            unless ENV['RACK_ENV'] == 'test'
> > +              $stderr.send(report_method, "#{[$!.class.to_s, m].join(':')}\n#{$!.backtrace[0..10].join("\n")}")
> > +            end
> >              raise exdef.handler($!) unless new_exception.nil?
> >            end
> >          end
> > 
> 
> ACK to series... nits:
> 
> "rake test" fails with: no such file to load -- minitest/autorun (LoadError)
> 
> "bundle exec rake test" runs fine, with test failures (I understand
> these are expected at this point). Full trace follows FYI:

I think it's time to apply the magic bundler patch below. Can anybody
think of the downside of doing this (besides requiring bundler) ? What
about checking in the Gemfile.lock ?

diff --git a/server/Rakefile b/server/Rakefile
index f232933..d4f4db5 100644
--- a/server/Rakefile
+++ b/server/Rakefile
@@ -20,6 +20,9 @@
 require 'rake'
 require 'rake/testtask'
 require 'rubygems/package_task'
+require "bundler/setup"
+
+Bundler.setup
 
 $top_srcdir = File.dirname(__FILE__)
 $:.unshift File.join($top_srcdir, 'lib')

David



Re: [PATCH core 1/6] Core: Make exception reporting silent on tests

Posted by "marios@redhat.com" <ma...@redhat.com>.
On 20/07/12 18:45, mfojtik@redhat.com wrote:
> From: Michal Fojtik <mf...@redhat.com>
> 
> 
> Signed-off-by: Michal fojtik <mf...@redhat.com>
> ---
>  server/lib/deltacloud/drivers/exceptions.rb |    4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/server/lib/deltacloud/drivers/exceptions.rb b/server/lib/deltacloud/drivers/exceptions.rb
> index a89b05f..d5a8bc3 100644
> --- a/server/lib/deltacloud/drivers/exceptions.rb
> +++ b/server/lib/deltacloud/drivers/exceptions.rb
> @@ -177,7 +177,9 @@ module Deltacloud
>            if exdef.match?($!)
>              new_exception = exdef.handler($!)
>              m = new_exception.message.nil? ? $!.message : new_exception.message
> -            $stderr.send(report_method, "#{[$!.class.to_s, m].join(':')}\n#{$!.backtrace[0..10].join("\n")}")
> +            unless ENV['RACK_ENV'] == 'test'
> +              $stderr.send(report_method, "#{[$!.class.to_s, m].join(':')}\n#{$!.backtrace[0..10].join("\n")}")
> +            end
>              raise exdef.handler($!) unless new_exception.nil?
>            end
>          end
> 

ACK to series... nits:

"rake test" fails with: no such file to load -- minitest/autorun (LoadError)

"bundle exec rake test" runs fine, with test failures (I understand
these are expected at this point). Full trace follows FYI:



[marios@name server]$ rake test
NOTE: Gem::Specification#has_rdoc= is deprecated with no replacement. It
will be removed on or after 2011-10-01.
Gem::Specification#has_rdoc= called from deltacloud-core.gemspec:67
.
NOTE: Gem::Specification#has_rdoc= is deprecated with no replacement. It
will be removed on or after 2011-10-01.
Gem::Specification#has_rdoc= called from deltacloud-core.gemspec:67
.
rm -rf
/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/lib/deltacloud/drivers/mock/data
mkdir -p
/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/lib/deltacloud/drivers/mock/data
cp -r
/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/lib/deltacloud/drivers/mock/data
/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/helpers/core_ext/string_test.rb:1:in
`require': no such file to load -- minitest/autorun (LoadError)
	from
/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/helpers/core_ext/string_test.rb:1
	from
/usr/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/rake_test_loader.rb:15:in
`require'
	from
/usr/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/rake_test_loader.rb:15
	from
/usr/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/rake_test_loader.rb:4:in
`select'
	from
/usr/lib/ruby/gems/1.8/gems/rake-0.9.2.2/lib/rake/rake_test_loader.rb:4
rake aborted!
Command failed with status (1): [/usr/bin/ruby -I"lib"
-r./tests/test_helpe...]

Tasks: TOP => test
(See full trace by running task with --trace)



[marios@name server]$ bundle exec rake test
NOTE: Gem::Specification#has_rdoc= is deprecated with no replacement. It
will be removed on or after 2011-10-01.
Gem::Specification#has_rdoc= called from
/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/deltacloud-core.gemspec:67
.
NOTE: Gem::Specification#has_rdoc= is deprecated with no replacement. It
will be removed on or after 2011-10-01.
Gem::Specification#has_rdoc= called from
/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/deltacloud-core.gemspec:67
.
NOTE: Gem::Specification#has_rdoc= is deprecated with no replacement. It
will be removed on or after 2011-10-01.
Gem::Specification#has_rdoc= called from
/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/deltacloud-core.gemspec:67
.
NOTE: Gem::Specification#has_rdoc= is deprecated with no replacement. It
will be removed on or after 2011-10-01.
Gem::Specification#has_rdoc= called from
/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/deltacloud-core.gemspec:67
.
NOTE: Gem::Specification#has_rdoc= is deprecated with no replacement. It
will be removed on or after 2011-10-01.
Gem::Specification#has_rdoc= called from deltacloud-core.gemspec:67
.
NOTE: Gem::Specification#has_rdoc= is deprecated with no replacement. It
will be removed on or after 2011-10-01.
Gem::Specification#has_rdoc= called from
/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/deltacloud-core.gemspec:67
.
NOTE: Gem::Specification#has_rdoc= is deprecated with no replacement. It
will be removed on or after 2011-10-01.
Gem::Specification#has_rdoc= called from
/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/deltacloud-core.gemspec:67
.
NOTE: Gem::Specification#has_rdoc= is deprecated with no replacement. It
will be removed on or after 2011-10-01.
Gem::Specification#has_rdoc= called from deltacloud-core.gemspec:67
.
rm -rf
/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/lib/deltacloud/drivers/mock/data
mkdir -p
/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/lib/deltacloud/drivers/mock/data
cp -r
/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/lib/deltacloud/drivers/mock/data
NOTE: Gem::Specification#has_rdoc= is deprecated with no replacement. It
will be removed on or after 2011-10-01.
Gem::Specification#has_rdoc= called from
/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/deltacloud-core.gemspec:67
.
NOTE: Gem::Specification#has_rdoc= is deprecated with no replacement. It
will be removed on or after 2011-10-01.
Gem::Specification#has_rdoc= called from
/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/deltacloud-core.gemspec:67
.
/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/base/../../../lib/deltacloud/drivers/.././core_ext/proc.rb:21:
warning: already initialized constant Callback
/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/deltacloud/../../lib/./deltacloud/./core_ext/proc.rb:21:
warning: already initialized constant Callback
/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/deltacloud/../../lib/deltacloud/./drivers/.././core_ext/proc.rb:21:
warning: already initialized constant Callback
/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/deltacloud/collections/../../../lib/./deltacloud/./core_ext/proc.rb:21:
warning: already initialized constant Callback
/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/deltacloud/collections/../../../lib/./sinatra/rack_logger.rb:56:
warning: already initialized constant FORMAT
/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/deltacloud/collections/../../../lib/./sinatra/rack_logger.rb:58:
warning: already initialized constant VERBOSE_FORMAT
/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/../../../lib/deltacloud/./core_ext/proc.rb:21:
warning: already initialized constant Callback
/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/../../../lib/deltacloud/drivers/.././core_ext/proc.rb:21:
warning: already initialized constant Callback
Run options: --seed 28267

# Running tests:

........./usr/lib/ruby/gems/1.8/gems/aws-2.5.6/lib/ses/../awsbase/utils.rb:105:
warning: already initialized constant HEX
/usr/lib/ruby/gems/1.8/gems/aws-2.5.6/lib/ses/../awsbase/utils.rb:107:
warning: already initialized constant TO_REMEMBER
/usr/lib/ruby/gems/1.8/gems/aws-2.5.6/lib/ses/../awsbase/utils.rb:108:
warning: already initialized constant ASCII
/usr/lib/ruby/gems/1.8/gems/aws-2.5.6/lib/ses/../awsbase/errors.rb:128:
warning: already initialized constant DEFAULT_CLOSE_ON_4XX_PROBABILITY
/usr/lib/ruby/gems/1.8/gems/aws-2.5.6/lib/ses/../awsbase/parsers.rb:47:
warning: already initialized constant DEFAULT_XML_LIBRARY
/usr/lib/ruby/gems/1.8/gems/aws-2.5.6/lib/ses/../awsbase/awsbase.rb:66:
warning: already initialized constant AMAZON_PROBLEMS
/usr/lib/ruby/gems/1.8/gems/aws-2.5.6/lib/ses/../awsbase/awsbase.rb:86:
warning: already initialized constant DEFAULT_SIGNATURE_VERSION
..................................F.F........FFE.............................E......EF.FEF.EEFEFF.E.FFFF....F.FFE.F.F................

Finished tests in 2.997134s, 47.3786 tests/s, 122.4503 assertions/s.

  1) Failure:
test_0005_returns blob metadata(Deltacloud::Collections::Buckets)
[/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/deltacloud/collections/buckets_collection_test.rb:40]:
Expected: "NEWVALUE"
  Actual: nil

  2) Failure:
test_0006_returns blob details on show operation in various
formats(Deltacloud::Collections::Buckets)
[/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/deltacloud/collections/buckets_collection_test.rb:51]:
Expected: 200
  Actual: 404

  3) Failure:
test_0004_returns details about driver in various formats with show
operation(Deltacloud::Collections::Images)
[/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/deltacloud/collections/images_collection_test.rb:32]:
Expected: 200
  Actual: 404

  4) Failure:
test_0005_provides URL to specify new
image(Deltacloud::Collections::Images)
[/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/deltacloud/collections/images_collection_test.rb:39]:
Expected: 200
  Actual: 404

  5) Error:
test_0006_allow to create and destroy the new
image(Deltacloud::Collections::Images):
Deltacloud::ExceptionHandler::BackendError: CreateImageNotSupported

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/../../../lib/deltacloud/helpers/../drivers/mock/mock_driver.rb:132:in
`create_image'

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/../../../lib/deltacloud/drivers/./exceptions.rb:181:in
`call'

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/../../../lib/deltacloud/drivers/./exceptions.rb:181:in
`safely'

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/../../../lib/deltacloud/helpers/../drivers/mock/mock_driver.rb:131:in
`create_image'

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/deltacloud/../../lib/deltacloud/./collections/images.rb:44

/usr/lib/ruby/gems/1.8/gems/sinatra-rabbit-1.0.10/lib/sinatra/./rabbit/base.rb:385:in
`instance_eval'

/usr/lib/ruby/gems/1.8/gems/sinatra-rabbit-1.0.10/lib/sinatra/./rabbit/base.rb:385:in
`POST /api/images'

/usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:1211:in `call'

/usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:1211:in
`compile!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:785:in
`[]'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:785:in
`route!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:801:in
`route_eval'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:785:in
`route!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:822:in
`process_route'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:820:in
`catch'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:820:in
`process_route'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:784:in
`route!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:783:in
`each'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:783:in
`route!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:886:in
`dispatch!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in
`call!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`invoke'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`catch'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`invoke'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in
`call!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:705:in
`call'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:766:in
`forward'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:835:in
`route_missing'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:796:in
`route!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:792:in
`route!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:886:in
`dispatch!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in
`call!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`invoke'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`catch'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`invoke'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in
`call!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:705:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/path_traversal.rb:16:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/json_csrf.rb:17:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/base.rb:47:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/nulllogger.rb:9:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/head.rb:9:in `call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/path_traversal.rb:16:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/json_csrf.rb:17:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/base.rb:47:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/nulllogger.rb:9:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/head.rb:9:in `call'

/usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/methodoverride.rb:21:in
`call'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:766:in
`forward'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:835:in
`route_missing'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:796:in
`route!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:792:in
`route!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:886:in
`dispatch!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in
`call!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`invoke'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`catch'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`invoke'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in
`call!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:705:in
`call'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:766:in
`forward'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:835:in
`route_missing'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:796:in
`route!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:792:in
`route!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:886:in
`dispatch!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in
`call!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`invoke'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`catch'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`invoke'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in
`call!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:705:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/path_traversal.rb:16:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/json_csrf.rb:17:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/base.rb:47:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/nulllogger.rb:9:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/head.rb:9:in `call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/path_traversal.rb:16:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/json_csrf.rb:17:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/base.rb:47:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/nulllogger.rb:9:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/head.rb:9:in `call'

/usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/methodoverride.rb:21:in
`call'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:766:in
`forward'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:835:in
`route_missing'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:796:in
`route!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:792:in
`route!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:886:in
`dispatch!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in
`call!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`invoke'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`catch'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`invoke'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in
`call!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:705:in
`call'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:766:in
`forward'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:835:in
`route_missing'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:796:in
`route!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:792:in
`route!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:886:in
`dispatch!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in
`call!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`invoke'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`catch'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`invoke'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in
`call!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:705:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/path_traversal.rb:16:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/json_csrf.rb:17:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/base.rb:47:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/nulllogger.rb:9:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/head.rb:9:in `call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/path_traversal.rb:16:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/json_csrf.rb:17:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/base.rb:47:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/nulllogger.rb:9:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/head.rb:9:in `call'

/usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/methodoverride.rb:21:in
`call'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:766:in
`forward'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:835:in
`route_missing'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:796:in
`route!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:792:in
`route!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:886:in
`dispatch!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in
`call!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`invoke'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`catch'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`invoke'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in
`call!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:705:in
`call'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:766:in
`forward'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:835:in
`route_missing'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:796:in
`route!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:792:in
`route!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:886:in
`dispatch!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in
`call!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`invoke'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`catch'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`invoke'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in
`call!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:705:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/path_traversal.rb:16:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/json_csrf.rb:17:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/base.rb:47:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/nulllogger.rb:9:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/head.rb:9:in `call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/path_traversal.rb:16:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/json_csrf.rb:17:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/base.rb:47:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/nulllogger.rb:9:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/head.rb:9:in `call'

/usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/methodoverride.rb:21:in
`call'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:766:in
`forward'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:835:in
`route_missing'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:796:in
`route!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:792:in
`route!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:886:in
`dispatch!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in
`call!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`invoke'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`catch'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`invoke'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in
`call!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:705:in
`call'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:766:in
`forward'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:835:in
`route_missing'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:796:in
`route!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:792:in
`route!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:886:in
`dispatch!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in
`call!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`invoke'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`catch'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`invoke'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in
`call!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:705:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/path_traversal.rb:16:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/json_csrf.rb:17:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/base.rb:47:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/nulllogger.rb:9:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/head.rb:9:in `call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/path_traversal.rb:16:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/json_csrf.rb:17:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/base.rb:47:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/nulllogger.rb:9:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/head.rb:9:in `call'

/usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/methodoverride.rb:21:in
`call'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:766:in
`forward'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:835:in
`route_missing'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:796:in
`route!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:792:in
`route!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:886:in
`dispatch!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in
`call!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`invoke'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`catch'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`invoke'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in
`call!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:705:in
`call'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:766:in
`forward'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:835:in
`route_missing'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:796:in
`route!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:792:in
`route!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:886:in
`dispatch!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in
`call!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`invoke'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`catch'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`invoke'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in
`call!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:705:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/path_traversal.rb:16:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/json_csrf.rb:17:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/base.rb:47:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/nulllogger.rb:9:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/head.rb:9:in `call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/path_traversal.rb:16:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/json_csrf.rb:17:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/base.rb:47:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/nulllogger.rb:9:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/head.rb:9:in `call'

/usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/methodoverride.rb:21:in
`call'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:766:in
`forward'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:835:in
`route_missing'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:796:in
`route!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:792:in
`route!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:886:in
`dispatch!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in
`call!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`invoke'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`catch'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`invoke'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in
`call!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:705:in
`call'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:766:in
`forward'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:835:in
`route_missing'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:796:in
`route!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:792:in
`route!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:886:in
`dispatch!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in
`call!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`invoke'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`catch'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`invoke'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in
`call!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:705:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/path_traversal.rb:16:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/json_csrf.rb:17:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/base.rb:47:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/nulllogger.rb:9:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/head.rb:9:in `call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/path_traversal.rb:16:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/json_csrf.rb:17:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/base.rb:47:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/nulllogger.rb:9:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/head.rb:9:in `call'

/usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/methodoverride.rb:21:in
`call'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:766:in
`forward'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:835:in
`route_missing'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:796:in
`route!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:792:in
`route!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:886:in
`dispatch!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in
`call!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`invoke'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`catch'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`invoke'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in
`call!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:705:in
`call'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:766:in
`forward'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:835:in
`route_missing'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:796:in
`route!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:792:in
`route!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:886:in
`dispatch!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in
`call!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`invoke'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`catch'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`invoke'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in
`call!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:705:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/path_traversal.rb:16:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/json_csrf.rb:17:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/base.rb:47:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/nulllogger.rb:9:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/head.rb:9:in `call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/path_traversal.rb:16:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/json_csrf.rb:17:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/base.rb:47:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/nulllogger.rb:9:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/head.rb:9:in `call'

/usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/methodoverride.rb:21:in
`call'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:766:in
`forward'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:835:in
`route_missing'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:796:in
`route!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:792:in
`route!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:886:in
`dispatch!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in
`call!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`invoke'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`catch'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`invoke'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in
`call!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:705:in
`call'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:766:in
`forward'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:835:in
`route_missing'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:796:in
`route!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:792:in
`route!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:886:in
`dispatch!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in
`call!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`invoke'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`catch'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`invoke'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in
`call!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:705:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/path_traversal.rb:16:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/json_csrf.rb:17:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/base.rb:47:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/nulllogger.rb:9:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/head.rb:9:in `call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/path_traversal.rb:16:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/json_csrf.rb:17:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/base.rb:47:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/nulllogger.rb:9:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/head.rb:9:in `call'

/usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/methodoverride.rb:21:in
`call'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:766:in
`forward'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:835:in
`route_missing'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:796:in
`route!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:792:in
`route!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:886:in
`dispatch!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in
`call!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`invoke'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`catch'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`invoke'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in
`call!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:705:in
`call'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:766:in
`forward'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:835:in
`route_missing'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:796:in
`route!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:792:in
`route!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:886:in
`dispatch!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in
`call!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`invoke'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`catch'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`invoke'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in
`call!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:705:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/path_traversal.rb:16:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/json_csrf.rb:17:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/base.rb:47:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/nulllogger.rb:9:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/head.rb:9:in `call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/path_traversal.rb:16:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/json_csrf.rb:17:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/base.rb:47:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/nulllogger.rb:9:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/head.rb:9:in `call'

/usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/methodoverride.rb:21:in
`call'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:766:in
`forward'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:835:in
`route_missing'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:796:in
`route!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:792:in
`route!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:886:in
`dispatch!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in
`call!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`invoke'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`catch'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`invoke'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in
`call!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:705:in
`call'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:766:in
`forward'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:835:in
`route_missing'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:796:in
`route!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:792:in
`route!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:886:in
`dispatch!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in
`call!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`invoke'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`catch'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:871:in
`invoke'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:719:in
`call!'
    /usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:705:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/path_traversal.rb:16:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/json_csrf.rb:17:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/base.rb:47:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/nulllogger.rb:9:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/head.rb:9:in `call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/path_traversal.rb:16:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/json_csrf.rb:17:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/base.rb:47:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/nulllogger.rb:9:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/head.rb:9:in `call'

/usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/methodoverride.rb:21:in
`call'

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/deltacloud/../../lib/deltacloud/../sinatra/rack_accept.rb:155:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/path_traversal.rb:16:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/json_csrf.rb:17:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/base.rb:47:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/nulllogger.rb:9:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/head.rb:9:in `call'

/usr/lib/ruby/gems/1.8/gems/rack-accept-0.4.5/lib/rack/accept/context.rb:22:in
`call'

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/deltacloud/../../lib/deltacloud/../sinatra/rack_driver_select.rb:45:in
`call'

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/deltacloud/../../lib/deltacloud/../sinatra/rack_matrix_params.rb:104:in
`call'

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/deltacloud/../../lib/deltacloud/../sinatra/rack_etag.rb:41:in
`call'

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/deltacloud/../../lib/deltacloud/../sinatra/rack_date.rb:31:in
`call'

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/deltacloud/collections/../../../lib/./sinatra/rack_logger.rb:71:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/path_traversal.rb:16:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/json_csrf.rb:17:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/base.rb:47:in
`call'

/usr/lib/ruby/gems/1.8/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/nulllogger.rb:9:in
`call'
    /usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/head.rb:9:in `call'

/usr/lib/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/methodoverride.rb:21:in
`call'

/usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:1334:in `call'

/usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:1416:in
`synchronize'

/usr/lib/ruby/gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:1334:in `call'

/usr/lib/ruby/gems/1.8/gems/rack-test-0.6.1/lib/rack/mock_session.rb:30:in
`request'
    /usr/lib/ruby/gems/1.8/gems/rack-test-0.6.1/lib/rack/test.rb:219:in
`process_request'
    /usr/lib/ruby/gems/1.8/gems/rack-test-0.6.1/lib/rack/test.rb:66:in
`post'

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/deltacloud/collections/images_collection_test.rb:45:in
`test_0006_allow to create and destroy the new image'

  6) Error:
test_0002_advertise the current state using is_state?(Instance):
NoMethodError: is_running?

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/../../../lib/deltacloud/models/instance.rb:68:in
`method_missing'

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/models/instance_test.rb:25:in
`test_0002_advertise the current state using is_state?'

  7) Error:
test_0006_must allow to destroy created image(MockDriver Images):
Deltacloud::ExceptionHandler::BackendError: CreateImageNotSupported

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/../../../lib/deltacloud/helpers/../drivers/mock/mock_driver.rb:132:in
`create_image'

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/../../../lib/deltacloud/drivers/./exceptions.rb:181:in
`call'

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/../../../lib/deltacloud/drivers/./exceptions.rb:181:in
`safely'

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/../../../lib/deltacloud/helpers/../drivers/mock/mock_driver.rb:131:in
`create_image'

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/../../../lib/deltacloud/api.rb:75:in
`send'

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/../../../lib/deltacloud/api.rb:75:in
`method_missing'

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/images_test.rb:50:in
`test_0006_must allow to destroy created image'

  8) Failure:
test_0004_must allow to retrieve single image(MockDriver Images)
[/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/images_test.rb:33]:
Expected nil to not be nil.

  9) Failure:
test_0002_must return list of images(MockDriver Images)
[/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/images_test.rb:18]:
Expected [] to not be empty.

 10) Error:
test_0005_must allow to create a new image if instance
supported(MockDriver Images):
Deltacloud::ExceptionHandler::BackendError: CreateImageNotSupported

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/../../../lib/deltacloud/helpers/../drivers/mock/mock_driver.rb:132:in
`create_image'

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/../../../lib/deltacloud/drivers/./exceptions.rb:181:in
`call'

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/../../../lib/deltacloud/drivers/./exceptions.rb:181:in
`safely'

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/../../../lib/deltacloud/helpers/../drivers/mock/mock_driver.rb:131:in
`create_image'

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/../../../lib/deltacloud/api.rb:75:in
`send'

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/../../../lib/deltacloud/api.rb:75:in
`method_missing'

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/images_test.rb:40:in
`test_0005_must allow to create a new image if instance supported'

 11) Failure:
test_0003_must allow to filter images(MockDriver Images)
[/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/images_test.rb:23]:
Expected [] to not be empty.

 12) Error:
test_0007_must allow to stop instance in running state(MockDriver
Instances):
ArgumentError: wrong number of arguments (2 for 3)

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/../../../lib/deltacloud/api.rb:77:in
`create_instance'

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/../../../lib/deltacloud/api.rb:77:in
`send'

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/../../../lib/deltacloud/api.rb:77:in
`method_missing'

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/instances_test.rb:64:in
`test_0007_must allow to stop instance in running state'

 13) Error:
test_0009_must allow to reboot instance in running state(MockDriver
Instances):
ArgumentError: wrong number of arguments (2 for 3)

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/../../../lib/deltacloud/api.rb:77:in
`create_instance'

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/../../../lib/deltacloud/api.rb:77:in
`send'

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/../../../lib/deltacloud/api.rb:77:in
`method_missing'

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/instances_test.rb:86:in
`test_0009_must allow to reboot instance in running state'

 14) Failure:
test_0004_must allow to retrieve single instance(MockDriver Instances)
[/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/instances_test.rb:33]:
Expected nil to not be nil.

 15) Error:
test_0006_must allow to destroy created instance(MockDriver Instances):
ArgumentError: wrong number of arguments (2 for 3)

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/../../../lib/deltacloud/api.rb:77:in
`create_instance'

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/../../../lib/deltacloud/api.rb:77:in
`send'

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/../../../lib/deltacloud/api.rb:77:in
`method_missing'

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/instances_test.rb:57:in
`test_0006_must allow to destroy created instance'

 16) Failure:
test_0002_must return list of instances(MockDriver Instances)
[/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/instances_test.rb:18]:
Expected [] to not be empty.

 17) Failure:
test_0003_must allow to filter instances(MockDriver Instances)
[/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/instances_test.rb:23]:
Expected [] to not be empty.

 18) Error:
test_0008_must allow to start instance in stopped state(MockDriver
Instances):
ArgumentError: wrong number of arguments (2 for 3)

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/../../../lib/deltacloud/api.rb:77:in
`create_instance'

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/../../../lib/deltacloud/api.rb:77:in
`send'

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/../../../lib/deltacloud/api.rb:77:in
`method_missing'

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/instances_test.rb:74:in
`test_0008_must allow to start instance in stopped state'

 19) Failure:
test_0003_must allow to filter keys(MockDriver Keys)
[/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/keys_test.rb:23]:
Expected [] to not be empty.

 20) Failure:
test_0002_must return list of keys(MockDriver Keys)
[/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/keys_test.rb:18]:
Expected [] to not be empty.

 21) Failure:
test_0004_must allow to retrieve single key(MockDriver Keys)
[/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/keys_test.rb:31]:
Expected nil to not be nil.

 22) Failure:
test_0005_must allow to create a new key(MockDriver Keys)
[/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/keys_test.rb:41]:
KeyExist.
[Deltacloud::ExceptionHandler::ProviderError] exception expected, not
Class: <Deltacloud::ExceptionHandler::ForbiddenError>
Message: <"Key with same name already exists">
---Backtrace---
/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/../../../lib/deltacloud/helpers/../drivers/mock/mock_driver.rb:323:in
`create_key'
/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/../../../lib/deltacloud/drivers/./exceptions.rb:181:in
`call'
/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/../../../lib/deltacloud/drivers/./exceptions.rb:181:in
`safely'
/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/../../../lib/deltacloud/helpers/../drivers/mock/mock_driver.rb:322:in
`create_key'
/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/../../../lib/deltacloud/api.rb:75:in
`send'
/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/../../../lib/deltacloud/api.rb:75:in
`method_missing'
/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/keys_test.rb:41:in
`test_0005_must allow to create a new key'
---------------

 23) Failure:
test_0002_must return list of storage_snapshots(MockDriver
StorageSnapshots)
[/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/storage_snapshots_test.rb:18]:
Expected [] to not be empty.

 24) Failure:
test_0003_must allow to filter storage_snapshots(MockDriver
StorageSnapshots)
[/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/storage_snapshots_test.rb:23]:
Expected [] to not be empty.

 25) Failure:
test_0004_must allow to retrieve single storage_snapshot(MockDriver
StorageSnapshots)
[/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/storage_snapshots_test.rb:31]:
Expected nil to not be nil.

 26) Error:
test_0006_must allow to attach and detach storage volume to
instance(MockDriver StorageVolumes):
NoMethodError: undefined method `[]' for nil:NilClass

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/../../../lib/deltacloud/helpers/../drivers/mock/mock_driver.rb:535:in
`attach_volume_instance'

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/../../../lib/deltacloud/helpers/../drivers/mock/mock_driver.rb:284:in
`attach_storage_volume'

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/../../../lib/deltacloud/api.rb:75:in
`send'

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/../../../lib/deltacloud/api.rb:75:in
`method_missing'

/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/storage_volumes_test.rb:49:in
`test_0006_must allow to attach and detach storage volume to instance'

 27) Failure:
test_0003_must allow to filter storage_volumes(MockDriver
StorageVolumes)
[/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/storage_volumes_test.rb:23]:
Expected [] to not be empty.

 28) Failure:
test_0004_must allow to retrieve single storage_volume(MockDriver
StorageVolumes)
[/home/marios/Documents/WORK/NewEclipsey/DCore/deltacloud_git_repo/deltacloud/server/tests/drivers/mock/storage_volumes_test.rb:31]:
Expected nil to not be nil.

142 tests, 367 assertions, 19 failures, 9 errors, 0 skips
rake aborted!
Command failed with status (1): [/usr/bin/ruby -I"lib"
-r./tests/test_helpe...]

Tasks: TOP => test
(See full trace by running task with --trace)