chawk 0.1.13 → 0.1.14

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 514c9371fbb400d5b4ac66ab41607f90ccf0fff0
4
- data.tar.gz: f9f124f906aa007c2f30185ec4a8110f5084b955
3
+ metadata.gz: 07b68b72e9e6307500b9c964ccbf25761159cb01
4
+ data.tar.gz: 02061cf62e12d325848cc585a3ce674f4578355e
5
5
  SHA512:
6
- metadata.gz: 5eb9123cdc07938a34d36dd6771602ee7968f3ae1570c59074ea1b85317014deee5643fb80000ae008c5aa0d56214632543b80ed4255001c0255587ad08472b9
7
- data.tar.gz: eb256ec168c12ac0215b241be7738051eaca7debf9f1f532690ca8b3fda1099206033b953964f3b989395c3a3ce08024e02586b034c1c356775727f39cb5c9ed
6
+ metadata.gz: 983b276e02e0fe72ad6ff06b16416dfcf5a9d2d5f6dbba8434718b9c980e660e53cac8b5135a8cd5e3111c954969e8dd07510f00bd338e9f0fb152c2cc5ac466
7
+ data.tar.gz: 9658138baf8ac3f6c21c51512d19b22ff2519ef57fd55eb5b05f7bf2a1c1fe48ae60410425615d6fb20a504d8b51f773cc46caff365885c21a4ccd2891234f54
data/chawk.gemspec CHANGED
@@ -18,6 +18,7 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
+ #spec.add_runtime_dependency "dm-postgres-adapter","1.2.0"
21
22
  spec.add_runtime_dependency "data_mapper", "1.2.0"
22
23
 
23
24
  spec.add_development_dependency "bundler", "~> 1.5"
@@ -26,5 +27,6 @@ Gem::Specification.new do |spec|
26
27
  spec.add_development_dependency('rack-test', "0.6.2")
27
28
  spec.add_development_dependency('json', "1.8.1")
28
29
  spec.add_development_dependency('simplecov')
30
+ spec.add_development_dependency "dm-sqlite-adapter", "1.2.0"
29
31
 
30
32
  end
data/lib/addr.rb CHANGED
@@ -47,7 +47,6 @@ module Chawk
47
47
  Chawk::Paddr.new(self)
48
48
  end
49
49
 
50
-
51
50
  # Sets public read flag for this address
52
51
  # @param value [Boolean] true if public reading is allowed, false if it is not.
53
52
  def public_read=(value)
data/lib/chawk.rb CHANGED
@@ -32,6 +32,19 @@ module Chawk
32
32
 
33
33
  end
34
34
 
35
+ # @param agent [Chawk::Agent] the agent whose permission will be used for this request
36
+ # @param data [Hash] the bulk data to be inserted
37
+ # Insert data for multiple addresses at once. Format should be a hash of valid data sets keyed by address
38
+ # example: {'key1'=>[1,2,3,4,5],'key2'=>[6,7,8,9]}
39
+ def self.bulk_add_points(agent, data)
40
+ data.keys.each do |key|
41
+ dset = data[key]
42
+ daddr = addr(agent,key)
43
+ daddr.points << dset
44
+ end
45
+ end
46
+
47
+
35
48
  # Deletes all data in the database. Very dangerous. Backup often!
36
49
  def self.clear_all_data!
37
50
  if @@ready.nil?
data/lib/chawk/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module Chawk
2
2
  # The current version of Chawk
3
- VERSION = "0.1.13"
3
+ VERSION = "0.1.14"
4
4
  end
data/lib/store.rb CHANGED
@@ -33,25 +33,43 @@ module Chawk
33
33
  coll.length
34
34
  end
35
35
 
36
+ def insert_recognizer(item, dt, options={})
37
+ case
38
+
39
+ when item.is_a?(stored_type)
40
+ _insert item,dt, options
41
+ when item.is_a?(Array)
42
+ if item.length == 2 && item[0].is_a?(stored_type) #value, timestamp
43
+ _insert item[0],item[1], options
44
+ else
45
+ raise ArgumentError, "Array Items must be in [value,timestamp] format. #{item.inspect}"
46
+ end
47
+ when item.is_a?(Hash)
48
+ if item['v'] && item['v'].is_a?(stored_type)
49
+ if item['t']
50
+ _insert item['v'],item['t'], options
51
+ else
52
+ _insert item['v'],dt, options
53
+ end
54
+ else
55
+ raise ArgumentError, "Hash must have 'v' key set to proper type.. #{item.inspect}"
56
+ end
57
+ else
58
+ raise ArgumentError, "Can't recognize format of data item. #{item.inspect}"
59
+ end
60
+ end
61
+
36
62
  # @param args [Object, Array of Objects]
37
63
  # @param options [Hash] You can also pass in :meta and :timestamp
38
64
  # Add an item or an array of items (one at a time) to the datastore.
39
65
  def <<(args,options={})
40
- dt = Time.now
66
+ options[:observed_at] ? dt = options[:observed_at] : dt = Time.now
41
67
  if args.is_a?(Array)
42
68
  args.each do |arg|
43
- if arg.is_a?(stored_type)
44
- self._insert(arg,dt,options)
45
- else
46
- raise ArgumentError
47
- end
69
+ insert_recognizer(arg, dt, options)
48
70
  end
49
71
  else
50
- if args.is_a?(stored_type)
51
- _insert(args,dt,options)
52
- else
53
- raise ArgumentError
54
- end
72
+ insert_recognizer(args, dt, options)
55
73
  end
56
74
  self.last
57
75
  end
@@ -50,7 +50,12 @@ describe Chawk::Paddr do
50
50
  @addr.points.length.must_equal(2)
51
51
  @addr.points << 190
52
52
  @addr.points << 10002
53
- @addr.points << [10,0,190,100]
53
+ @addr.points << [10,0,190,100]
54
+ dt = Time.now.to_f
55
+ @addr.points << [[10,dt],[0,dt],[190,dt],[100,dt]]
56
+ @addr.points << [{"v"=>10},{"v"=>0},{"v"=>190},{"v"=>100,"t"=>dt}]
57
+ @addr.points << [{"v"=>10,"t"=>dt},{"v"=>0,"t"=>dt},{"v"=>190,"t"=>dt},{"v"=>100,"t"=>dt}]
58
+ @addr.points << [{"t"=>dt,"v"=>10},{"v"=>0,"t"=>dt},{"t"=>dt,"v"=>190},{"v"=>100,"t"=>dt}]
54
59
  end
55
60
 
56
61
  it "does +" do
@@ -85,12 +90,25 @@ describe Chawk::Paddr do
85
90
  lambda {@addr.points - nil}.must_raise(ArgumentError)
86
91
  end
87
92
 
88
- it "only accepts integers" do
93
+ it "only accepts integers in proper formats" do
89
94
  lambda {@addr.points << 10.0}.must_raise(ArgumentError)
90
95
  lambda {@addr.points << nil}.must_raise(ArgumentError)
91
96
  lambda {@addr.points << [10.0,:x]}.must_raise(ArgumentError)
97
+ lambda {@addr.points << [[10,10,10],[10,10,20]]}.must_raise(ArgumentError)
98
+ dt = Time.now.to_f
99
+ lambda {@addr.points << [{"x"=>10,"t"=>dt},{"x"=>0,"t"=>dt}]}.must_raise(ArgumentError)
92
100
  end
93
101
 
102
+ it "does bulk add points" do
103
+ dt = Time.now.to_f
104
+ Chawk.bulk_add_points(@agent, {"xxx"=>[1,2,3,4,5,6], "yyy"=>[[10,dt],[10,dt]], "zzz"=>[{"t"=>dt,"v"=>10},{"v"=>0,"t"=>dt}]})
105
+
106
+ Chawk.addr(@agent,"xxx").points.length.must_equal 6
107
+ Chawk.addr(@agent,"zzz").points.length.must_equal 2
108
+ Chawk.addr(@agent,"zzz").points.last.value.must_equal 0
109
+
110
+ end
111
+
94
112
  it "has last()" do
95
113
  @addr.points.must_respond_to(:last)
96
114
  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.1.13
4
+ version: 0.1.14
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-15 00:00:00.000000000 Z
11
+ date: 2014-03-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: data_mapper
@@ -28,28 +28,28 @@ dependencies:
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '1.5'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.5'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
@@ -98,16 +98,30 @@ dependencies:
98
98
  name: simplecov
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - '>='
101
+ - - ">="
102
102
  - !ruby/object:Gem::Version
103
103
  version: '0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - '>='
108
+ - - ">="
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: dm-sqlite-adapter
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '='
116
+ - !ruby/object:Gem::Version
117
+ version: 1.2.0
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - '='
123
+ - !ruby/object:Gem::Version
124
+ version: 1.2.0
111
125
  description: A storage engine for time-series data. Eventually to include resampling,
112
126
  statistical and aggregate data management.
113
127
  email:
@@ -116,8 +130,8 @@ executables: []
116
130
  extensions: []
117
131
  extra_rdoc_files: []
118
132
  files:
119
- - .gitignore
120
- - .travis.yml
133
+ - ".gitignore"
134
+ - ".travis.yml"
121
135
  - Gemfile
122
136
  - LICENSE.txt
123
137
  - README.md
@@ -147,12 +161,12 @@ require_paths:
147
161
  - lib
148
162
  required_ruby_version: !ruby/object:Gem::Requirement
149
163
  requirements:
150
- - - '>='
164
+ - - ">="
151
165
  - !ruby/object:Gem::Version
152
166
  version: '0'
153
167
  required_rubygems_version: !ruby/object:Gem::Requirement
154
168
  requirements:
155
- - - '>='
169
+ - - ">="
156
170
  - !ruby/object:Gem::Version
157
171
  version: '0'
158
172
  requirements: []
@@ -167,4 +181,3 @@ test_files:
167
181
  - test/lib/quantizer_test.rb
168
182
  - test/lib/vaddr_test.rb
169
183
  - test/test_helper.rb
170
- has_rdoc: