@@ -18,37 +18,42 @@ import { SDK_INFO } from '@opentelemetry/core';
1818import * as assert from 'assert' ;
1919import { Resource } from '@opentelemetry/resources' ;
2020import {
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 */
342326const 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