@@ -105,4 +105,41 @@ public void testNativeReadBackFunctionality() {
105105 assertEquals (tracerVersion , readContext .telemetrySdkVersion , "Tracer version should match" );
106106 assertEquals ("dd-trace-java" , readContext .telemetrySdkName , "Tracer name should match" );
107107 }
108+
109+ /**
110+ * Tests that registerAttributeKeys correctly updates the process context.
111+ * registerAttributeKeys reads the existing process context and republishes it
112+ * with thread_ctx_config set. This test verifies that all original process
113+ * context fields are preserved after that republish.
114+ */
115+ @ Test
116+ public void testRegisterAttributeKeysSetsProcessContext () {
117+ Assumptions .assumeTrue (Platform .isLinux ());
118+
119+ String env = "attr-keys-env" ;
120+ String hostname = "attr-keys-host" ;
121+ String runtimeId = "attr-keys-instance" ;
122+ String service = "attr-keys-service" ;
123+ String version = "2.0.0" ;
124+ String tracerVersion = "4.1.0" ;
125+
126+ OTelContext context = OTelContext .getInstance ();
127+ context .setProcessContext (env , hostname , runtimeId , service , version , tracerVersion );
128+
129+ // registerAttributeKeys reads the existing process context and republishes
130+ // it with thread_ctx_config populated. All original fields must survive.
131+ context .registerAttributeKeys ("http.route" , "db.system" );
132+
133+ OTelContext .ProcessContext readContext = context .readProcessContext ();
134+
135+ assertNotNull (readContext , "Process context must still be readable after registerAttributeKeys" );
136+ assertEquals (env , readContext .deploymentEnvironmentName , "Environment name must survive registerAttributeKeys" );
137+ assertEquals (hostname , readContext .hostName , "Host name must survive registerAttributeKeys" );
138+ assertEquals (runtimeId , readContext .serviceInstanceId , "Service instance ID must survive registerAttributeKeys" );
139+ assertEquals (service , readContext .serviceName , "Service name must survive registerAttributeKeys" );
140+ assertEquals (version , readContext .serviceVersion , "Service version must survive registerAttributeKeys" );
141+ assertEquals ("java" , readContext .telemetrySdkLanguage , "Tracer language must survive registerAttributeKeys" );
142+ assertEquals (tracerVersion , readContext .telemetrySdkVersion , "Tracer version must survive registerAttributeKeys" );
143+ assertEquals ("dd-trace-java" , readContext .telemetrySdkName , "Tracer name must survive registerAttributeKeys" );
144+ }
108145}
0 commit comments