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.
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