test/instrumentation_test.rb in newrelic_moped-0.0.3 vs test/instrumentation_test.rb in newrelic_moped-0.0.4
- old
+ new
@@ -1,10 +1,11 @@
require 'ostruct'
require 'test/unit'
require 'moped'
require File.expand_path(File.dirname(__FILE__) + '/../lib/newrelic_moped/instrumentation')
+require File.expand_path(File.dirname(__FILE__) + '/moped_command_fake')
class FakeOpWithCollection < Struct.new(:collection, :log_inspect)
end
class FakeOpWithoutCollection < Struct.new(:log_inspect)
@@ -12,22 +13,20 @@
class TestInstrumentation < Test::Unit::TestCase
include NewRelic::Agent::Instrumentation::ControllerInstrumentation
def setup
- DependencyDetection.detect!
NewRelic::Agent.manual_start
@engine = NewRelic::Agent.instance.stats_engine
@engine.clear_stats
@sampler = NewRelic::Agent.instance.transaction_sampler
- @sampler.enable
@sampler.reset!
@sampler.start_builder
Moped::Node.class_eval do
- def process_without_newrelic_trace(operation, &callback)
+ def logging_with_newrelic_trace(operations, &callback)
# do nothing
end
end
@node = Moped::Node.new("127.0.0.1:27017")
@@ -39,17 +38,49 @@
def test_handles_operations_with_collections
fake_op = FakeOpWithCollection.new([], "Fake")
assert_nothing_raised do
- @node.process_with_newrelic_trace(fake_op)
+ @node.logging_with_newrelic_trace(fake_op)
end
end
def test_ignores_operations_without_collection
fake_op = FakeOpWithoutCollection.new("Fake")
assert_nothing_raised do
- @node.process_with_newrelic_trace(fake_op)
+ @node.logging_with_newrelic_trace(fake_op)
end
+ end
+end
+
+class NewRelicMopedInstrumentationTest < Test::Unit::TestCase
+ include NewRelic::Moped::Instrumentation
+
+ def test_when_command_is_mapreduce
+ command = MopedCommandWithCollectionFake.new("COMMAND database=my_database command={:mapreduce=>\"users\", :query=>{}}", "other_collection")
+ operation, collection = determine_operation_and_collection(command)
+ assert_equal("MAPREDUCE", operation)
+ assert_equal("users", collection, "it should parse collection from statement")
+ end
+
+ def test_query_when_operation_responds_to_collection
+ command = MopedCommandWithCollectionFake.new("QUERY database=my_database collection=xyz", "users")
+ operation, collection = determine_operation_and_collection(command)
+ assert_equal("QUERY", operation)
+ assert_equal("users", collection, "it should use collection from operation")
+ end
+
+ def test_when_command_is_count
+ command = MopedCommandWithCollectionFake.new("COMMAND database=my_database command={:count=>\"users\", query=>{}}", "other_collection")
+ operation, collection = determine_operation_and_collection(command)
+ assert_equal("COUNT", operation)
+ assert_equal("users", collection, "it should parse collection from statement")
+ end
+
+ def test_command_when_operation_does_not_respond_to_collection
+ command = MopedCommandFake.new("COMMAND database=admin command={:ismaster=>1}")
+ operation, collection = determine_operation_and_collection(command)
+ assert_equal("COMMAND", operation)
+ assert_equal("Unknown", collection, "it should set collection name to Unknown")
end
end