cmeiklejohn-aws 2.3.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,206 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+ require File.dirname(__FILE__) + '/../test_credentials.rb'
3
+
4
+
5
+ class TestSqs < Test::Unit::TestCase
6
+
7
+ GRANTEE_EMAIL_ADDRESS = 'fester@example.com'
8
+ RIGHT_MESSAGE_TEXT = 'Right test message'
9
+
10
+
11
+ def setup
12
+ TestCredentials.get_credentials
13
+ @sqs = Aws::SqsInterface.new(TestCredentials.aws_access_key_id, TestCredentials.aws_secret_access_key)
14
+ @queue_name = 'right_sqs_test_gen2_queue'
15
+ # for classes
16
+ @s = Aws::Sqs.new(TestCredentials.aws_access_key_id, TestCredentials.aws_secret_access_key)
17
+ end
18
+
19
+ # Wait for the queue to appear in the queues list.
20
+ # Amazon needs some time to after the queue creation to place
21
+ # it to the accessible queues list. If we dont want to get
22
+ # the additional faults then wait a bit...
23
+ def wait_for_queue_url(queue_name)
24
+ queue_url = nil
25
+ until queue_url
26
+ queue_url = @sqs.queue_url_by_name(queue_name)
27
+ unless queue_url
28
+ print '-'
29
+ STDOUT.flush
30
+ sleep 1
31
+ end
32
+ end
33
+ queue_url
34
+ end
35
+
36
+
37
+ #---------------------------
38
+ # Rightscale::SqsInterface
39
+ #---------------------------
40
+
41
+ def test_01_create_queue
42
+ queue_url = @sqs.create_queue @queue_name
43
+ assert queue_url[/http.*#{@queue_name}/], 'New queue creation failed'
44
+ end
45
+
46
+ def test_02_list_queues
47
+ wait_for_queue_url(@queue_name)
48
+ queues = @sqs.list_queues('right_')
49
+ assert queues.size>0, 'Must more that 0 queues in list'
50
+ end
51
+
52
+ def test_03_set_and_get_queue_attributes
53
+ queue_url = @sqs.queue_url_by_name(@queue_name)
54
+ assert queue_url[/http.*#{@queue_name}/], "#{@queue_name} must exist!"
55
+ assert @sqs.set_queue_attributes(queue_url, 'VisibilityTimeout', 111), 'Set_queue_attributes fail'
56
+ sleep 20 # Amazon needs some time to change attribute
57
+ assert_equal '111', @sqs.get_queue_attributes(queue_url)['VisibilityTimeout'], 'New VisibilityTimeout must be equal to 111'
58
+ end
59
+
60
+ def test_06_send_message
61
+ queue_url = @sqs.queue_url_by_name(@queue_name)
62
+ # send 5 messages for the tests below
63
+ assert @sqs.send_message(queue_url, RIGHT_MESSAGE_TEXT)
64
+ assert @sqs.send_message(queue_url, RIGHT_MESSAGE_TEXT)
65
+ assert @sqs.send_message(queue_url, RIGHT_MESSAGE_TEXT)
66
+ assert @sqs.send_message(queue_url, RIGHT_MESSAGE_TEXT)
67
+ assert @sqs.send_message(queue_url, RIGHT_MESSAGE_TEXT)
68
+ sleep 2
69
+ end
70
+
71
+ def test_07_get_queue_length
72
+ queue_url = @sqs.queue_url_by_name(@queue_name)
73
+ assert_equal 5, @sqs.get_queue_length(queue_url), 'Queue must have 5 messages'
74
+ end
75
+
76
+ def test_08_receive_message
77
+ queue_url = @sqs.queue_url_by_name(@queue_name)
78
+ r_message = @sqs.receive_message(queue_url, 1)[0]
79
+ assert r_message, "Receive returned no message(s), but this is not necessarily incorrect"
80
+ assert_equal RIGHT_MESSAGE_TEXT, r_message['Body'], 'Receive message got wrong message text'
81
+ end
82
+
83
+ def test_09_delete_message
84
+ queue_url = @sqs.queue_url_by_name(@queue_name)
85
+ message = @sqs.receive_message(queue_url)[0]
86
+ assert @sqs.delete_message(queue_url, message['ReceiptHandle']), 'Delete_message fail'
87
+ assert @sqs.pop_message(queue_url), 'Pop_message fail'
88
+ end
89
+
90
+ def test_10_clear_and_delete_queue
91
+ queue_url = @sqs.queue_url_by_name(@queue_name)
92
+ assert @sqs.delete_queue(queue_url)
93
+ end
94
+
95
+ #---------------------------
96
+ # Aws::Sqs classes
97
+ #---------------------------
98
+
99
+ def test_20_sqs_create_delete_queue
100
+ assert @s, 'Aws::Sqs must exist'
101
+ # get queues list
102
+ queues_size = @s.queues.size
103
+ # create new queue
104
+ queue = @s.queue("#{@queue_name}_20", true)
105
+ # check that it is created
106
+ assert queue.is_a?(Aws::Sqs::Queue)
107
+ wait_for_queue_url(@queue_name)
108
+ # check that amount of queues has increased
109
+ assert_equal queues_size + 1, @s.queues.size
110
+ # delete queue
111
+ assert queue.delete
112
+ end
113
+
114
+ def test_21_queue_create
115
+ # create new queue
116
+ queue = Aws::Sqs::Queue.create(@s, "#{@queue_name}_21", true)
117
+ # check that it is created
118
+ assert queue.is_a?(Aws::Sqs::Queue)
119
+ wait_for_queue_url(@queue_name)
120
+ end
121
+
122
+ def test_22_queue_attributes
123
+ queue = Aws::Sqs::Queue.create(@s, "#{@queue_name}_21", false)
124
+ # get a list of attrinutes
125
+ attributes = queue.get_attribute
126
+ assert attributes.is_a?(Hash) && attributes.size>0
127
+ # get attribute value and increase it by 10
128
+ v = (queue.get_attribute('VisibilityTimeout').to_i + 10).to_s
129
+ # set attribute
130
+ assert queue.set_attribute('VisibilityTimeout', v)
131
+ # wait a bit
132
+ sleep 20
133
+ # check that attribute has changed
134
+ assert_equal v, queue.get_attribute('VisibilityTimeout')
135
+ # get queue visibility timeout
136
+ assert_equal v, queue.visibility
137
+ # change it
138
+ queue.visibility = queue.visibility.to_i + 10
139
+ # make sure that it is changed
140
+ assert v.to_i + 10, queue.visibility
141
+ end
142
+
143
+ def test_24_send_size
144
+ queue = Aws::Sqs::Queue.create(@s, "#{@queue_name}_24", true)
145
+ # send 5 messages
146
+ assert queue.push('a1')
147
+ assert queue.push('a2')
148
+ assert queue.push('a3')
149
+ assert queue.push('a4')
150
+ assert queue.push('a5')
151
+ sleep 2
152
+ # check queue size
153
+ assert_equal 5, queue.size
154
+ # send one more
155
+ assert queue.push('a6')
156
+ sleep 2
157
+ # check queue size again
158
+ assert_equal 6, queue.size
159
+ end
160
+
161
+ def test_25_message_receive_pop_delete
162
+ queue = Aws::Sqs::Queue.create(@s, "#{@queue_name}_24", false)
163
+ # get queue size
164
+ size = queue.size
165
+ # get first message
166
+ m1 = queue.receive(10)
167
+ assert m1.is_a?(Aws::Sqs::Message)
168
+ # pop second message
169
+ m2 = queue.pop
170
+ assert m2.is_a?(Aws::Sqs::Message)
171
+ # make sure that queue size has decreased
172
+ assert_equal size-1, queue.size
173
+ # delete messsage
174
+ assert m1.delete
175
+ # make sure that queue size has decreased again
176
+ assert_equal size-2, queue.size
177
+ end
178
+
179
+ def test_26
180
+ queue = Aws::Sqs::Queue.create(@s, "#{@queue_name}_24", false)
181
+ # lock message
182
+ queue.receive(100)
183
+ # clear queue
184
+ assert queue.clear
185
+ # queue size is greater than zero
186
+ assert queue.size>0
187
+ end
188
+
189
+ def test_27_set_amazon_problems
190
+ original_problems = Aws::SqsInterface.amazon_problems
191
+ assert(original_problems.length > 0)
192
+ Aws::SqsInterface.amazon_problems= original_problems << "A New Problem"
193
+ new_problems = Aws::SqsInterface.amazon_problems
194
+ assert_equal(new_problems, original_problems)
195
+
196
+ Aws::SqsInterface.amazon_problems= nil
197
+ assert_nil(Aws::SqsInterface.amazon_problems)
198
+ end
199
+
200
+ def test_28_check_threading_model
201
+ assert(!@sqs.multi_thread)
202
+ newsqs = Aws::SqsInterface.new(TestCredentials.aws_access_key_id, TestCredentials.aws_secret_access_key, {:multi_thread => true})
203
+ assert(newsqs.multi_thread)
204
+ end
205
+
206
+ end
@@ -0,0 +1,54 @@
1
+ class TestCredentials
2
+
3
+ @@aws_access_key_id = nil
4
+ @@aws_secret_access_key = nil
5
+ @@account_number = nil
6
+ @@config = nil
7
+
8
+ def self.config
9
+ @@config
10
+ end
11
+
12
+ def self.aws_access_key_id
13
+ @@aws_access_key_id
14
+ end
15
+
16
+ def self.aws_access_key_id=(newval)
17
+ @@aws_access_key_id = newval
18
+ end
19
+
20
+ def self.account_number
21
+ @@account_number
22
+ end
23
+
24
+ def self.account_number=(newval)
25
+ @@account_number = newval
26
+ end
27
+
28
+ def self.aws_secret_access_key
29
+ @@aws_secret_access_key
30
+ end
31
+
32
+ def self.aws_secret_access_key=(newval)
33
+ @@aws_secret_access_key = newval
34
+ end
35
+
36
+ require 'yaml'
37
+
38
+ def self.get_credentials
39
+ #Dir.chdir do
40
+ begin
41
+
42
+ Dir.chdir(File.expand_path("~/.test-configs")) do
43
+ credentials = YAML::load(File.open("aws.yml"))
44
+ @@config = credentials
45
+ self.aws_access_key_id = credentials["amazon"]["access_key"]
46
+ self.aws_secret_access_key = credentials["amazon"]["secret_key"]
47
+ end
48
+ rescue Exception => e
49
+ puts "#{e.message}"
50
+ raise e
51
+ end
52
+ #end
53
+ end
54
+ end
@@ -0,0 +1,13 @@
1
+ require 'test/unit'
2
+ $: << File.dirname(__FILE__)
3
+ require 'test_credentials'
4
+ TestCredentials.get_credentials
5
+
6
+ require 'http_connection'
7
+ require 'ec2/test_ec2.rb'
8
+ require 's3/test_s3.rb'
9
+ require 's3/test_s3_stubbed.rb'
10
+ require 'sqs/test_sqs.rb'
11
+ require 'sqs/test_right_sqs_gen2.rb'
12
+ require 'sdb/test_sdb.rb'
13
+ require 'acf/test_acf.rb'
metadata ADDED
@@ -0,0 +1,163 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cmeiklejohn-aws
3
+ version: !ruby/object:Gem::Version
4
+ hash: 19
5
+ prerelease: false
6
+ segments:
7
+ - 2
8
+ - 3
9
+ - 8
10
+ version: 2.3.8
11
+ platform: ruby
12
+ authors:
13
+ - Christopher Meiklejohn
14
+ - Travis Reeder
15
+ - Chad Arimura
16
+ - RightScale
17
+ autorequire:
18
+ bindir: bin
19
+ cert_chain: []
20
+
21
+ date: 2010-06-14 00:00:00 -04:00
22
+ default_executable:
23
+ dependencies:
24
+ - !ruby/object:Gem::Dependency
25
+ name: uuidtools
26
+ prerelease: false
27
+ requirement: &id001 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ hash: 3
33
+ segments:
34
+ - 0
35
+ version: "0"
36
+ type: :runtime
37
+ version_requirements: *id001
38
+ - !ruby/object:Gem::Dependency
39
+ name: http_connection
40
+ prerelease: false
41
+ requirement: &id002 !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ hash: 3
47
+ segments:
48
+ - 0
49
+ version: "0"
50
+ type: :runtime
51
+ version_requirements: *id002
52
+ - !ruby/object:Gem::Dependency
53
+ name: xml-simple
54
+ prerelease: false
55
+ requirement: &id003 !ruby/object:Gem::Requirement
56
+ none: false
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ hash: 3
61
+ segments:
62
+ - 0
63
+ version: "0"
64
+ type: :runtime
65
+ version_requirements: *id003
66
+ description: AWS Ruby Library for interfacing with Amazon Web Services. Forked to resolve issues with using this outside of Rails, and with non-upcased locations.
67
+ email: christopher.meiklejohn@gmail.com
68
+ executables: []
69
+
70
+ extensions: []
71
+
72
+ extra_rdoc_files:
73
+ - README.markdown
74
+ files:
75
+ - lib/acf/right_acf_interface.rb
76
+ - lib/aws.rb
77
+ - lib/awsbase/aws_response_array.rb
78
+ - lib/awsbase/benchmark_fix.rb
79
+ - lib/awsbase/right_awsbase.rb
80
+ - lib/awsbase/support.rb
81
+ - lib/ec2/right_ec2.rb
82
+ - lib/ec2/right_mon_interface.rb
83
+ - lib/elb/elb_interface.rb
84
+ - lib/rds/rds.rb
85
+ - lib/right_aws.rb
86
+ - lib/s3/right_s3.rb
87
+ - lib/s3/right_s3_interface.rb
88
+ - lib/sdb/active_sdb.rb
89
+ - lib/sdb/right_sdb_interface.rb
90
+ - lib/sqs/right_sqs.rb
91
+ - lib/sqs/right_sqs_interface.rb
92
+ - README.markdown
93
+ - test/acf/test_acf.rb
94
+ - test/acf/test_helper.rb
95
+ - test/ec2/test_ec2.rb
96
+ - test/ec2/test_helper.rb
97
+ - test/ec2/test_mon.rb
98
+ - test/elb/test_elb.rb
99
+ - test/http_connection.rb
100
+ - test/rds/test_rds.rb
101
+ - test/s3/test_helper.rb
102
+ - test/s3/test_s3.rb
103
+ - test/s3/test_s3_stubbed.rb
104
+ - test/sdb/test_active_sdb.rb
105
+ - test/sdb/test_helper.rb
106
+ - test/sdb/test_sdb.rb
107
+ - test/sqs/test_helper.rb
108
+ - test/sqs/test_sqs.rb
109
+ - test/test_credentials.rb
110
+ - test/ts_right_aws.rb
111
+ has_rdoc: true
112
+ homepage: http://github.com/cmeiklejohn/aws
113
+ licenses: []
114
+
115
+ post_install_message:
116
+ rdoc_options:
117
+ - --charset=UTF-8
118
+ require_paths:
119
+ - lib
120
+ required_ruby_version: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ hash: 3
126
+ segments:
127
+ - 0
128
+ version: "0"
129
+ required_rubygems_version: !ruby/object:Gem::Requirement
130
+ none: false
131
+ requirements:
132
+ - - ">="
133
+ - !ruby/object:Gem::Version
134
+ hash: 3
135
+ segments:
136
+ - 0
137
+ version: "0"
138
+ requirements: []
139
+
140
+ rubyforge_project:
141
+ rubygems_version: 1.3.7
142
+ signing_key:
143
+ specification_version: 3
144
+ summary: AWS Ruby Library for interfacing with Amazon Web Services. Forked to resolve issues with using this outside of Rails, and with non-upcased locations.
145
+ test_files:
146
+ - test/acf/test_acf.rb
147
+ - test/acf/test_helper.rb
148
+ - test/ec2/test_ec2.rb
149
+ - test/ec2/test_helper.rb
150
+ - test/ec2/test_mon.rb
151
+ - test/elb/test_elb.rb
152
+ - test/http_connection.rb
153
+ - test/rds/test_rds.rb
154
+ - test/s3/test_helper.rb
155
+ - test/s3/test_s3.rb
156
+ - test/s3/test_s3_stubbed.rb
157
+ - test/sdb/test_active_sdb.rb
158
+ - test/sdb/test_helper.rb
159
+ - test/sdb/test_sdb.rb
160
+ - test/sqs/test_helper.rb
161
+ - test/sqs/test_sqs.rb
162
+ - test/test_credentials.rb
163
+ - test/ts_right_aws.rb