right_aws 1.9.0 → 3.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +164 -13
- data/Manifest.txt +28 -1
- data/README.txt +12 -10
- data/Rakefile +56 -29
- data/lib/acf/right_acf_interface.rb +343 -172
- data/lib/acf/right_acf_invalidations.rb +144 -0
- data/lib/acf/right_acf_origin_access_identities.rb +230 -0
- data/lib/acf/right_acf_streaming_interface.rb +229 -0
- data/lib/acw/right_acw_interface.rb +248 -0
- data/lib/as/right_as_interface.rb +698 -0
- data/lib/awsbase/right_awsbase.rb +755 -115
- data/lib/awsbase/support.rb +2 -78
- data/lib/awsbase/version.rb +9 -0
- data/lib/ec2/right_ec2.rb +274 -1294
- data/lib/ec2/right_ec2_ebs.rb +514 -0
- data/lib/ec2/right_ec2_images.rb +444 -0
- data/lib/ec2/right_ec2_instances.rb +797 -0
- data/lib/ec2/right_ec2_monitoring.rb +70 -0
- data/lib/ec2/right_ec2_placement_groups.rb +108 -0
- data/lib/ec2/right_ec2_reserved_instances.rb +243 -0
- data/lib/ec2/right_ec2_security_groups.rb +496 -0
- data/lib/ec2/right_ec2_spot_instances.rb +422 -0
- data/lib/ec2/right_ec2_tags.rb +139 -0
- data/lib/ec2/right_ec2_vpc.rb +598 -0
- data/lib/ec2/right_ec2_vpc2.rb +382 -0
- data/lib/ec2/right_ec2_windows_mobility.rb +84 -0
- data/lib/elb/right_elb_interface.rb +573 -0
- data/lib/emr/right_emr_interface.rb +728 -0
- data/lib/iam/right_iam_access_keys.rb +71 -0
- data/lib/iam/right_iam_groups.rb +195 -0
- data/lib/iam/right_iam_interface.rb +341 -0
- data/lib/iam/right_iam_mfa_devices.rb +67 -0
- data/lib/iam/right_iam_users.rb +251 -0
- data/lib/rds/right_rds_interface.rb +1657 -0
- data/lib/right_aws.rb +30 -13
- data/lib/route_53/right_route_53_interface.rb +641 -0
- data/lib/s3/right_s3.rb +108 -41
- data/lib/s3/right_s3_interface.rb +349 -118
- data/lib/sdb/active_sdb.rb +388 -54
- data/lib/sdb/right_sdb_interface.rb +323 -64
- data/lib/sns/right_sns_interface.rb +286 -0
- data/lib/sqs/right_sqs.rb +1 -2
- data/lib/sqs/right_sqs_gen2.rb +73 -17
- data/lib/sqs/right_sqs_gen2_interface.rb +146 -73
- data/lib/sqs/right_sqs_interface.rb +12 -22
- data/right_aws.gemspec +91 -0
- data/test/README.mdown +39 -0
- data/test/acf/test_right_acf.rb +11 -19
- data/test/awsbase/test_helper.rb +2 -0
- data/test/awsbase/test_right_awsbase.rb +11 -0
- data/test/ec2/test_right_ec2.rb +32 -1
- data/test/elb/test_helper.rb +2 -0
- data/test/elb/test_right_elb.rb +43 -0
- data/test/rds/test_helper.rb +2 -0
- data/test/rds/test_right_rds.rb +120 -0
- data/test/route_53/fixtures/a_record.xml +18 -0
- data/test/route_53/fixtures/alias_record.xml +18 -0
- data/test/route_53/test_helper.rb +2 -0
- data/test/route_53/test_right_route_53.rb +141 -0
- data/test/s3/test_right_s3.rb +176 -42
- data/test/s3/test_right_s3_stubbed.rb +6 -4
- data/test/sdb/test_active_sdb.rb +120 -19
- data/test/sdb/test_batch_put_attributes.rb +54 -0
- data/test/sdb/test_right_sdb.rb +71 -16
- data/test/sns/test_helper.rb +2 -0
- data/test/sns/test_right_sns.rb +153 -0
- data/test/sqs/test_right_sqs.rb +0 -6
- data/test/sqs/test_right_sqs_gen2.rb +104 -49
- data/test/ts_right_aws.rb +1 -0
- metadata +181 -22
@@ -81,15 +81,17 @@ class TestS3Stubbed < Test::Unit::TestCase
|
|
81
81
|
def test_116_move_key
|
82
82
|
# move a key
|
83
83
|
Rightscale::HttpConnection.push(413, 'not found')
|
84
|
-
|
85
|
-
|
84
|
+
assert_raise RightAws::AwsError do
|
85
|
+
@s3.move(@bucket, @key1, @bucket, @key1_new_name)
|
86
|
+
end
|
86
87
|
end
|
87
88
|
|
88
89
|
def test_117_rename_key
|
89
90
|
# rename a key
|
90
91
|
Rightscale::HttpConnection.push(500, 'not found')
|
91
|
-
|
92
|
-
|
92
|
+
assert_raise RightAws::AwsError do
|
93
|
+
@s3.rename(@bucket, @key2, @key2_new_name)
|
94
|
+
end
|
93
95
|
end
|
94
96
|
|
95
97
|
end
|
data/test/sdb/test_active_sdb.rb
CHANGED
@@ -1,11 +1,25 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/test_helper.rb'
|
2
2
|
|
3
3
|
class TestSdb < Test::Unit::TestCase
|
4
|
-
|
5
|
-
|
6
|
-
|
4
|
+
DOMAIN_PREFIX = 'right_sdb_awesome_test'
|
5
|
+
CLIENT_DOMAIN = "#{DOMAIN_PREFIX}_client"
|
6
|
+
PERSON_DOMAIN = "#{DOMAIN_PREFIX}_person"
|
7
|
+
|
7
8
|
class Client < RightAws::ActiveSdb::Base
|
8
|
-
set_domain_name
|
9
|
+
set_domain_name CLIENT_DOMAIN
|
10
|
+
end
|
11
|
+
|
12
|
+
class Person < RightAws::ActiveSdb::Base
|
13
|
+
set_domain_name PERSON_DOMAIN
|
14
|
+
|
15
|
+
columns do
|
16
|
+
name
|
17
|
+
email
|
18
|
+
score :Integer
|
19
|
+
is_active :Boolean
|
20
|
+
registered_at :DateTime
|
21
|
+
created_at :DateTime, :default => lambda{ Time.now }
|
22
|
+
end
|
9
23
|
end
|
10
24
|
|
11
25
|
def setup
|
@@ -17,6 +31,13 @@ class TestSdb < Test::Unit::TestCase
|
|
17
31
|
{ 'name' => 'Mary', 'country' => 'USA', 'gender' => 'female', 'hobby' => ['patchwork', 'bundle jumping'] },
|
18
32
|
{ 'name' => 'Sandy', 'country' => 'Russia', 'gender' => 'female', 'hobby' => ['flowers', 'cats', 'cooking'] },
|
19
33
|
{ 'name' => 'Mary', 'country' => 'Russia', 'gender' => 'female', 'hobby' => ['flowers', 'cats', 'cooking'] } ]
|
34
|
+
@people = [
|
35
|
+
{ :name => 'Yetta E. Andrews', :email => 'nulla.facilisis@metus.com', :score => 100, :is_active => true, :registered_at => Time.local(2000, 1, 1) },
|
36
|
+
{ :name => 'Sybill O. Olson', :email => 'nisi.Aenean.eget@urna.com', :score => 87, :is_active => true, :registered_at => Time.local(2008, 7, 6) },
|
37
|
+
{ :name => 'Isabelle K. Flynn', :email => 'velit@amet.com', :score => 98, :is_active => false, :registered_at => Time.local(2003, 5, 20) },
|
38
|
+
{ :name => 'Juliet H. Witt', :email => 'egestas@pretiumaliquet.ca', :score => 72, :is_active => true, :registered_at => Time.local(2007, 2, 28) },
|
39
|
+
{ :name => 'Lucy N. Christensen', :email => 'lacus.v12@stu.edu', :score => 94, :is_active => false, :registered_at => Time.local(2005, 10, 26) }
|
40
|
+
]
|
20
41
|
RightAws::ActiveSdb.establish_connection(TestCredentials.aws_access_key_id, TestCredentials.aws_secret_access_key)
|
21
42
|
end
|
22
43
|
|
@@ -37,24 +58,26 @@ class TestSdb < Test::Unit::TestCase
|
|
37
58
|
#---------------------------
|
38
59
|
|
39
60
|
def test_00_delete_domain
|
40
|
-
assert RightAws::ActiveSdb.delete_domain(
|
61
|
+
assert RightAws::ActiveSdb.delete_domain(CLIENT_DOMAIN)
|
62
|
+
assert RightAws::ActiveSdb.delete_domain(PERSON_DOMAIN)
|
41
63
|
wait SDB_DELAY, 'test 00: after domain deletion'
|
42
64
|
end
|
43
65
|
|
44
66
|
def test_01_create_domain
|
45
67
|
# check that domain does not exist
|
46
|
-
assert !RightAws::ActiveSdb.domains.include?(
|
68
|
+
assert !RightAws::ActiveSdb.domains.include?(CLIENT_DOMAIN)
|
47
69
|
# create domain
|
48
70
|
assert Client.create_domain
|
71
|
+
assert Person.create_domain
|
49
72
|
wait SDB_DELAY, 'test 01: after domain creation'
|
50
73
|
# check that we have received new domain from Amazin
|
51
|
-
assert RightAws::ActiveSdb.domains.include?(
|
74
|
+
assert RightAws::ActiveSdb.domains.include?(CLIENT_DOMAIN)
|
52
75
|
end
|
53
76
|
|
54
77
|
def test_02_create_items
|
55
78
|
# check that DB is empty
|
56
79
|
clients = Client.find(:all)
|
57
|
-
assert clients.
|
80
|
+
assert clients.right_blank?
|
58
81
|
# put some clients there
|
59
82
|
@clients.each do |client|
|
60
83
|
Client.create client
|
@@ -107,6 +130,10 @@ class TestSdb < Test::Unit::TestCase
|
|
107
130
|
assert_raise(RightAws::ActiveSdb::ActiveSdbError) do
|
108
131
|
Client.find(ids)
|
109
132
|
end
|
133
|
+
# find one record by unknown id
|
134
|
+
assert_raise(RightAws::ActiveSdb::ActiveSdbError) do
|
135
|
+
Client.find('dummy_id')
|
136
|
+
end
|
110
137
|
end
|
111
138
|
|
112
139
|
def test_05_find_first
|
@@ -144,7 +171,7 @@ class TestSdb < Test::Unit::TestCase
|
|
144
171
|
assert_equal ['Bush'], Client.find_by_post('president', :order => 'name', :auto_load => true)['name']
|
145
172
|
assert_equal ['Putin'], Client.find_by_post('president', :order => 'name desc', :auto_load => true)['name']
|
146
173
|
end
|
147
|
-
|
174
|
+
|
148
175
|
def test_08_reload
|
149
176
|
putin = Client.find_by_name('Putin')
|
150
177
|
# attributes must be empty until reload (except 'id' field)
|
@@ -163,9 +190,44 @@ class TestSdb < Test::Unit::TestCase
|
|
163
190
|
assert_equal ['2008'], putin['expiration']
|
164
191
|
assert_equal ['president'], putin['post']
|
165
192
|
end
|
193
|
+
|
194
|
+
def test_09_select
|
195
|
+
# select all records
|
196
|
+
assert_equal 7, Client.select(:all).size
|
197
|
+
# LIMIT
|
198
|
+
# 1 record
|
199
|
+
assert Client.select(:first).is_a?(Client)
|
200
|
+
# select 2 recs
|
201
|
+
assert_equal 2, Client.select(:all, :limit => 2).size
|
202
|
+
# ORDER
|
203
|
+
# select all recs ordered by 'expration' (must find only recs where 'expration' attribute presents)
|
204
|
+
result = Client.select(:all, :order => 'expiration')
|
205
|
+
assert_equal 3, result.size
|
206
|
+
assert_equal ['2008', '2009', '2012'], result.map{ |c| c['expiration'] }.flatten
|
207
|
+
# desc order
|
208
|
+
result = Client.select(:all, :order => 'expiration desc')
|
209
|
+
assert_equal ['2012', '2009', '2008'], result.map{ |c| c['expiration'] }.flatten
|
210
|
+
# CONDITIONS
|
211
|
+
result = Client.select(:all, :conditions => ["expiration >= ?", 2009], :order => 'name')
|
212
|
+
assert_equal ['Bush', 'Medvedev'], result.map{ |c| c['name'] }.flatten
|
213
|
+
result = Client.select(:all, :conditions => "hobby='flowers' AND gender='female'", :order => 'name')
|
214
|
+
assert_equal ['Mary', 'Sandy'], result.map{ |c| c['name'] }.flatten
|
215
|
+
# SELECT
|
216
|
+
result = Client.select(:all, :select => 'hobby', :conditions => "gender IS NOT NULL", :order => 'name')
|
217
|
+
hobbies = result.map{|c| c['hobby']}
|
218
|
+
# must return all recs
|
219
|
+
assert_equal 6, result.size
|
220
|
+
# but anly 3 of them have this field set
|
221
|
+
assert_equal 3, hobbies.compact.size
|
222
|
+
end
|
223
|
+
|
224
|
+
def test_10_select_by
|
225
|
+
assert_equal 2, Client.select_all_by_hobby('flowers').size
|
226
|
+
assert_equal 2, Client.select_all_by_hobby_and_country('flowers', 'Russia').size
|
227
|
+
assert_equal ['Putin'], Client.select_by_post_and_expiration('president','2008')['name']
|
228
|
+
end
|
166
229
|
|
167
|
-
|
168
|
-
def test_09_save_and_put
|
230
|
+
def test_11_save_and_put
|
169
231
|
putin = Client.find_by_name('Putin')
|
170
232
|
putin.reload
|
171
233
|
putin['hobby'] = 'ski'
|
@@ -194,7 +256,7 @@ class TestSdb < Test::Unit::TestCase
|
|
194
256
|
assert ['dogs', 'ski'], new_putin['hobby'].sort
|
195
257
|
end
|
196
258
|
|
197
|
-
def
|
259
|
+
def test_12_save_and_put_attributes
|
198
260
|
putin = Client.find_by_name('Putin')
|
199
261
|
putin.reload
|
200
262
|
# SAVE method (replace values)
|
@@ -220,12 +282,16 @@ class TestSdb < Test::Unit::TestCase
|
|
220
282
|
assert ['english', 'german', 'russian'], new_putin['language'].sort
|
221
283
|
end
|
222
284
|
|
223
|
-
def
|
285
|
+
def test_13_delete
|
224
286
|
putin = Client.find_by_name('Putin')
|
225
287
|
putin.reload
|
226
288
|
# --- delete_values
|
289
|
+
# remove an unknown attribute
|
290
|
+
# should return an empty hash
|
291
|
+
assert_equal( {}, putin.delete_values('undefined_attribute' => 'ohoho'))
|
227
292
|
# remove 2 languages
|
228
|
-
|
293
|
+
lang_hash = {'language' => ['english', 'german']}
|
294
|
+
assert_equal lang_hash, putin.delete_values(lang_hash)
|
229
295
|
wait SDB_DELAY, 'test 11: after put_attributes'
|
230
296
|
# now Putin must know only russian lang
|
231
297
|
new_putin = Client.find_by_name('Putin')
|
@@ -244,12 +310,47 @@ class TestSdb < Test::Unit::TestCase
|
|
244
310
|
wait SDB_DELAY, 'test 11: after delete item'
|
245
311
|
assert_nil Client.find_by_name('Putin')
|
246
312
|
end
|
247
|
-
|
248
|
-
def
|
313
|
+
|
314
|
+
def test_14_dynamic_attribute_accessors
|
315
|
+
bush = Client.find_by_name('Bush')
|
316
|
+
bush.reload
|
317
|
+
assert_nothing_raised {
|
318
|
+
assert_equal ['male'], bush.gender
|
319
|
+
bush.name = 'George'
|
320
|
+
assert_equal ['George'], bush.name
|
321
|
+
}
|
322
|
+
assert_raise(NoMethodError) { bush.flarble }
|
323
|
+
end
|
324
|
+
|
325
|
+
def test_15_column_emulation
|
326
|
+
@people.each do |person|
|
327
|
+
Person.create person
|
328
|
+
end
|
329
|
+
wait SDB_DELAY, 'test 15: after people creation'
|
330
|
+
person = Person.find_by_email 'nulla.facilisis@metus.com'
|
331
|
+
person.reload
|
332
|
+
|
333
|
+
assert_equal 'Yetta E. Andrews', person.name
|
334
|
+
assert_equal DateTime, person.registered_at.class
|
335
|
+
assert person['registered_at'].is_a?(DateTime)
|
336
|
+
assert person[:registered_at].is_a?(DateTime)
|
337
|
+
|
338
|
+
assert ! person[:created_at].nil?
|
339
|
+
assert_equal DateTime, person.created_at.class
|
340
|
+
assert person['created_at'].is_a?(DateTime)
|
341
|
+
assert person[:created_at].is_a?(DateTime)
|
342
|
+
|
343
|
+
assert person.is_active
|
344
|
+
|
345
|
+
assert_equal 100, person.score
|
346
|
+
end
|
347
|
+
|
348
|
+
def test_999_delete_domain
|
249
349
|
assert Client.delete_domain
|
250
|
-
|
251
|
-
|
252
|
-
|
350
|
+
assert Person.delete_domain
|
351
|
+
wait SDB_DELAY, 'test 999: after delete domain'
|
352
|
+
assert_raise(Rightscale::AwsError) do
|
353
|
+
Client.find :all
|
253
354
|
end
|
254
355
|
end
|
255
356
|
|
@@ -0,0 +1,54 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require File.dirname(__FILE__) + '/test_helper.rb'
|
3
|
+
|
4
|
+
class TestSdb < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
STDOUT.sync = true
|
8
|
+
@domain = 'right_sdb_awesome_test_domain'
|
9
|
+
@attributes = {
|
10
|
+
'a' => { 'foo' => '123' },
|
11
|
+
'b' => { 'bar' => '456' }
|
12
|
+
}
|
13
|
+
# Interface instance
|
14
|
+
@sdb = Rightscale::SdbInterface.new
|
15
|
+
@sdb.delete_domain(@domain)
|
16
|
+
wait(SDB_DELAY, "after removing domain")
|
17
|
+
@sdb.create_domain(@domain)
|
18
|
+
wait(SDB_DELAY, "after recreating domain")
|
19
|
+
end
|
20
|
+
|
21
|
+
SDB_DELAY = 2
|
22
|
+
|
23
|
+
def wait(delay, msg='')
|
24
|
+
print "waiting #{delay} seconds #{msg}"
|
25
|
+
while delay>0 do
|
26
|
+
delay -= 1
|
27
|
+
print '.'
|
28
|
+
sleep 1
|
29
|
+
end
|
30
|
+
puts
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_batch_put_attributes
|
34
|
+
@sdb.batch_put_attributes(@domain, @attributes)
|
35
|
+
wait(SDB_DELAY, "after putting attributes")
|
36
|
+
a = @sdb.get_attributes(@domain, 'a')[:attributes]
|
37
|
+
b = @sdb.get_attributes(@domain, 'b')[:attributes]
|
38
|
+
assert_equal( {'foo' => ['123']}, a)
|
39
|
+
assert_equal( {'bar' => ['456']}, b)
|
40
|
+
|
41
|
+
# Replace = false
|
42
|
+
@sdb.batch_put_attributes(@domain, { 'a' => {'foo' => ['789']}})
|
43
|
+
wait(SDB_DELAY, "after putting attributes")
|
44
|
+
a = @sdb.get_attributes(@domain, 'a')[:attributes]
|
45
|
+
assert_equal ['123', '789'], a['foo'].sort
|
46
|
+
|
47
|
+
# Replace = true
|
48
|
+
@sdb.batch_put_attributes(@domain, {'b' => {'bar' => ['789']}}, true)
|
49
|
+
wait(SDB_DELAY, "after putting attributes")
|
50
|
+
b = @sdb.get_attributes(@domain, 'b')[:attributes]
|
51
|
+
assert_equal ['789'], b['bar'].sort
|
52
|
+
|
53
|
+
end
|
54
|
+
end
|
data/test/sdb/test_right_sdb.rb
CHANGED
@@ -11,7 +11,7 @@ class TestSdb < Test::Unit::TestCase
|
|
11
11
|
@sdb = Rightscale::SdbInterface.new(TestCredentials.aws_access_key_id, TestCredentials.aws_secret_access_key)
|
12
12
|
end
|
13
13
|
|
14
|
-
SDB_DELAY =
|
14
|
+
SDB_DELAY = 7
|
15
15
|
|
16
16
|
def wait(delay, msg='')
|
17
17
|
print "waiting #{delay} seconds #{msg}"
|
@@ -51,7 +51,7 @@ class TestSdb < Test::Unit::TestCase
|
|
51
51
|
|
52
52
|
def test_03_get_attributes
|
53
53
|
# get attributes
|
54
|
-
values = @sdb.get_attributes(@domain, @item)[:attributes]['Jon'].
|
54
|
+
values = Array(@sdb.get_attributes(@domain, @item)[:attributes]['Jon']).sort
|
55
55
|
# compare to original list
|
56
56
|
assert_equal values, @attr['Jon'].sort
|
57
57
|
end
|
@@ -62,7 +62,7 @@ class TestSdb < Test::Unit::TestCase
|
|
62
62
|
@sdb.put_attributes @domain, @item, {'Jon' => new_value}
|
63
63
|
wait SDB_DELAY, 'after putting attributes'
|
64
64
|
# get attributes ('girls' must be added to already existent attributes)
|
65
|
-
values = @sdb.get_attributes(@domain, @item)[:attributes]['Jon'].
|
65
|
+
values = Array(@sdb.get_attributes(@domain, @item)[:attributes]['Jon']).sort
|
66
66
|
assert_equal values, (@attr['Jon'] << new_value).sort
|
67
67
|
end
|
68
68
|
|
@@ -80,7 +80,7 @@ class TestSdb < Test::Unit::TestCase
|
|
80
80
|
@sdb.put_attributes @domain, @item, {'Jon' => ['girls','vodka']}
|
81
81
|
wait SDB_DELAY, 'after adding attributes'
|
82
82
|
# get attributes ('girls' and 'vodka' must be added 'pub')
|
83
|
-
values = @sdb.get_attributes(@domain, @item)[:attributes]['Jon'].
|
83
|
+
values = Array(@sdb.get_attributes(@domain, @item)[:attributes]['Jon']).sort
|
84
84
|
assert_equal values, ['girls', 'pub', 'vodka']
|
85
85
|
# delete a single value 'girls' from attribute 'Jon'
|
86
86
|
@sdb.delete_attributes @domain, @item, 'Jon' => ['girls']
|
@@ -100,10 +100,11 @@ class TestSdb < Test::Unit::TestCase
|
|
100
100
|
@sdb.put_attributes @domain, @item, {'Volodya' => ['girls','vodka']}
|
101
101
|
wait SDB_DELAY, 'after adding attributes'
|
102
102
|
# get attributes ('girls' and 'vodka' must be there)
|
103
|
-
values = @sdb.get_attributes(@domain, @item)[:attributes]['Volodya'].
|
103
|
+
values = Array(@sdb.get_attributes(@domain, @item)[:attributes]['Volodya']).sort
|
104
104
|
assert_equal values, ['girls', 'vodka']
|
105
105
|
# delete an item
|
106
106
|
@sdb.delete_attributes @domain, @item
|
107
|
+
wait SDB_DELAY, 'after deleting attributes'
|
107
108
|
# get attributes (values must be empty)
|
108
109
|
values = @sdb.get_attributes(@domain, @item)[:attributes]['Volodya']
|
109
110
|
assert_equal values, nil
|
@@ -128,33 +129,52 @@ class TestSdb < Test::Unit::TestCase
|
|
128
129
|
assert sdb.put_attributes(@domain, item, attributes)
|
129
130
|
wait SDB_DELAY, 'after putting attributes'
|
130
131
|
# get attributes
|
131
|
-
values = sdb.get_attributes(@domain, item)[:attributes]['Jurgen'].
|
132
|
+
values = Array(sdb.get_attributes(@domain, item)[:attributes]['Jurgen']).sort
|
132
133
|
# compare to original list
|
133
134
|
assert_equal values, attributes['Jurgen'].sort
|
134
135
|
# check that the request has correct signature version
|
135
136
|
assert sdb.last_request.path.include?('SignatureVersion=0')
|
136
137
|
end
|
137
|
-
|
138
|
-
def
|
138
|
+
|
139
|
+
def test_10_signature_version_1
|
140
|
+
sdb = Rightscale::SdbInterface.new(TestCredentials.aws_access_key_id, TestCredentials.aws_secret_access_key, :signature_version => '1')
|
141
|
+
domains = nil
|
142
|
+
assert_nothing_thrown "Failed to use signature V1" do
|
143
|
+
domains = sdb.list_domains
|
144
|
+
end
|
145
|
+
assert domains
|
146
|
+
end
|
147
|
+
|
148
|
+
def test_11_signature_version_1
|
149
|
+
sdb = Rightscale::SdbInterface.new(TestCredentials.aws_access_key_id, TestCredentials.aws_secret_access_key, :signature_version => '2')
|
150
|
+
domains = nil
|
151
|
+
assert_nothing_thrown "Failed to use signature V2" do
|
152
|
+
domains = sdb.list_domains
|
153
|
+
end
|
154
|
+
assert domains
|
155
|
+
end
|
156
|
+
|
157
|
+
def test_12_array_of_attrs
|
139
158
|
item = 'multiples'
|
140
159
|
assert_nothing_thrown "Failed to put multiple attrs" do
|
141
160
|
@sdb.put_attributes(@domain, item, {:one=>1, :two=>2, :three=>3})
|
142
161
|
end
|
143
162
|
end
|
144
163
|
|
145
|
-
def
|
164
|
+
def test_13_zero_len_attrs
|
146
165
|
item = 'zeroes'
|
147
166
|
assert_nothing_thrown "Failed to put zero-length attributes" do
|
148
167
|
@sdb.put_attributes(@domain, item, {:one=>"", :two=>"", :three=>""})
|
149
168
|
end
|
150
169
|
end
|
151
170
|
|
152
|
-
def
|
171
|
+
def test_14_nil_attrs
|
153
172
|
item = 'nils'
|
154
173
|
res = nil
|
155
174
|
assert_nothing_thrown do
|
156
175
|
@sdb.put_attributes(@domain, item, {:one=>nil, :two=>nil, :three=>'chunder'})
|
157
176
|
end
|
177
|
+
wait SDB_DELAY, 'after putting attributes'
|
158
178
|
assert_nothing_thrown do
|
159
179
|
res = @sdb.get_attributes(@domain, item)
|
160
180
|
end
|
@@ -163,18 +183,19 @@ class TestSdb < Test::Unit::TestCase
|
|
163
183
|
assert_not_nil(res[:attributes]['three'][0])
|
164
184
|
end
|
165
185
|
|
166
|
-
def
|
186
|
+
def test_15_url_escape
|
167
187
|
item = 'urlescapes'
|
168
188
|
content = {:a=>"one & two & three",
|
169
189
|
:b=>"one ? two / three"}
|
170
190
|
@sdb.put_attributes(@domain, item, content)
|
191
|
+
wait SDB_DELAY, 'after putting attributes'
|
171
192
|
|
172
193
|
res = @sdb.get_attributes(@domain, item)
|
173
194
|
assert_equal(content[:a], res[:attributes]['a'][0])
|
174
195
|
assert_equal(content[:b], res[:attributes]['b'][0])
|
175
196
|
end
|
176
197
|
|
177
|
-
def
|
198
|
+
def test_16_put_attrs_by_post
|
178
199
|
item = 'reqgirth'
|
179
200
|
i = 0
|
180
201
|
sa = ""
|
@@ -183,16 +204,50 @@ class TestSdb < Test::Unit::TestCase
|
|
183
204
|
i += 1
|
184
205
|
end
|
185
206
|
@sdb.put_attributes(@domain, item, {:a => sa, :b => sa, :c => sa, :d => sa, :e => sa})
|
207
|
+
wait SDB_DELAY, 'after putting attributes'
|
186
208
|
end
|
187
|
-
|
209
|
+
|
210
|
+
def test_20_query_with_atributes
|
211
|
+
response = @sdb.query_with_attributes(@domain)
|
212
|
+
# convers response to a hash representation
|
213
|
+
items = {};
|
214
|
+
response[:items].each{ |item| items.merge!(item) }
|
215
|
+
# check we have receied all 5 items each full of attributes
|
216
|
+
assert_equal 6, items.keys.size
|
217
|
+
assert items['toys'].size > 0
|
218
|
+
assert items['nils'].size > 0
|
219
|
+
assert items['urlescapes'].size > 0
|
220
|
+
assert items['multiples'].size > 0
|
221
|
+
assert items['reqgirth'].size > 0
|
222
|
+
assert items['zeroes'].size > 0
|
223
|
+
# fetch only Jon's attributes from all items
|
224
|
+
response = @sdb.query_with_attributes(@domain,['Jon'])
|
225
|
+
items = {};
|
226
|
+
response[:items].each{ |item| items.merge!(item) }
|
227
|
+
# check we have receied all 5 items
|
228
|
+
# check we have receied all 5 items, but only 'toys' has attributes
|
229
|
+
puts items.inspect
|
230
|
+
assert_equal 2, items['toys']['Jon'].size
|
231
|
+
assert_equal 0, items['nils'].size
|
232
|
+
assert_equal 0, items['urlescapes'].size
|
233
|
+
assert_equal 0, items['multiples'].size
|
234
|
+
assert_equal 0, items['reqgirth'].size
|
235
|
+
assert_equal 0, items['zeroes'].size
|
236
|
+
# kust Jurgen's attriburs
|
237
|
+
response = @sdb.query_with_attributes(@domain,['Jurgen'], "['Jurgen'='piglet']")
|
238
|
+
items = {};
|
239
|
+
response[:items].each{ |item| items.merge!(item) }
|
240
|
+
# check we have receied an only item
|
241
|
+
assert_equal 1, items.keys.size
|
242
|
+
assert_equal ["chickabiddy", "kitten", "piglet", "puppy"], items['toys']['Jurgen'].sort
|
243
|
+
end
|
244
|
+
|
188
245
|
# Keep this test last, because it deletes the domain...
|
189
|
-
def
|
246
|
+
def test_21_delete_domain
|
190
247
|
assert @sdb.delete_domain(@domain), 'delete_domain fail'
|
191
248
|
wait SDB_DELAY, 'after domain deletion'
|
192
249
|
# check that domain does not exist
|
193
250
|
assert !@sdb.list_domains[:domains].include?(@domain)
|
194
251
|
end
|
195
252
|
|
196
|
-
|
197
|
-
|
198
253
|
end
|