rapns 3.3.2-java → 3.4.0-java
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +7 -0
- data/README.md +19 -21
- data/bin/rapns +14 -13
- data/lib/generators/templates/rapns.rb +8 -4
- data/lib/rapns.rb +7 -0
- data/lib/rapns/TODO +3 -0
- data/lib/rapns/apns/feedback.rb +4 -2
- data/lib/rapns/app.rb +3 -1
- data/lib/rapns/configuration.rb +8 -1
- data/lib/rapns/daemon.rb +3 -1
- data/lib/rapns/daemon/apns/app_runner.rb +3 -2
- data/lib/rapns/daemon/apns/certificate_expired_error.rb +20 -0
- data/lib/rapns/daemon/apns/connection.rb +26 -0
- data/lib/rapns/daemon/apns/delivery.rb +2 -1
- data/lib/rapns/daemon/apns/delivery_handler.rb +2 -2
- data/lib/rapns/daemon/app_runner.rb +50 -28
- data/lib/rapns/daemon/batch.rb +100 -0
- data/lib/rapns/daemon/delivery.rb +6 -10
- data/lib/rapns/daemon/delivery_handler.rb +14 -12
- data/lib/rapns/daemon/delivery_handler_collection.rb +33 -0
- data/lib/rapns/daemon/feeder.rb +3 -5
- data/lib/rapns/daemon/gcm/delivery.rb +5 -4
- data/lib/rapns/daemon/gcm/delivery_handler.rb +2 -2
- data/lib/rapns/daemon/store/active_record.rb +23 -2
- data/lib/rapns/deprecation.rb +7 -6
- data/lib/rapns/logger.rb +1 -1
- data/lib/rapns/notification.rb +5 -3
- data/lib/rapns/reflection.rb +1 -1
- data/lib/rapns/version.rb +1 -1
- data/lib/tasks/cane.rake +1 -1
- data/lib/tasks/test.rake +8 -3
- data/spec/unit/apns/app_spec.rb +4 -4
- data/spec/unit/apns_feedback_spec.rb +1 -1
- data/spec/unit/configuration_spec.rb +12 -6
- data/spec/unit/daemon/apns/app_runner_spec.rb +6 -4
- data/spec/unit/daemon/apns/certificate_expired_error_spec.rb +11 -0
- data/spec/unit/daemon/apns/connection_spec.rb +46 -10
- data/spec/unit/daemon/apns/delivery_handler_spec.rb +24 -18
- data/spec/unit/daemon/apns/delivery_spec.rb +11 -12
- data/spec/unit/daemon/apns/feedback_receiver_spec.rb +16 -16
- data/spec/unit/daemon/app_runner_shared.rb +27 -10
- data/spec/unit/daemon/app_runner_spec.rb +48 -28
- data/spec/unit/daemon/batch_spec.rb +160 -0
- data/spec/unit/daemon/delivery_handler_collection_spec.rb +37 -0
- data/spec/unit/daemon/delivery_handler_shared.rb +20 -11
- data/spec/unit/daemon/feeder_spec.rb +12 -12
- data/spec/unit/daemon/gcm/app_runner_spec.rb +4 -2
- data/spec/unit/daemon/gcm/delivery_handler_spec.rb +18 -10
- data/spec/unit/daemon/gcm/delivery_spec.rb +47 -17
- data/spec/unit/daemon/interruptible_sleep_spec.rb +3 -3
- data/spec/unit/daemon/reflectable_spec.rb +1 -1
- data/spec/unit/daemon/store/active_record/reconnectable_spec.rb +1 -1
- data/spec/unit/daemon/store/active_record_spec.rb +87 -10
- data/spec/unit/daemon_spec.rb +6 -6
- data/spec/unit/deprecation_spec.rb +2 -2
- data/spec/unit/logger_spec.rb +33 -17
- data/spec/unit/notification_shared.rb +7 -3
- data/spec/unit/upgraded_spec.rb +8 -14
- data/spec/unit_spec_helper.rb +9 -1
- metadata +53 -44
- data/lib/rapns/daemon/delivery_queue.rb +0 -42
- data/lib/rapns/daemon/delivery_queue_18.rb +0 -44
- data/lib/rapns/daemon/delivery_queue_19.rb +0 -42
- data/spec/acceptance/gcm_upgrade_spec.rb +0 -34
- data/spec/acceptance_spec_helper.rb +0 -85
- data/spec/unit/daemon/delivery_queue_spec.rb +0 -29
@@ -1,44 +0,0 @@
|
|
1
|
-
module Rapns
|
2
|
-
module Daemon
|
3
|
-
class DeliveryQueue18
|
4
|
-
def push(obj)
|
5
|
-
Thread.critical = true
|
6
|
-
@queue.push obj
|
7
|
-
@num_notifications += 1
|
8
|
-
begin
|
9
|
-
t = @waiting.shift
|
10
|
-
t.wakeup if t
|
11
|
-
rescue ThreadError
|
12
|
-
retry
|
13
|
-
ensure
|
14
|
-
Thread.critical = false
|
15
|
-
end
|
16
|
-
begin
|
17
|
-
t.run if t
|
18
|
-
rescue ThreadError
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
def pop
|
23
|
-
while (Thread.critical = true; @queue.empty?)
|
24
|
-
@waiting.push Thread.current
|
25
|
-
Thread.stop
|
26
|
-
end
|
27
|
-
@queue.shift
|
28
|
-
ensure
|
29
|
-
Thread.critical = false
|
30
|
-
end
|
31
|
-
|
32
|
-
protected
|
33
|
-
|
34
|
-
def synchronize
|
35
|
-
Thread.critical = true
|
36
|
-
begin
|
37
|
-
yield
|
38
|
-
ensure
|
39
|
-
Thread.critical = false
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
@@ -1,42 +0,0 @@
|
|
1
|
-
module Rapns
|
2
|
-
module Daemon
|
3
|
-
class DeliveryQueue19
|
4
|
-
def initialize
|
5
|
-
@mutex = Mutex.new
|
6
|
-
end
|
7
|
-
|
8
|
-
def push(notification)
|
9
|
-
@mutex.synchronize do
|
10
|
-
@num_notifications += 1
|
11
|
-
@queue.push(notification)
|
12
|
-
|
13
|
-
begin
|
14
|
-
t = @waiting.shift
|
15
|
-
t.wakeup if t
|
16
|
-
rescue ThreadError
|
17
|
-
retry
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
def pop
|
23
|
-
@mutex.synchronize do
|
24
|
-
while true
|
25
|
-
if @queue.empty?
|
26
|
-
@waiting.push Thread.current
|
27
|
-
@mutex.sleep
|
28
|
-
else
|
29
|
-
return @queue.shift
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
protected
|
36
|
-
|
37
|
-
def synchronize(&blk)
|
38
|
-
@mutex.synchronize(&blk)
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
@@ -1,34 +0,0 @@
|
|
1
|
-
require 'acceptance_spec_helper'
|
2
|
-
|
3
|
-
describe 'GCM upgrade' do
|
4
|
-
before do
|
5
|
-
setup_rails
|
6
|
-
generate
|
7
|
-
migrate('create_rapns_notifications', 'create_rapns_feedback',
|
8
|
-
'add_alert_is_json_to_rapns_notifications', 'add_app_to_rapns',
|
9
|
-
'create_rapns_apps')
|
10
|
-
|
11
|
-
as_test_rails_db do
|
12
|
-
now = Time.now.to_s(:db)
|
13
|
-
ActiveRecord::Base.connection.execute <<-SQL
|
14
|
-
INSERT INTO rapns_apps (key, environment, certificate, created_at, updated_at)
|
15
|
-
VALUES ('test', 'development', 'c3rt', '#{now}', '#{now}')
|
16
|
-
SQL
|
17
|
-
|
18
|
-
ActiveRecord::Base.connection.execute <<-SQL
|
19
|
-
INSERT INTO rapns_notifications (app, device_token, created_at, updated_at)
|
20
|
-
VALUES ('test', 't0k3n', '#{now}', '#{now}')
|
21
|
-
SQL
|
22
|
-
end
|
23
|
-
|
24
|
-
migrate('add_gcm')
|
25
|
-
end
|
26
|
-
|
27
|
-
it 'associates apps and notifications' do
|
28
|
-
as_test_rails_db do
|
29
|
-
app = Rapns::Apns::App.first
|
30
|
-
app.name.should == 'test'
|
31
|
-
app.notifications.count.should == 1
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
@@ -1,85 +0,0 @@
|
|
1
|
-
require 'unit_spec_helper'
|
2
|
-
require 'fileutils'
|
3
|
-
|
4
|
-
ENV['RAILS_ENV'] = 'test'
|
5
|
-
require 'bundler'
|
6
|
-
Bundler.require(:default)
|
7
|
-
|
8
|
-
TMP_DIR = '/tmp'
|
9
|
-
RAILS_DIR = File.join(TMP_DIR, 'rapns_test')
|
10
|
-
if ENV['TRAVIS']
|
11
|
-
TRAVIS_BRANCH = 'master'
|
12
|
-
RAPNS_ROOT = 'git://github.com/ileitch/rapns.git'
|
13
|
-
else
|
14
|
-
RAPNS_ROOT = File.expand_path(__FILE__ + '/../../')
|
15
|
-
end
|
16
|
-
|
17
|
-
def setup_rails
|
18
|
-
return if $rails_is_setup
|
19
|
-
`rm -rf #{RAILS_DIR}`
|
20
|
-
FileUtils.mkdir_p(RAILS_DIR)
|
21
|
-
cmd("bundle exec rails new #{RAILS_DIR} --skip-bundle")
|
22
|
-
branch = `git branch | grep '\*'`.split(' ').last
|
23
|
-
in_test_rails do
|
24
|
-
cmd('echo "gem \'rake\'" >> Gemfile')
|
25
|
-
if ENV['TRAVIS']
|
26
|
-
cmd("echo \"gem 'rapns', :git => '#{RAPNS_ROOT}', :branch => '#{TRAVIS_BRANCH}'\" >> Gemfile")
|
27
|
-
else
|
28
|
-
cmd("echo \"gem 'rapns', :git => '#{RAPNS_ROOT}', :branch => '#{branch}'\" >> Gemfile")
|
29
|
-
end
|
30
|
-
|
31
|
-
cmd("bundle install")
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
def as_test_rails_db(env='development')
|
36
|
-
orig_config = ActiveRecord::Base.connection_config
|
37
|
-
begin
|
38
|
-
in_test_rails do
|
39
|
-
config = YAML.load_file('config/database.yml')
|
40
|
-
ActiveRecord::Base.establish_connection(config[env])
|
41
|
-
yield
|
42
|
-
end
|
43
|
-
ensure
|
44
|
-
ActiveRecord::Base.establish_connection(orig_config)
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
def cmd(str, echo = true)
|
49
|
-
puts "* #{str.strip}" if echo
|
50
|
-
retval = Bundler.with_clean_env { `#{str}` }
|
51
|
-
puts retval.strip if echo && retval.strip != ""
|
52
|
-
retval
|
53
|
-
end
|
54
|
-
|
55
|
-
def generate
|
56
|
-
in_test_rails { cmd('bundle exec rails g rapns') }
|
57
|
-
end
|
58
|
-
|
59
|
-
def migrate(*migrations)
|
60
|
-
in_test_rails do
|
61
|
-
if migrations.present?
|
62
|
-
migrations.each do |name|
|
63
|
-
migration = Dir.entries('db/migrate').find { |entry| entry =~ /#{name}/ }
|
64
|
-
version = migration.split('_').first
|
65
|
-
cmd("bundle exec rake db:migrate VERSION=#{version} RAILS_ENV=development")
|
66
|
-
end
|
67
|
-
else
|
68
|
-
cmd('bundle exec rake db:migrate RAILS_ENV=development')
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
def in_test_rails
|
74
|
-
pwd = Dir.pwd
|
75
|
-
begin
|
76
|
-
Dir.chdir(RAILS_DIR)
|
77
|
-
yield
|
78
|
-
ensure
|
79
|
-
Dir.chdir(pwd)
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
def runner(str)
|
84
|
-
in_test_rails { cmd("rails runner -e test '#{str}'").strip }
|
85
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
require "unit_spec_helper"
|
2
|
-
|
3
|
-
describe Rapns::Daemon::DeliveryQueue do
|
4
|
-
let(:queue) { Rapns::Daemon::DeliveryQueue.new }
|
5
|
-
|
6
|
-
it 'behaves likes a normal qeue' do
|
7
|
-
obj = stub
|
8
|
-
queue.push obj
|
9
|
-
queue.pop.should == obj
|
10
|
-
end
|
11
|
-
|
12
|
-
it 'returns false if notifications have not all been processed' do
|
13
|
-
queue.push stub
|
14
|
-
queue.notifications_processed?.should be_false
|
15
|
-
end
|
16
|
-
|
17
|
-
it 'returns false if the queue is empty but notifications have not all been processed' do
|
18
|
-
queue.push stub
|
19
|
-
queue.pop
|
20
|
-
queue.notifications_processed?.should be_false
|
21
|
-
end
|
22
|
-
|
23
|
-
it 'returns true if all notifications have been processed' do
|
24
|
-
queue.push stub
|
25
|
-
queue.pop
|
26
|
-
queue.notification_processed
|
27
|
-
queue.notifications_processed?.should be_true
|
28
|
-
end
|
29
|
-
end
|