File tree Expand file tree Collapse file tree 3 files changed +61
-0
lines changed 
dd-java-agent/appsec/src/main/java/com/datadog/appsec/config 
dd-smoke-tests/dynamic-config/src 
main/java/datadog/smoketest/dynamicconfig 
test/groovy/datadog/smoketest Expand file tree Collapse file tree 3 files changed +61
-0
lines changed Original file line number Diff line number Diff line change 2121import  static  datadog .remoteconfig .Capabilities .CAPABILITY_ASM_TRUSTED_IPS ;
2222import  static  datadog .remoteconfig .Capabilities .CAPABILITY_ASM_USER_BLOCKING ;
2323import  static  datadog .remoteconfig .Capabilities .CAPABILITY_ENDPOINT_FINGERPRINT ;
24+ import  static  datadog .trace .api .config .AppSecConfig .APPSEC_ENABLED ;
2425
2526import  com .datadog .appsec .AppSecModule ;
2627import  com .datadog .appsec .AppSecSystem ;
4546import  datadog .remoteconfig .state .ConfigKey ;
4647import  datadog .remoteconfig .state .ProductListener ;
4748import  datadog .trace .api .Config ;
49+ import  datadog .trace .api .ConfigCollector ;
50+ import  datadog .trace .api .ConfigOrigin ;
4851import  datadog .trace .api .ProductActivation ;
4952import  datadog .trace .api .UserIdCollectionMode ;
5053import  datadog .trace .api .telemetry .LogCollector ;
@@ -517,6 +520,8 @@ private void setAppSecActivation(final AppSecFeatures.Asm asm) {
517520      newState  = tracerConfig .getAppSecActivation () == ProductActivation .FULLY_ENABLED ;
518521    } else  {
519522      newState  = asm .enabled ;
523+       // Report AppSec activation change via telemetry when modified via remote config 
524+       ConfigCollector .get ().put (APPSEC_ENABLED , asm .enabled , ConfigOrigin .REMOTE );
520525    }
521526    if  (AppSecSystem .isActive () != newState ) {
522527      log .info ("AppSec {} (runtime)" , newState  ? "enabled"  : "disabled" );
Original file line number Diff line number Diff line change 1+ package  datadog .smoketest .dynamicconfig ;
2+ 
3+ import  java .util .concurrent .TimeUnit ;
4+ 
5+ public  class  AppSecApplication  {
6+ 
7+   public  static  final  long  TIMEOUT_IN_SECONDS  = 10 ;
8+ 
9+   public  static  void  main (String [] args ) throws  InterruptedException  {
10+     // just wait as we want to test RC payloads 
11+     Thread .sleep (TimeUnit .SECONDS .toMillis (TIMEOUT_IN_SECONDS ));
12+     System .exit (0 );
13+   }
14+ }
Original file line number Diff line number Diff line change 1+ package  datadog.smoketest 
2+ 
3+ import  datadog.smoketest.dynamicconfig.AppSecApplication 
4+ 
5+ class  AppSecActivationSmokeTest  extends  AbstractSmokeTest  {
6+ 
7+   @Override 
8+   ProcessBuilder  createProcessBuilder () {
9+     def  command =  [javaPath()]
10+     command + =  defaultJavaProperties. toList()
11+     command + =  [
12+       ' -Ddd.remote_config.enabled=true' 
13+       " -Ddd.remote_config.url=http://localhost:${ server.address.port} " . toString(),
14+       ' -Ddd.remote_config.poll_interval.seconds=1' 
15+       ' -Ddd.profiling.enabled=false' 
16+       ' -cp' 
17+       System . getProperty(' datadog.smoketest.shadowJar.path' 
18+       AppSecApplication . name
19+     ]
20+ 
21+     final  processBuilder =  new  ProcessBuilder (command)
22+     processBuilder. directory(new  File (buildDirectory))
23+   }
24+ 
25+   void  ' test activation config change is sent via RC' 
26+     when :
27+     setRemoteConfig(' datadog/2/ASM_FEATURES/asm_features_activation/config' ' {"asm":{"enabled":true}}' 
28+ 
29+     then :
30+     waitForTelemetryFlat {
31+       if  (it[' request_type' !=  ' app-client-configuration-change' 
32+         return  false 
33+       }
34+       final  configurations =  (List<Map<String , Object > > ) it?. payload?. configuration ?:  []
35+       final  enabledConfig =  configurations. find { it. name ==  ' appsec_enabled' 
36+       if  (! enabledConfig) {
37+         return  false 
38+       }
39+       return  enabledConfig. value ==  ' true' &&  enabledConfig .origin ==  ' remote_config' 
40+     }
41+   }
42+ }
 
 
   
 
     
   
   
          
    
    
     
    
      
     
     
    You can’t perform that action at this time.
  
 
    
  
    
      
        
     
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments