deltacloud-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "marios@redhat.com" <mandr...@redhat.com>
Subject Re: Unit tests Google Storage
Date Wed, 02 Nov 2011 10:18:22 GMT
On 02/11/11 12:06, Michal Fojtik wrote:
> On Nov 2, 2011, at 10:34 AM, marios@redhat.com wrote:
> 
> Hi,
> 
> I tried to run the tests but I got this error:
> 
> test_02_it_can_post_new_blob(GoogleTest::BucketsTest): Excon::Errors::SocketError:can't
convert Tempfile into String
> /Library/Ruby/Gems/1.8/gems/vcr-1.11.3/lib/vcr/structs/normalizers/body.rb:19:in `initialize'
> /Library/Ruby/Gems/1.8/gems/vcr-1.11.3/lib/vcr/structs/normalizers/body.rb:19:in `new'
> /Library/Ruby/Gems/1.8/gems/vcr-1.11.3/lib/vcr/structs/normalizers/body.rb:19:in `normalize_body'
> /Library/Ruby/Gems/1.8/gems/vcr-1.11.3/lib/vcr/structs/normalizers/body.rb:6:in `initialize'
> /Library/Ruby/Gems/1.8/gems/vcr-1.11.3/lib/vcr/http_stubbing_adapters/excon.rb:131:in
`new'
> /Library/Ruby/Gems/1.8/gems/vcr-1.11.3/lib/vcr/http_stubbing_adapters/excon.rb:131:in
`vcr_request'
> /Library/Ruby/Gems/1.8/gems/vcr-1.11.3/lib/vcr/http_stubbing_adapters/excon.rb:47:in
`stubbed_response'
> /Library/Ruby/Gems/1.8/gems/vcr-1.11.3/lib/vcr/http_stubbing_adapters/excon.rb:30:in
`handle'
> /Library/Ruby/Gems/1.8/gems/vcr-1.11.3/lib/vcr/http_stubbing_adapters/excon.rb:169
> /Users/mfojtik/.gem/gems/excon-0.7.3/lib/excon/connection.rb:86:in `call'
> 
> I bet this has something to do with gem versions I have installed on my system:

<sigh>... thanks for letting me know, no, its the same issue I describe
in the intro email for the patches... where vcr code tries to normalise
the http body (by declaring String.new(body)) but fails when the body is
a tempfile, like when creating a blob. Until I get some response from
vcr (haven't reported it yet but will do today) then I guess the best
thing to do is to monkey patch it in tests/drivers/google/setup.rb...
I'll resend the series with the monkey patch now...

marios


> 
> firefly ~/code/core/server $ gem list | egrep 'excon|vcr|fog|net-ssh'
> excon (0.7.3)
> fog (1.0.0)
> net-ssh (2.1.4)
> vcr (1.11.3)
> 
> firefly ~/code/core/server $ ruby --version
> ruby 1.8.7 (2010-01-10 patchlevel 249) [universal-darwin11.0]
>   
>   -- Michal
> 
>> Patch 1/2 contains fixes for google storage driver that came up when writing the
tests
>>
>> Patch 2/2 contains the unit tests and vcr recordings. Invoke the tests by 'cd /path/to/deltacloud/server;
rake test:google'
>>
>>
>> If you are interested in recording new vcr episodes for google storage, read on:
>> ===============================================================================
>>
>> The mocking for vcr is done with excon; the google-storage driver uses fog to talk
to the google-storage service, and fog uses excon for http connections. I came across a couple
of issues when trying to make the vcr recordings, as reported here for example https://groups.google.com/group/ruby-fog/browse_thread/thread/737295ebb42e67d1/7e5a09463c4513c2?lnk=gst&q=fog+and+vcr#7e5a09463c4513c2
>>
>> Another issue is that the vcr code tries to 'normalise' the HTTP body, as described
here https://github.com/myronmarston/vcr/issues/4  However, for the 'create blob' test, the
body is a tempfile which caused the normalisation to fail (normalisation is done by String.new(body)).
Thus, in order to record 'new' episodes for google storage I had to change the normalisation
code:
>>
>> From 5ad2e93a1c0d38164953b0845b83e141ddd9b494 Mon Sep 17 00:00:00 2001
>> From: marios <marios@redhat.com>
>> Date: Wed, 2 Nov 2011 11:17:14 +0200
>> Subject: [PATCH] Fix normaliser - don't normalise body when body is a
>> tempfile
>>
>> ---
>> lib/vcr/structs/normalizers/body.rb |    2 +-
>> 1 files changed, 1 insertions(+), 1 deletions(-)
>>
>> diff --git a/lib/vcr/structs/normalizers/body.rb b/lib/vcr/structs/normalizers/body.rb
>> index 6b013fc..e07ec75 100644
>> --- a/lib/vcr/structs/normalizers/body.rb
>> +++ b/lib/vcr/structs/normalizers/body.rb
>> @@ -16,7 +16,7 @@ module VCR
>>         # http://github.com/myronmarston/vcr/issues/4
>>         self.body = case body
>>           when nil, ''; nil
>> -          else String.new(body)
>> +          else String.new(body) unless body.is_a?(Tempfile)
>>         end
>>       end
>>     end
>> -- 
>> 1.7.6.4
>>
>>
>>
>> The above patch is for vcr version 1.11.3 (current @ Rubygems.org)... however for
v2.0.0 currently in beta (cloned from github) the noralisation code has been moved to ./lib/vcr/cassette/migrator.rb:105
. I'll report the issue to github.
> 
> ------------------------------------------------------
> Michal Fojtik, mfojtik@redhat.com
> Deltacloud API: http://deltacloud.org
> 


Mime
View raw message