chawk 0.2.0 → 0.3.0

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.
@@ -1,160 +1,130 @@
1
- # require 'test_helper'
2
- # require 'json'
3
-
4
- # describe Chawk::Vaddr do
5
- # before do
6
- # #@board = Chawk::Board.new()
7
- # @agent = Chawk::Models::Agent.first || Chawk::Models::Agent.create(:name=>"Test User")
8
- # @addr = Chawk.addr(@agent,'a:b')
9
- # @addr.values.clear_history!
10
- # end
11
-
12
- # it "has length" do
13
- # @addr.values.must_respond_to(:length)
14
- # end
15
-
16
- # it :calculates_length do
17
- # @addr.values.clear_history!
18
- # @addr.values.length.must_equal(0)
19
- # @addr.values << "2"
20
- # @addr.values.length.must_equal(1)
21
- # @addr.values << "2"
22
- # @addr.values.length.must_equal(2)
23
- # @addr.values << "FLEAS!"
24
- # @addr.values.length.must_equal(3)
25
- # @addr.values << ["CAT","DOG","COW","CHIPMUNK"]
26
- # @addr.values.length.must_equal(7)
27
- # end
28
-
29
- # it "has clear_history!" do
30
- # @addr.values.must_respond_to(:clear_history!)
31
- # end
32
-
33
- # it "clears history" do
34
- # @addr.values.clear_history!
35
- # @addr.values.length.must_equal(0)
36
- # end
37
-
38
- # it :accepts__insert do
39
- # @addr.values._insert("SHOCK THE MONKEY",Time.now)
40
- # @addr.values.length.must_equal(1)
41
- # end
42
-
43
- # it "accepts <<" do
44
- # @addr.values.must_respond_to(:"<<")
45
- # end
46
-
47
- # it "accepts strings" do
48
- # @addr.values << "A"
49
- # @addr.values.length.must_equal(1)
50
- # @addr.values << "B"
51
- # @addr.values.length.must_equal(2)
52
- # @addr.values << "C"
53
- # @addr.values << "DDDD"
54
- # @addr.values << ["MY","DOG","HAS","FLEAS"]
55
- # end
56
-
57
- # it "only accepts strings" do
58
- # lambda {@addr.values << 10}.must_raise(ArgumentError)
59
- # lambda {@addr.values << 10.0}.must_raise(ArgumentError)
60
- # lambda {@addr.values << Object.new}.must_raise(ArgumentError)
61
- # lambda {@addr.values << nil}.must_raise(ArgumentError)
62
- # lambda {@addr.values << ["MY",:DOG,:HAS,:FLEAS]}.must_raise(ArgumentError)
63
- # end
64
-
65
- # it "has last()" do
66
- # @addr.values.must_respond_to(:last)
67
- # end
68
-
69
- # it "remembers last value" do
70
- # @addr.values << "ALL"
71
- # @addr.values.last.value.must_equal("ALL")
72
- # @addr.values << "GOOD"
73
- # @addr.values.last.value.must_equal("GOOD")
74
- # @addr.values << "BOYS"
75
- # @addr.values.last.value.must_equal("BOYS")
76
- # @addr.values << ["GO","TO","THE","FAIR"]
77
- # @addr.values.last.value.must_equal("FAIR")
78
- # end
79
-
80
- # it "returns ordinal last" do
81
- # @addr.values << ("a".."z").to_a
82
- # @addr.values.last(5).length.must_equal(5)
83
- # end
84
-
85
- # it :does_range do
86
- # @addr.values.must_respond_to(:range)
87
-
88
- # ts = Time.now
89
- # @addr.values._insert('0',ts-1000)
90
- # @addr.values._insert('1',ts-1000)
91
- # @addr.values._insert('2',ts-1000)
92
- # @addr.values._insert('3',ts-1000)
93
- # @addr.values._insert('4',ts-1000)
94
- # @addr.values._insert('5',ts-800)
95
- # @addr.values._insert('6',ts-800)
96
- # @addr.values._insert('7',ts-800)
97
- # @addr.values._insert('8',ts-200)
98
- # @addr.values._insert('9',ts-10)
99
- # @addr.values._insert('10',ts-5)
100
- # @addr.values.range(ts-1000,ts).length.must_equal 11
101
- # @addr.values.range(ts-800,ts).length.must_equal 6
102
- # @addr.values.range(ts-200,ts).length.must_equal 3
103
- # @addr.values.range(ts-10,ts).length.must_equal 2
104
- # @addr.values.range(ts-5,ts).length.must_equal 1
105
- # @addr.values.range(ts-200,ts-11).length.must_equal 1
106
- # @addr.values.range(ts-1000,ts-1000).length.must_equal 5
107
-
108
- # @addr.values._insert('0',ts-100)
109
- # @addr.values.range(ts-200,ts).length.must_equal 4
110
- # end
111
-
112
- # it "does since" do
113
- # ts = Time.now
114
- # @addr.values._insert('0',ts-1000)
115
- # @addr.values._insert('7',ts-800)
116
- # @addr.values._insert('8',ts-200)
117
- # @addr.values._insert("10",ts-5)
118
- # @addr.values.must_respond_to(:since)
119
- # @addr.values.since(ts-1000).length.must_equal(4)
120
- # @addr.values.since(ts-300).length.must_equal(2)
121
- # end
122
-
123
- # it "handles serialized data" do
124
- # serial = (1..100).collect{|x|"X" * (100)}.to_json
125
- # @addr.values.<< serial
126
- # last = @addr.values.last
127
- # ary = JSON.parse(last.value.to_s)
128
- # ary.length.must_equal 100
129
- # ary[-1].must_equal ("X" * 100)
130
- # end
131
-
132
- # # it :acts_like_a_string do
133
- # # @addr.values << "GET DOWN!"
134
- # # last = @addr.values.last
135
- # # last.to_s.must_equal ("GET DOWN!")
136
- # # end
137
-
138
-
139
- # # it "does mq" do
140
- # # @board.flush_notification_queue
141
- # # @board.notification_queue_length.must_equal (0)
142
-
143
- # # pointers = []
144
- # # pointers << @board.addr(['0','1','2'])
145
- # # pointers << @board.addr(['0','1','3'])
146
- # # pointers << @board.addr(['0','1','4'])
147
- # # pointers << @board.addr(['0','1','5'])
148
-
149
- # # pointers.each{|p|p<<10}
150
-
151
- # # @board.notification_queue_length.must_equal (4)
152
- # # x = @board.pop_from_notification_queue
153
- # # x.length.must_equal(3)
154
- # # @board.notification_queue_length.must_equal (3)
155
- # # x = @board.pop_from_notification_queue
156
- # # x = @board.pop_from_notification_queue
157
- # # @board.notification_queue_length.must_equal (1)
158
- # # x.length.must_equal(3)
159
- # # end
160
- # end
1
+ require 'test_helper'
2
+ require 'json'
3
+
4
+ describe Chawk do
5
+ before do
6
+ Chawk.clear_all_data!
7
+ @agent = Chawk::Models::Agent.first || Chawk::Models::Agent.create(:name=>"Test User")
8
+ @node = Chawk.node(@agent,'a:b')
9
+ @node.clear_values!
10
+ end
11
+
12
+ it "has length" do
13
+ @node.values.must_respond_to(:length)
14
+ end
15
+
16
+ it :calculates_length do
17
+ @node.clear_values!
18
+ @node.values.length.must_equal(0)
19
+ @node.add_values "2"
20
+ @node.values.length.must_equal(1)
21
+ @node.add_values "2"
22
+ @node.values.length.must_equal(2)
23
+ @node.add_values "FLEAS!"
24
+ @node.values.length.must_equal(3)
25
+ @node.add_values ["CAT","DOG","COW","CHIPMUNK"]
26
+ @node.values.length.must_equal(7)
27
+ end
28
+
29
+ it "clears history" do
30
+ @node.add_values ["CLAM", "FISH","SEAHORSE","AQUAMAN","WET TIGER"]
31
+ @node.values.length.must_equal(5)
32
+ @node.clear_values!
33
+ @node.values.length.must_equal(0)
34
+ end
35
+
36
+ it "accepts _insert_value" do
37
+ @node._insert_value("SHOCK THE MONKEY",Time.now)
38
+ @node.values.length.must_equal(1)
39
+ end
40
+
41
+ it "accepts add_value" do
42
+ @node.must_respond_to(:"add_values")
43
+ end
44
+
45
+ it "accepts strings" do
46
+ @node.add_values "A"
47
+ @node.values.length.must_equal(1)
48
+ @node.add_values "B"
49
+ @node.values.length.must_equal(2)
50
+ @node.add_values "C"
51
+ @node.add_values "DDDD"
52
+ @node.add_values ["MY","DOG","HAS","FLEAS"]
53
+ end
54
+
55
+ it "only accepts strings" do
56
+ lambda {@node.add_values 10}.must_raise(ArgumentError)
57
+ lambda {@node.add_values 10.0}.must_raise(ArgumentError)
58
+ lambda {@node.add_values Object.new}.must_raise(ArgumentError)
59
+ lambda {@node.add_values nil}.must_raise(ArgumentError)
60
+ lambda {@node.add_values ["MY",:DOG,:HAS,:FLEAS]}.must_raise(ArgumentError)
61
+ end
62
+
63
+ it "has last()" do
64
+ @node.values.must_respond_to(:last)
65
+ end
66
+
67
+ it "remembers last value" do
68
+ @node.add_values "ALL"
69
+ @node.values.last.value.must_equal("ALL")
70
+ @node.add_values "GOOD"
71
+ @node.values.last.value.must_equal("GOOD")
72
+ @node.add_values "BOYS"
73
+ @node.values.last.value.must_equal("BOYS")
74
+ @node.add_values ["GO","TO","THE","FAIR"]
75
+ @node.values.last.value.must_equal("FAIR")
76
+ end
77
+
78
+ it "returns ordinal last" do
79
+ @node.add_values ("a".."z").to_a
80
+ @node.values.last(5).length.must_equal(5)
81
+ end
82
+
83
+ it :does_range do
84
+ @node.must_respond_to(:values_range)
85
+
86
+ ts = Time.now
87
+ @node._insert_value('0',ts-1000)
88
+ @node._insert_value('1',ts-1000)
89
+ @node._insert_value('2',ts-1000)
90
+ @node._insert_value('3',ts-1000)
91
+ @node._insert_value('4',ts-1000)
92
+ @node._insert_value('5',ts-800)
93
+ @node._insert_value('6',ts-800)
94
+ @node._insert_value('7',ts-800)
95
+ @node._insert_value('8',ts-200)
96
+ @node._insert_value('9',ts-10)
97
+ @node._insert_value('10',ts-5)
98
+ @node.values_range(ts-1001,ts).length.must_equal 11
99
+ @node.values_range(ts-801,ts).length.must_equal 6
100
+ @node.values_range(ts-201,ts).length.must_equal 3
101
+ @node.values_range(ts-11,ts).length.must_equal 2
102
+ @node.values_range(ts-6,ts).length.must_equal 1
103
+ @node.values_range(ts-201,ts-11).length.must_equal 1
104
+ @node.values_range(ts-1001,ts-990).length.must_equal 5
105
+
106
+ @node._insert_value('0',ts-100)
107
+ @node.values_range(ts-201,ts).length.must_equal 4
108
+ end
109
+
110
+ it "does since" do
111
+ ts = Time.now
112
+ @node.must_respond_to(:values_since)
113
+ @node._insert_value('0',ts-1000)
114
+ @node._insert_value('7',ts-800)
115
+ @node._insert_value('8',ts-200)
116
+ @node._insert_value("10",ts-5)
117
+ @node.values_since(ts-1001).length.must_equal(4)
118
+ @node.values_since(ts-301).length.must_equal(2)
119
+ end
120
+
121
+ it "handles serialized data" do
122
+ serial = (1..100).collect{|x|"X" * (100)}.to_json
123
+ @node.add_values serial
124
+ last = @node.values.last
125
+ ary = JSON.parse(last.value.to_s)
126
+ ary.length.must_equal 100
127
+ ary[-1].must_equal ("X" * 100)
128
+ end
129
+
130
+ end
data/test/schema.rb CHANGED
@@ -36,6 +36,19 @@ ActiveRecord::Schema.define(version: 0) do
36
36
 
37
37
  add_index "chawk_points", ["node_id"], name: "index_chawk_points_node"
38
38
 
39
+ create_table "chawk_ranges", force: true do |t|
40
+ t.string "subkey"
41
+ t.integer "parent_node_id"
42
+ t.integer "data_node_id"
43
+ t.float "start_ts"
44
+ t.float "stop_ts"
45
+ t.integer "beats"
46
+ t.integer "default"
47
+ t.datetime "expires"
48
+ t.datetime "created_at"
49
+ t.datetime "updated_at"
50
+ end
51
+
39
52
  create_table "chawk_relations", force: true do |t|
40
53
  t.boolean "admin", default: false
41
54
  t.boolean "read", default: false
@@ -47,6 +60,16 @@ ActiveRecord::Schema.define(version: 0) do
47
60
  add_index "chawk_relations", ["agent_id"], name: "index_chawk_relations_agent"
48
61
  add_index "chawk_relations", ["node_id"], name: "index_chawk_relations_node"
49
62
 
63
+ create_table "chawk_usage_records", force: true do |t|
64
+ t.integer "agent_id"
65
+ t.integer "node_id"
66
+ t.string "description"
67
+ t.float "time"
68
+ t.float "space"
69
+ t.datetime "created_at"
70
+ t.datetime "updated_at"
71
+ end
72
+
50
73
  create_table "chawk_values", force: true do |t|
51
74
  t.float "observed_at"
52
75
  t.datetime "recorded_at"
data/test/test_helper.rb CHANGED
@@ -1,4 +1,9 @@
1
+ # require 'pp'
2
+ # require 'pry'
3
+ # require 'pry-stack_explorer'
4
+ # require 'pry-debugger'
1
5
  require 'simplecov'
6
+
2
7
  SimpleCov.start do
3
8
  add_filter "/test/"
4
9
  end
@@ -18,7 +23,7 @@ ARGV.clear
18
23
  ENV["CHAWK_DEBUG"] ? debug_level=ENV["CHAWK_DEBUG"] : debug_level=:info
19
24
 
20
25
  #if ENV["TEST_DATABASE_LOG"]
21
- # ActiveRecord::Base.logger = Logger.new(STDOUT)
26
+ # ActiveRecord::Base.logger = Logger.new(STDOUT)
22
27
  #end
23
28
 
24
29
  require 'active_record'
@@ -29,7 +34,9 @@ else
29
34
  ActiveRecord::Base.establish_connection adapter: "sqlite3", database: ":memory:"
30
35
  ActiveRecord::Migration.verbose = false
31
36
  require "chawk/migration"
32
- CreateChawkBase.migrate :up
37
+ CreateChawkBase.migrate :up
38
+ CreateChawkBase.migrate :down # I'm surprised what I'll do to increase coverage.
39
+ CreateChawkBase.migrate :up
33
40
  File.open('./test/schema.rb', "w") do |file|
34
41
  ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, file)
35
42
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chawk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Scott Russell
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-24 00:00:00.000000000 Z
11
+ date: 2014-03-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -52,20 +52,6 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: minitest
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - '='
60
- - !ruby/object:Gem::Version
61
- version: 5.3.1
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - '='
67
- - !ruby/object:Gem::Version
68
- version: 5.3.1
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: rack-test
71
57
  requirement: !ruby/object:Gem::Requirement
@@ -158,11 +144,14 @@ files:
158
144
  - lib/chawk/migration.rb
159
145
  - lib/chawk/version.rb
160
146
  - lib/models.rb
147
+ - lib/node.rb
161
148
  - lib/quantizer.rb
149
+ - lib/range.rb
162
150
  - test/lib/addr_test.rb
163
151
  - test/lib/failed_node_test.rb
164
152
  - test/lib/paddr_test.rb
165
153
  - test/lib/quantizer_test.rb
154
+ - test/lib/range_test.rb
166
155
  - test/lib/vaddr_test.rb
167
156
  - test/schema.rb
168
157
  - test/test_helper.rb
@@ -195,6 +184,7 @@ test_files:
195
184
  - test/lib/failed_node_test.rb
196
185
  - test/lib/paddr_test.rb
197
186
  - test/lib/quantizer_test.rb
187
+ - test/lib/range_test.rb
198
188
  - test/lib/vaddr_test.rb
199
189
  - test/schema.rb
200
190
  - test/test_helper.rb