newrelic-redis 1.2.0 → 1.3.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/History.txt +6 -0
- data/Rakefile +40 -0
- data/lib/newrelic_redis/instrumentation.rb +8 -3
- data/lib/newrelic_redis/version.rb +1 -1
- data/newrelic-redis.gemspec +3 -3
- data/test/test_newrelic_redis.rb +10 -25
- metadata +5 -5
data/History.txt
CHANGED
data/Rakefile
CHANGED
@@ -3,6 +3,46 @@
|
|
3
3
|
require 'rubygems'
|
4
4
|
require 'hoe'
|
5
5
|
|
6
|
+
REDIS_DIR = File.expand_path(File.join("..", "test"), __FILE__)
|
7
|
+
REDIS_CNF = File.join(REDIS_DIR, "test.conf")
|
8
|
+
REDIS_PID = File.join(REDIS_DIR, "db", "redis.pid")
|
9
|
+
|
10
|
+
task :default => :run
|
11
|
+
|
12
|
+
desc "Run tests and manage server start/stop"
|
13
|
+
task :run => [:start, :test, :stop]
|
14
|
+
|
15
|
+
desc "Start the Redis server"
|
16
|
+
task :start do
|
17
|
+
redis_running = \
|
18
|
+
begin
|
19
|
+
File.exists?(REDIS_PID) && Process.kill(0, File.read(REDIS_PID).to_i)
|
20
|
+
rescue Errno::ESRCH
|
21
|
+
FileUtils.rm REDIS_PID
|
22
|
+
false
|
23
|
+
end
|
24
|
+
|
25
|
+
unless redis_running
|
26
|
+
unless system("which redis-server")
|
27
|
+
STDERR.puts "redis-server not in PATH"
|
28
|
+
exit 1
|
29
|
+
end
|
30
|
+
|
31
|
+
unless system("redis-server #{REDIS_CNF}")
|
32
|
+
STDERR.puts "could not start redis-server"
|
33
|
+
exit 1
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
desc "Stop the Redis server"
|
39
|
+
task :stop do
|
40
|
+
if File.exists?(REDIS_PID)
|
41
|
+
Process.kill "INT", File.read(REDIS_PID).to_i
|
42
|
+
FileUtils.rm REDIS_PID
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
6
46
|
Hoe.plugin :bundler
|
7
47
|
Hoe.plugin :gemspec
|
8
48
|
Hoe.plugin :git
|
@@ -5,6 +5,11 @@ require 'redis'
|
|
5
5
|
# Originally contributed by Ashley Martens of ngmoco
|
6
6
|
# Rewritten, reorganized, and repackaged by Evan Phoenix
|
7
7
|
|
8
|
+
load_probes =
|
9
|
+
!NewRelic::Control.instance['disable_redis'] &&
|
10
|
+
ENV['NEWRELIC_ENABLE'].to_s !~ /false|off|no/i
|
11
|
+
|
12
|
+
# load_probes checked as a post condition
|
8
13
|
::Redis::Client.class_eval do
|
9
14
|
|
10
15
|
include NewRelic::Agent::MethodTracer
|
@@ -44,7 +49,7 @@ require 'redis'
|
|
44
49
|
# Don't bother supporting them for now.
|
45
50
|
#
|
46
51
|
if public_method_defined? :call_pipelined
|
47
|
-
def call_pipelined_with_newrelic_trace(commands,
|
52
|
+
def call_pipelined_with_newrelic_trace(commands, *rest)
|
48
53
|
if NewRelic::Agent::Instrumentation::MetricFrame.recording_web_transaction?
|
49
54
|
total_metric = 'Database/Redis/allWeb'
|
50
55
|
else
|
@@ -66,7 +71,7 @@ require 'redis'
|
|
66
71
|
start = Time.now
|
67
72
|
|
68
73
|
begin
|
69
|
-
call_pipelined_without_newrelic_trace commands,
|
74
|
+
call_pipelined_without_newrelic_trace commands, *rest
|
70
75
|
ensure
|
71
76
|
s = NewRelic::Agent.instance.transaction_sampler
|
72
77
|
s.notice_nosql(commands.inspect, (Time.now - start).to_f) rescue nil
|
@@ -78,5 +83,5 @@ require 'redis'
|
|
78
83
|
alias_method :call_pipelined_without_newrelic_trace, :call_pipelined
|
79
84
|
alias_method :call_pipelined, :call_pipelined_with_newrelic_trace
|
80
85
|
end
|
81
|
-
end
|
86
|
+
end if load_probes
|
82
87
|
|
data/newrelic-redis.gemspec
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = "newrelic-redis"
|
5
|
-
s.version = "1.
|
5
|
+
s.version = "1.3.0"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Evan Phoenix"]
|
9
|
-
s.date = "2012-
|
9
|
+
s.date = "2012-05-17"
|
10
10
|
s.description = "Redis instrumentation for Newrelic."
|
11
11
|
s.email = ["evan@phx.io"]
|
12
12
|
s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.txt"]
|
@@ -15,7 +15,7 @@ Gem::Specification.new do |s|
|
|
15
15
|
s.rdoc_options = ["--main", "README.txt"]
|
16
16
|
s.require_paths = ["lib"]
|
17
17
|
s.rubyforge_project = "newrelic-redis"
|
18
|
-
s.rubygems_version = "1.8.
|
18
|
+
s.rubygems_version = "1.8.22"
|
19
19
|
s.summary = "Redis instrumentation for Newrelic."
|
20
20
|
s.test_files = ["test/test_newrelic_redis.rb"]
|
21
21
|
|
data/test/test_newrelic_redis.rb
CHANGED
@@ -6,20 +6,8 @@ require 'newrelic_redis/instrumentation'
|
|
6
6
|
class TestNewRelicRedis < Test::Unit::TestCase
|
7
7
|
include NewRelic::Agent::Instrumentation::ControllerInstrumentation
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
end
|
12
|
-
|
13
|
-
def read(*args)
|
14
|
-
end
|
15
|
-
|
16
|
-
def process(*args)
|
17
|
-
@process_args = args
|
18
|
-
end
|
19
|
-
|
20
|
-
attr_reader :process_args
|
21
|
-
|
22
|
-
end
|
9
|
+
PORT = 6381
|
10
|
+
OPTIONS = {:port => PORT, :db => 15, :timeout => 0.1}
|
23
11
|
|
24
12
|
def setup
|
25
13
|
NewRelic::Agent.manual_start
|
@@ -31,11 +19,8 @@ class TestNewRelicRedis < Test::Unit::TestCase
|
|
31
19
|
@sampler.reset!
|
32
20
|
@sampler.start_builder
|
33
21
|
|
34
|
-
@redis = Redis.new
|
22
|
+
@redis = Redis.new OPTIONS
|
35
23
|
@client = @redis.client
|
36
|
-
class << @client
|
37
|
-
include StubProcess
|
38
|
-
end
|
39
24
|
end
|
40
25
|
|
41
26
|
def teardown
|
@@ -43,31 +28,31 @@ class TestNewRelicRedis < Test::Unit::TestCase
|
|
43
28
|
end
|
44
29
|
|
45
30
|
def assert_metrics(*m)
|
46
|
-
|
31
|
+
m.each do |x|
|
32
|
+
assert @engine.metrics.include?(x), "#{x} not in metrics"
|
33
|
+
end
|
47
34
|
end
|
48
35
|
|
49
36
|
def test_call
|
50
37
|
@redis.hgetall "foo"
|
51
|
-
assert_equal [[[:hgetall, "foo"]]], @client.process_args
|
52
38
|
assert_metrics "Database/Redis/HGETALL", "Database/Redis/allOther"
|
53
39
|
|
54
40
|
prm = @sampler.builder.current_segment.params
|
55
|
-
assert_equal "[[:hgetall, \"foo\"]]", prm[:key]
|
41
|
+
assert_equal "[[:select, 15]];\n[[:hgetall, \"foo\"]]", prm[:key]
|
56
42
|
end
|
57
43
|
|
58
44
|
def test_call_pipelined
|
59
45
|
@redis.pipelined do
|
60
46
|
@redis.hgetall "foo"
|
61
|
-
@redis.
|
47
|
+
@redis.incr "bar"
|
62
48
|
end
|
63
49
|
|
64
|
-
assert_equal [[[:hgetall, "foo"], [:inc, "bar"]]], @client.process_args
|
65
50
|
assert_metrics "Database/Redis/Pipelined",
|
66
51
|
"Database/Redis/Pipelined/HGETALL",
|
67
|
-
"Database/Redis/Pipelined/
|
52
|
+
"Database/Redis/Pipelined/INCR",
|
68
53
|
"Database/Redis/allOther"
|
69
54
|
|
70
55
|
prm = @sampler.builder.current_segment.params
|
71
|
-
assert_equal "[[:hgetall, \"foo\"], [:
|
56
|
+
assert_equal "[[:select, 15]];\n[[:hgetall, \"foo\"], [:incr, \"bar\"]]", prm[:key]
|
72
57
|
end
|
73
58
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: newrelic-redis
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 27
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
|
-
-
|
8
|
+
- 3
|
9
9
|
- 0
|
10
|
-
version: 1.
|
10
|
+
version: 1.3.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Evan Phoenix
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-
|
18
|
+
date: 2012-05-17 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: redis
|
@@ -130,7 +130,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
130
130
|
requirements: []
|
131
131
|
|
132
132
|
rubyforge_project: newrelic-redis
|
133
|
-
rubygems_version: 1.8.
|
133
|
+
rubygems_version: 1.8.22
|
134
134
|
signing_key:
|
135
135
|
specification_version: 3
|
136
136
|
summary: Redis instrumentation for Newrelic.
|