right_aws 1.9.0 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|