statsn 0.1.1 → 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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 3f16081e04616c5af953ba9a304c5515eb5e18ba
4
+ data.tar.gz: e27df826af67a56b23eb0108cf7337473f55c747
5
+ SHA512:
6
+ metadata.gz: 17392b96a6b618b49984f5e39a3f8991eb2ea938d216b7229f8712143bcb0845609638410bef753ae8d38f03aef927d9ad3dbab38d303215ef0ac8644fcab1b0
7
+ data.tar.gz: 97ac5174c2e362c9d25948a89d42a978e8273d8befa41a52d68e19e52dc611679e935e4a790119bf20f82341cf301836370a5dc4161efc2a0e8167dad56aa1d9
@@ -26,8 +26,13 @@ module Statsn
26
26
  def key(who)
27
27
  if who.is_a?(Array)
28
28
  model = who.first
29
- model = (model.is_a?(Class) ? model.name : model.class.name).gsub("::", "/")
30
- [PREFIX, model, *who[1..-1]].compact.join("/")
29
+ model = case model
30
+ when String then model
31
+ when Class then model.name
32
+ else
33
+ model.class.name
34
+ end
35
+ [PREFIX, model.gsub("::", "/"), *who[1..-1]].compact.join("/")
31
36
  else
32
37
  who
33
38
  end
@@ -1,3 +1,3 @@
1
1
  module Statsn
2
- VERSION = "0.1.1"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,32 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: statsn
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.1.1
4
+ version: 0.2.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Michael Grosser
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-12-27 00:00:00.000000000 Z
11
+ date: 2014-09-25 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
- version_requirements: !ruby/object:Gem::Requirement
14
+ name: newrelic_rpm
15
+ requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '3.5'
20
- none: false
20
+ type: :runtime
21
21
  prerelease: false
22
- name: newrelic_rpm
23
- requirement: !ruby/object:Gem::Requirement
22
+ version_requirements: !ruby/object:Gem::Requirement
24
23
  requirements:
25
- - - ~>
24
+ - - "~>"
26
25
  - !ruby/object:Gem::Version
27
26
  version: '3.5'
28
- none: false
29
- type: :runtime
30
27
  description:
31
28
  email: michael@grosser.it
32
29
  executables:
@@ -34,49 +31,31 @@ executables:
34
31
  extensions: []
35
32
  extra_rdoc_files: []
36
33
  files:
37
- - .gitignore
38
- - .travis.yml
39
- - Gemfile
40
- - Gemfile.lock
41
- - Rakefile
42
- - Readme.md
43
34
  - bin/statsn-calls
44
35
  - lib/statsn.rb
45
36
  - lib/statsn/version.rb
46
- - spec/argv.example.yml
47
- - spec/spec_helper.rb
48
- - spec/statsn_calls_spec.rb
49
- - spec/statsn_spec.rb
50
- - statsn.gemspec
51
- homepage: http://github.com/grosser/statsn
37
+ homepage: https://github.com/grosser/statsn
52
38
  licenses:
53
39
  - MIT
40
+ metadata: {}
54
41
  post_install_message:
55
42
  rdoc_options: []
56
43
  require_paths:
57
44
  - lib
58
45
  required_ruby_version: !ruby/object:Gem::Requirement
59
46
  requirements:
60
- - - ! '>='
47
+ - - ">="
61
48
  - !ruby/object:Gem::Version
62
49
  version: '0'
63
- segments:
64
- - 0
65
- hash: 2968399290205698663
66
- none: false
67
50
  required_rubygems_version: !ruby/object:Gem::Requirement
68
51
  requirements:
69
- - - ! '>='
52
+ - - ">="
70
53
  - !ruby/object:Gem::Version
71
54
  version: '0'
72
- segments:
73
- - 0
74
- hash: 2968399290205698663
75
- none: false
76
55
  requirements: []
77
56
  rubyforge_project:
78
- rubygems_version: 1.8.24
57
+ rubygems_version: 2.2.2
79
58
  signing_key:
80
- specification_version: 3
81
- summary: ! 'StatsN: Aggregate statistics using newrelics custom metrics'
59
+ specification_version: 4
60
+ summary: 'StatsN: Aggregate statistics using newrelics custom metrics'
82
61
  test_files: []
data/.gitignore DELETED
@@ -1 +0,0 @@
1
- spec/argv.yml
@@ -1,4 +0,0 @@
1
- rvm:
2
- - ree
3
- - 1.9.2
4
- - 1.9.3
data/Gemfile DELETED
@@ -1,8 +0,0 @@
1
- source :rubygems
2
- gemspec
3
-
4
- gem "bump"
5
- gem "rake"
6
- gem "rspec", "~>2"
7
- gem "json"
8
- gem "faraday"
@@ -1,36 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- statsn (0.1.1)
5
- newrelic_rpm (~> 3.5)
6
-
7
- GEM
8
- remote: http://rubygems.org/
9
- specs:
10
- bump (0.3.7)
11
- diff-lcs (1.1.3)
12
- faraday (0.8.4)
13
- multipart-post (~> 1.1)
14
- json (1.7.5)
15
- multipart-post (1.1.5)
16
- newrelic_rpm (3.5.3.25)
17
- rake (0.9.2)
18
- rspec (2.6.0)
19
- rspec-core (~> 2.6.0)
20
- rspec-expectations (~> 2.6.0)
21
- rspec-mocks (~> 2.6.0)
22
- rspec-core (2.6.4)
23
- rspec-expectations (2.6.0)
24
- diff-lcs (~> 1.1.2)
25
- rspec-mocks (2.6.0)
26
-
27
- PLATFORMS
28
- ruby
29
-
30
- DEPENDENCIES
31
- bump
32
- faraday
33
- json
34
- rake
35
- rspec (~> 2)
36
- statsn!
data/Rakefile DELETED
@@ -1,6 +0,0 @@
1
- require "bundler/gem_tasks"
2
- require "bump/tasks"
3
-
4
- task :default do
5
- sh "rspec spec/"
6
- end
data/Readme.md DELETED
@@ -1,55 +0,0 @@
1
- StatsN: Aggregate statistics using NewRelic's custom metrics.
2
-
3
- Install
4
- =======
5
-
6
- gem install statsn
7
-
8
- Usage
9
- =====
10
-
11
- ### Track
12
-
13
- require "statsn"
14
-
15
- Statsn.increment("Custom/Xyz") -> tracked as "Custom/Xyz"
16
- Statsn.increment([Abc::Xyz, "update"]) -> tracked as "Custom/Abc/Xyz/update"
17
- Statsn.increment([self, "update"]) -> tracked as "Custom/<class-you-are-in>/update"
18
-
19
- Statsn.increment("Custom/Xyz", 5) -> increment by 5
20
-
21
- Statsn.time("Custom/Abc") do
22
- sleep 1
23
- end
24
-
25
- ### Analyze
26
-
27
- # show all metrics and fields
28
- curl -H "x-api-key:API_KEY" https://api.newrelic.com/api/v1/applications/12345/metrics.json -> list of all metrics and fields
29
-
30
- gem install faraday json
31
-
32
- # statsn-calls API-KEY ACCOUNT-ID APPLICATION-ID METRIC-NAME
33
- statsn-calls asdhgjasdgjhdasjgahsdasdjghsdjhg 123 1234567 Controller/users/index
34
-
35
- call_count: 274909.0
36
- total_call_time: 37585.77862974794
37
- response time: 0.1367208008095331
38
- call per second: 3.18181712962963
39
-
40
- # statsn-calls API-KEY ACCOUNT-ID APPLICATION-ID METRIC-NAME-PREFIX
41
- statsn-calls asdhgjasdgjhdasjgahsdasdjghsdjhg 123 1234567 Controller/users/*
42
-
43
- call_count: 287300.0
44
- total_call_time: 39330.15688060733
45
- response time: 0.13689577751690682
46
- call per second: 3.3252314814814814
47
-
48
- Author
49
- ======
50
- Original version by [Morten Primdahl](https://github.com/morten)<br/>
51
-
52
- [Michael Grosser](http://grosser.it)<br/>
53
- michael@grosser.it<br/>
54
- License: MIT<br/>
55
- [![Build Status](https://travis-ci.org/grosser/statsn.png)](https://travis-ci.org/grosser/statsn)
@@ -1,4 +0,0 @@
1
- # keep exmaple up to date when chaning this!
2
- single: asdadsasddasads 123 123123 Controller/users/update
3
- multi: asdadsasddasads 123 123123 Controller/users/*
4
- count: asdadsasddasads 123 123123 Custom/xxx # must only have counts, no response time
@@ -1,3 +0,0 @@
1
- require "bundler/setup"
2
- require "statsn"
3
- require "yaml"
@@ -1,56 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe "statsn-calls" do
4
- let(:argv){ YAML.load File.read("#{Bundler.root}/spec/argv.yml") }
5
-
6
- before do
7
- pending "create a spec/argv.yml" unless (argv rescue nil)
8
- end
9
-
10
- it "gives us some numbers" do
11
- result = run argv["single"]
12
- result.should =~ /^call_count: \d+/
13
- result.should =~ /^total_call_time: \d+/
14
- result.should =~ /^response time: \d+/
15
- result.should =~ /^call per second: \d+/
16
- end
17
-
18
- it "gives us some numbers for a prefix call" do
19
- result = run argv["multi"]
20
- result.should =~ /^call_count: \d+/
21
- result.should =~ /^total_call_time: \d+/
22
- result.should =~ /^response time: \d+/
23
- result.should =~ /^call per second: \d+/
24
- end
25
-
26
- it "shows help" do
27
- result = run("--help")
28
- result.should include("statsn-calls API-KEY")
29
- end
30
-
31
- it "shows help and fail with invalid args" do
32
- result = run("asdadsasdasd", :fail => true)
33
- result.should include("statsn-calls API-KEY")
34
- end
35
-
36
- it "show data for count-only metrics" do
37
- result = run argv["count"]
38
- result.should =~ /^call_count: \d+/
39
- result.should_not =~ /^total_call_time: \d+/
40
- result.should_not =~ /^response time: \d+/
41
- result.should =~ /^call per second: \d+/
42
- end
43
-
44
- it "tell us if the metric is missing" do
45
- result = run("#{argv["single"]}/xxxx", :fail => true)
46
- result.should include("No data found for Controller/")
47
- end
48
-
49
- private
50
-
51
- def run(argv, options={})
52
- result = `ruby -I #{Bundler.root}/lib #{Bundler.root}/bin/statsn-calls #{argv} 2>&1`
53
- raise "FAILED: #{result}" if $?.success? == !!options[:fail]
54
- result
55
- end
56
- end
@@ -1,69 +0,0 @@
1
- require "spec_helper"
2
-
3
- module Foobar
4
- class TestClass
5
- end
6
- end
7
-
8
- describe Statsn do
9
- it "has a VERSION" do
10
- Statsn::VERSION.should =~ /^[\.\da-z]+$/
11
- end
12
-
13
- describe ".increment" do
14
- it "calls count api with 1" do
15
- NewRelic::MethodTraceStats.any_instance.should_receive(:record_data_point).with(1)
16
- Statsn.increment("xxx")
17
- end
18
-
19
- it "calls count api with given number" do
20
- NewRelic::MethodTraceStats.any_instance.should_receive(:record_data_point).with(3)
21
- Statsn.increment("xxx", 3)
22
- end
23
- end
24
-
25
- describe ".time" do
26
- before do
27
- NewRelic::Agent.is_execution_traced?.should == true
28
- end
29
-
30
- it "returns block result" do
31
- Statsn.time("xxx"){ 4 }.should == 4
32
- end
33
-
34
- it "raises errors" do
35
- expect{
36
- Statsn.time("xxx"){ raise EOFError }
37
- }.to raise_error(EOFError)
38
- end
39
-
40
- it "records used time" do
41
- NewRelic::MethodTraceStats.any_instance.should_receive(:trace_call).with{|x| x.should be_within(0.05).of(0.1) }
42
- Statsn.time("xxx"){ sleep 0.1 }
43
- end
44
- end
45
-
46
- describe ".data" do
47
- it "returns data for metrics" do
48
-
49
- end
50
- end
51
-
52
- describe ".key" do
53
- it "builds with a string" do
54
- Statsn.send(:key, "xxx").should == "xxx"
55
- end
56
-
57
- it "builds with a class and name" do
58
- Statsn.send(:key, [Foobar::TestClass, "xxx"]).should == "Custom/Foobar/TestClass/xxx"
59
- end
60
-
61
- it "builds with an instance and name" do
62
- Statsn.send(:key, [Foobar::TestClass.new, "xxx"]).should == "Custom/Foobar/TestClass/xxx"
63
- end
64
-
65
- it "ignores nil" do
66
- Statsn.send(:key, [Foobar::TestClass, nil, nil, "xxx"]).should == "Custom/Foobar/TestClass/xxx"
67
- end
68
- end
69
- end
@@ -1,14 +0,0 @@
1
- $LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
2
- name = "statsn"
3
- require "#{name}/version"
4
-
5
- Gem::Specification.new name, Statsn::VERSION do |s|
6
- s.summary = "StatsN: Aggregate statistics using newrelics custom metrics"
7
- s.authors = ["Michael Grosser"]
8
- s.email = "michael@grosser.it"
9
- s.homepage = "http://github.com/grosser/#{name}"
10
- s.files = `git ls-files`.split("\n")
11
- s.license = "MIT"
12
- s.executables = ["statsn-calls"]
13
- s.add_runtime_dependency "newrelic_rpm", "~> 3.5"
14
- end