SQS 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG ADDED
@@ -0,0 +1,11 @@
1
+ 0.1.1
2
+ 2007-02-19
3
+ * Added Queue#peek_messages() and Queue#peek_message(). Thanks to Robert J. Berger for pointing out that receiving a message with VisibilityTimeout=0 is the functional equivalent of a peek.
4
+ * Changed shebang in message.rb and queue.rb. Thanks to Nobody at http://rubyforge.org/tracker/index.php?func=detail&aid=7124&group_id=2645&atid=10183
5
+ * Added shebangs where they were missing.
6
+
7
+
8
+
9
+ 0.1.0
10
+ 2006-11-22
11
+ Initial release
data/lib/sqs/grant.rb CHANGED
@@ -1,3 +1,4 @@
1
+ #!/usr/local/bin/ruby
1
2
 
2
3
  class SQS::Grant
3
4
  def self.atts
data/lib/sqs/message.rb CHANGED
@@ -1,4 +1,4 @@
1
- #!/usr/bin/local/ruby
1
+ #!/usr/local/bin/ruby
2
2
 
3
3
  class SQS::Message
4
4
  attr_accessor :queue, :_body, :id
data/lib/sqs/queue.rb CHANGED
@@ -1,4 +1,4 @@
1
- #!/usr/bin/local/ruby
1
+ #!/usr/local/bin/ruby
2
2
 
3
3
  require 'uri'
4
4
  require 'rexml/document'
@@ -71,6 +71,17 @@ class SQS::Queue
71
71
  raise e
72
72
  end
73
73
 
74
+ def peek_message
75
+ # returns the first element of what peek_messages returns
76
+ m = self.peek_messages( :count => 1 ).first
77
+ yield( m ) if block_given?
78
+ m
79
+ end
80
+ def peek_messages( options={} )
81
+ # returns an array of SQS::Message instances (could be empty)
82
+ receive_messages( options.merge( :message_ttl => 0 ) )
83
+ end
84
+
74
85
  def receive_message
75
86
  # returns the first element of what receive_messages returns
76
87
  m = self.receive_messages( :count => 1 ).first
@@ -65,6 +65,56 @@ class SQS_QueueTest < Test::Unit::TestCase
65
65
  assert_equal @q, m.queue
66
66
  end
67
67
 
68
+ def test_peek_message
69
+ @q.send_message( 'I am receiving a message from beyond' )
70
+ sleep 2
71
+ m = @q.peek_message
72
+
73
+ assert m.is_a?( SQS::Message )
74
+ assert_equal @q, m.queue
75
+ assert_equal 'I am receiving a message from beyond', m.body
76
+
77
+ sleep 2
78
+ m2 = @q.receive_message
79
+ assert m.is_a?( SQS::Message )
80
+ assert_equal m.id, m2.id
81
+ assert_equal m.body, m2.body
82
+ end
83
+ def test_peek_message_on_empty_queue
84
+ m = @q.peek_message
85
+
86
+ assert m.nil?
87
+ end
88
+
89
+ def test_peek_messages
90
+ (1..10).to_a.each do |i|
91
+ @q.send_message( "I am receiving message #{i}" )
92
+ end
93
+
94
+ sleep 10
95
+
96
+ messages = @q.peek_messages :count => 2
97
+ assert messages.size == 1 || messages.size == 2, "Weird array size: #{messages.size}"
98
+
99
+ assert messages.is_a?( Array )
100
+ messages.each do |m|
101
+ assert m.is_a?( SQS::Message )
102
+ assert_equal @q, m.queue
103
+ assert_match /^I am receiving message \d+$/, m.body
104
+ end
105
+
106
+ messages = @q.peek_messages :count => 12
107
+ assert messages.is_a?( Array )
108
+ assert messages.size > 0 && messages.size < 12, "Weird array size: #{messages.size}"
109
+
110
+ sleep 2
111
+
112
+ messages = @q.receive_messages :count => 12
113
+ assert messages.is_a?( Array )
114
+ assert messages.size > 0 && messages.size < 12, "Weird array size: #{messages.size}"
115
+ end
116
+
117
+
68
118
  def test_receive_message
69
119
  @q.send_message( 'I am receiving a message from beyond' )
70
120
  sleep 2
@@ -1,3 +1,5 @@
1
+ #!/usr/local/bin/ruby
2
+
1
3
  dir = File.expand_path( File::dirname( __FILE__ ) )
2
4
  require "#{dir}/../../lib/sqs.rb"
3
5
 
@@ -37,7 +39,7 @@ end
37
39
  puts "\nREMINDERS:
38
40
  * You are #{SQStest.skip_live_tests? ? 'skipping' : 'performing'} live tests.
39
41
  * You are #{SQStest.print_counter? ? 'printing' : 'not printing'} the counter after each test.
40
- * #{SQStest.my_aws_account[:email]} is the main email
42
+ * #{SQStest.my_aws_account[:email]} is the main email.
41
43
  * #{SQStest.other_aws_account[:email]} is the secondary email.
42
44
 
43
45
  You can change all these settings in #{File.expand_path( __FILE__ )}\n\n"
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.0
3
3
  specification_version: 1
4
4
  name: SQS
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.1.0
7
- date: 2006-11-22 00:00:00 -08:00
6
+ version: 0.1.1
7
+ date: 2007-02-19 00:00:00 -08:00
8
8
  summary: A Ruby interface to Amazon's Simple Queue Service
9
9
  require_paths:
10
10
  - lib
@@ -41,6 +41,7 @@ files:
41
41
  - test/unit/test_setup.rb
42
42
  - README
43
43
  - MIT-LICENSE
44
+ - CHANGELOG
44
45
  test_files:
45
46
  - test/all_tests.rb
46
47
  - test/unit/sqs_grant_test.rb
@@ -53,6 +54,7 @@ rdoc_options: []
53
54
  extra_rdoc_files:
54
55
  - README
55
56
  - MIT-LICENSE
57
+ - CHANGELOG
56
58
  executables: []
57
59
 
58
60
  extensions: []