librato-metrics 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/.travis.yml +8 -0
 - data/CHANGELOG.md +10 -0
 - data/LICENSE +22 -9
 - data/README.md +8 -0
 - data/lib/librato/metrics/queue.rb +20 -9
 - data/lib/librato/metrics/simple.rb +13 -2
 - data/lib/librato/metrics/version.rb +1 -1
 - data/librato-metrics.gemspec +2 -1
 - data/spec/unit/metrics/queue_spec.rb +21 -22
 - metadata +25 -12
 
    
        data/.travis.yml
    ADDED
    
    
    
        data/CHANGELOG.md
    ADDED
    
    | 
         @@ -0,0 +1,10 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ## Changelog
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            ### Version 0.2.0
         
     | 
| 
      
 4 
     | 
    
         
            +
            * Fix bug with stale excon connections not reconnecting
         
     | 
| 
      
 5 
     | 
    
         
            +
            * Add custom User-Agent
         
     | 
| 
      
 6 
     | 
    
         
            +
            * Items added to Queue objects have their measure_time set automatically
         
     | 
| 
      
 7 
     | 
    
         
            +
            * Metric 'type' key can be string or symbol, thanks neilmock
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            ### Version 0.1.0
         
     | 
| 
      
 10 
     | 
    
         
            +
            * Initial release
         
     | 
    
        data/LICENSE
    CHANGED
    
    | 
         @@ -1,11 +1,24 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            Copyright (c) 2011. Librato, Inc.
         
     | 
| 
      
 2 
     | 
    
         
            +
            All rights reserved.
         
     | 
| 
       2 
3 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
      
 4 
     | 
    
         
            +
            Redistribution and use in source and binary forms, with or without
         
     | 
| 
      
 5 
     | 
    
         
            +
            modification, are permitted provided that the following conditions are met:
         
     | 
| 
      
 6 
     | 
    
         
            +
                * Redistributions of source code must retain the above copyright
         
     | 
| 
      
 7 
     | 
    
         
            +
                  notice, this list of conditions and the following disclaimer.
         
     | 
| 
      
 8 
     | 
    
         
            +
                * Redistributions in binary form must reproduce the above copyright
         
     | 
| 
      
 9 
     | 
    
         
            +
                  notice, this list of conditions and the following disclaimer in the
         
     | 
| 
      
 10 
     | 
    
         
            +
                  documentation and/or other materials provided with the distribution.
         
     | 
| 
      
 11 
     | 
    
         
            +
                * Neither the name of the <organization> nor the
         
     | 
| 
      
 12 
     | 
    
         
            +
                  names of its contributors may be used to endorse or promote products
         
     | 
| 
      
 13 
     | 
    
         
            +
                  derived from this software without specific prior written permission.
         
     | 
| 
       4 
14 
     | 
    
         | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
      
 15 
     | 
    
         
            +
            THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
         
     | 
| 
      
 16 
     | 
    
         
            +
            ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
         
     | 
| 
      
 17 
     | 
    
         
            +
            WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
         
     | 
| 
      
 18 
     | 
    
         
            +
            DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
         
     | 
| 
      
 19 
     | 
    
         
            +
            DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
         
     | 
| 
      
 20 
     | 
    
         
            +
            (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
         
     | 
| 
      
 21 
     | 
    
         
            +
            LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
         
     | 
| 
      
 22 
     | 
    
         
            +
            ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
         
     | 
| 
      
 23 
     | 
    
         
            +
            (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
         
     | 
| 
      
 24 
     | 
    
         
            +
            SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -101,6 +101,14 @@ Get the 20 most recent 15 minute data point rollups for `temperature`: 
     | 
|
| 
       101 
101 
     | 
    
         | 
| 
       102 
102 
     | 
    
         
             
            There are many more options supported for querying, take a look at the [REST API docs](http://dev.librato.com/v1/get/gauges/:name) for more details.
         
     | 
| 
       103 
103 
     | 
    
         | 
| 
      
 104 
     | 
    
         
            +
            ## Known Issues & Coming Improvements
         
     | 
| 
      
 105 
     | 
    
         
            +
             
     | 
| 
      
 106 
     | 
    
         
            +
            This is an early release and as such is lacking some capabilities slated for future releases.
         
     | 
| 
      
 107 
     | 
    
         
            +
             
     | 
| 
      
 108 
     | 
    
         
            +
            * Query actions currently do not auto-paginate with large result sets
         
     | 
| 
      
 109 
     | 
    
         
            +
            * Very large metric POSTs are not automatically chunked for performance
         
     | 
| 
      
 110 
     | 
    
         
            +
            * Some error conditions currently lack gem-specific exceptions
         
     | 
| 
      
 111 
     | 
    
         
            +
             
     | 
| 
       104 
112 
     | 
    
         
             
            ## Contribution
         
     | 
| 
       105 
113 
     | 
    
         | 
| 
       106 
114 
     | 
    
         
             
            * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
         
     | 
| 
         @@ -2,8 +2,11 @@ module Librato 
     | 
|
| 
       2 
2 
     | 
    
         
             
              module Metrics
         
     | 
| 
       3 
3 
     | 
    
         
             
                class Queue
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
     | 
    
         
            -
                   
     | 
| 
      
 5 
     | 
    
         
            +
                  attr_accessor :skip_measurement_times
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                  def initialize(options={})
         
     | 
| 
       6 
8 
     | 
    
         
             
                    @queued ||= {}
         
     | 
| 
      
 9 
     | 
    
         
            +
                    @skip_measurement_times = options.delete(:skip_measurement_times)
         
     | 
| 
       7 
10 
     | 
    
         
             
                  end
         
     | 
| 
       8 
11 
     | 
    
         | 
| 
       9 
12 
     | 
    
         
             
                  # Add a metric entry to the metric set:
         
     | 
| 
         @@ -13,15 +16,19 @@ module Librato 
     | 
|
| 
       13 
16 
     | 
    
         
             
                  def add(args)
         
     | 
| 
       14 
17 
     | 
    
         
             
                    args.each do |key, value|
         
     | 
| 
       15 
18 
     | 
    
         
             
                      if value.respond_to?(:each)
         
     | 
| 
       16 
     | 
    
         
            -
                         
     | 
| 
       17 
     | 
    
         
            -
                         
     | 
| 
       18 
     | 
    
         
            -
                         
     | 
| 
       19 
     | 
    
         
            -
                        @queued[type] ||= []
         
     | 
| 
       20 
     | 
    
         
            -
                        @queued[type] << value
         
     | 
| 
      
 19 
     | 
    
         
            +
                        metric = value
         
     | 
| 
      
 20 
     | 
    
         
            +
                        metric[:name] = key.to_s
         
     | 
| 
      
 21 
     | 
    
         
            +
                        type = metric.delete(:type) || metric.delete('type') || 'gauge'
         
     | 
| 
       21 
22 
     | 
    
         
             
                      else
         
     | 
| 
       22 
     | 
    
         
            -
                         
     | 
| 
       23 
     | 
    
         
            -
                         
     | 
| 
      
 23 
     | 
    
         
            +
                        metric = {:name => key.to_s, :value => value}
         
     | 
| 
      
 24 
     | 
    
         
            +
                        type = :gauge
         
     | 
| 
      
 25 
     | 
    
         
            +
                      end
         
     | 
| 
      
 26 
     | 
    
         
            +
                      type = ("#{type}s").to_sym
         
     | 
| 
      
 27 
     | 
    
         
            +
                      unless skip_measurement_times
         
     | 
| 
      
 28 
     | 
    
         
            +
                        metric[:measure_time] ||= epoch_time
         
     | 
| 
       24 
29 
     | 
    
         
             
                      end
         
     | 
| 
      
 30 
     | 
    
         
            +
                      @queued[type] ||= []
         
     | 
| 
      
 31 
     | 
    
         
            +
                      @queued[type] << metric
         
     | 
| 
       25 
32 
     | 
    
         
             
                    end
         
     | 
| 
       26 
33 
     | 
    
         
             
                    queued
         
     | 
| 
       27 
34 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -105,6 +112,10 @@ module Librato 
     | 
|
| 
       105 
112 
     | 
    
         
             
                    Librato::Metrics::Persistence.const_get(type).new
         
     | 
| 
       106 
113 
     | 
    
         
             
                  end
         
     | 
| 
       107 
114 
     | 
    
         | 
| 
      
 115 
     | 
    
         
            +
                  def epoch_time
         
     | 
| 
      
 116 
     | 
    
         
            +
                    Time.now.to_i
         
     | 
| 
      
 117 
     | 
    
         
            +
                  end
         
     | 
| 
      
 118 
     | 
    
         
            +
             
     | 
| 
       108 
119 
     | 
    
         
             
                end
         
     | 
| 
       109 
120 
     | 
    
         
             
              end
         
     | 
| 
       110 
     | 
    
         
            -
            end
         
     | 
| 
      
 121 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -44,7 +44,9 @@ module Librato 
     | 
|
| 
       44 
44 
     | 
    
         
             
                    end
         
     | 
| 
       45 
45 
     | 
    
         | 
| 
       46 
46 
     | 
    
         
             
                    def connection
         
     | 
| 
       47 
     | 
    
         
            -
                       
     | 
| 
      
 47 
     | 
    
         
            +
                      # TODO: upate when excon connection recovery is improved.
         
     | 
| 
      
 48 
     | 
    
         
            +
                      # @connection ||= Excon.new(self.api_endpoint, :headers => common_headers)
         
     | 
| 
      
 49 
     | 
    
         
            +
                      Excon.new(self.api_endpoint, :headers => common_headers)
         
     | 
| 
       48 
50 
     | 
    
         
             
                    end
         
     | 
| 
       49 
51 
     | 
    
         | 
| 
       50 
52 
     | 
    
         
             
                    # Purge current credentials and connection
         
     | 
| 
         @@ -76,11 +78,16 @@ module Librato 
     | 
|
| 
       76 
78 
     | 
    
         
             
                    # Submit all queued metrics
         
     | 
| 
       77 
79 
     | 
    
         
             
                    #
         
     | 
| 
       78 
80 
     | 
    
         
             
                    def submit(args)
         
     | 
| 
       79 
     | 
    
         
            -
                      @queue ||= Queue.new
         
     | 
| 
      
 81 
     | 
    
         
            +
                      @queue ||= Queue.new(:skip_measurement_times => true)
         
     | 
| 
       80 
82 
     | 
    
         
             
                      @queue.add args
         
     | 
| 
       81 
83 
     | 
    
         
             
                      @queue.submit
         
     | 
| 
       82 
84 
     | 
    
         
             
                    end
         
     | 
| 
       83 
85 
     | 
    
         | 
| 
      
 86 
     | 
    
         
            +
                    def user_agent
         
     | 
| 
      
 87 
     | 
    
         
            +
                      ruby_ver = "#{RUBY_ENGINE}; #{RUBY_VERSION}p#{RUBY_PATCHLEVEL}; #{RUBY_PLATFORM}"
         
     | 
| 
      
 88 
     | 
    
         
            +
                      "librato-metrics/#{Metrics::VERSION} (#{ruby_ver}) direct-excon/#{Excon::VERSION}"
         
     | 
| 
      
 89 
     | 
    
         
            +
                    end
         
     | 
| 
      
 90 
     | 
    
         
            +
             
     | 
| 
       84 
91 
     | 
    
         
             
                  private
         
     | 
| 
       85 
92 
     | 
    
         | 
| 
       86 
93 
     | 
    
         
             
                    def auth_header
         
     | 
| 
         @@ -89,6 +96,10 @@ module Librato 
     | 
|
| 
       89 
96 
     | 
    
         
             
                      "Basic #{encoded}"
         
     | 
| 
       90 
97 
     | 
    
         
             
                    end
         
     | 
| 
       91 
98 
     | 
    
         | 
| 
      
 99 
     | 
    
         
            +
                    def common_headers
         
     | 
| 
      
 100 
     | 
    
         
            +
                      {'Authorization' => auth_header, 'User-Agent' => user_agent}
         
     | 
| 
      
 101 
     | 
    
         
            +
                    end
         
     | 
| 
      
 102 
     | 
    
         
            +
             
     | 
| 
       92 
103 
     | 
    
         
             
                    def flush_persistence
         
     | 
| 
       93 
104 
     | 
    
         
             
                      @persistence = nil
         
     | 
| 
       94 
105 
     | 
    
         
             
                    end
         
     | 
    
        data/librato-metrics.gemspec
    CHANGED
    
    | 
         @@ -16,7 +16,7 @@ Gem::Specification.new do |s| 
     | 
|
| 
       16 
16 
     | 
    
         | 
| 
       17 
17 
     | 
    
         
             
              s.authors  = ["Matt Sanders"]
         
     | 
| 
       18 
18 
     | 
    
         
             
              s.email    = 'matt@librato.com'
         
     | 
| 
       19 
     | 
    
         
            -
              s.homepage = ' 
     | 
| 
      
 19 
     | 
    
         
            +
              s.homepage = 'https://github.com/librato/librato-metrics'
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
       21 
21 
     | 
    
         
             
              s.require_paths = %w[lib]
         
     | 
| 
       22 
22 
     | 
    
         | 
| 
         @@ -27,6 +27,7 @@ Gem::Specification.new do |s| 
     | 
|
| 
       27 
27 
     | 
    
         
             
              s.add_dependency 'excon', '~>0.7.12'
         
     | 
| 
       28 
28 
     | 
    
         | 
| 
       29 
29 
     | 
    
         
             
              ## development dependencies
         
     | 
| 
      
 30 
     | 
    
         
            +
              s.add_development_dependency 'rake'
         
     | 
| 
       30 
31 
     | 
    
         
             
              s.add_development_dependency 'rspec', '~>2.6.0'
         
     | 
| 
       31 
32 
     | 
    
         
             
              s.add_development_dependency 'yard'
         
     | 
| 
       32 
33 
     | 
    
         
             
              s.add_development_dependency 'rdiscount' # for yard
         
     | 
| 
         @@ -5,25 +5,35 @@ module Librato 
     | 
|
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
                describe Queue do
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
     | 
    
         
            -
                   
     | 
| 
      
 8 
     | 
    
         
            +
                  before(:all) do
         
     | 
| 
      
 9 
     | 
    
         
            +
                    @time = Time.now.to_i
         
     | 
| 
      
 10 
     | 
    
         
            +
                    Librato::Metrics::Queue.stub(:epoch_time).and_return(@time)
         
     | 
| 
      
 11 
     | 
    
         
            +
                  end
         
     | 
| 
       9 
12 
     | 
    
         | 
| 
      
 13 
     | 
    
         
            +
                  describe "#add" do
         
     | 
| 
       10 
14 
     | 
    
         
             
                    context "with single hash argument" do
         
     | 
| 
       11 
15 
     | 
    
         
             
                      it "should record a key-value gauge" do
         
     | 
| 
       12 
16 
     | 
    
         
             
                        subject.add :foo => 3000
         
     | 
| 
       13 
     | 
    
         
            -
                        subject.queued.should eql({:gauges => [{:name => 'foo', :value => 3000}]})
         
     | 
| 
      
 17 
     | 
    
         
            +
                        subject.queued.should eql({:gauges => [{:name => 'foo', :value => 3000, :measure_time => @time}]})
         
     | 
| 
       14 
18 
     | 
    
         
             
                      end
         
     | 
| 
       15 
19 
     | 
    
         
             
                    end
         
     | 
| 
       16 
20 
     | 
    
         | 
| 
       17 
21 
     | 
    
         
             
                    context "with specified metric type" do
         
     | 
| 
       18 
22 
     | 
    
         
             
                      it "should record counters" do
         
     | 
| 
       19 
23 
     | 
    
         
             
                        subject.add :total_visits => {:type => :counter, :value => 4000}
         
     | 
| 
       20 
     | 
    
         
            -
                        expected = {:counters => [{:name => 'total_visits', :value => 4000}]}
         
     | 
| 
      
 24 
     | 
    
         
            +
                        expected = {:counters => [{:name => 'total_visits', :value => 4000, :measure_time => @time}]}
         
     | 
| 
       21 
25 
     | 
    
         
             
                        subject.queued.should eql expected
         
     | 
| 
       22 
26 
     | 
    
         
             
                      end
         
     | 
| 
       23 
27 
     | 
    
         | 
| 
       24 
28 
     | 
    
         
             
                      it "should record gauges" do
         
     | 
| 
       25 
29 
     | 
    
         
             
                        subject.add :temperature => {:type => :gauge, :value => 34}
         
     | 
| 
       26 
     | 
    
         
            -
                        expected = {:gauges => [{:name => 'temperature', :value => 34}]}
         
     | 
| 
      
 30 
     | 
    
         
            +
                        expected = {:gauges => [{:name => 'temperature', :value => 34, :measure_time => @time}]}
         
     | 
| 
      
 31 
     | 
    
         
            +
                        subject.queued.should eql expected
         
     | 
| 
      
 32 
     | 
    
         
            +
                      end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
                      it "should accept type key as string or a symbol" do
         
     | 
| 
      
 35 
     | 
    
         
            +
                        subject.add :total_visits => {"type" => "counter", :value => 4000}
         
     | 
| 
      
 36 
     | 
    
         
            +
                        expected = {:counters => [{:name => 'total_visits', :value => 4000}]}
         
     | 
| 
       27 
37 
     | 
    
         
             
                        subject.queued.should eql expected
         
     | 
| 
       28 
38 
     | 
    
         
             
                      end
         
     | 
| 
       29 
39 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -44,43 +54,39 @@ module Librato 
     | 
|
| 
       44 
54 
     | 
    
         
             
                    context "with multiple metrics" do
         
     | 
| 
       45 
55 
     | 
    
         
             
                      it "should record" do
         
     | 
| 
       46 
56 
     | 
    
         
             
                        subject.add :foo => 123, :bar => 345, :baz => 567
         
     | 
| 
       47 
     | 
    
         
            -
                        expected = {:gauges=>[{:name=>"foo", :value=>123 
     | 
| 
      
 57 
     | 
    
         
            +
                        expected = {:gauges=>[{:name=>"foo", :value=>123, :measure_time => @time},
         
     | 
| 
      
 58 
     | 
    
         
            +
                                              {:name=>"bar", :value=>345, :measure_time => @time},
         
     | 
| 
      
 59 
     | 
    
         
            +
                                              {:name=>"baz", :value=>567, :measure_time => @time}]}
         
     | 
| 
       48 
60 
     | 
    
         
             
                        subject.queued.should eql expected
         
     | 
| 
       49 
61 
     | 
    
         
             
                      end
         
     | 
| 
       50 
62 
     | 
    
         
             
                    end
         
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
63 
     | 
    
         
             
                  end
         
     | 
| 
       53 
64 
     | 
    
         | 
| 
       54 
65 
     | 
    
         
             
                  describe "#counters" do
         
     | 
| 
       55 
     | 
    
         
            -
             
     | 
| 
       56 
66 
     | 
    
         
             
                    it "should return currently queued counters" do
         
     | 
| 
       57 
67 
     | 
    
         
             
                      subject.add :transactions => {:type => :counter, :value => 12345},
         
     | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
       59 
     | 
    
         
            -
                      subject.counters.should eql [{:name => 'transactions', :value => 12345}]
         
     | 
| 
      
 68 
     | 
    
         
            +
                                  :register_cents => {:type => :gauge, :value => 211101}
         
     | 
| 
      
 69 
     | 
    
         
            +
                      subject.counters.should eql [{:name => 'transactions', :value => 12345, :measure_time => @time}]
         
     | 
| 
       60 
70 
     | 
    
         
             
                    end
         
     | 
| 
       61 
71 
     | 
    
         | 
| 
       62 
72 
     | 
    
         
             
                    it "should return [] when no queued counters" do
         
     | 
| 
       63 
73 
     | 
    
         
             
                      subject.counters.should eql []
         
     | 
| 
       64 
74 
     | 
    
         
             
                    end
         
     | 
| 
       65 
     | 
    
         
            -
             
     | 
| 
       66 
75 
     | 
    
         
             
                  end
         
     | 
| 
       67 
76 
     | 
    
         | 
| 
       68 
77 
     | 
    
         
             
                  describe "#gauges" do
         
     | 
| 
       69 
     | 
    
         
            -
             
     | 
| 
       70 
78 
     | 
    
         
             
                    it "should return currently queued gauges" do
         
     | 
| 
       71 
79 
     | 
    
         
             
                      subject.add :transactions => {:type => :counter, :value => 12345},
         
     | 
| 
       72 
80 
     | 
    
         
             
                                    :register_cents => {:type => :gauge, :value => 211101}
         
     | 
| 
       73 
     | 
    
         
            -
                      subject.gauges.should eql [{:name => 'register_cents', :value => 211101}]
         
     | 
| 
      
 81 
     | 
    
         
            +
                      subject.gauges.should eql [{:name => 'register_cents', :value => 211101, :measure_time => @time}]
         
     | 
| 
       74 
82 
     | 
    
         
             
                    end
         
     | 
| 
       75 
83 
     | 
    
         | 
| 
       76 
84 
     | 
    
         
             
                    it "should return [] when no queued gauges" do
         
     | 
| 
       77 
85 
     | 
    
         
             
                      subject.gauges.should eql []
         
     | 
| 
       78 
86 
     | 
    
         
             
                    end
         
     | 
| 
       79 
     | 
    
         
            -
             
     | 
| 
       80 
87 
     | 
    
         
             
                  end
         
     | 
| 
       81 
88 
     | 
    
         | 
| 
       82 
89 
     | 
    
         
             
                  describe "#submit" do
         
     | 
| 
       83 
     | 
    
         
            -
             
     | 
| 
       84 
90 
     | 
    
         
             
                    before(:all) do
         
     | 
| 
       85 
91 
     | 
    
         
             
                      Librato::Metrics.authenticate 'me@librato.com', 'foo'
         
     | 
| 
       86 
92 
     | 
    
         
             
                      Librato::Metrics.persistence = :test
         
     | 
| 
         @@ -103,13 +109,10 @@ module Librato 
     | 
|
| 
       103 
109 
     | 
    
         
             
                        subject.queued.should_not be_empty
         
     | 
| 
       104 
110 
     | 
    
         
             
                      end
         
     | 
| 
       105 
111 
     | 
    
         
             
                    end
         
     | 
| 
       106 
     | 
    
         
            -
             
     | 
| 
       107 
112 
     | 
    
         
             
                  end
         
     | 
| 
       108 
113 
     | 
    
         | 
| 
       109 
114 
     | 
    
         
             
                  describe "#time" do
         
     | 
| 
       110 
     | 
    
         
            -
             
     | 
| 
       111 
115 
     | 
    
         
             
                    context "with metric name only" do
         
     | 
| 
       112 
     | 
    
         
            -
             
     | 
| 
       113 
116 
     | 
    
         
             
                      it "should queue metric with timed value" do
         
     | 
| 
       114 
117 
     | 
    
         
             
                        subject.time :sleeping do
         
     | 
| 
       115 
118 
     | 
    
         
             
                          sleep 0.1
         
     | 
| 
         @@ -119,11 +122,9 @@ module Librato 
     | 
|
| 
       119 
122 
     | 
    
         
             
                        queued[:value].should be > 100
         
     | 
| 
       120 
123 
     | 
    
         
             
                        queued[:value].should be_within(30).of(100)
         
     | 
| 
       121 
124 
     | 
    
         
             
                      end
         
     | 
| 
       122 
     | 
    
         
            -
             
     | 
| 
       123 
125 
     | 
    
         
             
                    end
         
     | 
| 
       124 
126 
     | 
    
         | 
| 
       125 
127 
     | 
    
         
             
                    context "with metric and options" do
         
     | 
| 
       126 
     | 
    
         
            -
             
     | 
| 
       127 
128 
     | 
    
         
             
                      it "should queue metric with value and options" do
         
     | 
| 
       128 
129 
     | 
    
         
             
                        subject.time :sleep_two, :source => 'app1', :period => 2 do
         
     | 
| 
       129 
130 
     | 
    
         
             
                          sleep 0.05
         
     | 
| 
         @@ -135,12 +136,10 @@ module Librato 
     | 
|
| 
       135 
136 
     | 
    
         
             
                        queued[:value].should be > 50
         
     | 
| 
       136 
137 
     | 
    
         
             
                        queued[:value].should be_within(30).of(50)
         
     | 
| 
       137 
138 
     | 
    
         
             
                      end
         
     | 
| 
       138 
     | 
    
         
            -
             
     | 
| 
       139 
139 
     | 
    
         
             
                    end
         
     | 
| 
       140 
     | 
    
         
            -
             
     | 
| 
       141 
140 
     | 
    
         
             
                  end
         
     | 
| 
       142 
141 
     | 
    
         | 
| 
       143 
142 
     | 
    
         
             
                end # MetricSet
         
     | 
| 
       144 
143 
     | 
    
         | 
| 
       145 
144 
     | 
    
         
             
              end
         
     | 
| 
       146 
     | 
    
         
            -
            end
         
     | 
| 
      
 145 
     | 
    
         
            +
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: librato-metrics
         
     | 
| 
       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,11 +9,11 @@ authors: 
     | 
|
| 
       9 
9 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       10 
10 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       11 
11 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       12 
     | 
    
         
            -
            date: 2011-12- 
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2011-12-14 00:00:00.000000000Z
         
     | 
| 
       13 
13 
     | 
    
         
             
            dependencies:
         
     | 
| 
       14 
14 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       15 
15 
     | 
    
         
             
              name: excon
         
     | 
| 
       16 
     | 
    
         
            -
              requirement: & 
     | 
| 
      
 16 
     | 
    
         
            +
              requirement: &70208460547940 !ruby/object:Gem::Requirement
         
     | 
| 
       17 
17 
     | 
    
         
             
                none: false
         
     | 
| 
       18 
18 
     | 
    
         
             
                requirements:
         
     | 
| 
       19 
19 
     | 
    
         
             
                - - ~>
         
     | 
| 
         @@ -21,10 +21,21 @@ dependencies: 
     | 
|
| 
       21 
21 
     | 
    
         
             
                    version: 0.7.12
         
     | 
| 
       22 
22 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       23 
23 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       24 
     | 
    
         
            -
              version_requirements: * 
     | 
| 
      
 24 
     | 
    
         
            +
              version_requirements: *70208460547940
         
     | 
| 
      
 25 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 26 
     | 
    
         
            +
              name: rake
         
     | 
| 
      
 27 
     | 
    
         
            +
              requirement: &70208460547480 !ruby/object:Gem::Requirement
         
     | 
| 
      
 28 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 29 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 30 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 31 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 32 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 33 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 34 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 35 
     | 
    
         
            +
              version_requirements: *70208460547480
         
     | 
| 
       25 
36 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       26 
37 
     | 
    
         
             
              name: rspec
         
     | 
| 
       27 
     | 
    
         
            -
              requirement: & 
     | 
| 
      
 38 
     | 
    
         
            +
              requirement: &70208460546880 !ruby/object:Gem::Requirement
         
     | 
| 
       28 
39 
     | 
    
         
             
                none: false
         
     | 
| 
       29 
40 
     | 
    
         
             
                requirements:
         
     | 
| 
       30 
41 
     | 
    
         
             
                - - ~>
         
     | 
| 
         @@ -32,10 +43,10 @@ dependencies: 
     | 
|
| 
       32 
43 
     | 
    
         
             
                    version: 2.6.0
         
     | 
| 
       33 
44 
     | 
    
         
             
              type: :development
         
     | 
| 
       34 
45 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       35 
     | 
    
         
            -
              version_requirements: * 
     | 
| 
      
 46 
     | 
    
         
            +
              version_requirements: *70208460546880
         
     | 
| 
       36 
47 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       37 
48 
     | 
    
         
             
              name: yard
         
     | 
| 
       38 
     | 
    
         
            -
              requirement: & 
     | 
| 
      
 49 
     | 
    
         
            +
              requirement: &70208460546440 !ruby/object:Gem::Requirement
         
     | 
| 
       39 
50 
     | 
    
         
             
                none: false
         
     | 
| 
       40 
51 
     | 
    
         
             
                requirements:
         
     | 
| 
       41 
52 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
         @@ -43,10 +54,10 @@ dependencies: 
     | 
|
| 
       43 
54 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       44 
55 
     | 
    
         
             
              type: :development
         
     | 
| 
       45 
56 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       46 
     | 
    
         
            -
              version_requirements: * 
     | 
| 
      
 57 
     | 
    
         
            +
              version_requirements: *70208460546440
         
     | 
| 
       47 
58 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       48 
59 
     | 
    
         
             
              name: rdiscount
         
     | 
| 
       49 
     | 
    
         
            -
              requirement: & 
     | 
| 
      
 60 
     | 
    
         
            +
              requirement: &70208460545960 !ruby/object:Gem::Requirement
         
     | 
| 
       50 
61 
     | 
    
         
             
                none: false
         
     | 
| 
       51 
62 
     | 
    
         
             
                requirements:
         
     | 
| 
       52 
63 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
         @@ -54,7 +65,7 @@ dependencies: 
     | 
|
| 
       54 
65 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       55 
66 
     | 
    
         
             
              type: :development
         
     | 
| 
       56 
67 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       57 
     | 
    
         
            -
              version_requirements: * 
     | 
| 
      
 68 
     | 
    
         
            +
              version_requirements: *70208460545960
         
     | 
| 
       58 
69 
     | 
    
         
             
            description: An easy to use ruby wrapper for Librato's Metrics API
         
     | 
| 
       59 
70 
     | 
    
         
             
            email: matt@librato.com
         
     | 
| 
       60 
71 
     | 
    
         
             
            executables: []
         
     | 
| 
         @@ -63,6 +74,8 @@ extra_rdoc_files: 
     | 
|
| 
       63 
74 
     | 
    
         
             
            - LICENSE
         
     | 
| 
       64 
75 
     | 
    
         
             
            files:
         
     | 
| 
       65 
76 
     | 
    
         
             
            - .gitignore
         
     | 
| 
      
 77 
     | 
    
         
            +
            - .travis.yml
         
     | 
| 
      
 78 
     | 
    
         
            +
            - CHANGELOG.md
         
     | 
| 
       66 
79 
     | 
    
         
             
            - Gemfile
         
     | 
| 
       67 
80 
     | 
    
         
             
            - LICENSE
         
     | 
| 
       68 
81 
     | 
    
         
             
            - README.md
         
     | 
| 
         @@ -80,7 +93,7 @@ files: 
     | 
|
| 
       80 
93 
     | 
    
         
             
            - spec/unit/metrics/queue_spec.rb
         
     | 
| 
       81 
94 
     | 
    
         
             
            - spec/unit/metrics/simple_spec.rb
         
     | 
| 
       82 
95 
     | 
    
         
             
            - spec/unit/metrics_spec.rb
         
     | 
| 
       83 
     | 
    
         
            -
            homepage:  
     | 
| 
      
 96 
     | 
    
         
            +
            homepage: https://github.com/librato/librato-metrics
         
     | 
| 
       84 
97 
     | 
    
         
             
            licenses: []
         
     | 
| 
       85 
98 
     | 
    
         
             
            post_install_message: 
         
     | 
| 
       86 
99 
     | 
    
         
             
            rdoc_options:
         
     | 
| 
         @@ -101,7 +114,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       101 
114 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       102 
115 
     | 
    
         
             
            requirements: []
         
     | 
| 
       103 
116 
     | 
    
         
             
            rubyforge_project: 
         
     | 
| 
       104 
     | 
    
         
            -
            rubygems_version: 1.8. 
     | 
| 
      
 117 
     | 
    
         
            +
            rubygems_version: 1.8.12
         
     | 
| 
       105 
118 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       106 
119 
     | 
    
         
             
            specification_version: 2
         
     | 
| 
       107 
120 
     | 
    
         
             
            summary: Ruby wrapper for Librato's Metrics API
         
     |