@@ -6,7 +6,8 @@ const { describe, it, afterEach } = require('mocha')
66
77require ( './setup/core' )
88
9- const { enableGCPPubSubPushSubscription } = require ( '../src/serverless' )
9+ const { getPlatformTags, enableGCPPubSubPushSubscription } = require ( '../src/serverless' )
10+ const agent = require ( './plugins/agent' )
1011
1112describe ( 'enableGCPPubSubPushSubscription' , ( ) => {
1213 const originalKService = process . env . K_SERVICE
@@ -36,3 +37,76 @@ describe('enableGCPPubSubPushSubscription', () => {
3637 assert . strictEqual ( enableGCPPubSubPushSubscription ( ) , false )
3738 } )
3839} )
40+
41+ describe ( 'Vercel span metadata' , ( ) => {
42+ const environment = process . env
43+
44+ afterEach ( async ( ) => {
45+ process . env = environment
46+ await agent . close ( )
47+ } )
48+
49+ it ( 'does not add tags outside Vercel' , async ( ) => {
50+ process . env = {
51+ ...environment ,
52+ VERCEL_DEPLOYMENT_ID : 'dpl_123' ,
53+ VERCEL_ENV : 'preview' ,
54+ VERCEL_PROJECT_ID : 'prj_123' ,
55+ VERCEL_REGION : 'iad1' ,
56+ VERCEL_TARGET_ENV : 'staging' ,
57+ }
58+ delete process . env . VERCEL
59+
60+ const tracer = await agent . load ( [ ] , [ ] , { service : 'vercel-metadata-test' } )
61+ tracer . startSpan ( 'non-vercel-span' ) . finish ( )
62+
63+ await agent . assertSomeTraces ( traces => {
64+ const { meta } = traces [ 0 ] [ 0 ]
65+ assert . strictEqual ( meta [ 'vercel.project_id' ] , undefined )
66+ assert . strictEqual ( meta [ 'vercel.environment' ] , undefined )
67+ assert . strictEqual ( meta [ 'vercel.region' ] , undefined )
68+ } )
69+ } )
70+
71+ it ( 'adds present Vercel metadata to encoded spans' , async ( ) => {
72+ process . env = {
73+ ...environment ,
74+ VERCEL : '1' ,
75+ VERCEL_DEPLOYMENT_ID : 'dpl_123' ,
76+ VERCEL_ENV : 'preview' ,
77+ VERCEL_PROJECT_ID : 'prj_123' ,
78+ VERCEL_REGION : 'iad1' ,
79+ VERCEL_TARGET_ENV : 'staging' ,
80+ }
81+
82+ const tracer = await agent . load ( [ ] , [ ] , {
83+ service : 'vercel-metadata-test' ,
84+ tags : { 'vercel.region' : 'custom-region' } ,
85+ } )
86+ tracer . startSpan ( 'vercel-span' ) . finish ( )
87+
88+ await agent . assertSomeTraces ( traces => {
89+ assert . deepStrictEqual ( Object . fromEntries (
90+ Object . entries ( traces [ 0 ] [ 0 ] . meta ) . filter ( ( [ name ] ) => name . startsWith ( 'vercel.' ) )
91+ ) , {
92+ 'vercel.project_id' : 'prj_123' ,
93+ 'vercel.environment' : 'preview' ,
94+ 'vercel.region' : 'custom-region' ,
95+ } )
96+ } )
97+ } )
98+
99+ it ( 'discovers only present Vercel metadata as platform tags' , ( ) => {
100+ process . env = {
101+ ...environment ,
102+ VERCEL : '1' ,
103+ VERCEL_ENV : 'preview' ,
104+ VERCEL_PROJECT_ID : 'prj_123' ,
105+ }
106+
107+ assert . deepStrictEqual ( getPlatformTags ( ) , {
108+ 'vercel.project_id' : 'prj_123' ,
109+ 'vercel.environment' : 'preview' ,
110+ } )
111+ } )
112+ } )
0 commit comments