analytics-ruby 1.1.0 → 2.0.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/Gemfile.lock +47 -0
- data/analytics-ruby.gemspec +5 -7
- data/lib/segment.rb +1 -0
- data/lib/segment/analytics.rb +31 -0
- data/lib/segment/analytics/client.rb +335 -0
- data/lib/segment/analytics/defaults.rb +20 -0
- data/lib/segment/analytics/logging.rb +35 -0
- data/lib/segment/analytics/request.rb +80 -0
- data/lib/segment/analytics/response.rb +16 -0
- data/lib/segment/analytics/utils.rb +85 -0
- data/lib/segment/analytics/version.rb +6 -0
- data/lib/segment/analytics/worker.rb +59 -0
- data/spec/segment/analytics/client_spec.rb +248 -0
- data/spec/segment/analytics/worker_spec.rb +96 -0
- data/spec/segment/analytics_spec.rb +103 -0
- data/spec/spec_helper.rb +60 -55
- data/tags +135 -0
- metadata +34 -31
- data/analytics-ruby-0.6.0.gem +0 -0
- data/analytics-ruby-1.0.0.gem +0 -0
- data/lib/analytics-ruby.rb +0 -51
- data/lib/analytics-ruby/client.rb +0 -311
- data/lib/analytics-ruby/consumer.rb +0 -76
- data/lib/analytics-ruby/defaults.rb +0 -21
- data/lib/analytics-ruby/request.rb +0 -61
- data/lib/analytics-ruby/response.rb +0 -17
- data/lib/analytics-ruby/util.rb +0 -42
- data/lib/analytics-ruby/version.rb +0 -3
- data/spec/client_spec.rb +0 -212
- data/spec/consumer_spec.rb +0 -103
- data/spec/module_spec.rb +0 -136
@@ -1,76 +0,0 @@
|
|
1
|
-
|
2
|
-
require 'analytics-ruby/defaults'
|
3
|
-
require 'analytics-ruby/request'
|
4
|
-
require 'analytics-ruby/util'
|
5
|
-
|
6
|
-
module AnalyticsRuby
|
7
|
-
|
8
|
-
class Consumer
|
9
|
-
|
10
|
-
# public: Creates a new consumer
|
11
|
-
#
|
12
|
-
# The consumer continuously takes messages off the queue
|
13
|
-
# and makes requests to the segment.io api
|
14
|
-
#
|
15
|
-
# queue - Queue synchronized between client and consumer
|
16
|
-
# secret - String of the project's secret
|
17
|
-
# options - Hash of consumer options
|
18
|
-
# batch_size - Fixnum of how many items to send in a batch
|
19
|
-
# on_error - Proc of what to do on an error
|
20
|
-
#
|
21
|
-
def initialize(queue, secret, options = {})
|
22
|
-
Util.symbolize_keys! options
|
23
|
-
|
24
|
-
@queue = queue
|
25
|
-
@secret = secret
|
26
|
-
@batch_size = options[:batch_size] || Defaults::Queue::BATCH_SIZE
|
27
|
-
@on_error = options[:on_error] || Proc.new { |status, error| }
|
28
|
-
|
29
|
-
@current_batch = []
|
30
|
-
|
31
|
-
@mutex = Mutex.new
|
32
|
-
end
|
33
|
-
|
34
|
-
# public: Continuously runs the loop to check for new events
|
35
|
-
#
|
36
|
-
def run
|
37
|
-
until Thread.current[:should_exit]
|
38
|
-
flush
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
# public: Flush some events from our queue
|
43
|
-
#
|
44
|
-
def flush
|
45
|
-
# Block until we have something to send
|
46
|
-
item = @queue.pop
|
47
|
-
return if item.nil?
|
48
|
-
|
49
|
-
# Synchronize on additions to the current batch
|
50
|
-
@mutex.synchronize {
|
51
|
-
@current_batch << item
|
52
|
-
until @current_batch.length >= @batch_size || @queue.empty?
|
53
|
-
@current_batch << @queue.pop
|
54
|
-
end
|
55
|
-
}
|
56
|
-
|
57
|
-
req = Request.new
|
58
|
-
res = req.post @secret, @current_batch
|
59
|
-
@on_error.call res.status, res.error unless res.status == 200
|
60
|
-
@mutex.synchronize {
|
61
|
-
@current_batch = []
|
62
|
-
}
|
63
|
-
end
|
64
|
-
|
65
|
-
# public: Check whether we have outstanding requests.
|
66
|
-
#
|
67
|
-
def is_requesting?
|
68
|
-
requesting = nil
|
69
|
-
@mutex.synchronize {
|
70
|
-
requesting = !@current_batch.empty?
|
71
|
-
}
|
72
|
-
requesting
|
73
|
-
end
|
74
|
-
|
75
|
-
end
|
76
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
|
2
|
-
module AnalyticsRuby
|
3
|
-
module Defaults
|
4
|
-
|
5
|
-
module Request
|
6
|
-
HOST = 'api.segment.io' unless defined? AnalyticsRuby::Defaults::Request::HOST
|
7
|
-
PORT = 443 unless defined? AnalyticsRuby::Defaults::Request::PORT
|
8
|
-
PATH = '/v1/import' unless defined? AnalyticsRuby::Defaults::Request::PATH
|
9
|
-
SSL = true unless defined? AnalyticsRuby::Defaults::Request::SSL
|
10
|
-
HEADERS = { :accept => 'application/json' } unless defined? AnalyticsRuby::Defaults::Request::HEADERS
|
11
|
-
RETRIES = 4 unless defined? AnalyticsRuby::Defaults::Request::RETRIES
|
12
|
-
BACKOFF = 30.0 unless defined? AnalyticsRuby::Defaults::Request::BACKOFF
|
13
|
-
end
|
14
|
-
|
15
|
-
module Queue
|
16
|
-
BATCH_SIZE = 100 unless defined? AnalyticsRuby::Defaults::Queue::BATCH_SIZE
|
17
|
-
MAX_SIZE = 10000 unless defined? AnalyticsRuby::Defaults::Queue::MAX_SIZE
|
18
|
-
end
|
19
|
-
|
20
|
-
end
|
21
|
-
end
|
@@ -1,61 +0,0 @@
|
|
1
|
-
|
2
|
-
require 'analytics-ruby/defaults'
|
3
|
-
require 'analytics-ruby/response'
|
4
|
-
require 'net/http'
|
5
|
-
require 'net/https'
|
6
|
-
require 'json'
|
7
|
-
|
8
|
-
module AnalyticsRuby
|
9
|
-
|
10
|
-
class Request
|
11
|
-
|
12
|
-
# public: Creates a new request object to send analytics batch
|
13
|
-
#
|
14
|
-
def initialize(options = {})
|
15
|
-
options[:host] ||= Defaults::Request::HOST
|
16
|
-
options[:port] ||= Defaults::Request::PORT
|
17
|
-
options[:ssl] ||= Defaults::Request::SSL
|
18
|
-
options[:headers] ||= Defaults::Request::HEADERS
|
19
|
-
@path = options[:path] || Defaults::Request::PATH
|
20
|
-
@retries = options[:retries] || Defaults::Request::RETRIES
|
21
|
-
@backoff = options[:backoff] || Defaults::Request::BACKOFF
|
22
|
-
|
23
|
-
http = Net::HTTP.new(options[:host], options[:port])
|
24
|
-
http.use_ssl = options[:ssl]
|
25
|
-
http.read_timeout = 8
|
26
|
-
http.open_timeout = 4
|
27
|
-
|
28
|
-
@http = http
|
29
|
-
end
|
30
|
-
|
31
|
-
# public: Posts the secret and batch of messages to the API.
|
32
|
-
#
|
33
|
-
# returns - Response of the status and error if it exists
|
34
|
-
def post(secret, batch)
|
35
|
-
|
36
|
-
status, error = nil, nil
|
37
|
-
remaining_retries = @retries
|
38
|
-
backoff = @backoff
|
39
|
-
headers = { 'Content-Type' => 'application/json', 'accept' => 'application/json' }
|
40
|
-
begin
|
41
|
-
payload = JSON.generate :secret => secret, :batch => batch
|
42
|
-
res = @http.request(Net::HTTP::Post.new(@path, headers), payload)
|
43
|
-
status = res.code.to_i
|
44
|
-
body = JSON.parse(res.body)
|
45
|
-
error = body["error"]
|
46
|
-
|
47
|
-
rescue Exception => err
|
48
|
-
puts "err: #{err}"
|
49
|
-
status = -1
|
50
|
-
error = "Connection error: #{err}"
|
51
|
-
puts "retries: #{remaining_retries}"
|
52
|
-
unless (remaining_retries -=1).zero?
|
53
|
-
sleep(backoff)
|
54
|
-
retry
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
Response.new status, error
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
|
2
|
-
module AnalyticsRuby
|
3
|
-
|
4
|
-
class Response
|
5
|
-
|
6
|
-
attr_reader :status
|
7
|
-
attr_reader :error
|
8
|
-
|
9
|
-
# public: Simple class to wrap responses from the API
|
10
|
-
#
|
11
|
-
#
|
12
|
-
def initialize(status = 200, error = nil)
|
13
|
-
@status = status
|
14
|
-
@error = error
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
data/lib/analytics-ruby/util.rb
DELETED
@@ -1,42 +0,0 @@
|
|
1
|
-
module Util
|
2
|
-
|
3
|
-
# public: Return a new hash with keys converted from strings to symbols
|
4
|
-
#
|
5
|
-
def self.symbolize_keys(hash)
|
6
|
-
hash.inject({}) { |memo, (k,v)| memo[k.to_sym] = v; memo }
|
7
|
-
end
|
8
|
-
|
9
|
-
# public: Convert hash keys from strings to symbols in place
|
10
|
-
#
|
11
|
-
def self.symbolize_keys!(hash)
|
12
|
-
hash.replace symbolize_keys hash
|
13
|
-
end
|
14
|
-
|
15
|
-
# public: Return a new hash with keys as strings
|
16
|
-
#
|
17
|
-
def self.stringify_keys(hash)
|
18
|
-
hash.inject({}) { |memo, (k,v)| memo[k.to_s] = v; memo }
|
19
|
-
end
|
20
|
-
|
21
|
-
# public: Returns a new hash with all the date values in the into iso8601
|
22
|
-
# strings
|
23
|
-
#
|
24
|
-
def self.isoify_dates(hash)
|
25
|
-
hash.inject({}) { |memo, (k, v)|
|
26
|
-
memo[k] = v.respond_to?(:iso8601) ? v.iso8601 : v
|
27
|
-
memo
|
28
|
-
}
|
29
|
-
end
|
30
|
-
|
31
|
-
# public: Converts all the date values in the into iso8601 strings in place
|
32
|
-
#
|
33
|
-
def self.isoify_dates!(hash)
|
34
|
-
hash.replace isoify_dates hash
|
35
|
-
end
|
36
|
-
|
37
|
-
# public: Returns a uid string
|
38
|
-
#
|
39
|
-
def self.uid
|
40
|
-
(0..16).to_a.map{|x| rand(16).to_s(16)}.join
|
41
|
-
end
|
42
|
-
end
|
data/spec/client_spec.rb
DELETED
@@ -1,212 +0,0 @@
|
|
1
|
-
require 'analytics-ruby'
|
2
|
-
require 'spec_helper'
|
3
|
-
|
4
|
-
|
5
|
-
describe AnalyticsRuby::Client do
|
6
|
-
|
7
|
-
describe '#init' do
|
8
|
-
|
9
|
-
it 'should error if no secret is supplied' do
|
10
|
-
expect { AnalyticsRuby::Client.new }.to raise_error(RuntimeError)
|
11
|
-
end
|
12
|
-
|
13
|
-
it 'should not error if a secret is supplied' do
|
14
|
-
AnalyticsRuby::Client.new :secret => AnalyticsRubyHelpers::SECRET
|
15
|
-
end
|
16
|
-
|
17
|
-
it 'should not error if a secret is supplied as a string' do
|
18
|
-
AnalyticsRuby::Client.new 'secret' => AnalyticsRubyHelpers::SECRET
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
describe '#track' do
|
23
|
-
|
24
|
-
before(:all) do
|
25
|
-
@client = AnalyticsRuby::Client.new :secret => AnalyticsRubyHelpers::SECRET
|
26
|
-
@client.instance_variable_get(:@thread).kill
|
27
|
-
@queue = @client.instance_variable_get :@queue
|
28
|
-
end
|
29
|
-
|
30
|
-
it 'should error without an event' do
|
31
|
-
expect { @client.track(:user_id => 'user') }.to raise_error(ArgumentError)
|
32
|
-
end
|
33
|
-
|
34
|
-
it 'should error without a user_id' do
|
35
|
-
expect { @client.track(:event => 'Event') }.to raise_error(ArgumentError)
|
36
|
-
end
|
37
|
-
|
38
|
-
it 'should error if properties is not a hash' do
|
39
|
-
expect {
|
40
|
-
@client.track({
|
41
|
-
:user_id => 'user',
|
42
|
-
:event => 'Event',
|
43
|
-
:properties => [1,2,3]
|
44
|
-
})
|
45
|
-
}.to raise_error(ArgumentError)
|
46
|
-
end
|
47
|
-
|
48
|
-
it 'should not error with the required options' do
|
49
|
-
@client.track AnalyticsRubyHelpers::Queued::TRACK
|
50
|
-
@queue.pop
|
51
|
-
end
|
52
|
-
|
53
|
-
it 'should not error when given string keys' do
|
54
|
-
@client.track Util.stringify_keys(AnalyticsRubyHelpers::Queued::TRACK)
|
55
|
-
@queue.pop
|
56
|
-
end
|
57
|
-
|
58
|
-
it 'should convert Time properties into iso8601 format' do
|
59
|
-
@client.track({
|
60
|
-
:user_id => 'user',
|
61
|
-
:event => 'Event',
|
62
|
-
:properties => {
|
63
|
-
:time => Time.utc(2013),
|
64
|
-
:nottime => 'x'
|
65
|
-
}
|
66
|
-
})
|
67
|
-
message = @queue.pop
|
68
|
-
message[:properties][:time].should == '2013-01-01T00:00:00Z'
|
69
|
-
message[:properties][:nottime].should == 'x'
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
|
74
|
-
describe '#identify' do
|
75
|
-
|
76
|
-
before(:all) do
|
77
|
-
@client = AnalyticsRuby::Client.new :secret => AnalyticsRubyHelpers::SECRET
|
78
|
-
@client.instance_variable_get(:@thread).kill
|
79
|
-
@queue = @client.instance_variable_get :@queue
|
80
|
-
end
|
81
|
-
|
82
|
-
it 'should error without any user id' do
|
83
|
-
expect { @client.identify({}) }.to raise_error(ArgumentError)
|
84
|
-
end
|
85
|
-
|
86
|
-
it 'should not error with the required options' do
|
87
|
-
@client.identify AnalyticsRubyHelpers::Queued::IDENTIFY
|
88
|
-
@queue.pop
|
89
|
-
end
|
90
|
-
|
91
|
-
it 'should not error with the required options as strings' do
|
92
|
-
@client.identify Util.stringify_keys(AnalyticsRubyHelpers::Queued::IDENTIFY)
|
93
|
-
@queue.pop
|
94
|
-
end
|
95
|
-
|
96
|
-
it 'should convert Time traits into iso8601 format' do
|
97
|
-
@client.identify({
|
98
|
-
:user_id => 'user',
|
99
|
-
:traits => {
|
100
|
-
:time => Time.utc(2013),
|
101
|
-
:nottime => 'x'
|
102
|
-
}
|
103
|
-
})
|
104
|
-
message = @queue.pop
|
105
|
-
message[:traits][:time].should == '2013-01-01T00:00:00Z'
|
106
|
-
message[:traits][:nottime].should == 'x'
|
107
|
-
end
|
108
|
-
end
|
109
|
-
|
110
|
-
describe '#alias' do
|
111
|
-
before :all do
|
112
|
-
@client = AnalyticsRuby::Client.new :secret => AnalyticsRubyHelpers::SECRET
|
113
|
-
end
|
114
|
-
|
115
|
-
it 'should error without from' do
|
116
|
-
expect { @client.alias :to => 1234 }.to raise_error(ArgumentError)
|
117
|
-
end
|
118
|
-
|
119
|
-
it 'should error without to' do
|
120
|
-
expect { @client.alias :from => 1234 }.to raise_error(ArgumentError)
|
121
|
-
end
|
122
|
-
|
123
|
-
it 'should not error with the required options' do
|
124
|
-
@client.alias AnalyticsRubyHelpers::ALIAS
|
125
|
-
end
|
126
|
-
|
127
|
-
it 'should not error with the required options as strings' do
|
128
|
-
@client.alias Util.stringify_keys(AnalyticsRubyHelpers::ALIAS)
|
129
|
-
end
|
130
|
-
end
|
131
|
-
|
132
|
-
describe '#group' do
|
133
|
-
before :all do
|
134
|
-
@client = AnalyticsRuby::Client.new :secret => AnalyticsRubyHelpers::SECRET
|
135
|
-
end
|
136
|
-
|
137
|
-
it 'should error without group_id' do
|
138
|
-
expect { @client.group :user_id => 'foo' }.to raise_error(ArgumentError)
|
139
|
-
end
|
140
|
-
|
141
|
-
it 'should error without user_id' do
|
142
|
-
expect { @client.group :group_id => 'foo' }.to raise_error(ArgumentError)
|
143
|
-
end
|
144
|
-
|
145
|
-
it 'should not error with the required options' do
|
146
|
-
@client.group AnalyticsRubyHelpers::Queued::GROUP
|
147
|
-
end
|
148
|
-
|
149
|
-
it 'should not error with the required options as strings' do
|
150
|
-
@client.group Util.stringify_keys(AnalyticsRubyHelpers::Queued::GROUP)
|
151
|
-
end
|
152
|
-
end
|
153
|
-
|
154
|
-
describe '#page' do
|
155
|
-
before :all do
|
156
|
-
@client = AnalyticsRuby::Client.new :secret => AnalyticsRubyHelpers::SECRET
|
157
|
-
end
|
158
|
-
|
159
|
-
it 'should error without user_id' do
|
160
|
-
expect { @client.page :name => 'foo' }.to raise_error(ArgumentError)
|
161
|
-
end
|
162
|
-
|
163
|
-
it 'should error without name' do
|
164
|
-
expect { @client.page :user_id => 1 }.to raise_error(ArgumentError)
|
165
|
-
end
|
166
|
-
|
167
|
-
it 'should not error with the required options' do
|
168
|
-
@client.page AnalyticsRubyHelpers::Queued::PAGE
|
169
|
-
end
|
170
|
-
|
171
|
-
it 'should not error with the required options as strings' do
|
172
|
-
@client.page Util.stringify_keys(AnalyticsRubyHelpers::Queued::PAGE)
|
173
|
-
end
|
174
|
-
end
|
175
|
-
|
176
|
-
describe '#screen' do
|
177
|
-
before :all do
|
178
|
-
@client = AnalyticsRuby::Client.new :secret => AnalyticsRubyHelpers::SECRET
|
179
|
-
end
|
180
|
-
|
181
|
-
it 'should error without user_id' do
|
182
|
-
expect { @client.screen :name => 'foo' }.to raise_error(ArgumentError)
|
183
|
-
end
|
184
|
-
|
185
|
-
it 'should error without name' do
|
186
|
-
expect { A@client.screen :user_id => 1 }.to raise_error(ArgumentError)
|
187
|
-
end
|
188
|
-
|
189
|
-
it 'should not error with the required options' do
|
190
|
-
@client.screen AnalyticsRubyHelpers::Queued::SCREEN
|
191
|
-
end
|
192
|
-
|
193
|
-
it 'should not error with the required options as strings' do
|
194
|
-
@client.screen Util.stringify_keys(AnalyticsRubyHelpers::Queued::SCREEN)
|
195
|
-
end
|
196
|
-
end
|
197
|
-
|
198
|
-
describe '#flush' do
|
199
|
-
before(:all) do
|
200
|
-
@client = AnalyticsRuby::Client.new :secret => AnalyticsRubyHelpers::SECRET
|
201
|
-
end
|
202
|
-
|
203
|
-
it 'should wait for the queue to finish on a flush' do
|
204
|
-
@client.identify AnalyticsRubyHelpers::Queued::IDENTIFY
|
205
|
-
@client.track AnalyticsRubyHelpers::Queued::TRACK
|
206
|
-
@client.flush
|
207
|
-
@client.queued_messages.should == 0
|
208
|
-
end
|
209
|
-
end
|
210
|
-
end
|
211
|
-
|
212
|
-
|
data/spec/consumer_spec.rb
DELETED
@@ -1,103 +0,0 @@
|
|
1
|
-
require 'analytics-ruby'
|
2
|
-
require 'thread'
|
3
|
-
require 'spec_helper'
|
4
|
-
|
5
|
-
describe AnalyticsRuby::Consumer do
|
6
|
-
|
7
|
-
describe "#init" do
|
8
|
-
it 'accepts string keys' do
|
9
|
-
queue = Queue.new
|
10
|
-
consumer = AnalyticsRuby::Consumer.new(queue, 'secret', 'batch_size' => 100)
|
11
|
-
consumer.instance_variable_get(:@batch_size).should == 100
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
describe '#flush' do
|
16
|
-
|
17
|
-
before :all do
|
18
|
-
AnalyticsRuby::Defaults::Request::BACKOFF = 0.1
|
19
|
-
end
|
20
|
-
|
21
|
-
after :all do
|
22
|
-
AnalyticsRuby::Defaults::Request::BACKOFF = 30.0
|
23
|
-
end
|
24
|
-
|
25
|
-
it 'should not error if the endpoint is unreachable' do
|
26
|
-
|
27
|
-
Net::HTTP.any_instance.stub(:post).and_raise(Exception)
|
28
|
-
|
29
|
-
queue = Queue.new
|
30
|
-
queue << {}
|
31
|
-
consumer = AnalyticsRuby::Consumer.new(queue, 'secret')
|
32
|
-
consumer.flush
|
33
|
-
|
34
|
-
queue.should be_empty
|
35
|
-
|
36
|
-
Net::HTTP.any_instance.unstub(:post)
|
37
|
-
end
|
38
|
-
|
39
|
-
it 'should execute the error handler if the request is invalid' do
|
40
|
-
|
41
|
-
AnalyticsRuby::Request.any_instance.stub(:post).and_return(
|
42
|
-
AnalyticsRuby::Response.new(400, "Some error"))
|
43
|
-
|
44
|
-
on_error = Proc.new do |status, error|
|
45
|
-
puts "#{status}, #{error}"
|
46
|
-
end
|
47
|
-
|
48
|
-
on_error.should_receive(:call).once
|
49
|
-
|
50
|
-
queue = Queue.new
|
51
|
-
queue << {}
|
52
|
-
consumer = AnalyticsRuby::Consumer.new queue, 'secret', :on_error => on_error
|
53
|
-
consumer.flush
|
54
|
-
|
55
|
-
AnalyticsRuby::Request::any_instance.unstub(:post)
|
56
|
-
|
57
|
-
queue.should be_empty
|
58
|
-
end
|
59
|
-
|
60
|
-
it 'should not call on_error if the request is good' do
|
61
|
-
|
62
|
-
on_error = Proc.new do |status, error|
|
63
|
-
puts "#{status}, #{error}"
|
64
|
-
end
|
65
|
-
|
66
|
-
on_error.should_receive(:call).at_most(0).times
|
67
|
-
|
68
|
-
queue = Queue.new
|
69
|
-
queue << AnalyticsRubyHelpers::Requested::TRACK
|
70
|
-
consumer = AnalyticsRuby::Consumer.new queue, 'testsecret', :on_error => on_error
|
71
|
-
consumer.flush
|
72
|
-
|
73
|
-
queue.should be_empty
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
describe '#is_requesting?' do
|
78
|
-
|
79
|
-
it 'should not return true if there isn\'t a current batch' do
|
80
|
-
|
81
|
-
queue = Queue.new
|
82
|
-
consumer = AnalyticsRuby::Consumer.new(queue, 'testsecret')
|
83
|
-
|
84
|
-
consumer.is_requesting?.should == false
|
85
|
-
end
|
86
|
-
|
87
|
-
it 'should return true if there is a current batch' do
|
88
|
-
|
89
|
-
queue = Queue.new
|
90
|
-
queue << AnalyticsRubyHelpers::Requested::TRACK
|
91
|
-
consumer = AnalyticsRuby::Consumer.new(queue, 'testsecret')
|
92
|
-
|
93
|
-
Thread.new {
|
94
|
-
consumer.flush
|
95
|
-
consumer.is_requesting?.should == false
|
96
|
-
}
|
97
|
-
|
98
|
-
# sleep barely long enough to let thread flush the queue.
|
99
|
-
sleep(0.001)
|
100
|
-
consumer.is_requesting?.should == true
|
101
|
-
end
|
102
|
-
end
|
103
|
-
end
|