gauss 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -1 +1,10 @@
1
1
  require "bundler/gem_tasks"
2
+ require 'rake/testtask'
3
+
4
+ Rake::TestTask.new do |t|
5
+ t.libs.push "test"
6
+ t.test_files = FileList["test/*_test.rb"]
7
+ t.verbose = true
8
+ end
9
+
10
+ task default: :test
@@ -1,6 +1,7 @@
1
1
  require "gauss/version"
2
2
  require "statsd"
3
3
  require 'benchmark'
4
+ require 'pry'
4
5
 
5
6
  module Gauss
6
7
  class << self
@@ -39,6 +40,7 @@ module Gauss
39
40
  p "#{name}: #{m}"
40
41
  r
41
42
  else
43
+
42
44
  Gauss::metrics.time(name) { yield }
43
45
  end
44
46
  end
@@ -1,3 +1,3 @@
1
1
  module Gauss
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -0,0 +1,147 @@
1
+ require 'test_helper'
2
+
3
+ describe Gauss do
4
+ before do
5
+ reset_gauss
6
+
7
+ class T
8
+ include Gauss
9
+ include Tester
10
+ end
11
+
12
+ Gauss::mode = :local
13
+ end
14
+
15
+ after do
16
+ Object.send(:remove_const, :T) rescue nil
17
+ end
18
+
19
+ it 'asserts true' do
20
+ true.must_equal true
21
+ end
22
+
23
+ it 'uses rails app name as prefix' do
24
+ class Gauss::Rails
25
+ def self.application
26
+ App.new
27
+ end
28
+
29
+ class App
30
+ def self.parent_name
31
+ return "test_app"
32
+ end
33
+ end
34
+ end
35
+
36
+ class T
37
+ include Gauss
38
+ end
39
+
40
+ T.new.prefix.must_equal "test_app"
41
+
42
+ # cleanup
43
+ Gauss.send(:remove_const, :Rails)
44
+ end
45
+
46
+ it 'lets you override the prefix' do
47
+ Gauss::benchmark_prefix = "test_prefix"
48
+ Gauss::prefix.must_equal "test_prefix"
49
+ end
50
+
51
+ it 'executes code in the given block' do
52
+ class TestException < StandardError; end
53
+
54
+ class T
55
+ def test
56
+ benchmark {
57
+ raise TestException
58
+ }
59
+ end
60
+ end
61
+
62
+ assert_raises(TestException) {
63
+ T.new.test
64
+ }
65
+ end
66
+
67
+ it 'outputs timing in local mode' do
68
+ class T
69
+ def test
70
+ benchmark {
71
+ 1+1
72
+ }
73
+ end
74
+ end
75
+
76
+ out, _ = capture_io { T.new.test }
77
+ assert_match /t\.test/, out
78
+ end
79
+
80
+ it 'uses optional suffix for the name' do
81
+ class T
82
+ def test
83
+ benchmark("test_suffix") {
84
+ 1+1
85
+ }
86
+ end
87
+ end
88
+
89
+ out, _ = capture_io { T.new.test }
90
+ assert_match /t\.test.*test_suffix/, out
91
+ end
92
+
93
+ it 'doesnt output anything if not in localmode' do
94
+ Gauss::mode = :non_local
95
+ class T
96
+ def test
97
+ benchmark("test_suffix") {
98
+ 1+1
99
+ }
100
+ end
101
+ end
102
+
103
+ out, _ = capture_io { T.new.test }
104
+ out.must_equal ""
105
+ end
106
+
107
+ it 'calls metrics.time when not in localmode' do
108
+ class O
109
+ def time(_, &__)
110
+ "test_worked"
111
+ end
112
+ end
113
+
114
+ Gauss::mode = :non_local
115
+ Gauss::metrics = O.new
116
+ class T
117
+ def test
118
+ benchmark {
119
+ 1+1
120
+ }
121
+ end
122
+ end
123
+
124
+ T.new.test.must_equal "test_worked"
125
+ Object.send(:remove_const, :O) rescue nil
126
+ end
127
+
128
+ it 'uses statsd with envvars by default' do
129
+ old_server = ENV["STATSD_SERVER"]
130
+ old_port = ENV["STATSD_SERVER_PORT"]
131
+ ENV["STATSD_SERVER"] = "test_server"
132
+ ENV["STATSD_SERVER_PORT"] = "test_port"
133
+
134
+ reset_gauss
135
+ class T
136
+ include Gauss
137
+ end
138
+
139
+ begin
140
+ Gauss::metrics.host.must_equal "test_server"
141
+ Gauss::metrics.port.must_equal "test_port"
142
+ ensure
143
+ ENV["STATSD_SERVER"] = old_server
144
+ ENV["STATSD_SERVER_PORT"] = old_port
145
+ end
146
+ end
147
+ end
@@ -0,0 +1,11 @@
1
+ require 'test_helper'
2
+
3
+ describe Gauss::Strings do
4
+ it "underscores" do
5
+ Gauss::Strings::underscore("ThisThing").must_equal "this_thing"
6
+ Gauss::Strings::underscore("ThisOtherThing").must_equal "this_other_thing"
7
+ Gauss::Strings::underscore("T1Thing").must_equal "t1_thing"
8
+ Gauss::Strings::underscore("TTThing").must_equal "tt_thing"
9
+ Gauss::Strings::underscore("TTiThing").must_equal "t_ti_thing"
10
+ end
11
+ end
@@ -0,0 +1,16 @@
1
+ require 'minitest/spec'
2
+ require 'minitest/autorun'
3
+ require 'gauss'
4
+ require 'ostruct'
5
+
6
+ module Tester
7
+ def method_missing(meth, *args)
8
+ Gauss.send(meth)
9
+ end
10
+ end
11
+
12
+ def reset_gauss
13
+ Gauss::prefix = nil
14
+ Gauss::metrics = nil
15
+ Gauss::mode = nil
16
+ end
metadata CHANGED
@@ -1,7 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gauss
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Alejandro Ciniglio
@@ -9,11 +10,12 @@ authors:
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2013-07-18 00:00:00.000000000 Z
13
+ date: 2013-07-24 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: bundler
16
17
  requirement: !ruby/object:Gem::Requirement
18
+ none: false
17
19
  requirements:
18
20
  - - ~>
19
21
  - !ruby/object:Gem::Version
@@ -21,6 +23,7 @@ dependencies:
21
23
  type: :development
22
24
  prerelease: false
23
25
  version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
24
27
  requirements:
25
28
  - - ~>
26
29
  - !ruby/object:Gem::Version
@@ -28,43 +31,49 @@ dependencies:
28
31
  - !ruby/object:Gem::Dependency
29
32
  name: rake
30
33
  requirement: !ruby/object:Gem::Requirement
34
+ none: false
31
35
  requirements:
32
- - - '>='
36
+ - - ! '>='
33
37
  - !ruby/object:Gem::Version
34
38
  version: '0'
35
39
  type: :development
36
40
  prerelease: false
37
41
  version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
38
43
  requirements:
39
- - - '>='
44
+ - - ! '>='
40
45
  - !ruby/object:Gem::Version
41
46
  version: '0'
42
47
  - !ruby/object:Gem::Dependency
43
48
  name: pry
44
49
  requirement: !ruby/object:Gem::Requirement
50
+ none: false
45
51
  requirements:
46
- - - '>='
52
+ - - ! '>='
47
53
  - !ruby/object:Gem::Version
48
54
  version: '0'
49
55
  type: :development
50
56
  prerelease: false
51
57
  version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
52
59
  requirements:
53
- - - '>='
60
+ - - ! '>='
54
61
  - !ruby/object:Gem::Version
55
62
  version: '0'
56
63
  - !ruby/object:Gem::Dependency
57
64
  name: statsd-ruby
58
65
  requirement: !ruby/object:Gem::Requirement
66
+ none: false
59
67
  requirements:
60
- - - '>='
68
+ - - ! '>='
61
69
  - !ruby/object:Gem::Version
62
70
  version: '0'
63
71
  type: :runtime
64
72
  prerelease: false
65
73
  version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
66
75
  requirements:
67
- - - '>='
76
+ - - ! '>='
68
77
  - !ruby/object:Gem::Version
69
78
  version: '0'
70
79
  description: Easy statsd metrics at the method level
@@ -82,28 +91,41 @@ files:
82
91
  - gauss.gemspec
83
92
  - lib/gauss.rb
84
93
  - lib/gauss/version.rb
94
+ - test/gauss_test.rb
95
+ - test/string_test.rb
96
+ - test/test_helper.rb
85
97
  homepage: http://github.com/adaptly/gauss
86
98
  licenses:
87
99
  - MIT
88
- metadata: {}
89
100
  post_install_message:
90
101
  rdoc_options: []
91
102
  require_paths:
92
103
  - lib
93
104
  required_ruby_version: !ruby/object:Gem::Requirement
105
+ none: false
94
106
  requirements:
95
- - - '>='
107
+ - - ! '>='
96
108
  - !ruby/object:Gem::Version
97
109
  version: '0'
110
+ segments:
111
+ - 0
112
+ hash: -2838724056170217821
98
113
  required_rubygems_version: !ruby/object:Gem::Requirement
114
+ none: false
99
115
  requirements:
100
- - - '>='
116
+ - - ! '>='
101
117
  - !ruby/object:Gem::Version
102
118
  version: '0'
119
+ segments:
120
+ - 0
121
+ hash: -2838724056170217821
103
122
  requirements: []
104
123
  rubyforge_project:
105
- rubygems_version: 2.0.0.rc.2
124
+ rubygems_version: 1.8.23
106
125
  signing_key:
107
- specification_version: 4
126
+ specification_version: 3
108
127
  summary: Uses smart defaults for statsd timers
109
- test_files: []
128
+ test_files:
129
+ - test/gauss_test.rb
130
+ - test/string_test.rb
131
+ - test/test_helper.rb
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 4a5a934628f0eaab6d8a015ef4482c76e13de451
4
- data.tar.gz: a045b03de88b8d5d4c47541d9238b5056bf15be2
5
- SHA512:
6
- metadata.gz: 1e8ef2f96cb3bc2296eae76d790e60d2cdc8a7844c9a954f6501f4b50e16420293faae7845d4179cffb53b53bb5e4559c73b83cead6f5236d62d092568dc0aa7
7
- data.tar.gz: 552e23c79f700c22ea8d1df1e8bf642d33c20804fa85f47b737647664ff45a90fbaa136f86546876ebd673b91e39696e69b880267b3a5417be0f06b012a5235c