traceview 3.7.0-java → 3.7.1-java

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,585 @@
1
+ # Copyright (c) 2015 AppNeta, Inc.
2
+ # All rights reserved.
3
+
4
+ require 'minitest_helper'
5
+
6
+ unless ENV['TV_MONGO_SERVER']
7
+ ENV['TV_MONGO_SERVER'] = "127.0.0.1:27017"
8
+ end
9
+
10
+ if defined?(::Mongo::VERSION) && Mongo::VERSION >= '2.0.0'
11
+ describe "MongoCollection" do
12
+ before do
13
+ clear_all_traces
14
+
15
+ @client = Mongo::Client.new([ ENV['TV_MONGO_SERVER'] ], :database => "traceview-#{ENV['RACK_ENV']}")
16
+ @db = @client.database
17
+
18
+ if Mongo::VERSION < '2.2'
19
+ Mongo::Logger.logger.level = Logger::INFO
20
+ else
21
+ @client.logger.level = Logger::INFO
22
+ end
23
+
24
+ @collections = @db.collection_names
25
+ @testCollection = @client[:test_collection]
26
+ @testCollection.create unless @collections.include? "test_collection"
27
+
28
+ # These are standard entry/exit KVs that are passed up with all mongo operations
29
+ @entry_kvs = {
30
+ 'Layer' => 'mongo',
31
+ 'Label' => 'entry',
32
+ 'Flavor' => 'mongodb',
33
+ 'Database' => 'traceview-test',
34
+ 'RemoteHost' => ENV['TV_MONGO_SERVER'] }
35
+
36
+ @exit_kvs = { 'Layer' => 'mongo', 'Label' => 'exit' }
37
+ @collect_backtraces = TraceView::Config[:mongo][:collect_backtraces]
38
+ end
39
+
40
+ after do
41
+ TraceView::Config[:mongo][:collect_backtraces] = @collect_backtraces
42
+
43
+ if @db.collection_names.include?("temp_collection")
44
+ @db[:temp_collection].drop
45
+ end
46
+ end
47
+
48
+ it "should trace collection creation" do
49
+ r = nil
50
+ collection = @db[:temp_collection]
51
+ TraceView::API.start_trace('mongo_test', nil, {}) do
52
+ r = collection.create
53
+ end
54
+
55
+ traces = get_all_traces
56
+ traces.count.must_equal 4
57
+
58
+ r.must_be_instance_of ::Mongo::Operation::Result
59
+ if Mongo::VERSION < '2.2'
60
+ r.successful?.must_equal true
61
+ else
62
+ r.ok?.must_equal true
63
+ end
64
+
65
+ validate_outer_layers(traces, 'mongo_test')
66
+ validate_event_keys(traces[1], @entry_kvs)
67
+ validate_event_keys(traces[2], @exit_kvs)
68
+
69
+ traces[1]['QueryOp'].must_equal "create"
70
+ traces[1]['New_Collection_Name'].must_equal "temp_collection"
71
+ traces[1].has_key?('Backtrace').must_equal TraceView::Config[:mongo][:collect_backtraces]
72
+ end
73
+
74
+ it "should trace drop_collection" do
75
+ r = nil
76
+ collection = @db[:deleteme_collection]
77
+
78
+ # Create something to drop unless it already exists
79
+ unless @db.collection_names.include?("deleteme_collection")
80
+ collection.create
81
+ end
82
+
83
+ TraceView::API.start_trace('mongo_test', nil, {}) do
84
+ r = collection.drop
85
+ end
86
+
87
+ traces = get_all_traces
88
+ traces.count.must_equal 4
89
+
90
+ r.must_be_instance_of ::Mongo::Operation::Result
91
+ if Mongo::VERSION < '2.2'
92
+ r.successful?.must_equal true
93
+ else
94
+ r.ok?.must_equal true
95
+ end
96
+
97
+ validate_outer_layers(traces, 'mongo_test')
98
+ validate_event_keys(traces[1], @entry_kvs)
99
+ validate_event_keys(traces[2], @exit_kvs)
100
+
101
+ traces[1]['QueryOp'].must_equal "drop"
102
+ traces[1]['Collection'].must_equal "deleteme_collection"
103
+ traces[1].has_key?('Backtrace').must_equal TraceView::Config[:mongo][:collect_backtraces]
104
+ end
105
+
106
+ it "should capture collection creation errors" do
107
+ collection = @db[:temp_collection]
108
+ collection.create
109
+
110
+ begin
111
+ TraceView::API.start_trace('mongo_test', nil, {}) do
112
+ collection.create
113
+ end
114
+ rescue
115
+ end
116
+
117
+ traces = get_all_traces
118
+ traces.count.must_equal 5
119
+
120
+ validate_outer_layers(traces, 'mongo_test')
121
+ validate_event_keys(traces[1], @entry_kvs)
122
+ validate_event_keys(traces[3], @exit_kvs)
123
+
124
+ traces[1]['QueryOp'].must_equal "create"
125
+ traces[1]['New_Collection_Name'].must_equal "temp_collection"
126
+ traces[1].has_key?('Backtrace').must_equal TraceView::Config[:mongo][:collect_backtraces]
127
+
128
+ traces[2]['Layer'].must_equal "mongo"
129
+ traces[2]['Label'].must_equal "error"
130
+ traces[2]['ErrorClass'].must_equal "Mongo::Error::OperationFailure"
131
+ traces[2]['ErrorMsg'].must_equal "collection already exists ()"
132
+ traces[2].has_key?('Backtrace').must_equal true
133
+ end
134
+
135
+ it "should trace insert_one" do
136
+ r = nil
137
+ collection = @db[:tv_collection]
138
+
139
+ TraceView::API.start_trace('mongo_test', nil, {}) do
140
+ r = collection.insert_one({ name => 'Rabel Lasen' })
141
+ end
142
+
143
+ traces = get_all_traces
144
+ traces.count.must_equal 4
145
+
146
+ r.must_be_instance_of Mongo::Operation::Write::Insert::Result
147
+ if Mongo::VERSION < '2.2'
148
+ r.successful?.must_equal true
149
+ else
150
+ r.ok?.must_equal true
151
+ end
152
+
153
+ validate_outer_layers(traces, 'mongo_test')
154
+ validate_event_keys(traces[1], @entry_kvs)
155
+ validate_event_keys(traces[2], @exit_kvs)
156
+
157
+ traces[1]['QueryOp'].must_equal "insert_one"
158
+ traces[1]['Collection'].must_equal "tv_collection"
159
+ traces[1].has_key?('Backtrace').must_equal TraceView::Config[:mongo][:collect_backtraces]
160
+ end
161
+
162
+ it "should trace insert_many" do
163
+ r = nil
164
+ collection = @db[:tv_collection]
165
+
166
+ TraceView::API.start_trace('mongo_test', nil, {}) do
167
+ r = collection.insert_many([
168
+ { :name => 'Rabel Lasen' },
169
+ { :name => 'Louval Raiden' }])
170
+ end
171
+
172
+ traces = get_all_traces
173
+ traces.count.must_equal 4
174
+
175
+ if Mongo::VERSION < '2.1'
176
+ r.must_be_instance_of Mongo::Operation::Write::Insert::Result
177
+ else
178
+ r.must_be_instance_of Mongo::BulkWrite::Result
179
+ r.inserted_count.must_equal 2
180
+ end
181
+
182
+ validate_outer_layers(traces, 'mongo_test')
183
+ validate_event_keys(traces[1], @entry_kvs)
184
+ validate_event_keys(traces[2], @exit_kvs)
185
+
186
+ traces[1]['QueryOp'].must_equal "insert_many"
187
+ traces[1]['Collection'].must_equal "tv_collection"
188
+ traces[1].has_key?('Backtrace').must_equal TraceView::Config[:mongo][:collect_backtraces]
189
+ end
190
+
191
+ it "should trace find" do
192
+ coll = @db[:test_collection]
193
+ r = nil
194
+
195
+ # Insert a doc to assure we get a result
196
+ doc = {"name" => "MyName", "type" => "MyType", "count" => 1, "info" => {"x" => 203, "y" => '102'}}
197
+ coll.insert_one(doc)
198
+
199
+ TraceView::API.start_trace('mongo_test', '', {}) do
200
+ r = coll.find(:name => "MyName", :limit => 1)
201
+ end
202
+
203
+ traces = get_all_traces
204
+ traces.count.must_equal 4
205
+
206
+ validate_outer_layers(traces, 'mongo_test')
207
+ validate_event_keys(traces[1], @entry_kvs)
208
+ validate_event_keys(traces[2], @exit_kvs)
209
+
210
+ r.must_be_instance_of Mongo::Collection::View
211
+
212
+ traces[1]['Collection'].must_equal "test_collection"
213
+ traces[1].has_key?('Backtrace').must_equal TraceView::Config[:mongo][:collect_backtraces]
214
+ traces[1]['QueryOp'].must_equal "find"
215
+ traces[1]['Query'].must_equal "{\"name\":\"MyName\",\"limit\":1}"
216
+ traces[1].has_key?('Query').must_equal true
217
+ end
218
+
219
+ it "should trace find_one_and_delete" do
220
+ skip unless Mongo::VERSION >= '2.1'
221
+
222
+ coll = @db[:test_collection]
223
+ r = nil
224
+
225
+ # Insert a doc to assure we get a result
226
+ doc = {"name" => "MyName", "type" => "MyType", "count" => 1, "info" => {"x" => 203, "y" => '102'}}
227
+ coll.insert_one(doc)
228
+
229
+ TraceView::API.start_trace('mongo_test', '', {}) do
230
+ r = coll.find_one_and_delete(:name => "MyName")
231
+ end
232
+
233
+ traces = get_all_traces
234
+ traces.count.must_equal 4
235
+
236
+ validate_outer_layers(traces, 'mongo_test')
237
+ validate_event_keys(traces[1], @entry_kvs)
238
+ validate_event_keys(traces[2], @exit_kvs)
239
+
240
+ r.must_be_instance_of BSON::Document
241
+
242
+ traces[1]['Collection'].must_equal "test_collection"
243
+ traces[1].has_key?('Backtrace').must_equal TraceView::Config[:mongo][:collect_backtraces]
244
+ traces[1]['QueryOp'].must_equal "find_one_and_delete"
245
+ traces[1]['Query'].must_equal "{\"name\":\"MyName\"}"
246
+ traces[1].has_key?('Query').must_equal true
247
+ end
248
+
249
+ it "should trace find_one_and_update" do
250
+ skip unless Mongo::VERSION >= '2.1'
251
+ coll = @db[:test_collection]
252
+ r = nil
253
+
254
+ # Insert a doc to assure we get a result
255
+ doc = {"name" => "MyName", "type" => "MyType", "count" => 1, "info" => {"x" => 203, "y" => '102'}}
256
+ coll.insert_one(doc)
257
+
258
+ TraceView::API.start_trace('mongo_test', '', {}) do
259
+ r = coll.find_one_and_update({ :name => 'MyName' }, { "$set" => { :name => 'test1' }}, :return_document => :after)
260
+ end
261
+
262
+ traces = get_all_traces
263
+ traces.count.must_equal 4
264
+
265
+ validate_outer_layers(traces, 'mongo_test')
266
+ validate_event_keys(traces[1], @entry_kvs)
267
+ validate_event_keys(traces[2], @exit_kvs)
268
+
269
+ r.must_be_instance_of BSON::Document
270
+
271
+ traces[1]['Collection'].must_equal "test_collection"
272
+ traces[1].has_key?('Backtrace').must_equal TraceView::Config[:mongo][:collect_backtraces]
273
+ traces[1]['QueryOp'].must_equal "find_one_and_update"
274
+ traces[1]['Query'].must_equal "{\"name\":\"MyName\"}"
275
+ traces[1].has_key?('Query').must_equal true
276
+ end
277
+
278
+ it "should trace find_one_and_replace" do
279
+ skip unless Mongo::VERSION >= '2.1'
280
+ coll = @db[:test_collection]
281
+ r = nil
282
+
283
+ # Insert a doc to assure we get a result
284
+ doc = {"name" => "MyName", "type" => "MyType", "count" => 1, "info" => {"x" => 203, "y" => '102'}}
285
+ coll.insert_one(doc)
286
+
287
+ TraceView::API.start_trace('mongo_test', '', {}) do
288
+ r = coll.find_one_and_replace({ :name => 'MyName' }, { "$set" => { :name => 'test1' }}, :return_document => :after)
289
+ end
290
+
291
+ traces = get_all_traces
292
+ traces.count.must_equal 4
293
+
294
+ validate_outer_layers(traces, 'mongo_test')
295
+ validate_event_keys(traces[1], @entry_kvs)
296
+ validate_event_keys(traces[2], @exit_kvs)
297
+
298
+ r.must_be_instance_of BSON::Document
299
+
300
+ traces[1]['Collection'].must_equal "test_collection"
301
+ traces[1].has_key?('Backtrace').must_equal TraceView::Config[:mongo][:collect_backtraces]
302
+ traces[1]['QueryOp'].must_equal "find_one_and_replace"
303
+ traces[1]['Query'].must_equal "{\"name\":\"MyName\"}"
304
+ traces[1].has_key?('Query').must_equal true
305
+ end
306
+
307
+ it "should trace update_one" do
308
+ skip unless Mongo::VERSION >= '2.1'
309
+
310
+ coll = @db[:test_collection]
311
+ r = nil
312
+
313
+ # Insert a doc to assure we get a result
314
+ doc = {"name" => "MyName", "type" => "MyType", "count" => 1, "info" => {"x" => 203, "y" => '102'}}
315
+ coll.insert_one(doc)
316
+
317
+ TraceView::API.start_trace('mongo_test', '', {}) do
318
+ r = coll.update_one({ :name => 'MyName' }, { "$set" => { :name => 'test1' }}, :return_document => :after)
319
+ end
320
+
321
+ traces = get_all_traces
322
+ traces.count.must_equal 4
323
+
324
+ validate_outer_layers(traces, 'mongo_test')
325
+ validate_event_keys(traces[1], @entry_kvs)
326
+ validate_event_keys(traces[2], @exit_kvs)
327
+
328
+ r.class.ancestors.include?(Mongo::Operation::Result).must_equal true
329
+
330
+ traces[1]['Collection'].must_equal "test_collection"
331
+ traces[1].has_key?('Backtrace').must_equal TraceView::Config[:mongo][:collect_backtraces]
332
+ traces[1]['QueryOp'].must_equal "update_one"
333
+ traces[1]['Query'].must_equal "{\"name\":\"MyName\"}"
334
+ traces[1].has_key?('Query').must_equal true
335
+ end
336
+
337
+ it "should trace update_many" do
338
+ skip unless Mongo::VERSION > '2.1'
339
+ coll = @db[:test_collection]
340
+ r = nil
341
+
342
+ # Insert a doc to assure we get a result
343
+ doc = {"name" => "MyName", "type" => "MyType", "count" => 1, "info" => {"x" => 203, "y" => '102'}}
344
+ coll.insert_one(doc)
345
+
346
+ TraceView::API.start_trace('mongo_test', '', {}) do
347
+ r = coll.update_many({ :name => 'MyName' }, { "$set" => { :name => 'test1' }}, :return_document => :after)
348
+ end
349
+
350
+ traces = get_all_traces
351
+ traces.count.must_equal 4
352
+
353
+ validate_outer_layers(traces, 'mongo_test')
354
+ validate_event_keys(traces[1], @entry_kvs)
355
+ validate_event_keys(traces[2], @exit_kvs)
356
+
357
+ r.class.ancestors.include?(Mongo::Operation::Result).must_equal true
358
+
359
+ traces[1]['Collection'].must_equal "test_collection"
360
+ traces[1].has_key?('Backtrace').must_equal TraceView::Config[:mongo][:collect_backtraces]
361
+ traces[1]['QueryOp'].must_equal "update_many"
362
+ traces[1]['Query'].must_equal "{\"name\":\"MyName\"}"
363
+ traces[1].has_key?('Query').must_equal true
364
+ end
365
+
366
+ it "should trace delete_one" do
367
+ skip unless Mongo::VERSION > '2.1'
368
+ coll = @db[:test_collection]
369
+ r = nil
370
+
371
+ # Insert a doc to assure we get a result
372
+ doc = {"name" => "MyName", "type" => "MyType", "count" => 1, "info" => {"x" => 203, "y" => '102'}}
373
+ coll.insert_one(doc)
374
+
375
+ TraceView::API.start_trace('mongo_test', '', {}) do
376
+ r = coll.delete_one({ :name => 'MyName' })
377
+ end
378
+
379
+ traces = get_all_traces
380
+ traces.count.must_equal 4
381
+
382
+ validate_outer_layers(traces, 'mongo_test')
383
+ validate_event_keys(traces[1], @entry_kvs)
384
+ validate_event_keys(traces[2], @exit_kvs)
385
+
386
+ r.class.ancestors.include?(Mongo::Operation::Result).must_equal true
387
+
388
+ traces[1]['Collection'].must_equal "test_collection"
389
+ traces[1].has_key?('Backtrace').must_equal TraceView::Config[:mongo][:collect_backtraces]
390
+ traces[1]['QueryOp'].must_equal "delete_one"
391
+ traces[1]['Query'].must_equal "{\"name\":\"MyName\"}"
392
+ traces[1].has_key?('Query').must_equal true
393
+ end
394
+
395
+ it "should trace delete_many" do
396
+ skip unless Mongo::VERSION > '2.1'
397
+ coll = @db[:test_collection]
398
+ r = nil
399
+
400
+ # Insert a doc to assure we get a result
401
+ doc = {"name" => "MyName", "type" => "MyType", "count" => 1, "info" => {"x" => 203, "y" => '102'}}
402
+ coll.insert_one(doc)
403
+
404
+ TraceView::API.start_trace('mongo_test', '', {}) do
405
+ r = coll.delete_many({ :name => 'MyName' })
406
+ end
407
+
408
+ traces = get_all_traces
409
+ traces.count.must_equal 4
410
+
411
+ validate_outer_layers(traces, 'mongo_test')
412
+ validate_event_keys(traces[1], @entry_kvs)
413
+ validate_event_keys(traces[2], @exit_kvs)
414
+
415
+ r.class.ancestors.include?(Mongo::Operation::Result).must_equal true
416
+
417
+ traces[1]['Collection'].must_equal "test_collection"
418
+ traces[1].has_key?('Backtrace').must_equal TraceView::Config[:mongo][:collect_backtraces]
419
+ traces[1]['QueryOp'].must_equal "delete_many"
420
+ traces[1]['Query'].must_equal "{\"name\":\"MyName\"}"
421
+ traces[1].has_key?('Query').must_equal true
422
+ end
423
+
424
+ it "should trace replace_one" do
425
+ skip unless Mongo::VERSION > '2.1'
426
+ coll = @db[:test_collection]
427
+ r = nil
428
+
429
+ # Insert a doc to assure we get a result
430
+ doc = {"name" => "MyName", "type" => "MyType", "count" => 1, "info" => {"x" => 203, "y" => '102'}}
431
+ coll.insert_one(doc)
432
+
433
+ TraceView::API.start_trace('mongo_test', '', {}) do
434
+ r = coll.replace_one({ :name => 'test' }, { :name => 'test1' })
435
+ end
436
+
437
+ traces = get_all_traces
438
+ traces.count.must_equal 4
439
+
440
+ validate_outer_layers(traces, 'mongo_test')
441
+ validate_event_keys(traces[1], @entry_kvs)
442
+ validate_event_keys(traces[2], @exit_kvs)
443
+
444
+ r.class.ancestors.include?(Mongo::Operation::Result).must_equal true
445
+
446
+ traces[1]['Collection'].must_equal "test_collection"
447
+ traces[1].has_key?('Backtrace').must_equal TraceView::Config[:mongo][:collect_backtraces]
448
+ traces[1]['QueryOp'].must_equal "replace_one"
449
+ traces[1]['Query'].must_equal "{\"name\":\"test\"}"
450
+ traces[1].has_key?('Query').must_equal true
451
+ end
452
+
453
+ it "should trace count" do
454
+ skip unless Mongo::VERSION > '2.1'
455
+ coll = @db[:test_collection]
456
+ r = nil
457
+
458
+ TraceView::API.start_trace('mongo_test', '', {}) do
459
+ r = coll.count({ :name => 'MyName' })
460
+ end
461
+
462
+ traces = get_all_traces
463
+ traces.count.must_equal 4
464
+
465
+ validate_outer_layers(traces, 'mongo_test')
466
+ validate_event_keys(traces[1], @entry_kvs)
467
+ validate_event_keys(traces[2], @exit_kvs)
468
+
469
+ r.is_a?(Numeric).must_equal true
470
+
471
+ traces[1]['Collection'].must_equal "test_collection"
472
+ traces[1].has_key?('Backtrace').must_equal TraceView::Config[:mongo][:collect_backtraces]
473
+ traces[1]['QueryOp'].must_equal "count"
474
+ traces[1]['Query'].must_equal "{\"name\":\"MyName\"}"
475
+ traces[1].has_key?('Query').must_equal true
476
+ end
477
+
478
+ it "should trace distinct" do
479
+ skip unless Mongo::VERSION > '2.1'
480
+ coll = @db[:test_collection]
481
+ r = nil
482
+
483
+ TraceView::API.start_trace('mongo_test', '', {}) do
484
+ r = coll.distinct('name', { :name => 'MyName' })
485
+ end
486
+
487
+ traces = get_all_traces
488
+ traces.count.must_equal 4
489
+
490
+ validate_outer_layers(traces, 'mongo_test')
491
+ validate_event_keys(traces[1], @entry_kvs)
492
+ validate_event_keys(traces[2], @exit_kvs)
493
+
494
+ r.is_a?(Array).must_equal true
495
+
496
+ traces[1]['Collection'].must_equal "test_collection"
497
+ traces[1].has_key?('Backtrace').must_equal TraceView::Config[:mongo][:collect_backtraces]
498
+ traces[1]['QueryOp'].must_equal "distinct"
499
+ traces[1]['Query'].must_equal "{\"name\":\"MyName\"}"
500
+ traces[1].has_key?('Query').must_equal true
501
+ end
502
+
503
+ it "should trace aggregate" do
504
+ skip unless Mongo::VERSION >= '2.1'
505
+ coll = @db[:test_collection]
506
+ r = nil
507
+
508
+ TraceView::API.start_trace('mongo_test', '', {}) do
509
+ r = coll.aggregate([ { "$group" => { "_id" => "$city", "tpop" => { "$sum" => "$pop" }}} ])
510
+ end
511
+
512
+ traces = get_all_traces
513
+ traces.count.must_equal 4
514
+
515
+ validate_outer_layers(traces, 'mongo_test')
516
+ validate_event_keys(traces[1], @entry_kvs)
517
+ validate_event_keys(traces[2], @exit_kvs)
518
+
519
+ r.must_be_instance_of Mongo::Collection::View::Aggregation
520
+
521
+ traces[1]['Collection'].must_equal "test_collection"
522
+ traces[1].has_key?('Backtrace').must_equal TraceView::Config[:mongo][:collect_backtraces]
523
+ traces[1]['QueryOp'].must_equal "aggregate"
524
+ traces[1].key?('Query').must_equal false
525
+ end
526
+
527
+ it "should trace bulk_write" do
528
+ coll = @db[:test_collection]
529
+ r = nil
530
+
531
+ TraceView::API.start_trace('mongo_test', '', {}) do
532
+ r = coll.bulk_write([ { :insert_one => { :x => 1} },
533
+ { :insert_one => { :x => 3} } ],
534
+ :ordered => true)
535
+ end
536
+
537
+ traces = get_all_traces
538
+ traces.count.must_equal 4
539
+
540
+ validate_outer_layers(traces, 'mongo_test')
541
+ validate_event_keys(traces[1], @entry_kvs)
542
+ validate_event_keys(traces[2], @exit_kvs)
543
+
544
+ if Mongo::VERSION < '2.1'
545
+ r.must_be_instance_of Hash
546
+ r[:n_inserted].must_equal 2
547
+ else
548
+ r.must_be_instance_of Mongo::BulkWrite::Result
549
+ end
550
+
551
+ traces[1]['Collection'].must_equal "test_collection"
552
+ traces[1].has_key?('Backtrace').must_equal TraceView::Config[:mongo][:collect_backtraces]
553
+ traces[1]['QueryOp'].must_equal "bulk_write"
554
+ traces[1].key?('Query').must_equal false
555
+ end
556
+
557
+ it "should obey :collect_backtraces setting when true" do
558
+ TraceView::Config[:mongo][:collect_backtraces] = true
559
+
560
+ coll = @db[:test_collection]
561
+
562
+ TraceView::API.start_trace('mongo_test', '', {}) do
563
+ doc = {"name" => "MyName", "type" => "MyType", "count" => 1, "info" => {"x" => 203, "y" => '102'}}
564
+ coll.insert_one(doc)
565
+ end
566
+
567
+ traces = get_all_traces
568
+ layer_has_key(traces, 'mongo', 'Backtrace')
569
+ end
570
+
571
+ it "should obey :collect_backtraces setting when false" do
572
+ TraceView::Config[:mongo][:collect_backtraces] = false
573
+
574
+ coll = @db[:test_collection]
575
+
576
+ TraceView::API.start_trace('mongo_test', '', {}) do
577
+ doc = {"name" => "MyName", "type" => "MyType", "count" => 1, "info" => {"x" => 203, "y" => '102'}}
578
+ coll.insert_one(doc)
579
+ end
580
+
581
+ traces = get_all_traces
582
+ layer_doesnt_have_key(traces, 'mongo', 'Backtrace')
583
+ end
584
+ end
585
+ end