khronos 0.0.0 → 0.0.1.pre1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (80) hide show
  1. data/.gitignore +1 -0
  2. data/.travis.yml +4 -0
  3. data/Gemfile +18 -7
  4. data/Rakefile +36 -0
  5. data/bin/khronos +2 -1
  6. data/config.ru +9 -1
  7. data/config/environment.yml +27 -5
  8. data/{lib/khronos/storage/adapter/mongo/.schedule_log.rb.un~ → db/test.db} +0 -0
  9. data/khronos.gemspec +10 -7
  10. data/lib/khronos.rb +4 -7
  11. data/lib/khronos/config.rb +0 -2
  12. data/lib/khronos/logger.rb +16 -0
  13. data/lib/khronos/scheduler.rb +17 -3
  14. data/lib/khronos/server.rb +4 -31
  15. data/lib/khronos/server/controller.rb +31 -0
  16. data/lib/khronos/server/runner.rb +50 -0
  17. data/lib/khronos/server/scheduler.rb +110 -0
  18. data/lib/khronos/storage.rb +34 -13
  19. data/lib/khronos/storage/adapter.rb +44 -0
  20. data/lib/khronos/storage/adapter/activerecord.rb +39 -0
  21. data/lib/khronos/storage/adapter/activerecord/migrations/schedule.rb +29 -0
  22. data/lib/khronos/storage/adapter/activerecord/migrations/schedule_log.rb +23 -0
  23. data/lib/khronos/storage/adapter/activerecord/schedule.rb +24 -0
  24. data/lib/khronos/storage/adapter/activerecord/schedule_log.rb +14 -0
  25. data/lib/khronos/storage/adapter/mongoid.rb +37 -0
  26. data/lib/khronos/storage/adapter/{mongo → mongoid}/schedule.rb +6 -4
  27. data/lib/khronos/storage/adapter/{mongo → mongoid}/schedule_log.rb +3 -4
  28. data/lib/khronos/tasks/db.rake +25 -0
  29. data/lib/khronos/version.rb +1 -1
  30. data/server.rb +29 -0
  31. data/spec/functional/adapters_spec.rb +61 -0
  32. data/spec/functional/controller_spec.rb +11 -0
  33. data/spec/functional/scheduler_spec.rb +30 -0
  34. data/spec/integration/runner_server_spec.rb +26 -0
  35. data/spec/integration/scheduler_server_spec.rb +70 -0
  36. data/spec/spec_helper.rb +17 -1
  37. data/spec/support/factories.rb +12 -0
  38. data/spec/support/mocks.rb +23 -0
  39. data/{lib/khronos/storage/adapter/postgres/.schedule.rb.un~ → spec/tmp/scheduler.db} +0 -0
  40. data/{lib/khronos/.version.rb.swp → spec/tmp/sqlite3.db} +0 -0
  41. metadata +92 -55
  42. data/config/.config.yml.un~ +0 -0
  43. data/config/.environment.yml.un~ +0 -0
  44. data/config/.redis.yml.un~ +0 -0
  45. data/config/.storage.yml.un~ +0 -0
  46. data/lib/.khronos.rb.un~ +0 -0
  47. data/lib/.scheduler.rb.un~ +0 -0
  48. data/lib/khronos/.config.rb.un~ +0 -0
  49. data/lib/khronos/.controller.rb.un~ +0 -0
  50. data/lib/khronos/.runner.rb.un~ +0 -0
  51. data/lib/khronos/.schedule.rb.un~ +0 -0
  52. data/lib/khronos/.scheduler.rb.un~ +0 -0
  53. data/lib/khronos/.server.rb.un~ +0 -0
  54. data/lib/khronos/.storage.rb.un~ +0 -0
  55. data/lib/khronos/.task.rb.un~ +0 -0
  56. data/lib/khronos/.version.rb.un~ +0 -0
  57. data/lib/khronos/controller.rb +0 -26
  58. data/lib/khronos/runner.rb +0 -11
  59. data/lib/khronos/storage/adapter/.client.rb.un~ +0 -0
  60. data/lib/khronos/storage/adapter/.memcached.rb.un~ +0 -0
  61. data/lib/khronos/storage/adapter/.mongo.rb.un~ +0 -0
  62. data/lib/khronos/storage/adapter/.mongodb.rb.un~ +0 -0
  63. data/lib/khronos/storage/adapter/.postgres.rb.un~ +0 -0
  64. data/lib/khronos/storage/adapter/.redis.rb.un~ +0 -0
  65. data/lib/khronos/storage/adapter/mongo.rb +0 -13
  66. data/lib/khronos/storage/adapter/mongo/.mongo.rb.un~ +0 -0
  67. data/lib/khronos/storage/adapter/mongo/.schedule.rb.un~ +0 -0
  68. data/lib/khronos/storage/adapter/postgres.rb +0 -15
  69. data/lib/khronos/storage/adapter/postgres/.schedule_log.rb.un~ +0 -0
  70. data/lib/khronos/storage/adapter/postgres/schedule.rb +0 -13
  71. data/lib/khronos/storage/adapter/postgres/schedule_log.rb +0 -13
  72. data/lib/khronos/storage/db/migrate/.schedule.rb.un~ +0 -0
  73. data/lib/khronos/storage/db/migrate/.schedule_log.rb.un~ +0 -0
  74. data/lib/khronos/storage/db/migrate/schedule.rb +0 -15
  75. data/lib/khronos/storage/db/migrate/schedule_log.rb +0 -16
  76. data/spec/.spec_helper.rb.un~ +0 -0
  77. data/spec/functional/.client_spec.rb.un~ +0 -0
  78. data/spec/functional/client_spec.rb +0 -24
  79. data/spec/integration/.server_spec.rb.un~ +0 -0
  80. data/spec/integration/server_spec.rb +0 -31
@@ -1,11 +0,0 @@
1
- require 'observer'
2
-
3
- module Khronos
4
- class Runner
5
-
6
- def update(time, command)
7
- puts "#{time.inspect} => #{command.inspect}"
8
- end
9
-
10
- end
11
- end
@@ -1,13 +0,0 @@
1
- require 'mongo'
2
-
3
- module Khronos
4
- module Storage
5
- module Adapter
6
-
7
- module Mongo
8
- end
9
-
10
- end
11
- end
12
- end
13
-
@@ -1,15 +0,0 @@
1
- require 'activerecord'
2
- require 'pg'
3
-
4
- module Khronos
5
- module Storage
6
- module Adapter
7
-
8
- module Postgres
9
- end
10
-
11
- end
12
- end
13
- end
14
-
15
-
@@ -1,13 +0,0 @@
1
- module Khronos
2
- module Storage
3
- module Adapter
4
-
5
- module Postgres
6
- class Schedule < ActiveRecord::Base
7
- has_many :logs, :class_name => ScheduleLog
8
- end
9
- end
10
-
11
- end
12
- end
13
- end
@@ -1,13 +0,0 @@
1
- module Khronos
2
- module Storage
3
- module Adapter
4
-
5
- module Postgres
6
- class ScheduleLog < ActiveRecord::Base
7
- belongs_to :schedule
8
- end
9
- end
10
-
11
- end
12
- end
13
- end
@@ -1,15 +0,0 @@
1
- class CreateSchedule < ActiveRecord::Migration
2
- def self.up
3
- create_table :schedules do |t|
4
- t.string :namespace, :limit => 100, :null => true
5
- t.string :context, :limit => 100, :null => false
6
- t.datetime :at, :null => false
7
- t.integer :recurring, :null => false
8
- end
9
- end
10
-
11
- def self.down
12
- drop_table :schedules
13
- end
14
- end
15
-
@@ -1,16 +0,0 @@
1
- class CreateSchedule < ActiveRecord::Migration
2
- def self.up
3
- create_table :schedule_logs do |t|
4
- t.integer :schedule_id, :null => false
5
-
6
- t.datetime :started_at, :null => false
7
- t.datetime :finished_at, :null => true
8
- end
9
- end
10
-
11
- def self.down
12
- drop_table :schedule_logs
13
- end
14
- end
15
-
16
-
Binary file
@@ -1,24 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Khronos::Storage do
4
- subject { Khronos::Storage }
5
-
6
- describe 'adapters' do
7
-
8
- it "should identify redis adapter" do
9
- client = subject.new('redis://127.0.0.1:6379/0')
10
- client.adapter.should be_a_instance_of Khronos::Adapter::Redis
11
- end
12
-
13
- xit "should identify memcached adapter" do
14
- client = subject.new('memcached://127.0.0.1:6379/test')
15
- client.adapter.should be_a_instance_of Khronos::Adapter::Memcached
16
- end
17
-
18
- xit "should identify mongodb adapter" do
19
- client = subject.new('mongodb://127.0.0.1:6379/test')
20
- client.adapter.should be_a_instance_of Khronos::Adapter::Mongodb
21
- end
22
-
23
- end
24
- end
@@ -1,31 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Khronos::Server do
4
- include Rack::Test::Methods
5
-
6
- def app
7
- Khronos::Server
8
- end
9
-
10
- it "shouldn't accept request without context" do
11
- get('/')
12
- last_response.status.should == 400
13
- end
14
-
15
- it "should accept requests with no data" do
16
- get('/', {:context => "invalid"})
17
- last_response.status.should == 200
18
- JSON.parse(last_response.body).should == {}
19
- end
20
-
21
- it "should schedule context to 1 week" do
22
- put('/', {
23
- :context => "invalid",
24
- :schedule => 1.week,
25
- :at => '15:00',
26
- :recurrency => 5
27
- })
28
- last_response.status.should == 200
29
- end
30
-
31
- end