test/instrumentation/cassandra_test.rb in oboe-2.3.2 vs test/instrumentation/cassandra_test.rb in oboe-2.3.3.7

- old
+ new

@@ -2,15 +2,33 @@ describe Oboe::Inst::Cassandra do before do clear_all_traces - @client = Cassandra.new('TRCassInstr', '127.0.0.1:9160', - :retries => 2, :connect_timeout => 1, - :timeout => 5) + @client = Cassandra.new("system", "127.0.0.1:9160", { :timeout => 10 }) @client.disable_node_auto_discovery! + @ks_name = "AppNetaCassandraTest" + + ks_def = CassandraThrift::KsDef.new(:name => @ks_name, + :strategy_class => "SimpleStrategy", + :strategy_options => { 'replication_factor' => '2' }, + :cf_defs => []) + + @client.add_keyspace(ks_def) unless @client.keyspaces.include? @ks_name + @client.keyspace = @ks_name + + unless @client.column_families.include? "Users" + cf_def = CassandraThrift::CfDef.new(:keyspace => @ks_name, :name => "Users") + @client.add_column_family(cf_def) + end + + unless @client.column_families.include? "Statuses" + cf_def = CassandraThrift::CfDef.new(:keyspace => @ks_name, :name => "Statuses") + @client.add_column_family(cf_def) + end + # These are standard entry/exit KVs that are passed up with all mongo operations @entry_kvs = { 'Layer' => 'cassandra', 'Label' => 'entry', 'RemoteHost' => '127.0.0.1', @@ -52,11 +70,11 @@ validate_outer_layers(traces, 'cassandra_test') validate_event_keys(traces[1], @entry_kvs) traces[1]['Op'].must_equal "insert" traces[1]['Cf'].must_equal "Users" - traces[1]['Key'].must_equal "5" + traces[1]['Key'].must_equal "\"5\"" traces[1]['Consistency'].must_equal "1" traces[1]['Ttl'].must_equal "600" traces[1].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces] validate_event_keys(traces[2], @exit_kvs) end @@ -72,11 +90,11 @@ validate_outer_layers(traces, 'cassandra_test') validate_event_keys(traces[1], @entry_kvs) traces[1]['Op'].must_equal "remove" traces[1]['Cf'].must_equal "Users" - traces[1]['Key'].must_equal "5" + traces[1]['Key'].must_equal "\"5\"" traces[1].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces] validate_event_keys(traces[2], @exit_kvs) end it 'should trace count_columns' do @@ -92,11 +110,11 @@ validate_outer_layers(traces, 'cassandra_test') validate_event_keys(traces[1], @entry_kvs) traces[1]['Op'].must_equal "count_columns" traces[1]['Cf'].must_equal "Statuses" - traces[1]['Key'].must_equal "12" + traces[1]['Key'].must_equal "\"12\"" traces[1]['Count'].must_equal "50" traces[1].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces] validate_event_keys(traces[2], @exit_kvs) end @@ -111,11 +129,11 @@ validate_outer_layers(traces, 'cassandra_test') validate_event_keys(traces[1], @entry_kvs) traces[1]['Op'].must_equal "get_columns" traces[1]['Cf'].must_equal "Statuses" - traces[1]['Key'].must_equal "12" + traces[1]['Key'].must_equal "\"12\"" traces[1].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces] validate_event_keys(traces[2], @exit_kvs) end it 'should trace multi_get_columns' do @@ -147,11 +165,11 @@ validate_outer_layers(traces, 'cassandra_test') validate_event_keys(traces[1], @entry_kvs) traces[1]['Op'].must_equal "get" traces[1]['Cf'].must_equal "Statuses" - traces[1]['Key'].must_equal "12" + traces[1]['Key'].must_equal "\"12\"" traces[1]['Reversed'].must_equal "true" traces[1].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces] validate_event_keys(traces[2], @exit_kvs) end @@ -167,17 +185,17 @@ validate_outer_layers(traces, 'cassandra_test') validate_event_keys(traces[1], @entry_kvs) traces[1]['Op'].must_equal "exists?" traces[1]['Cf'].must_equal "Statuses" - traces[1]['Key'].must_equal "12" + traces[1]['Key'].must_equal "\"12\"" traces[1].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces] validate_event_keys(traces[2], @exit_kvs) traces[3]['Op'].must_equal "exists?" traces[3]['Cf'].must_equal "Statuses" - traces[3]['Key'].must_equal "12" + traces[3]['Key'].must_equal "\"12\"" traces[3].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces] end it 'should trace get_range_keys' do Oboe::API.start_trace('cassandra_test', '', {}) do @@ -194,41 +212,57 @@ traces[1]['Cf'].must_equal "Statuses" traces[1].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces] validate_event_keys(traces[2], @exit_kvs) end - it 'should trace create_index and drop_index' do + it 'should trace create_index' do Oboe::API.start_trace('cassandra_test', '', {}) do - @client.create_index('TRCassInstr', 'Statuses', 'x', 'LongType') - @client.drop_index('TRCassInstr', 'Statuses', 'x') + @client.create_index(@ks_name, 'Statuses', 'column_name', 'LongType') end - + traces = get_all_traces - traces.count.must_equal 6 + traces.count.must_equal 4 validate_outer_layers(traces, 'cassandra_test') validate_event_keys(traces[1], @entry_kvs) traces[1]['Op'].must_equal "create_index" traces[1]['Cf'].must_equal "Statuses" - traces[1]['Keyspace'].must_equal "TRCassInstr" - traces[1]['Column_name'].must_equal "x" + traces[1]['Keyspace'].must_equal @ks_name + traces[1]['Column_name'].must_equal "column_name" traces[1]['Validation_class'].must_equal "LongType" traces[1].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces] validate_event_keys(traces[2], @exit_kvs) - validate_event_keys(traces[3], @entry_kvs) - traces[3]['Op'].must_equal "drop_index" - traces[3]['Cf'].must_equal "Statuses" - traces[3]['Keyspace'].must_equal "TRCassInstr" - traces[3]['Column_name'].must_equal "x" - traces[3].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces] - validate_event_keys(traces[4], @exit_kvs) + # Clean up + @client.drop_index(@ks_name, 'Statuses', 'column_name') end + + it 'should trace drop_index' do + # Prep + @client.create_index(@ks_name, 'Statuses', 'column_name', 'LongType') + Oboe::API.start_trace('cassandra_test', '', {}) do + @client.drop_index(@ks_name, 'Statuses', 'column_name') + end + + traces = get_all_traces + + traces.count.must_equal 4 + validate_outer_layers(traces, 'cassandra_test') + + validate_event_keys(traces[1], @entry_kvs) + traces[1]['Op'].must_equal "drop_index" + traces[1]['Cf'].must_equal "Statuses" + traces[1]['Keyspace'].must_equal @ks_name + traces[1]['Column_name'].must_equal "column_name" + traces[1].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces] + validate_event_keys(traces[2], @exit_kvs) + end + it 'should trace get_indexed_slices' do - @client.create_index('TRCassInstr', 'Statuses', 'x', 'LongType') + @client.create_index(@ks_name, 'Statuses', 'x', 'LongType') Oboe::API.start_trace('cassandra_test', '', {}) do expressions = [ { :column_name => 'x', :value => [0,20].pack("NN"), :comparison => "=="}, @@ -250,11 +284,11 @@ validate_event_keys(traces[2], @exit_kvs) end it 'should trace add and remove of column family' do cf_name = (0...10).map{ ('a'..'z').to_a[rand(26)] }.join - cf_def = CassandraThrift::CfDef.new(:keyspace => "TRCassInstr", :name => cf_name) + cf_def = CassandraThrift::CfDef.new(:keyspace => @ks_name, :name => cf_name) Oboe::API.start_trace('cassandra_test', '', {}) do @client.add_column_family(cf_def) @client.drop_column_family(cf_name) end @@ -272,37 +306,49 @@ traces[3]['Op'].must_equal "drop_column_family" traces[3]['Cf'].must_equal cf_name traces[3].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces] end - it 'should trace add and remove of keyspace' do + it 'should trace adding a keyspace' do ks_name = (0...10).map{ ('a'..'z').to_a[rand(26)] }.join column_families = [{:name =>"a"}, {:name => "b", :type => :super}] ks_def = CassandraThrift::KsDef.new(:name => ks_name, :strategy_class => "org.apache.cassandra.locator.SimpleStrategy", - :replication_factor => 1, + :strategy_options => { 'replication_factor' => '2' }, :cf_defs => []) Oboe::API.start_trace('cassandra_test', '', {}) do @client.add_keyspace(ks_def) @client.keyspace = ks_name - @client.drop_keyspace(ks_name) end traces = get_all_traces - traces.count.must_equal 6 + traces.count.must_equal 4 validate_outer_layers(traces, 'cassandra_test') validate_event_keys(traces[1], @entry_kvs) traces[1]['Op'].must_equal "add_keyspace" traces[1]['Name'].must_equal ks_name traces[1].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces] validate_event_keys(traces[2], @exit_kvs) + end + + it 'should trace the removal of a keyspace' do + Oboe::API.start_trace('cassandra_test', '', {}) do + @client.drop_keyspace(@ks_name) + end - traces[3]['Op'].must_equal "drop_keyspace" - traces[3]['Name'].must_equal ks_name - traces[3].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces] + traces = get_all_traces + + traces.count.must_equal 4 + validate_outer_layers(traces, 'cassandra_test') + + validate_event_keys(traces[1], @entry_kvs) + traces[1]['Op'].must_equal "drop_keyspace" + traces[1]['Name'].must_equal @ks_name + traces[1].has_key?('Backtrace').must_equal Oboe::Config[:cassandra][:collect_backtraces] + validate_event_keys(traces[2], @exit_kvs) end it "should obey :collect_backtraces setting when true" do Oboe::Config[:cassandra][:collect_backtraces] = true