graphite-metric 0.1.0 → 0.2.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.
- data/README.md +120 -70
- data/graphite-metric.gemspec +6 -6
- data/lib/graphite-metric/raw.rb +53 -0
- data/lib/graphite-metric/version.rb +1 -1
- data/lib/graphite-metric.rb +1 -2
- data/test/fixtures/multiple_metrics.txt +2 -0
- data/test/fixtures/single_metric.txt +1 -0
- data/test/graphite-metric/raw_test.rb +38 -0
- data/test/test_helper.rb +98 -2
- metadata +49 -23
- data/test/graphite-metric-test.rb +0 -8
data/README.md
CHANGED
@@ -2,96 +2,143 @@ If you're sending data to Graphite from Ruby, GraphiteMetric will help you get
|
|
2
2
|
it in the right format. For now, it only supports the plaintext protocol, but
|
3
3
|
pickle should be relatively easy to add. Contributions are welcome.
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
5
|
+
If you're loading data from graphite-web, you can use the raw protocol
|
6
|
+
and apply a few transformations before consuming it.
|
7
|
+
|
8
|
+
At [GoSquared] [1], we're using graphite extensively. Some services use
|
9
|
+
it directly via TCP, others via UDP (direct or via aggregators such as
|
10
|
+
statsd). When metrics delivery is critical, we push them into our
|
11
|
+
RabbitMQ cluster. Carbon agent supports AMQP natively.
|
10
12
|
|
11
13
|
## USAGE
|
12
14
|
|
13
|
-
|
15
|
+
### GraphiteMetric::Plaintext
|
16
|
+
|
17
|
+
#### From values
|
18
|
+
|
19
|
+
```ruby
|
20
|
+
graphite_metric = GraphiteMetric::Plaintext.new("visitors", 2)
|
21
|
+
|
22
|
+
graphite_metric.key
|
23
|
+
=> "visitors"
|
24
|
+
|
25
|
+
graphite_metric.value
|
26
|
+
=> 2
|
27
|
+
|
28
|
+
graphite_metric.timestamp
|
29
|
+
=> 1331043095
|
30
|
+
|
31
|
+
graphite_metric.to_s
|
32
|
+
=> "visitors 2 1331043095"
|
33
|
+
|
34
|
+
"#{graphite_metric}"
|
35
|
+
=> "visitors 2 1331043095"
|
36
|
+
```
|
37
|
+
|
38
|
+
#### From hash
|
39
|
+
|
40
|
+
```ruby
|
41
|
+
gmp = GraphiteMetric::Plaintext.from_hash(
|
42
|
+
:key => "visitors",
|
43
|
+
:value => 2,
|
44
|
+
:timestamp => Time.now.to_i
|
45
|
+
)
|
14
46
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
Enumerable,
|
19
|
-
Object,
|
20
|
-
TestHelpers,
|
21
|
-
MiniTest::Expectations,
|
22
|
-
PP::ObjectMixin,
|
23
|
-
Kernel,
|
24
|
-
BasicObject]
|
47
|
+
"#{gmp}"
|
48
|
+
=> "visitors 2 1331039853"
|
49
|
+
```
|
25
50
|
|
26
|
-
|
51
|
+
#### From array (of hashes)
|
27
52
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
53
|
+
```ruby
|
54
|
+
gmps = GraphiteMetric::Plaintext.from_array([
|
55
|
+
{
|
56
|
+
:key => "visitors",
|
57
|
+
:value => 1,
|
58
|
+
:timestamp => Time.now.to_i
|
59
|
+
},
|
60
|
+
{
|
61
|
+
:key => "visitors",
|
62
|
+
:value => 5
|
63
|
+
}
|
64
|
+
]
|
33
65
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
=> 2
|
38
|
-
graphite_metric.timestamp
|
39
|
-
=> 1331043095
|
66
|
+
gmps.map(&:to_s)
|
67
|
+
["visitors 1 1331039914", "visitors 5 1331043514"]
|
68
|
+
```
|
40
69
|
|
41
|
-
|
42
|
-
=> "visitors 2 1331043095"
|
70
|
+
### GraphiteMetric::Raw
|
43
71
|
|
44
|
-
|
45
|
-
|
72
|
+
It supports single as well as multiple raw metrics (multiple targets).
|
73
|
+
For simplicity's, all examples will use single metrics:
|
46
74
|
|
47
|
-
|
48
|
-
|
75
|
+
```ruby
|
76
|
+
gmr = GraphiteMetric::Raw.new("my.metric,1336559725,1336559845,60|34.999,35.10,33.0")
|
49
77
|
|
50
|
-
|
78
|
+
gmr.metrics
|
79
|
+
=> [{:key=>"my.metric", :timestamp=>1336559725, :value=>34.999},
|
80
|
+
{:key=>"my.metric", :timestamp=>1336559785, :value=>35.1},
|
81
|
+
{:key=>"my.metric", :timestamp=>1336559845, :value=>33.0}]
|
82
|
+
```
|
51
83
|
|
52
|
-
|
53
|
-
:key => "visitors",
|
54
|
-
:value => 2,
|
55
|
-
:timestamp => Time.now.to_i
|
56
|
-
)
|
57
|
-
=> #<struct GraphiteMetric::Plaintext
|
58
|
-
key="visitors",
|
59
|
-
value=2,
|
60
|
-
timestamp=1331039853>
|
84
|
+
#### Round all values
|
61
85
|
|
62
|
-
|
63
|
-
|
86
|
+
```ruby
|
87
|
+
gmr.round
|
88
|
+
=> #<GraphiteMetric::Raw:0x00000104054fb0
|
89
|
+
@metrics=
|
90
|
+
[{:key=>"my.metric", :timestamp=>1336559725, :value=>35},
|
91
|
+
{:key=>"my.metric", :timestamp=>1336559785, :value=>35},
|
92
|
+
{:key=>"my.metric", :timestamp=>1336559845, :value=>33}],
|
93
|
+
@raw="my.metric,1336559725,1336559845,60|34.999,35.10,33.0\n">
|
94
|
+
```
|
64
95
|
|
65
|
-
|
96
|
+
#### Timeshift timestamps
|
66
97
|
|
67
|
-
|
68
|
-
|
69
|
-
:key => "visitors",
|
70
|
-
:value => 1,
|
71
|
-
:timestamp => Time.now.to_i
|
72
|
-
},
|
73
|
-
{
|
74
|
-
:key => "visitors",
|
75
|
-
:value => 5
|
76
|
-
}
|
77
|
-
]
|
78
|
-
=> [#<struct GraphiteMetric::Plaintext
|
79
|
-
key="visitors",
|
80
|
-
value=1,
|
81
|
-
timestamp=1331039914>,
|
82
|
-
#<struct GraphiteMetric::Plaintext
|
83
|
-
key="visitors",
|
84
|
-
value=5,
|
85
|
-
timestamp=1331043514>]
|
98
|
+
[Graphite 0.9.9 didn't support positive timeShifts] [2]. Until 0.9.10 is
|
99
|
+
released:
|
86
100
|
|
87
|
-
|
88
|
-
|
101
|
+
```ruby
|
102
|
+
gmr.timeshift(3600)
|
103
|
+
=> #<GraphiteMetric::Raw:0x00000104054fb0
|
104
|
+
@metrics=
|
105
|
+
[{:key=>"my.metric", :timestamp=>1336563325, :value=>35},
|
106
|
+
{:key=>"my.metric", :timestamp=>1336563385, :value=>35},
|
107
|
+
{:key=>"my.metric", :timestamp=>1336563445, :value=>33}],
|
108
|
+
@raw="my.metric,1336559725,1336559845,60|34.999,35.10,33.0\n">
|
109
|
+
```
|
89
110
|
|
111
|
+
#### Group metrics by key
|
90
112
|
|
113
|
+
```ruby
|
114
|
+
gmr.grouped_metrics
|
115
|
+
=> {"my.metric"=>
|
116
|
+
[{:timestamp=>1336563325, :value=>35},
|
117
|
+
{:timestamp=>1336563385, :value=>35},
|
118
|
+
{:timestamp=>1336563445, :value=>33}]}
|
119
|
+
```
|
91
120
|
|
92
|
-
|
121
|
+
#### Reset metrics
|
93
122
|
|
94
|
-
|
123
|
+
Both timeshifting and rounding modify the internal @metrics. If you need
|
124
|
+
to reset them back to their original state:
|
125
|
+
|
126
|
+
```ruby
|
127
|
+
gmr.populate_from_raw
|
128
|
+
=> #<GraphiteMetric::Raw:0x00000101fc0ab0
|
129
|
+
@metrics=
|
130
|
+
[{:key=>"my.metric", :timestamp=>1336559725, :value=>34.999},
|
131
|
+
{:key=>"my.metric", :timestamp=>1336559785, :value=>35.1},
|
132
|
+
{:key=>"my.metric", :timestamp=>1336559845, :value=>33.0}],
|
133
|
+
@raw="my.metric,1336559725,1336559845,60|34.999,35.10,33.0\n">
|
134
|
+
```
|
135
|
+
|
136
|
+
|
137
|
+
|
138
|
+
## Ruby 1.8
|
139
|
+
|
140
|
+
All our development and production systems run 1.9. We have no intention
|
141
|
+
of making this 1.8 compatible.
|
95
142
|
|
96
143
|
|
97
144
|
|
@@ -118,3 +165,6 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
118
165
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
119
166
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
120
167
|
SOFTWARE.
|
168
|
+
|
169
|
+
[1]: http://www.gosquared.com/
|
170
|
+
[2]: https://bugs.launchpad.net/graphite/+bug/903675
|
data/graphite-metric.gemspec
CHANGED
@@ -8,8 +8,8 @@ Gem::Specification.new do |s|
|
|
8
8
|
s.authors = ["Gerhard Lazu"]
|
9
9
|
s.email = ["gerhard@lazu.co.uk"]
|
10
10
|
s.homepage = ""
|
11
|
-
s.summary = %q{Generates strings that graphite understands}
|
12
|
-
s.description = %q{Converts hashes and arrays into graphite plaintext format}
|
11
|
+
s.summary = %q{Generates strings that graphite understands. Loads raw graphite data.}
|
12
|
+
s.description = %q{Converts hashes and arrays into graphite plaintext format. Creates hashes from graphite raw format.}
|
13
13
|
|
14
14
|
#s.rubyforge_project = "graphite-metric"
|
15
15
|
|
@@ -18,8 +18,8 @@ Gem::Specification.new do |s|
|
|
18
18
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
19
|
s.require_paths = ["lib"]
|
20
20
|
|
21
|
-
s.add_development_dependency 'guard-minitest'
|
22
|
-
s.add_development_dependency 'minitest'
|
23
|
-
s.add_development_dependency 'pry'
|
24
|
-
s.add_development_dependency 'turn'
|
21
|
+
s.add_development_dependency 'guard-minitest', '~> 0.5'
|
22
|
+
s.add_development_dependency 'minitest', '~> 3.0'
|
23
|
+
s.add_development_dependency 'pry', '~> 0.9'
|
24
|
+
s.add_development_dependency 'turn', '~> 0.9'
|
25
25
|
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
module GraphiteMetric
|
2
|
+
class Raw
|
3
|
+
attr_reader :raw, :metrics
|
4
|
+
|
5
|
+
def initialize(raw)
|
6
|
+
@raw = raw
|
7
|
+
populate_from_raw
|
8
|
+
end
|
9
|
+
|
10
|
+
def timeshift(offset)
|
11
|
+
@metrics.each { |metric| metric[:timestamp] += offset }
|
12
|
+
self
|
13
|
+
end
|
14
|
+
|
15
|
+
def round
|
16
|
+
@metrics.each { |metric| metric[:value] = metric[:value].round }
|
17
|
+
self
|
18
|
+
end
|
19
|
+
|
20
|
+
# Cannot be chained unlike the previous methods because the
|
21
|
+
# @metrics structure gets changed. Not memoizing on purpose, the
|
22
|
+
# other methods might modify @metrics.
|
23
|
+
def grouped_metrics
|
24
|
+
@metrics.inject({}) do |result, metric|
|
25
|
+
(result[metric[:key]] ||= []) << {
|
26
|
+
:timestamp => metric[:timestamp],
|
27
|
+
:value => metric[:value]
|
28
|
+
}
|
29
|
+
result
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def populate_from_raw
|
34
|
+
@metrics = []
|
35
|
+
@raw.split("\n").each do |raw|
|
36
|
+
raw_headers, raw_metrics = raw.split("|")
|
37
|
+
|
38
|
+
metric_name, from, to, step = raw_headers.split(",")
|
39
|
+
|
40
|
+
current_step = 0
|
41
|
+
raw_metrics.split(",").each do |raw_metric|
|
42
|
+
@metrics << {
|
43
|
+
:key => metric_name,
|
44
|
+
:timestamp => from.to_i + current_step,
|
45
|
+
:value => Float(raw_metric)
|
46
|
+
}
|
47
|
+
current_step += step.to_i
|
48
|
+
end
|
49
|
+
end
|
50
|
+
self
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
data/lib/graphite-metric.rb
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
my.metric,1336559725,1336559845,60|34.999,35.10,33.0
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require_relative '../test_helper'
|
2
|
+
require 'graphite-metric/raw'
|
3
|
+
|
4
|
+
include TestHelpers
|
5
|
+
|
6
|
+
module GraphiteMetric
|
7
|
+
describe Raw do
|
8
|
+
it "converts raw graphite single metric to hashes" do
|
9
|
+
gmr = GraphiteMetric::Raw.new(single_metric_raw)
|
10
|
+
gmr.metrics.must_equal single_metric_converted
|
11
|
+
end
|
12
|
+
|
13
|
+
it "converts raw graphite multiple metrics to hashes" do
|
14
|
+
gmr = GraphiteMetric::Raw.new(multiple_metrics_raw)
|
15
|
+
gmr.metrics.must_equal multiple_metrics_converted
|
16
|
+
end
|
17
|
+
|
18
|
+
it "timeshifts with a positive offset" do
|
19
|
+
gmr = GraphiteMetric::Raw.new(single_metric_raw)
|
20
|
+
gmr.timeshift(3600).metrics.first[:timestamp].must_equal 1336559725 + 3600
|
21
|
+
end
|
22
|
+
|
23
|
+
it "timeshifts with a negatice offset" do
|
24
|
+
gmr = GraphiteMetric::Raw.new(single_metric_raw)
|
25
|
+
gmr.timeshift(-3600).metrics.first[:timestamp].must_equal 1336559725 - 3600
|
26
|
+
end
|
27
|
+
|
28
|
+
it "rounds values" do
|
29
|
+
gmr = GraphiteMetric::Raw.new(single_metric_raw)
|
30
|
+
gmr.round.metrics.first[:value].must_equal 35
|
31
|
+
end
|
32
|
+
|
33
|
+
it "groups metrics by keys" do
|
34
|
+
gmr = GraphiteMetric::Raw.new(multiple_metrics_raw)
|
35
|
+
gmr.grouped_metrics.must_equal multiple_metrics_grouped
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
data/test/test_helper.rb
CHANGED
@@ -1,10 +1,106 @@
|
|
1
|
-
require 'bundler'
|
2
|
-
Bundler.setup
|
3
1
|
require 'pry'
|
4
2
|
require 'turn/autorun'
|
5
3
|
|
4
|
+
BASE_PATH = File.expand_path('../../', __FILE__)
|
5
|
+
|
6
6
|
module TestHelpers
|
7
7
|
def utc_now
|
8
8
|
Time.now.utc.to_i
|
9
9
|
end
|
10
|
+
|
11
|
+
def single_metric_raw
|
12
|
+
@single_metric_raw ||= File.read("#{BASE_PATH}/test/fixtures/single_metric.txt")
|
13
|
+
end
|
14
|
+
|
15
|
+
def single_metric_converted
|
16
|
+
[
|
17
|
+
{
|
18
|
+
:key => "my.metric",
|
19
|
+
:timestamp => 1336559725,
|
20
|
+
:value => 34.999
|
21
|
+
},
|
22
|
+
{
|
23
|
+
:key => "my.metric",
|
24
|
+
:timestamp => 1336559785,
|
25
|
+
:value => 35.10
|
26
|
+
},
|
27
|
+
{
|
28
|
+
:key => "my.metric",
|
29
|
+
:timestamp => 1336559845,
|
30
|
+
:value => 33.0
|
31
|
+
}
|
32
|
+
]
|
33
|
+
end
|
34
|
+
|
35
|
+
def multiple_metrics_raw
|
36
|
+
@multiple_metrics_raw ||= File.read("#{BASE_PATH}/test/fixtures/multiple_metrics.txt")
|
37
|
+
end
|
38
|
+
|
39
|
+
def multiple_metrics_converted
|
40
|
+
[
|
41
|
+
{
|
42
|
+
:key => "my.first.metric",
|
43
|
+
:timestamp => 1336559725,
|
44
|
+
:value => 10.0
|
45
|
+
},
|
46
|
+
{
|
47
|
+
:key => "my.first.metric",
|
48
|
+
:timestamp => 1336559785,
|
49
|
+
:value => 9.21
|
50
|
+
},
|
51
|
+
{
|
52
|
+
:key => "my.first.metric",
|
53
|
+
:timestamp => 1336559845,
|
54
|
+
:value => 8.333
|
55
|
+
},
|
56
|
+
{
|
57
|
+
:key => "my.second.metric",
|
58
|
+
:timestamp => 1336559725,
|
59
|
+
:value => 1.1
|
60
|
+
},
|
61
|
+
{
|
62
|
+
:key => "my.second.metric",
|
63
|
+
:timestamp => 1336559785,
|
64
|
+
:value => 2.999
|
65
|
+
},
|
66
|
+
{
|
67
|
+
:key => "my.second.metric",
|
68
|
+
:timestamp => 1336559845,
|
69
|
+
:value => 3.50
|
70
|
+
}
|
71
|
+
]
|
72
|
+
end
|
73
|
+
|
74
|
+
def multiple_metrics_grouped
|
75
|
+
{
|
76
|
+
"my.first.metric" => [
|
77
|
+
{
|
78
|
+
:timestamp => 1336559725,
|
79
|
+
:value => 10.0
|
80
|
+
},
|
81
|
+
{
|
82
|
+
:timestamp => 1336559785,
|
83
|
+
:value => 9.21
|
84
|
+
},
|
85
|
+
{
|
86
|
+
:timestamp => 1336559845,
|
87
|
+
:value => 8.333
|
88
|
+
}
|
89
|
+
],
|
90
|
+
"my.second.metric" => [
|
91
|
+
{
|
92
|
+
:timestamp => 1336559725,
|
93
|
+
:value => 1.1
|
94
|
+
},
|
95
|
+
{
|
96
|
+
:timestamp => 1336559785,
|
97
|
+
:value => 2.999
|
98
|
+
},
|
99
|
+
{
|
100
|
+
:timestamp => 1336559845,
|
101
|
+
:value => 3.50
|
102
|
+
}
|
103
|
+
]
|
104
|
+
}
|
105
|
+
end
|
10
106
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: graphite-metric
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,53 +9,74 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-05-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: guard-minitest
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
|
-
- -
|
19
|
+
- - ~>
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: '0'
|
21
|
+
version: '0.5'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0.5'
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: minitest
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
|
-
- -
|
35
|
+
- - ~>
|
31
36
|
- !ruby/object:Gem::Version
|
32
|
-
version: '0'
|
37
|
+
version: '3.0'
|
33
38
|
type: :development
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '3.0'
|
36
46
|
- !ruby/object:Gem::Dependency
|
37
47
|
name: pry
|
38
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
39
49
|
none: false
|
40
50
|
requirements:
|
41
|
-
- -
|
51
|
+
- - ~>
|
42
52
|
- !ruby/object:Gem::Version
|
43
|
-
version: '0'
|
53
|
+
version: '0.9'
|
44
54
|
type: :development
|
45
55
|
prerelease: false
|
46
|
-
version_requirements:
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0.9'
|
47
62
|
- !ruby/object:Gem::Dependency
|
48
63
|
name: turn
|
49
|
-
requirement:
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
50
65
|
none: false
|
51
66
|
requirements:
|
52
|
-
- -
|
67
|
+
- - ~>
|
53
68
|
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
69
|
+
version: '0.9'
|
55
70
|
type: :development
|
56
71
|
prerelease: false
|
57
|
-
version_requirements:
|
58
|
-
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0.9'
|
78
|
+
description: Converts hashes and arrays into graphite plaintext format. Creates hashes
|
79
|
+
from graphite raw format.
|
59
80
|
email:
|
60
81
|
- gerhard@lazu.co.uk
|
61
82
|
executables: []
|
@@ -71,10 +92,13 @@ files:
|
|
71
92
|
- graphite-metric.gemspec
|
72
93
|
- lib/graphite-metric.rb
|
73
94
|
- lib/graphite-metric/plaintext.rb
|
95
|
+
- lib/graphite-metric/raw.rb
|
74
96
|
- lib/graphite-metric/util.rb
|
75
97
|
- lib/graphite-metric/version.rb
|
76
|
-
- test/
|
98
|
+
- test/fixtures/multiple_metrics.txt
|
99
|
+
- test/fixtures/single_metric.txt
|
77
100
|
- test/graphite-metric/plaintext_test.rb
|
101
|
+
- test/graphite-metric/raw_test.rb
|
78
102
|
- test/graphite-metric/util_test.rb
|
79
103
|
- test/test_helper.rb
|
80
104
|
homepage: ''
|
@@ -97,12 +121,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
97
121
|
version: '0'
|
98
122
|
requirements: []
|
99
123
|
rubyforge_project:
|
100
|
-
rubygems_version: 1.8.
|
124
|
+
rubygems_version: 1.8.23
|
101
125
|
signing_key:
|
102
126
|
specification_version: 3
|
103
|
-
summary: Generates strings that graphite understands
|
127
|
+
summary: Generates strings that graphite understands. Loads raw graphite data.
|
104
128
|
test_files:
|
105
|
-
- test/
|
129
|
+
- test/fixtures/multiple_metrics.txt
|
130
|
+
- test/fixtures/single_metric.txt
|
106
131
|
- test/graphite-metric/plaintext_test.rb
|
132
|
+
- test/graphite-metric/raw_test.rb
|
107
133
|
- test/graphite-metric/util_test.rb
|
108
134
|
- test/test_helper.rb
|