khronos 0.0.0 → 0.0.1.pre1
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/.gitignore +1 -0
 - data/.travis.yml +4 -0
 - data/Gemfile +18 -7
 - data/Rakefile +36 -0
 - data/bin/khronos +2 -1
 - data/config.ru +9 -1
 - data/config/environment.yml +27 -5
 - data/{lib/khronos/storage/adapter/mongo/.schedule_log.rb.un~ → db/test.db} +0 -0
 - data/khronos.gemspec +10 -7
 - data/lib/khronos.rb +4 -7
 - data/lib/khronos/config.rb +0 -2
 - data/lib/khronos/logger.rb +16 -0
 - data/lib/khronos/scheduler.rb +17 -3
 - data/lib/khronos/server.rb +4 -31
 - data/lib/khronos/server/controller.rb +31 -0
 - data/lib/khronos/server/runner.rb +50 -0
 - data/lib/khronos/server/scheduler.rb +110 -0
 - data/lib/khronos/storage.rb +34 -13
 - data/lib/khronos/storage/adapter.rb +44 -0
 - data/lib/khronos/storage/adapter/activerecord.rb +39 -0
 - data/lib/khronos/storage/adapter/activerecord/migrations/schedule.rb +29 -0
 - data/lib/khronos/storage/adapter/activerecord/migrations/schedule_log.rb +23 -0
 - data/lib/khronos/storage/adapter/activerecord/schedule.rb +24 -0
 - data/lib/khronos/storage/adapter/activerecord/schedule_log.rb +14 -0
 - data/lib/khronos/storage/adapter/mongoid.rb +37 -0
 - data/lib/khronos/storage/adapter/{mongo → mongoid}/schedule.rb +6 -4
 - data/lib/khronos/storage/adapter/{mongo → mongoid}/schedule_log.rb +3 -4
 - data/lib/khronos/tasks/db.rake +25 -0
 - data/lib/khronos/version.rb +1 -1
 - data/server.rb +29 -0
 - data/spec/functional/adapters_spec.rb +61 -0
 - data/spec/functional/controller_spec.rb +11 -0
 - data/spec/functional/scheduler_spec.rb +30 -0
 - data/spec/integration/runner_server_spec.rb +26 -0
 - data/spec/integration/scheduler_server_spec.rb +70 -0
 - data/spec/spec_helper.rb +17 -1
 - data/spec/support/factories.rb +12 -0
 - data/spec/support/mocks.rb +23 -0
 - data/{lib/khronos/storage/adapter/postgres/.schedule.rb.un~ → spec/tmp/scheduler.db} +0 -0
 - data/{lib/khronos/.version.rb.swp → spec/tmp/sqlite3.db} +0 -0
 - metadata +92 -55
 - data/config/.config.yml.un~ +0 -0
 - data/config/.environment.yml.un~ +0 -0
 - data/config/.redis.yml.un~ +0 -0
 - data/config/.storage.yml.un~ +0 -0
 - data/lib/.khronos.rb.un~ +0 -0
 - data/lib/.scheduler.rb.un~ +0 -0
 - data/lib/khronos/.config.rb.un~ +0 -0
 - data/lib/khronos/.controller.rb.un~ +0 -0
 - data/lib/khronos/.runner.rb.un~ +0 -0
 - data/lib/khronos/.schedule.rb.un~ +0 -0
 - data/lib/khronos/.scheduler.rb.un~ +0 -0
 - data/lib/khronos/.server.rb.un~ +0 -0
 - data/lib/khronos/.storage.rb.un~ +0 -0
 - data/lib/khronos/.task.rb.un~ +0 -0
 - data/lib/khronos/.version.rb.un~ +0 -0
 - data/lib/khronos/controller.rb +0 -26
 - data/lib/khronos/runner.rb +0 -11
 - data/lib/khronos/storage/adapter/.client.rb.un~ +0 -0
 - data/lib/khronos/storage/adapter/.memcached.rb.un~ +0 -0
 - data/lib/khronos/storage/adapter/.mongo.rb.un~ +0 -0
 - data/lib/khronos/storage/adapter/.mongodb.rb.un~ +0 -0
 - data/lib/khronos/storage/adapter/.postgres.rb.un~ +0 -0
 - data/lib/khronos/storage/adapter/.redis.rb.un~ +0 -0
 - data/lib/khronos/storage/adapter/mongo.rb +0 -13
 - data/lib/khronos/storage/adapter/mongo/.mongo.rb.un~ +0 -0
 - data/lib/khronos/storage/adapter/mongo/.schedule.rb.un~ +0 -0
 - data/lib/khronos/storage/adapter/postgres.rb +0 -15
 - data/lib/khronos/storage/adapter/postgres/.schedule_log.rb.un~ +0 -0
 - data/lib/khronos/storage/adapter/postgres/schedule.rb +0 -13
 - data/lib/khronos/storage/adapter/postgres/schedule_log.rb +0 -13
 - data/lib/khronos/storage/db/migrate/.schedule.rb.un~ +0 -0
 - data/lib/khronos/storage/db/migrate/.schedule_log.rb.un~ +0 -0
 - data/lib/khronos/storage/db/migrate/schedule.rb +0 -15
 - data/lib/khronos/storage/db/migrate/schedule_log.rb +0 -16
 - data/spec/.spec_helper.rb.un~ +0 -0
 - data/spec/functional/.client_spec.rb.un~ +0 -0
 - data/spec/functional/client_spec.rb +0 -24
 - data/spec/integration/.server_spec.rb.un~ +0 -0
 - data/spec/integration/server_spec.rb +0 -31
 
| 
         @@ -0,0 +1,30 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            describe Khronos::Scheduler do
         
     | 
| 
      
 4 
     | 
    
         
            +
              subject { Khronos::Scheduler }
         
     | 
| 
      
 5 
     | 
    
         
            +
              let(:scheduler) { subject.new }
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
              before(:all) do
         
     | 
| 
      
 8 
     | 
    
         
            +
                ENV['KHRONOS_STORAGE'] = 'sqlite3://localhost/spec/tmp/scheduler.db'
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                @storage = Khronos::Storage.new
         
     | 
| 
      
 11 
     | 
    
         
            +
                @storage.truncate!
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                load_factory_girl!
         
     | 
| 
      
 14 
     | 
    
         
            +
                FactoryGirl.create(:schedule, :at => 1.minutes.from_now)
         
     | 
| 
      
 15 
     | 
    
         
            +
                FactoryGirl.create(:schedule, :at => 5.minutes.from_now)
         
     | 
| 
      
 16 
     | 
    
         
            +
                FactoryGirl.create(:schedule, :at => 10.minutes.from_now)
         
     | 
| 
      
 17 
     | 
    
         
            +
                FactoryGirl.create(:schedule, :at => 30.minutes.from_now)
         
     | 
| 
      
 18 
     | 
    
         
            +
                FactoryGirl.create(:schedule, :at => 60.minutes.from_now)
         
     | 
| 
      
 19 
     | 
    
         
            +
              end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
              it "fetch schedules by time" do
         
     | 
| 
      
 22 
     | 
    
         
            +
                scheduler.fetch(1.minutes.from_now).length.should == 1
         
     | 
| 
      
 23 
     | 
    
         
            +
                scheduler.fetch(5.minutes.from_now).length.should == 2
         
     | 
| 
      
 24 
     | 
    
         
            +
                scheduler.fetch(10.minutes.from_now).length.should == 3
         
     | 
| 
      
 25 
     | 
    
         
            +
                scheduler.fetch(30.minutes.from_now).length.should == 4
         
     | 
| 
      
 26 
     | 
    
         
            +
                scheduler.fetch(60.minutes.from_now).length.should == 5
         
     | 
| 
      
 27 
     | 
    
         
            +
              end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
            end
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
         @@ -0,0 +1,26 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            describe Khronos::Server::Runner do
         
     | 
| 
      
 4 
     | 
    
         
            +
              subject { Khronos::Server::Runner }
         
     | 
| 
      
 5 
     | 
    
         
            +
              let(:recurrency_check_url) { "http://localhost:8080/task?id=1" }
         
     | 
| 
      
 6 
     | 
    
         
            +
              let(:task_url) { 'http://test.com' }
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
              before(:each) do
         
     | 
| 
      
 9 
     | 
    
         
            +
                Khronos::Server::Runner.any_instance.stub(:new)
         
     | 
| 
      
 10 
     | 
    
         
            +
                Khronos::Server::Runner.any_instance.stub(:send_data)
         
     | 
| 
      
 11 
     | 
    
         
            +
                Khronos::Server::Runner.any_instance.stub(:close_connection)
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                stub_request(:get, task_url).to_return(:body => 'it works!', :status => 200)
         
     | 
| 
      
 14 
     | 
    
         
            +
                stub_request(:patch, recurrency_check_url).to_return(:status => 200, :body => "", :headers => {})
         
     | 
| 
      
 15 
     | 
    
         
            +
              end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
              it "should run a task" do
         
     | 
| 
      
 18 
     | 
    
         
            +
                runner = subject.new(nil)
         
     | 
| 
      
 19 
     | 
    
         
            +
                EM.run_block do
         
     | 
| 
      
 20 
     | 
    
         
            +
                  runner.receive_data({:id => 1, :task_url => task_url, :recurrency => 0}.to_json)
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
                a_request(:get, task_url).should have_been_made
         
     | 
| 
      
 23 
     | 
    
         
            +
                a_request(:patch, recurrency_check_url).should have_been_made
         
     | 
| 
      
 24 
     | 
    
         
            +
              end
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,70 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            describe Khronos::Server::Scheduler do
         
     | 
| 
      
 4 
     | 
    
         
            +
              include Rack::Test::Methods
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
              def app
         
     | 
| 
      
 7 
     | 
    
         
            +
                Khronos::Server::Scheduler
         
     | 
| 
      
 8 
     | 
    
         
            +
              end
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
              it "should return 404 for invalid task requests" do
         
     | 
| 
      
 11 
     | 
    
         
            +
                get('/task')
         
     | 
| 
      
 12 
     | 
    
         
            +
                last_response.status.should == 404
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
                get('/task', {:context => "invalid"})
         
     | 
| 
      
 15 
     | 
    
         
            +
                last_response.status.should == 404
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                get('/task', {:id => 99})
         
     | 
| 
      
 18 
     | 
    
         
            +
                last_response.status.should == 404
         
     | 
| 
      
 19 
     | 
    
         
            +
              end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
              it "should schedule context to 1 week" do
         
     | 
| 
      
 22 
     | 
    
         
            +
                post('/task', {
         
     | 
| 
      
 23 
     | 
    
         
            +
                  :context => "1-week-test",
         
     | 
| 
      
 24 
     | 
    
         
            +
                  :schedule => 1.week,
         
     | 
| 
      
 25 
     | 
    
         
            +
                  :at => Time.now,
         
     | 
| 
      
 26 
     | 
    
         
            +
                  :recurrency => 1.week,
         
     | 
| 
      
 27 
     | 
    
         
            +
                  :task_url => "http://fake"
         
     | 
| 
      
 28 
     | 
    
         
            +
                })
         
     | 
| 
      
 29 
     | 
    
         
            +
                last_response.status.should == 200
         
     | 
| 
      
 30 
     | 
    
         
            +
                Khronos::Storage::Schedule.where(:context => "1-week-test").count.should == 1
         
     | 
| 
      
 31 
     | 
    
         
            +
              end
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
              it "should enqueue schedule to run immediatelly" do
         
     | 
| 
      
 34 
     | 
    
         
            +
                mock_tcp_next_request("")
         
     | 
| 
      
 35 
     | 
    
         
            +
                dummy_schedule = FactoryGirl.create(:schedule)
         
     | 
| 
      
 36 
     | 
    
         
            +
                post('/task/run', :id => dummy_schedule.id)
         
     | 
| 
      
 37 
     | 
    
         
            +
                last_response.status.should == 200
         
     | 
| 
      
 38 
     | 
    
         
            +
                JSON.parse(last_response.body).should == {'queued' => true}
         
     | 
| 
      
 39 
     | 
    
         
            +
              end
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
              it "should update recurring time" do
         
     | 
| 
      
 42 
     | 
    
         
            +
                dummy_schedule = FactoryGirl.create(:schedule, {
         
     | 
| 
      
 43 
     | 
    
         
            +
                  :at => Time.now,
         
     | 
| 
      
 44 
     | 
    
         
            +
                  :active => false,
         
     | 
| 
      
 45 
     | 
    
         
            +
                  :recurrency => 1.day
         
     | 
| 
      
 46 
     | 
    
         
            +
                })
         
     | 
| 
      
 47 
     | 
    
         
            +
                request('/task', :method => 'PATCH', :params => {:id => dummy_schedule.id})
         
     | 
| 
      
 48 
     | 
    
         
            +
                schedule = Khronos::Storage::Schedule.find(dummy_schedule.id)
         
     | 
| 
      
 49 
     | 
    
         
            +
                schedule.active.should == true
         
     | 
| 
      
 50 
     | 
    
         
            +
                schedule.at.to_i.should == 1.day.from_now.to_i
         
     | 
| 
      
 51 
     | 
    
         
            +
              end
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
              it "should retrieve a list of schedules by context pattern" do
         
     | 
| 
      
 54 
     | 
    
         
            +
                FactoryGirl.create(:schedule, {:context => "namespaced"})
         
     | 
| 
      
 55 
     | 
    
         
            +
                FactoryGirl.create(:schedule, {:context => "namespaced:1"})
         
     | 
| 
      
 56 
     | 
    
         
            +
                FactoryGirl.create(:schedule, {:context => "namespaced:2"})
         
     | 
| 
      
 57 
     | 
    
         
            +
                FactoryGirl.create(:schedule, {:context => "namespaced:3"})
         
     | 
| 
      
 58 
     | 
    
         
            +
                FactoryGirl.create(:schedule, {:context => "namespaced:4"})
         
     | 
| 
      
 59 
     | 
    
         
            +
                FactoryGirl.create(:schedule, {:context => "namespaced:5"})
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
                get('/tasks', {:context => "namespaced%"})
         
     | 
| 
      
 62 
     | 
    
         
            +
                last_response.status.should == 200
         
     | 
| 
      
 63 
     | 
    
         
            +
                JSON.parse(last_response.body).length.should == 6
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
                get('/tasks', {:context => "namespaced"})
         
     | 
| 
      
 66 
     | 
    
         
            +
                last_response.status.should == 200
         
     | 
| 
      
 67 
     | 
    
         
            +
                JSON.parse(last_response.body).length.should == 1
         
     | 
| 
      
 68 
     | 
    
         
            +
              end
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
            end
         
     | 
    
        data/spec/spec_helper.rb
    CHANGED
    
    | 
         @@ -13,6 +13,22 @@ require 'bundler/setup' 
     | 
|
| 
       13 
13 
     | 
    
         
             
            require 'active_support/all'
         
     | 
| 
       14 
14 
     | 
    
         
             
            require 'rack/test'
         
     | 
| 
       15 
15 
     | 
    
         
             
            require 'delorean'
         
     | 
| 
       16 
     | 
    
         
            -
            require 'rspec'
         
     | 
| 
      
 16 
     | 
    
         
            +
            require 'webmock/rspec'
         
     | 
| 
       17 
17 
     | 
    
         | 
| 
      
 18 
     | 
    
         
            +
            require 'rspec'
         
     | 
| 
       18 
19 
     | 
    
         
             
            require 'khronos'
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
            require 'factory_girl'
         
     | 
| 
      
 22 
     | 
    
         
            +
            def load_factory_girl!
         
     | 
| 
      
 23 
     | 
    
         
            +
              require File.expand_path('spec/support/factories')
         
     | 
| 
      
 24 
     | 
    
         
            +
            end
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
            # Support mocks
         
     | 
| 
      
 27 
     | 
    
         
            +
            require File.expand_path('spec/support/mocks')
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
            RSpec.configure do |config|
         
     | 
| 
      
 30 
     | 
    
         
            +
              config.include FactoryGirl::Syntax::Methods
         
     | 
| 
      
 31 
     | 
    
         
            +
              config.mock_with :rspec
         
     | 
| 
      
 32 
     | 
    
         
            +
            end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
            Dir['spec/tmp/**'].each {|f| File.unlink(f) }
         
     | 
| 
         @@ -0,0 +1,12 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            FactoryGirl.define do
         
     | 
| 
      
 2 
     | 
    
         
            +
              factory :schedule, :class => Khronos::Storage::Schedule do
         
     | 
| 
      
 3 
     | 
    
         
            +
                sequence(:context) { |i| "context#{i}" }
         
     | 
| 
      
 4 
     | 
    
         
            +
                at { Time.now }
         
     | 
| 
      
 5 
     | 
    
         
            +
                task_url "https://github.com/endel/khronos"
         
     | 
| 
      
 6 
     | 
    
         
            +
                recurrency 0
         
     | 
| 
      
 7 
     | 
    
         
            +
              end
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
              factory :schedule_log, :class => Khronos::Storage::ScheduleLog do
         
     | 
| 
      
 10 
     | 
    
         
            +
                association :schedule
         
     | 
| 
      
 11 
     | 
    
         
            +
              end
         
     | 
| 
      
 12 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,23 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'socket'
         
     | 
| 
      
 2 
     | 
    
         
            +
            TCP_NEW = TCPSocket.method(:new) unless defined? TCP_NEW
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            #
         
     | 
| 
      
 5 
     | 
    
         
            +
            # Example:
         
     | 
| 
      
 6 
     | 
    
         
            +
            #   mock_tcp_next_request("<xml>junk</xml>")
         
     | 
| 
      
 7 
     | 
    
         
            +
            #
         
     | 
| 
      
 8 
     | 
    
         
            +
            class FakeTCPSocket
         
     | 
| 
      
 9 
     | 
    
         
            +
              def puts(*args); end
         
     | 
| 
      
 10 
     | 
    
         
            +
              def closed?; true; end
         
     | 
| 
      
 11 
     | 
    
         
            +
              def write(some_text = nil); end
         
     | 
| 
      
 12 
     | 
    
         
            +
            end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            def mock_tcp_next_request(string)
         
     | 
| 
      
 15 
     | 
    
         
            +
              TCPSocket.stub!(:new).and_return {
         
     | 
| 
      
 16 
     | 
    
         
            +
                cm = FakeTCPSocket.new
         
     | 
| 
      
 17 
     | 
    
         
            +
                cm
         
     | 
| 
      
 18 
     | 
    
         
            +
              }
         
     | 
| 
      
 19 
     | 
    
         
            +
            end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
            def unmock_tcp
         
     | 
| 
      
 22 
     | 
    
         
            +
              TCPSocket.stub!(:new).and_return { TCP_NEW.call }
         
     | 
| 
      
 23 
     | 
    
         
            +
            end
         
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,15 +1,15 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: khronos
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.0. 
     | 
| 
       5 
     | 
    
         
            -
              prerelease: 
         
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.0.1.pre1
         
     | 
| 
      
 5 
     | 
    
         
            +
              prerelease: 6
         
     | 
| 
       6 
6 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       7 
7 
     | 
    
         
             
            authors:
         
     | 
| 
       8 
8 
     | 
    
         
             
            - Endel Dreyer
         
     | 
| 
       9 
9 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       10 
10 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       11 
11 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       12 
     | 
    
         
            -
            date: 2012-09- 
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2012-09-09 00:00:00.000000000 Z
         
     | 
| 
       13 
13 
     | 
    
         
             
            dependencies:
         
     | 
| 
       14 
14 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       15 
15 
     | 
    
         
             
              name: sinatra
         
     | 
| 
         @@ -43,6 +43,22 @@ dependencies: 
     | 
|
| 
       43 
43 
     | 
    
         
             
                - - ~>
         
     | 
| 
       44 
44 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       45 
45 
     | 
    
         
             
                    version: 3.0.5
         
     | 
| 
      
 46 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 47 
     | 
    
         
            +
              name: bson_ext
         
     | 
| 
      
 48 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 49 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 50 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 51 
     | 
    
         
            +
                - - ~>
         
     | 
| 
      
 52 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 53 
     | 
    
         
            +
                    version: 1.6.4
         
     | 
| 
      
 54 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 55 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 56 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 57 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 58 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 59 
     | 
    
         
            +
                - - ~>
         
     | 
| 
      
 60 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 61 
     | 
    
         
            +
                    version: 1.6.4
         
     | 
| 
       46 
62 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       47 
63 
     | 
    
         
             
              name: activerecord
         
     | 
| 
       48 
64 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
         @@ -91,76 +107,92 @@ dependencies: 
     | 
|
| 
       91 
107 
     | 
    
         
             
                - - ~>
         
     | 
| 
       92 
108 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       93 
109 
     | 
    
         
             
                    version: 3.2.8
         
     | 
| 
       94 
     | 
    
         
            -
             
     | 
| 
      
 110 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 111 
     | 
    
         
            +
              name: eventmachine
         
     | 
| 
      
 112 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 113 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 114 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 115 
     | 
    
         
            +
                - - ~>
         
     | 
| 
      
 116 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 117 
     | 
    
         
            +
                    version: 1.0.0.beta.4
         
     | 
| 
      
 118 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 119 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 120 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 121 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 122 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 123 
     | 
    
         
            +
                - - ~>
         
     | 
| 
      
 124 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 125 
     | 
    
         
            +
                    version: 1.0.0.beta.4
         
     | 
| 
      
 126 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 127 
     | 
    
         
            +
              name: em-http-request
         
     | 
| 
      
 128 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 129 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 130 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 131 
     | 
    
         
            +
                - - ~>
         
     | 
| 
      
 132 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 133 
     | 
    
         
            +
                    version: 1.0.3
         
     | 
| 
      
 134 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 135 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 136 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 137 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 138 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 139 
     | 
    
         
            +
                - - ~>
         
     | 
| 
      
 140 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 141 
     | 
    
         
            +
                    version: 1.0.3
         
     | 
| 
      
 142 
     | 
    
         
            +
            description: Ruby HTTP Job Scheduler Interface. An advanced Cron replacement for the
         
     | 
| 
      
 143 
     | 
    
         
            +
              cloud.
         
     | 
| 
       95 
144 
     | 
    
         
             
            email:
         
     | 
| 
       96 
145 
     | 
    
         
             
            - endel@ocapi.com.br
         
     | 
| 
       97 
146 
     | 
    
         
             
            executables: []
         
     | 
| 
       98 
147 
     | 
    
         
             
            extensions: []
         
     | 
| 
       99 
148 
     | 
    
         
             
            extra_rdoc_files: []
         
     | 
| 
       100 
149 
     | 
    
         
             
            files:
         
     | 
| 
      
 150 
     | 
    
         
            +
            - .gitignore
         
     | 
| 
       101 
151 
     | 
    
         
             
            - .rspec
         
     | 
| 
      
 152 
     | 
    
         
            +
            - .travis.yml
         
     | 
| 
       102 
153 
     | 
    
         
             
            - Gemfile
         
     | 
| 
      
 154 
     | 
    
         
            +
            - Rakefile
         
     | 
| 
       103 
155 
     | 
    
         
             
            - bin/khronos
         
     | 
| 
       104 
156 
     | 
    
         
             
            - config.ru
         
     | 
| 
       105 
     | 
    
         
            -
            - config/.config.yml.un~
         
     | 
| 
       106 
     | 
    
         
            -
            - config/.environment.yml.un~
         
     | 
| 
       107 
     | 
    
         
            -
            - config/.redis.yml.un~
         
     | 
| 
       108 
     | 
    
         
            -
            - config/.storage.yml.un~
         
     | 
| 
       109 
157 
     | 
    
         
             
            - config/environment.yml
         
     | 
| 
      
 158 
     | 
    
         
            +
            - db/test.db
         
     | 
| 
       110 
159 
     | 
    
         
             
            - khronos.gemspec
         
     | 
| 
       111 
     | 
    
         
            -
            - lib/.khronos.rb.un~
         
     | 
| 
       112 
160 
     | 
    
         
             
            - lib/.scheduler.rb.swp
         
     | 
| 
       113 
     | 
    
         
            -
            - lib/.scheduler.rb.un~
         
     | 
| 
       114 
161 
     | 
    
         
             
            - lib/khronos.rb
         
     | 
| 
       115 
     | 
    
         
            -
            - lib/khronos/.config.rb.un~
         
     | 
| 
       116 
     | 
    
         
            -
            - lib/khronos/.controller.rb.un~
         
     | 
| 
       117 
     | 
    
         
            -
            - lib/khronos/.runner.rb.un~
         
     | 
| 
       118 
     | 
    
         
            -
            - lib/khronos/.schedule.rb.un~
         
     | 
| 
       119 
     | 
    
         
            -
            - lib/khronos/.scheduler.rb.un~
         
     | 
| 
       120 
     | 
    
         
            -
            - lib/khronos/.server.rb.un~
         
     | 
| 
       121 
     | 
    
         
            -
            - lib/khronos/.storage.rb.un~
         
     | 
| 
       122 
     | 
    
         
            -
            - lib/khronos/.task.rb.un~
         
     | 
| 
       123 
     | 
    
         
            -
            - lib/khronos/.version.rb.swp
         
     | 
| 
       124 
     | 
    
         
            -
            - lib/khronos/.version.rb.un~
         
     | 
| 
       125 
162 
     | 
    
         
             
            - lib/khronos/config.rb
         
     | 
| 
       126 
     | 
    
         
            -
            - lib/khronos/ 
     | 
| 
       127 
     | 
    
         
            -
            - lib/khronos/runner.rb
         
     | 
| 
      
 163 
     | 
    
         
            +
            - lib/khronos/logger.rb
         
     | 
| 
       128 
164 
     | 
    
         
             
            - lib/khronos/scheduler.rb
         
     | 
| 
       129 
165 
     | 
    
         
             
            - lib/khronos/server.rb
         
     | 
| 
      
 166 
     | 
    
         
            +
            - lib/khronos/server/controller.rb
         
     | 
| 
      
 167 
     | 
    
         
            +
            - lib/khronos/server/runner.rb
         
     | 
| 
      
 168 
     | 
    
         
            +
            - lib/khronos/server/scheduler.rb
         
     | 
| 
       130 
169 
     | 
    
         
             
            - lib/khronos/storage.rb
         
     | 
| 
       131 
170 
     | 
    
         
             
            - lib/khronos/storage/adapter.rb
         
     | 
| 
       132 
     | 
    
         
            -
            - lib/khronos/storage/adapter/.client.rb.un~
         
     | 
| 
       133 
171 
     | 
    
         
             
            - lib/khronos/storage/adapter/.memcached.rb.swp
         
     | 
| 
       134 
     | 
    
         
            -
            - lib/khronos/storage/adapter/.memcached.rb.un~
         
     | 
| 
       135 
     | 
    
         
            -
            - lib/khronos/storage/adapter/.mongo.rb.un~
         
     | 
| 
       136 
172 
     | 
    
         
             
            - lib/khronos/storage/adapter/.mongodb.rb.swp
         
     | 
| 
       137 
     | 
    
         
            -
            - lib/khronos/storage/adapter/.mongodb.rb.un~
         
     | 
| 
       138 
     | 
    
         
            -
            - lib/khronos/storage/adapter/.postgres.rb.un~
         
     | 
| 
       139 
173 
     | 
    
         
             
            - lib/khronos/storage/adapter/.redis.rb.swp
         
     | 
| 
       140 
     | 
    
         
            -
            - lib/khronos/storage/adapter 
     | 
| 
       141 
     | 
    
         
            -
            - lib/khronos/storage/adapter/ 
     | 
| 
       142 
     | 
    
         
            -
            - lib/khronos/storage/adapter/ 
     | 
| 
       143 
     | 
    
         
            -
            - lib/khronos/storage/adapter/ 
     | 
| 
       144 
     | 
    
         
            -
            - lib/khronos/storage/adapter/ 
     | 
| 
       145 
     | 
    
         
            -
            - lib/khronos/storage/adapter/ 
     | 
| 
       146 
     | 
    
         
            -
            - lib/khronos/storage/adapter/ 
     | 
| 
       147 
     | 
    
         
            -
            - lib/khronos/storage/adapter/ 
     | 
| 
       148 
     | 
    
         
            -
            - lib/khronos/ 
     | 
| 
       149 
     | 
    
         
            -
            - lib/khronos/storage/adapter/postgres/.schedule_log.rb.un~
         
     | 
| 
       150 
     | 
    
         
            -
            - lib/khronos/storage/adapter/postgres/schedule.rb
         
     | 
| 
       151 
     | 
    
         
            -
            - lib/khronos/storage/adapter/postgres/schedule_log.rb
         
     | 
| 
       152 
     | 
    
         
            -
            - lib/khronos/storage/db/migrate/.schedule.rb.un~
         
     | 
| 
       153 
     | 
    
         
            -
            - lib/khronos/storage/db/migrate/.schedule_log.rb.un~
         
     | 
| 
       154 
     | 
    
         
            -
            - lib/khronos/storage/db/migrate/schedule.rb
         
     | 
| 
       155 
     | 
    
         
            -
            - lib/khronos/storage/db/migrate/schedule_log.rb
         
     | 
| 
      
 174 
     | 
    
         
            +
            - lib/khronos/storage/adapter/activerecord.rb
         
     | 
| 
      
 175 
     | 
    
         
            +
            - lib/khronos/storage/adapter/activerecord/migrations/schedule.rb
         
     | 
| 
      
 176 
     | 
    
         
            +
            - lib/khronos/storage/adapter/activerecord/migrations/schedule_log.rb
         
     | 
| 
      
 177 
     | 
    
         
            +
            - lib/khronos/storage/adapter/activerecord/schedule.rb
         
     | 
| 
      
 178 
     | 
    
         
            +
            - lib/khronos/storage/adapter/activerecord/schedule_log.rb
         
     | 
| 
      
 179 
     | 
    
         
            +
            - lib/khronos/storage/adapter/mongoid.rb
         
     | 
| 
      
 180 
     | 
    
         
            +
            - lib/khronos/storage/adapter/mongoid/schedule.rb
         
     | 
| 
      
 181 
     | 
    
         
            +
            - lib/khronos/storage/adapter/mongoid/schedule_log.rb
         
     | 
| 
      
 182 
     | 
    
         
            +
            - lib/khronos/tasks/db.rake
         
     | 
| 
       156 
183 
     | 
    
         
             
            - lib/khronos/version.rb
         
     | 
| 
       157 
     | 
    
         
            -
            -  
     | 
| 
       158 
     | 
    
         
            -
            - spec/functional 
     | 
| 
       159 
     | 
    
         
            -
            - spec/functional/ 
     | 
| 
       160 
     | 
    
         
            -
            - spec/ 
     | 
| 
       161 
     | 
    
         
            -
            - spec/integration/ 
     | 
| 
      
 184 
     | 
    
         
            +
            - server.rb
         
     | 
| 
      
 185 
     | 
    
         
            +
            - spec/functional/adapters_spec.rb
         
     | 
| 
      
 186 
     | 
    
         
            +
            - spec/functional/controller_spec.rb
         
     | 
| 
      
 187 
     | 
    
         
            +
            - spec/functional/scheduler_spec.rb
         
     | 
| 
      
 188 
     | 
    
         
            +
            - spec/integration/runner_server_spec.rb
         
     | 
| 
      
 189 
     | 
    
         
            +
            - spec/integration/scheduler_server_spec.rb
         
     | 
| 
       162 
190 
     | 
    
         
             
            - spec/spec_helper.rb
         
     | 
| 
       163 
     | 
    
         
            -
             
     | 
| 
      
 191 
     | 
    
         
            +
            - spec/support/factories.rb
         
     | 
| 
      
 192 
     | 
    
         
            +
            - spec/support/mocks.rb
         
     | 
| 
      
 193 
     | 
    
         
            +
            - spec/tmp/scheduler.db
         
     | 
| 
      
 194 
     | 
    
         
            +
            - spec/tmp/sqlite3.db
         
     | 
| 
      
 195 
     | 
    
         
            +
            homepage: http://github.com/ocapi/khronos
         
     | 
| 
       164 
196 
     | 
    
         
             
            licenses:
         
     | 
| 
       165 
197 
     | 
    
         
             
            - MIT
         
     | 
| 
       166 
198 
     | 
    
         
             
            post_install_message: 
         
     | 
| 
         @@ -176,9 +208,9 @@ required_ruby_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       176 
208 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
       177 
209 
     | 
    
         
             
              none: false
         
     | 
| 
       178 
210 
     | 
    
         
             
              requirements:
         
     | 
| 
       179 
     | 
    
         
            -
              - - ! ' 
     | 
| 
      
 211 
     | 
    
         
            +
              - - ! '>'
         
     | 
| 
       180 
212 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       181 
     | 
    
         
            -
                  version:  
     | 
| 
      
 213 
     | 
    
         
            +
                  version: 1.3.1
         
     | 
| 
       182 
214 
     | 
    
         
             
            requirements: []
         
     | 
| 
       183 
215 
     | 
    
         
             
            rubyforge_project: 
         
     | 
| 
       184 
216 
     | 
    
         
             
            rubygems_version: 1.8.24
         
     | 
| 
         @@ -186,9 +218,14 @@ signing_key: 
     | 
|
| 
       186 
218 
     | 
    
         
             
            specification_version: 3
         
     | 
| 
       187 
219 
     | 
    
         
             
            summary: Ruby HTTP Job Scheduler Interface.
         
     | 
| 
       188 
220 
     | 
    
         
             
            test_files:
         
     | 
| 
       189 
     | 
    
         
            -
            - spec/functional 
     | 
| 
       190 
     | 
    
         
            -
            - spec/functional/ 
     | 
| 
       191 
     | 
    
         
            -
            - spec/ 
     | 
| 
       192 
     | 
    
         
            -
            - spec/integration/ 
     | 
| 
      
 221 
     | 
    
         
            +
            - spec/functional/adapters_spec.rb
         
     | 
| 
      
 222 
     | 
    
         
            +
            - spec/functional/controller_spec.rb
         
     | 
| 
      
 223 
     | 
    
         
            +
            - spec/functional/scheduler_spec.rb
         
     | 
| 
      
 224 
     | 
    
         
            +
            - spec/integration/runner_server_spec.rb
         
     | 
| 
      
 225 
     | 
    
         
            +
            - spec/integration/scheduler_server_spec.rb
         
     | 
| 
       193 
226 
     | 
    
         
             
            - spec/spec_helper.rb
         
     | 
| 
      
 227 
     | 
    
         
            +
            - spec/support/factories.rb
         
     | 
| 
      
 228 
     | 
    
         
            +
            - spec/support/mocks.rb
         
     | 
| 
      
 229 
     | 
    
         
            +
            - spec/tmp/scheduler.db
         
     | 
| 
      
 230 
     | 
    
         
            +
            - spec/tmp/sqlite3.db
         
     | 
| 
       194 
231 
     | 
    
         
             
            has_rdoc: 
         
     | 
    
        data/config/.config.yml.un~
    DELETED
    
    | 
         Binary file 
     | 
    
        data/config/.environment.yml.un~
    DELETED
    
    | 
         Binary file 
     | 
    
        data/config/.redis.yml.un~
    DELETED
    
    | 
         Binary file 
     | 
    
        data/config/.storage.yml.un~
    DELETED
    
    | 
         Binary file 
     | 
    
        data/lib/.khronos.rb.un~
    DELETED
    
    | 
         Binary file 
     | 
    
        data/lib/.scheduler.rb.un~
    DELETED
    
    | 
         Binary file 
     | 
    
        data/lib/khronos/.config.rb.un~
    DELETED
    
    | 
         Binary file 
     | 
| 
         Binary file 
     | 
    
        data/lib/khronos/.runner.rb.un~
    DELETED
    
    | 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
    
        data/lib/khronos/.server.rb.un~
    DELETED
    
    | 
         Binary file 
     | 
    
        data/lib/khronos/.storage.rb.un~
    DELETED
    
    | 
         Binary file 
     | 
    
        data/lib/khronos/.task.rb.un~
    DELETED
    
    | 
         Binary file 
     | 
    
        data/lib/khronos/.version.rb.un~
    DELETED
    
    | 
         Binary file 
     | 
    
        data/lib/khronos/controller.rb
    DELETED
    
    | 
         @@ -1,26 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            module Khronos
         
     | 
| 
       2 
     | 
    
         
            -
              class Controller
         
     | 
| 
       3 
     | 
    
         
            -
                attr_reader :scheduler, :runner, :interval
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
                def initialize
         
     | 
| 
       6 
     | 
    
         
            -
                  @runner = Runner.new
         
     | 
| 
       7 
     | 
    
         
            -
                  @scheduler = Scheduler.new
         
     | 
| 
       8 
     | 
    
         
            -
                  @scheduler.add_observer(@runner)
         
     | 
| 
       9 
     | 
    
         
            -
                end
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
                def start!
         
     | 
| 
       12 
     | 
    
         
            -
                  loop do
         
     | 
| 
       13 
     | 
    
         
            -
                    puts "Tick..."
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
                    if rand(500) == 1
         
     | 
| 
       16 
     | 
    
         
            -
                      puts "I'm so lucky!"
         
     | 
| 
       17 
     | 
    
         
            -
                    end
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
                    #
         
     | 
| 
       20 
     | 
    
         
            -
                    # Sleep 'interval' seconds
         
     | 
| 
       21 
     | 
    
         
            -
                    #
         
     | 
| 
       22 
     | 
    
         
            -
                    sleep(Config.instance.interval)
         
     | 
| 
       23 
     | 
    
         
            -
                  end
         
     | 
| 
       24 
     | 
    
         
            -
                end
         
     | 
| 
       25 
     | 
    
         
            -
              end
         
     | 
| 
       26 
     | 
    
         
            -
            end
         
     |