Skip to content

Commit 8af41a9

Browse files
authored
chore(contrib-test-utils)!: update semconv usage to ATTR_ exports (#3061)
Refs: #2377
1 parent 9d0371b commit 8af41a9

File tree

5 files changed

+348
-90
lines changed

5 files changed

+348
-90
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
"lint:markdown": "markdownlint-cli2 $(git ls-files '*.md')",
3535
"lint:markdown:fix": "markdownlint-cli2 --fix $(git ls-files '*.md')",
3636
"lint:readme": "nx run-many -t lint:readme",
37-
"lint:semconv-deps": "./scripts/lint-semconv-deps.mjs"
37+
"lint:semconv-deps": "./scripts/lint-semconv-deps.mjs -x packages/contrib-test-utils/src/resource-assertions.ts"
3838
},
3939
"keywords": [
4040
"opentelemetry",

packages/contrib-test-utils/src/instrumentations/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
*/
1616

1717
import { resourceFromAttributes } from '@opentelemetry/resources';
18-
import { SEMRESATTRS_SERVICE_NAME } from '@opentelemetry/semantic-conventions';
18+
import { ATTR_SERVICE_NAME } from '@opentelemetry/semantic-conventions';
1919
import { getInstrumentation } from './instrumentation-singleton';
2020
import { registerInstrumentationTestingProvider } from './otel-default-provider';
2121
import { resetMemoryExporter } from './otel-provider-api';
@@ -49,7 +49,7 @@ export const mochaHooks = {
4949
}
5050
const provider = registerInstrumentationTestingProvider({
5151
resource: resourceFromAttributes({
52-
[SEMRESATTRS_SERVICE_NAME]: serviceName,
52+
[ATTR_SERVICE_NAME]: serviceName,
5353
}),
5454
});
5555
getInstrumentation()?.setTracerProvider(provider);

packages/contrib-test-utils/src/resource-assertions.ts

Lines changed: 67 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -18,37 +18,42 @@ import { SDK_INFO } from '@opentelemetry/core';
1818
import * as assert from 'assert';
1919
import { Resource } from '@opentelemetry/resources';
2020
import {
21-
SEMRESATTRS_CLOUD_ACCOUNT_ID,
22-
SEMRESATTRS_CLOUD_AVAILABILITY_ZONE,
23-
SEMRESATTRS_CLOUD_PROVIDER,
24-
SEMRESATTRS_CLOUD_REGION,
25-
SEMRESATTRS_CONTAINER_ID,
26-
SEMRESATTRS_CONTAINER_IMAGE_NAME,
27-
SEMRESATTRS_CONTAINER_IMAGE_TAG,
28-
SEMRESATTRS_CONTAINER_NAME,
29-
SEMRESATTRS_HOST_ID,
30-
SEMRESATTRS_HOST_IMAGE_ID,
31-
SEMRESATTRS_HOST_IMAGE_NAME,
32-
SEMRESATTRS_HOST_IMAGE_VERSION,
33-
SEMRESATTRS_HOST_NAME,
34-
SEMRESATTRS_HOST_TYPE,
35-
SEMRESATTRS_K8S_CLUSTER_NAME,
36-
SEMRESATTRS_K8S_DEPLOYMENT_NAME,
37-
SEMRESATTRS_K8S_NAMESPACE_NAME,
38-
SEMRESATTRS_K8S_POD_NAME,
39-
SEMRESATTRS_PROCESS_COMMAND,
40-
SEMRESATTRS_PROCESS_COMMAND_LINE,
41-
SEMRESATTRS_PROCESS_EXECUTABLE_NAME,
42-
SEMRESATTRS_PROCESS_PID,
43-
SEMRESATTRS_SERVICE_INSTANCE_ID,
44-
SEMRESATTRS_SERVICE_NAME,
45-
SEMRESATTRS_SERVICE_NAMESPACE,
46-
SEMRESATTRS_SERVICE_VERSION,
47-
SEMRESATTRS_TELEMETRY_SDK_LANGUAGE,
48-
SEMRESATTRS_TELEMETRY_SDK_NAME,
49-
SEMRESATTRS_TELEMETRY_SDK_VERSION,
21+
ATTR_SERVICE_NAME,
22+
ATTR_SERVICE_VERSION,
23+
ATTR_TELEMETRY_SDK_LANGUAGE,
24+
ATTR_TELEMETRY_SDK_NAME,
25+
ATTR_TELEMETRY_SDK_VERSION,
5026
} from '@opentelemetry/semantic-conventions';
51-
import * as semconv from '@opentelemetry/semantic-conventions';
27+
import {
28+
ATTR_CLOUD_ACCOUNT_ID,
29+
ATTR_CLOUD_AVAILABILITY_ZONE,
30+
ATTR_CLOUD_PROVIDER,
31+
ATTR_CLOUD_REGION,
32+
ATTR_CONTAINER_ID,
33+
ATTR_CONTAINER_IMAGE_NAME,
34+
ATTR_CONTAINER_NAME,
35+
ATTR_HOST_ID,
36+
ATTR_HOST_IMAGE_ID,
37+
ATTR_HOST_IMAGE_NAME,
38+
ATTR_HOST_IMAGE_VERSION,
39+
ATTR_HOST_NAME,
40+
ATTR_HOST_TYPE,
41+
ATTR_K8S_CLUSTER_NAME,
42+
ATTR_K8S_DEPLOYMENT_NAME,
43+
ATTR_K8S_NAMESPACE_NAME,
44+
ATTR_K8S_POD_NAME,
45+
ATTR_PROCESS_COMMAND,
46+
ATTR_PROCESS_COMMAND_LINE,
47+
ATTR_PROCESS_EXECUTABLE_NAME,
48+
ATTR_PROCESS_PID,
49+
ATTR_SERVICE_INSTANCE_ID,
50+
ATTR_SERVICE_NAMESPACE,
51+
} from './semconv';
52+
53+
// Specifically import the incubating entry-point so we can search *all*
54+
// `ATTR_` constants (even unstable ones) in `assertHasOneLabel` below.
55+
// This file is excluded from the `npm run lint:semconv-deps` rule.
56+
import * as semconv from '@opentelemetry/semantic-conventions/incubating';
5257

5358
/**
5459
* Test utility method to validate a cloud resource
@@ -68,22 +73,22 @@ export const assertCloudResource = (
6873
assertHasOneLabel('cloud', resource);
6974
if (validations.provider)
7075
assert.strictEqual(
71-
resource.attributes[SEMRESATTRS_CLOUD_PROVIDER],
76+
resource.attributes[ATTR_CLOUD_PROVIDER],
7277
validations.provider
7378
);
7479
if (validations.accountId)
7580
assert.strictEqual(
76-
resource.attributes[SEMRESATTRS_CLOUD_ACCOUNT_ID],
81+
resource.attributes[ATTR_CLOUD_ACCOUNT_ID],
7782
validations.accountId
7883
);
7984
if (validations.region)
8085
assert.strictEqual(
81-
resource.attributes[SEMRESATTRS_CLOUD_REGION],
86+
resource.attributes[ATTR_CLOUD_REGION],
8287
validations.region
8388
);
8489
if (validations.zone)
8590
assert.strictEqual(
86-
resource.attributes[SEMRESATTRS_CLOUD_AVAILABILITY_ZONE],
91+
resource.attributes[ATTR_CLOUD_AVAILABILITY_ZONE],
8792
validations.zone
8893
);
8994
};
@@ -100,30 +105,21 @@ export const assertContainerResource = (
100105
name?: string;
101106
id?: string;
102107
imageName?: string;
103-
imageTag?: string;
104108
}
105109
) => {
106110
assertHasOneLabel('container', resource);
107111
if (validations.name)
108112
assert.strictEqual(
109-
resource.attributes[SEMRESATTRS_CONTAINER_NAME],
113+
resource.attributes[ATTR_CONTAINER_NAME],
110114
validations.name
111115
);
112116
if (validations.id)
113-
assert.strictEqual(
114-
resource.attributes[SEMRESATTRS_CONTAINER_ID],
115-
validations.id
116-
);
117+
assert.strictEqual(resource.attributes[ATTR_CONTAINER_ID], validations.id);
117118
if (validations.imageName)
118119
assert.strictEqual(
119-
resource.attributes[SEMRESATTRS_CONTAINER_IMAGE_NAME],
120+
resource.attributes[ATTR_CONTAINER_IMAGE_NAME],
120121
validations.imageName
121122
);
122-
if (validations.imageTag)
123-
assert.strictEqual(
124-
resource.attributes[SEMRESATTRS_CONTAINER_IMAGE_TAG],
125-
validations.imageTag
126-
);
127123
};
128124

129125
/**
@@ -145,33 +141,27 @@ export const assertHostResource = (
145141
) => {
146142
assertHasOneLabel('host', resource);
147143
if (validations.id)
148-
assert.strictEqual(
149-
resource.attributes[SEMRESATTRS_HOST_ID],
150-
validations.id
151-
);
144+
assert.strictEqual(resource.attributes[ATTR_HOST_ID], validations.id);
152145
if (validations.name)
153-
assert.strictEqual(
154-
resource.attributes[SEMRESATTRS_HOST_NAME],
155-
validations.name
156-
);
146+
assert.strictEqual(resource.attributes[ATTR_HOST_NAME], validations.name);
157147
if (validations.hostType)
158148
assert.strictEqual(
159-
resource.attributes[SEMRESATTRS_HOST_TYPE],
149+
resource.attributes[ATTR_HOST_TYPE],
160150
validations.hostType
161151
);
162152
if (validations.imageName)
163153
assert.strictEqual(
164-
resource.attributes[SEMRESATTRS_HOST_IMAGE_NAME],
154+
resource.attributes[ATTR_HOST_IMAGE_NAME],
165155
validations.imageName
166156
);
167157
if (validations.imageId)
168158
assert.strictEqual(
169-
resource.attributes[SEMRESATTRS_HOST_IMAGE_ID],
159+
resource.attributes[ATTR_HOST_IMAGE_ID],
170160
validations.imageId
171161
);
172162
if (validations.imageVersion)
173163
assert.strictEqual(
174-
resource.attributes[SEMRESATTRS_HOST_IMAGE_VERSION],
164+
resource.attributes[ATTR_HOST_IMAGE_VERSION],
175165
validations.imageVersion
176166
);
177167
};
@@ -194,22 +184,22 @@ export const assertK8sResource = (
194184
assertHasOneLabel('k8s', resource);
195185
if (validations.clusterName)
196186
assert.strictEqual(
197-
resource.attributes[SEMRESATTRS_K8S_CLUSTER_NAME],
187+
resource.attributes[ATTR_K8S_CLUSTER_NAME],
198188
validations.clusterName
199189
);
200190
if (validations.namespaceName)
201191
assert.strictEqual(
202-
resource.attributes[SEMRESATTRS_K8S_NAMESPACE_NAME],
192+
resource.attributes[ATTR_K8S_NAMESPACE_NAME],
203193
validations.namespaceName
204194
);
205195
if (validations.podName)
206196
assert.strictEqual(
207-
resource.attributes[SEMRESATTRS_K8S_POD_NAME],
197+
resource.attributes[ATTR_K8S_POD_NAME],
208198
validations.podName
209199
);
210200
if (validations.deploymentName)
211201
assert.strictEqual(
212-
resource.attributes[SEMRESATTRS_K8S_DEPLOYMENT_NAME],
202+
resource.attributes[ATTR_K8S_DEPLOYMENT_NAME],
213203
validations.deploymentName
214204
);
215205
};
@@ -229,25 +219,25 @@ export const assertTelemetrySDKResource = (
229219
}
230220
) => {
231221
const defaults = {
232-
name: SDK_INFO[SEMRESATTRS_TELEMETRY_SDK_NAME],
233-
language: SDK_INFO[SEMRESATTRS_TELEMETRY_SDK_LANGUAGE],
234-
version: SDK_INFO[SEMRESATTRS_TELEMETRY_SDK_VERSION],
222+
name: SDK_INFO[ATTR_TELEMETRY_SDK_NAME],
223+
language: SDK_INFO[ATTR_TELEMETRY_SDK_LANGUAGE],
224+
version: SDK_INFO[ATTR_TELEMETRY_SDK_VERSION],
235225
};
236226
validations = { ...defaults, ...validations };
237227

238228
if (validations.name)
239229
assert.strictEqual(
240-
resource.attributes[SEMRESATTRS_TELEMETRY_SDK_NAME],
230+
resource.attributes[ATTR_TELEMETRY_SDK_NAME],
241231
validations.name
242232
);
243233
if (validations.language)
244234
assert.strictEqual(
245-
resource.attributes[SEMRESATTRS_TELEMETRY_SDK_LANGUAGE],
235+
resource.attributes[ATTR_TELEMETRY_SDK_LANGUAGE],
246236
validations.language
247237
);
248238
if (validations.version)
249239
assert.strictEqual(
250-
resource.attributes[SEMRESATTRS_TELEMETRY_SDK_VERSION],
240+
resource.attributes[ATTR_TELEMETRY_SDK_VERSION],
251241
validations.version
252242
);
253243
};
@@ -267,22 +257,19 @@ export const assertServiceResource = (
267257
version?: string;
268258
}
269259
) => {
260+
assert.strictEqual(resource.attributes[ATTR_SERVICE_NAME], validations.name);
270261
assert.strictEqual(
271-
resource.attributes[SEMRESATTRS_SERVICE_NAME],
272-
validations.name
273-
);
274-
assert.strictEqual(
275-
resource.attributes[SEMRESATTRS_SERVICE_INSTANCE_ID],
262+
resource.attributes[ATTR_SERVICE_INSTANCE_ID],
276263
validations.instanceId
277264
);
278265
if (validations.namespace)
279266
assert.strictEqual(
280-
resource.attributes[SEMRESATTRS_SERVICE_NAMESPACE],
267+
resource.attributes[ATTR_SERVICE_NAMESPACE],
281268
validations.namespace
282269
);
283270
if (validations.version)
284271
assert.strictEqual(
285-
resource.attributes[SEMRESATTRS_SERVICE_VERSION],
272+
resource.attributes[ATTR_SERVICE_VERSION],
286273
validations.version
287274
);
288275
};
@@ -302,25 +289,22 @@ export const assertProcessResource = (
302289
commandLine?: string;
303290
}
304291
) => {
305-
assert.strictEqual(
306-
resource.attributes[SEMRESATTRS_PROCESS_PID],
307-
validations.pid
308-
);
292+
assert.strictEqual(resource.attributes[ATTR_PROCESS_PID], validations.pid);
309293
if (validations.name) {
310294
assert.strictEqual(
311-
resource.attributes[SEMRESATTRS_PROCESS_EXECUTABLE_NAME],
295+
resource.attributes[ATTR_PROCESS_EXECUTABLE_NAME],
312296
validations.name
313297
);
314298
}
315299
if (validations.command) {
316300
assert.strictEqual(
317-
resource.attributes[SEMRESATTRS_PROCESS_COMMAND],
301+
resource.attributes[ATTR_PROCESS_COMMAND],
318302
validations.command
319303
);
320304
}
321305
if (validations.commandLine) {
322306
assert.strictEqual(
323-
resource.attributes[SEMRESATTRS_PROCESS_COMMAND_LINE],
307+
resource.attributes[ATTR_PROCESS_COMMAND_LINE],
324308
validations.commandLine
325309
);
326310
}
@@ -340,7 +324,7 @@ export const assertEmptyResource = (resource: Resource) => {
340324
* `prefix`. By "known", we mean it is an attribute defined in semconv.
341325
*/
342326
const assertHasOneLabel = (prefix: string, resource: Resource): void => {
343-
const semconvModPrefix = `SEMRESATTRS_${prefix.toUpperCase()}_`;
327+
const semconvModPrefix = `ATTR_${prefix.toUpperCase()}_`;
344328
const knownAttrs: Set<string> = new Set(
345329
Object.entries(semconv)
346330
.filter(

0 commit comments

Comments
 (0)