@@ -17,51 +17,17 @@ describe('MongoDB experimental Test', () => {
1717 cleanupChildProcesses ( ) ;
1818 } ) ;
1919
20+ /**
21+ * Assert the operations we run in `scenario.js` are present. We intentionally
22+ * do not match the full span list: wire-protocol handshakes (`isMaster` vs
23+ * `hello`) and session cleanup vary by driver / server and are a common
24+ * source of flakes in CI (see https://github.com/getsentry/sentry-javascript/issues/20424).
25+ */
2026 const EXPECTED_TRANSACTION = {
2127 transaction : 'Test Transaction' ,
22- spans : [
28+ spans : expect . arrayContaining ( [
2329 expect . objectContaining ( {
24- data : {
25- 'sentry.origin' : 'auto.db.otel.mongo' ,
26- 'sentry.op' : 'db' ,
27- 'db.system' : 'mongodb' ,
28- 'db.name' : 'admin' ,
29- 'db.mongodb.collection' : '$cmd' ,
30- 'db.operation' : 'isMaster' ,
31- 'db.connection_string' : expect . any ( String ) ,
32- 'net.peer.name' : expect . any ( String ) ,
33- 'net.peer.port' : expect . any ( Number ) ,
34- 'db.statement' :
35- '{"ismaster":"?","client":{"driver":{"name":"?","version":"?"},"os":{"type":"?","name":"?","architecture":"?","version":"?"},"platform":"?"},"compression":[],"helloOk":"?"}' ,
36- 'otel.kind' : 'CLIENT' ,
37- } ,
38- description :
39- '{"ismaster":"?","client":{"driver":{"name":"?","version":"?"},"os":{"type":"?","name":"?","architecture":"?","version":"?"},"platform":"?"},"compression":[],"helloOk":"?"}' ,
40- op : 'db' ,
41- origin : 'auto.db.otel.mongo' ,
42- } ) ,
43- expect . objectContaining ( {
44- data : {
45- 'sentry.origin' : 'auto.db.otel.mongo' ,
46- 'sentry.op' : 'db' ,
47- 'db.system' : 'mongodb' ,
48- 'db.name' : 'admin' ,
49- 'db.mongodb.collection' : '$cmd' ,
50- 'db.operation' : 'isMaster' ,
51- 'db.connection_string' : expect . any ( String ) ,
52- 'net.peer.name' : expect . any ( String ) ,
53- 'net.peer.port' : expect . any ( Number ) ,
54- 'db.statement' :
55- '{"ismaster":"?","client":{"driver":{"name":"?","version":"?"},"os":{"type":"?","name":"?","architecture":"?","version":"?"},"platform":"?"},"compression":[],"helloOk":"?"}' ,
56- 'otel.kind' : 'CLIENT' ,
57- } ,
58- description :
59- '{"ismaster":"?","client":{"driver":{"name":"?","version":"?"},"os":{"type":"?","name":"?","architecture":"?","version":"?"},"platform":"?"},"compression":[],"helloOk":"?"}' ,
60- op : 'db' ,
61- origin : 'auto.db.otel.mongo' ,
62- } ) ,
63- expect . objectContaining ( {
64- data : {
30+ data : expect . objectContaining ( {
6531 'sentry.origin' : 'auto.db.otel.mongo' ,
6632 'sentry.op' : 'db' ,
6733 'db.system' : 'mongodb' ,
@@ -73,13 +39,13 @@ describe('MongoDB experimental Test', () => {
7339 'net.peer.port' : expect . any ( Number ) ,
7440 'db.statement' : '{"title":"?","_id":{"_bsontype":"?","id":"?"}}' ,
7541 'otel.kind' : 'CLIENT' ,
76- } ,
42+ } ) ,
7743 description : '{"title":"?","_id":{"_bsontype":"?","id":"?"}}' ,
7844 op : 'db' ,
7945 origin : 'auto.db.otel.mongo' ,
8046 } ) ,
8147 expect . objectContaining ( {
82- data : {
48+ data : expect . objectContaining ( {
8349 'sentry.origin' : 'auto.db.otel.mongo' ,
8450 'sentry.op' : 'db' ,
8551 'db.system' : 'mongodb' ,
@@ -91,13 +57,13 @@ describe('MongoDB experimental Test', () => {
9157 'net.peer.port' : expect . any ( Number ) ,
9258 'db.statement' : '{"title":"?"}' ,
9359 'otel.kind' : 'CLIENT' ,
94- } ,
60+ } ) ,
9561 description : '{"title":"?"}' ,
9662 op : 'db' ,
9763 origin : 'auto.db.otel.mongo' ,
9864 } ) ,
9965 expect . objectContaining ( {
100- data : {
66+ data : expect . objectContaining ( {
10167 'sentry.origin' : 'auto.db.otel.mongo' ,
10268 'sentry.op' : 'db' ,
10369 'db.system' : 'mongodb' ,
@@ -109,65 +75,12 @@ describe('MongoDB experimental Test', () => {
10975 'net.peer.port' : expect . any ( Number ) ,
11076 'db.statement' : '{"title":"?"}' ,
11177 'otel.kind' : 'CLIENT' ,
112- } ,
113- description : '{"title":"?"}' ,
114- op : 'db' ,
115- origin : 'auto.db.otel.mongo' ,
116- } ) ,
117- expect . objectContaining ( {
118- data : {
119- 'sentry.origin' : 'auto.db.otel.mongo' ,
120- 'sentry.op' : 'db' ,
121- 'db.system' : 'mongodb' ,
122- 'db.name' : 'admin' ,
123- 'db.mongodb.collection' : 'movies' ,
124- 'db.operation' : 'find' ,
125- 'db.connection_string' : expect . any ( String ) ,
126- 'net.peer.name' : expect . any ( String ) ,
127- 'net.peer.port' : expect . any ( Number ) ,
128- 'db.statement' : '{"title":"?"}' ,
129- 'otel.kind' : 'CLIENT' ,
130- } ,
131- description : '{"title":"?"}' ,
132- op : 'db' ,
133- origin : 'auto.db.otel.mongo' ,
134- } ) ,
135- expect . objectContaining ( {
136- data : {
137- 'sentry.origin' : 'auto.db.otel.mongo' ,
138- 'sentry.op' : 'db' ,
139- 'db.system' : 'mongodb' ,
140- 'db.name' : 'admin' ,
141- 'db.mongodb.collection' : 'movies' ,
142- 'db.operation' : 'find' ,
143- 'db.connection_string' : expect . any ( String ) ,
144- 'net.peer.name' : expect . any ( String ) ,
145- 'net.peer.port' : expect . any ( Number ) ,
146- 'db.statement' : '{"title":"?"}' ,
147- 'otel.kind' : 'CLIENT' ,
148- } ,
78+ } ) ,
14979 description : '{"title":"?"}' ,
15080 op : 'db' ,
15181 origin : 'auto.db.otel.mongo' ,
15282 } ) ,
153- expect . objectContaining ( {
154- data : {
155- 'sentry.origin' : 'auto.db.otel.mongo' ,
156- 'sentry.op' : 'db' ,
157- 'db.system' : 'mongodb' ,
158- 'db.name' : 'admin' ,
159- 'db.mongodb.collection' : '$cmd' ,
160- 'db.connection_string' : expect . any ( String ) ,
161- 'net.peer.name' : expect . any ( String ) ,
162- 'net.peer.port' : expect . any ( Number ) ,
163- 'db.statement' : '{"endSessions":[{"id":{"_bsontype":"?","sub_type":"?","position":"?","buffer":"?"}}]}' ,
164- 'otel.kind' : 'CLIENT' ,
165- } ,
166- description : '{"endSessions":[{"id":{"_bsontype":"?","sub_type":"?","position":"?","buffer":"?"}}]}' ,
167- op : 'db' ,
168- origin : 'auto.db.otel.mongo' ,
169- } ) ,
170- ] ,
83+ ] ) ,
17184 } ;
17285
17386 test ( 'CJS - should auto-instrument `mongodb` package.' , async ( ) => {
0 commit comments