errand 0.8.0 → 0.8.1

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,3 +1,6 @@
1
+ 0.8.1 - 2014/02/21
2
+ - Feature: Add support for retrieving the first available metric in an RRD - @jessereynolds
3
+
1
4
  0.8.0 - 2013/02/23
2
- - Chore: switched from using librrd-ruby to rrd-ffi, to be more portable
5
+ - Chore: switched from using librrd-ruby to rrd-ffi, to be more portable - @auxesis
3
6
 
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- errand (0.8.0)
4
+ errand (0.8.1)
5
5
  rrd-ffi (= 0.2.13)
6
6
 
7
7
  GEM
@@ -12,9 +12,9 @@ GEM
12
12
  multi_json (~> 1.0)
13
13
  colorize (0.5.8)
14
14
  diff-lcs (1.1.3)
15
- ffi (1.4.0)
16
- i18n (0.6.1)
17
- multi_json (1.6.1)
15
+ ffi (1.9.3)
16
+ i18n (0.6.4)
17
+ multi_json (1.8.2)
18
18
  rake (0.8.7)
19
19
  rrd-ffi (0.2.13)
20
20
  activesupport
data/LICENCE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2011-2014 Lindsay Holmwood
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
18
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
19
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
20
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md CHANGED
@@ -1,100 +1,129 @@
1
- Errand
2
- ======
1
+ # Errand
3
2
 
4
- Errand provides Ruby bindings for RRD functions (via librrd), and a clear
5
- API for interacting with RRDs.
3
+ Errand provides Ruby bindings for RRD functions (via librrd), and a clear API for interacting with RRDs.
6
4
 
7
- Check under spec/ for usage examples.
5
+ ## Installing
8
6
 
9
- Using
10
- =====
7
+ Install Errand via RubyGems:
11
8
 
12
- To set up an RRD to work with (whether it exists or otherwise):
9
+ ```
10
+ gem install errand
11
+ ```
13
12
 
14
- @rrd = Errand.new(:filename => "data.rrd")
13
+ Or adding do your Gemfile:
14
+
15
+ ```
16
+ gem 'errand'
17
+ ```
18
+
19
+ ## Using
20
+
21
+ To start working with an RRD:
22
+
23
+ ``` ruby
24
+ @rrd = Errand.new(:filename => "data.rrd")
25
+ ```
26
+
27
+ This will either read an existing RRD, or stub out the bits to create a new one.
15
28
 
16
29
  To create an RRD:
17
30
 
18
- @rrd.create(:sources => [
19
- {:name => "Counter", :type => :counter, :heartbeat => 1800, :min => 0, :max => 4294967295}],
20
- :archives => [
21
- {:function => :average, :xff => 0.5, :steps => 1, :rows => 2400}])
31
+ ``` ruby
32
+ options = {
33
+ :sources => [
34
+ {
35
+ :name => "Counter",
36
+ :type => :counter,
37
+ :heartbeat => 1800,
38
+ :min => 0,
39
+ :max => 4294967295
40
+ }
41
+ ],
42
+ :archives => [
43
+ {
44
+ :function => :average,
45
+ :xff => 0.5,
46
+ :steps => 1,
47
+ :rows => 2400
48
+ }
49
+ ]
50
+ }
22
51
 
23
- To update said RRD:
52
+ @rrd.create(options)
53
+ ```
24
54
 
25
- @rrd.update(:sources => [{:name => "Counter", :value => 1}]
55
+ To update said RRD:
26
56
 
27
- To fetch that data:
57
+ ``` ruby
58
+ @rrd.update(:sources => [{:name => "Counter", :value => 1}]
59
+ ```
28
60
 
29
- @rrd.fetch # <= {:start => Time, :end => Time,
30
- :data => {"Counter" => [nil, nil, nil, 1]}
61
+ To fetch that data:
31
62
 
32
- Dependencies
33
- ============
63
+ ``` ruby
64
+ @rrd.fetch # <= {:start => Time, :end => Time,
65
+ :data => {"Counter" => [nil, nil, nil, 1]}
66
+ ```
34
67
 
35
- **Errand** requires RRDtool version 1.2 or later. Some RRD functions such
36
- as rrddump are only available with the latest RRDtool.
68
+ Check under `spec/` for more usage examples.
37
69
 
38
- Installation is standard. If you've installed the gem, you should be ready
39
- to go.
70
+ ## Developing
40
71
 
41
- Otherwise, simply run:
72
+ Clone the repository:
42
73
 
43
- ruby extconf.rb
44
- make
45
- make install
74
+ ```
75
+ git clone git@github.com:auxesis/errand.git
76
+ ```
46
77
 
47
- This should build a library named `rrd.so` in the current directory. If it
48
- doesn't, please report bugs at [http://github.com/eric/rubyrrdtool/issues](http://github.com/eric/rubyrrdtool/issues)!
78
+ Suck down all the dependencies:
49
79
 
50
- Building the gem
51
- ================
80
+ ``` bash
81
+ cd errand
82
+ bundle
83
+ ```
52
84
 
53
- Errand is managed by Jeweller, which generates the gemspec for you:
85
+ ### Dependencies
54
86
 
55
- rake gemspec
87
+ Errand requires RRDtool version 1.2 or later. Some RRD functions such
88
+ as rrddump are only available with the latest RRDtool.
56
89
 
57
- Once the gemspec is generated, build the gem:
90
+ Installation is standard. If you've installed the gem, you should be ready
91
+ to go.
58
92
 
59
- gem build errand.gemspec
93
+ Otherwise, simply run:
94
+
95
+ ``` bash
96
+ ruby extconf.rb
97
+ make
98
+ make install
99
+ ```
60
100
 
61
- Testing
62
- =======
101
+ This should build a library named `rrd.so` in the current directory. If it
102
+ doesn't, please report bugs at [http://github.com/eric/rubyrrdtool/issues](http://github.com/eric/rubyrrdtool/issues)!
63
103
 
64
- Testing is done with RSpec.
65
104
 
66
- To run tests:
105
+ ### Testing
67
106
 
68
- rake spec
107
+ Testing is done with RSpec.
69
108
 
70
- Todo
71
- ====
109
+ To run tests:
72
110
 
73
- * Extend documentation with examples
111
+ ``` bash
112
+ rake spec
113
+ ```
74
114
 
115
+ ### Building the gem
75
116
 
76
- License
77
- =======
117
+ Build the gem:
78
118
 
79
- (the MIT license)
119
+ ``` bash
120
+ rake build
121
+ ```
80
122
 
81
- Copyright (c) 2006
123
+ ## TODO
82
124
 
83
- Permission is hereby granted, free of charge, to any person obtaining
84
- a copy of this software and associated documentation files (the
85
- "Software"), to deal in the Software without restriction, including
86
- without limitation the rights to use, copy, modify, merge, publish,
87
- distribute, sublicense, and/or sell copies of the Software, and to
88
- permit persons to whom the Software is furnished to do so, subject to
89
- the following conditions:
125
+ * Extend documentation with more examples
90
126
 
91
- The above copyright notice and this permission notice shall be
92
- included in all copies or substantial portions of the Software.
127
+ ## License
93
128
 
94
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
95
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
96
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
97
- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
98
- CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
99
- TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
100
- SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
129
+ Errand is distributed under the MIT license.
@@ -19,6 +19,10 @@ class Errand
19
19
  @backend.dump(@filename, output)
20
20
  end
21
21
 
22
+ def first
23
+ @backend.first(@filename)
24
+ end
25
+
22
26
  def last
23
27
  @backend.last(@filename)
24
28
  end
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  class Errand
4
- VERSION = "0.8.0"
4
+ VERSION = "0.8.1"
5
5
  end
@@ -14,6 +14,19 @@ describe Errand do
14
14
  @rrd = Errand.new(:filename => File.join(@tmpdir, 'test.rrd'))
15
15
  end
16
16
 
17
+ def create_simple_test_rrd(time)
18
+ @rrd.create(:start => time - 1, :step => 1,
19
+ :sources => [
20
+ {:name => "Sum", :type => :gauge, :heartbeat => 1800, :min => 0, :max => 4294967295},
21
+ {:name => "Total", :type => :gauge, :heartbeat => 1800, :min => 0, :max => 'U'} ],
22
+ :archives => [
23
+ {:function => :average, :xff => 0.5, :steps => 1, :rows => 2400}]).should be_true
24
+
25
+ @rrd.update(:sources => [
26
+ {:name => "Sum", :time => time, :value => 1},
27
+ {:name => "Total", :time => time, :value => 30}]).should be_true
28
+ end
29
+
17
30
  it "should create data" do
18
31
 
19
32
  @rrd.create(:start => Time.now.to_i - 1, :step => 300,
@@ -125,7 +138,18 @@ describe Errand do
125
138
  end
126
139
  end
127
140
 
128
- it "should return timestamp of first value"
129
- it "should return timestamp of last value"
141
+ it "should return timestamp of first value" do
142
+ time = Time.now.to_i
143
+ create_simple_test_rrd(time)
144
+ # FIXME: the first update time is coming back as T minus 40 minutes, don't know why
145
+ #@rrd.first.should eq(time - 1)
146
+ @rrd.first.should be_a(Integer)
147
+ end
148
+
149
+ it "should return timestamp of last value" do
150
+ time = Time.now.to_i
151
+ create_simple_test_rrd(time)
152
+ @rrd.last.should eq(time)
153
+ end
130
154
 
131
155
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: errand
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.8.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-02-24 00:00:00.000000000 Z
12
+ date: 2014-02-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rrd-ffi
@@ -90,6 +90,7 @@ files:
90
90
  - CHANGELOG.md
91
91
  - Gemfile
92
92
  - Gemfile.lock
93
+ - LICENCE
93
94
  - README.md
94
95
  - Rakefile
95
96
  - VERSION
@@ -123,4 +124,7 @@ rubygems_version: 1.8.23
123
124
  signing_key:
124
125
  specification_version: 3
125
126
  summary: Ruby language binding for RRD tool version 1.2+
126
- test_files: []
127
+ test_files:
128
+ - spec/errand_spec.rb
129
+ - spec/spec.opts
130
+ - test/test_rrdtool.rb