SQS 0.1.0 → 0.1.1

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/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: []