Skip to content

Commit 56525e3

Browse files
committed
test(node): Make mongodb tests less flaky
1 parent bea1aad commit 56525e3

1 file changed

Lines changed: 14 additions & 101 deletions

File tree

  • dev-packages/node-integration-tests/suites/tracing/mongodb

dev-packages/node-integration-tests/suites/tracing/mongodb/test.ts

Lines changed: 14 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)