diff --git a/features/dd-sdk-android-trace/api/dd-sdk-android-trace.api b/features/dd-sdk-android-trace/api/dd-sdk-android-trace.api index cef86131a8..cc7d4fb191 100644 --- a/features/dd-sdk-android-trace/api/dd-sdk-android-trace.api +++ b/features/dd-sdk-android-trace/api/dd-sdk-android-trace.api @@ -1316,13 +1316,6 @@ public class com/datadog/opentracing/scopemanager/SimpleScope : com/datadog/open public fun span ()Lio/opentracing/Span; } -public abstract interface annotation class com/datadog/trace/advice/ActiveRequestContext : java/lang/annotation/Annotation { -} - -public abstract interface annotation class com/datadog/trace/advice/RequiresRequestContext : java/lang/annotation/Annotation { - public abstract fun value ()Lcom/datadog/trace/api/gateway/RequestContextSlot; -} - public class com/datadog/trace/api/Config { public static final field PREFIX Ljava/lang/String; public fun configProvider ()Lcom/datadog/trace/bootstrap/config/provider/ConfigProvider; @@ -1335,67 +1328,13 @@ public class com/datadog/trace/api/Config { public fun getAgentUnixDomainSocket ()Ljava/lang/String; public fun getAgentUrl ()Ljava/lang/String; public fun getApiKey ()Ljava/lang/String; - public fun getApiSecurityRequestSampleRate ()F - public fun getAppSecActivation ()Lcom/datadog/trace/api/ProductActivation; - public fun getAppSecHttpBlockedTemplateHtml ()Ljava/lang/String; - public fun getAppSecHttpBlockedTemplateJson ()Ljava/lang/String; - public fun getAppSecObfuscationParameterKeyRegexp ()Ljava/lang/String; - public fun getAppSecObfuscationParameterValueRegexp ()Ljava/lang/String; - public fun getAppSecReportMaxTimeout ()I - public fun getAppSecReportMinTimeout ()I - public fun getAppSecRulesFile ()Ljava/lang/String; - public fun getAppSecTraceRateLimit ()I - public fun getAppSecUserEventsTrackingMode ()Lcom/datadog/trace/api/UserEventTrackingMode; - public fun getAppSecWafTimeout ()I public fun getApplicationKey ()Ljava/lang/String; public fun getBaggageMapping ()Ljava/util/Map; - public fun getCiVisibilityAdditionalChildProcessJvmArgs ()Ljava/lang/String; - public fun getCiVisibilityAgentJarFile ()Ljava/io/File; - public fun getCiVisibilityAgentJarUri ()Ljava/lang/String; - public fun getCiVisibilityAgentlessUrl ()Ljava/lang/String; - public fun getCiVisibilityBackendApiTimeoutMillis ()J - public fun getCiVisibilityCodeCoverageExcludedPackages ()[Ljava/lang/String; - public fun getCiVisibilityCodeCoverageExcludes ()Ljava/util/List; - public fun getCiVisibilityCodeCoverageIncludedPackages ()[Ljava/lang/String; - public fun getCiVisibilityCodeCoverageIncludes ()Ljava/util/List; - public fun getCiVisibilityCodeCoverageReportDumpDir ()Ljava/lang/String; - public fun getCiVisibilityCompilerPluginVersion ()Ljava/lang/String; - public fun getCiVisibilityCoverageRootPackagesLimit ()I - public fun getCiVisibilityDebugPort ()Ljava/lang/Integer; - public fun getCiVisibilityFlakyRetryCount ()I - public fun getCiVisibilityGitCommandTimeoutMillis ()J - public fun getCiVisibilityGitRemoteName ()Ljava/lang/String; - public fun getCiVisibilityGitUploadTimeoutMillis ()J - public fun getCiVisibilityInjectedTracerVersion ()Ljava/lang/String; - public fun getCiVisibilityJacocoGradleSourceSets ()Ljava/util/List; - public fun getCiVisibilityJacocoPluginVersion ()Ljava/lang/String; - public fun getCiVisibilityJvmInfoCacheSize ()I - public fun getCiVisibilityModuleExecutionSettingsCacheSize ()I - public fun getCiVisibilityModuleId ()Ljava/lang/Long; - public fun getCiVisibilityModuleName ()Ljava/lang/String; - public fun getCiVisibilityResourceFolderNames ()Ljava/util/List; - public fun getCiVisibilitySessionId ()Ljava/lang/Long; - public fun getCiVisibilitySignalServerHost ()Ljava/lang/String; - public fun getCiVisibilitySignalServerPort ()I public fun getClockSyncPeriod ()I public fun getConfigFileStatus ()Ljava/lang/String; - public fun getCwsTlsRefresh ()I public fun getDBMPropagationMode ()Ljava/lang/String; public fun getDataStreamsBucketDurationNanoseconds ()J public fun getDataStreamsBucketDurationSeconds ()F - public fun getDebuggerCaptureTimeout ()I - public fun getDebuggerDiagnosticsInterval ()I - public fun getDebuggerExcludeFiles ()Ljava/lang/String; - public fun getDebuggerMaxPayloadSize ()J - public fun getDebuggerPollInterval ()I - public fun getDebuggerProbeFileLocation ()Ljava/lang/String; - public fun getDebuggerRedactedIdentifiers ()Ljava/lang/String; - public fun getDebuggerRedactedTypes ()Ljava/lang/String; - public fun getDebuggerSymbolFlushThreshold ()I - public fun getDebuggerSymbolIncludes ()Ljava/lang/String; - public fun getDebuggerUploadBatchSize ()I - public fun getDebuggerUploadFlushInterval ()I - public fun getDebuggerUploadTimeout ()I public fun getDogStatsDArgs ()Ljava/util/List; public fun getDogStatsDNamedPipe ()Ljava/lang/String; public fun getDogStatsDPath ()Ljava/lang/String; @@ -1421,33 +1360,12 @@ public class com/datadog/trace/api/Config { public fun getHttpResourceRemoveTrailingSlash ()Z public fun getHttpServerErrorStatuses ()Ljava/util/BitSet; public fun getHttpServerPathResourceNameMapping ()Ljava/util/Map; - public fun getIastActivation ()Lcom/datadog/trace/api/ProductActivation; - public fun getIastMaxConcurrentRequests ()I - public fun getIastMaxRangeCount ()I - public fun getIastRedactionNamePattern ()Ljava/lang/String; - public fun getIastRedactionValuePattern ()Ljava/lang/String; - public fun getIastRequestSampling ()F - public fun getIastTelemetryVerbosity ()Lcom/datadog/trace/api/iast/telemetry/Verbosity; - public fun getIastTruncationMaxValueLength ()I - public fun getIastVulnerabilitiesPerRequest ()I - public fun getIastWeakCipherAlgorithms ()Ljava/util/regex/Pattern; - public fun getIastWeakHashAlgorithms ()Ljava/util/Set; public fun getIdGenerationStrategy ()Lcom/datadog/trace/api/IdGenerationStrategy; public fun getInstrumentationAnalyticsSampleRate ([Ljava/lang/String;)F public fun getJmsUnacknowledgedMaxAge ()I - public fun getJmxFetchCheckPeriod ()Ljava/lang/Integer; - public fun getJmxFetchConfigDir ()Ljava/lang/String; - public fun getJmxFetchConfigs ()Ljava/util/List; - public fun getJmxFetchInitialRefreshBeansPeriod ()Ljava/lang/Integer; - public fun getJmxFetchMetricsConfigs ()Ljava/util/List; - public fun getJmxFetchMultipleRuntimeServicesLimit ()I - public fun getJmxFetchRefreshBeansPeriod ()Ljava/lang/Integer; - public fun getJmxFetchStatsdHost ()Ljava/lang/String; - public fun getJmxFetchStatsdPort ()Ljava/lang/Integer; public fun getLocalRootSpanTags ()Ljava/util/Map; public fun getLongRunningTraceFlushInterval ()J public fun getMergedCrashTrackingTags ()Ljava/util/Map; - public fun getMergedJmxTags ()Ljava/util/Map; public fun getMergedProfilingTags ()Ljava/util/Map; public fun getMergedSpanTags ()Ljava/util/Map; public fun getMetricsIgnoredResources ()Ljava/util/Set; @@ -1518,33 +1436,11 @@ public class com/datadog/trace/api/Config { public fun getWriterType ()Ljava/lang/String; public fun getxDatadogTagsMaxLength ()I public fun isAgentConfiguredUsingDefault ()Z - public fun isApiSecurityEnabled ()Z - public fun isAppSecReportingInband ()Z - public fun isAppSecWafMetrics ()Z public fun isAwsPropagationEnabled ()Z public fun isAzureAppServices ()Z - public fun isCiVisibilityAgentlessEnabled ()Z - public fun isCiVisibilityAutoConfigurationEnabled ()Z - public fun isCiVisibilityBuildInstrumentationEnabled ()Z - public fun isCiVisibilityCiProviderIntegrationEnabled ()Z - public fun isCiVisibilityCodeCoverageEnabled ()Z - public fun isCiVisibilityCodeCoveragePercentageCalculationEnabled ()Z - public fun isCiVisibilityCompilerPluginAutoConfigurationEnabled ()Z - public fun isCiVisibilityCoverageSegmentsEnabled ()Z public fun isCiVisibilityEnabled ()Z - public fun isCiVisibilityFlakyRetryEnabled ()Z - public fun isCiVisibilityGitUnshallowDefer ()Z - public fun isCiVisibilityGitUnshallowEnabled ()Z - public fun isCiVisibilityGitUploadEnabled ()Z - public fun isCiVisibilityItrEnabled ()Z - public fun isCiVisibilityJacocoPluginVersionProvided ()Z - public fun isCiVisibilityRepoIndexSharingEnabled ()Z - public fun isCiVisibilitySourceDataEnabled ()Z - public fun isCiVisibilitySourceDataRootCheckEnabled ()Z - public fun isCiVisibilityTraceSanitationEnabled ()Z public fun isClientIpEnabled ()Z public fun isCrashTrackingAgentless ()Z - public fun isCwsEnabled ()Z public fun isDataStreamsEnabled ()Z public fun isDatadogProfilerEnabled ()Z public static fun isDatadogProfilerEnablementOverridden ()Z @@ -1553,13 +1449,6 @@ public class com/datadog/trace/api/Config { public fun isDbClientSplitByInstance ()Z public fun isDbClientSplitByInstanceTypeSuffix ()Z public fun isDebugEnabled ()Z - public fun isDebuggerClassFileDumpEnabled ()Z - public fun isDebuggerEnabled ()Z - public fun isDebuggerInstrumentTheWorld ()Z - public fun isDebuggerMetricsEnabled ()Z - public fun isDebuggerSymbolEnabled ()Z - public fun isDebuggerSymbolForceUpload ()Z - public fun isDebuggerVerifyByteCode ()Z public fun isElasticsearchBodyAndParamsEnabled ()Z public fun isElasticsearchBodyEnabled ()Z public fun isElasticsearchParamsEnabled ()Z @@ -1577,19 +1466,13 @@ public class com/datadog/trace/api/Config { public fun isHttpServerTagQueryString ()Z public fun isHystrixMeasuredEnabled ()Z public fun isHystrixTagsEnabled ()Z - public fun isIastDebugEnabled ()Z - public fun isIastDeduplicationEnabled ()Z - public fun isIastRedactionEnabled ()Z - public fun isIastStacktraceLeakSuppress ()Z public fun isIgniteCacheIncludeKeys ()Z public fun isInjectBaggageAsTagsEnabled ()Z public fun isIntegrationSynapseLegacyOperationName ()Z public fun isJaxRsExceptionAsErrorEnabled ()Z public fun isJmsPropagationDisabledForDestination (Ljava/lang/String;)Z public fun isJmsPropagationEnabled ()Z - public fun isJmxFetchEnabled ()Z public fun isJmxFetchIntegrationEnabled (Ljava/lang/Iterable;Z)Z - public fun isJmxFetchMultipleRuntimeServicesEnabled ()Z public fun isKafkaClientBase64DecodingEnabled ()Z public fun isKafkaClientPropagationDisabledForTopic (Ljava/lang/String;)Z public fun isKafkaClientPropagationEnabled ()Z @@ -1849,10 +1732,6 @@ public abstract class com/datadog/trace/api/DDTraceId { public abstract fun toString ()Ljava/lang/String; } -public abstract interface annotation class com/datadog/trace/api/DisableTestTrace : java/lang/annotation/Annotation { - public abstract fun reason ()Ljava/lang/String; -} - public final class com/datadog/trace/api/DynamicConfig { public fun captureTraceConfig ()Lcom/datadog/trace/api/DynamicConfig$Snapshot; public static fun create ()Lcom/datadog/trace/api/DynamicConfig$Builder; @@ -2000,13 +1879,11 @@ public abstract class com/datadog/trace/api/IdGenerationStrategy { public class com/datadog/trace/api/InstrumenterConfig { public static fun get ()Lcom/datadog/trace/api/InstrumenterConfig; - public fun getAppSecActivation ()Lcom/datadog/trace/api/ProductActivation; public fun getExcludedClassLoaders ()Ljava/util/Set; public fun getExcludedClasses ()Ljava/util/List; public fun getExcludedClassesFile ()Ljava/lang/String; public fun getExcludedCodeSources ()Ljava/util/List; public fun getHttpURLConnectionClassName ()Ljava/lang/String; - public fun getIastActivation ()Lcom/datadog/trace/api/ProductActivation; public fun getJdbcConnectionClassName ()Ljava/lang/String; public fun getJdbcPreparedStatementClassName ()Ljava/lang/String; public fun getResolverCacheDir ()Ljava/lang/String; @@ -2019,7 +1896,6 @@ public class com/datadog/trace/api/InstrumenterConfig { public fun getTraceExecutors ()Ljava/util/List; public fun getTraceMethods ()Ljava/util/Map; public fun getTraceThreadPoolExecutorsExclude ()Ljava/util/Set; - public fun isCiVisibilityEnabled ()Z public fun isDirectAllocationProfilingEnabled ()Z public fun isIntegrationEnabled (Ljava/lang/Iterable;Z)Z public fun isIntegrationShortcutMatchingEnabled (Ljava/lang/Iterable;Z)Z @@ -2270,303 +2146,6 @@ public final class com/datadog/trace/api/cache/RadixTreeCache { public fun get (I)Ljava/lang/Object; } -public abstract interface class com/datadog/trace/api/civisibility/CIConstants { - public static final field TEST_FAIL Ljava/lang/String; - public static final field TEST_PASS Ljava/lang/String; - public static final field TEST_SKIP Ljava/lang/String; -} - -public abstract interface class com/datadog/trace/api/civisibility/DDTest { - public abstract fun end (Ljava/lang/Long;)V - public abstract fun setErrorInfo (Ljava/lang/Throwable;)V - public abstract fun setSkipReason (Ljava/lang/String;)V - public abstract fun setTag (Ljava/lang/String;Ljava/lang/Object;)V -} - -public abstract interface class com/datadog/trace/api/civisibility/DDTestModule { - public abstract fun end (Ljava/lang/Long;)V - public abstract fun setErrorInfo (Ljava/lang/Throwable;)V - public abstract fun setSkipReason (Ljava/lang/String;)V - public abstract fun setTag (Ljava/lang/String;Ljava/lang/Object;)V - public fun testSuiteStart (Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Long;)Lcom/datadog/trace/api/civisibility/DDTestSuite; - public abstract fun testSuiteStart (Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Long;Z)Lcom/datadog/trace/api/civisibility/DDTestSuite; -} - -public abstract interface class com/datadog/trace/api/civisibility/DDTestSession { - public abstract fun end (Ljava/lang/Long;)V - public abstract fun setErrorInfo (Ljava/lang/Throwable;)V - public abstract fun setSkipReason (Ljava/lang/String;)V - public abstract fun setTag (Ljava/lang/String;Ljava/lang/Object;)V - public abstract fun testModuleStart (Ljava/lang/String;Ljava/lang/Long;)Lcom/datadog/trace/api/civisibility/DDTestModule; -} - -public abstract interface class com/datadog/trace/api/civisibility/DDTestSuite { - public abstract fun end (Ljava/lang/Long;)V - public abstract fun setErrorInfo (Ljava/lang/Throwable;)V - public abstract fun setSkipReason (Ljava/lang/String;)V - public abstract fun setTag (Ljava/lang/String;Ljava/lang/Object;)V - public abstract fun testStart (Ljava/lang/String;Ljava/lang/reflect/Method;Ljava/lang/Long;)Lcom/datadog/trace/api/civisibility/DDTest; -} - -public abstract class com/datadog/trace/api/civisibility/InstrumentationBridge { - public static final field ITR_SKIP_REASON Ljava/lang/String; - public static final field ITR_UNSKIPPABLE_TAG Ljava/lang/String; - public fun ()V - public static fun createBuildEventsHandler ()Lcom/datadog/trace/api/civisibility/events/BuildEventsHandler; - public static fun createTestEventsHandler (Ljava/lang/String;)Lcom/datadog/trace/api/civisibility/events/TestEventsHandler; - public static fun registerBuildEventsHandlerFactory (Lcom/datadog/trace/api/civisibility/events/BuildEventsHandler$Factory;)V - public static fun registerTestEventsHandlerFactory (Lcom/datadog/trace/api/civisibility/events/TestEventsHandler$Factory;)V -} - -public final class com/datadog/trace/api/civisibility/config/Configurations { - public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;)V - public fun equals (Ljava/lang/Object;)Z - public fun getCustom ()Ljava/util/Map; - public fun getOsArchitecture ()Ljava/lang/String; - public fun getOsPlatform ()Ljava/lang/String; - public fun getOsVersion ()Ljava/lang/String; - public fun getRuntimeArchitecture ()Ljava/lang/String; - public fun getRuntimeName ()Ljava/lang/String; - public fun getRuntimeVendor ()Ljava/lang/String; - public fun getRuntimeVersion ()Ljava/lang/String; - public fun getTestBundle ()Ljava/lang/String; - public fun hashCode ()I -} - -public class com/datadog/trace/api/civisibility/config/ModuleExecutionSettings { - public static final field EMPTY Lcom/datadog/trace/api/civisibility/config/ModuleExecutionSettings; - public fun (ZZLjava/util/Map;Ljava/util/Map;Ljava/util/Collection;Ljava/util/List;)V - public fun equals (Ljava/lang/Object;)Z - public fun getCoverageEnabledPackages ()Ljava/util/List; - public fun getFlakyTests ()Ljava/util/Collection; - public fun getFlakyTests (Ljava/lang/String;)Ljava/util/Collection; - public fun getSkippableTests (Ljava/lang/String;)Ljava/util/Collection; - public fun getSkippableTestsByModule ()Ljava/util/Map; - public fun getSystemProperties ()Ljava/util/Map; - public fun hashCode ()I - public fun isCodeCoverageEnabled ()Z - public fun isItrEnabled ()Z -} - -public class com/datadog/trace/api/civisibility/config/TestIdentifier { - public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/datadog/trace/api/civisibility/config/Configurations;)V - public fun equals (Ljava/lang/Object;)Z - public fun getConfigurations ()Lcom/datadog/trace/api/civisibility/config/Configurations; - public fun getName ()Ljava/lang/String; - public fun getParameters ()Ljava/lang/String; - public fun getSuite ()Ljava/lang/String; - public fun hashCode ()I - public fun toString ()Ljava/lang/String; -} - -public abstract class com/datadog/trace/api/civisibility/coverage/CoverageBridge { - public fun ()V - public static fun currentCoverageProbeStoreRecord (Ljava/lang/Class;)V - public static fun currentCoverageProbeStoreRecord (Ljava/lang/Class;JI)V - public static fun currentCoverageProbeStoreRecordNonCode (Ljava/lang/String;)V - public static fun getCoverageData ()[B - public static fun getCoverageProbeStoreRegistry ()Lcom/datadog/trace/api/civisibility/coverage/CoverageProbeStore$Registry; - public static fun registerCoverageDataSupplier (Lcom/datadog/trace/api/civisibility/coverage/CoverageDataSupplier;)V - public static fun registerCoverageProbeStoreRegistry (Lcom/datadog/trace/api/civisibility/coverage/CoverageProbeStore$Registry;)V - public static fun removeThreadLocalCoverageProbeStore ()V - public static fun setThreadLocalCoverageProbeStore (Lcom/datadog/trace/api/civisibility/coverage/CoverageProbeStore;)V -} - -public abstract interface class com/datadog/trace/api/civisibility/coverage/CoverageDataSupplier { - public abstract fun get ()[B -} - -public abstract interface class com/datadog/trace/api/civisibility/coverage/CoverageProbeStore : com/datadog/trace/api/civisibility/coverage/TestReportHolder { - public abstract fun record (Ljava/lang/Class;)V - public abstract fun record (Ljava/lang/Class;JI)V - public abstract fun recordNonCodeResource (Ljava/lang/String;)V - public abstract fun report (Ljava/lang/Long;Ljava/lang/Long;J)V -} - -public abstract interface class com/datadog/trace/api/civisibility/coverage/CoverageProbeStore$Registry { - public abstract fun setTotalProbeCount (Ljava/lang/String;I)V -} - -public class com/datadog/trace/api/civisibility/coverage/TestReport { - public fun (Ljava/lang/Long;Ljava/lang/Long;JLjava/util/Collection;)V - public fun getSpanId ()J - public fun getTestReportFileEntries ()Ljava/util/Collection; - public fun getTestSessionId ()Ljava/lang/Long; - public fun getTestSuiteId ()Ljava/lang/Long; - public fun isNotEmpty ()Z -} - -public class com/datadog/trace/api/civisibility/coverage/TestReportFileEntry { - public fun (Ljava/lang/String;Ljava/util/List;)V - public fun getSegments ()Ljava/util/Collection; - public fun getSourceFileName ()Ljava/lang/String; - public fun toString ()Ljava/lang/String; -} - -public class com/datadog/trace/api/civisibility/coverage/TestReportFileEntry$Segment : java/lang/Comparable { - public fun (IIIII)V - public fun compareTo (Lcom/datadog/trace/api/civisibility/coverage/TestReportFileEntry$Segment;)I - public synthetic fun compareTo (Ljava/lang/Object;)I - public fun getEndColumn ()I - public fun getEndLine ()I - public fun getNumberOfExecutions ()I - public fun getStartColumn ()I - public fun getStartLine ()I - public fun toString ()Ljava/lang/String; -} - -public abstract interface class com/datadog/trace/api/civisibility/coverage/TestReportHolder { - public abstract fun getReport ()Lcom/datadog/trace/api/civisibility/coverage/TestReport; -} - -public abstract interface class com/datadog/trace/api/civisibility/events/BuildEventsHandler { - public abstract fun getModuleExecutionSettings (Ljava/lang/Object;Ljava/nio/file/Path;)Lcom/datadog/trace/api/civisibility/config/ModuleExecutionSettings; - public abstract fun getModuleInfo (Ljava/lang/Object;Ljava/lang/String;)Lcom/datadog/trace/api/civisibility/events/BuildEventsHandler$ModuleInfo; - public abstract fun onTestModuleFail (Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Throwable;)V - public abstract fun onTestModuleFinish (Ljava/lang/Object;Ljava/lang/String;)V - public abstract fun onTestModuleSkip (Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;)V - public abstract fun onTestModuleStart (Ljava/lang/Object;Ljava/lang/String;Ljava/util/Collection;Ljava/util/Map;)Lcom/datadog/trace/api/civisibility/events/BuildEventsHandler$ModuleInfo; - public abstract fun onTestSessionFail (Ljava/lang/Object;Ljava/lang/Throwable;)V - public abstract fun onTestSessionFinish (Ljava/lang/Object;)V - public abstract fun onTestSessionStart (Ljava/lang/Object;Ljava/lang/String;Ljava/nio/file/Path;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;)V -} - -public abstract interface class com/datadog/trace/api/civisibility/events/BuildEventsHandler$Factory { - public abstract fun create ()Lcom/datadog/trace/api/civisibility/events/BuildEventsHandler; -} - -public final class com/datadog/trace/api/civisibility/events/BuildEventsHandler$ModuleInfo { - public final field moduleId J - public final field sessionId J - public final field signalServerHost Ljava/lang/String; - public final field signalServerPort I - public fun (JJLjava/lang/String;I)V -} - -public abstract interface class com/datadog/trace/api/civisibility/events/TestEventsHandler : java/io/Closeable { - public abstract fun close ()V - public abstract fun onTestFailure (Ljava/lang/String;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Throwable;)V - public abstract fun onTestFinish (Ljava/lang/String;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/String;)V - public abstract fun onTestIgnore (Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Collection;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/reflect/Method;Ljava/lang/String;)V - public abstract fun onTestSkip (Ljava/lang/String;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;)V - public abstract fun onTestStart (Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Collection;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/reflect/Method;)V - public abstract fun onTestSuiteFailure (Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Throwable;)V - public abstract fun onTestSuiteFinish (Ljava/lang/String;Ljava/lang/Class;)V - public abstract fun onTestSuiteSkip (Ljava/lang/String;Ljava/lang/Class;Ljava/lang/String;)V - public abstract fun onTestSuiteStart (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;Ljava/util/Collection;Z)V - public abstract fun retryPolicy (Lcom/datadog/trace/api/civisibility/config/TestIdentifier;)Lcom/datadog/trace/api/civisibility/retry/TestRetryPolicy; - public abstract fun skip (Lcom/datadog/trace/api/civisibility/config/TestIdentifier;)Z -} - -public abstract interface class com/datadog/trace/api/civisibility/events/TestEventsHandler$Factory { - public abstract fun create (Ljava/lang/String;)Lcom/datadog/trace/api/civisibility/events/TestEventsHandler; -} - -public class com/datadog/trace/api/civisibility/noop/NoOpDDTest : com/datadog/trace/api/civisibility/DDTest { - public fun ()V - public fun end (Ljava/lang/Long;)V - public fun setErrorInfo (Ljava/lang/Throwable;)V - public fun setSkipReason (Ljava/lang/String;)V - public fun setTag (Ljava/lang/String;Ljava/lang/Object;)V -} - -public class com/datadog/trace/api/civisibility/noop/NoOpDDTestModule : com/datadog/trace/api/civisibility/DDTestModule { - public fun ()V - public fun end (Ljava/lang/Long;)V - public fun setErrorInfo (Ljava/lang/Throwable;)V - public fun setSkipReason (Ljava/lang/String;)V - public fun setTag (Ljava/lang/String;Ljava/lang/Object;)V - public fun testSuiteStart (Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Long;Z)Lcom/datadog/trace/api/civisibility/DDTestSuite; -} - -public class com/datadog/trace/api/civisibility/noop/NoOpDDTestSession : com/datadog/trace/api/civisibility/DDTestSession { - public static final field INSTANCE Lcom/datadog/trace/api/civisibility/DDTestSession; - public fun ()V - public fun end (Ljava/lang/Long;)V - public fun setErrorInfo (Ljava/lang/Throwable;)V - public fun setSkipReason (Ljava/lang/String;)V - public fun setTag (Ljava/lang/String;Ljava/lang/Object;)V - public fun testModuleStart (Ljava/lang/String;Ljava/lang/Long;)Lcom/datadog/trace/api/civisibility/DDTestModule; -} - -public class com/datadog/trace/api/civisibility/noop/NoOpDDTestSuite : com/datadog/trace/api/civisibility/DDTestSuite { - public fun ()V - public fun end (Ljava/lang/Long;)V - public fun setErrorInfo (Ljava/lang/Throwable;)V - public fun setSkipReason (Ljava/lang/String;)V - public fun setTag (Ljava/lang/String;Ljava/lang/Object;)V - public fun testStart (Ljava/lang/String;Ljava/lang/reflect/Method;Ljava/lang/Long;)Lcom/datadog/trace/api/civisibility/DDTest; -} - -public abstract interface class com/datadog/trace/api/civisibility/retry/TestRetryPolicy { - public abstract fun retry (Z)Z - public abstract fun retryPossible ()Z -} - -public final class com/datadog/trace/api/config/AppSecConfig { - public static final field API_SECURITY_ENABLED Ljava/lang/String; - public static final field API_SECURITY_REQUEST_SAMPLE_RATE Ljava/lang/String; - public static final field APPSEC_AUTOMATED_USER_EVENTS_TRACKING Ljava/lang/String; - public static final field APPSEC_ENABLED Ljava/lang/String; - public static final field APPSEC_HTTP_BLOCKED_TEMPLATE_HTML Ljava/lang/String; - public static final field APPSEC_HTTP_BLOCKED_TEMPLATE_JSON Ljava/lang/String; - public static final field APPSEC_IP_ADDR_HEADER Ljava/lang/String; - public static final field APPSEC_OBFUSCATION_PARAMETER_KEY_REGEXP Ljava/lang/String; - public static final field APPSEC_OBFUSCATION_PARAMETER_VALUE_REGEXP Ljava/lang/String; - public static final field APPSEC_REPORTING_INBAND Ljava/lang/String; - public static final field APPSEC_REPORT_TIMEOUT_SEC Ljava/lang/String; - public static final field APPSEC_RULES_FILE Ljava/lang/String; - public static final field APPSEC_TRACE_RATE_LIMIT Ljava/lang/String; - public static final field APPSEC_WAF_METRICS Ljava/lang/String; - public static final field APPSEC_WAF_TIMEOUT Ljava/lang/String; -} - -public final class com/datadog/trace/api/config/CiVisibilityConfig { - public static final field CIVISIBILITY_ADDITIONAL_CHILD_PROCESS_JVM_ARGS Ljava/lang/String; - public static final field CIVISIBILITY_AGENTLESS_ENABLED Ljava/lang/String; - public static final field CIVISIBILITY_AGENTLESS_URL Ljava/lang/String; - public static final field CIVISIBILITY_AGENT_JAR_URI Ljava/lang/String; - public static final field CIVISIBILITY_AUTO_CONFIGURATION_ENABLED Ljava/lang/String; - public static final field CIVISIBILITY_BACKEND_API_TIMEOUT_MILLIS Ljava/lang/String; - public static final field CIVISIBILITY_BUILD_INSTRUMENTATION_ENABLED Ljava/lang/String; - public static final field CIVISIBILITY_CIPROVIDER_INTEGRATION_ENABLED Ljava/lang/String; - public static final field CIVISIBILITY_CODE_COVERAGE_ENABLED Ljava/lang/String; - public static final field CIVISIBILITY_CODE_COVERAGE_EXCLUDES Ljava/lang/String; - public static final field CIVISIBILITY_CODE_COVERAGE_INCLUDES Ljava/lang/String; - public static final field CIVISIBILITY_CODE_COVERAGE_PERCENTAGE_CALCULATION_ENABLED Ljava/lang/String; - public static final field CIVISIBILITY_CODE_COVERAGE_REPORT_DUMP_DIR Ljava/lang/String; - public static final field CIVISIBILITY_CODE_COVERAGE_ROOT_PACKAGES_LIMIT Ljava/lang/String; - public static final field CIVISIBILITY_CODE_COVERAGE_SEGMENTS_ENABLED Ljava/lang/String; - public static final field CIVISIBILITY_COMPILER_PLUGIN_AUTO_CONFIGURATION_ENABLED Ljava/lang/String; - public static final field CIVISIBILITY_COMPILER_PLUGIN_VERSION Ljava/lang/String; - public static final field CIVISIBILITY_DEBUG_PORT Ljava/lang/String; - public static final field CIVISIBILITY_ENABLED Ljava/lang/String; - public static final field CIVISIBILITY_FLAKY_RETRY_COUNT Ljava/lang/String; - public static final field CIVISIBILITY_FLAKY_RETRY_ENABLED Ljava/lang/String; - public static final field CIVISIBILITY_GIT_COMMAND_TIMEOUT_MILLIS Ljava/lang/String; - public static final field CIVISIBILITY_GIT_REMOTE_NAME Ljava/lang/String; - public static final field CIVISIBILITY_GIT_UNSHALLOW_DEFER Ljava/lang/String; - public static final field CIVISIBILITY_GIT_UNSHALLOW_ENABLED Ljava/lang/String; - public static final field CIVISIBILITY_GIT_UPLOAD_ENABLED Ljava/lang/String; - public static final field CIVISIBILITY_GIT_UPLOAD_TIMEOUT_MILLIS Ljava/lang/String; - public static final field CIVISIBILITY_INJECTED_TRACER_VERSION Ljava/lang/String; - public static final field CIVISIBILITY_ITR_ENABLED Ljava/lang/String; - public static final field CIVISIBILITY_JACOCO_GRADLE_SOURCE_SETS Ljava/lang/String; - public static final field CIVISIBILITY_JACOCO_PLUGIN_VERSION Ljava/lang/String; - public static final field CIVISIBILITY_JVM_INFO_CACHE_SIZE Ljava/lang/String; - public static final field CIVISIBILITY_MODULE_EXECUTION_SETTINGS_CACHE_SIZE Ljava/lang/String; - public static final field CIVISIBILITY_MODULE_ID Ljava/lang/String; - public static final field CIVISIBILITY_MODULE_NAME Ljava/lang/String; - public static final field CIVISIBILITY_REPO_INDEX_SHARING_ENABLED Ljava/lang/String; - public static final field CIVISIBILITY_RESOURCE_FOLDER_NAMES Ljava/lang/String; - public static final field CIVISIBILITY_SESSION_ID Ljava/lang/String; - public static final field CIVISIBILITY_SIGNAL_SERVER_HOST Ljava/lang/String; - public static final field CIVISIBILITY_SIGNAL_SERVER_PORT Ljava/lang/String; - public static final field CIVISIBILITY_SOURCE_DATA_ENABLED Ljava/lang/String; - public static final field CIVISIBILITY_SOURCE_DATA_ROOT_CHECK_ENABLED Ljava/lang/String; - public static final field CIVISIBILITY_TRACE_SANITATION_ENABLED Ljava/lang/String; -} - public final class com/datadog/trace/api/config/CrashTrackingConfig { public static final field CRASH_TRACKING_AGENTLESS Ljava/lang/String; public static final field CRASH_TRACKING_AGENTLESS_DEFAULT Z @@ -2579,36 +2158,6 @@ public final class com/datadog/trace/api/config/CrashTrackingConfig { public static final field CRASH_TRACKING_UPLOAD_TIMEOUT_DEFAULT I } -public final class com/datadog/trace/api/config/CwsConfig { - public static final field CWS_ENABLED Ljava/lang/String; - public static final field CWS_TLS_REFRESH Ljava/lang/String; -} - -public final class com/datadog/trace/api/config/DebuggerConfig { - public static final field DEBUGGER_CAPTURE_TIMEOUT Ljava/lang/String; - public static final field DEBUGGER_CLASSFILE_DUMP_ENABLED Ljava/lang/String; - public static final field DEBUGGER_DIAGNOSTICS_INTERVAL Ljava/lang/String; - public static final field DEBUGGER_ENABLED Ljava/lang/String; - public static final field DEBUGGER_EXCLUDE_FILES Ljava/lang/String; - public static final field DEBUGGER_INSTRUMENT_THE_WORLD Ljava/lang/String; - public static final field DEBUGGER_MAX_PAYLOAD_SIZE Ljava/lang/String; - public static final field DEBUGGER_METRICS_ENABLED Ljava/lang/String; - public static final field DEBUGGER_POLL_INTERVAL Ljava/lang/String; - public static final field DEBUGGER_PROBE_FILE_LOCATION Ljava/lang/String; - public static final field DEBUGGER_PROBE_URL Ljava/lang/String; - public static final field DEBUGGER_REDACTED_IDENTIFIERS Ljava/lang/String; - public static final field DEBUGGER_REDACTED_TYPES Ljava/lang/String; - public static final field DEBUGGER_SNAPSHOT_URL Ljava/lang/String; - public static final field DEBUGGER_SYMBOL_ENABLED Ljava/lang/String; - public static final field DEBUGGER_SYMBOL_FLUSH_THRESHOLD Ljava/lang/String; - public static final field DEBUGGER_SYMBOL_FORCE_UPLOAD Ljava/lang/String; - public static final field DEBUGGER_SYMBOL_INCLUDES Ljava/lang/String; - public static final field DEBUGGER_UPLOAD_BATCH_SIZE Ljava/lang/String; - public static final field DEBUGGER_UPLOAD_FLUSH_INTERVAL Ljava/lang/String; - public static final field DEBUGGER_UPLOAD_TIMEOUT Ljava/lang/String; - public static final field DEBUGGER_VERIFY_BYTECODE Ljava/lang/String; -} - public final class com/datadog/trace/api/config/GeneralConfig { public static final field API_KEY Ljava/lang/String; public static final field API_KEY_FILE Ljava/lang/String; @@ -2659,41 +2208,6 @@ public final class com/datadog/trace/api/config/GeneralConfig { public static final field VERSION Ljava/lang/String; } -public final class com/datadog/trace/api/config/IastConfig { - public static final field IAST_DEBUG_ENABLED Ljava/lang/String; - public static final field IAST_DEDUPLICATION_ENABLED Ljava/lang/String; - public static final field IAST_DETECTION_MODE Ljava/lang/String; - public static final field IAST_ENABLED Ljava/lang/String; - public static final field IAST_MAX_CONCURRENT_REQUESTS Ljava/lang/String; - public static final field IAST_MAX_RANGE_COUNT Ljava/lang/String; - public static final field IAST_REDACTION_ENABLED Ljava/lang/String; - public static final field IAST_REDACTION_NAME_PATTERN Ljava/lang/String; - public static final field IAST_REDACTION_VALUE_PATTERN Ljava/lang/String; - public static final field IAST_REQUEST_SAMPLING Ljava/lang/String; - public static final field IAST_STACKTRACE_LEAK_SUPPRESS Ljava/lang/String; - public static final field IAST_TELEMETRY_VERBOSITY Ljava/lang/String; - public static final field IAST_TRUNCATION_MAX_VALUE_LENGTH Ljava/lang/String; - public static final field IAST_VULNERABILITIES_PER_REQUEST Ljava/lang/String; - public static final field IAST_WEAK_CIPHER_ALGORITHMS Ljava/lang/String; - public static final field IAST_WEAK_HASH_ALGORITHMS Ljava/lang/String; -} - -public final class com/datadog/trace/api/config/JmxFetchConfig { - public static final field JMX_FETCH_CHECK_PERIOD Ljava/lang/String; - public static final field JMX_FETCH_CONFIG Ljava/lang/String; - public static final field JMX_FETCH_CONFIG_DIR Ljava/lang/String; - public static final field JMX_FETCH_ENABLED Ljava/lang/String; - public static final field JMX_FETCH_INITIAL_REFRESH_BEANS_PERIOD Ljava/lang/String; - public static final field JMX_FETCH_METRICS_CONFIGS Ljava/lang/String; - public static final field JMX_FETCH_MULTIPLE_RUNTIME_SERVICES_ENABLED Ljava/lang/String; - public static final field JMX_FETCH_MULTIPLE_RUNTIME_SERVICES_LIMIT Ljava/lang/String; - public static final field JMX_FETCH_REFRESH_BEANS_PERIOD Ljava/lang/String; - public static final field JMX_FETCH_START_DELAY Ljava/lang/String; - public static final field JMX_FETCH_STATSD_HOST Ljava/lang/String; - public static final field JMX_FETCH_STATSD_PORT Ljava/lang/String; - public static final field JMX_TAGS Ljava/lang/String; -} - public final class com/datadog/trace/api/config/ProfilingConfig { public static final field PROFILING_AGENTLESS Ljava/lang/String; public static final field PROFILING_AGENTLESS_DEFAULT Z @@ -3000,22 +2514,6 @@ public final class com/datadog/trace/api/experimental/DataStreamsContextCarrier$ public fun set (Ljava/lang/String;Ljava/lang/String;)V } -public final class com/datadog/trace/api/flare/TracerFlare { - public fun ()V - public static fun addBinary (Ljava/util/zip/ZipOutputStream;Ljava/lang/String;[B)V - public static fun addReporter (Lcom/datadog/trace/api/flare/TracerFlare$Reporter;)V - public static fun addReportsToFlare (Ljava/util/zip/ZipOutputStream;)V - public static fun addText (Ljava/util/zip/ZipOutputStream;Ljava/lang/String;Ljava/lang/String;)V - public static fun cleanupAfterFlare ()V - public static fun prepareForFlare ()V -} - -public abstract interface class com/datadog/trace/api/flare/TracerFlare$Reporter { - public abstract fun addReportToFlare (Ljava/util/zip/ZipOutputStream;)V - public fun cleanupAfterFlare ()V - public fun prepareForFlare ()V -} - public abstract interface class com/datadog/trace/api/function/TriConsumer { public abstract fun accept (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V } @@ -3156,538 +2654,11 @@ public class com/datadog/trace/api/gateway/SubscriptionService$SubscriptionServi public fun reset ()V } -public class com/datadog/trace/api/http/StoredBodyFactories { - public static fun maybeCreateForByte (Ljava/nio/charset/Charset;Lcom/datadog/trace/bootstrap/instrumentation/api/AgentSpan;Ljava/lang/Object;)Lcom/datadog/trace/api/http/StoredByteBody; - public static fun maybeCreateForByte (Ljava/nio/charset/Charset;Ljava/lang/Object;)Lcom/datadog/trace/api/http/StoredByteBody; - public static fun maybeCreateForChar (Lcom/datadog/trace/bootstrap/instrumentation/api/AgentSpan;Ljava/lang/Object;)Lcom/datadog/trace/api/http/StoredCharBody; - public static fun maybeCreateForChar (Ljava/lang/Object;)Lcom/datadog/trace/api/http/StoredCharBody; - public static fun maybeDeliverBodyInOneGo (Ljava/lang/String;Lcom/datadog/trace/api/gateway/RequestContext;)Lcom/datadog/trace/api/gateway/Flow; - public static fun maybeDeliverBodyInOneGo (Ljava/util/function/Supplier;Lcom/datadog/trace/api/gateway/RequestContext;)Lcom/datadog/trace/api/gateway/Flow; -} - -public class com/datadog/trace/api/http/StoredBodyFactories$ConstantBodySupplier : com/datadog/trace/api/http/StoredBodySupplier { - public fun (Ljava/util/function/Supplier;)V - public fun get ()Ljava/lang/CharSequence; - public synthetic fun get ()Ljava/lang/Object; -} - public abstract interface class com/datadog/trace/api/http/StoredBodySupplier : java/util/function/Supplier { public abstract fun get ()Ljava/lang/CharSequence; public synthetic fun get ()Ljava/lang/Object; } -public class com/datadog/trace/api/http/StoredByteBody : com/datadog/trace/api/http/StoredBodySupplier { - public fun (Lcom/datadog/trace/api/gateway/RequestContext;Ljava/util/function/BiFunction;Ljava/util/function/BiFunction;Ljava/nio/charset/Charset;I)V - public fun appendData (I)V - public fun appendData (Lcom/datadog/trace/api/http/StoredByteBody$ByteBufferWriteCallback;I)V - public fun appendData ([BII)V - public fun get ()Ljava/lang/CharSequence; - public synthetic fun get ()Ljava/lang/Object; - public fun maybeNotify ()Lcom/datadog/trace/api/gateway/Flow; - public fun maybeNotifyAndBlock ()V - public fun setCharset (Ljava/nio/charset/Charset;)V -} - -public abstract interface class com/datadog/trace/api/http/StoredByteBody$ByteBufferWriteCallback { - public abstract fun put (Ljava/nio/ByteBuffer;)V -} - -public class com/datadog/trace/api/http/StoredCharBody : com/datadog/trace/api/http/StoredBodySupplier { - public fun (Lcom/datadog/trace/api/gateway/RequestContext;Ljava/util/function/BiFunction;Ljava/util/function/BiFunction;I)V - public fun appendData (I)V - public fun appendData (Ljava/lang/String;)V - public fun appendData (Ljava/nio/CharBuffer;)V - public fun appendData ([CII)V - public synthetic fun get ()Ljava/lang/CharSequence; - public synthetic fun get ()Ljava/lang/Object; - public fun get ()Ljava/nio/CharBuffer; - public fun maybeNotify ()Lcom/datadog/trace/api/gateway/Flow; - public fun maybeNotifyAndBlock ()V -} - -public abstract interface class com/datadog/trace/api/iast/IastCallSites { -} - -public abstract interface class com/datadog/trace/api/iast/IastCallSites$HasTelemetry { - public abstract fun setVerbosity (Lcom/datadog/trace/api/iast/telemetry/Verbosity;)V -} - -public abstract interface class com/datadog/trace/api/iast/IastContext { -} - -public abstract class com/datadog/trace/api/iast/IastContext$Provider { - public static fun get ()Lcom/datadog/trace/api/iast/IastContext; - public static fun get (Lcom/datadog/trace/api/gateway/RequestContext;)Lcom/datadog/trace/api/iast/IastContext; - public static fun get (Lcom/datadog/trace/bootstrap/instrumentation/api/AgentSpan;)Lcom/datadog/trace/api/iast/IastContext; -} - -public abstract class com/datadog/trace/api/iast/IastDetectionMode : java/lang/Enum { - public static final field DEFAULT Lcom/datadog/trace/api/iast/IastDetectionMode; - public static final field FULL Lcom/datadog/trace/api/iast/IastDetectionMode; - public static final field UNLIMITED I - public abstract fun getIastMaxConcurrentRequests (Lcom/datadog/trace/bootstrap/config/provider/ConfigProvider;)I - public abstract fun getIastMaxRangeCount (Lcom/datadog/trace/bootstrap/config/provider/ConfigProvider;)I - public abstract fun getIastRequestSampling (Lcom/datadog/trace/bootstrap/config/provider/ConfigProvider;)F - public abstract fun getIastVulnerabilitiesPerRequest (Lcom/datadog/trace/bootstrap/config/provider/ConfigProvider;)I - public abstract fun isIastDeduplicationEnabled (Lcom/datadog/trace/bootstrap/config/provider/ConfigProvider;)Z - public static fun valueOf (Ljava/lang/String;)Lcom/datadog/trace/api/iast/IastDetectionMode; - public static fun values ()[Lcom/datadog/trace/api/iast/IastDetectionMode; -} - -public abstract class com/datadog/trace/api/iast/IastEnabledChecks { - public static fun isMajorJavaVersionAtLeast (Ljava/lang/String;)Z -} - -public abstract interface class com/datadog/trace/api/iast/IastModule { - public static final field LOG Lcom/datadog/trace/logger/Logger; - public fun onUnexpectedException (Ljava/lang/String;Ljava/lang/Throwable;)V -} - -public abstract class com/datadog/trace/api/iast/InstrumentationBridge { - public static field APPLICATION Lcom/datadog/trace/api/iast/sink/ApplicationModule; - public static field CODEC Lcom/datadog/trace/api/iast/propagation/CodecModule; - public static field COMMAND_INJECTION Lcom/datadog/trace/api/iast/sink/CommandInjectionModule; - public static field HEADER_INJECTION Lcom/datadog/trace/api/iast/sink/HeaderInjectionModule; - public static field HSTS_MISSING_HEADER_MODULE Lcom/datadog/trace/api/iast/sink/HstsMissingHeaderModule; - public static field INSECURE_COOKIE Lcom/datadog/trace/api/iast/sink/InsecureCookieModule; - public static field LDAP_INJECTION Lcom/datadog/trace/api/iast/sink/LdapInjectionModule; - public static field NO_HTTPONLY_COOKIE Lcom/datadog/trace/api/iast/sink/NoHttpOnlyCookieModule; - public static field NO_SAMESITE_COOKIE Lcom/datadog/trace/api/iast/sink/NoSameSiteCookieModule; - public static field PATH_TRAVERSAL Lcom/datadog/trace/api/iast/sink/PathTraversalModule; - public static field PROPAGATION Lcom/datadog/trace/api/iast/propagation/PropagationModule; - public static field RESPONSE_HEADER_MODULE Lcom/datadog/trace/api/iast/sink/HttpResponseHeaderModule; - public static field SQL_INJECTION Lcom/datadog/trace/api/iast/sink/SqlInjectionModule; - public static field SSRF Lcom/datadog/trace/api/iast/sink/SsrfModule; - public static field STACKTRACE_LEAK_MODULE Lcom/datadog/trace/api/iast/sink/StacktraceLeakModule; - public static field STRING Lcom/datadog/trace/api/iast/propagation/StringModule; - public static field TRUST_BOUNDARY_VIOLATION Lcom/datadog/trace/api/iast/sink/TrustBoundaryViolationModule; - public static field UNVALIDATED_REDIRECT Lcom/datadog/trace/api/iast/sink/UnvalidatedRedirectModule; - public static field WEAK_CIPHER Lcom/datadog/trace/api/iast/sink/WeakCipherModule; - public static field WEAK_HASH Lcom/datadog/trace/api/iast/sink/WeakHashModule; - public static field WEAK_RANDOMNESS Lcom/datadog/trace/api/iast/sink/WeakRandomnessModule; - public static field XPATH_INJECTION Lcom/datadog/trace/api/iast/sink/XPathInjectionModule; - public static field XSS Lcom/datadog/trace/api/iast/sink/XssModule; - public static field X_CONTENT_TYPE_HEADER_MODULE Lcom/datadog/trace/api/iast/sink/XContentTypeModule; - public static fun clearIastModules ()V - public static fun getIastModule (Ljava/lang/Class;)Lcom/datadog/trace/api/iast/IastModule; - public static fun registerIastModule (Lcom/datadog/trace/api/iast/IastModule;)V -} - -public abstract interface annotation class com/datadog/trace/api/iast/Propagation : java/lang/annotation/Annotation { -} - -public abstract interface annotation class com/datadog/trace/api/iast/Sink : java/lang/annotation/Annotation { - public abstract fun value ()B -} - -public abstract interface annotation class com/datadog/trace/api/iast/Source : java/lang/annotation/Annotation { - public abstract fun value ()B -} - -public abstract class com/datadog/trace/api/iast/SourceTypes { - public static final field GRPC_BODY B - public static final field GRPC_BODY_STRING Ljava/lang/String; - public static final field NONE B - public static final field REQUEST_BODY B - public static final field REQUEST_BODY_STRING Ljava/lang/String; - public static final field REQUEST_COOKIE_NAME B - public static final field REQUEST_COOKIE_NAME_STRING Ljava/lang/String; - public static final field REQUEST_COOKIE_VALUE B - public static final field REQUEST_COOKIE_VALUE_STRING Ljava/lang/String; - public static final field REQUEST_HEADER_NAME B - public static final field REQUEST_HEADER_NAME_STRING Ljava/lang/String; - public static final field REQUEST_HEADER_VALUE B - public static final field REQUEST_HEADER_VALUE_STRING Ljava/lang/String; - public static final field REQUEST_MATRIX_PARAMETER B - public static final field REQUEST_MATRIX_PARAMETER_STRING Ljava/lang/String; - public static final field REQUEST_MULTIPART_PARAMETER B - public static final field REQUEST_MULTIPART_PARAMETER_STRING Ljava/lang/String; - public static final field REQUEST_PARAMETER_NAME B - public static final field REQUEST_PARAMETER_NAME_STRING Ljava/lang/String; - public static final field REQUEST_PARAMETER_VALUE B - public static final field REQUEST_PARAMETER_VALUE_STRING Ljava/lang/String; - public static final field REQUEST_PATH B - public static final field REQUEST_PATH_PARAMETER B - public static final field REQUEST_PATH_PARAMETER_STRING Ljava/lang/String; - public static final field REQUEST_PATH_STRING Ljava/lang/String; - public static final field REQUEST_QUERY B - public static final field REQUEST_QUERY_STRING Ljava/lang/String; - public static final field REQUEST_URI B - public static final field REQUEST_URI_STRING Ljava/lang/String; - public static fun namedSource (B)B - public static fun toString (B)Ljava/lang/String; - public static fun values ()[B -} - -public abstract interface class com/datadog/trace/api/iast/Taintable { - public abstract fun $$DD$getSource ()Lcom/datadog/trace/api/iast/Taintable$Source; - public abstract fun $$DD$setSource (Lcom/datadog/trace/api/iast/Taintable$Source;)V - public fun $DD$isTainted ()Z -} - -public class com/datadog/trace/api/iast/Taintable$DebugLogger { - public fun ()V - public static fun logTaint (Lcom/datadog/trace/api/iast/Taintable;)V -} - -public abstract interface class com/datadog/trace/api/iast/Taintable$Source { - public abstract fun getName ()Ljava/lang/String; - public abstract fun getOrigin ()B - public abstract fun getValue ()Ljava/lang/String; -} - -public class com/datadog/trace/api/iast/VulnerabilityMarks { - public static final field COMMAND_INJECTION_MARK I - public static final field HEADER_INJECTION_MARK I - public static final field LDAP_INJECTION_MARK I - public static final field NOT_MARKED I - public static final field PATH_TRAVERSAL_MARK I - public static final field SQL_INJECTION_MARK I - public static final field SSRF_MARK I - public static final field TRUST_BOUNDARY_VIOLATION I - public static final field UNVALIDATED_REDIRECT_MARK I - public static final field XPATH_INJECTION_MARK I - public static final field XSS_MARK I -} - -public abstract class com/datadog/trace/api/iast/VulnerabilityTypes { - public static final field ADMIN_CONSOLE_ACTIVE B - public static final field ADMIN_CONSOLE_ACTIVE_STRING Ljava/lang/String; - public static final field COMMAND_INJECTION B - public static final field COMMAND_INJECTION_STRING Ljava/lang/String; - public static final field DEFAULT_HTML_ESCAPE_INVALID B - public static final field DEFAULT_HTML_ESCAPE_INVALID_STRING Ljava/lang/String; - public static final field DIRECTORY_LISTING_LEAK B - public static final field DIRECTORY_LISTING_LEAK_STRING Ljava/lang/String; - public static final field HEADER_INJECTION B - public static final field HEADER_INJECTION_STRING Ljava/lang/String; - public static final field HSTS_HEADER_MISSING B - public static final field HSTS_HEADER_MISSING_STRING Ljava/lang/String; - public static final field INSECURE_COOKIE B - public static final field INSECURE_COOKIE_STRING Ljava/lang/String; - public static final field INSECURE_JSP_LAYOUT B - public static final field INSECURE_JSP_LAYOUT_STRING Ljava/lang/String; - public static final field LDAP_INJECTION B - public static final field LDAP_INJECTION_STRING Ljava/lang/String; - public static final field NO_HTTPONLY_COOKIE B - public static final field NO_HTTPONLY_COOKIE_STRING Ljava/lang/String; - public static final field NO_SAMESITE_COOKIE B - public static final field NO_SAMESITE_COOKIE_STRING Ljava/lang/String; - public static final field PATH_TRAVERSAL B - public static final field PATH_TRAVERSAL_STRING Ljava/lang/String; - public static final field RESPONSE_HEADER B - public static final field RESPONSE_HEADER_TYPES [B - public static final field SESSION_TIMEOUT B - public static final field SESSION_TIMEOUT_STRING Ljava/lang/String; - public static final field SPRING_RESPONSE B - public static final field SPRING_RESPONSE_TYPES [B - public static final field SQL_INJECTION B - public static final field SQL_INJECTION_STRING Ljava/lang/String; - public static final field SSRF B - public static final field SSRF_STRING Ljava/lang/String; - public static final field STACKTRACE_LEAK B - public static final field STACKTRACE_LEAK_STRING Ljava/lang/String; - public static final field TRUST_BOUNDARY_VIOLATION B - public static final field TRUST_BOUNDARY_VIOLATION_STRING Ljava/lang/String; - public static final field UNVALIDATED_REDIRECT B - public static final field UNVALIDATED_REDIRECT_STRING Ljava/lang/String; - public static final field VERB_TAMPERING B - public static final field VERB_TAMPERING_STRING Ljava/lang/String; - public static final field WEAK_CIPHER B - public static final field WEAK_CIPHER_STRING Ljava/lang/String; - public static final field WEAK_HASH B - public static final field WEAK_HASH_STRING Ljava/lang/String; - public static final field WEAK_RANDOMNESS B - public static final field WEAK_RANDOMNESS_STRING Ljava/lang/String; - public static final field XCONTENTTYPE_HEADER_MISSING B - public static final field XCONTENTTYPE_HEADER_MISSING_STRING Ljava/lang/String; - public static final field XPATH_INJECTION B - public static final field XPATH_INJECTION_STRING Ljava/lang/String; - public static final field XSS B - public static final field XSS_STRING Ljava/lang/String; - public static fun toString (B)Ljava/lang/String; - public static fun values ()[B -} - -public abstract interface class com/datadog/trace/api/iast/propagation/CodecModule : com/datadog/trace/api/iast/IastModule { - public abstract fun onBase64Decode ([B[B)V - public abstract fun onBase64Encode ([B[B)V - public abstract fun onStringFromBytes ([BLjava/lang/String;Ljava/lang/String;)V - public abstract fun onStringGetBytes (Ljava/lang/String;Ljava/lang/String;[B)V - public abstract fun onUrlDecode (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V -} - -public abstract interface class com/datadog/trace/api/iast/propagation/PropagationModule : com/datadog/trace/api/iast/IastModule { - public abstract fun findSource (Lcom/datadog/trace/api/iast/IastContext;Ljava/lang/Object;)Lcom/datadog/trace/api/iast/Taintable$Source; - public abstract fun findSource (Ljava/lang/Object;)Lcom/datadog/trace/api/iast/Taintable$Source; - public abstract fun isTainted (Lcom/datadog/trace/api/iast/IastContext;Ljava/lang/Object;)Z - public abstract fun isTainted (Ljava/lang/Object;)Z - public abstract fun taint (Lcom/datadog/trace/api/iast/IastContext;Ljava/lang/Object;B)V - public abstract fun taint (Lcom/datadog/trace/api/iast/IastContext;Ljava/lang/Object;BLjava/lang/CharSequence;)V - public abstract fun taint (Lcom/datadog/trace/api/iast/IastContext;Ljava/lang/Object;BLjava/lang/CharSequence;Ljava/lang/CharSequence;)V - public abstract fun taint (Ljava/lang/Object;B)V - public abstract fun taint (Ljava/lang/Object;BLjava/lang/CharSequence;)V - public abstract fun taint (Ljava/lang/Object;BLjava/lang/CharSequence;Ljava/lang/CharSequence;)V - public abstract fun taintDeeply (Lcom/datadog/trace/api/iast/IastContext;Ljava/lang/Object;BLjava/util/function/Predicate;)I - public abstract fun taintDeeply (Ljava/lang/Object;BLjava/util/function/Predicate;)I - public abstract fun taintIfAnyTainted (Lcom/datadog/trace/api/iast/IastContext;Ljava/lang/Object;[Ljava/lang/Object;)V - public abstract fun taintIfAnyTainted (Lcom/datadog/trace/api/iast/IastContext;Ljava/lang/Object;[Ljava/lang/Object;ZI)V - public abstract fun taintIfAnyTainted (Ljava/lang/Object;[Ljava/lang/Object;)V - public abstract fun taintIfAnyTainted (Ljava/lang/Object;[Ljava/lang/Object;ZI)V - public abstract fun taintIfTainted (Lcom/datadog/trace/api/iast/IastContext;Ljava/lang/Object;Ljava/lang/Object;)V - public abstract fun taintIfTainted (Lcom/datadog/trace/api/iast/IastContext;Ljava/lang/Object;Ljava/lang/Object;B)V - public abstract fun taintIfTainted (Lcom/datadog/trace/api/iast/IastContext;Ljava/lang/Object;Ljava/lang/Object;BLjava/lang/CharSequence;)V - public abstract fun taintIfTainted (Lcom/datadog/trace/api/iast/IastContext;Ljava/lang/Object;Ljava/lang/Object;BLjava/lang/CharSequence;Ljava/lang/CharSequence;)V - public abstract fun taintIfTainted (Lcom/datadog/trace/api/iast/IastContext;Ljava/lang/Object;Ljava/lang/Object;ZI)V - public abstract fun taintIfTainted (Ljava/lang/Object;Ljava/lang/Object;)V - public abstract fun taintIfTainted (Ljava/lang/Object;Ljava/lang/Object;B)V - public abstract fun taintIfTainted (Ljava/lang/Object;Ljava/lang/Object;BLjava/lang/CharSequence;)V - public abstract fun taintIfTainted (Ljava/lang/Object;Ljava/lang/Object;BLjava/lang/CharSequence;Ljava/lang/CharSequence;)V - public abstract fun taintIfTainted (Ljava/lang/Object;Ljava/lang/Object;ZI)V -} - -public abstract interface class com/datadog/trace/api/iast/propagation/StringModule : com/datadog/trace/api/iast/IastModule { - public abstract fun onSplit (Ljava/lang/String;[Ljava/lang/String;)V - public abstract fun onStringBuilderAppend (Ljava/lang/CharSequence;Ljava/lang/CharSequence;)V - public abstract fun onStringBuilderInit (Ljava/lang/CharSequence;Ljava/lang/CharSequence;)V - public abstract fun onStringBuilderToString (Ljava/lang/CharSequence;Ljava/lang/String;)V - public abstract fun onStringConcat (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V - public abstract fun onStringConcatFactory (Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;[I)V - public abstract fun onStringConstructor (Ljava/lang/String;Ljava/lang/String;)V - public abstract fun onStringFormat (Ljava/lang/Iterable;[Ljava/lang/Object;Ljava/lang/String;)V - public abstract fun onStringFormat (Ljava/lang/String;[Ljava/lang/Object;Ljava/lang/String;)V - public abstract fun onStringFormat (Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;Ljava/lang/String;)V - public abstract fun onStringJoin (Ljava/lang/String;Ljava/lang/CharSequence;[Ljava/lang/CharSequence;)V - public abstract fun onStringRepeat (Ljava/lang/String;ILjava/lang/String;)V - public abstract fun onStringSubSequence (Ljava/lang/String;IILjava/lang/CharSequence;)V - public abstract fun onStringToLowerCase (Ljava/lang/String;Ljava/lang/String;)V - public abstract fun onStringToUpperCase (Ljava/lang/String;Ljava/lang/String;)V - public abstract fun onStringTrim (Ljava/lang/String;Ljava/lang/String;)V -} - -public abstract interface class com/datadog/trace/api/iast/sink/ApplicationModule : com/datadog/trace/api/iast/IastModule { - public abstract fun onRealPath (Ljava/lang/String;)V -} - -public abstract interface class com/datadog/trace/api/iast/sink/CommandInjectionModule : com/datadog/trace/api/iast/IastModule { - public abstract fun onProcessBuilderStart (Ljava/util/List;)V - public abstract fun onRuntimeExec ([Ljava/lang/String;)V - public abstract fun onRuntimeExec ([Ljava/lang/String;[Ljava/lang/String;)V -} - -public abstract interface class com/datadog/trace/api/iast/sink/HeaderInjectionModule : com/datadog/trace/api/iast/IastModule { - public abstract fun onHeader (Ljava/lang/String;Ljava/lang/String;)V -} - -public abstract interface class com/datadog/trace/api/iast/sink/HstsMissingHeaderModule : com/datadog/trace/api/iast/sink/HttpRequestEndModule { -} - -public abstract interface class com/datadog/trace/api/iast/sink/HttpCookieModule : com/datadog/trace/api/iast/IastModule { - public abstract fun getType ()Ljava/lang/Object; - public abstract fun isVulnerable (Lcom/datadog/trace/api/iast/util/Cookie;)Z -} - -public abstract interface class com/datadog/trace/api/iast/sink/HttpRequestEndModule : com/datadog/trace/api/iast/IastModule { - public fun isHtmlResponse (Ljava/lang/String;)Z - public fun isIgnorableResponseCode (Ljava/lang/Integer;)Z - public abstract fun onRequestEnd (Ljava/lang/Object;Lcom/datadog/trace/api/gateway/IGSpanInfo;)V -} - -public abstract interface class com/datadog/trace/api/iast/sink/HttpResponseHeaderModule : com/datadog/trace/api/iast/IastModule { - public abstract fun onCookie (Lcom/datadog/trace/api/iast/util/Cookie;)V - public abstract fun onHeader (Ljava/lang/String;Ljava/lang/String;)V -} - -public abstract interface class com/datadog/trace/api/iast/sink/InsecureCookieModule : com/datadog/trace/api/iast/sink/HttpCookieModule { -} - -public abstract interface class com/datadog/trace/api/iast/sink/LdapInjectionModule : com/datadog/trace/api/iast/IastModule { - public abstract fun onDirContextSearch (Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V -} - -public abstract interface class com/datadog/trace/api/iast/sink/NoHttpOnlyCookieModule : com/datadog/trace/api/iast/sink/HttpCookieModule { -} - -public abstract interface class com/datadog/trace/api/iast/sink/NoSameSiteCookieModule : com/datadog/trace/api/iast/sink/HttpCookieModule { -} - -public abstract interface class com/datadog/trace/api/iast/sink/PathTraversalModule : com/datadog/trace/api/iast/IastModule { - public abstract fun onPathTraversal (Ljava/io/File;Ljava/lang/String;)V - public abstract fun onPathTraversal (Ljava/lang/String;)V - public abstract fun onPathTraversal (Ljava/lang/String;Ljava/lang/String;)V - public abstract fun onPathTraversal (Ljava/lang/String;[Ljava/lang/String;)V - public abstract fun onPathTraversal (Ljava/net/URI;)V -} - -public abstract interface class com/datadog/trace/api/iast/sink/SqlInjectionModule : com/datadog/trace/api/iast/IastModule { - public static final field DATABASE_PARAMETER Ljava/lang/String; - public abstract fun onJdbcQuery (Ljava/lang/String;)V - public abstract fun onJdbcQuery (Ljava/lang/String;Ljava/lang/String;)V -} - -public abstract interface class com/datadog/trace/api/iast/sink/SsrfModule : com/datadog/trace/api/iast/IastModule { - public abstract fun onURLConnection (Ljava/lang/Object;)V - public abstract fun onURLConnection (Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V -} - -public abstract interface class com/datadog/trace/api/iast/sink/StacktraceLeakModule : com/datadog/trace/api/iast/IastModule { - public abstract fun onStacktraceLeak (Ljava/lang/Throwable;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V -} - -public abstract interface class com/datadog/trace/api/iast/sink/TrustBoundaryViolationModule : com/datadog/trace/api/iast/IastModule { - public abstract fun onSessionValue (Ljava/lang/String;Ljava/lang/Object;)V -} - -public abstract interface class com/datadog/trace/api/iast/sink/UnvalidatedRedirectModule : com/datadog/trace/api/iast/IastModule { - public abstract fun onHeader (Ljava/lang/String;Ljava/lang/String;)V - public abstract fun onRedirect (Ljava/lang/String;)V - public abstract fun onRedirect (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V - public abstract fun onURIRedirect (Ljava/net/URI;)V -} - -public abstract interface class com/datadog/trace/api/iast/sink/WeakCipherModule : com/datadog/trace/api/iast/IastModule { - public abstract fun onCipherAlgorithm (Ljava/lang/String;)V -} - -public abstract interface class com/datadog/trace/api/iast/sink/WeakHashModule : com/datadog/trace/api/iast/IastModule { - public abstract fun onHashingAlgorithm (Ljava/lang/String;)V -} - -public abstract interface class com/datadog/trace/api/iast/sink/WeakRandomnessModule : com/datadog/trace/api/iast/IastModule { - public abstract fun onWeakRandom (Ljava/lang/Class;)V -} - -public abstract interface class com/datadog/trace/api/iast/sink/XContentTypeModule : com/datadog/trace/api/iast/sink/HttpRequestEndModule { -} - -public abstract interface class com/datadog/trace/api/iast/sink/XPathInjectionModule : com/datadog/trace/api/iast/IastModule { - public abstract fun onExpression (Ljava/lang/String;)V -} - -public abstract interface class com/datadog/trace/api/iast/sink/XssModule : com/datadog/trace/api/iast/IastModule { - public abstract fun onXss (Ljava/lang/CharSequence;Ljava/lang/String;I)V - public abstract fun onXss (Ljava/lang/String;)V - public abstract fun onXss (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V - public abstract fun onXss (Ljava/lang/String;[Ljava/lang/Object;)V - public abstract fun onXss ([C)V -} - -public final class com/datadog/trace/api/iast/telemetry/IastMetric : java/lang/Enum { - public static final field EXECUTED_PROPAGATION Lcom/datadog/trace/api/iast/telemetry/IastMetric; - public static final field EXECUTED_SINK Lcom/datadog/trace/api/iast/telemetry/IastMetric; - public static final field EXECUTED_SOURCE Lcom/datadog/trace/api/iast/telemetry/IastMetric; - public static final field EXECUTED_TAINTED Lcom/datadog/trace/api/iast/telemetry/IastMetric; - public static final field INSTRUMENTED_PROPAGATION Lcom/datadog/trace/api/iast/telemetry/IastMetric; - public static final field INSTRUMENTED_SINK Lcom/datadog/trace/api/iast/telemetry/IastMetric; - public static final field INSTRUMENTED_SOURCE Lcom/datadog/trace/api/iast/telemetry/IastMetric; - public static final field REQUEST_TAINTED Lcom/datadog/trace/api/iast/telemetry/IastMetric; - public static final field TAINTED_FLAT_MODE Lcom/datadog/trace/api/iast/telemetry/IastMetric; - public static fun count ()I - public fun getIndex (B)I - public fun getName ()Ljava/lang/String; - public fun getScope ()Lcom/datadog/trace/api/iast/telemetry/IastMetric$Scope; - public fun getTag ()Lcom/datadog/trace/api/iast/telemetry/IastMetric$Tag; - public fun isCommon ()Z - public fun isEnabled (Lcom/datadog/trace/api/iast/telemetry/Verbosity;)Z - public static fun valueOf (Ljava/lang/String;)Lcom/datadog/trace/api/iast/telemetry/IastMetric; - public static fun values ()[Lcom/datadog/trace/api/iast/telemetry/IastMetric; -} - -public final class com/datadog/trace/api/iast/telemetry/IastMetric$Scope { - public static final field GLOBAL Lcom/datadog/trace/api/iast/telemetry/IastMetric$Scope; - public static final field REQUEST Lcom/datadog/trace/api/iast/telemetry/IastMetric$Scope; - public fun getName ()Ljava/lang/String; -} - -public class com/datadog/trace/api/iast/telemetry/IastMetric$Tag { - public static final field SOURCE_TYPE Lcom/datadog/trace/api/iast/telemetry/IastMetric$Tag; - public static final field VULNERABILITY_TYPE Lcom/datadog/trace/api/iast/telemetry/IastMetric$Tag; - public fun getName ()Ljava/lang/String; - public fun getValues ()[B - public fun isWrapped (B)Z - public fun toString (B)Ljava/lang/String; - public fun unwrap (B)[B -} - -public class com/datadog/trace/api/iast/telemetry/IastMetricCollector : com/datadog/trace/api/telemetry/MetricCollector { - public fun ()V - protected fun (Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/atomic/AtomicLongArray;)V - public static fun add (Lcom/datadog/trace/api/iast/telemetry/IastMetric;BI)V - public static fun add (Lcom/datadog/trace/api/iast/telemetry/IastMetric;BILjava/lang/Object;)V - public static fun add (Lcom/datadog/trace/api/iast/telemetry/IastMetric;I)V - public static fun add (Lcom/datadog/trace/api/iast/telemetry/IastMetric;ILjava/lang/Object;)V - public fun addMetric (Lcom/datadog/trace/api/iast/telemetry/IastMetric;BI)V - public fun drain ()Ljava/util/Collection; - public static fun get ()Lcom/datadog/trace/api/iast/telemetry/IastMetricCollector; - public fun merge (Ljava/util/Collection;)V - public fun prepareMetrics ()V -} - -public abstract interface class com/datadog/trace/api/iast/telemetry/IastMetricCollector$HasMetricCollector { - public abstract fun getMetricCollector ()Lcom/datadog/trace/api/iast/telemetry/IastMetricCollector; -} - -public class com/datadog/trace/api/iast/telemetry/IastMetricCollector$IastMetricData : com/datadog/trace/api/telemetry/MetricCollector$Metric { - public fun (Lcom/datadog/trace/api/iast/telemetry/IastMetric;BJ)V - public static fun computeTag (Lcom/datadog/trace/api/iast/telemetry/IastMetric;B)Ljava/lang/String; - public fun getMetric ()Lcom/datadog/trace/api/iast/telemetry/IastMetric; - public fun getSpanTag ()Ljava/lang/String; - public fun getTagValue ()B -} - -public final class com/datadog/trace/api/iast/telemetry/Verbosity : java/lang/Enum { - public static final field DEBUG Lcom/datadog/trace/api/iast/telemetry/Verbosity; - public static final field INFORMATION Lcom/datadog/trace/api/iast/telemetry/Verbosity; - public static final field MANDATORY Lcom/datadog/trace/api/iast/telemetry/Verbosity; - public static final field OFF Lcom/datadog/trace/api/iast/telemetry/Verbosity; - public fun isDebugEnabled ()Z - public fun isEnabled (Lcom/datadog/trace/api/iast/telemetry/Verbosity;)Z - public fun isInformationEnabled ()Z - public fun isMandatoryEnabled ()Z - public static fun valueOf (Ljava/lang/String;)Lcom/datadog/trace/api/iast/telemetry/Verbosity; - public static fun values ()[Lcom/datadog/trace/api/iast/telemetry/Verbosity; -} - -public class com/datadog/trace/api/iast/util/Cookie { - public fun (Ljava/lang/String;ZZLjava/lang/String;)V - public fun getCookieName ()Ljava/lang/String; - public fun getSameSite ()Ljava/lang/String; - public fun isHttpOnly ()Z - public fun isSecure ()Z - public static fun named (Ljava/lang/String;)Lcom/datadog/trace/api/iast/util/Cookie$Builder; -} - -public class com/datadog/trace/api/iast/util/Cookie$Builder { - public fun (Ljava/lang/String;)V - public fun build ()Lcom/datadog/trace/api/iast/util/Cookie; - public fun httpOnly (Z)Lcom/datadog/trace/api/iast/util/Cookie$Builder; - public fun sameSite (Ljava/lang/String;)Lcom/datadog/trace/api/iast/util/Cookie$Builder; - public fun secure (Z)Lcom/datadog/trace/api/iast/util/Cookie$Builder; -} - -public final class com/datadog/trace/api/intake/TrackType : java/lang/Enum { - public static final field CITESTCOV Lcom/datadog/trace/api/intake/TrackType; - public static final field CITESTCYCLE Lcom/datadog/trace/api/intake/TrackType; - public static final field NOOP Lcom/datadog/trace/api/intake/TrackType; - public static fun valueOf (Ljava/lang/String;)Lcom/datadog/trace/api/intake/TrackType; - public static fun values ()[Lcom/datadog/trace/api/intake/TrackType; -} - -public abstract class com/datadog/trace/api/interceptor/AbstractTraceInterceptor : com/datadog/trace/api/interceptor/TraceInterceptor { - protected fun (Lcom/datadog/trace/api/interceptor/AbstractTraceInterceptor$Priority;)V - public fun priority ()I -} - -public final class com/datadog/trace/api/interceptor/AbstractTraceInterceptor$Priority : java/lang/Enum { - public static final field CI_VISIBILITY_APM Lcom/datadog/trace/api/interceptor/AbstractTraceInterceptor$Priority; - public static final field CI_VISIBILITY_TRACE Lcom/datadog/trace/api/interceptor/AbstractTraceInterceptor$Priority; - public static final field DD_INTAKE Lcom/datadog/trace/api/interceptor/AbstractTraceInterceptor$Priority; - public static final field GIT_METADATA Lcom/datadog/trace/api/interceptor/AbstractTraceInterceptor$Priority; - public static final field SERVICE_NAME_COLLECTING Lcom/datadog/trace/api/interceptor/AbstractTraceInterceptor$Priority; - public static fun valueOf (Ljava/lang/String;)Lcom/datadog/trace/api/interceptor/AbstractTraceInterceptor$Priority; - public static fun values ()[Lcom/datadog/trace/api/interceptor/AbstractTraceInterceptor$Priority; -} - public abstract interface class com/datadog/trace/api/interceptor/MutableSpan { public abstract fun getDurationNano ()J public abstract fun getLocalRootSpan ()Lcom/datadog/trace/api/interceptor/MutableSpan; @@ -4160,98 +3131,6 @@ public abstract interface class com/datadog/trace/api/scopemanager/ScopeListener public abstract fun afterScopeClosed ()V } -public class com/datadog/trace/api/telemetry/CoreMetricCollector : com/datadog/trace/api/telemetry/MetricCollector { - public fun drain ()Ljava/util/Collection; - public static fun getInstance ()Lcom/datadog/trace/api/telemetry/CoreMetricCollector; - public fun prepareMetrics ()V -} - -public class com/datadog/trace/api/telemetry/CoreMetricCollector$CoreMetric : com/datadog/trace/api/telemetry/MetricCollector$Metric { - public fun (Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;Ljava/lang/Number;Ljava/lang/String;)V -} - -public class com/datadog/trace/api/telemetry/IntegrationsCollector { - public fun drain ()Ljava/util/Map; - public static fun get ()Lcom/datadog/trace/api/telemetry/IntegrationsCollector; - public fun update (Ljava/lang/Iterable;Z)V -} - -public class com/datadog/trace/api/telemetry/LogCollector { - public fun addLogMessage (Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V - public fun drain ()Ljava/util/Collection; - public static fun get ()Lcom/datadog/trace/api/telemetry/LogCollector; -} - -public class com/datadog/trace/api/telemetry/LogCollector$RawLogMessage { - public field count I - public final field logLevel Ljava/lang/String; - public final field messageOriginal Ljava/lang/String; - public final field throwable Ljava/lang/Throwable; - public final field timestamp J - public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;J)V - public fun equals (Ljava/lang/Object;)Z - public fun hashCode ()I - public fun message ()Ljava/lang/String; -} - -public abstract interface class com/datadog/trace/api/telemetry/MetricCollector { - public static final field RAW_QUEUE_SIZE I - public abstract fun drain ()Ljava/util/Collection; - public abstract fun prepareMetrics ()V -} - -public class com/datadog/trace/api/telemetry/MetricCollector$Metric { - public final field common Z - public final field metricName Ljava/lang/String; - public final field namespace Ljava/lang/String; - public final field tags Ljava/util/List; - public final field timestamp J - public final field type Ljava/lang/String; - public final field value Ljava/lang/Number; - public fun (Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;Ljava/lang/Number;Ljava/lang/String;)V - public fun (Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;Ljava/lang/Number;Ljava/util/List;)V - public fun (Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;Ljava/lang/Number;[Ljava/lang/String;)V - public fun equals (Ljava/lang/Object;)Z - public fun hashCode ()I - public fun toString ()Ljava/lang/String; -} - -public class com/datadog/trace/api/telemetry/WafMetricCollector : com/datadog/trace/api/telemetry/MetricCollector { - public static final field INSTANCE Lcom/datadog/trace/api/telemetry/WafMetricCollector; - public fun ()V - public fun drain ()Ljava/util/Collection; - public static fun get ()Lcom/datadog/trace/api/telemetry/WafMetricCollector; - public fun prepareMetrics ()V - public fun wafInit (Ljava/lang/String;Ljava/lang/String;)V - public fun wafRequest ()V - public fun wafRequestBlocked ()V - public fun wafRequestTriggered ()V - public fun wafUpdates (Ljava/lang/String;)V -} - -public class com/datadog/trace/api/telemetry/WafMetricCollector$AtomicRequestCounter { - public fun ()V - public final fun get ()J - public final fun getAndReset ()J - public final fun increment ()V -} - -public class com/datadog/trace/api/telemetry/WafMetricCollector$WafInitRawMetric : com/datadog/trace/api/telemetry/WafMetricCollector$WafMetric { - public fun (JLjava/lang/String;Ljava/lang/String;)V -} - -public abstract class com/datadog/trace/api/telemetry/WafMetricCollector$WafMetric : com/datadog/trace/api/telemetry/MetricCollector$Metric { - public fun (Ljava/lang/String;J[Ljava/lang/String;)V -} - -public class com/datadog/trace/api/telemetry/WafMetricCollector$WafRequestsRawMetric : com/datadog/trace/api/telemetry/WafMetricCollector$WafMetric { - public fun (JLjava/lang/String;Ljava/lang/String;ZZ)V -} - -public class com/datadog/trace/api/telemetry/WafMetricCollector$WafUpdatesRawMetric : com/datadog/trace/api/telemetry/WafMetricCollector$WafMetric { - public fun (JLjava/lang/String;Ljava/lang/String;)V -} - public class com/datadog/trace/api/time/ControllableTimeSource : com/datadog/trace/api/time/TimeSource { public fun ()V public fun advance (J)V @@ -4277,18 +3156,6 @@ public abstract interface class com/datadog/trace/api/time/TimeSource { public abstract fun getNanoTicks ()J } -public class com/datadog/trace/appsec/api/blocking/Blocking { - public static fun forUser (Ljava/lang/String;)Lcom/datadog/trace/appsec/api/blocking/Blocking$UserBlockingSpec; - public static fun setBlockingService (Lcom/datadog/trace/appsec/api/blocking/BlockingService;)V - public static fun tryCommitBlockingResponse (ILcom/datadog/trace/appsec/api/blocking/BlockingContentType;)Z - public static fun tryCommitBlockingResponse (ILcom/datadog/trace/appsec/api/blocking/BlockingContentType;Ljava/util/Map;)Z -} - -public class com/datadog/trace/appsec/api/blocking/Blocking$UserBlockingSpec { - public fun blockIfMatch ()V - public fun shouldBlock ()Lcom/datadog/trace/appsec/api/blocking/BlockingDetails; -} - public final class com/datadog/trace/appsec/api/blocking/BlockingContentType : java/lang/Enum { public static final field AUTO Lcom/datadog/trace/appsec/api/blocking/BlockingContentType; public static final field HTML Lcom/datadog/trace/appsec/api/blocking/BlockingContentType; @@ -4298,47 +3165,11 @@ public final class com/datadog/trace/appsec/api/blocking/BlockingContentType : j public static fun values ()[Lcom/datadog/trace/appsec/api/blocking/BlockingContentType; } -public class com/datadog/trace/appsec/api/blocking/BlockingDetails { - public final field blockingContentType Lcom/datadog/trace/appsec/api/blocking/BlockingContentType; - public final field extraHeaders Ljava/util/Map; - public final field statusCode I - public fun (ILcom/datadog/trace/appsec/api/blocking/BlockingContentType;Ljava/util/Map;)V -} - -public class com/datadog/trace/appsec/api/blocking/BlockingException : java/lang/RuntimeException { - public fun ()V - public fun (Ljava/lang/String;)V - public fun (Ljava/lang/String;Ljava/lang/Throwable;)V - public fun (Ljava/lang/Throwable;)V -} - -public abstract interface class com/datadog/trace/appsec/api/blocking/BlockingService { - public static final field NOOP Lcom/datadog/trace/appsec/api/blocking/BlockingService; - public abstract fun shouldBlockUser (Ljava/lang/String;)Lcom/datadog/trace/appsec/api/blocking/BlockingDetails; - public abstract fun tryCommitBlockingResponse (ILcom/datadog/trace/appsec/api/blocking/BlockingContentType;Ljava/util/Map;)Z -} - -public class com/datadog/trace/appsec/api/blocking/BlockingService$BlockingServiceNoop : com/datadog/trace/appsec/api/blocking/BlockingService { - public fun shouldBlockUser (Ljava/lang/String;)Lcom/datadog/trace/appsec/api/blocking/BlockingDetails; - public fun tryCommitBlockingResponse (ILcom/datadog/trace/appsec/api/blocking/BlockingContentType;Ljava/util/Map;)Z -} - public class com/datadog/trace/bootstrap/ActiveSubsystems { public static field APPSEC_ACTIVE Z public fun ()V } -public class com/datadog/trace/bootstrap/config/provider/AgentArgsInjector { - public fun ()V - public static fun injectAgentArgsConfig (Ljava/lang/String;)V - public static fun injectAgentArgsConfig (Ljava/util/Map;)V -} - -public class com/datadog/trace/bootstrap/config/provider/AgentArgsParser { - public fun ()V - public static fun parseAgentArgs (Ljava/lang/String;)Ljava/util/Map; -} - public final class com/datadog/trace/bootstrap/config/provider/CapturedEnvironmentConfigSource : com/datadog/trace/bootstrap/config/provider/ConfigProvider$Source { public fun ()V public fun (Lcom/datadog/trace/api/env/CapturedEnvironment;)V @@ -5405,38 +4236,6 @@ public final class com/datadog/trace/bootstrap/instrumentation/api/WriterConstan public static final field TRACE_STRUCTURE_WRITER_TYPE Ljava/lang/String; } -public class com/datadog/trace/civisibility/interceptor/CiVisibilityApmProtocolInterceptor : com/datadog/trace/api/interceptor/AbstractTraceInterceptor { - public static final field INSTANCE Lcom/datadog/trace/civisibility/interceptor/CiVisibilityApmProtocolInterceptor; - protected fun (Lcom/datadog/trace/api/interceptor/AbstractTraceInterceptor$Priority;)V - public fun onTraceComplete (Ljava/util/Collection;)Ljava/util/Collection; -} - -public class com/datadog/trace/civisibility/interceptor/CiVisibilityTraceInterceptor : com/datadog/trace/api/interceptor/AbstractTraceInterceptor { - public static final field INSTANCE Lcom/datadog/trace/civisibility/interceptor/CiVisibilityTraceInterceptor; - protected fun (Lcom/datadog/trace/api/interceptor/AbstractTraceInterceptor$Priority;)V - public fun onTraceComplete (Ljava/util/Collection;)Ljava/util/Collection; -} - -public final class com/datadog/trace/common/metrics/AggregateMetric { - public fun ()V - public fun clear ()V - public fun getDuration ()J - public fun getErrorCount ()I - public fun getErrorLatencies ()Lcom/datadog/trace/core/histogram/Histogram; - public fun getHitCount ()I - public fun getOkLatencies ()Lcom/datadog/trace/core/histogram/Histogram; - public fun getTopLevelCount ()I - public fun recordDurations (ILjava/util/concurrent/atomic/AtomicLongArray;)Lcom/datadog/trace/common/metrics/AggregateMetric; -} - -public final class com/datadog/trace/common/metrics/Batch : com/datadog/trace/common/metrics/InboxItem { - public fun add (JJ)Z - public fun contributeTo (Lcom/datadog/trace/common/metrics/AggregateMetric;)V - public fun getKey ()Lcom/datadog/trace/common/metrics/MetricKey; - public fun isUsed ()Z - public fun reset (Lcom/datadog/trace/common/metrics/MetricKey;)Lcom/datadog/trace/common/metrics/Batch; -} - public abstract interface class com/datadog/trace/common/metrics/EventListener { public abstract fun onEvent (Lcom/datadog/trace/common/metrics/EventListener$EventType;Ljava/lang/String;)V } @@ -5462,13 +4261,6 @@ public final class com/datadog/trace/common/metrics/MetricKey { public fun isSynthetics ()Z } -public abstract interface class com/datadog/trace/common/metrics/MetricWriter { - public abstract fun add (Lcom/datadog/trace/common/metrics/MetricKey;Lcom/datadog/trace/common/metrics/AggregateMetric;)V - public abstract fun finishBucket ()V - public abstract fun reset ()V - public abstract fun startBucket (IJJ)V -} - public abstract interface class com/datadog/trace/common/metrics/MetricsAggregator : java/lang/AutoCloseable { public abstract fun close ()V public abstract fun forceReport ()Ljava/util/concurrent/Future; @@ -5954,7 +4746,6 @@ public class com/datadog/trace/core/CoreTracer : com/datadog/trace/bootstrap/ins public fun addScopeListener (Lcom/datadog/trace/api/scopemanager/ScopeListener;)V public fun addScopeListener (Ljava/lang/Runnable;Ljava/lang/Runnable;)V public fun addTraceInterceptor (Lcom/datadog/trace/api/interceptor/TraceInterceptor;)Z - public fun addTracerReportToFlare (Ljava/util/zip/ZipOutputStream;)V public synthetic fun buildSpan (Ljava/lang/String;Ljava/lang/CharSequence;)Lcom/datadog/trace/bootstrap/instrumentation/api/AgentTracer$SpanBuilder; public fun buildSpan (Ljava/lang/String;Ljava/lang/CharSequence;)Lcom/datadog/trace/core/CoreTracer$CoreSpanBuilder; public fun captureSpan (Lcom/datadog/trace/bootstrap/instrumentation/api/AgentSpan;)Lcom/datadog/trace/bootstrap/instrumentation/api/AgentScope$Continuation; @@ -6419,10 +5210,6 @@ public abstract interface class com/datadog/trace/core/datastreams/DataStreamsMo public abstract fun start ()V } -public abstract interface class com/datadog/trace/core/datastreams/DatastreamsPayloadWriter { - public abstract fun writePayload (Ljava/util/Collection;)V -} - public class com/datadog/trace/core/datastreams/DefaultPathwayContext : com/datadog/trace/bootstrap/instrumentation/api/PathwayContext { public fun (Lcom/datadog/trace/api/time/TimeSource;Lcom/datadog/trace/api/WellKnownTags;)V public fun encode ()[B @@ -6459,28 +5246,6 @@ public class com/datadog/trace/core/datastreams/SchemaSampler { public fun shouldSample (J)I } -public class com/datadog/trace/core/datastreams/StatsBucket { - public fun (JJ)V - public fun addBacklog (Lcom/datadog/trace/bootstrap/instrumentation/api/Backlog;)V - public fun addPoint (Lcom/datadog/trace/bootstrap/instrumentation/api/StatsPoint;)V - public fun getBacklogs ()Ljava/util/Collection; - public fun getBucketDurationNanos ()J - public fun getGroups ()Ljava/util/Collection; - public fun getStartTimeNanos ()J -} - -public class com/datadog/trace/core/datastreams/StatsGroup { - public fun (Ljava/util/List;JJ)V - public fun add (JJJ)V - public fun getEdgeLatency ()Lcom/datadog/trace/core/histogram/Histogram; - public fun getEdgeTags ()Ljava/util/List; - public fun getHash ()J - public fun getParentHash ()J - public fun getPathwayLatency ()Lcom/datadog/trace/core/histogram/Histogram; - public fun getPayloadSize ()Lcom/datadog/trace/core/histogram/Histogram; - public fun toString ()Ljava/lang/String; -} - public class com/datadog/trace/core/datastreams/TagsProcessor { public static final field CONSUMER_GROUP_TAG Ljava/lang/String; public static final field DIRECTION_IN Ljava/lang/String; @@ -6556,14 +5321,6 @@ public abstract class com/datadog/trace/core/monitor/HealthMetrics : java/lang/A public fun summary ()Ljava/lang/String; } -public final class com/datadog/trace/core/monitor/MonitoringImpl : com/datadog/trace/monitor/Monitoring { - public fun (Lcom/datadog/trace/api/StatsDClient;JLjava/util/concurrent/TimeUnit;)V - public fun newCounter (Ljava/lang/String;)Lcom/datadog/trace/monitor/Counter; - public fun newThreadLocalTimer (Ljava/lang/String;)Lcom/datadog/trace/monitor/Recording; - public fun newTimer (Ljava/lang/String;)Lcom/datadog/trace/monitor/Recording; - public fun newTimer (Ljava/lang/String;[Ljava/lang/String;)Lcom/datadog/trace/monitor/Recording; -} - public final class com/datadog/trace/core/monitor/StatsDCounter : com/datadog/trace/monitor/Counter { public fun increment (I)V public fun incrementErrorCount (Ljava/lang/String;I)V @@ -6577,13 +5334,6 @@ public class com/datadog/trace/core/monitor/ThreadLocalRecording : com/datadog/t public fun stop ()V } -public class com/datadog/trace/core/monitor/Timer : com/datadog/trace/monitor/Recording { - public fun flush ()V - public fun reset ()V - public fun start ()Lcom/datadog/trace/monitor/Recording; - public fun stop ()V -} - public class com/datadog/trace/core/monitor/Utils { public fun ()V } @@ -6899,14 +5649,6 @@ public class com/datadog/trace/ddagent/DroppingPolicy$DisabledDroppingPolicy : c public fun active ()Z } -public final class com/datadog/trace/lambda/ReadFromInputStreamJsonAdapter : com/squareup/moshi/JsonAdapter { - public fun ()V - public fun fromJson (Lcom/squareup/moshi/JsonReader;)Ljava/io/ByteArrayInputStream; - public synthetic fun fromJson (Lcom/squareup/moshi/JsonReader;)Ljava/lang/Object; - public fun toJson (Lcom/squareup/moshi/JsonWriter;Ljava/io/ByteArrayInputStream;)V - public synthetic fun toJson (Lcom/squareup/moshi/JsonWriter;Ljava/lang/Object;)V -} - public class com/datadog/trace/logger/DatadogCoreTracerLogger : com/datadog/trace/logger/Logger { public fun (Ljava/lang/String;Lcom/datadog/android/api/InternalLogger;)V public fun debug (Ljava/lang/String;)V @@ -7001,32 +5743,6 @@ public class com/datadog/trace/logger/NoOpLogger : com/datadog/trace/logger/Logg public fun warn (Ljava/lang/String;[Ljava/lang/Object;)V } -public class com/datadog/trace/logging/GlobalLogLevelSwitcher : com/datadog/trace/logging/LogLevelSwitcher { - public static fun get ()Lcom/datadog/trace/logging/LogLevelSwitcher; - public fun reinitialize ()V - public fun restore ()V - public fun switchLevel (Lcom/datadog/trace/logging/LogLevel;)V -} - -public final class com/datadog/trace/logging/LogLevel : java/lang/Enum { - public static final field DEBUG Lcom/datadog/trace/logging/LogLevel; - public static final field ERROR Lcom/datadog/trace/logging/LogLevel; - public static final field INFO Lcom/datadog/trace/logging/LogLevel; - public static final field OFF Lcom/datadog/trace/logging/LogLevel; - public static final field TRACE Lcom/datadog/trace/logging/LogLevel; - public static final field WARN Lcom/datadog/trace/logging/LogLevel; - public static fun fromString (Ljava/lang/String;)Lcom/datadog/trace/logging/LogLevel; - public fun isEnabled (Lcom/datadog/trace/logging/LogLevel;)Z - public static fun valueOf (Ljava/lang/String;)Lcom/datadog/trace/logging/LogLevel; - public static fun values ()[Lcom/datadog/trace/logging/LogLevel; -} - -public abstract interface class com/datadog/trace/logging/LogLevelSwitcher { - public abstract fun reinitialize ()V - public abstract fun restore ()V - public abstract fun switchLevel (Lcom/datadog/trace/logging/LogLevel;)V -} - public final class com/datadog/trace/logging/LoggingSettingsDescription { public static fun getDescription ()Ljava/util/Map; public static fun setDescription (Ljava/util/Map;)V diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/advice/ActiveRequestContext.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/advice/ActiveRequestContext.java deleted file mode 100644 index 98b7f031a9..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/advice/ActiveRequestContext.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.datadog.trace.advice; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.PARAMETER) -public @interface ActiveRequestContext {} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/advice/RequiresRequestContext.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/advice/RequiresRequestContext.java deleted file mode 100644 index 52cf3a3748..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/advice/RequiresRequestContext.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.datadog.trace.advice; - -import com.datadog.trace.api.gateway.RequestContext; -import com.datadog.trace.api.gateway.RequestContextSlot; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * Transforms the enter and exit advice so that the existence of an active {@link RequestContext} is - * checked before the body of the advice is run. - */ -@Retention(RetentionPolicy.CLASS) -@Target(ElementType.TYPE) -public @interface RequiresRequestContext { - RequestContextSlot value(); -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/Config.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/Config.java index 79e282df91..7a0f6f34c0 100644 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/Config.java +++ b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/Config.java @@ -12,88 +12,9 @@ import static com.datadog.trace.api.DDTags.SCHEMA_VERSION_TAG_KEY; import static com.datadog.trace.api.DDTags.SERVICE; import static com.datadog.trace.api.DDTags.SERVICE_TAG; -import static com.datadog.trace.api.UserEventTrackingMode.SAFE; -import static com.datadog.trace.api.config.AppSecConfig.API_SECURITY_ENABLED; -import static com.datadog.trace.api.config.AppSecConfig.API_SECURITY_REQUEST_SAMPLE_RATE; -import static com.datadog.trace.api.config.AppSecConfig.APPSEC_AUTOMATED_USER_EVENTS_TRACKING; -import static com.datadog.trace.api.config.AppSecConfig.APPSEC_HTTP_BLOCKED_TEMPLATE_HTML; -import static com.datadog.trace.api.config.AppSecConfig.APPSEC_HTTP_BLOCKED_TEMPLATE_JSON; -import static com.datadog.trace.api.config.AppSecConfig.APPSEC_IP_ADDR_HEADER; -import static com.datadog.trace.api.config.AppSecConfig.APPSEC_OBFUSCATION_PARAMETER_KEY_REGEXP; -import static com.datadog.trace.api.config.AppSecConfig.APPSEC_OBFUSCATION_PARAMETER_VALUE_REGEXP; -import static com.datadog.trace.api.config.AppSecConfig.APPSEC_REPORTING_INBAND; -import static com.datadog.trace.api.config.AppSecConfig.APPSEC_REPORT_TIMEOUT_SEC; -import static com.datadog.trace.api.config.AppSecConfig.APPSEC_RULES_FILE; -import static com.datadog.trace.api.config.AppSecConfig.APPSEC_TRACE_RATE_LIMIT; -import static com.datadog.trace.api.config.AppSecConfig.APPSEC_WAF_METRICS; -import static com.datadog.trace.api.config.AppSecConfig.APPSEC_WAF_TIMEOUT; -import static com.datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_ADDITIONAL_CHILD_PROCESS_JVM_ARGS; -import static com.datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_AGENTLESS_ENABLED; -import static com.datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_AGENTLESS_URL; -import static com.datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_AGENT_JAR_URI; -import static com.datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_AUTO_CONFIGURATION_ENABLED; -import static com.datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_BACKEND_API_TIMEOUT_MILLIS; -import static com.datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_BUILD_INSTRUMENTATION_ENABLED; -import static com.datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_CIPROVIDER_INTEGRATION_ENABLED; -import static com.datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_CODE_COVERAGE_ENABLED; -import static com.datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_CODE_COVERAGE_EXCLUDES; -import static com.datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_CODE_COVERAGE_INCLUDES; -import static com.datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_CODE_COVERAGE_PERCENTAGE_CALCULATION_ENABLED; -import static com.datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_CODE_COVERAGE_REPORT_DUMP_DIR; -import static com.datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_CODE_COVERAGE_ROOT_PACKAGES_LIMIT; -import static com.datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_CODE_COVERAGE_SEGMENTS_ENABLED; -import static com.datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_COMPILER_PLUGIN_AUTO_CONFIGURATION_ENABLED; -import static com.datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_COMPILER_PLUGIN_VERSION; -import static com.datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_DEBUG_PORT; -import static com.datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_FLAKY_RETRY_COUNT; -import static com.datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_FLAKY_RETRY_ENABLED; -import static com.datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_GIT_COMMAND_TIMEOUT_MILLIS; -import static com.datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_GIT_REMOTE_NAME; -import static com.datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_GIT_UNSHALLOW_DEFER; -import static com.datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_GIT_UNSHALLOW_ENABLED; -import static com.datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_GIT_UPLOAD_ENABLED; -import static com.datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_GIT_UPLOAD_TIMEOUT_MILLIS; -import static com.datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_INJECTED_TRACER_VERSION; -import static com.datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_ITR_ENABLED; -import static com.datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_JACOCO_GRADLE_SOURCE_SETS; -import static com.datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_JACOCO_PLUGIN_VERSION; -import static com.datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_JVM_INFO_CACHE_SIZE; -import static com.datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_MODULE_EXECUTION_SETTINGS_CACHE_SIZE; -import static com.datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_MODULE_ID; -import static com.datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_MODULE_NAME; -import static com.datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_REPO_INDEX_SHARING_ENABLED; -import static com.datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_RESOURCE_FOLDER_NAMES; -import static com.datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_SESSION_ID; -import static com.datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_SIGNAL_SERVER_HOST; -import static com.datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_SIGNAL_SERVER_PORT; -import static com.datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_SOURCE_DATA_ENABLED; -import static com.datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_SOURCE_DATA_ROOT_CHECK_ENABLED; -import static com.datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_TRACE_SANITATION_ENABLED; import static com.datadog.trace.api.config.CrashTrackingConfig.CRASH_TRACKING_AGENTLESS; import static com.datadog.trace.api.config.CrashTrackingConfig.CRASH_TRACKING_AGENTLESS_DEFAULT; import static com.datadog.trace.api.config.CrashTrackingConfig.CRASH_TRACKING_TAGS; -import static com.datadog.trace.api.config.CwsConfig.CWS_ENABLED; -import static com.datadog.trace.api.config.CwsConfig.CWS_TLS_REFRESH; -import static com.datadog.trace.api.config.DebuggerConfig.DEBUGGER_CAPTURE_TIMEOUT; -import static com.datadog.trace.api.config.DebuggerConfig.DEBUGGER_CLASSFILE_DUMP_ENABLED; -import static com.datadog.trace.api.config.DebuggerConfig.DEBUGGER_DIAGNOSTICS_INTERVAL; -import static com.datadog.trace.api.config.DebuggerConfig.DEBUGGER_ENABLED; -import static com.datadog.trace.api.config.DebuggerConfig.DEBUGGER_EXCLUDE_FILES; -import static com.datadog.trace.api.config.DebuggerConfig.DEBUGGER_INSTRUMENT_THE_WORLD; -import static com.datadog.trace.api.config.DebuggerConfig.DEBUGGER_MAX_PAYLOAD_SIZE; -import static com.datadog.trace.api.config.DebuggerConfig.DEBUGGER_METRICS_ENABLED; -import static com.datadog.trace.api.config.DebuggerConfig.DEBUGGER_POLL_INTERVAL; -import static com.datadog.trace.api.config.DebuggerConfig.DEBUGGER_PROBE_FILE_LOCATION; -import static com.datadog.trace.api.config.DebuggerConfig.DEBUGGER_REDACTED_IDENTIFIERS; -import static com.datadog.trace.api.config.DebuggerConfig.DEBUGGER_REDACTED_TYPES; -import static com.datadog.trace.api.config.DebuggerConfig.DEBUGGER_SYMBOL_ENABLED; -import static com.datadog.trace.api.config.DebuggerConfig.DEBUGGER_SYMBOL_FLUSH_THRESHOLD; -import static com.datadog.trace.api.config.DebuggerConfig.DEBUGGER_SYMBOL_FORCE_UPLOAD; -import static com.datadog.trace.api.config.DebuggerConfig.DEBUGGER_SYMBOL_INCLUDES; -import static com.datadog.trace.api.config.DebuggerConfig.DEBUGGER_UPLOAD_BATCH_SIZE; -import static com.datadog.trace.api.config.DebuggerConfig.DEBUGGER_UPLOAD_FLUSH_INTERVAL; -import static com.datadog.trace.api.config.DebuggerConfig.DEBUGGER_UPLOAD_TIMEOUT; -import static com.datadog.trace.api.config.DebuggerConfig.DEBUGGER_VERIFY_BYTECODE; import static com.datadog.trace.api.config.GeneralConfig.API_KEY; import static com.datadog.trace.api.config.GeneralConfig.API_KEY_FILE; import static com.datadog.trace.api.config.GeneralConfig.APPLICATION_KEY; @@ -136,29 +57,6 @@ import static com.datadog.trace.api.config.GeneralConfig.TRACE_DEBUG; import static com.datadog.trace.api.config.GeneralConfig.TRACE_TRIAGE; import static com.datadog.trace.api.config.GeneralConfig.VERSION; -import static com.datadog.trace.api.config.IastConfig.IAST_DEBUG_ENABLED; -import static com.datadog.trace.api.config.IastConfig.IAST_DETECTION_MODE; -import static com.datadog.trace.api.config.IastConfig.IAST_REDACTION_ENABLED; -import static com.datadog.trace.api.config.IastConfig.IAST_REDACTION_NAME_PATTERN; -import static com.datadog.trace.api.config.IastConfig.IAST_REDACTION_VALUE_PATTERN; -import static com.datadog.trace.api.config.IastConfig.IAST_STACKTRACE_LEAK_SUPPRESS; -import static com.datadog.trace.api.config.IastConfig.IAST_TELEMETRY_VERBOSITY; -import static com.datadog.trace.api.config.IastConfig.IAST_TRUNCATION_MAX_VALUE_LENGTH; -import static com.datadog.trace.api.config.IastConfig.IAST_WEAK_CIPHER_ALGORITHMS; -import static com.datadog.trace.api.config.IastConfig.IAST_WEAK_HASH_ALGORITHMS; -import static com.datadog.trace.api.config.JmxFetchConfig.JMX_FETCH_CHECK_PERIOD; -import static com.datadog.trace.api.config.JmxFetchConfig.JMX_FETCH_CONFIG; -import static com.datadog.trace.api.config.JmxFetchConfig.JMX_FETCH_CONFIG_DIR; -import static com.datadog.trace.api.config.JmxFetchConfig.JMX_FETCH_ENABLED; -import static com.datadog.trace.api.config.JmxFetchConfig.JMX_FETCH_INITIAL_REFRESH_BEANS_PERIOD; -import static com.datadog.trace.api.config.JmxFetchConfig.JMX_FETCH_METRICS_CONFIGS; -import static com.datadog.trace.api.config.JmxFetchConfig.JMX_FETCH_MULTIPLE_RUNTIME_SERVICES_ENABLED; -import static com.datadog.trace.api.config.JmxFetchConfig.JMX_FETCH_MULTIPLE_RUNTIME_SERVICES_LIMIT; -import static com.datadog.trace.api.config.JmxFetchConfig.JMX_FETCH_REFRESH_BEANS_PERIOD; -import static com.datadog.trace.api.config.JmxFetchConfig.JMX_FETCH_START_DELAY; -import static com.datadog.trace.api.config.JmxFetchConfig.JMX_FETCH_STATSD_HOST; -import static com.datadog.trace.api.config.JmxFetchConfig.JMX_FETCH_STATSD_PORT; -import static com.datadog.trace.api.config.JmxFetchConfig.JMX_TAGS; import static com.datadog.trace.api.config.ProfilingConfig.PROFILING_AGENTLESS; import static com.datadog.trace.api.config.ProfilingConfig.PROFILING_AGENTLESS_DEFAULT; import static com.datadog.trace.api.config.ProfilingConfig.PROFILING_API_KEY_FILE_OLD; @@ -313,7 +211,6 @@ import static com.datadog.trace.api.config.TracerConfig.TRACE_X_DATADOG_TAGS_MAX_LENGTH; import static com.datadog.trace.api.config.TracerConfig.WRITER_BAGGAGE_INJECT; import static com.datadog.trace.api.config.TracerConfig.WRITER_TYPE; -import static com.datadog.trace.api.iast.IastDetectionMode.DEFAULT; import static com.datadog.trace.util.CollectionUtils.tryMakeImmutableList; import static com.datadog.trace.util.CollectionUtils.tryMakeImmutableSet; import static com.datadog.trace.util.Strings.propertyNameToEnvironmentVariableName; @@ -325,8 +222,6 @@ import com.datadog.trace.api.config.GeneralConfig; import com.datadog.trace.api.config.ProfilingConfig; import com.datadog.trace.api.config.TracerConfig; -import com.datadog.trace.api.iast.IastDetectionMode; -import com.datadog.trace.api.iast.telemetry.Verbosity; import com.datadog.trace.api.naming.SpanNaming; import com.datadog.trace.bootstrap.config.provider.CapturedEnvironmentConfigSource; import com.datadog.trace.bootstrap.config.provider.ConfigProvider; @@ -457,7 +352,6 @@ static class HostNameHolder { private final Map serviceMapping; private final Map tags; private final Map spanTags; - private final Map jmxTags; private final Map requestHeaderTags; private final Map responseHeaderTags; private final Map baggageMapping; @@ -503,18 +397,6 @@ static class HostNameHolder { private final Integer statsDClientSocketTimeout; private final boolean runtimeMetricsEnabled; - private final boolean jmxFetchEnabled; - private final String jmxFetchConfigDir; - private final List jmxFetchConfigs; - @Deprecated - private final List jmxFetchMetricsConfigs; - private final Integer jmxFetchCheckPeriod; - private final Integer jmxFetchInitialRefreshBeansPeriod; - private final Integer jmxFetchRefreshBeansPeriod; - private final String jmxFetchStatsdHost; - private final Integer jmxFetchStatsdPort; - private final boolean jmxFetchMultipleRuntimeServicesEnabled; - private final int jmxFetchMultipleRuntimeServicesLimit; // These values are default-ed to those of jmx fetch values as needed private final boolean healthMetricsEnabled; @@ -572,81 +454,6 @@ static class HostNameHolder { private final boolean clientIpEnabled; - private final boolean appSecReportingInband; - private final String appSecRulesFile; - private final int appSecReportMinTimeout; - private final int appSecReportMaxTimeout; - private final int appSecTraceRateLimit; - private final boolean appSecWafMetrics; - private final int appSecWafTimeout; - private final String appSecObfuscationParameterKeyRegexp; - private final String appSecObfuscationParameterValueRegexp; - private final String appSecHttpBlockedTemplateHtml; - private final String appSecHttpBlockedTemplateJson; - private final UserEventTrackingMode appSecUserEventsTracking; - private final boolean apiSecurityEnabled; - private final float apiSecurityRequestSampleRate; - - private final IastDetectionMode iastDetectionMode; - private final int iastMaxConcurrentRequests; - private final int iastVulnerabilitiesPerRequest; - private final float iastRequestSampling; - private final boolean iastDebugEnabled; - private final Verbosity iastTelemetryVerbosity; - private final boolean iastRedactionEnabled; - private final String iastRedactionNamePattern; - private final String iastRedactionValuePattern; - private final int iastMaxRangeCount; - private final int iastTruncationMaxValueLength; - private final boolean iastStacktraceLeakSuppress; - - private final boolean ciVisibilityTraceSanitationEnabled; - private final boolean ciVisibilityAgentlessEnabled; - private final String ciVisibilityAgentlessUrl; - - private final boolean ciVisibilitySourceDataEnabled; - private final boolean ciVisibilitySourceDataRootCheckEnabled; - private final boolean ciVisibilityBuildInstrumentationEnabled; - private final Long ciVisibilitySessionId; - private final Long ciVisibilityModuleId; - private final String ciVisibilityAgentJarUri; - private final boolean ciVisibilityAutoConfigurationEnabled; - private final String ciVisibilityAdditionalChildProcessJvmArgs; - private final boolean ciVisibilityCompilerPluginAutoConfigurationEnabled; - private final boolean ciVisibilityCodeCoverageEnabled; - private final boolean ciVisibilityCodeCoveragePercentageCalculationEnabled; - private final String ciVisibilityCodeCoverageReportDumpDir; - private final String ciVisibilityCompilerPluginVersion; - private final String ciVisibilityJacocoPluginVersion; - private final boolean ciVisibilityJacocoPluginVersionProvided; - private final List ciVisibilityCodeCoverageIncludes; - private final List ciVisibilityCodeCoverageExcludes; - private final String[] ciVisibilityCodeCoverageIncludedPackages; - private final String[] ciVisibilityCodeCoverageExcludedPackages; - private final List ciVisibilityJacocoGradleSourceSets; - private final Integer ciVisibilityDebugPort; - private final boolean ciVisibilityGitUploadEnabled; - private final boolean ciVisibilityGitUnshallowEnabled; - private final boolean ciVisibilityGitUnshallowDefer; - private final long ciVisibilityGitCommandTimeoutMillis; - private final String ciVisibilityGitRemoteName; - private final long ciVisibilityBackendApiTimeoutMillis; - private final long ciVisibilityGitUploadTimeoutMillis; - private final String ciVisibilitySignalServerHost; - private final int ciVisibilitySignalServerPort; - private final boolean ciVisibilityItrEnabled; - private final boolean ciVisibilityCiProviderIntegrationEnabled; - private final boolean ciVisibilityRepoIndexSharingEnabled; - private final int ciVisibilityModuleExecutionSettingsCacheSize; - private final int ciVisibilityJvmInfoCacheSize; - private final boolean ciVisibilityCoverageSegmentsEnabled; - private final int ciVisibilityCoverageRootPackagesLimit; - private final String ciVisibilityInjectedTracerVersion; - private final List ciVisibilityResourceFolderNames; - private final boolean ciVisibilityFlakyRetryEnabled; - private final int ciVisibilityFlakyRetryCount; - private final String ciVisibilityModuleName; - private final boolean remoteConfigEnabled; private final boolean remoteConfigIntegrityCheckEnabled; private final String remoteConfigUrl; @@ -657,27 +464,6 @@ static class HostNameHolder { private final String DBMPropagationMode; - private final boolean debuggerEnabled; - private final int debuggerUploadTimeout; - private final int debuggerUploadFlushInterval; - private final boolean debuggerClassFileDumpEnabled; - private final int debuggerPollInterval; - private final int debuggerDiagnosticsInterval; - private final boolean debuggerMetricEnabled; - private final String debuggerProbeFileLocation; - private final int debuggerUploadBatchSize; - private final long debuggerMaxPayloadSize; - private final boolean debuggerVerifyByteCode; - private final boolean debuggerInstrumentTheWorld; - private final String debuggerExcludeFiles; - private final int debuggerCaptureTimeout; - private final String debuggerRedactedIdentifiers; - private final String debuggerRedactedTypes; - private final boolean debuggerSymbolEnabled; - private final boolean debuggerSymbolForceUpload; - private final String debuggerSymbolIncludes; - private final int debuggerSymbolFlushThreshold; - private final boolean awsPropagationEnabled; private final boolean sqsPropagationEnabled; @@ -734,18 +520,9 @@ static class HostNameHolder { private final BitSet grpcServerErrorStatuses; private final BitSet grpcClientErrorStatuses; - private final boolean cwsEnabled; - private final int cwsTlsRefresh; - private final boolean dataStreamsEnabled; private final float dataStreamsBucketDurationSeconds; - private final Set iastWeakHashAlgorithms; - - private final Pattern iastWeakCipherAlgorithms; - - private final boolean iastDeduplicationEnabled; - private final float telemetryHeartbeatInterval; private final long telemetryExtendedHeartbeatInterval; private final float telemetryMetricsInterval; @@ -982,7 +759,6 @@ private Config(final ConfigProvider configProvider, final InstrumenterConfig ins } spanTags = configProvider.getMergedMap(SPAN_TAGS); - jmxTags = configProvider.getMergedMap(JMX_TAGS); primaryTag = configProvider.getString(PRIMARY_TAG); @@ -1207,7 +983,7 @@ private Config(final ConfigProvider configProvider, final InstrumenterConfig ins dogStatsDStartDelay = configProvider.getInteger( - DOGSTATSD_START_DELAY, DEFAULT_DOGSTATSD_START_DELAY, JMX_FETCH_START_DELAY); + DOGSTATSD_START_DELAY, DEFAULT_DOGSTATSD_START_DELAY); statsDClientQueueSize = configProvider.getInteger(STATSD_CLIENT_QUEUE_SIZE); statsDClientSocketBuffer = configProvider.getInteger(STATSD_CLIENT_SOCKET_BUFFER); @@ -1215,35 +991,6 @@ private Config(final ConfigProvider configProvider, final InstrumenterConfig ins runtimeMetricsEnabled = configProvider.getBoolean(RUNTIME_METRICS_ENABLED, true); - jmxFetchEnabled = - runtimeMetricsEnabled - && configProvider.getBoolean(JMX_FETCH_ENABLED, DEFAULT_JMX_FETCH_ENABLED); - jmxFetchConfigDir = configProvider.getString(JMX_FETCH_CONFIG_DIR); - jmxFetchConfigs = tryMakeImmutableList(configProvider.getList(JMX_FETCH_CONFIG)); - jmxFetchMetricsConfigs = - tryMakeImmutableList(configProvider.getList(JMX_FETCH_METRICS_CONFIGS)); - jmxFetchCheckPeriod = configProvider.getInteger(JMX_FETCH_CHECK_PERIOD); - jmxFetchInitialRefreshBeansPeriod = - configProvider.getInteger(JMX_FETCH_INITIAL_REFRESH_BEANS_PERIOD); - jmxFetchRefreshBeansPeriod = configProvider.getInteger(JMX_FETCH_REFRESH_BEANS_PERIOD); - - jmxFetchStatsdPort = configProvider.getInteger(JMX_FETCH_STATSD_PORT, DOGSTATSD_PORT); - jmxFetchStatsdHost = - configProvider.getString( - JMX_FETCH_STATSD_HOST, - // default to agent host if an explicit port has been set - null != jmxFetchStatsdPort && jmxFetchStatsdPort > 0 ? agentHost : null, - DOGSTATSD_HOST); - - jmxFetchMultipleRuntimeServicesEnabled = - configProvider.getBoolean( - JMX_FETCH_MULTIPLE_RUNTIME_SERVICES_ENABLED, - DEFAULT_JMX_FETCH_MULTIPLE_RUNTIME_SERVICES_ENABLED); - jmxFetchMultipleRuntimeServicesLimit = - configProvider.getInteger( - JMX_FETCH_MULTIPLE_RUNTIME_SERVICES_LIMIT, - DEFAULT_JMX_FETCH_MULTIPLE_RUNTIME_SERVICES_LIMIT); - // Writer.Builder createMonitor will use the values of the JMX fetch & agent to fill-in defaults healthMetricsEnabled = runtimeMetricsEnabled @@ -1270,9 +1017,6 @@ private Config(final ConfigProvider configProvider, final InstrumenterConfig ins configProvider.getBoolean(TRACE_ANALYTICS_ENABLED, DEFAULT_TRACE_ANALYTICS_ENABLED); String traceClientIpHeader = configProvider.getString(TRACE_CLIENT_IP_HEADER); - if (traceClientIpHeader == null) { - traceClientIpHeader = configProvider.getString(APPSEC_IP_ADDR_HEADER); - } if (traceClientIpHeader != null) { traceClientIpHeader = traceClientIpHeader.toLowerCase(Locale.ROOT); } @@ -1434,205 +1178,6 @@ private Config(final ConfigProvider configProvider, final InstrumenterConfig ins clientIpEnabled = configProvider.getBoolean(CLIENT_IP_ENABLED, DEFAULT_CLIENT_IP_ENABLED); - appSecReportingInband = - configProvider.getBoolean(APPSEC_REPORTING_INBAND, DEFAULT_APPSEC_REPORTING_INBAND); - appSecRulesFile = configProvider.getString(APPSEC_RULES_FILE, null); - - // Default AppSec report timeout min=5, max=60 - appSecReportMaxTimeout = configProvider.getInteger(APPSEC_REPORT_TIMEOUT_SEC, 60); - appSecReportMinTimeout = Math.min(appSecReportMaxTimeout, 5); - - appSecTraceRateLimit = - configProvider.getInteger(APPSEC_TRACE_RATE_LIMIT, DEFAULT_APPSEC_TRACE_RATE_LIMIT); - - appSecWafMetrics = configProvider.getBoolean(APPSEC_WAF_METRICS, DEFAULT_APPSEC_WAF_METRICS); - - appSecWafTimeout = configProvider.getInteger(APPSEC_WAF_TIMEOUT, DEFAULT_APPSEC_WAF_TIMEOUT); - - appSecObfuscationParameterKeyRegexp = - configProvider.getString(APPSEC_OBFUSCATION_PARAMETER_KEY_REGEXP, null); - appSecObfuscationParameterValueRegexp = - configProvider.getString(APPSEC_OBFUSCATION_PARAMETER_VALUE_REGEXP, null); - - appSecHttpBlockedTemplateHtml = - configProvider.getString(APPSEC_HTTP_BLOCKED_TEMPLATE_HTML, null); - appSecHttpBlockedTemplateJson = - configProvider.getString(APPSEC_HTTP_BLOCKED_TEMPLATE_JSON, null); - appSecUserEventsTracking = - UserEventTrackingMode.fromString( - configProvider.getStringNotEmpty( - APPSEC_AUTOMATED_USER_EVENTS_TRACKING, SAFE.toString())); - apiSecurityEnabled = - configProvider.getBoolean(API_SECURITY_ENABLED, DEFAULT_API_SECURITY_ENABLED); - apiSecurityRequestSampleRate = - configProvider.getFloat( - API_SECURITY_REQUEST_SAMPLE_RATE, DEFAULT_API_SECURITY_REQUEST_SAMPLE_RATE); - - iastDebugEnabled = configProvider.getBoolean(IAST_DEBUG_ENABLED, DEFAULT_IAST_DEBUG_ENABLED); - - iastDetectionMode = - configProvider.getEnum(IAST_DETECTION_MODE, IastDetectionMode.class, DEFAULT); - iastMaxConcurrentRequests = iastDetectionMode.getIastMaxConcurrentRequests(configProvider); - iastVulnerabilitiesPerRequest = - iastDetectionMode.getIastVulnerabilitiesPerRequest(configProvider); - iastRequestSampling = iastDetectionMode.getIastRequestSampling(configProvider); - iastDeduplicationEnabled = iastDetectionMode.isIastDeduplicationEnabled(configProvider); - iastWeakHashAlgorithms = - tryMakeImmutableSet( - configProvider.getSet(IAST_WEAK_HASH_ALGORITHMS, DEFAULT_IAST_WEAK_HASH_ALGORITHMS)); - iastWeakCipherAlgorithms = - getPattern( - DEFAULT_IAST_WEAK_CIPHER_ALGORITHMS, - configProvider.getString(IAST_WEAK_CIPHER_ALGORITHMS)); - iastTelemetryVerbosity = - configProvider.getEnum(IAST_TELEMETRY_VERBOSITY, Verbosity.class, Verbosity.INFORMATION); - iastRedactionEnabled = - configProvider.getBoolean(IAST_REDACTION_ENABLED, DEFAULT_IAST_REDACTION_ENABLED); - iastRedactionNamePattern = - configProvider.getString(IAST_REDACTION_NAME_PATTERN, DEFAULT_IAST_REDACTION_NAME_PATTERN); - iastRedactionValuePattern = - configProvider.getString( - IAST_REDACTION_VALUE_PATTERN, DEFAULT_IAST_REDACTION_VALUE_PATTERN); - iastTruncationMaxValueLength = - configProvider.getInteger( - IAST_TRUNCATION_MAX_VALUE_LENGTH, DEFAULT_IAST_TRUNCATION_MAX_VALUE_LENGTH); - iastMaxRangeCount = iastDetectionMode.getIastMaxRangeCount(configProvider); - iastStacktraceLeakSuppress = - configProvider.getBoolean( - IAST_STACKTRACE_LEAK_SUPPRESS, DEFAULT_IAST_STACKTRACE_LEAK_SUPPRESS); - - ciVisibilityTraceSanitationEnabled = - configProvider.getBoolean(CIVISIBILITY_TRACE_SANITATION_ENABLED, true); - - ciVisibilityAgentlessEnabled = - configProvider.getBoolean( - CIVISIBILITY_AGENTLESS_ENABLED, DEFAULT_CIVISIBILITY_AGENTLESS_ENABLED); - - ciVisibilitySourceDataEnabled = - configProvider.getBoolean( - CIVISIBILITY_SOURCE_DATA_ENABLED, DEFAULT_CIVISIBILITY_SOURCE_DATA_ENABLED); - - ciVisibilitySourceDataRootCheckEnabled = - configProvider.getBoolean( - CIVISIBILITY_SOURCE_DATA_ROOT_CHECK_ENABLED, - DEFAULT_CIVISIBILITY_SOURCE_DATA_ROOT_CHECK_ENABLED); - - ciVisibilityBuildInstrumentationEnabled = - configProvider.getBoolean( - CIVISIBILITY_BUILD_INSTRUMENTATION_ENABLED, - DEFAULT_CIVISIBILITY_BUILD_INSTRUMENTATION_ENABLED); - - ciVisibilitySessionId = configProvider.getLong(CIVISIBILITY_SESSION_ID); - ciVisibilityModuleId = configProvider.getLong(CIVISIBILITY_MODULE_ID); - - final String ciVisibilityAgentlessUrlStr = configProvider.getString(CIVISIBILITY_AGENTLESS_URL); - URI parsedCiVisibilityUri = null; - if (ciVisibilityAgentlessUrlStr != null && !ciVisibilityAgentlessUrlStr.isEmpty()) { - try { - parsedCiVisibilityUri = new URL(ciVisibilityAgentlessUrlStr).toURI(); - } catch (MalformedURLException | URISyntaxException ex) { - log.error( - "Cannot parse CI Visibility agentless URL '{}', skipping", ciVisibilityAgentlessUrlStr); - } - } - if (parsedCiVisibilityUri != null) { - ciVisibilityAgentlessUrl = ciVisibilityAgentlessUrlStr; - } else { - ciVisibilityAgentlessUrl = null; - } - - ciVisibilityAgentJarUri = configProvider.getString(CIVISIBILITY_AGENT_JAR_URI); - ciVisibilityAutoConfigurationEnabled = - configProvider.getBoolean( - CIVISIBILITY_AUTO_CONFIGURATION_ENABLED, - DEFAULT_CIVISIBILITY_AUTO_CONFIGURATION_ENABLED); - ciVisibilityAdditionalChildProcessJvmArgs = - configProvider.getString(CIVISIBILITY_ADDITIONAL_CHILD_PROCESS_JVM_ARGS); - ciVisibilityCompilerPluginAutoConfigurationEnabled = - configProvider.getBoolean( - CIVISIBILITY_COMPILER_PLUGIN_AUTO_CONFIGURATION_ENABLED, - DEFAULT_CIVISIBILITY_COMPILER_PLUGIN_AUTO_CONFIGURATION_ENABLED); - ciVisibilityCodeCoverageEnabled = - configProvider.getBoolean(CIVISIBILITY_CODE_COVERAGE_ENABLED, true); - ciVisibilityCodeCoveragePercentageCalculationEnabled = - configProvider.getBoolean(CIVISIBILITY_CODE_COVERAGE_PERCENTAGE_CALCULATION_ENABLED, true); - ciVisibilityCodeCoverageReportDumpDir = - configProvider.getString(CIVISIBILITY_CODE_COVERAGE_REPORT_DUMP_DIR); - ciVisibilityCompilerPluginVersion = - configProvider.getString( - CIVISIBILITY_COMPILER_PLUGIN_VERSION, DEFAULT_CIVISIBILITY_COMPILER_PLUGIN_VERSION); - ciVisibilityJacocoPluginVersion = - configProvider.getString( - CIVISIBILITY_JACOCO_PLUGIN_VERSION, DEFAULT_CIVISIBILITY_JACOCO_PLUGIN_VERSION); - ciVisibilityJacocoPluginVersionProvided = - configProvider.getString(CIVISIBILITY_JACOCO_PLUGIN_VERSION) != null; - ciVisibilityCodeCoverageIncludes = - Arrays.asList( - COLON.split(configProvider.getString(CIVISIBILITY_CODE_COVERAGE_INCLUDES, ":"))); - ciVisibilityCodeCoverageExcludes = - Arrays.asList( - COLON.split( - configProvider.getString( - CIVISIBILITY_CODE_COVERAGE_EXCLUDES, - DEFAULT_CIVISIBILITY_JACOCO_PLUGIN_EXCLUDES))); - ciVisibilityCodeCoverageIncludedPackages = - convertJacocoExclusionFormatToPackagePrefixes(ciVisibilityCodeCoverageIncludes); - ciVisibilityCodeCoverageExcludedPackages = - convertJacocoExclusionFormatToPackagePrefixes(ciVisibilityCodeCoverageExcludes); - ciVisibilityJacocoGradleSourceSets = - configProvider.getList( - CIVISIBILITY_JACOCO_GRADLE_SOURCE_SETS, Collections.singletonList("main")); - ciVisibilityDebugPort = configProvider.getInteger(CIVISIBILITY_DEBUG_PORT); - ciVisibilityGitUploadEnabled = - configProvider.getBoolean( - CIVISIBILITY_GIT_UPLOAD_ENABLED, DEFAULT_CIVISIBILITY_GIT_UPLOAD_ENABLED); - ciVisibilityGitUnshallowEnabled = - configProvider.getBoolean( - CIVISIBILITY_GIT_UNSHALLOW_ENABLED, DEFAULT_CIVISIBILITY_GIT_UNSHALLOW_ENABLED); - ciVisibilityGitUnshallowDefer = - configProvider.getBoolean(CIVISIBILITY_GIT_UNSHALLOW_DEFER, true); - ciVisibilityGitCommandTimeoutMillis = - configProvider.getLong( - CIVISIBILITY_GIT_COMMAND_TIMEOUT_MILLIS, - DEFAULT_CIVISIBILITY_GIT_COMMAND_TIMEOUT_MILLIS); - ciVisibilityBackendApiTimeoutMillis = - configProvider.getLong( - CIVISIBILITY_BACKEND_API_TIMEOUT_MILLIS, - DEFAULT_CIVISIBILITY_BACKEND_API_TIMEOUT_MILLIS); - ciVisibilityGitUploadTimeoutMillis = - configProvider.getLong( - CIVISIBILITY_GIT_UPLOAD_TIMEOUT_MILLIS, DEFAULT_CIVISIBILITY_GIT_UPLOAD_TIMEOUT_MILLIS); - ciVisibilityGitRemoteName = - configProvider.getString( - CIVISIBILITY_GIT_REMOTE_NAME, DEFAULT_CIVISIBILITY_GIT_REMOTE_NAME); - ciVisibilitySignalServerHost = - configProvider.getString( - CIVISIBILITY_SIGNAL_SERVER_HOST, DEFAULT_CIVISIBILITY_SIGNAL_SERVER_HOST); - ciVisibilitySignalServerPort = - configProvider.getInteger( - CIVISIBILITY_SIGNAL_SERVER_PORT, DEFAULT_CIVISIBILITY_SIGNAL_SERVER_PORT); - ciVisibilityItrEnabled = configProvider.getBoolean(CIVISIBILITY_ITR_ENABLED, true); - ciVisibilityCiProviderIntegrationEnabled = - configProvider.getBoolean(CIVISIBILITY_CIPROVIDER_INTEGRATION_ENABLED, true); - ciVisibilityRepoIndexSharingEnabled = - configProvider.getBoolean(CIVISIBILITY_REPO_INDEX_SHARING_ENABLED, true); - ciVisibilityModuleExecutionSettingsCacheSize = - configProvider.getInteger(CIVISIBILITY_MODULE_EXECUTION_SETTINGS_CACHE_SIZE, 16); - ciVisibilityJvmInfoCacheSize = configProvider.getInteger(CIVISIBILITY_JVM_INFO_CACHE_SIZE, 8); - ciVisibilityCoverageSegmentsEnabled = - configProvider.getBoolean(CIVISIBILITY_CODE_COVERAGE_SEGMENTS_ENABLED, false); - ciVisibilityCoverageRootPackagesLimit = - configProvider.getInteger(CIVISIBILITY_CODE_COVERAGE_ROOT_PACKAGES_LIMIT, 50); - ciVisibilityInjectedTracerVersion = - configProvider.getString(CIVISIBILITY_INJECTED_TRACER_VERSION); - ciVisibilityResourceFolderNames = - configProvider.getList( - CIVISIBILITY_RESOURCE_FOLDER_NAMES, DEFAULT_CIVISIBILITY_RESOURCE_FOLDER_NAMES); - ciVisibilityFlakyRetryEnabled = - configProvider.getBoolean(CIVISIBILITY_FLAKY_RETRY_ENABLED, false); - ciVisibilityFlakyRetryCount = configProvider.getInteger(CIVISIBILITY_FLAKY_RETRY_COUNT, 5); - ciVisibilityModuleName = configProvider.getString(CIVISIBILITY_MODULE_NAME); - remoteConfigEnabled = configProvider.getBoolean(REMOTE_CONFIG_ENABLED, DEFAULT_REMOTE_CONFIG_ENABLED); remoteConfigIntegrityCheckEnabled = @@ -1652,50 +1197,6 @@ private Config(final ConfigProvider configProvider, final InstrumenterConfig ins remoteConfigTargetsKey = configProvider.getString(REMOTE_CONFIG_TARGETS_KEY, DEFAULT_REMOTE_CONFIG_TARGETS_KEY); - debuggerEnabled = configProvider.getBoolean(DEBUGGER_ENABLED, DEFAULT_DEBUGGER_ENABLED); - debuggerUploadTimeout = - configProvider.getInteger(DEBUGGER_UPLOAD_TIMEOUT, DEFAULT_DEBUGGER_UPLOAD_TIMEOUT); - debuggerUploadFlushInterval = - configProvider.getInteger( - DEBUGGER_UPLOAD_FLUSH_INTERVAL, DEFAULT_DEBUGGER_UPLOAD_FLUSH_INTERVAL); - debuggerClassFileDumpEnabled = - configProvider.getBoolean( - DEBUGGER_CLASSFILE_DUMP_ENABLED, DEFAULT_DEBUGGER_CLASSFILE_DUMP_ENABLED); - debuggerPollInterval = - configProvider.getInteger(DEBUGGER_POLL_INTERVAL, DEFAULT_DEBUGGER_POLL_INTERVAL); - debuggerDiagnosticsInterval = - configProvider.getInteger( - DEBUGGER_DIAGNOSTICS_INTERVAL, DEFAULT_DEBUGGER_DIAGNOSTICS_INTERVAL); - debuggerMetricEnabled = - runtimeMetricsEnabled - && configProvider.getBoolean( - DEBUGGER_METRICS_ENABLED, DEFAULT_DEBUGGER_METRICS_ENABLED); - debuggerProbeFileLocation = configProvider.getString(DEBUGGER_PROBE_FILE_LOCATION); - debuggerUploadBatchSize = - configProvider.getInteger(DEBUGGER_UPLOAD_BATCH_SIZE, DEFAULT_DEBUGGER_UPLOAD_BATCH_SIZE); - debuggerMaxPayloadSize = - configProvider.getInteger(DEBUGGER_MAX_PAYLOAD_SIZE, DEFAULT_DEBUGGER_MAX_PAYLOAD_SIZE) - * 1024; - debuggerVerifyByteCode = - configProvider.getBoolean(DEBUGGER_VERIFY_BYTECODE, DEFAULT_DEBUGGER_VERIFY_BYTECODE); - debuggerInstrumentTheWorld = - configProvider.getBoolean( - DEBUGGER_INSTRUMENT_THE_WORLD, DEFAULT_DEBUGGER_INSTRUMENT_THE_WORLD); - debuggerExcludeFiles = configProvider.getString(DEBUGGER_EXCLUDE_FILES); - debuggerCaptureTimeout = - configProvider.getInteger(DEBUGGER_CAPTURE_TIMEOUT, DEFAULT_DEBUGGER_CAPTURE_TIMEOUT); - debuggerRedactedIdentifiers = configProvider.getString(DEBUGGER_REDACTED_IDENTIFIERS, null); - debuggerRedactedTypes = configProvider.getString(DEBUGGER_REDACTED_TYPES, null); - debuggerSymbolEnabled = - configProvider.getBoolean(DEBUGGER_SYMBOL_ENABLED, DEFAULT_DEBUGGER_SYMBOL_ENABLED); - debuggerSymbolForceUpload = - configProvider.getBoolean( - DEBUGGER_SYMBOL_FORCE_UPLOAD, DEFAULT_DEBUGGER_SYMBOL_FORCE_UPLOAD); - debuggerSymbolIncludes = configProvider.getString(DEBUGGER_SYMBOL_INCLUDES, null); - debuggerSymbolFlushThreshold = - configProvider.getInteger( - DEBUGGER_SYMBOL_FLUSH_THRESHOLD, DEFAULT_DEBUGGER_SYMBOL_FLUSH_THRESHOLD); - awsPropagationEnabled = isPropagationEnabled(true, "aws", "aws-sdk"); sqsPropagationEnabled = isPropagationEnabled(true, "sqs"); @@ -1776,9 +1277,6 @@ private Config(final ConfigProvider configProvider, final InstrumenterConfig ins startupLogsEnabled = configProvider.getBoolean(STARTUP_LOGS_ENABLED, DEFAULT_STARTUP_LOGS_ENABLED); - cwsEnabled = configProvider.getBoolean(CWS_ENABLED, DEFAULT_CWS_ENABLED); - cwsTlsRefresh = configProvider.getInteger(CWS_TLS_REFRESH, DEFAULT_CWS_TLS_REFRESH); - dataStreamsEnabled = configProvider.getBoolean(DATA_STREAMS_ENABLED, DEFAULT_DATA_STREAMS_ENABLED); dataStreamsBucketDurationSeconds = @@ -1847,14 +1345,6 @@ private Config(final ConfigProvider configProvider, final InstrumenterConfig ins "Agentless profiling activated but no api key provided. Profile uploading will likely fail"); } - if (isCiVisibilityEnabled() - && ciVisibilityAgentlessEnabled - && (apiKey == null || apiKey.isEmpty())) { - throw new FatalAgentMisconfigurationError( - "Attempt to start in Agentless mode without API key. " - + "Please ensure that either an API key is configured, or the tracer is set up to work with the Agent"); - } - this.telemetryDebugRequestsEnabled = configProvider.getBoolean( GeneralConfig.TELEMETRY_DEBUG_REQUESTS_ENABLED, @@ -1999,18 +1489,6 @@ public boolean isTraceResolverEnabled() { return traceResolverEnabled; } - public Set getIastWeakHashAlgorithms() { - return iastWeakHashAlgorithms; - } - - public Pattern getIastWeakCipherAlgorithms() { - return iastWeakCipherAlgorithms; - } - - public boolean isIastDeduplicationEnabled() { - return iastDeduplicationEnabled; - } - public int getSpanAttributeSchemaVersion() { return spanAttributeSchemaVersion; } @@ -2201,50 +1679,6 @@ public boolean isRuntimeMetricsEnabled() { return runtimeMetricsEnabled; } - public boolean isJmxFetchEnabled() { - return jmxFetchEnabled; - } - - public String getJmxFetchConfigDir() { - return jmxFetchConfigDir; - } - - public List getJmxFetchConfigs() { - return jmxFetchConfigs; - } - - public List getJmxFetchMetricsConfigs() { - return jmxFetchMetricsConfigs; - } - - public Integer getJmxFetchCheckPeriod() { - return jmxFetchCheckPeriod; - } - - public Integer getJmxFetchRefreshBeansPeriod() { - return jmxFetchRefreshBeansPeriod; - } - - public Integer getJmxFetchInitialRefreshBeansPeriod() { - return jmxFetchInitialRefreshBeansPeriod; - } - - public String getJmxFetchStatsdHost() { - return jmxFetchStatsdHost; - } - - public Integer getJmxFetchStatsdPort() { - return jmxFetchStatsdPort; - } - - public boolean isJmxFetchMultipleRuntimeServicesEnabled() { - return jmxFetchMultipleRuntimeServicesEnabled; - } - - public int getJmxFetchMultipleRuntimeServicesLimit() { - return jmxFetchMultipleRuntimeServicesLimit; - } - public boolean isHealthMetricsEnabled() { return healthMetricsEnabled; } @@ -2504,111 +1938,6 @@ public boolean isClientIpEnabled() { return clientIpEnabled; } - public ProductActivation getAppSecActivation() { - return instrumenterConfig.getAppSecActivation(); - } - - public boolean isAppSecReportingInband() { - return appSecReportingInband; - } - - public int getAppSecReportMinTimeout() { - return appSecReportMinTimeout; - } - - public int getAppSecReportMaxTimeout() { - return appSecReportMaxTimeout; - } - - public int getAppSecTraceRateLimit() { - return appSecTraceRateLimit; - } - - public boolean isAppSecWafMetrics() { - return appSecWafMetrics; - } - - // in microseconds - public int getAppSecWafTimeout() { - return appSecWafTimeout; - } - - public String getAppSecObfuscationParameterKeyRegexp() { - return appSecObfuscationParameterKeyRegexp; - } - - public String getAppSecObfuscationParameterValueRegexp() { - return appSecObfuscationParameterValueRegexp; - } - - public String getAppSecHttpBlockedTemplateHtml() { - return appSecHttpBlockedTemplateHtml; - } - - public String getAppSecHttpBlockedTemplateJson() { - return appSecHttpBlockedTemplateJson; - } - - public UserEventTrackingMode getAppSecUserEventsTrackingMode() { - return appSecUserEventsTracking; - } - - public boolean isApiSecurityEnabled() { - return apiSecurityEnabled; - } - - public float getApiSecurityRequestSampleRate() { - return apiSecurityRequestSampleRate; - } - - public ProductActivation getIastActivation() { - return instrumenterConfig.getIastActivation(); - } - - public boolean isIastDebugEnabled() { - return iastDebugEnabled; - } - - public int getIastMaxConcurrentRequests() { - return iastMaxConcurrentRequests; - } - - public int getIastVulnerabilitiesPerRequest() { - return iastVulnerabilitiesPerRequest; - } - - public float getIastRequestSampling() { - return iastRequestSampling; - } - - public Verbosity getIastTelemetryVerbosity() { - return isTelemetryEnabled() ? iastTelemetryVerbosity : Verbosity.OFF; - } - - public boolean isIastRedactionEnabled() { - return iastRedactionEnabled; - } - - public String getIastRedactionNamePattern() { - return iastRedactionNamePattern; - } - - public String getIastRedactionValuePattern() { - return iastRedactionValuePattern; - } - - public int getIastTruncationMaxValueLength() { - return iastTruncationMaxValueLength; - } - - public int getIastMaxRangeCount() { - return iastMaxRangeCount; - } - - public boolean isIastStacktraceLeakSuppress() { - return iastStacktraceLeakSuppress; - } - public boolean isCiVisibilityEnabled() { return false; } @@ -2617,203 +1946,6 @@ public boolean isUsmEnabled() { return instrumenterConfig.isUsmEnabled(); } - public boolean isCiVisibilityTraceSanitationEnabled() { - return ciVisibilityTraceSanitationEnabled; - } - - public boolean isCiVisibilityAgentlessEnabled() { - return ciVisibilityAgentlessEnabled; - } - - public String getCiVisibilityAgentlessUrl() { - return ciVisibilityAgentlessUrl; - } - - public boolean isCiVisibilitySourceDataEnabled() { - return ciVisibilitySourceDataEnabled; - } - - public boolean isCiVisibilitySourceDataRootCheckEnabled() { - return ciVisibilitySourceDataRootCheckEnabled; - } - - public boolean isCiVisibilityBuildInstrumentationEnabled() { - return ciVisibilityBuildInstrumentationEnabled; - } - - public Long getCiVisibilitySessionId() { - return ciVisibilitySessionId; - } - - public Long getCiVisibilityModuleId() { - return ciVisibilityModuleId; - } - - public String getCiVisibilityAgentJarUri() { - return ciVisibilityAgentJarUri; - } - - public File getCiVisibilityAgentJarFile() { - if (ciVisibilityAgentJarUri == null || ciVisibilityAgentJarUri.isEmpty()) { - throw new IllegalArgumentException("Agent JAR URI is not set in config"); - } - - try { - URI agentJarUri = new URI(ciVisibilityAgentJarUri); - return new File(agentJarUri); - } catch (URISyntaxException e) { - throw new IllegalArgumentException("Malformed agent JAR URI: " + ciVisibilityAgentJarUri, e); - } - } - - public boolean isCiVisibilityAutoConfigurationEnabled() { - return ciVisibilityAutoConfigurationEnabled; - } - - public String getCiVisibilityAdditionalChildProcessJvmArgs() { - return ciVisibilityAdditionalChildProcessJvmArgs; - } - - public boolean isCiVisibilityCompilerPluginAutoConfigurationEnabled() { - return ciVisibilityCompilerPluginAutoConfigurationEnabled; - } - - public boolean isCiVisibilityCodeCoverageEnabled() { - return ciVisibilityCodeCoverageEnabled; - } - - public boolean isCiVisibilityCodeCoveragePercentageCalculationEnabled() { - return ciVisibilityCodeCoveragePercentageCalculationEnabled; - } - - public String getCiVisibilityCodeCoverageReportDumpDir() { - return ciVisibilityCodeCoverageReportDumpDir; - } - - public String getCiVisibilityCompilerPluginVersion() { - return ciVisibilityCompilerPluginVersion; - } - - public String getCiVisibilityJacocoPluginVersion() { - return ciVisibilityJacocoPluginVersion; - } - - public boolean isCiVisibilityJacocoPluginVersionProvided() { - return ciVisibilityJacocoPluginVersionProvided; - } - - public List getCiVisibilityCodeCoverageIncludes() { - return ciVisibilityCodeCoverageIncludes; - } - - public List getCiVisibilityCodeCoverageExcludes() { - return ciVisibilityCodeCoverageExcludes; - } - - public String[] getCiVisibilityCodeCoverageIncludedPackages() { - return ciVisibilityCodeCoverageIncludedPackages; - } - - public String[] getCiVisibilityCodeCoverageExcludedPackages() { - return ciVisibilityCodeCoverageExcludedPackages; - } - - public List getCiVisibilityJacocoGradleSourceSets() { - return ciVisibilityJacocoGradleSourceSets; - } - - public Integer getCiVisibilityDebugPort() { - return ciVisibilityDebugPort; - } - - public boolean isCiVisibilityGitUploadEnabled() { - return ciVisibilityGitUploadEnabled; - } - - public boolean isCiVisibilityGitUnshallowEnabled() { - return ciVisibilityGitUnshallowEnabled; - } - - public boolean isCiVisibilityGitUnshallowDefer() { - return ciVisibilityGitUnshallowDefer; - } - - public long getCiVisibilityGitCommandTimeoutMillis() { - return ciVisibilityGitCommandTimeoutMillis; - } - - public long getCiVisibilityBackendApiTimeoutMillis() { - return ciVisibilityBackendApiTimeoutMillis; - } - - public long getCiVisibilityGitUploadTimeoutMillis() { - return ciVisibilityGitUploadTimeoutMillis; - } - - public String getCiVisibilityGitRemoteName() { - return ciVisibilityGitRemoteName; - } - - public int getCiVisibilitySignalServerPort() { - return ciVisibilitySignalServerPort; - } - - public String getCiVisibilitySignalServerHost() { - return ciVisibilitySignalServerHost; - } - - public boolean isCiVisibilityItrEnabled() { - return ciVisibilityItrEnabled; - } - - public boolean isCiVisibilityCiProviderIntegrationEnabled() { - return ciVisibilityCiProviderIntegrationEnabled; - } - - public boolean isCiVisibilityRepoIndexSharingEnabled() { - return ciVisibilityRepoIndexSharingEnabled; - } - - public int getCiVisibilityModuleExecutionSettingsCacheSize() { - return ciVisibilityModuleExecutionSettingsCacheSize; - } - - public int getCiVisibilityJvmInfoCacheSize() { - return ciVisibilityJvmInfoCacheSize; - } - - public boolean isCiVisibilityCoverageSegmentsEnabled() { - return ciVisibilityCoverageSegmentsEnabled; - } - - public int getCiVisibilityCoverageRootPackagesLimit() { - return ciVisibilityCoverageRootPackagesLimit; - } - - public String getCiVisibilityInjectedTracerVersion() { - return ciVisibilityInjectedTracerVersion; - } - - public List getCiVisibilityResourceFolderNames() { - return ciVisibilityResourceFolderNames; - } - - public boolean isCiVisibilityFlakyRetryEnabled() { - return ciVisibilityFlakyRetryEnabled; - } - - public int getCiVisibilityFlakyRetryCount() { - return ciVisibilityFlakyRetryCount; - } - - public String getCiVisibilityModuleName() { - return ciVisibilityModuleName; - } - - public String getAppSecRulesFile() { - return appSecRulesFile; - } - public long getRemoteConfigMaxPayloadSizeBytes() { return remoteConfigMaxPayloadSize; } @@ -2842,74 +1974,6 @@ public String getRemoteConfigTargetsKey() { return remoteConfigTargetsKey; } - public boolean isDebuggerEnabled() { - return debuggerEnabled; - } - - public int getDebuggerUploadTimeout() { - return debuggerUploadTimeout; - } - - public int getDebuggerUploadFlushInterval() { - return debuggerUploadFlushInterval; - } - - public boolean isDebuggerClassFileDumpEnabled() { - return debuggerClassFileDumpEnabled; - } - - public int getDebuggerPollInterval() { - return debuggerPollInterval; - } - - public int getDebuggerDiagnosticsInterval() { - return debuggerDiagnosticsInterval; - } - - public boolean isDebuggerMetricsEnabled() { - return debuggerMetricEnabled; - } - - public int getDebuggerUploadBatchSize() { - return debuggerUploadBatchSize; - } - - public long getDebuggerMaxPayloadSize() { - return debuggerMaxPayloadSize; - } - - public boolean isDebuggerVerifyByteCode() { - return debuggerVerifyByteCode; - } - - public boolean isDebuggerInstrumentTheWorld() { - return debuggerInstrumentTheWorld; - } - - public String getDebuggerExcludeFiles() { - return debuggerExcludeFiles; - } - - public int getDebuggerCaptureTimeout() { - return debuggerCaptureTimeout; - } - - public boolean isDebuggerSymbolEnabled() { - return debuggerSymbolEnabled; - } - - public boolean isDebuggerSymbolForceUpload() { - return debuggerSymbolForceUpload; - } - - public String getDebuggerSymbolIncludes() { - return debuggerSymbolIncludes; - } - - public int getDebuggerSymbolFlushThreshold() { - return debuggerSymbolFlushThreshold; - } - public String getFinalDebuggerProbeUrl() { // by default poll from datadog agent return "http://" + agentHost + ":" + agentPort; @@ -2924,18 +1988,6 @@ public String getFinalDebuggerSymDBUrl() { return agentUrl + "/symdb/v1/input"; } - public String getDebuggerProbeFileLocation() { - return debuggerProbeFileLocation; - } - - public String getDebuggerRedactedIdentifiers() { - return debuggerRedactedIdentifiers; - } - - public String getDebuggerRedactedTypes() { - return debuggerRedactedTypes; - } - public boolean isAwsPropagationEnabled() { return awsPropagationEnabled; } @@ -3040,14 +2092,6 @@ public boolean isStartupLogsEnabled() { return startupLogsEnabled; } - public boolean isCwsEnabled() { - return cwsEnabled; - } - - public int getCwsTlsRefresh() { - return cwsTlsRefresh; - } - public boolean isAzureAppServices() { return azureAppServices; } @@ -3211,21 +2255,6 @@ public Map getMergedSpanTags() { return Collections.unmodifiableMap(result); } - public Map getMergedJmxTags() { - final Map runtimeTags = getRuntimeTags(); - final Map result = - newHashMap( - getGlobalTags().size() + jmxTags.size() + runtimeTags.size() + 1 /* for serviceName */); - result.putAll(getGlobalTags()); - result.putAll(jmxTags); - result.putAll(runtimeTags); - // service name set here instead of getRuntimeTags because apm already manages the service tag - // and may chose to override it. - // Additionally, infra/JMX metrics require `service` rather than APM's `service.name` tag - result.put(SERVICE_TAG, serviceName); - return Collections.unmodifiableMap(result); - } - public Map getMergedProfilingTags() { final Map runtimeTags = getRuntimeTags(); final String host = getHostName(); @@ -3893,8 +2922,6 @@ public String toString() { + tags + ", spanTags=" + spanTags - + ", jmxTags=" - + jmxTags + ", requestHeaderTags=" + requestHeaderTags + ", responseHeaderTags=" @@ -3953,32 +2980,6 @@ public String toString() { + tracePropagationExtractFirst + ", clockSyncPeriod=" + clockSyncPeriod - + ", jmxFetchEnabled=" - + jmxFetchEnabled - + ", dogStatsDStartDelay=" - + dogStatsDStartDelay - + ", jmxFetchConfigDir='" - + jmxFetchConfigDir - + '\'' - + ", jmxFetchConfigs=" - + jmxFetchConfigs - + ", jmxFetchMetricsConfigs=" - + jmxFetchMetricsConfigs - + ", jmxFetchCheckPeriod=" - + jmxFetchCheckPeriod - + ", jmxFetchInitialRefreshBeansPeriod=" - + jmxFetchInitialRefreshBeansPeriod - + ", jmxFetchRefreshBeansPeriod=" - + jmxFetchRefreshBeansPeriod - + ", jmxFetchStatsdHost='" - + jmxFetchStatsdHost - + '\'' - + ", jmxFetchStatsdPort=" - + jmxFetchStatsdPort - + ", jmxFetchMultipleRuntimeServicesEnabled=" - + jmxFetchMultipleRuntimeServicesEnabled - + ", jmxFetchMultipleRuntimeServicesLimit=" - + jmxFetchMultipleRuntimeServicesLimit + ", healthMetricsEnabled=" + healthMetricsEnabled + ", healthMetricsStatsdHost='" @@ -4067,32 +3068,6 @@ public String toString() { + remoteConfigMaxPayloadSize + ", remoteConfigIntegrityCheckEnabled=" + remoteConfigIntegrityCheckEnabled - + ", debuggerEnabled=" - + debuggerEnabled - + ", debuggerUploadTimeout=" - + debuggerUploadTimeout - + ", debuggerUploadFlushInterval=" - + debuggerUploadFlushInterval - + ", debuggerClassFileDumpEnabled=" - + debuggerClassFileDumpEnabled - + ", debuggerPollInterval=" - + debuggerPollInterval - + ", debuggerDiagnosticsInterval=" - + debuggerDiagnosticsInterval - + ", debuggerMetricEnabled=" - + debuggerMetricEnabled - + ", debuggerProbeFileLocation=" - + debuggerProbeFileLocation - + ", debuggerUploadBatchSize=" - + debuggerUploadBatchSize - + ", debuggerMaxPayloadSize=" - + debuggerMaxPayloadSize - + ", debuggerVerifyByteCode=" - + debuggerVerifyByteCode - + ", debuggerInstrumentTheWorld=" - + debuggerInstrumentTheWorld - + ", debuggerExcludeFile=" - + debuggerExcludeFiles + ", awsPropagationEnabled=" + awsPropagationEnabled + ", sqsPropagationEnabled=" @@ -4154,25 +3129,6 @@ public String toString() { + grpcClientErrorStatuses + ", clientIpEnabled=" + clientIpEnabled - + ", appSecReportingInband=" - + appSecReportingInband - + ", appSecRulesFile='" - + appSecRulesFile - + "'" - + ", appSecHttpBlockedTemplateHtml=" - + appSecHttpBlockedTemplateHtml - + ", appSecWafTimeout=" - + appSecWafTimeout - + " us, appSecHttpBlockedTemplateJson=" - + appSecHttpBlockedTemplateJson - + ", apiSecurityEnabled=" - + apiSecurityEnabled - + ", apiSecurityRequestSampleRate=" - + apiSecurityRequestSampleRate - + ", cwsEnabled=" - + cwsEnabled - + ", cwsTlsRefresh=" - + cwsTlsRefresh + ", longRunningTraceEnabled=" + longRunningTraceEnabled + ", longRunningTraceFlushInterval=" diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/DisableTestTrace.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/DisableTestTrace.java deleted file mode 100644 index 97c8c96820..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/DisableTestTrace.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.datadog.trace.api; - -import static java.lang.annotation.ElementType.METHOD; -import static java.lang.annotation.ElementType.TYPE; -import static java.lang.annotation.RetentionPolicy.RUNTIME; - -import java.lang.annotation.Retention; -import java.lang.annotation.Target; - -/** - * Set this annotation to a test method so the dd-java-agent does not consider it for tracing. This - * annotation must be only used in test framework instrumentation tests to avoid self-tracing of the - * test itself. - */ -@Retention(RUNTIME) -@Target({TYPE, METHOD}) -public @interface DisableTestTrace { - - /** The reason of why test trace has been disable for that test. */ - String reason() default ""; -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/InstrumenterConfig.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/InstrumenterConfig.java index ac1e5bc473..d49ef6666d 100644 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/InstrumenterConfig.java +++ b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/InstrumenterConfig.java @@ -1,8 +1,5 @@ package com.datadog.trace.api; -import static com.datadog.trace.api.ConfigDefaults.DEFAULT_APPSEC_ENABLED; -import static com.datadog.trace.api.ConfigDefaults.DEFAULT_CIVISIBILITY_ENABLED; -import static com.datadog.trace.api.ConfigDefaults.DEFAULT_IAST_ENABLED; import static com.datadog.trace.api.ConfigDefaults.DEFAULT_INTEGRATIONS_ENABLED; import static com.datadog.trace.api.ConfigDefaults.DEFAULT_MEASURE_METHODS; import static com.datadog.trace.api.ConfigDefaults.DEFAULT_RESOLVER_RESET_INTERVAL; @@ -17,11 +14,8 @@ import static com.datadog.trace.api.ConfigDefaults.DEFAULT_TRACE_METHODS; import static com.datadog.trace.api.ConfigDefaults.DEFAULT_TRACE_OTEL_ENABLED; import static com.datadog.trace.api.ConfigDefaults.DEFAULT_USM_ENABLED; -import static com.datadog.trace.api.config.AppSecConfig.APPSEC_ENABLED; -import static com.datadog.trace.api.config.CiVisibilityConfig.CIVISIBILITY_ENABLED; import static com.datadog.trace.api.config.GeneralConfig.INTERNAL_EXIT_ON_FAILURE; import static com.datadog.trace.api.config.GeneralConfig.TELEMETRY_ENABLED; -import static com.datadog.trace.api.config.IastConfig.IAST_ENABLED; import static com.datadog.trace.api.config.ProfilingConfig.PROFILING_DIRECT_ALLOCATION_ENABLED; import static com.datadog.trace.api.config.ProfilingConfig.PROFILING_DIRECT_ALLOCATION_ENABLED_DEFAULT; import static com.datadog.trace.api.config.ProfilingConfig.PROFILING_ENABLED; @@ -89,9 +83,6 @@ public class InstrumenterConfig { private final boolean traceOtelEnabled; private final boolean logs128bTraceIdEnabled; private final boolean profilingEnabled; - private final boolean ciVisibilityEnabled; - private final ProductActivation appSecActivation; - private final ProductActivation iastActivation; private final boolean usmEnabled; private final boolean telemetryEnabled; @@ -148,21 +139,10 @@ private InstrumenterConfig() { profilingEnabled = configProvider.getBoolean(PROFILING_ENABLED, PROFILING_ENABLED_DEFAULT); if (!Platform.isNativeImageBuilder()) { - ciVisibilityEnabled = - configProvider.getBoolean(CIVISIBILITY_ENABLED, DEFAULT_CIVISIBILITY_ENABLED); - appSecActivation = - ProductActivation.fromString( - configProvider.getStringNotEmpty(APPSEC_ENABLED, DEFAULT_APPSEC_ENABLED)); - iastActivation = - ProductActivation.fromString( - configProvider.getStringNotEmpty(IAST_ENABLED, DEFAULT_IAST_ENABLED)); usmEnabled = configProvider.getBoolean(USM_ENABLED, DEFAULT_USM_ENABLED); telemetryEnabled = configProvider.getBoolean(TELEMETRY_ENABLED, DEFAULT_TELEMETRY_ENABLED); } else { // disable these features in native-image - ciVisibilityEnabled = false; - appSecActivation = ProductActivation.FULLY_DISABLED; - iastActivation = ProductActivation.FULLY_DISABLED; telemetryEnabled = false; usmEnabled = false; } @@ -251,18 +231,6 @@ public boolean isProfilingEnabled() { return profilingEnabled; } - public boolean isCiVisibilityEnabled() { - return ciVisibilityEnabled; - } - - public ProductActivation getAppSecActivation() { - return appSecActivation; - } - - public ProductActivation getIastActivation() { - return iastActivation; - } - public boolean isUsmEnabled() { return usmEnabled; } @@ -431,12 +399,6 @@ public String toString() { + logs128bTraceIdEnabled + ", profilingEnabled=" + profilingEnabled - + ", ciVisibilityEnabled=" - + ciVisibilityEnabled - + ", appSecActivation=" - + appSecActivation - + ", iastActivation=" - + iastActivation + ", usmEnabled=" + usmEnabled + ", telemetryEnabled=" diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/CIConstants.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/CIConstants.java deleted file mode 100644 index 97b4a12cba..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/CIConstants.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.datadog.trace.api.civisibility; - -public interface CIConstants { - String TEST_PASS = "pass"; - String TEST_FAIL = "fail"; - String TEST_SKIP = "skip"; -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/DDTest.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/DDTest.java deleted file mode 100644 index 092cb17263..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/DDTest.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.datadog.trace.api.civisibility; - -import androidx.annotation.Nullable; - -/** - * This interface represent an individual test case. Typically, a test case corresponds to a method - * that contains the test logic. - */ -public interface DDTest { - - /** - * Adds an arbitrary tag to the test - * - * @param key The name of the tag - * @param value The value of the tag - */ - void setTag(String key, Object value); - - /** - * Marks the test as failed. - * - *

This does not imply the end of test execution, so {@link #end(Long)} method has to be - * invoked at some point after this one. - * - * @param error Optional exception that caused the test to fail - */ - void setErrorInfo(@Nullable Throwable error); - - /** - * Marks the test as skipped. - * - *

This does not imply the end of test execution, so {@link #end(Long)} method has to be - * invoked at some point after this one. - * - * @param skipReason Optional reason for skipping the test - */ - void setSkipReason(@Nullable String skipReason); - - /** - * Marks the end of test execution. - * - *

Unless either {@link #setErrorInfo(Throwable)} or {@link #setSkipReason(String)} were - * invoked prior to calling this method, the test is assumed to have finished successfully. - * - *

The method must be called once for each test instance. - * - *

The call has to be made in the same thread where the test was started. - * - * @param endTime Optional finish time in microseconds. If {@code null} is supplied, current time - * will be assumed - */ - void end(@Nullable Long endTime); -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/DDTestModule.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/DDTestModule.java deleted file mode 100644 index 82a0879849..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/DDTestModule.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.datadog.trace.api.civisibility; - -import androidx.annotation.Nullable; - -/** - * This interface represents a test module, i.e. a set of test suites. This typically corresponds to - * a project module (e.g. Maven submodule or Gradle subproject). - */ -public interface DDTestModule { - - /** - * Adds an arbitrary tag to the module - * - * @param key The name of the tag - * @param value The value of the tag - */ - void setTag(String key, Object value); - - /** - * Marks the module as failed. - * - *

This method should be used to signal a failure that is not related to a specific suite or a - * test case, but rather to the module as a whole (e.g. a failure in a setup/teardown logic that - * is executed once per module). If an individual test suite the module fails, there is no need to - * explicitly signal it to the module object: the status of the module will reflect individual - * suite failures automatically. - * - *

This does not imply the end of module execution, so {@link #end(Long)} method has to be - * invoked at some point after this one. - * - * @param error Optional exception that caused the module to fail - */ - void setErrorInfo(Throwable error); - - /** - * Marks the module as skipped. - * - *

This does not imply the end of module execution, so {@link #end(Long)} method has to be - * invoked at some point after this one. - * - * @param skipReason Optional reason for skipping the module - */ - void setSkipReason(String skipReason); - - /** - * Marks the end of module execution. - * - *

Unless either {@link #setErrorInfo(Throwable)} or {@link #setSkipReason(String)} were - * invoked prior to calling this method, the status of the module will be calculated based on the - * statuses of individual test suites that were executed in scope of the module. - * - *

The method must be called once for each module instance. - * - *

The call does not have to be made in the same thread where the module was started. - * - * @param endTime Optional finish time in microseconds. If {@code null} is supplied, current time - * will be assumed - */ - void end(@Nullable Long endTime); - - /** - * Marks the start of a new test suite in the module. - * - * @param testSuiteName The name of the suite - * @param testClass Optional class that corresponds to the test suite. - * @param startTime Optional start time in microseconds. If {@code null} is supplied, current time - * will be assumed - * @return Handle to the test suite instance - */ - default DDTestSuite testSuiteStart( - String testSuiteName, @Nullable Class testClass, @Nullable Long startTime) { - return testSuiteStart(testSuiteName, testClass, startTime, false); - } - - /** - * Marks the start of a new test suite in the module. - * - * @param testSuiteName The name of the suite - * @param testClass Optional class that corresponds to the test suite. - * @param startTime Optional start time in microseconds. If {@code null} is supplied, current time - * will be assumed - * @param parallelized Whether test cases from this suite will be executed concurrently in - * multiple threads - * @return Handle to the test suite instance - */ - DDTestSuite testSuiteStart( - String testSuiteName, - @Nullable Class testClass, - @Nullable Long startTime, - boolean parallelized); -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/DDTestSession.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/DDTestSession.java deleted file mode 100644 index eb5c49a2b7..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/DDTestSession.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.datadog.trace.api.civisibility; - -import androidx.annotation.Nullable; - -/** - * This interface represents a test session. Test session usually corresponds to execution of a - * single test command issued by a user or by a CI script - */ -public interface DDTestSession { - - /** - * Adds an arbitrary tag to the session - * - * @param key The name of the tag - * @param value The value of the tag - */ - void setTag(String key, Object value); - - /** - * Marks the session as failed. - * - *

This method should be used to signal a failure that is not related to a specific module or a - * test suite, but rather to the tests execution as a whole (e.g. a failure in a setup/teardown - * logic that is executed once for the entire project). If an individual module in the project - * fails, there is no need to explicitly signal it to the session object: the status of the - * session will reflect individual module failures automatically. - * - *

This does not imply the end of tests execution, so {@link #end(Long)} method has to be - * invoked at some point after this one. - * - * @param error Optional exception that caused the execution to fail - */ - void setErrorInfo(Throwable error); - - /** - * Marks the entire execution as skipped. - * - *

This does not imply the end of tests execution, so {@link #end(Long)} method has to be - * invoked at some point after this one. - * - * @param skipReason Optional reason for skipping execution - */ - void setSkipReason(String skipReason); - - /** - * Marks the end of tests execution. - * - *

Unless either {@link #setErrorInfo(Throwable)} or {@link #setSkipReason(String)} were - * invoked prior to calling this method, the status of the execution will be calculated based on - * the statuses of individual modules that were run in scope of the session. - * - *

The method must be called once for each session instance. - * - *

The call does not have to be made in the same thread where the session was started. - * - * @param endTime Optional finish time in microseconds. If {@code null} is supplied, current time - * will be assumed - */ - void end(@Nullable Long endTime); - - /** - * Marks the start of a new module. - * - * @param moduleName The name of the module - * @param startTime Optional start time in microseconds. If {@code null} is supplied, current time - * will be assumed - * @return Handle to the module instance - */ - DDTestModule testModuleStart(String moduleName, @Nullable Long startTime); -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/DDTestSuite.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/DDTestSuite.java deleted file mode 100644 index 74abef132b..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/DDTestSuite.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.datadog.trace.api.civisibility; - -import androidx.annotation.Nullable; - -import java.lang.reflect.Method; - -/** - * This interface represents a test suite, i.e. a set of related test cases. Typically, a test suite - * corresponds to a class that contains a number of test method - */ -public interface DDTestSuite { - - /** - * Adds an arbitrary tag to the suite - * - * @param key The name of the tag - * @param value The value of the tag - */ - void setTag(String key, Object value); - - /** - * Marks the suite as failed. - * - *

This method should be used to signal a failure that is not related to a specific test case, - * but rather to the suite as a whole (e.g. a failure in a setup/teardown method whose scope is - * entire suite). If an individual test case in the suite fails, there is no need to explicitly - * signal it to the suite object: the status of the suite will reflect individual test case - * failures automatically. - * - *

This does not imply the end of suite execution, so {@link #end(Long)} method has to be - * invoked at some point after this one. - * - * @param error Optional exception that caused the suite to fail - */ - void setErrorInfo(Throwable error); - - /** - * Marks the suite as skipped. - * - *

This does not imply the end of suite execution, so {@link #end(Long)} method has to be - * invoked at some point after this one. - * - * @param skipReason Optional reason for skipping the suite - */ - void setSkipReason(String skipReason); - - /** - * Marks the end of suite execution. - * - *

Unless either {@link #setErrorInfo(Throwable)} or {@link #setSkipReason(String)} were - * invoked prior to calling this method, the status of the suite will be calculated based on the - * statuses of individual test cases that were executed in scope of the suite. - * - *

The method must be called once for each suite instance. - * - *

The call has to be made in the same thread where the suite was started. - * - * @param endTime Optional finish time in microseconds. If {@code null} is supplied, current time - * will be assumed - */ - void end(@Nullable Long endTime); - - /** - * Marks the start of a new test case in the suite. - * - * @param testName The name of the test case - * @param testMethod Optional method that corresponds to the test case - * @param startTime Optional start time in microseconds. If {@code null} is supplied, current time - * will be assumed - * @return Handle to the test case instance - */ - DDTest testStart(String testName, @Nullable Method testMethod, @Nullable Long startTime); -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/InstrumentationBridge.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/InstrumentationBridge.java deleted file mode 100644 index 31b4db9024..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/InstrumentationBridge.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.datadog.trace.api.civisibility; - -import com.datadog.trace.api.civisibility.events.BuildEventsHandler; -import com.datadog.trace.api.civisibility.events.TestEventsHandler; - -public abstract class InstrumentationBridge { - - public static final String ITR_SKIP_REASON = "Skipped by Datadog Intelligent Test Runner"; - public static final String ITR_UNSKIPPABLE_TAG = "datadog_itr_unskippable"; - - private static volatile TestEventsHandler.Factory TEST_EVENTS_HANDLER_FACTORY; - private static volatile BuildEventsHandler.Factory BUILD_EVENTS_HANDLER_FACTORY; - - public static void registerTestEventsHandlerFactory( - TestEventsHandler.Factory testEventsHandlerFactory) { - TEST_EVENTS_HANDLER_FACTORY = testEventsHandlerFactory; - } - - public static TestEventsHandler createTestEventsHandler(String component) { - return TEST_EVENTS_HANDLER_FACTORY.create(component); - } - - public static void registerBuildEventsHandlerFactory( - BuildEventsHandler.Factory buildEventsHandlerFactory) { - BUILD_EVENTS_HANDLER_FACTORY = buildEventsHandlerFactory; - } - - public static BuildEventsHandler createBuildEventsHandler() { - return BUILD_EVENTS_HANDLER_FACTORY.create(); - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/config/Configurations.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/config/Configurations.java deleted file mode 100644 index f96c979f89..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/config/Configurations.java +++ /dev/null @@ -1,107 +0,0 @@ -package com.datadog.trace.api.civisibility.config; - -import java.util.Map; -import java.util.Objects; - -public final class Configurations { - private final String osPlatform; - private final String osArchitecture; - private final String osVersion; - private final String runtimeName; - private final String runtimeVersion; - private final String runtimeVendor; - private final String runtimeArchitecture; - private final String testBundle; - private final Map custom; - - public Configurations( - String osPlatform, - String osArchitecture, - String osVersion, - String runtimeName, - String runtimeVersion, - String runtimeVendor, - String runtimeArchitecture, - String testBundle, - Map custom) { - this.osPlatform = osPlatform; - this.osArchitecture = osArchitecture; - this.osVersion = osVersion; - this.runtimeName = runtimeName; - this.runtimeVersion = runtimeVersion; - this.runtimeVendor = runtimeVendor; - this.runtimeArchitecture = runtimeArchitecture; - this.testBundle = testBundle; - this.custom = custom; - } - - public String getOsPlatform() { - return osPlatform; - } - - public String getOsArchitecture() { - return osArchitecture; - } - - public String getOsVersion() { - return osVersion; - } - - public String getRuntimeName() { - return runtimeName; - } - - public String getRuntimeVersion() { - return runtimeVersion; - } - - public String getRuntimeVendor() { - return runtimeVendor; - } - - public String getRuntimeArchitecture() { - return runtimeArchitecture; - } - - public String getTestBundle() { - return testBundle; - } - - public Map getCustom() { - return custom; - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - Configurations that = (Configurations) o; - return Objects.equals(osPlatform, that.osPlatform) - && Objects.equals(osArchitecture, that.osArchitecture) - && Objects.equals(osVersion, that.osVersion) - && Objects.equals(runtimeName, that.runtimeName) - && Objects.equals(runtimeVersion, that.runtimeVersion) - && Objects.equals(runtimeVendor, that.runtimeVendor) - && Objects.equals(runtimeArchitecture, that.runtimeArchitecture) - && Objects.equals(testBundle, that.testBundle) - && Objects.equals(custom, that.custom); - } - - @Override - public int hashCode() { - return Objects.hash( - osPlatform, - osArchitecture, - osVersion, - runtimeName, - runtimeVersion, - runtimeVendor, - runtimeArchitecture, - testBundle, - custom); - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/config/ModuleExecutionSettings.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/config/ModuleExecutionSettings.java deleted file mode 100644 index 68c8c413ec..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/config/ModuleExecutionSettings.java +++ /dev/null @@ -1,98 +0,0 @@ -package com.datadog.trace.api.civisibility.config; - -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.Objects; - -public class ModuleExecutionSettings { - - public static final ModuleExecutionSettings EMPTY = - new ModuleExecutionSettings( - false, - false, - Collections.emptyMap(), - Collections.emptyMap(), - Collections.emptyList(), - Collections.emptyList()); - - private final boolean codeCoverageEnabled; - private final boolean itrEnabled; - private final Map systemProperties; - private final Map> skippableTestsByModule; - private final Collection flakyTests; - private final List coverageEnabledPackages; - - public ModuleExecutionSettings( - boolean codeCoverageEnabled, - boolean itrEnabled, - Map systemProperties, - Map> skippableTestsByModule, - Collection flakyTests, - List coverageEnabledPackages) { - this.codeCoverageEnabled = codeCoverageEnabled; - this.itrEnabled = itrEnabled; - this.systemProperties = systemProperties; - this.skippableTestsByModule = skippableTestsByModule; - this.flakyTests = flakyTests; - this.coverageEnabledPackages = coverageEnabledPackages; - } - - public boolean isCodeCoverageEnabled() { - return codeCoverageEnabled; - } - - public boolean isItrEnabled() { - return itrEnabled; - } - - public Map getSystemProperties() { - return systemProperties; - } - - public Map> getSkippableTestsByModule() { - return skippableTestsByModule; - } - - public Collection getFlakyTests() { - return flakyTests; - } - - public Collection getSkippableTests(String moduleName) { - return skippableTestsByModule.getOrDefault(moduleName, Collections.emptyList()); - } - - public Collection getFlakyTests(String moduleName) { - // backend does not store module info for flaky tests - return flakyTests; - } - - public List getCoverageEnabledPackages() { - return coverageEnabledPackages; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - ModuleExecutionSettings that = (ModuleExecutionSettings) o; - return codeCoverageEnabled == that.codeCoverageEnabled - && itrEnabled == that.itrEnabled - && Objects.equals(systemProperties, that.systemProperties) - && Objects.equals(skippableTestsByModule, that.skippableTestsByModule) - && Objects.equals(flakyTests, that.flakyTests) - && Objects.equals(coverageEnabledPackages, that.coverageEnabledPackages); - } - - @Override - public int hashCode() { - return Objects.hash( - codeCoverageEnabled, - itrEnabled, - systemProperties, - skippableTestsByModule, - flakyTests, - coverageEnabledPackages); - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/config/TestIdentifier.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/config/TestIdentifier.java deleted file mode 100644 index 7711c801fd..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/config/TestIdentifier.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.datadog.trace.api.civisibility.config; - -import androidx.annotation.Nullable; - -import java.util.Objects; - -public class TestIdentifier { - - private final String suite; - private final String name; - private @Nullable final String parameters; - /** - * Configurations field is intentionally excluded from hashCode/equals: the backend does not - * return full configuration for a test case, but rather includes only those parts that were not - * specified in the client request (for instance, when requesting tests without specifying module - * name, each test in the response will have module name present in its config section). Moreover, - * in some edge cases the backend may choose to return empty configuration object instead of null. - * Therefore, reconstructing on the client side a configuration block that fully corresponds to - * the one returned by the backend is non-trivial. - */ - private @Nullable final Configurations configurations; - - public TestIdentifier( - String suite, - String name, - @Nullable String parameters, - @Nullable Configurations configurations) { - this.suite = suite; - this.name = name; - this.parameters = parameters; - this.configurations = configurations; - } - - public String getSuite() { - return suite; - } - - public String getName() { - return name; - } - - @Nullable - public String getParameters() { - return parameters; - } - - @Nullable - public Configurations getConfigurations() { - return configurations; - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - TestIdentifier that = (TestIdentifier) o; - return Objects.equals(suite, that.suite) - && Objects.equals(name, that.name) - && Objects.equals(parameters, that.parameters); - } - - @Override - public int hashCode() { - return Objects.hash(suite, name, parameters); - } - - @Override - public String toString() { - return "SkippableTest{" - + "suite='" - + suite - + '\'' - + ", name='" - + name - + '\'' - + ", parameters='" - + parameters - + '\'' - + ", configurations=" - + configurations - + '}'; - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/coverage/CoverageBridge.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/coverage/CoverageBridge.java deleted file mode 100644 index 9a50744d8c..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/coverage/CoverageBridge.java +++ /dev/null @@ -1,97 +0,0 @@ -package com.datadog.trace.api.civisibility.coverage; - -import static com.datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeSpan; - -import com.datadog.trace.api.gateway.RequestContext; -import com.datadog.trace.api.gateway.RequestContextSlot; -import com.datadog.trace.bootstrap.instrumentation.api.AgentSpan; - -public abstract class CoverageBridge { - /* - * While it is possible to use activeSpan() to get current coverage store, it adds a lot of overhead. - * This thread local is here as a shortcut for hot code paths. - */ - private static final ThreadLocal COVERAGE_PROBE_STORE = new ThreadLocal<>(); - private static volatile CoverageProbeStore.Registry COVERAGE_PROBE_STORE_REGISTRY; - private static volatile CoverageDataSupplier COVERAGE_DATA_SUPPLIER; - - public static void registerCoverageProbeStoreRegistry( - CoverageProbeStore.Registry coverageProbeStoreRegistry) { - COVERAGE_PROBE_STORE_REGISTRY = coverageProbeStoreRegistry; - } - - public static CoverageProbeStore.Registry getCoverageProbeStoreRegistry() { - return COVERAGE_PROBE_STORE_REGISTRY; - } - - public static void registerCoverageDataSupplier(CoverageDataSupplier coverageDataSupplier) { - COVERAGE_DATA_SUPPLIER = coverageDataSupplier; - } - - public static byte[] getCoverageData() { - return COVERAGE_DATA_SUPPLIER != null ? COVERAGE_DATA_SUPPLIER.get() : null; - } - - public static void setThreadLocalCoverageProbeStore(CoverageProbeStore probes) { - COVERAGE_PROBE_STORE.set(probes); - } - - public static void removeThreadLocalCoverageProbeStore() { - COVERAGE_PROBE_STORE.remove(); - } - - /* This method is referenced by name in bytecode added in jacoco instrumentation module */ - public static void currentCoverageProbeStoreRecord(Class clazz, long classId, int probeId) { - CoverageProbeStore probes = COVERAGE_PROBE_STORE.get(); - if (probes != null) { - probes.record(clazz, classId, probeId); - } else { - probes = getCurrentCoverageProbeStore(); - if (probes != null) { - probes.record(clazz, classId, probeId); - } - } - } - - /* This method is referenced by name in bytecode added by coverage probes (see CoverageUtils) */ - public static void currentCoverageProbeStoreRecord(Class clazz) { - CoverageProbeStore probes = COVERAGE_PROBE_STORE.get(); - if (probes != null) { - probes.record(clazz); - } else { - probes = getCurrentCoverageProbeStore(); - if (probes != null) { - probes.record(clazz); - } - } - } - - public static void currentCoverageProbeStoreRecordNonCode(String absolutePath) { - CoverageProbeStore probes = COVERAGE_PROBE_STORE.get(); - if (probes != null) { - probes.recordNonCodeResource(absolutePath); - } else { - probes = getCurrentCoverageProbeStore(); - if (probes != null) { - probes.recordNonCodeResource(absolutePath); - } - } - } - - /** - * Gets coverage probe store associated with the active span. This is a fallback method for cases - * when the probe store could not be retrieved from the thread local. This can happen if the span - * is propagated from the original test thread to another thread. - */ - private static CoverageProbeStore getCurrentCoverageProbeStore() { - AgentSpan span = activeSpan(); - if (span == null) { - return null; - } - RequestContext requestContext = span.getRequestContext(); - if (requestContext == null) { - return null; - } - return requestContext.getData(RequestContextSlot.CI_VISIBILITY); - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/coverage/CoverageDataSupplier.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/coverage/CoverageDataSupplier.java deleted file mode 100644 index d78d9c4be9..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/coverage/CoverageDataSupplier.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.datadog.trace.api.civisibility.coverage; - -public interface CoverageDataSupplier { - byte[] get(); -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/coverage/CoverageProbeStore.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/coverage/CoverageProbeStore.java deleted file mode 100644 index 60a7a6d9e1..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/coverage/CoverageProbeStore.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.datadog.trace.api.civisibility.coverage; - -public interface CoverageProbeStore extends TestReportHolder { - void record(Class clazz); - - void record(Class clazz, long classId, int probeId); - - void recordNonCodeResource(String absolutePath); - - void report(Long testSessionId, Long testSuiteId, long spanId); - - interface Registry { - void setTotalProbeCount(String className, int totalProbeCount); - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/coverage/TestReport.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/coverage/TestReport.java deleted file mode 100644 index 8e58a71db5..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/coverage/TestReport.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.datadog.trace.api.civisibility.coverage; - -import java.util.Collection; - -public class TestReport { - - private final Long testSessionId; - private final Long testSuiteId; - private final long spanId; - private final Collection testReportFileEntries; - - public TestReport( - Long testSessionId, - Long testSuiteId, - long spanId, - Collection testReportFileEntries) { - this.testSessionId = testSessionId; - this.testSuiteId = testSuiteId; - this.spanId = spanId; - this.testReportFileEntries = testReportFileEntries; - } - - public Long getTestSessionId() { - return testSessionId; - } - - public Long getTestSuiteId() { - return testSuiteId; - } - - public long getSpanId() { - return spanId; - } - - public Collection getTestReportFileEntries() { - return testReportFileEntries; - } - - public boolean isNotEmpty() { - return !testReportFileEntries.isEmpty(); - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/coverage/TestReportFileEntry.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/coverage/TestReportFileEntry.java deleted file mode 100644 index a108054980..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/coverage/TestReportFileEntry.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.datadog.trace.api.civisibility.coverage; - -import java.util.Collection; -import java.util.List; -import java.util.stream.Collectors; - -public class TestReportFileEntry { - private final String sourceFileName; - private final List segments; - - public TestReportFileEntry(String sourceFileName, List segments) { - this.sourceFileName = sourceFileName; - this.segments = segments; - } - - public String getSourceFileName() { - return sourceFileName; - } - - public Collection getSegments() { - return segments; - } - - @Override - public String toString() { - return "TestReportFileEntry{" - + "sourceFileName='" - + sourceFileName - + "', lines=[" - + segments.stream().map(s -> String.valueOf(s.startLine)).collect(Collectors.joining(",")) - + "]}"; - } - - public static class Segment implements Comparable { - private final int startLine; - private final int startColumn; - private final int endLine; - private final int endColumn; - private final int numberOfExecutions; - - public Segment( - int startLine, int startColumn, int endLine, int endColumn, int numberOfExecutions) { - this.startLine = startLine; - this.startColumn = startColumn; - this.endLine = endLine; - this.endColumn = endColumn; - this.numberOfExecutions = numberOfExecutions; - } - - public int getStartLine() { - return startLine; - } - - public int getStartColumn() { - return startColumn; - } - - public int getEndLine() { - return endLine; - } - - public int getEndColumn() { - return endColumn; - } - - public int getNumberOfExecutions() { - return numberOfExecutions; - } - - @Override - public int compareTo(Segment segment) { - return startLine - segment.startLine; - } - - @Override - public String toString() { - return "Segment{" - + "startLine=" - + startLine - + ", startColumn=" - + startColumn - + ", endLine=" - + endLine - + ", endColumn=" - + endColumn - + ", numberOfExecutions=" - + numberOfExecutions - + '}'; - } - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/coverage/TestReportHolder.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/coverage/TestReportHolder.java deleted file mode 100644 index d9996d6f32..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/coverage/TestReportHolder.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.datadog.trace.api.civisibility.coverage; - -import androidx.annotation.Nullable; - -public interface TestReportHolder { - @Nullable - TestReport getReport(); -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/events/BuildEventsHandler.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/events/BuildEventsHandler.java deleted file mode 100644 index 67374c0f65..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/events/BuildEventsHandler.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.datadog.trace.api.civisibility.events; - -import androidx.annotation.Nullable; - -import com.datadog.trace.api.civisibility.config.ModuleExecutionSettings; - -import java.io.File; -import java.nio.file.Path; -import java.util.Collection; -import java.util.Map; - -public interface BuildEventsHandler { - void onTestSessionStart( - T sessionKey, - String projectName, - Path projectRoot, - String startCommand, - String buildSystemName, - String buildSystemVersion, - Map additionalTags); - - void onTestSessionFail(T sessionKey, Throwable throwable); - - void onTestSessionFinish(T sessionKey); - - ModuleInfo onTestModuleStart( - T sessionKey, - String moduleName, - Collection outputClassesDirs, - @Nullable Map additionalTags); - - void onTestModuleSkip(T sessionKey, String moduleName, String reason); - - void onTestModuleFail(T sessionKey, String moduleName, Throwable throwable); - - void onTestModuleFinish(T sessionKey, String moduleName); - - ModuleExecutionSettings getModuleExecutionSettings(T sessionKey, Path jvmExecutablePath); - - ModuleInfo getModuleInfo(T sessionKey, String moduleName); - - interface Factory { - BuildEventsHandler create(); - } - - final class ModuleInfo { - public final long moduleId; - public final long sessionId; - public final String signalServerHost; - public final int signalServerPort; - - public ModuleInfo( - long moduleId, long sessionId, String signalServerHost, int signalServerPort) { - this.moduleId = moduleId; - this.sessionId = sessionId; - this.signalServerHost = signalServerHost; - this.signalServerPort = signalServerPort; - } - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/events/TestEventsHandler.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/events/TestEventsHandler.java deleted file mode 100644 index 458f3878a5..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/events/TestEventsHandler.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.datadog.trace.api.civisibility.events; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import com.datadog.trace.api.civisibility.config.TestIdentifier; -import com.datadog.trace.api.civisibility.retry.TestRetryPolicy; - -import java.io.Closeable; -import java.lang.reflect.Method; -import java.util.Collection; - -public interface TestEventsHandler extends Closeable { - - void onTestSuiteStart( - String testSuiteName, - @Nullable String testFramework, - @Nullable String testFrameworkVersion, - @Nullable Class testClass, - @Nullable Collection categories, - boolean parallelized); - - void onTestSuiteFinish(String testSuiteName, @Nullable Class testClass); - - void onTestSuiteSkip(String testSuiteName, Class testClass, @Nullable String reason); - - void onTestSuiteFailure(String testSuiteName, Class testClass, @Nullable Throwable throwable); - - void onTestStart( - String testSuiteName, - String testName, - @Nullable Object testQualifier, - @Nullable String testFramework, - @Nullable String testFrameworkVersion, - @Nullable String testParameters, - @Nullable Collection categories, - @Nullable Class testClass, - @Nullable String testMethodName, - @Nullable Method testMethod); - - void onTestSkip( - String testSuiteName, - Class testClass, - String testName, - @Nullable Object testQualifier, - @Nullable String testParameters, - @Nullable String reason); - - void onTestFailure( - String testSuiteName, - Class testClass, - String testName, - @Nullable Object testQualifier, - @Nullable String testParameters, - @Nullable Throwable throwable); - - void onTestFinish( - String testSuiteName, - Class testClass, - String testName, - @Nullable Object testQualifier, - @Nullable String testParameters); - - void onTestIgnore( - String testSuiteName, - String testName, - @Nullable Object testQualifier, - @Nullable String testFramework, - @Nullable String testFrameworkVersion, - @Nullable String testParameters, - @Nullable Collection categories, - @Nullable Class testClass, - @Nullable String testMethodName, - @Nullable Method testMethod, - @Nullable String reason); - - boolean skip(TestIdentifier test); - - @NonNull - TestRetryPolicy retryPolicy(TestIdentifier test); - - @Override - void close(); - - interface Factory { - TestEventsHandler create(String component); - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/noop/NoOpDDTest.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/noop/NoOpDDTest.java deleted file mode 100644 index 08cab2c856..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/noop/NoOpDDTest.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.datadog.trace.api.civisibility.noop; - -import androidx.annotation.Nullable; - -import com.datadog.trace.api.civisibility.DDTest; - -public class NoOpDDTest implements DDTest { - static final DDTest INSTANCE = new NoOpDDTest(); - - @Override - public void setTag(String key, Object value) {} - - @Override - public void setErrorInfo(@Nullable Throwable error) {} - - @Override - public void setSkipReason(@Nullable String skipReason) {} - - @Override - public void end(@Nullable Long endTime) {} -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/noop/NoOpDDTestModule.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/noop/NoOpDDTestModule.java deleted file mode 100644 index 0c19eb453b..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/noop/NoOpDDTestModule.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.datadog.trace.api.civisibility.noop; - -import androidx.annotation.Nullable; - -import com.datadog.trace.api.civisibility.DDTestModule; -import com.datadog.trace.api.civisibility.DDTestSuite; - -public class NoOpDDTestModule implements DDTestModule { - static final DDTestModule INSTANCE = new NoOpDDTestModule(); - - @Override - public void setTag(String key, Object value) {} - - @Override - public void setErrorInfo(Throwable error) {} - - @Override - public void setSkipReason(String skipReason) {} - - @Override - public void end(@Nullable Long endTime) {} - - @Override - public DDTestSuite testSuiteStart( - String testSuiteName, - @Nullable Class testClass, - @Nullable Long startTime, - boolean parallelized) { - return NoOpDDTestSuite.INSTANCE; - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/noop/NoOpDDTestSession.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/noop/NoOpDDTestSession.java deleted file mode 100644 index e0e100ddb0..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/noop/NoOpDDTestSession.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.datadog.trace.api.civisibility.noop; - -import androidx.annotation.Nullable; - -import com.datadog.trace.api.civisibility.DDTestModule; -import com.datadog.trace.api.civisibility.DDTestSession; - -public class NoOpDDTestSession implements DDTestSession { - public static final DDTestSession INSTANCE = new NoOpDDTestSession(); - - @Override - public void setTag(String key, Object value) {} - - @Override - public void setErrorInfo(Throwable error) {} - - @Override - public void setSkipReason(String skipReason) {} - - @Override - public void end(@Nullable Long endTime) {} - - @Override - public DDTestModule testModuleStart(String moduleName, @Nullable Long startTime) { - return NoOpDDTestModule.INSTANCE; - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/noop/NoOpDDTestSuite.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/noop/NoOpDDTestSuite.java deleted file mode 100644 index dc994c757e..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/noop/NoOpDDTestSuite.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.datadog.trace.api.civisibility.noop; - -import androidx.annotation.Nullable; - -import com.datadog.trace.api.civisibility.DDTest; -import com.datadog.trace.api.civisibility.DDTestSuite; - -import java.lang.reflect.Method; - -public class NoOpDDTestSuite implements DDTestSuite { - static final DDTestSuite INSTANCE = new NoOpDDTestSuite(); - - @Override - public void setTag(String key, Object value) {} - - @Override - public void setErrorInfo(Throwable error) {} - - @Override - public void setSkipReason(String skipReason) {} - - @Override - public void end(@Nullable Long endTime) {} - - @Override - public DDTest testStart(String testName, @Nullable Method testMethod, @Nullable Long startTime) { - return NoOpDDTest.INSTANCE; - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/retry/TestRetryPolicy.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/retry/TestRetryPolicy.java deleted file mode 100644 index 32e2318050..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/civisibility/retry/TestRetryPolicy.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.datadog.trace.api.civisibility.retry; - -public interface TestRetryPolicy { - boolean retryPossible(); - - boolean retry(boolean successful); -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/config/AppSecConfig.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/config/AppSecConfig.java deleted file mode 100644 index f7253c855b..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/config/AppSecConfig.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.datadog.trace.api.config; - -/** Constant with names of configuration options for appsec. */ -public final class AppSecConfig { - - public static final String APPSEC_ENABLED = "appsec.enabled"; - public static final String APPSEC_REPORTING_INBAND = "appsec.reporting.inband"; - public static final String APPSEC_RULES_FILE = "appsec.rules"; - public static final String APPSEC_REPORT_TIMEOUT_SEC = "appsec.report.timeout"; - public static final String APPSEC_IP_ADDR_HEADER = "appsec.ipheader"; - public static final String APPSEC_TRACE_RATE_LIMIT = "appsec.trace.rate.limit"; - public static final String APPSEC_WAF_METRICS = "appsec.waf.metrics"; - public static final String APPSEC_WAF_TIMEOUT = "appsec.waf.timeout"; - public static final String APPSEC_OBFUSCATION_PARAMETER_KEY_REGEXP = - "appsec.obfuscation.parameter_key_regexp"; - public static final String APPSEC_OBFUSCATION_PARAMETER_VALUE_REGEXP = - "appsec.obfuscation.parameter_value_regexp"; - public static final String APPSEC_HTTP_BLOCKED_TEMPLATE_HTML = - "appsec.http.blocked.template.html"; - public static final String APPSEC_HTTP_BLOCKED_TEMPLATE_JSON = - "appsec.http.blocked.template.json"; - public static final String APPSEC_AUTOMATED_USER_EVENTS_TRACKING = - "appsec.automated-user-events-tracking"; - public static final String API_SECURITY_ENABLED = "experimental.api-security.enabled"; - public static final String API_SECURITY_REQUEST_SAMPLE_RATE = "api-security.request.sample.rate"; - - private AppSecConfig() {} -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/config/CiVisibilityConfig.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/config/CiVisibilityConfig.java deleted file mode 100644 index ddc2c31c22..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/config/CiVisibilityConfig.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.datadog.trace.api.config; - -/** Constant with names of configuration options for CI visibility. */ -public final class CiVisibilityConfig { - - public static final String CIVISIBILITY_ENABLED = "civisibility.enabled"; - public static final String CIVISIBILITY_TRACE_SANITATION_ENABLED = - "civisibility.trace.sanitation.enabled"; - public static final String CIVISIBILITY_AGENTLESS_ENABLED = "civisibility.agentless.enabled"; - public static final String CIVISIBILITY_AGENTLESS_URL = "civisibility.agentless.url"; - public static final String CIVISIBILITY_SOURCE_DATA_ENABLED = "civisibility.source.data.enabled"; - public static final String CIVISIBILITY_SOURCE_DATA_ROOT_CHECK_ENABLED = - "civisibility.source.data.root.check.enabled"; - public static final String CIVISIBILITY_SESSION_ID = "civisibility.session.id"; - public static final String CIVISIBILITY_MODULE_ID = "civisibility.module.id"; - public static final String CIVISIBILITY_BUILD_INSTRUMENTATION_ENABLED = - "civisibility.build.instrumentation.enabled"; - public static final String CIVISIBILITY_AGENT_JAR_URI = "civisibility.agent.jar.uri"; - public static final String CIVISIBILITY_AUTO_CONFIGURATION_ENABLED = - "civisibility.auto.configuration.enabled"; - public static final String CIVISIBILITY_ADDITIONAL_CHILD_PROCESS_JVM_ARGS = - "civisibility.additional.child.process.jvm.args"; - public static final String CIVISIBILITY_COMPILER_PLUGIN_AUTO_CONFIGURATION_ENABLED = - "civisibility.compiler.plugin.auto.configuration.enabled"; - public static final String CIVISIBILITY_COMPILER_PLUGIN_VERSION = - "civisibility.compiler.plugin.version"; - public static final String CIVISIBILITY_DEBUG_PORT = "civisibility.debug.port"; - public static final String CIVISIBILITY_GIT_UPLOAD_ENABLED = "civisibility.git.upload.enabled"; - public static final String CIVISIBILITY_GIT_UNSHALLOW_ENABLED = - "civisibility.git.unshallow.enabled"; - public static final String CIVISIBILITY_GIT_UNSHALLOW_DEFER = "civisibility.git.unshallow.defer"; - public static final String CIVISIBILITY_GIT_UPLOAD_TIMEOUT_MILLIS = - "civisibility.git.upload.timeout.millis"; - public static final String CIVISIBILITY_GIT_COMMAND_TIMEOUT_MILLIS = - "civisibility.git.command.timeout.millis"; - public static final String CIVISIBILITY_BACKEND_API_TIMEOUT_MILLIS = - "civisibility.backend.api.timeout.millis"; - public static final String CIVISIBILITY_GIT_REMOTE_NAME = "civisibility.git.remote.name"; - public static final String CIVISIBILITY_SIGNAL_SERVER_HOST = "civisibility.signal.server.host"; - public static final String CIVISIBILITY_SIGNAL_SERVER_PORT = "civisibility.signal.server.port"; - public static final String CIVISIBILITY_ITR_ENABLED = "civisibility.itr.enabled"; - public static final String CIVISIBILITY_CIPROVIDER_INTEGRATION_ENABLED = - "civisibility.ciprovider.integration.enabled"; - public static final String CIVISIBILITY_REPO_INDEX_SHARING_ENABLED = - "civisibility.repo.index.sharing.enabled"; - public static final String CIVISIBILITY_MODULE_EXECUTION_SETTINGS_CACHE_SIZE = - "civisibility.module.execution.settings.cache.size"; - public static final String CIVISIBILITY_JVM_INFO_CACHE_SIZE = "civisibility.jvm.info.cache.size"; - public static final String CIVISIBILITY_INJECTED_TRACER_VERSION = - "civisibility.injected.tracer.version"; - public static final String CIVISIBILITY_RESOURCE_FOLDER_NAMES = - "civisibility.resource.folder.names"; - public static final String CIVISIBILITY_FLAKY_RETRY_ENABLED = "civisibility.flaky.retry.enabled"; - public static final String CIVISIBILITY_FLAKY_RETRY_COUNT = "civisibility.flaky.retry.count"; - public static final String CIVISIBILITY_MODULE_NAME = "civisibility.module.name"; - - /* COVERAGE SETTINGS */ - public static final String CIVISIBILITY_CODE_COVERAGE_ENABLED = - "civisibility.code.coverage.enabled"; - public static final String CIVISIBILITY_CODE_COVERAGE_INCLUDES = - "civisibility.code.coverage.includes"; - public static final String CIVISIBILITY_CODE_COVERAGE_EXCLUDES = - "civisibility.code.coverage.excludes"; - public static final String CIVISIBILITY_CODE_COVERAGE_SEGMENTS_ENABLED = - "civisibility.code.coverage.segments.enabled"; - public static final String CIVISIBILITY_CODE_COVERAGE_ROOT_PACKAGES_LIMIT = - "civisibility.code.coverage.root.packages.limit"; - public static final String CIVISIBILITY_CODE_COVERAGE_PERCENTAGE_CALCULATION_ENABLED = - "civisibility.code.coverage.percentage.calculation.enabled"; - public static final String CIVISIBILITY_CODE_COVERAGE_REPORT_DUMP_DIR = - "civisibility.code.coverage.report.dump.dir"; - public static final String CIVISIBILITY_JACOCO_PLUGIN_VERSION = - "civisibility.jacoco.plugin.version"; - public static final String CIVISIBILITY_JACOCO_GRADLE_SOURCE_SETS = - "civisibility.jacoco.gradle.sourcesets"; - - private CiVisibilityConfig() {} -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/config/CwsConfig.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/config/CwsConfig.java deleted file mode 100644 index cb06cb54bc..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/config/CwsConfig.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.datadog.trace.api.config; - -public final class CwsConfig { - - public static final String CWS_ENABLED = "cws.enabled"; - - public static final String CWS_TLS_REFRESH = "cws.tls.refresh"; - - private CwsConfig() {} -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/config/DebuggerConfig.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/config/DebuggerConfig.java deleted file mode 100644 index 9ab0559ef5..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/config/DebuggerConfig.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.datadog.trace.api.config; - -public final class DebuggerConfig { - public static final String DEBUGGER_ENABLED = "dynamic.instrumentation.enabled"; - public static final String DEBUGGER_SNAPSHOT_URL = "dynamic.instrumentation.snapshot.url"; - public static final String DEBUGGER_PROBE_URL = "dynamic.instrumentation.probe.url"; - public static final String DEBUGGER_PROBE_FILE_LOCATION = "dynamic.instrumentation.probe.file"; - public static final String DEBUGGER_UPLOAD_TIMEOUT = "dynamic.instrumentation.upload.timeout"; - public static final String DEBUGGER_UPLOAD_FLUSH_INTERVAL = - "dynamic.instrumentation.upload.flush.interval"; - public static final String DEBUGGER_UPLOAD_BATCH_SIZE = - "dynamic.instrumentation.upload.batch.size"; - public static final String DEBUGGER_MAX_PAYLOAD_SIZE = "dynamic.instrumentation.max.payload.size"; - public static final String DEBUGGER_METRICS_ENABLED = "dynamic.instrumentation.metrics.enabled"; - public static final String DEBUGGER_CLASSFILE_DUMP_ENABLED = - "dynamic.instrumentation.classfile.dump.enabled"; - public static final String DEBUGGER_POLL_INTERVAL = "dynamic.instrumentation.poll.interval"; - public static final String DEBUGGER_DIAGNOSTICS_INTERVAL = - "dynamic.instrumentation.diagnostics.interval"; - public static final String DEBUGGER_VERIFY_BYTECODE = "dynamic.instrumentation.verify.bytecode"; - public static final String DEBUGGER_INSTRUMENT_THE_WORLD = - "dynamic.instrumentation.instrument.the.world"; - public static final String DEBUGGER_EXCLUDE_FILES = "dynamic.instrumentation.exclude.files"; - public static final String DEBUGGER_CAPTURE_TIMEOUT = "dynamic.instrumentation.capture.timeout"; - public static final String DEBUGGER_REDACTED_IDENTIFIERS = - "dynamic.instrumentation.redacted.identifiers"; - public static final String DEBUGGER_REDACTED_TYPES = "dynamic.instrumentation.redacted.types"; - public static final String DEBUGGER_SYMBOL_ENABLED = "symbol.database.upload.enabled"; - public static final String DEBUGGER_SYMBOL_FORCE_UPLOAD = "internal.force.symbol.database.upload"; - public static final String DEBUGGER_SYMBOL_INCLUDES = "symbol.database.includes"; - public static final String DEBUGGER_SYMBOL_FLUSH_THRESHOLD = "symbol.database.flush.threshold"; - - private DebuggerConfig() {} -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/config/IastConfig.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/config/IastConfig.java deleted file mode 100644 index 4b2e81c0f3..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/config/IastConfig.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.datadog.trace.api.config; - -/** Constant with names of configuration options for IAST. */ -public final class IastConfig { - - public static final String IAST_ENABLED = "iast.enabled"; - public static final String IAST_WEAK_HASH_ALGORITHMS = "iast.weak-hash.algorithms"; - public static final String IAST_WEAK_CIPHER_ALGORITHMS = "iast.weak-cipher.algorithms"; - public static final String IAST_DEBUG_ENABLED = "iast.debug.enabled"; - public static final String IAST_MAX_CONCURRENT_REQUESTS = "iast.max-concurrent-requests"; - public static final String IAST_VULNERABILITIES_PER_REQUEST = "iast.vulnerabilities-per-request"; - public static final String IAST_REQUEST_SAMPLING = "iast.request-sampling"; - public static final String IAST_DEDUPLICATION_ENABLED = "iast.deduplication.enabled"; - public static final String IAST_TELEMETRY_VERBOSITY = "iast.telemetry.verbosity"; - public static final String IAST_DETECTION_MODE = "iast.detection.mode"; - public static final String IAST_REDACTION_ENABLED = "iast.redaction.enabled"; - public static final String IAST_REDACTION_NAME_PATTERN = "iast.redaction.name.pattern"; - public static final String IAST_REDACTION_VALUE_PATTERN = "iast.redaction.value.pattern"; - public static final String IAST_STACKTRACE_LEAK_SUPPRESS = "iast.stacktrace-leak.suppress"; - public static final String IAST_MAX_RANGE_COUNT = "iast.max-range-count"; - - public static final String IAST_TRUNCATION_MAX_VALUE_LENGTH = "iast.truncation.max.value.length"; - - private IastConfig() {} -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/config/JmxFetchConfig.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/config/JmxFetchConfig.java deleted file mode 100644 index 4472531b9a..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/config/JmxFetchConfig.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.datadog.trace.api.config; - -/** - * These config options will only work with dd-java-agent, not with dd-trace-ot. - * - *

Configure via system properties, environment variables, or config properties file. See online - * documentation for details. - */ -public final class JmxFetchConfig { - public static final String JMX_TAGS = "trace.jmx.tags"; - public static final String JMX_FETCH_ENABLED = "jmxfetch.enabled"; - public static final String JMX_FETCH_START_DELAY = "jmxfetch.start-delay"; - public static final String JMX_FETCH_CONFIG_DIR = "jmxfetch.config.dir"; - public static final String JMX_FETCH_CONFIG = "jmxfetch.config"; - @Deprecated public static final String JMX_FETCH_METRICS_CONFIGS = "jmxfetch.metrics-configs"; - public static final String JMX_FETCH_CHECK_PERIOD = "jmxfetch.check-period"; - public static final String JMX_FETCH_INITIAL_REFRESH_BEANS_PERIOD = - "jmxfetch.initial-refresh-beans-period"; - public static final String JMX_FETCH_REFRESH_BEANS_PERIOD = "jmxfetch.refresh-beans-period"; - public static final String JMX_FETCH_STATSD_HOST = "jmxfetch.statsd.host"; - public static final String JMX_FETCH_STATSD_PORT = "jmxfetch.statsd.port"; - public static final String JMX_FETCH_MULTIPLE_RUNTIME_SERVICES_ENABLED = - "jmxfetch.multiple-runtime-services.enabled"; - public static final String JMX_FETCH_MULTIPLE_RUNTIME_SERVICES_LIMIT = - "jmxfetch.multiple-runtime-services.limit"; - - private JmxFetchConfig() {} -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/flare/TracerFlare.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/flare/TracerFlare.java deleted file mode 100644 index e53c3818bf..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/flare/TracerFlare.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.datadog.trace.api.flare; - -import static java.nio.charset.StandardCharsets.UTF_8; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; -import java.util.zip.ZipEntry; -import java.util.zip.ZipOutputStream; - -public final class TracerFlare { - - public interface Reporter { - default void prepareForFlare() {} - - void addReportToFlare(ZipOutputStream zip) throws IOException; - - default void cleanupAfterFlare() {} - } - - private static final Map, Reporter> reporters = new ConcurrentHashMap<>(); - - public static void prepareForFlare() { - for (Reporter reporter : reporters.values()) { - try { - reporter.prepareForFlare(); - } catch (Throwable ignore) { - } - } - } - - public static void addReportsToFlare(ZipOutputStream zip) throws IOException { - List errors = null; - - for (Reporter reporter : reporters.values()) { - try { - reporter.addReportToFlare(zip); - } catch (Throwable e) { - if (null == errors) { - errors = new ArrayList<>(); - } - errors.add(e); - } - } - - if (null != errors) { - zip.putNextEntry(new ZipEntry("flare_errors.txt")); - for (Throwable e : errors) { - zip.write(e.toString().getBytes(UTF_8)); - zip.write('\n'); - } - } - } - - public static void cleanupAfterFlare() { - for (Reporter reporter : reporters.values()) { - try { - reporter.cleanupAfterFlare(); - } catch (Throwable ignore) { - } - } - } - - public static void addReporter(Reporter reporter) { - reporters.put(reporter.getClass(), reporter); - } - - public static void addText(ZipOutputStream zip, String section, String text) throws IOException { - zip.putNextEntry(new ZipEntry(section)); - if (null != text) { - zip.write(text.getBytes(UTF_8)); - } - } - - public static void addBinary(ZipOutputStream zip, String section, byte[] bytes) - throws IOException { - zip.putNextEntry(new ZipEntry(section)); - if (null != bytes) { - zip.write(bytes); - } - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/http/StoredBodyFactories.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/http/StoredBodyFactories.java deleted file mode 100644 index 3dd40344e2..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/http/StoredBodyFactories.java +++ /dev/null @@ -1,125 +0,0 @@ -package com.datadog.trace.api.http; - -import static com.datadog.trace.api.gateway.Events.EVENTS; - -import com.datadog.trace.api.gateway.CallbackProvider; -import com.datadog.trace.api.gateway.Flow; -import com.datadog.trace.api.gateway.RequestContext; -import com.datadog.trace.api.gateway.RequestContextSlot; -import com.datadog.trace.bootstrap.instrumentation.api.AgentSpan; -import com.datadog.trace.bootstrap.instrumentation.api.AgentTracer; - -import java.nio.charset.Charset; -import java.util.function.BiFunction; -import java.util.function.Supplier; - -public class StoredBodyFactories { - private StoredBodyFactories() {} - - public static StoredByteBody maybeCreateForByte(Charset charset, Object contentLengthHeader) { - AgentSpan agentSpan = AgentTracer.activeSpan(); - if (agentSpan == null) { - return null; - } - return maybeCreateForByte(charset, agentSpan, contentLengthHeader); - } - - @SuppressWarnings("Duplicates") - public static StoredByteBody maybeCreateForByte( - Charset charset, AgentSpan agentSpan, Object contentLengthHeader) { - RequestContext requestContext = agentSpan.getRequestContext(); - if (requestContext == null) { - return null; - } - - CallbackProvider cbp = AgentTracer.get().getCallbackProvider(RequestContextSlot.APPSEC); - BiFunction requestStartCb = - cbp.getCallback(EVENTS.requestBodyStart()); - BiFunction> requestEndedCb = - cbp.getCallback(EVENTS.requestBodyDone()); - if (requestStartCb == null || requestEndedCb == null) { - return null; - } - - int lengthHint = parseLengthHeader(contentLengthHeader); - - return new StoredByteBody(requestContext, requestStartCb, requestEndedCb, charset, lengthHint); - } - - @SuppressWarnings("Duplicates") - public static Flow maybeDeliverBodyInOneGo( - Supplier supplier, RequestContext requestContext) { - CallbackProvider cbp = AgentTracer.get().getCallbackProvider(RequestContextSlot.APPSEC); - BiFunction requestStartCb = - cbp.getCallback(EVENTS.requestBodyStart()); - BiFunction> requestEndedCb = - cbp.getCallback(EVENTS.requestBodyDone()); - if (requestStartCb == null || requestEndedCb == null) { - return Flow.ResultFlow.empty(); - } - - StoredBodySupplier wrappedSupplier = new ConstantBodySupplier(supplier); - requestStartCb.apply(requestContext, wrappedSupplier); - return requestEndedCb.apply(requestContext, wrappedSupplier); - } - - public static Flow maybeDeliverBodyInOneGo(final String str, RequestContext reqCtx) { - return maybeDeliverBodyInOneGo(() -> str, reqCtx); - } - - public static class ConstantBodySupplier implements StoredBodySupplier { - private final CharSequence sequence; - - public ConstantBodySupplier(Supplier original) { - this.sequence = original.get(); - } - - @Override - public CharSequence get() { - return this.sequence; - } - } - - public static StoredCharBody maybeCreateForChar(Object contentLengthHeader) { - AgentSpan agentSpan = AgentTracer.activeSpan(); - if (agentSpan == null) { - return null; - } - return maybeCreateForChar(agentSpan, contentLengthHeader); - } - - @SuppressWarnings("Duplicates") - public static StoredCharBody maybeCreateForChar(AgentSpan agentSpan, Object contentLengthHeader) { - RequestContext requestContext = agentSpan.getRequestContext(); - if (requestContext == null) { - return null; - } - - CallbackProvider cbp = AgentTracer.get().getCallbackProvider(RequestContextSlot.APPSEC); - BiFunction requestStartCb = - cbp.getCallback(EVENTS.requestBodyStart()); - BiFunction> requestEndedCb = - cbp.getCallback(EVENTS.requestBodyDone()); - if (requestStartCb == null || requestEndedCb == null) { - return null; - } - - int lengthHint = parseLengthHeader(contentLengthHeader); - - return new StoredCharBody(requestContext, requestStartCb, requestEndedCb, lengthHint); - } - - private static int parseLengthHeader(Object contentLengthHeader) { - if (contentLengthHeader instanceof Number) { - return ((Number) contentLengthHeader).intValue(); - } - if (contentLengthHeader != null) { - try { - return Integer.parseInt(contentLengthHeader.toString()); - } catch (NumberFormatException nfe) { - // purposefully left blank - } - } - return 0; - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/http/StoredByteBody.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/http/StoredByteBody.java deleted file mode 100644 index e06a64b08a..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/http/StoredByteBody.java +++ /dev/null @@ -1,309 +0,0 @@ -package com.datadog.trace.api.http; - -import androidx.annotation.Nullable; - -import com.datadog.trace.api.gateway.Flow; -import com.datadog.trace.api.gateway.RequestContext; -import com.datadog.trace.logger.Logger; -import com.datadog.trace.logger.LoggerFactory; - -import java.lang.reflect.UndeclaredThrowableException; -import java.nio.ByteBuffer; -import java.nio.CharBuffer; -import java.nio.charset.CharacterCodingException; -import java.nio.charset.Charset; -import java.nio.charset.CharsetDecoder; -import java.nio.charset.CharsetEncoder; -import java.nio.charset.CoderResult; -import java.nio.charset.CodingErrorAction; -import java.nio.charset.StandardCharsets; -import java.util.function.BiFunction; - -/** @see StoredCharBody */ -public class StoredByteBody implements StoredBodySupplier { - - private static final Logger LOGGER = LoggerFactory.getLogger(StoredByteBody.class); - - static final Charset UTF_8 = StandardCharsets.UTF_8; - static final Charset ISO_8859_1 = StandardCharsets.ISO_8859_1; - - private final ByteBuffer undecodedData = ByteBuffer.allocate(64); - // decoded data has double the size to allow for the (unlikely) - // prospect that supplementary characters (2 chars) be encoded in 1 byte - private final CharBuffer decodedData = CharBuffer.allocate(128); - private CharsetDecoder charsetDecoder; - private StoredCharBody storedCharBody; - - public StoredByteBody( - RequestContext requestContext, - BiFunction startCb, - BiFunction> endCb, - @Nullable Charset charset, - int lengthHint) { - if (charset != null) { - this.charsetDecoder = ThreadLocalCoders.decoderFor(charset); - } - this.storedCharBody = new StoredCharBody(requestContext, startCb, endCb, lengthHint, this); - } - - public synchronized void appendData(byte[] bytes, int start, int end) { - try { - if (storedCharBody.isLimitReached()) { - return; - } - for (int i = start; i < end; ) { - if (!undecodedData.hasRemaining()) { - commit(false); - } - int write = Math.min(end - i, undecodedData.remaining()); - undecodedData.put(bytes, i, write); - i += write; - } - } catch (final Throwable e) { - LOGGER.debug("Failed to append byte array chunk", e); - } - storedCharBody.maybeNotifyStart(); - } - - /** - * Writes up to len bytes, in general through several invocations of the callback - * cb. The callback must write exactly undecodedData.remaining() bytes - * on each invocation. The limit of undecodedData passed to the callback will be - * adjusted in the last iteration, if necessary. - * - * @param cb the callback used to write directly into undecodedData - * @param len the amount of data available to write - */ - public synchronized void appendData(ByteBufferWriteCallback cb, int len) { - try { - for (int i = 0; i < len; ) { - if (storedCharBody.isLimitReached()) { - return; - } - if (!undecodedData.hasRemaining()) { - commit(false); - } - int left = len - i; - int remainingInUndecoded = undecodedData.remaining(); - if (remainingInUndecoded > left) { - undecodedData.limit(left); - i += left; - } else { - i += remainingInUndecoded; - } - cb.put(undecodedData); - } - undecodedData.limit(undecodedData.capacity()); - - } catch (final Throwable e) { - LOGGER.debug("Failed to append byte buffer callback", e); - } - storedCharBody.maybeNotifyStart(); - } - - public synchronized void appendData(int byteValue) { - try { - if (storedCharBody.isLimitReached()) { - return; - } - if (byteValue < 0 || byteValue > 255) { - return; - } - - if (!undecodedData.hasRemaining()) { - commit(false); - } - undecodedData.put((byte) byteValue); - } catch (final Throwable e) { - LOGGER.debug("Failed to append byte", e); - } - storedCharBody.maybeNotifyStart(); - } - - public synchronized void setCharset(Charset charset) { - this.charsetDecoder = ThreadLocalCoders.decoderFor(charset); - } - - public Flow maybeNotify() { - try { - commit(true); - } catch (final Throwable e) { - LOGGER.debug("Failed to commit end of input", e); - } - return storedCharBody.maybeNotify(); - } - - // may throw BlockingException. If used directly in advice, make use of @Advice.Throwable to - // propagate - public void maybeNotifyAndBlock() { - try { - commit(true); - } catch (final Throwable e) { - LOGGER.debug("Failed to commit end of input", e); - } - storedCharBody.maybeNotifyAndBlock(); - } - - @Override - public synchronized CharSequence get() { - commit(false); - return storedCharBody.get(); - } - - private void commit(boolean endOfInput) { - if (undecodedData.position() == 0) { - return; - } - if (charsetDecoder == null) { - charsetDecoder = - ThreadLocalCoders.decoderFor(UTF_8).onMalformedInput(CodingErrorAction.REPORT); - } - - this.undecodedData.flip(); - CoderResult decode = charsetDecoder.decode(this.undecodedData, this.decodedData, endOfInput); - if (endOfInput) { - /** - * Ensure the decoder is at a proper state in case the original input stream is reset, - * otherwise we will face: java.lang.IllegalStateException: Current state = CODING_END, new - * state = CODING - */ - charsetDecoder.reset(); - } - - this.decodedData.flip(); - this.storedCharBody.appendData(this.decodedData); - this.decodedData.position(0); - this.decodedData.limit(this.decodedData.capacity()); - - this.undecodedData.compact(); - - if (decode.isError()) { - // should only happen if charset was not explicitly given, - // as o/wise we use repl. chars - reencodeAsLatin1(); - this.charsetDecoder = ThreadLocalCoders.decoderFor(ISO_8859_1); - commit(endOfInput); - } - } - - private void reencodeAsLatin1() { - CharBuffer curData = this.storedCharBody.get(); - // reinterpreting the UTF-8 decoded sequence as latin1 will - // possibly result in a bigger result in terms of code points, - // so we need to make a copy - - CharsetEncoder encoder = ThreadLocalCoders.utf8Encoder(); - ByteBuffer utf8Encoded; - try { - utf8Encoded = encoder.encode(curData); - } catch (CharacterCodingException e) { - throw new UndeclaredThrowableException(e); // can't happen - } - - this.storedCharBody.dropData(); - - int limit = utf8Encoded.limit(); - for (int i = 0; i < limit; i++) { - // & to reverse the sign extension on the int promotion - this.storedCharBody.appendData(utf8Encoded.get(i) & 0xFF); - } - } - - public interface ByteBufferWriteCallback { - /** - * Asks the callback of {@link StoredByteBody#appendData(ByteBufferWriteCallback, int)} to write - * exactly undecodedData.remaining() bytes into the passed ByteBuffer. - * This amount of bytes will never be larger that the amount of data yet to be written; put - * another way, for one invocation of appendData(cb, n), the sum of the values of - * undecodedData.remaining() for the several cb calls will be n - * (or zero, if alternatively, cb is never invoked by appendData). - * - * @param undecodedData the buffer to write into - */ - void put(ByteBuffer undecodedData); - } -} - -// adapted from sun.nio.cs -class ThreadLocalCoders { - private static final int CACHE_SIZE = 3; - - private abstract static class Cache { - - // Thread-local reference to array of cached objects, in LRU order - private final ThreadLocal cache = new ThreadLocal<>(); - private final int size; - - Cache(int size) { - this.size = size; - } - - abstract Object create(Object name); - - private void moveToFront(Object[] oa, int i) { - Object ob = oa[i]; - for (int j = i; j > 0; j--) oa[j] = oa[j - 1]; - oa[0] = ob; - } - - abstract boolean hasName(Object ob, Object name); - - Object forName(Object name) { - Object[] oa = cache.get(); - if (oa == null) { - oa = new Object[size]; - cache.set(oa); - } else { - for (int i = 0; i < oa.length; i++) { - Object ob = oa[i]; - if (ob == null) continue; - if (hasName(ob, name)) { - if (i > 0) moveToFront(oa, i); - return ob; - } - } - } - - // Create a new object - Object ob = create(name); - oa[oa.length - 1] = ob; - moveToFront(oa, oa.length - 1); - return ob; - } - } - - private static final Cache DECODER_CACHE = - new Cache(CACHE_SIZE) { - boolean hasName(Object ob, Object name) { - return ((CharsetDecoder) ob).charset().equals(name); - } - - Object create(Object charset) { - return ((Charset) charset).newDecoder().onUnmappableCharacter(CodingErrorAction.REPLACE); - } - }; - - public static CharsetDecoder decoderFor(Charset charset) { - CharsetDecoder cd = (CharsetDecoder) DECODER_CACHE.forName(charset); - cd.onMalformedInput(CodingErrorAction.REPLACE); - cd.reset(); - return cd; - } - - private static final ThreadLocal UTF8_ENCODER_CACHE = - new ThreadLocal() { - @Override - protected CharsetEncoder initialValue() { - return StoredByteBody.UTF_8 - .newEncoder() - .onUnmappableCharacter(CodingErrorAction.REPLACE) - .onMalformedInput(CodingErrorAction.REPLACE); - } - }; - - public static CharsetEncoder utf8Encoder() { - CharsetEncoder charsetEncoder = UTF8_ENCODER_CACHE.get(); - charsetEncoder.reset(); - return charsetEncoder; - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/http/StoredCharBody.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/http/StoredCharBody.java deleted file mode 100644 index edff8fbabd..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/http/StoredCharBody.java +++ /dev/null @@ -1,208 +0,0 @@ -package com.datadog.trace.api.http; - -import com.datadog.trace.api.gateway.BlockResponseFunction; -import com.datadog.trace.api.gateway.Flow; -import com.datadog.trace.api.gateway.RequestContext; -import com.datadog.trace.appsec.api.blocking.BlockingException; -import com.datadog.trace.logger.Logger; -import com.datadog.trace.logger.LoggerFactory; - -import java.nio.CharBuffer; -import java.util.Arrays; -import java.util.function.BiFunction; - -/** Analogous to {@link StoredByteBody}, but Java doesn't support generics with scalar types. */ -public class StoredCharBody implements StoredBodySupplier { - - private static final Logger LOGGER = LoggerFactory.getLogger(StoredCharBody.class); - - private static final int MIN_BUFFER_SIZE = 128; // chars - private static final int MAX_BUFFER_SIZE = 128 * 1024; // 256k (char == 2 bytes) - private static final int GROW_FACTOR = 4; - private static final CharBuffer EMPTY_CHAR_BUFFER = CharBuffer.allocate(0); - - private final RequestContext httpContext; - private final BiFunction startCb; - private final BiFunction> endCb; - private final StoredBodySupplier supplierInNotifications; - - private boolean listenerNotified; - - private char[] storedBody; - private int storedBodyLen; - private boolean bodyReadStarted = false; - - public StoredCharBody( - RequestContext httpContext, - BiFunction startCb, - BiFunction> endCb, - int lengthHint) { - this(httpContext, startCb, endCb, lengthHint, null); - } - - StoredCharBody( - RequestContext httpContext, - BiFunction startCb, - BiFunction> endCb, - int lengthHint, - StoredBodySupplier supplierInNotifications) { - this.httpContext = httpContext; - this.startCb = startCb; - this.endCb = endCb; - - if (lengthHint != 0) { - int initialSize = Math.max(MIN_BUFFER_SIZE, Math.min(lengthHint, MAX_BUFFER_SIZE)); - this.storedBody = new char[initialSize]; - } - - this.supplierInNotifications = supplierInNotifications != null ? supplierInNotifications : this; - } - - public synchronized void appendData(char[] chars, int start, int end) { - try { - int newDataLen = end - start; - if (newDataLen <= 0) { - return; - } - if (!maybeExtendStorage(newDataLen)) { - return; - } - - int lenToCopy = Math.min(newDataLen, capacityLeft()); - System.arraycopy(chars, start, this.storedBody, this.storedBodyLen, lenToCopy); - - this.storedBodyLen += lenToCopy; - } catch (final Throwable e) { - LOGGER.debug("Error appending char array chunk", e); - } - maybeNotifyStart(); - } - - public synchronized void appendData(CharBuffer buffer) { - try { - int inputLen = buffer.remaining(); - if (inputLen == 0) { - return; - } - if (!maybeExtendStorage(inputLen)) { - return; - } - int lenToCopy = Math.min(inputLen, capacityLeft()); - - buffer.get(this.storedBody, this.storedBodyLen, lenToCopy); - this.storedBodyLen += lenToCopy; - } catch (final Throwable e) { - LOGGER.debug("Error appending char buffer", e); - } - maybeNotifyStart(); - } - - private boolean maybeExtendStorage(int newDataLen) { - if (this.storedBody == null) { - int initialSize = Math.max(Math.min(newDataLen, MAX_BUFFER_SIZE), MIN_BUFFER_SIZE); - this.storedBody = new char[initialSize]; - } else if (this.storedBodyLen == MAX_BUFFER_SIZE) { - return false; - } else if (capacityLeft() < newDataLen) { - int newSize = - Math.min( - Math.max(this.storedBodyLen + newDataLen, this.storedBodyLen * GROW_FACTOR), - MAX_BUFFER_SIZE); - this.storedBody = Arrays.copyOf(this.storedBody, newSize); - } - return true; - } - - public synchronized void appendData(String s) { - try { - int newDataLen = s.length(); - if (!maybeExtendStorage(newDataLen)) { - return; - } - - int lenToCopy = Math.min(newDataLen, capacityLeft()); - s.getChars(0, lenToCopy, this.storedBody, this.storedBodyLen); - - this.storedBodyLen += lenToCopy; - - } catch (final Throwable e) { - LOGGER.debug("Error appending string", e); - } - maybeNotifyStart(); - } - - private int capacityLeft() { - return this.storedBody.length - this.storedBodyLen; - } - - /** @param utf16CodeUnit an int in the range 0-0xFFFF */ - public synchronized void appendData(int utf16CodeUnit) { - try { - if (utf16CodeUnit < 0) { - return; - } - if (!maybeExtendStorage(1)) { - return; - } - this.storedBody[this.storedBodyLen] = (char) utf16CodeUnit; - this.storedBodyLen += 1; - - } catch (final Throwable e) { - LOGGER.debug("Error appending code unit", e); - } - maybeNotifyStart(); - } - - void maybeNotifyStart() { - if (!bodyReadStarted) { - bodyReadStarted = true; - this.startCb.apply(httpContext, supplierInNotifications); - } - } - - public synchronized Flow maybeNotify() { - if (!listenerNotified) { - listenerNotified = true; - if (!bodyReadStarted) { - this.startCb.apply(httpContext, supplierInNotifications); - } - return this.endCb.apply(httpContext, supplierInNotifications); - } - return Flow.ResultFlow.empty(); - } - - public synchronized void maybeNotifyAndBlock() { - Flow flow = maybeNotify(); - Flow.Action action = flow.getAction(); - if (action instanceof Flow.Action.RequestBlockingAction) { - Flow.Action.RequestBlockingAction rba = (Flow.Action.RequestBlockingAction) action; - - BlockResponseFunction blockResponseFunction = httpContext.getBlockResponseFunction(); - if (blockResponseFunction != null) { - blockResponseFunction.tryCommitBlockingResponse( - httpContext.getTraceSegment(), - rba.getStatusCode(), - rba.getBlockingContentType(), - rba.getExtraHeaders()); - } - throw new BlockingException("Blocked request (for request body stream read)"); - } - } - - @Override - public synchronized CharBuffer get() { - if (this.storedBodyLen == 0) { - return EMPTY_CHAR_BUFFER; - } - return CharBuffer.wrap(this.storedBody, 0, this.storedBodyLen); - } - - synchronized boolean isLimitReached() { - return this.storedBodyLen == MAX_BUFFER_SIZE; - } - - // for StoredByteBody's reencodeAsLatin1 - synchronized void dropData() { - this.storedBodyLen = 0; - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/IastCallSites.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/IastCallSites.java deleted file mode 100644 index 47ca91092f..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/IastCallSites.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.datadog.trace.api.iast; - -import com.datadog.trace.api.iast.telemetry.Verbosity; - -/** - * Interface used to mark advice implementations using @CallSite so they are instrumented by - * IastInstrumentation - */ -public interface IastCallSites { - - interface HasTelemetry { - void setVerbosity(Verbosity verbosity); - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/IastContext.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/IastContext.java deleted file mode 100644 index 26cc0806af..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/IastContext.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.datadog.trace.api.iast; - -import androidx.annotation.Nullable; - -import com.datadog.trace.api.gateway.RequestContext; -import com.datadog.trace.api.gateway.RequestContextSlot; -import com.datadog.trace.bootstrap.instrumentation.api.AgentSpan; -import com.datadog.trace.bootstrap.instrumentation.api.AgentTracer; - -/** - * Initial encapsulation of the IAST context to be able to isolate it from the request. Ideally we - * should move away from IastRequestContext and start using this interface as much as possible - */ -public interface IastContext { - - /** - * Some scala instrumentations failed with public static methods inside an interface, that's the - * reason behind an inner class. - */ - abstract class Provider { - - private Provider() {} - - @Nullable - public static IastContext get() { - return get(AgentTracer.activeSpan()); - } - - @Nullable - public static IastContext get(final AgentSpan span) { - if (span == null) { - return null; - } - return get(span.getRequestContext()); - } - - @Nullable - public static IastContext get(final RequestContext reqCtx) { - if (reqCtx == null) { - return null; - } - return reqCtx.getData(RequestContextSlot.IAST); - } - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/IastDetectionMode.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/IastDetectionMode.java deleted file mode 100644 index cbe1cd9679..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/IastDetectionMode.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.datadog.trace.api.iast; - -import static com.datadog.trace.api.ConfigDefaults.DEFAULT_IAST_DEDUPLICATION_ENABLED; -import static com.datadog.trace.api.ConfigDefaults.DEFAULT_IAST_MAX_CONCURRENT_REQUESTS; -import static com.datadog.trace.api.ConfigDefaults.DEFAULT_IAST_MAX_RANGE_COUNT; -import static com.datadog.trace.api.ConfigDefaults.DEFAULT_IAST_REQUEST_SAMPLING; -import static com.datadog.trace.api.ConfigDefaults.DEFAULT_IAST_VULNERABILITIES_PER_REQUEST; -import static com.datadog.trace.api.config.IastConfig.IAST_DEDUPLICATION_ENABLED; -import static com.datadog.trace.api.config.IastConfig.IAST_MAX_CONCURRENT_REQUESTS; -import static com.datadog.trace.api.config.IastConfig.IAST_MAX_RANGE_COUNT; -import static com.datadog.trace.api.config.IastConfig.IAST_REQUEST_SAMPLING; -import static com.datadog.trace.api.config.IastConfig.IAST_VULNERABILITIES_PER_REQUEST; - -import androidx.annotation.NonNull; - -import com.datadog.trace.bootstrap.config.provider.ConfigProvider; - -public enum IastDetectionMode { - FULL { - @Override - public int getIastMaxConcurrentRequests(@NonNull final ConfigProvider config) { - return UNLIMITED; - } - - @Override - public int getIastVulnerabilitiesPerRequest(@NonNull final ConfigProvider config) { - return UNLIMITED; - } - - @Override - public float getIastRequestSampling(@NonNull final ConfigProvider config) { - return 100; - } - - @Override - public boolean isIastDeduplicationEnabled(@NonNull final ConfigProvider config) { - return false; - } - - @Override - public int getIastMaxRangeCount(@NonNull final ConfigProvider config) { - return Integer.MAX_VALUE; - } - }, - - DEFAULT { - @Override - public int getIastMaxConcurrentRequests(@NonNull final ConfigProvider config) { - return config.getInteger(IAST_MAX_CONCURRENT_REQUESTS, DEFAULT_IAST_MAX_CONCURRENT_REQUESTS); - } - - @Override - public int getIastVulnerabilitiesPerRequest(@NonNull final ConfigProvider config) { - return config.getInteger( - IAST_VULNERABILITIES_PER_REQUEST, DEFAULT_IAST_VULNERABILITIES_PER_REQUEST); - } - - @Override - public float getIastRequestSampling(@NonNull final ConfigProvider config) { - return config.getFloat(IAST_REQUEST_SAMPLING, DEFAULT_IAST_REQUEST_SAMPLING); - } - - @Override - public boolean isIastDeduplicationEnabled(@NonNull final ConfigProvider config) { - return config.getBoolean(IAST_DEDUPLICATION_ENABLED, DEFAULT_IAST_DEDUPLICATION_ENABLED); - } - - @Override - public int getIastMaxRangeCount(@NonNull final ConfigProvider config) { - return config.getInteger(IAST_MAX_RANGE_COUNT, DEFAULT_IAST_MAX_RANGE_COUNT); - } - }; - - public static final int UNLIMITED = Integer.MIN_VALUE; - - public abstract int getIastMaxConcurrentRequests(@NonNull ConfigProvider config); - - public abstract int getIastVulnerabilitiesPerRequest(@NonNull ConfigProvider config); - - public abstract float getIastRequestSampling(@NonNull ConfigProvider config); - - public abstract boolean isIastDeduplicationEnabled(@NonNull ConfigProvider config); - - public abstract int getIastMaxRangeCount(@NonNull ConfigProvider config); -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/IastEnabledChecks.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/IastEnabledChecks.java deleted file mode 100644 index 8703fcc98b..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/IastEnabledChecks.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.datadog.trace.api.iast; - -import com.datadog.trace.api.Platform; -import com.datadog.trace.logger.Logger; -import com.datadog.trace.logger.LoggerFactory; - -public abstract class IastEnabledChecks { - - private static final Logger LOGGER = LoggerFactory.getLogger(IastEnabledChecks.class); - - private IastEnabledChecks() {} - - public static boolean isMajorJavaVersionAtLeast(final String version) { - try { - return Platform.isJavaVersionAtLeast(Integer.parseInt(version)); - } catch (final Exception e) { - LOGGER.error( - "Error checking major java version {}, expect some call sites to be disabled", - version, - e); - return false; - } - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/IastModule.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/IastModule.java deleted file mode 100644 index 601cd9350c..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/IastModule.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.datadog.trace.api.iast; - -import com.datadog.trace.logger.Logger; -import com.datadog.trace.logger.LoggerFactory; - -public interface IastModule { - - Logger LOG = LoggerFactory.getLogger(IastModule.class); - - default void onUnexpectedException(final String message, final Throwable error) { - LOG.warn(message, error); - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/InstrumentationBridge.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/InstrumentationBridge.java deleted file mode 100644 index 1cb363550c..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/InstrumentationBridge.java +++ /dev/null @@ -1,224 +0,0 @@ -package com.datadog.trace.api.iast; - -import com.datadog.trace.api.iast.propagation.CodecModule; -import com.datadog.trace.api.iast.propagation.PropagationModule; -import com.datadog.trace.api.iast.propagation.StringModule; -import com.datadog.trace.api.iast.sink.ApplicationModule; -import com.datadog.trace.api.iast.sink.CommandInjectionModule; -import com.datadog.trace.api.iast.sink.HeaderInjectionModule; -import com.datadog.trace.api.iast.sink.HstsMissingHeaderModule; -import com.datadog.trace.api.iast.sink.HttpResponseHeaderModule; -import com.datadog.trace.api.iast.sink.InsecureCookieModule; -import com.datadog.trace.api.iast.sink.LdapInjectionModule; -import com.datadog.trace.api.iast.sink.NoHttpOnlyCookieModule; -import com.datadog.trace.api.iast.sink.NoSameSiteCookieModule; -import com.datadog.trace.api.iast.sink.PathTraversalModule; -import com.datadog.trace.api.iast.sink.SqlInjectionModule; -import com.datadog.trace.api.iast.sink.SsrfModule; -import com.datadog.trace.api.iast.sink.StacktraceLeakModule; -import com.datadog.trace.api.iast.sink.TrustBoundaryViolationModule; -import com.datadog.trace.api.iast.sink.UnvalidatedRedirectModule; -import com.datadog.trace.api.iast.sink.WeakCipherModule; -import com.datadog.trace.api.iast.sink.WeakHashModule; -import com.datadog.trace.api.iast.sink.WeakRandomnessModule; -import com.datadog.trace.api.iast.sink.XContentTypeModule; -import com.datadog.trace.api.iast.sink.XPathInjectionModule; -import com.datadog.trace.api.iast.sink.XssModule; - -/** Bridge between instrumentations and {@link IastModule} instances. */ -public abstract class InstrumentationBridge { - - public static volatile StringModule STRING; - public static volatile CodecModule CODEC; - public static volatile SqlInjectionModule SQL_INJECTION; - public static volatile PathTraversalModule PATH_TRAVERSAL; - public static volatile CommandInjectionModule COMMAND_INJECTION; - public static volatile WeakCipherModule WEAK_CIPHER; - public static volatile WeakHashModule WEAK_HASH; - public static volatile LdapInjectionModule LDAP_INJECTION; - public static volatile PropagationModule PROPAGATION; - public static volatile InsecureCookieModule INSECURE_COOKIE; - public static volatile NoHttpOnlyCookieModule NO_HTTPONLY_COOKIE; - public static volatile NoSameSiteCookieModule NO_SAMESITE_COOKIE; - public static volatile SsrfModule SSRF; - public static volatile UnvalidatedRedirectModule UNVALIDATED_REDIRECT; - public static volatile WeakRandomnessModule WEAK_RANDOMNESS; - public static volatile HttpResponseHeaderModule RESPONSE_HEADER_MODULE; - public static volatile HstsMissingHeaderModule HSTS_MISSING_HEADER_MODULE; - - public static volatile XContentTypeModule X_CONTENT_TYPE_HEADER_MODULE; - - public static volatile TrustBoundaryViolationModule TRUST_BOUNDARY_VIOLATION; - - public static volatile XPathInjectionModule XPATH_INJECTION; - - public static volatile XssModule XSS; - - public static volatile StacktraceLeakModule STACKTRACE_LEAK_MODULE; - - public static volatile ApplicationModule APPLICATION; - - public static volatile HeaderInjectionModule HEADER_INJECTION; - - private InstrumentationBridge() {} - - public static void registerIastModule(final IastModule module) { - if (module instanceof StringModule) { - STRING = (StringModule) module; - } else if (module instanceof CodecModule) { - CODEC = (CodecModule) module; - } else if (module instanceof SqlInjectionModule) { - SQL_INJECTION = (SqlInjectionModule) module; - } else if (module instanceof PathTraversalModule) { - PATH_TRAVERSAL = (PathTraversalModule) module; - } else if (module instanceof CommandInjectionModule) { - COMMAND_INJECTION = (CommandInjectionModule) module; - } else if (module instanceof WeakCipherModule) { - WEAK_CIPHER = (WeakCipherModule) module; - } else if (module instanceof WeakHashModule) { - WEAK_HASH = (WeakHashModule) module; - } else if (module instanceof LdapInjectionModule) { - LDAP_INJECTION = (LdapInjectionModule) module; - } else if (module instanceof PropagationModule) { - PROPAGATION = (PropagationModule) module; - } else if (module instanceof InsecureCookieModule) { - INSECURE_COOKIE = (InsecureCookieModule) module; - } else if (module instanceof NoHttpOnlyCookieModule) { - NO_HTTPONLY_COOKIE = (NoHttpOnlyCookieModule) module; - } else if (module instanceof NoSameSiteCookieModule) { - NO_SAMESITE_COOKIE = (NoSameSiteCookieModule) module; - } else if (module instanceof SsrfModule) { - SSRF = (SsrfModule) module; - } else if (module instanceof UnvalidatedRedirectModule) { - UNVALIDATED_REDIRECT = (UnvalidatedRedirectModule) module; - } else if (module instanceof WeakRandomnessModule) { - WEAK_RANDOMNESS = (WeakRandomnessModule) module; - } else if (module instanceof HttpResponseHeaderModule) { - RESPONSE_HEADER_MODULE = (HttpResponseHeaderModule) module; - } else if (module instanceof HstsMissingHeaderModule) { - HSTS_MISSING_HEADER_MODULE = (HstsMissingHeaderModule) module; - } else if (module instanceof XContentTypeModule) { - X_CONTENT_TYPE_HEADER_MODULE = (XContentTypeModule) module; - } else if (module instanceof XPathInjectionModule) { - XPATH_INJECTION = (XPathInjectionModule) module; - } else if (module instanceof TrustBoundaryViolationModule) { - TRUST_BOUNDARY_VIOLATION = (TrustBoundaryViolationModule) module; - } else if (module instanceof XssModule) { - XSS = (XssModule) module; - } else if (module instanceof StacktraceLeakModule) { - STACKTRACE_LEAK_MODULE = (StacktraceLeakModule) module; - } else if (module instanceof HeaderInjectionModule) { - HEADER_INJECTION = (HeaderInjectionModule) module; - } else if (module instanceof ApplicationModule) { - APPLICATION = (ApplicationModule) module; - } else { - throw new UnsupportedOperationException("Module not yet supported: " + module); - } - } - - /** Mainly used for testing modules */ - @SuppressWarnings("unchecked") - public static E getIastModule(final Class type) { - if (type == StringModule.class) { - return (E) STRING; - } - if (type == CodecModule.class) { - return (E) CODEC; - } - if (type == SqlInjectionModule.class) { - return (E) SQL_INJECTION; - } - if (type == PathTraversalModule.class) { - return (E) PATH_TRAVERSAL; - } - if (type == CommandInjectionModule.class) { - return (E) COMMAND_INJECTION; - } - if (type == WeakCipherModule.class) { - return (E) WEAK_CIPHER; - } - if (type == WeakHashModule.class) { - return (E) WEAK_HASH; - } - if (type == LdapInjectionModule.class) { - return (E) LDAP_INJECTION; - } - if (type == PropagationModule.class) { - return (E) PROPAGATION; - } - if (type == InsecureCookieModule.class) { - return (E) INSECURE_COOKIE; - } - if (type == NoHttpOnlyCookieModule.class) { - return (E) NO_HTTPONLY_COOKIE; - } - if (type == NoSameSiteCookieModule.class) { - return (E) NO_SAMESITE_COOKIE; - } - if (type == SsrfModule.class) { - return (E) SSRF; - } - if (type == UnvalidatedRedirectModule.class) { - return (E) UNVALIDATED_REDIRECT; - } - if (type == WeakRandomnessModule.class) { - return (E) WEAK_RANDOMNESS; - } - if (type == XPathInjectionModule.class) { - return (E) XPATH_INJECTION; - } - if (type == HttpResponseHeaderModule.class) { - return (E) RESPONSE_HEADER_MODULE; - } - if (type == HstsMissingHeaderModule.class) { - return (E) HSTS_MISSING_HEADER_MODULE; - } - if (type == XContentTypeModule.class) { - return (E) X_CONTENT_TYPE_HEADER_MODULE; - } - if (type == TrustBoundaryViolationModule.class) { - return (E) TRUST_BOUNDARY_VIOLATION; - } - if (type == XssModule.class) { - return (E) XSS; - } - if (type == StacktraceLeakModule.class) { - return (E) STACKTRACE_LEAK_MODULE; - } - if (type == ApplicationModule.class) { - return (E) APPLICATION; - } - if (type == HeaderInjectionModule.class) { - return (E) HEADER_INJECTION; - } - throw new UnsupportedOperationException("Module not yet supported: " + type); - } - - /** Mainly used for testing empty modules */ - public static void clearIastModules() { - STRING = null; - CODEC = null; - SQL_INJECTION = null; - PATH_TRAVERSAL = null; - COMMAND_INJECTION = null; - WEAK_CIPHER = null; - WEAK_HASH = null; - LDAP_INJECTION = null; - PROPAGATION = null; - INSECURE_COOKIE = null; - NO_HTTPONLY_COOKIE = null; - NO_SAMESITE_COOKIE = null; - SSRF = null; - UNVALIDATED_REDIRECT = null; - WEAK_RANDOMNESS = null; - RESPONSE_HEADER_MODULE = null; - HSTS_MISSING_HEADER_MODULE = null; - X_CONTENT_TYPE_HEADER_MODULE = null; - XPATH_INJECTION = null; - TRUST_BOUNDARY_VIOLATION = null; - XSS = null; - STACKTRACE_LEAK_MODULE = null; - APPLICATION = null; - HEADER_INJECTION = null; - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/Propagation.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/Propagation.java deleted file mode 100644 index 4fc935971a..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/Propagation.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.datadog.trace.api.iast; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -@Target({ElementType.METHOD, ElementType.TYPE}) -@Retention(RetentionPolicy.RUNTIME) -public @interface Propagation {} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/Sink.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/Sink.java deleted file mode 100644 index a40d8bf63f..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/Sink.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.datadog.trace.api.iast; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -@Target({ElementType.METHOD, ElementType.TYPE}) -@Retention(RetentionPolicy.RUNTIME) -public @interface Sink { - /** Vulnerability type */ - byte value(); -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/Source.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/Source.java deleted file mode 100644 index 7015f10fa5..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/Source.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.datadog.trace.api.iast; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -@Target({ElementType.METHOD, ElementType.TYPE}) -@Retention(RetentionPolicy.RUNTIME) -public @interface Source { - /** Source type */ - byte value(); -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/SourceTypes.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/SourceTypes.java deleted file mode 100644 index 6b782220b9..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/SourceTypes.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.datadog.trace.api.iast; - -public abstract class SourceTypes { - - private SourceTypes() {} - - public static final byte NONE = -1; - - public static final byte REQUEST_PARAMETER_NAME = 0; - public static final String REQUEST_PARAMETER_NAME_STRING = "http.request.parameter.name"; - public static final byte REQUEST_PARAMETER_VALUE = 1; - public static final String REQUEST_PARAMETER_VALUE_STRING = "http.request.parameter"; - public static final byte REQUEST_HEADER_NAME = 2; - public static final String REQUEST_HEADER_NAME_STRING = "http.request.header.name"; - public static final byte REQUEST_HEADER_VALUE = 3; - public static final String REQUEST_HEADER_VALUE_STRING = "http.request.header"; - public static final byte REQUEST_COOKIE_NAME = 4; - public static final String REQUEST_COOKIE_NAME_STRING = "http.request.cookie.name"; - public static final byte REQUEST_COOKIE_VALUE = 5; - public static final String REQUEST_COOKIE_VALUE_STRING = "http.request.cookie.value"; - public static final byte REQUEST_BODY = 6; - public static final String REQUEST_BODY_STRING = "http.request.body"; - public static final byte REQUEST_QUERY = 7; - public static final String REQUEST_QUERY_STRING = "http.request.query"; - public static final byte REQUEST_PATH_PARAMETER = 8; - public static final String REQUEST_PATH_PARAMETER_STRING = "http.request.path.parameter"; - public static final byte REQUEST_MATRIX_PARAMETER = 9; - public static final String REQUEST_MATRIX_PARAMETER_STRING = "http.request.matrix.parameter"; - public static final byte REQUEST_MULTIPART_PARAMETER = 10; - public static final String REQUEST_MULTIPART_PARAMETER_STRING = - "http.request.multipart.parameter"; - public static final byte REQUEST_URI = 11; - public static final String REQUEST_URI_STRING = "http.request.uri"; - public static final byte REQUEST_PATH = 12; - public static final String REQUEST_PATH_STRING = "http.request.path"; - public static final byte GRPC_BODY = 13; - public static final String GRPC_BODY_STRING = "grpc.request.body"; - - private static final byte[] VALUES = { - REQUEST_PARAMETER_NAME, - REQUEST_PARAMETER_VALUE, - REQUEST_HEADER_NAME, - REQUEST_HEADER_VALUE, - REQUEST_COOKIE_NAME, - REQUEST_COOKIE_VALUE, - REQUEST_BODY, - REQUEST_QUERY, - REQUEST_PATH_PARAMETER, - REQUEST_MATRIX_PARAMETER, - REQUEST_MULTIPART_PARAMETER, - REQUEST_PATH, - REQUEST_URI, - GRPC_BODY - }; - - public static byte[] values() { - return VALUES; - } - - public static String toString(final byte sourceType) { - switch (sourceType) { - case SourceTypes.REQUEST_PARAMETER_NAME: - return SourceTypes.REQUEST_PARAMETER_NAME_STRING; - case SourceTypes.REQUEST_PARAMETER_VALUE: - return SourceTypes.REQUEST_PARAMETER_VALUE_STRING; - case SourceTypes.REQUEST_HEADER_NAME: - return SourceTypes.REQUEST_HEADER_NAME_STRING; - case SourceTypes.REQUEST_HEADER_VALUE: - return SourceTypes.REQUEST_HEADER_VALUE_STRING; - case SourceTypes.REQUEST_COOKIE_NAME: - return SourceTypes.REQUEST_COOKIE_NAME_STRING; - case SourceTypes.REQUEST_COOKIE_VALUE: - return SourceTypes.REQUEST_COOKIE_VALUE_STRING; - case SourceTypes.REQUEST_BODY: - return SourceTypes.REQUEST_BODY_STRING; - case SourceTypes.REQUEST_QUERY: - return SourceTypes.REQUEST_QUERY_STRING; - case SourceTypes.REQUEST_PATH_PARAMETER: - return SourceTypes.REQUEST_PATH_PARAMETER_STRING; - case SourceTypes.REQUEST_MATRIX_PARAMETER: - return SourceTypes.REQUEST_MATRIX_PARAMETER_STRING; - case SourceTypes.REQUEST_MULTIPART_PARAMETER: - return SourceTypes.REQUEST_MULTIPART_PARAMETER_STRING; - case SourceTypes.REQUEST_PATH: - return SourceTypes.REQUEST_PATH_STRING; - case SourceTypes.REQUEST_URI: - return SourceTypes.REQUEST_URI_STRING; - case SourceTypes.GRPC_BODY: - return SourceTypes.GRPC_BODY_STRING; - default: - return null; - } - } - - public static byte namedSource(final byte sourceType) { - switch (sourceType) { - case SourceTypes.REQUEST_PARAMETER_VALUE: - case SourceTypes.REQUEST_PARAMETER_NAME: - return SourceTypes.REQUEST_PARAMETER_NAME; - case SourceTypes.REQUEST_HEADER_VALUE: - case SourceTypes.REQUEST_HEADER_NAME: - return SourceTypes.REQUEST_HEADER_NAME; - case SourceTypes.REQUEST_COOKIE_VALUE: - case SourceTypes.REQUEST_COOKIE_NAME: - return SourceTypes.REQUEST_COOKIE_NAME; - default: - return sourceType; - } - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/Taintable.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/Taintable.java deleted file mode 100644 index e4517b6778..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/Taintable.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.datadog.trace.api.iast; - -import com.datadog.trace.logger.Logger; -import com.datadog.trace.logger.LoggerFactory; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; - -public interface Taintable { - - Source $$DD$getSource(); - - void $$DD$setSource(final Source source); - - default boolean $DD$isTainted() { - return $$DD$getSource() != null; - } - - /** Interface to isolate customer classloader from our classes */ - interface Source { - byte getOrigin(); - - String getName(); - - String getValue(); - } - - class DebugLogger { - private static final Logger LOGGER; - - static { - try { - LOGGER = LoggerFactory.getLogger("Taintable tainted objects"); - Class levelCls = Class.forName("ch.qos.logback.classic.Level"); - Method setLevel = LOGGER.getClass().getMethod("setLevel", levelCls); - Object debugLevel = levelCls.getField("DEBUG").get(null); - setLevel.invoke(LOGGER, debugLevel); - } catch (IllegalAccessException - | NoSuchFieldException - | ClassNotFoundException - | NoSuchMethodException - | InvocationTargetException e) { - throw new RuntimeException(e); - } - } - - public static void logTaint(Taintable t) { - String content; - if (t.getClass().getName().startsWith("java.")) { - content = t.toString(); - } else { - content = "(value not shown)"; // toString() may trigger tainting - } - LOGGER.debug( - "taint: {}[{}] {}", - t.getClass().getSimpleName(), - Integer.toHexString(System.identityHashCode(t)), - content); - } - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/VulnerabilityMarks.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/VulnerabilityMarks.java deleted file mode 100644 index 1075d4e807..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/VulnerabilityMarks.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.datadog.trace.api.iast; - -public class VulnerabilityMarks { - - private VulnerabilityMarks() {} - - public static final int NOT_MARKED = 0; - - public static final int XPATH_INJECTION_MARK = 1; - public static final int SQL_INJECTION_MARK = 1 << 1; - public static final int COMMAND_INJECTION_MARK = 1 << 2; - public static final int PATH_TRAVERSAL_MARK = 1 << 3; - public static final int LDAP_INJECTION_MARK = 1 << 4; - public static final int SSRF_MARK = 1 << 5; - public static final int UNVALIDATED_REDIRECT_MARK = 1 << 6; - - public static final int XSS_MARK = 1 << 7; - - public static final int TRUST_BOUNDARY_VIOLATION = 1 << 8; - public static final int HEADER_INJECTION_MARK = 1 << 9; -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/VulnerabilityTypes.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/VulnerabilityTypes.java deleted file mode 100644 index bb7b182afa..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/VulnerabilityTypes.java +++ /dev/null @@ -1,175 +0,0 @@ -package com.datadog.trace.api.iast; - -public abstract class VulnerabilityTypes { - - private VulnerabilityTypes() {} - - public static final byte WEAK_CIPHER = 0; - public static final String WEAK_CIPHER_STRING = "WEAK_CIPHER"; - public static final byte WEAK_HASH = 1; - public static final String WEAK_HASH_STRING = "WEAK_HASH"; - public static final byte SQL_INJECTION = 2; - public static final String SQL_INJECTION_STRING = "SQL_INJECTION"; - public static final byte COMMAND_INJECTION = 3; - public static final String COMMAND_INJECTION_STRING = "COMMAND_INJECTION"; - public static final byte PATH_TRAVERSAL = 4; - public static final String PATH_TRAVERSAL_STRING = "PATH_TRAVERSAL"; - public static final byte LDAP_INJECTION = 5; - public static final String LDAP_INJECTION_STRING = "LDAP_INJECTION"; - public static final byte SSRF = 6; - public static final String SSRF_STRING = "SSRF"; - public static final byte INSECURE_COOKIE = 7; - public static final String INSECURE_COOKIE_STRING = "INSECURE_COOKIE"; - public static final byte NO_HTTPONLY_COOKIE = 8; - public static final String NO_HTTPONLY_COOKIE_STRING = "NO_HTTPONLY_COOKIE"; - public static final byte HSTS_HEADER_MISSING = 9; - public static final String HSTS_HEADER_MISSING_STRING = "HSTS_HEADER_MISSING"; - public static final byte XCONTENTTYPE_HEADER_MISSING = 10; - public static final String XCONTENTTYPE_HEADER_MISSING_STRING = "XCONTENTTYPE_HEADER_MISSING"; - public static final byte NO_SAMESITE_COOKIE = 11; - public static final String NO_SAMESITE_COOKIE_STRING = "NO_SAMESITE_COOKIE"; - public static final byte UNVALIDATED_REDIRECT = 12; - public static final String UNVALIDATED_REDIRECT_STRING = "UNVALIDATED_REDIRECT"; - public static final byte WEAK_RANDOMNESS = 13; - public static final String WEAK_RANDOMNESS_STRING = "WEAK_RANDOMNESS"; - public static final byte XPATH_INJECTION = 14; - public static final String XPATH_INJECTION_STRING = "XPATH_INJECTION"; - public static final byte TRUST_BOUNDARY_VIOLATION = 15; - public static final String TRUST_BOUNDARY_VIOLATION_STRING = "TRUST_BOUNDARY_VIOLATION"; - public static final byte XSS = 16; - public static final String XSS_STRING = "XSS"; - public static final byte STACKTRACE_LEAK = 17; - public static final String STACKTRACE_LEAK_STRING = "STACKTRACE_LEAK"; - public static final byte HEADER_INJECTION = 18; - public static final String HEADER_INJECTION_STRING = "HEADER_INJECTION"; - - public static final byte VERB_TAMPERING = 19; - public static final String VERB_TAMPERING_STRING = "VERB_TAMPERING"; - - public static final byte DEFAULT_HTML_ESCAPE_INVALID = 20; - public static final String DEFAULT_HTML_ESCAPE_INVALID_STRING = "DEFAULT_HTML_ESCAPE_INVALID"; - - public static final byte SESSION_TIMEOUT = 21; - public static final String SESSION_TIMEOUT_STRING = "SESSION_TIMEOUT"; - - public static final byte DIRECTORY_LISTING_LEAK = 22; - public static final String DIRECTORY_LISTING_LEAK_STRING = "DIRECTORY_LISTING_LEAK"; - - public static final byte INSECURE_JSP_LAYOUT = 23; - public static final String INSECURE_JSP_LAYOUT_STRING = "INSECURE_JSP_LAYOUT"; - - public static final byte ADMIN_CONSOLE_ACTIVE = 24; - public static final String ADMIN_CONSOLE_ACTIVE_STRING = "ADMIN_CONSOLE_ACTIVE"; - - /** - * Use for telemetry only, this is a special vulnerability type that is not reported, reported - * values will be {@link #RESPONSE_HEADER_TYPES} - */ - public static final byte RESPONSE_HEADER = -128; - - public static final byte[] RESPONSE_HEADER_TYPES = { - UNVALIDATED_REDIRECT, - INSECURE_COOKIE, - NO_SAMESITE_COOKIE, - XCONTENTTYPE_HEADER_MISSING, - HSTS_HEADER_MISSING, - HEADER_INJECTION - }; - - /** - * Use for telemetry only, this is a special vulnerability type that is not reported, reported - * values will be {@link #SPRING_RESPONSE_TYPES} - */ - public static final byte SPRING_RESPONSE = -127; - /** Use for spring unvalidated redirect and xss */ - public static final byte[] SPRING_RESPONSE_TYPES = {UNVALIDATED_REDIRECT, XSS}; - - private static final byte[] VALUES = { - WEAK_CIPHER, - WEAK_HASH, - SQL_INJECTION, - COMMAND_INJECTION, - PATH_TRAVERSAL, - LDAP_INJECTION, - SSRF, - INSECURE_COOKIE, - NO_HTTPONLY_COOKIE, - UNVALIDATED_REDIRECT, - WEAK_RANDOMNESS, - XPATH_INJECTION, - TRUST_BOUNDARY_VIOLATION, - HSTS_HEADER_MISSING, - XCONTENTTYPE_HEADER_MISSING, - NO_SAMESITE_COOKIE, - XSS, - STACKTRACE_LEAK, - HEADER_INJECTION, - ADMIN_CONSOLE_ACTIVE, - VERB_TAMPERING, - DEFAULT_HTML_ESCAPE_INVALID, - SESSION_TIMEOUT, - DIRECTORY_LISTING_LEAK, - INSECURE_JSP_LAYOUT - }; - - public static byte[] values() { - return VALUES; - } - - public static String toString(final byte sourceType) { - switch (sourceType) { - case VulnerabilityTypes.WEAK_CIPHER: - return VulnerabilityTypes.WEAK_CIPHER_STRING; - case VulnerabilityTypes.WEAK_HASH: - return VulnerabilityTypes.WEAK_HASH_STRING; - case VulnerabilityTypes.SQL_INJECTION: - return VulnerabilityTypes.SQL_INJECTION_STRING; - case VulnerabilityTypes.COMMAND_INJECTION: - return VulnerabilityTypes.COMMAND_INJECTION_STRING; - case VulnerabilityTypes.PATH_TRAVERSAL: - return VulnerabilityTypes.PATH_TRAVERSAL_STRING; - case VulnerabilityTypes.LDAP_INJECTION: - return VulnerabilityTypes.LDAP_INJECTION_STRING; - case VulnerabilityTypes.SSRF: - return VulnerabilityTypes.SSRF_STRING; - case VulnerabilityTypes.INSECURE_COOKIE: - return VulnerabilityTypes.INSECURE_COOKIE_STRING; - case VulnerabilityTypes.NO_HTTPONLY_COOKIE: - return VulnerabilityTypes.NO_HTTPONLY_COOKIE_STRING; - case VulnerabilityTypes.UNVALIDATED_REDIRECT: - return VulnerabilityTypes.UNVALIDATED_REDIRECT_STRING; - case VulnerabilityTypes.WEAK_RANDOMNESS: - return VulnerabilityTypes.WEAK_RANDOMNESS_STRING; - case VulnerabilityTypes.XPATH_INJECTION: - return VulnerabilityTypes.XPATH_INJECTION_STRING; - case VulnerabilityTypes.TRUST_BOUNDARY_VIOLATION: - return VulnerabilityTypes.TRUST_BOUNDARY_VIOLATION_STRING; - case VulnerabilityTypes.HSTS_HEADER_MISSING: - return VulnerabilityTypes.HSTS_HEADER_MISSING_STRING; - case VulnerabilityTypes.XCONTENTTYPE_HEADER_MISSING: - return VulnerabilityTypes.XCONTENTTYPE_HEADER_MISSING_STRING; - case VulnerabilityTypes.NO_SAMESITE_COOKIE: - return VulnerabilityTypes.NO_SAMESITE_COOKIE_STRING; - case VulnerabilityTypes.XSS: - return VulnerabilityTypes.XSS_STRING; - case VulnerabilityTypes.STACKTRACE_LEAK: - return VulnerabilityTypes.STACKTRACE_LEAK_STRING; - case VulnerabilityTypes.HEADER_INJECTION: - return VulnerabilityTypes.HEADER_INJECTION_STRING; - case VulnerabilityTypes.ADMIN_CONSOLE_ACTIVE: - return VulnerabilityTypes.ADMIN_CONSOLE_ACTIVE_STRING; - case VulnerabilityTypes.VERB_TAMPERING: - return VulnerabilityTypes.VERB_TAMPERING_STRING; - case VulnerabilityTypes.DEFAULT_HTML_ESCAPE_INVALID: - return VulnerabilityTypes.DEFAULT_HTML_ESCAPE_INVALID_STRING; - case VulnerabilityTypes.SESSION_TIMEOUT: - return VulnerabilityTypes.SESSION_TIMEOUT_STRING; - case VulnerabilityTypes.DIRECTORY_LISTING_LEAK: - return VulnerabilityTypes.DIRECTORY_LISTING_LEAK_STRING; - case VulnerabilityTypes.INSECURE_JSP_LAYOUT: - return VulnerabilityTypes.INSECURE_JSP_LAYOUT_STRING; - default: - return null; - } - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/propagation/CodecModule.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/propagation/CodecModule.java deleted file mode 100644 index 661ed17275..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/propagation/CodecModule.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.datadog.trace.api.iast.propagation; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import com.datadog.trace.api.iast.IastModule; - -public interface CodecModule extends IastModule { - - void onUrlDecode(@NonNull String value, @Nullable String encoding, @NonNull String result); - - void onStringFromBytes(@NonNull byte[] value, @Nullable String charset, @NonNull String result); - - void onStringGetBytes(@NonNull String value, @Nullable String charset, @NonNull byte[] result); - - void onBase64Encode(@Nullable byte[] value, @Nullable byte[] result); - - void onBase64Decode(@Nullable byte[] value, @Nullable byte[] result); -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/propagation/PropagationModule.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/propagation/PropagationModule.java deleted file mode 100644 index 55281d1aca..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/propagation/PropagationModule.java +++ /dev/null @@ -1,185 +0,0 @@ -package com.datadog.trace.api.iast.propagation; - -import androidx.annotation.Nullable; - -import com.datadog.trace.api.iast.IastContext; -import com.datadog.trace.api.iast.IastModule; -import com.datadog.trace.api.iast.Taintable.Source; - -import java.util.function.Predicate; - -/** Main API for propagation of tainted values, */ -@SuppressWarnings("unused") -public interface PropagationModule extends IastModule { - - /** @see #taint(IastContext, Object, byte) */ - void taint(@Nullable Object target, byte origin); - - /** - * Taints the object with a source with the selected origin and no name, if target is a char - * sequence it will be used as value - */ - void taint(@Nullable IastContext ctx, @Nullable Object target, byte origin); - - /** @see #taint(IastContext, Object, byte, CharSequence) */ - void taint(@Nullable Object target, byte origin, @Nullable CharSequence name); - - /** - * Taints the object with a source with the selected origin and name, if target is a char sequence - * it will be used as value - */ - void taint( - @Nullable IastContext ctx, @Nullable Object target, byte origin, @Nullable CharSequence name); - - /** @see #taint(IastContext, Object, byte, CharSequence, CharSequence) */ - void taint( - @Nullable Object target, - byte origin, - @Nullable CharSequence name, - @Nullable CharSequence value); - - /** Taints the object with a source with the selected origin, name and value */ - void taint( - @Nullable IastContext ctx, - @Nullable Object target, - byte origin, - @Nullable CharSequence name, - @Nullable CharSequence value); - - /** @see #taintIfTainted(IastContext, Object, Object) */ - void taintIfTainted(@Nullable Object target, @Nullable Object input); - - /** - * Taints the object only if the input value is tainted. If tainted, it will use the highest - * priority source of the input to taint the object. - */ - void taintIfTainted(@Nullable IastContext ctx, @Nullable Object target, @Nullable Object input); - - /** @see #taintIfTainted(IastContext, Object, Object, boolean, int) */ - void taintIfTainted( - @Nullable Object target, @Nullable Object input, boolean keepRanges, int mark); - - /** - * Taints the object only if the input value is tainted. It will try to reuse sources from the - * input value according to: - * - *

    - *
  • keepRanges=true will reuse the ranges from the input tainted value and mark them - *
  • keepRanges=false will use the highest priority source from the input ranges and mark it - *
- */ - void taintIfTainted( - @Nullable IastContext ctx, - @Nullable Object target, - @Nullable Object input, - boolean keepRanges, - int mark); - - /** @see #taintIfTainted(IastContext, Object, Object, byte) */ - void taintIfTainted(@Nullable Object target, @Nullable Object input, byte origin); - - /** - * Taints the object only if the input value is tainted, the resulting value will be tainted using - * a source with the specified origin and no name, if target is a char sequence it will be used as - * value - */ - void taintIfTainted( - @Nullable IastContext ctx, @Nullable Object target, @Nullable Object input, byte origin); - - /** @see #taintIfTainted(IastContext, Object, Object, byte, CharSequence) */ - void taintIfTainted( - @Nullable Object target, @Nullable Object input, byte origin, @Nullable CharSequence name); - - /** - * Taints the object only if the input value is tainted, the resulting value will be tainted using - * a source with the specified origin and name, if target is a char sequence it will be used as - * value - */ - void taintIfTainted( - @Nullable IastContext ctx, - @Nullable Object target, - @Nullable Object input, - byte origin, - @Nullable CharSequence name); - - /** @see #taintIfTainted(IastContext, Object, Object, byte, CharSequence, CharSequence) */ - void taintIfTainted( - @Nullable Object target, - @Nullable Object input, - byte origin, - @Nullable CharSequence name, - @Nullable CharSequence value); - - /** - * Taints the object only if the input value is tainted, the resulting value will be tainted using - * a source with the specified origin, name and value. - */ - void taintIfTainted( - @Nullable IastContext ctx, - @Nullable Object target, - @Nullable Object input, - byte origin, - @Nullable CharSequence name, - @Nullable CharSequence value); - - /** @see #taintIfAnyTainted(IastContext, Object, Object[]) */ - void taintIfAnyTainted(@Nullable Object target, @Nullable Object[] inputs); - - /** - * Taints the object if any of the inputs is tainted. When a tainted input is found the logic is - * the same as in {@link #taintIfTainted(IastContext, Object, Object)} - * - * @see #taintIfTainted(IastContext, Object, Object) - */ - void taintIfAnyTainted( - @Nullable IastContext ctx, @Nullable Object target, @Nullable Object[] inputs); - - /** @see #taintIfAnyTainted(IastContext, Object, Object[], boolean, int) */ - void taintIfAnyTainted( - @Nullable Object target, @Nullable Object[] inputs, boolean keepRanges, int mark); - - /** - * Taints the object if any of the inputs is tainted. When a tainted input is found the logic is - * the same as in {@link #taintIfTainted(IastContext, Object, Object, boolean, int)} - * - * @see #taintIfTainted(IastContext, Object, Object, boolean, int) - */ - void taintIfAnyTainted( - @Nullable IastContext ctx, - @Nullable Object target, - @Nullable Object[] inputs, - boolean keepRanges, - int mark); - - /** @see #taintDeeply(IastContext, Object, byte, Predicate) */ - int taintDeeply(@Nullable Object target, byte origin, Predicate> classFilter); - - /** - * Visit the graph of the object and taints all the string properties found using a source with - * the selected origin and no name. - * - * @param classFilter filter for types that should be included in the visiting process - * @return number of tainted elements - */ - int taintDeeply( - @Nullable IastContext ctx, - @Nullable Object target, - byte origin, - Predicate> classFilter); - - /** @see #isTainted(IastContext, Object) */ - boolean isTainted(@Nullable Object target); - - /** Checks if an arbitrary object is tainted */ - boolean isTainted(@Nullable IastContext ctx, @Nullable Object target); - - /** @see #findSource(IastContext, Object) */ - @Nullable - Source findSource(@Nullable Object target); - - /** - * Returns the source with the highest priority if the object is tainted, {@code null} otherwise - */ - @Nullable - Source findSource(@Nullable IastContext ctx, @Nullable Object target); -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/propagation/StringModule.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/propagation/StringModule.java deleted file mode 100644 index 0c1b84bd03..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/propagation/StringModule.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.datadog.trace.api.iast.propagation; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import com.datadog.trace.api.iast.IastModule; - -import java.util.Locale; - -public interface StringModule extends IastModule { - - void onStringConcat(@NonNull String left, @Nullable String right, @NonNull String result); - - void onStringBuilderInit(@NonNull CharSequence builder, @Nullable CharSequence param); - - void onStringBuilderAppend(@NonNull CharSequence builder, @Nullable CharSequence param); - - void onStringBuilderToString(@NonNull CharSequence builder, @NonNull String result); - - void onStringConcatFactory( - @Nullable String result, - @Nullable String[] args, - @Nullable String recipe, - @Nullable Object[] dynamicConstants, - @NonNull int[] recipeOffsets); - - void onStringSubSequence( - @NonNull String self, int beginIndex, int endIndex, @Nullable CharSequence result); - - void onStringJoin( - @Nullable String result, @NonNull CharSequence delimiter, @NonNull CharSequence[] elements); - - void onStringToUpperCase(@NonNull String self, @Nullable String result); - - void onStringToLowerCase(@NonNull String self, @Nullable String result); - - void onStringTrim(@NonNull String self, @Nullable String result); - - void onStringRepeat(@NonNull String self, int count, @NonNull String result); - - void onStringConstructor(@NonNull String self, @NonNull String result); - - void onStringFormat(@NonNull String pattern, @NonNull Object[] params, @NonNull String result); - - void onStringFormat( - @Nullable Locale locale, - @NonNull String pattern, - @NonNull Object[] params, - @NonNull String result); - - void onStringFormat( - @NonNull Iterable literals, @NonNull Object[] params, @NonNull String result); - - void onSplit(final @NonNull String self, final @NonNull String[] result); -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/ApplicationModule.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/ApplicationModule.java deleted file mode 100644 index a1947e40bf..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/ApplicationModule.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.datadog.trace.api.iast.sink; - -import androidx.annotation.Nullable; - -import com.datadog.trace.api.iast.IastModule; - -public interface ApplicationModule extends IastModule { - - void onRealPath(@Nullable String realPath); -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/CommandInjectionModule.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/CommandInjectionModule.java deleted file mode 100644 index 7f6f8b89c9..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/CommandInjectionModule.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.datadog.trace.api.iast.sink; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import com.datadog.trace.api.iast.IastModule; - -import java.util.List; - -public interface CommandInjectionModule extends IastModule { - - void onRuntimeExec(@NonNull String... command); - - void onRuntimeExec(@Nullable String[] env, @NonNull String... command); - - void onProcessBuilderStart(@NonNull List command); -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/HeaderInjectionModule.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/HeaderInjectionModule.java deleted file mode 100644 index 54a0b6ac7a..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/HeaderInjectionModule.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.datadog.trace.api.iast.sink; - -import androidx.annotation.NonNull; - -import com.datadog.trace.api.iast.IastModule; - -public interface HeaderInjectionModule extends IastModule { - - void onHeader(@NonNull String name, String value); -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/HstsMissingHeaderModule.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/HstsMissingHeaderModule.java deleted file mode 100644 index a637716af1..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/HstsMissingHeaderModule.java +++ /dev/null @@ -1,3 +0,0 @@ -package com.datadog.trace.api.iast.sink; - -public interface HstsMissingHeaderModule extends HttpRequestEndModule {} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/HttpCookieModule.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/HttpCookieModule.java deleted file mode 100644 index 800459a0db..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/HttpCookieModule.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.datadog.trace.api.iast.sink; - -import androidx.annotation.NonNull; - -import com.datadog.trace.api.iast.IastModule; -import com.datadog.trace.api.iast.util.Cookie; - -public interface HttpCookieModule extends IastModule { - - boolean isVulnerable(@NonNull final Cookie cookie); - - T getType(); -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/HttpRequestEndModule.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/HttpRequestEndModule.java deleted file mode 100644 index 53faf4b719..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/HttpRequestEndModule.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.datadog.trace.api.iast.sink; - -import com.datadog.trace.api.gateway.IGSpanInfo; -import com.datadog.trace.api.iast.IastModule; - -import java.net.HttpURLConnection; -import java.util.Locale; - -public interface HttpRequestEndModule extends IastModule { - - void onRequestEnd(Object ctx, IGSpanInfo span); - - default boolean isHtmlResponse(final String value) { - if (value == null) { - return false; - } - final String contentType = value.toLowerCase(Locale.ROOT); - return contentType.contains("text/html") || contentType.contains("application/xhtml+xml"); - } - - default boolean isIgnorableResponseCode(final Integer httpStatus) { - if (httpStatus == null) { - return false; - } - return httpStatus == HttpURLConnection.HTTP_MOVED_PERM - || httpStatus == HttpURLConnection.HTTP_MOVED_TEMP - || httpStatus == HttpURLConnection.HTTP_NOT_MODIFIED - || httpStatus == HttpURLConnection.HTTP_NOT_FOUND - || httpStatus == HttpURLConnection.HTTP_GONE - || httpStatus == HttpURLConnection.HTTP_INTERNAL_ERROR - || httpStatus == 307; - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/HttpResponseHeaderModule.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/HttpResponseHeaderModule.java deleted file mode 100644 index 1e11ef4af3..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/HttpResponseHeaderModule.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.datadog.trace.api.iast.sink; - -import androidx.annotation.NonNull; - -import com.datadog.trace.api.iast.IastModule; -import com.datadog.trace.api.iast.util.Cookie; - -public interface HttpResponseHeaderModule extends IastModule { - - void onHeader(@NonNull String name, String value); - - void onCookie(@NonNull Cookie cookie); -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/InsecureCookieModule.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/InsecureCookieModule.java deleted file mode 100644 index 90d1c8dd21..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/InsecureCookieModule.java +++ /dev/null @@ -1,3 +0,0 @@ -package com.datadog.trace.api.iast.sink; - -public interface InsecureCookieModule extends HttpCookieModule {} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/LdapInjectionModule.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/LdapInjectionModule.java deleted file mode 100644 index 72119bea3f..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/LdapInjectionModule.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.datadog.trace.api.iast.sink; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import com.datadog.trace.api.iast.IastModule; - -public interface LdapInjectionModule extends IastModule { - - void onDirContextSearch( - @Nullable String name, @NonNull String filterExpr, @Nullable Object[] filterArgs); -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/NoHttpOnlyCookieModule.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/NoHttpOnlyCookieModule.java deleted file mode 100644 index 433ba4c993..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/NoHttpOnlyCookieModule.java +++ /dev/null @@ -1,3 +0,0 @@ -package com.datadog.trace.api.iast.sink; - -public interface NoHttpOnlyCookieModule extends HttpCookieModule {} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/NoSameSiteCookieModule.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/NoSameSiteCookieModule.java deleted file mode 100644 index aaa288e9af..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/NoSameSiteCookieModule.java +++ /dev/null @@ -1,3 +0,0 @@ -package com.datadog.trace.api.iast.sink; - -public interface NoSameSiteCookieModule extends HttpCookieModule {} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/PathTraversalModule.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/PathTraversalModule.java deleted file mode 100644 index c5a86bad61..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/PathTraversalModule.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.datadog.trace.api.iast.sink; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import com.datadog.trace.api.iast.IastModule; - -import java.io.File; -import java.net.URI; - -public interface PathTraversalModule extends IastModule { - - void onPathTraversal(@NonNull String path); - - void onPathTraversal(@Nullable String parent, @NonNull String child); - - void onPathTraversal(@NonNull String first, @NonNull String[] more); - - void onPathTraversal(@NonNull URI uri); - - void onPathTraversal(@Nullable File parent, @NonNull String child); -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/SqlInjectionModule.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/SqlInjectionModule.java deleted file mode 100644 index b93ee72a40..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/SqlInjectionModule.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.datadog.trace.api.iast.sink; - -import androidx.annotation.Nullable; - -import com.datadog.trace.api.iast.IastModule; - -public interface SqlInjectionModule extends IastModule { - - String DATABASE_PARAMETER = "DATABASE"; - - void onJdbcQuery(@Nullable String sql); - - void onJdbcQuery(@Nullable String sql, @Nullable String database); -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/SsrfModule.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/SsrfModule.java deleted file mode 100644 index 8a7be090be..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/SsrfModule.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.datadog.trace.api.iast.sink; - -import androidx.annotation.Nullable; - -import com.datadog.trace.api.iast.IastModule; - -public interface SsrfModule extends IastModule { - - void onURLConnection(@Nullable Object url); - - void onURLConnection(@Nullable String url, @Nullable Object host, @Nullable Object uri); -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/StacktraceLeakModule.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/StacktraceLeakModule.java deleted file mode 100644 index 60352e5b34..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/StacktraceLeakModule.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.datadog.trace.api.iast.sink; - -import androidx.annotation.Nullable; - -import com.datadog.trace.api.iast.IastModule; - -public interface StacktraceLeakModule extends IastModule { - void onStacktraceLeak( - @Nullable final Throwable expression, String moduleName, String className, String methodName); -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/TrustBoundaryViolationModule.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/TrustBoundaryViolationModule.java deleted file mode 100644 index 6897805022..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/TrustBoundaryViolationModule.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.datadog.trace.api.iast.sink; - -import androidx.annotation.NonNull; - -import com.datadog.trace.api.iast.IastModule; - -public interface TrustBoundaryViolationModule extends IastModule { - - void onSessionValue(@NonNull String name, Object value); -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/UnvalidatedRedirectModule.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/UnvalidatedRedirectModule.java deleted file mode 100644 index a5456892a8..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/UnvalidatedRedirectModule.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.datadog.trace.api.iast.sink; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import com.datadog.trace.api.iast.IastModule; - -import java.net.URI; - -public interface UnvalidatedRedirectModule extends IastModule { - - void onRedirect(@Nullable String value); - - void onRedirect(@NonNull String value, @NonNull String clazz, @NonNull String method); - - void onURIRedirect(@Nullable URI value); - - void onHeader(@NonNull String name, String value); -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/WeakCipherModule.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/WeakCipherModule.java deleted file mode 100644 index 2a83677bd5..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/WeakCipherModule.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.datadog.trace.api.iast.sink; - -import androidx.annotation.NonNull; - -import com.datadog.trace.api.iast.IastModule; - -public interface WeakCipherModule extends IastModule { - - void onCipherAlgorithm(@NonNull String algorithm); -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/WeakHashModule.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/WeakHashModule.java deleted file mode 100644 index b80e0cf46f..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/WeakHashModule.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.datadog.trace.api.iast.sink; - -import androidx.annotation.NonNull; - -import com.datadog.trace.api.iast.IastModule; - -public interface WeakHashModule extends IastModule { - - void onHashingAlgorithm(@NonNull String algorithm); -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/WeakRandomnessModule.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/WeakRandomnessModule.java deleted file mode 100644 index dc64199f05..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/WeakRandomnessModule.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.datadog.trace.api.iast.sink; - -import androidx.annotation.NonNull; - -import com.datadog.trace.api.iast.IastModule; - -public interface WeakRandomnessModule extends IastModule { - - void onWeakRandom(@NonNull final Class instance); -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/XContentTypeModule.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/XContentTypeModule.java deleted file mode 100644 index 1e0d155cca..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/XContentTypeModule.java +++ /dev/null @@ -1,3 +0,0 @@ -package com.datadog.trace.api.iast.sink; - -public interface XContentTypeModule extends HttpRequestEndModule {} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/XPathInjectionModule.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/XPathInjectionModule.java deleted file mode 100644 index 2a01950fe8..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/XPathInjectionModule.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.datadog.trace.api.iast.sink; - -import androidx.annotation.Nullable; - -import com.datadog.trace.api.iast.IastModule; - -public interface XPathInjectionModule extends IastModule { - void onExpression(@Nullable final String expression); -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/XssModule.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/XssModule.java deleted file mode 100644 index 42318b87df..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/sink/XssModule.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.datadog.trace.api.iast.sink; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import com.datadog.trace.api.iast.IastModule; - -public interface XssModule extends IastModule { - - void onXss(@NonNull String s); - - void onXss(@NonNull String s, @NonNull String clazz, @NonNull String method); - - void onXss(@NonNull char[] array); - - void onXss(@NonNull String format, @Nullable Object[] args); - - void onXss(@NonNull CharSequence s, @Nullable String file, int line); -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/telemetry/IastMetric.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/telemetry/IastMetric.java deleted file mode 100644 index 9c905c2ca3..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/telemetry/IastMetric.java +++ /dev/null @@ -1,188 +0,0 @@ -package com.datadog.trace.api.iast.telemetry; - -import static com.datadog.trace.api.iast.VulnerabilityTypes.RESPONSE_HEADER; -import static com.datadog.trace.api.iast.VulnerabilityTypes.RESPONSE_HEADER_TYPES; -import static com.datadog.trace.api.iast.VulnerabilityTypes.SPRING_RESPONSE; -import static com.datadog.trace.api.iast.VulnerabilityTypes.SPRING_RESPONSE_TYPES; - -import androidx.annotation.NonNull; - -import com.datadog.trace.api.iast.SourceTypes; -import com.datadog.trace.api.iast.VulnerabilityTypes; - -import java.util.function.Function; - -public enum IastMetric { - INSTRUMENTED_PROPAGATION("instrumented.propagation", true, Scope.GLOBAL, Verbosity.MANDATORY), - INSTRUMENTED_SOURCE( - "instrumented.source", true, Scope.GLOBAL, Tag.SOURCE_TYPE, Verbosity.MANDATORY), - INSTRUMENTED_SINK( - "instrumented.sink", true, Scope.GLOBAL, Tag.VULNERABILITY_TYPE, Verbosity.MANDATORY), - EXECUTED_PROPAGATION("executed.propagation", true, Scope.REQUEST, Verbosity.DEBUG), - EXECUTED_SOURCE("executed.source", true, Scope.REQUEST, Tag.SOURCE_TYPE, Verbosity.INFORMATION), - EXECUTED_SINK( - "executed.sink", true, Scope.REQUEST, Tag.VULNERABILITY_TYPE, Verbosity.INFORMATION), - EXECUTED_TAINTED("executed.tainted", true, Scope.REQUEST, Verbosity.DEBUG), - REQUEST_TAINTED("request.tainted", true, Scope.REQUEST, Verbosity.INFORMATION), - TAINTED_FLAT_MODE("tainted.flat.mode", false, Scope.GLOBAL, Verbosity.INFORMATION); - - private static final int COUNT; - - static { - int count = 0; - for (final IastMetric metric : values()) { - metric.index = count; - if (metric.tag == null) { - count++; - } else { - count += metric.tag.getValues().length; - } - } - COUNT = count; - } - - public static int count() { - return COUNT; - } - - private final String name; - private final boolean common; - private final Scope scope; - private final Tag tag; - private final Verbosity verbosity; - private int index; - - IastMetric( - final String name, final boolean common, final Scope scope, final Verbosity verbosity) { - this(name, common, scope, null, verbosity); - } - - IastMetric( - final String name, - final boolean common, - final Scope scope, - final Tag tag, - final Verbosity verbosity) { - this.name = name; - this.common = common; - this.scope = scope; - this.tag = tag; - this.verbosity = verbosity; - } - - public String getName() { - return name; - } - - public boolean isCommon() { - return common; - } - - public Scope getScope() { - return scope; - } - - public boolean isEnabled(@NonNull final Verbosity verbosity) { - return verbosity.isEnabled(this.verbosity); - } - - public Tag getTag() { - return tag; - } - - /** - * Returns the index for the particular tag to be used in the {@link - * java.util.concurrent.atomic.AtomicLongArray} of {@link IastMetricCollector} - */ - public int getIndex(final byte tagValue) { - if (tag == null) { - return index; - } - if (tagValue < 0) { - return -1; - } - return index + tagValue; - } - - public static class Tag { - - private static final byte[] EMPTY = new byte[0]; - - public static final Tag VULNERABILITY_TYPE = - new Tag("vulnerability_type", VulnerabilityTypes.values(), VulnerabilityTypes::toString) { - - @Override - public boolean isWrapped(byte tagValue) { - switch (tagValue) { - case RESPONSE_HEADER: - case SPRING_RESPONSE: - return true; - default: - return false; - } - } - - public byte[] unwrap(final byte tagValue) { - switch (tagValue) { - case RESPONSE_HEADER: - return RESPONSE_HEADER_TYPES; - case SPRING_RESPONSE: - return SPRING_RESPONSE_TYPES; - default: - return EMPTY; - } - } - }; - - public static final Tag SOURCE_TYPE = - new Tag("source_type", SourceTypes.values(), SourceTypes::toString); - - private final String name; - - private final Function toString; - private final byte[] values; - - private Tag(final String name, final byte[] values, final Function toString) { - this.name = name; - this.toString = toString; - this.values = values; - } - - public String getName() { - return name; - } - - public byte[] getValues() { - return values; - } - - /** Wrapped tags are aggregation of other tags that should be incremented together */ - public boolean isWrapped(final byte tagValue) { - return false; - } - - public byte[] unwrap(final byte tagValue) { - return EMPTY; - } - - public String toString(final byte tagValue) { - return toString.apply(tagValue); - } - } - - public static final class Scope { - - public static final Scope GLOBAL = new Scope("global"); - public static final Scope REQUEST = new Scope("request"); - - private final String name; - - private Scope(final String name) { - this.name = name; - } - - public String getName() { - return name; - } - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/telemetry/IastMetricCollector.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/telemetry/IastMetricCollector.java deleted file mode 100644 index ef3355ea89..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/telemetry/IastMetricCollector.java +++ /dev/null @@ -1,237 +0,0 @@ -package com.datadog.trace.api.iast.telemetry; - -import static com.datadog.trace.api.iast.telemetry.IastMetric.Scope.REQUEST; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import com.datadog.trace.api.Config; -import com.datadog.trace.api.gateway.RequestContext; -import com.datadog.trace.api.gateway.RequestContextSlot; -import com.datadog.trace.api.iast.telemetry.IastMetric.Tag; -import com.datadog.trace.api.telemetry.MetricCollector; -import com.datadog.trace.bootstrap.instrumentation.api.AgentSpan; -import com.datadog.trace.bootstrap.instrumentation.api.AgentTracer; -import com.datadog.trace.logger.Logger; -import com.datadog.trace.logger.LoggerFactory; - -import java.util.Collection; -import java.util.Collections; -import java.util.LinkedList; -import java.util.List; -import java.util.Locale; -import java.util.concurrent.ArrayBlockingQueue; -import java.util.concurrent.BlockingQueue; -import java.util.concurrent.atomic.AtomicLongArray; - -@SuppressWarnings("resource") -public class IastMetricCollector implements MetricCollector { - - private static final Logger LOGGER = LoggerFactory.getLogger(IastMetricCollector.class); - - private static final String NAMESPACE = "iast"; - - private static final Verbosity VERBOSITY = Config.get().getIastTelemetryVerbosity(); - - private static final IastMetricCollector INSTANCE = - VERBOSITY != Verbosity.OFF ? new IastMetricCollector() : new NoOpInstance(); - - public static IastMetricCollector get() { - return INSTANCE; - } - - private static IastMetricCollector get(@Nullable Object ctx) { - if (VERBOSITY == Verbosity.OFF) { - return INSTANCE; - } - if (ctx == null) { - ctx = activeRequestContext(); - } - if (ctx instanceof RequestContext) { - ctx = ((RequestContext) ctx).getData(RequestContextSlot.IAST); - } - if (ctx instanceof HasMetricCollector) { - final IastMetricCollector collector = ((HasMetricCollector) ctx).getMetricCollector(); - if (collector != null) { - return collector; - } - } - // if no active request then forward to the global collector - return INSTANCE; - } - - private final BlockingQueue rawMetricsQueue; - - private final AtomicLongArray counters; - - public IastMetricCollector() { - this(new ArrayBlockingQueue<>(RAW_QUEUE_SIZE), new AtomicLongArray(IastMetric.count())); - } - - protected IastMetricCollector( - final BlockingQueue rawMetricsQueue, final AtomicLongArray counters) { - this.rawMetricsQueue = rawMetricsQueue; - this.counters = counters; - } - - /** Prefer using {@link #add(IastMetric, int, Object)} if possible */ - public static void add(@NonNull final IastMetric metric, final int value) { - add(metric, value, null); - } - - public static void add( - @NonNull final IastMetric metric, final int value, @Nullable final Object ctx) { - add(metric, (byte) -1, value, ctx); - } - - /** Prefer using {@link #add(IastMetric, byte, int, Object)} if possible */ - public static void add(@NonNull final IastMetric metric, final byte tagValue, final int value) { - add(metric, tagValue, value, null); - } - - public static void add( - @NonNull final IastMetric metric, - final byte tagValue, - final int value, - @Nullable final Object ctx) { - try { - final IastMetricCollector instance = metric.getScope() == REQUEST ? get(ctx) : INSTANCE; - instance.addMetric(metric, tagValue, value); - } catch (final Throwable e) { - LOGGER.warn("Failed to add metric {} with tag {}", metric, tagValue, e); - } - } - - public void addMetric(final IastMetric metric, final byte tagValue, final int value) { - final Tag tag = metric.getTag(); - if (tag != null && tag.isWrapped(tagValue)) { - // e.g.: VulnerabilityTypes.RESPONSE_HEADER - for (final byte unwrapped : metric.getTag().unwrap(tagValue)) { - increment(metric.getIndex(unwrapped), value); - } - } else { - increment(metric.getIndex(tagValue), value); - } - } - - private void increment(final int index, final int value) { - if (index >= 0) { - counters.getAndAdd(index, value); - } - } - - public void merge(final Collection metrics) { - for (final IastMetricData data : metrics) { - final IastMetric metric = data.metric; - final byte tagValue = data.tagValue; - final long value = data.value.longValue(); - counters.getAndAdd(metric.getIndex(tagValue), value); - } - } - - @Override - public void prepareMetrics() { - for (final IastMetric metric : IastMetric.values()) { - if (metric.getTag() == null) { - prepareMetric(metric, (byte) -1); - } else { - for (final byte tagValue : metric.getTag().getValues()) { - prepareMetric(metric, tagValue); - } - } - } - } - - private void prepareMetric(final IastMetric metric, final byte tagValue) { - final int index = metric.getIndex(tagValue); - final long value = counters.getAndSet(index, 0); - if (value > 0) { - rawMetricsQueue.offer(new IastMetricData(metric, tagValue, value)); - } - } - - @Override - public Collection drain() { - if (!rawMetricsQueue.isEmpty()) { - final List list = new LinkedList<>(); - final int drained = rawMetricsQueue.drainTo(list); - if (drained > 0) { - return list; - } - } - return Collections.emptyList(); - } - - public static class IastMetricData extends Metric { - - private final IastMetric metric; - private final byte tagValue; - - public IastMetricData(final IastMetric metric, final byte tagValue, final long value) { - super( - NAMESPACE, - metric.isCommon(), - metric.getName(), - "count", - value, - computeTag(metric, tagValue)); - this.metric = metric; - this.tagValue = tagValue; - } - - public IastMetric getMetric() { - return metric; - } - - public byte getTagValue() { - return tagValue; - } - - public String getSpanTag() { - if (metric.getTag() == null) { - return metric.getName(); - } - final String tag = metric.getTag().toString(tagValue); - final String spanTag = tag.toLowerCase(Locale.ROOT).replace('.', '_'); - return String.format("%s.%s", metric.getName(), spanTag); - } - - public static String computeTag(final IastMetric metric, final byte tagValue) { - if (metric.getTag() == null) { - return null; - } - return String.format("%s:%s", metric.getTag().getName(), metric.getTag().toString(tagValue)); - } - } - - private static RequestContext activeRequestContext() { - final AgentSpan span = AgentTracer.activeSpan(); - return span == null ? null : span.getRequestContext(); - } - - private static class NoOpInstance extends IastMetricCollector { - - public NoOpInstance() { - super(null, null); - } - - @Override - public void addMetric(final IastMetric metric, final byte tagValue, final int value) {} - - @Override - public void merge(final Collection metrics) {} - - @Override - public void prepareMetrics() {} - - @Override - public Collection drain() { - return Collections.emptyList(); - } - } - - public interface HasMetricCollector { - - IastMetricCollector getMetricCollector(); - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/telemetry/Verbosity.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/telemetry/Verbosity.java deleted file mode 100644 index 6fad7557c2..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/telemetry/Verbosity.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.datadog.trace.api.iast.telemetry; - -public enum Verbosity { - OFF, - MANDATORY, - INFORMATION, - DEBUG; - - public boolean isEnabled(final Verbosity value) { - return value.ordinal() <= ordinal(); - } - - public boolean isDebugEnabled() { - return isEnabled(DEBUG); - } - - public boolean isInformationEnabled() { - return isEnabled(INFORMATION); - } - - public boolean isMandatoryEnabled() { - return isEnabled(MANDATORY); - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/util/Cookie.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/util/Cookie.java deleted file mode 100644 index baa416a660..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/iast/util/Cookie.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.datadog.trace.api.iast.util; - -public class Cookie { - - private final String cookieName; - private final boolean secure; - private final String sameSite; - private final boolean httpOnly; - - public Cookie(final String cookieName, boolean secure, boolean httpOnly, String sameSite) { - this.cookieName = cookieName; - this.secure = secure; - this.sameSite = sameSite; - this.httpOnly = httpOnly; - } - - public String getCookieName() { - return cookieName; - } - - public boolean isSecure() { - return secure; - } - - public String getSameSite() { - return sameSite; - } - - public boolean isHttpOnly() { - return httpOnly; - } - - public static Builder named(final String name) { - return new Builder(name); - } - - public static class Builder { - private final String name; - private boolean secure = false; - private boolean httpOnly = false; - private String sameSite = null; - - public Builder(final String name) { - this.name = name; - } - - public Builder secure(final boolean secure) { - this.secure = secure; - return this; - } - - public Builder httpOnly(final boolean httpOnly) { - this.httpOnly = httpOnly; - return this; - } - - public Builder sameSite(final String sameSite) { - this.sameSite = sameSite; - return this; - } - - public Cookie build() { - return new Cookie(name, secure, httpOnly, sameSite); - } - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/intake/TrackType.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/intake/TrackType.java deleted file mode 100644 index ccef711fdb..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/intake/TrackType.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.datadog.trace.api.intake; - -public enum TrackType { - CITESTCYCLE, - CITESTCOV, - NOOP -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/interceptor/AbstractTraceInterceptor.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/interceptor/AbstractTraceInterceptor.java deleted file mode 100644 index 426d2ac6a1..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/interceptor/AbstractTraceInterceptor.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.datadog.trace.api.interceptor; - -public abstract class AbstractTraceInterceptor implements TraceInterceptor { - - private final Priority priority; - - protected AbstractTraceInterceptor(Priority priority) { - this.priority = priority; - } - - @Override - public int priority() { - return priority.idx; - } - - public enum Priority { - // trace filtering - CI_VISIBILITY_TRACE(0), - CI_VISIBILITY_APM(1), - - // trace data enrichment - DD_INTAKE(2), - GIT_METADATA(3), - - // trace data collection - SERVICE_NAME_COLLECTING(Integer.MAX_VALUE); - - private final int idx; - - Priority(int idx) { - this.idx = idx; - } - - int getIdx() { - return idx; - } - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/telemetry/CoreMetricCollector.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/telemetry/CoreMetricCollector.java deleted file mode 100644 index 1b012db97f..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/telemetry/CoreMetricCollector.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.datadog.trace.api.telemetry; - -import com.datadog.trace.api.metrics.CoreCounter; -import com.datadog.trace.api.metrics.SpanMetricRegistryImpl; -import com.datadog.trace.api.metrics.SpanMetricsImpl; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.concurrent.ArrayBlockingQueue; -import java.util.concurrent.BlockingQueue; - -/** This class is in charge of draining core metrics for telemetry. */ -public class CoreMetricCollector implements MetricCollector { - private static final String METRIC_NAMESPACE = "tracers"; - private static final String INTEGRATION_NAME_TAG = "integration_name:"; - private static final CoreMetricCollector INSTANCE = new CoreMetricCollector(); - private final SpanMetricRegistryImpl spanMetricRegistry = SpanMetricRegistryImpl.getInstance(); - - private final BlockingQueue metricsQueue; - - public static CoreMetricCollector getInstance() { - return INSTANCE; - } - - private CoreMetricCollector() { - this.metricsQueue = new ArrayBlockingQueue<>(RAW_QUEUE_SIZE); - } - - @Override - public void prepareMetrics() { - for (SpanMetricsImpl spanMetrics : this.spanMetricRegistry.getSpanMetrics()) { - String tag = INTEGRATION_NAME_TAG + spanMetrics.getInstrumentationName(); - for (CoreCounter counter : spanMetrics.getCounters()) { - long value = counter.getValueAndReset(); - if (value == 0) { - // Skip not updated counters - continue; - } - CoreMetric metric = - new CoreMetric(METRIC_NAMESPACE, true, counter.getName(), "count", value, tag); - if (!this.metricsQueue.offer(metric)) { - // Stop adding metrics if the queue is full - break; - } - } - } - } - - @Override - public Collection drain() { - if (this.metricsQueue.isEmpty()) { - return Collections.emptyList(); - } - List drained = new ArrayList<>(this.metricsQueue.size()); - this.metricsQueue.drainTo(drained); - return drained; - } - - public static class CoreMetric extends Metric { - public CoreMetric( - String namespace, - boolean common, - String metricName, - String type, - Number value, - String tag) { - super(namespace, common, metricName, type, value, tag); - } - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/telemetry/IntegrationsCollector.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/telemetry/IntegrationsCollector.java deleted file mode 100644 index 312e073092..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/telemetry/IntegrationsCollector.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.datadog.trace.api.telemetry; - -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.Queue; -import java.util.concurrent.LinkedBlockingQueue; - -public class IntegrationsCollector { - - private static final IntegrationsCollector INSTANCE = new IntegrationsCollector(); - private final Queue integrations = new LinkedBlockingQueue<>(); - - private IntegrationsCollector() {} - - public static IntegrationsCollector get() { - return INSTANCE; - } - - public synchronized void update(Iterable names, boolean enabled) { - Integration i = new Integration(); - i.names = names; - i.enabled = enabled; - - integrations.offer(i); - } - - public synchronized Map drain() { - if (integrations.isEmpty()) { - return Collections.emptyMap(); - } - - Map map = new LinkedHashMap<>(); - - Integration i; - while ((i = integrations.poll()) != null) { - boolean enabled = i.enabled; - for (String name : i.names) { - map.put(name, enabled); - } - } - - return map; - } - - private static class Integration { - public Iterable names; - public boolean enabled; - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/telemetry/LogCollector.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/telemetry/LogCollector.java deleted file mode 100644 index 8163957141..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/telemetry/LogCollector.java +++ /dev/null @@ -1,103 +0,0 @@ -package com.datadog.trace.api.telemetry; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.atomic.AtomicInteger; - -public class LogCollector { - private static final int DEFAULT_MAX_CAPACITY = 1024; - private static final LogCollector INSTANCE = new LogCollector(); - private final Map rawLogMessages; - private final int maxCapacity; - - public static LogCollector get() { - return INSTANCE; - } - - private LogCollector() { - this(DEFAULT_MAX_CAPACITY); - } - - // For testing purpose - LogCollector(int maxCapacity) { - this.maxCapacity = maxCapacity; - this.rawLogMessages = new ConcurrentHashMap<>(maxCapacity); - } - - public void addLogMessage(String logLevel, String message, Throwable throwable) { - RawLogMessage rawLogMessage = - new RawLogMessage(logLevel, message, throwable, System.currentTimeMillis()); - - if (rawLogMessages.size() < maxCapacity) { - AtomicInteger count = rawLogMessages.computeIfAbsent(rawLogMessage, k -> new AtomicInteger()); - count.incrementAndGet(); - } - } - - public Collection drain() { - if (rawLogMessages.isEmpty()) { - return Collections.emptyList(); - } - - List list = new ArrayList<>(); - - Iterator> iterator = - rawLogMessages.entrySet().iterator(); - - while (iterator.hasNext()) { - Map.Entry entry = iterator.next(); - - RawLogMessage logMessage = entry.getKey(); - logMessage.count = entry.getValue().get(); - - iterator.remove(); - - list.add(logMessage); - } - - return list; - } - - public static class RawLogMessage { - public final String messageOriginal; - public final String logLevel; - public final Throwable throwable; - public final long timestamp; - public int count; - - public RawLogMessage(String logLevel, String message, Throwable throwable, long timestamp) { - this.logLevel = logLevel; - this.messageOriginal = message; - this.throwable = throwable; - this.timestamp = timestamp; - } - - public String message() { - if (count > 1) { - return messageOriginal + ", {" + count + "} additional messages skipped"; - } - return messageOriginal; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - RawLogMessage that = (RawLogMessage) o; - return Objects.equals(logLevel, that.logLevel) - && Objects.equals(messageOriginal, that.messageOriginal) - && Objects.equals(throwable, that.throwable); - } - - @Override - public int hashCode() { - return Objects.hash(logLevel, messageOriginal, throwable); - } - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/telemetry/MetricCollector.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/telemetry/MetricCollector.java deleted file mode 100644 index 85503eee51..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/telemetry/MetricCollector.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.datadog.trace.api.telemetry; - -import static com.datadog.trace.api.telemetry.MetricCollector.Metric; -import static java.util.Collections.emptyList; -import static java.util.Collections.singletonList; - -import java.util.Arrays; -import java.util.Collection; -import java.util.List; -import java.util.Objects; - -public interface MetricCollector { - - int RAW_QUEUE_SIZE = 1024; - - // TODO All implementations are based on queueing metrics and never care when the queue is full. - // TODO This leads to always resetting counters even if the related metrics could not be enqueued. - // TODO So we may loose metric information during this call. - void prepareMetrics(); - - Collection drain(); - - class Metric { - public final String metricName; - public final boolean common; - public final String namespace; - public final String type; - public final long timestamp; - public final Number value; - public final List tags; - - public Metric( - String namespace, - boolean common, - String metricName, - String type, - Number value, - final String tag) { - this( - namespace, - common, - metricName, - type, - value, - tag == null ? emptyList() : singletonList(tag)); - } - - public Metric( - String namespace, - boolean common, - String metricName, - String type, - Number value, - final String... tags) { - this(namespace, common, metricName, type, value, Arrays.asList(tags)); - } - - public Metric( - String namespace, - boolean common, - String metricName, - String type, - Number value, - final List tags) { - this.namespace = namespace; - this.common = common; - this.metricName = metricName; - this.type = type; - this.timestamp = System.currentTimeMillis() / 1000; - this.value = value; - this.tags = tags; - } - - @Override - public boolean equals(final Object o) { - if (this == o) return true; - if (!(o instanceof Metric)) return false; - Metric metric = (Metric) o; - return common == metric.common - && Objects.equals(metricName, metric.metricName) - && Objects.equals(namespace, metric.namespace) - && Objects.equals(tags, metric.tags); - } - - @Override - public int hashCode() { - return Objects.hash(metricName, common, namespace, tags); - } - - @Override - public String toString() { - return "Metric{" - + "metricName='" - + metricName - + '\'' - + ", common=" - + common - + ", namespace='" - + namespace - + '\'' - + ", type='" - + type - + '\'' - + ", timestamp=" - + timestamp - + ", value=" - + value - + ", tags=" - + tags - + '}'; - } - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/telemetry/WafMetricCollector.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/telemetry/WafMetricCollector.java deleted file mode 100644 index 79b877eb39..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/api/telemetry/WafMetricCollector.java +++ /dev/null @@ -1,189 +0,0 @@ -package com.datadog.trace.api.telemetry; - -import java.util.Collection; -import java.util.Collections; -import java.util.LinkedList; -import java.util.List; -import java.util.concurrent.ArrayBlockingQueue; -import java.util.concurrent.BlockingQueue; -import java.util.concurrent.atomic.AtomicInteger; -import java.util.concurrent.atomic.AtomicLong; - -public class WafMetricCollector implements MetricCollector { - - public static final WafMetricCollector INSTANCE = new WafMetricCollector(); - - public static WafMetricCollector get() { - return WafMetricCollector.INSTANCE; - } - - private static final String NAMESPACE = "appsec"; - - private static final BlockingQueue rawMetricsQueue = - new ArrayBlockingQueue<>(RAW_QUEUE_SIZE); - - private static final AtomicInteger wafInitCounter = new AtomicInteger(); - private static final AtomicInteger wafUpdatesCounter = new AtomicInteger(); - - private static final AtomicRequestCounter wafRequestCounter = new AtomicRequestCounter(); - private static final AtomicRequestCounter wafTriggeredRequestCounter = new AtomicRequestCounter(); - private static final AtomicRequestCounter wafBlockedRequestCounter = new AtomicRequestCounter(); - - /** WAF version that will be initialized with wafInit and reused for all metrics. */ - private static String wafVersion = ""; - /** - * Rules version that will be updated on each wafInit and wafUpdates. This is not entirely - * accurate, since wafRequest metrics might be collected for a period where a rules update happens - * and some requests will be incorrectly reported with the old or new rules version. - */ - private static String rulesVersion = ""; - - public void wafInit(final String wafVersion, final String rulesVersion) { - WafMetricCollector.wafVersion = wafVersion; - WafMetricCollector.rulesVersion = rulesVersion; - rawMetricsQueue.offer( - new WafInitRawMetric(wafInitCounter.incrementAndGet(), wafVersion, rulesVersion)); - } - - public void wafUpdates(final String rulesVersion) { - rawMetricsQueue.offer( - new WafUpdatesRawMetric(wafUpdatesCounter.incrementAndGet(), wafVersion, rulesVersion)); - - // Flush request metrics to get the new version. - if (rulesVersion != null - && WafMetricCollector.rulesVersion != null - && !rulesVersion.equals(WafMetricCollector.rulesVersion)) { - WafMetricCollector.get().prepareMetrics(); - } - WafMetricCollector.rulesVersion = rulesVersion; - } - - public void wafRequest() { - wafRequestCounter.increment(); - } - - public void wafRequestTriggered() { - wafTriggeredRequestCounter.increment(); - } - - public void wafRequestBlocked() { - wafBlockedRequestCounter.increment(); - } - - @Override - public Collection drain() { - if (!rawMetricsQueue.isEmpty()) { - List list = new LinkedList<>(); - int drained = rawMetricsQueue.drainTo(list); - if (drained > 0) { - return list; - } - } - return Collections.emptyList(); - } - - @Override - public void prepareMetrics() { - // Requests - if (wafRequestCounter.get() > 0) { - if (!rawMetricsQueue.offer( - new WafRequestsRawMetric( - wafRequestCounter.getAndReset(), - WafMetricCollector.wafVersion, - WafMetricCollector.rulesVersion, - false, - false))) { - return; - } - } - - // Triggered requests - if (wafTriggeredRequestCounter.get() > 0) { - if (!rawMetricsQueue.offer( - new WafRequestsRawMetric( - wafTriggeredRequestCounter.getAndReset(), - WafMetricCollector.wafVersion, - WafMetricCollector.rulesVersion, - true, - false))) { - return; - } - } - - // Blocked requests - if (wafBlockedRequestCounter.get() > 0) { - rawMetricsQueue.offer( - new WafRequestsRawMetric( - wafBlockedRequestCounter.getAndReset(), - WafMetricCollector.wafVersion, - WafMetricCollector.rulesVersion, - true, - true)); - } - } - - public abstract static class WafMetric extends Metric { - - public WafMetric(String metricName, long counter, String... tags) { - super(NAMESPACE, true, metricName, "count", counter, tags); - } - } - - public static class WafInitRawMetric extends WafMetric { - public WafInitRawMetric( - final long counter, final String wafVersion, final String rulesVersion) { - super( - "waf.init", counter, "waf_version:" + wafVersion, "event_rules_version:" + rulesVersion); - } - } - - public static class WafUpdatesRawMetric extends WafMetric { - public WafUpdatesRawMetric( - final long counter, final String wafVersion, final String rulesVersion) { - super( - "waf.updates", - counter, - "waf_version:" + wafVersion, - "event_rules_version:" + rulesVersion); - } - } - - public static class WafRequestsRawMetric extends WafMetric { - public WafRequestsRawMetric( - final long counter, - final String wafVersion, - final String rulesVersion, - final boolean triggered, - final boolean blocked) { - super( - "waf.requests", - counter, - "waf_version:" + wafVersion, - "event_rules_version:" + rulesVersion, - "rule_triggered:" + triggered, - "request_blocked:" + blocked); - } - } - - public static class AtomicRequestCounter { - - private final AtomicLong atomicLong = new AtomicLong(); - private volatile long timestamp; - - public final long get() { - return atomicLong.get(); - } - - public final long getAndReset() { - timestamp = 0; - return atomicLong.getAndSet(0); - } - - public final void increment() { - if (timestamp == 0) { - timestamp = System.currentTimeMillis(); - } - atomicLong.incrementAndGet(); - } - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/appsec/api/blocking/Blocking.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/appsec/api/blocking/Blocking.java deleted file mode 100644 index 857dfab7e9..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/appsec/api/blocking/Blocking.java +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0. - * This product includes software developed at Datadog (https://www.datadoghq.com/). - * Copyright 2016-Present Datadog, Inc. - */ - -package com.datadog.trace.appsec.api.blocking; - -import java.util.Collections; -import java.util.Map; - -/** - * Functionality related to blocking requests. This functionality is available if and only if the - * AppSec subsystem is enabled. - */ -public class Blocking { - private static volatile BlockingService SERVICE = BlockingService.NOOP; - - private Blocking() {} - - /** - * Starts a user-blocking action. - * - * @param userId a non-null unique identifier for the currently identified user - * @return an object through which the action in case of a match can be controlled - */ - public static UserBlockingSpec forUser(String userId) { - if (userId == null) { - throw new NullPointerException("userId cannot be null"); - } - if (SERVICE == null) { - throw new IllegalStateException("Blocking service is not available. Is AppSec disabled?"); - } - return new UserBlockingSpec(userId); - } - - /** - * Tries to commit an HTTP response with the specified status code and content type. No exception - * should escape if this fails. - * - *

This method returns false if blocking cannot be attempted because of the - * following conditions: - * - *

    - *
  • there is no span available, - *
  • blocking is not supported for the server being used, or - *
  • the blocking service is otherwise incapable, in principle, of blocking (e.g. it's a no-op - * implementation). - *
- * - *

This method does not return false if a blocking response has already been committed, or if - * there is an error when trying to write the response. This is because the writing may happen - * asynchronously, after the caller has returned. - * - * @param statusCode the status code of the response - * @param contentType the content-type of the response. - * @param extraHeaders map of headers to set in the response - * @return whether blocking was/will be attempted - */ - public static boolean tryCommitBlockingResponse( - int statusCode, BlockingContentType contentType, Map extraHeaders) { - try { - return SERVICE.tryCommitBlockingResponse(statusCode, contentType, extraHeaders); - } catch (Exception e) { - return false; - } - } - - /** - * Equivalent to calling {@link #tryCommitBlockingResponse(int, BlockingContentType, Map)} with the last parameter being an empty map. - * - * @param statusCode the status code of the response - * @param contentType the content-type of the response. - * @return whether blocking was/will be attempted - */ - public static boolean tryCommitBlockingResponse(int statusCode, BlockingContentType contentType) { - try { - boolean committedBlockingResponse = - SERVICE.tryCommitBlockingResponse( - statusCode, BlockingContentType.NONE, Collections.emptyMap()); - return committedBlockingResponse; - } catch (Exception e) { - return false; - } - } - - /** - * Controls the implementation for blocking. The AppSec subsystem calls this method on startup. - * This can be called explicitly for e.g. testing purposes. - * - * @param service the implementation for blocking. - */ - public static void setBlockingService(BlockingService service) { - Blocking.SERVICE = service; - } - - public static class UserBlockingSpec { - private final String userId; - - private UserBlockingSpec(String userId) { - this.userId = userId; - } - - /** - * Whether the user in question should be blocked, and, if so, the details of the blocking - * response - * - * @return the details of the blocking response, or null if the user is not to be blocked - */ - public BlockingDetails shouldBlock() { - return SERVICE.shouldBlockUser(userId); - } - - /** - * Convenience method that: - * - *

    - *
  • calls {@link #shouldBlock()}, and, if the result is non-null - *
  • calls {@link #tryCommitBlockingResponse(int, BlockingContentType)}, and - *
  • throws an exception of the type {@link BlockingException} - *
- */ - public void blockIfMatch() { - BlockingDetails blockingDetails = shouldBlock(); - if (blockingDetails == null) { - return; - } - - SERVICE.tryCommitBlockingResponse( - blockingDetails.statusCode, - blockingDetails.blockingContentType, - blockingDetails.extraHeaders); - throw new BlockingException("Blocking user with id '" + userId + "'"); - } - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/appsec/api/blocking/BlockingDetails.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/appsec/api/blocking/BlockingDetails.java deleted file mode 100644 index 3acddb86ab..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/appsec/api/blocking/BlockingDetails.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0. - * This product includes software developed at Datadog (https://www.datadoghq.com/). - * Copyright 2016-Present Datadog, Inc. - */ - -package com.datadog.trace.appsec.api.blocking; - -import java.util.Map; - -public class BlockingDetails { - public final int statusCode; - public final BlockingContentType blockingContentType; - public final Map extraHeaders; - - public BlockingDetails( - int statusCode, BlockingContentType blockingContentType, Map extraHeaders) { - this.statusCode = statusCode; - this.blockingContentType = blockingContentType; - this.extraHeaders = extraHeaders; - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/appsec/api/blocking/BlockingException.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/appsec/api/blocking/BlockingException.java deleted file mode 100644 index 3d517076cd..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/appsec/api/blocking/BlockingException.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0. - * This product includes software developed at Datadog (https://www.datadoghq.com/). - * Copyright 2016-Present Datadog, Inc. - */ - -package com.datadog.trace.appsec.api.blocking; - -public class BlockingException extends RuntimeException { - public BlockingException() {} - - public BlockingException(String message) { - super(message); - } - - public BlockingException(String message, Throwable cause) { - super(message, cause); - } - - public BlockingException(Throwable cause) { - super(cause); - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/appsec/api/blocking/BlockingService.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/appsec/api/blocking/BlockingService.java deleted file mode 100644 index 03be28f8f8..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/appsec/api/blocking/BlockingService.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0. - * This product includes software developed at Datadog (https://www.datadoghq.com/). - * Copyright 2016-Present Datadog, Inc. - */ - -package com.datadog.trace.appsec.api.blocking; - -import androidx.annotation.NonNull; - -import java.util.Map; - -public interface BlockingService { - BlockingService NOOP = new BlockingServiceNoop(); - - BlockingDetails shouldBlockUser(@NonNull String userId); - - boolean tryCommitBlockingResponse( - int statusCode, @NonNull BlockingContentType type, @NonNull Map extraHeaders); - - class BlockingServiceNoop implements BlockingService { - private BlockingServiceNoop() {} - - @Override - public BlockingDetails shouldBlockUser(@NonNull String userId) { - return null; - } - - @Override - public boolean tryCommitBlockingResponse( - int statusCode, - @NonNull BlockingContentType type, - @NonNull Map extraHeaders) { - return false; - } - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/bootstrap/config/provider/AgentArgsInjector.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/bootstrap/config/provider/AgentArgsInjector.java deleted file mode 100644 index eb0727113f..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/bootstrap/config/provider/AgentArgsInjector.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.datadog.trace.bootstrap.config.provider; - -import com.datadog.trace.util.Strings; - -import java.util.Map; - -public class AgentArgsInjector { - - /** - * Parses agent arguments and sets corresponding system properties. - * - * @param agentArgs Agent arguments to be parsed and set - */ - public static void injectAgentArgsConfig(String agentArgs) { - Map args = ConfigConverter.parseMap(agentArgs, "javaagent arguments", '='); - injectAgentArgsConfig(args); - } - - public static void injectAgentArgsConfig(Map args) { - if (args == null) { - return; - } - for (Map.Entry e : args.entrySet()) { - String propertyName = e.getKey(); - String existingPropertyValue = System.getProperty(propertyName); - if (existingPropertyValue != null) { - // system properties should have higher priority than agent arguments - continue; - } - - String envVarName = Strings.toEnvVar(propertyName); - String envVarValue = System.getenv(envVarName); - if (envVarValue != null) { - // env variables should have higher priority than agent arguments - continue; - } - - String propertyValue = e.getValue(); - System.setProperty(propertyName, propertyValue); - } - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/bootstrap/config/provider/AgentArgsParser.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/bootstrap/config/provider/AgentArgsParser.java deleted file mode 100644 index 18157a5609..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/bootstrap/config/provider/AgentArgsParser.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.datadog.trace.bootstrap.config.provider; - -import com.datadog.trace.logger.Logger; -import com.datadog.trace.logger.LoggerFactory; - -import java.util.HashMap; -import java.util.Map; -import java.util.Scanner; - -public class AgentArgsParser { - - private static final Logger log = LoggerFactory.getLogger(AgentArgsParser.class); - - /** - * Parses agent arguments. Key-value pairs should be separated with ',' character. Key and value - * within a pair should be separated with '=' character. For simplicity quoting is not supported - * - * @param agentArgs in form "key1=value1,key2=value2,..." - * @return parsed arguments - */ - public static Map parseAgentArgs(String agentArgs) { - if (agentArgs == null || agentArgs.isEmpty()) { - return null; - } - try { - Map args = new HashMap<>(); - - Scanner scanner = new Scanner(agentArgs); - scanner.useDelimiter(","); - while (scanner.hasNext()) { - String arg = scanner.next(); - int idx = arg.indexOf('='); - String key = arg.substring(0, idx); - String value = arg.substring(idx + 1); - args.put(key, value); - } - return args; - - } catch (Exception ex) { - log.error("Error parsing agent args: {}", agentArgs, ex); - return null; - } - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/civisibility/interceptor/CiVisibilityApmProtocolInterceptor.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/civisibility/interceptor/CiVisibilityApmProtocolInterceptor.java deleted file mode 100644 index 0a811cff92..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/civisibility/interceptor/CiVisibilityApmProtocolInterceptor.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.datadog.trace.civisibility.interceptor; - -import com.datadog.trace.api.DDSpanTypes; -import com.datadog.trace.api.interceptor.AbstractTraceInterceptor; -import com.datadog.trace.api.interceptor.MutableSpan; -import com.datadog.trace.bootstrap.instrumentation.api.Tags; - -import java.util.Collection; -import java.util.List; -import java.util.stream.Collectors; - -/** - * An interceptor that removes spans and tags that are not supported in the APM protocol (some spans - * and tags related to certain CI Visibility features, e.g. Test Suite Level Visibility, can only be - * written with CI Test Cycle protocol) - */ -public class CiVisibilityApmProtocolInterceptor extends AbstractTraceInterceptor { - - public static final CiVisibilityApmProtocolInterceptor INSTANCE = - new CiVisibilityApmProtocolInterceptor(Priority.CI_VISIBILITY_APM); - - protected CiVisibilityApmProtocolInterceptor(Priority priority) { - super(priority); - } - - @Override - public Collection onTraceComplete( - Collection trace) { - - List filteredTrace = - trace.stream().filter(this::isSupportedByApmProtocol).collect(Collectors.toList()); - for (MutableSpan span : filteredTrace) { - span.setTag(Tags.TEST_SESSION_ID, (Number) null); - span.setTag(Tags.TEST_MODULE_ID, (Number) null); - span.setTag(Tags.TEST_SUITE_ID, (Number) null); - } - return filteredTrace; - } - - private boolean isSupportedByApmProtocol(MutableSpan span) { - String spanType = span.getSpanType(); - return !DDSpanTypes.TEST_SESSION_END.equals(spanType) - && !DDSpanTypes.TEST_MODULE_END.equals(spanType) - && !DDSpanTypes.TEST_SUITE_END.equals(spanType); - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/civisibility/interceptor/CiVisibilityTraceInterceptor.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/civisibility/interceptor/CiVisibilityTraceInterceptor.java deleted file mode 100644 index acb4a7a367..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/civisibility/interceptor/CiVisibilityTraceInterceptor.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.datadog.trace.civisibility.interceptor; - -import com.datadog.trace.api.DDSpanTypes; -import com.datadog.trace.api.DDTags; -import com.datadog.trace.api.interceptor.AbstractTraceInterceptor; -import com.datadog.trace.api.interceptor.MutableSpan; -import com.datadog.trace.bootstrap.instrumentation.api.UTF8BytesString; -import com.datadog.trace.core.DDSpan; -import com.datadog.trace.core.DDTraceCoreInfo; - -import java.util.Collection; -import java.util.Collections; - -public class CiVisibilityTraceInterceptor extends AbstractTraceInterceptor { - - public static final CiVisibilityTraceInterceptor INSTANCE = - new CiVisibilityTraceInterceptor(Priority.CI_VISIBILITY_TRACE); - - static final UTF8BytesString CIAPP_TEST_ORIGIN = UTF8BytesString.create("ciapp-test"); - - protected CiVisibilityTraceInterceptor(Priority priority) { - super(priority); - } - - @Override - public Collection onTraceComplete( - Collection trace) { - if (trace.isEmpty()) { - return trace; - } - - final DDSpan firstSpan = (DDSpan) trace.iterator().next(); - final DDSpan localRootSpan = firstSpan.getLocalRootSpan(); - - final DDSpan spanToCheck = null == localRootSpan ? firstSpan : localRootSpan; - - // If root span is not a CI visibility span, we drop the full trace. - CharSequence type = spanToCheck.getType(); // Don't null pointer if there is no type - if (type == null - || (!DDSpanTypes.TEST.contentEquals(type) - && !DDSpanTypes.TEST_SUITE_END.contentEquals(type) - && !DDSpanTypes.TEST_MODULE_END.contentEquals(type) - && !DDSpanTypes.TEST_SESSION_END.contentEquals(type))) { - return Collections.emptyList(); - } - - // If the trace belongs to a "test", we need to set the origin to `ciapp-test` and the - // `library_version` tag for all spans. - firstSpan.context().setOrigin(CIAPP_TEST_ORIGIN); - firstSpan.setTag(DDTags.LIBRARY_VERSION_TAG_KEY, DDTraceCoreInfo.VERSION); - for (MutableSpan span : trace) { - span.setTag(DDTags.LIBRARY_VERSION_TAG_KEY, DDTraceCoreInfo.VERSION); - } - - return trace; - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/common/metrics/AggregateMetric.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/common/metrics/AggregateMetric.java deleted file mode 100644 index 3851412703..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/common/metrics/AggregateMetric.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.datadog.trace.common.metrics; - -import com.datadog.trace.core.histogram.Histogram; -import com.datadog.trace.core.histogram.Histograms; - -import java.util.concurrent.atomic.AtomicLongArray; - -/** Not thread-safe. Accumulates counts and durations. */ -public final class AggregateMetric { - - static final long ERROR_TAG = 0x8000000000000000L; - static final long TOP_LEVEL_TAG = 0x4000000000000000L; - - private final Histogram okLatencies; - private final Histogram errorLatencies; - private int errorCount; - private int hitCount; - private int topLevelCount; - private long duration; - - public AggregateMetric() { - okLatencies = Histograms.newHistogram(); - errorLatencies = Histograms.newHistogram(); - } - - public AggregateMetric recordDurations(int count, AtomicLongArray durations) { - this.hitCount += count; - for (int i = 0; i < count && i < durations.length(); ++i) { - long duration = durations.getAndSet(i, 0); - if ((duration & TOP_LEVEL_TAG) == TOP_LEVEL_TAG) { - duration ^= TOP_LEVEL_TAG; - ++topLevelCount; - } - if ((duration & ERROR_TAG) == ERROR_TAG) { - // then it's an error - duration ^= ERROR_TAG; - errorLatencies.accept(duration); - ++errorCount; - } else { - okLatencies.accept(duration); - } - this.duration += duration; - } - return this; - } - - public int getErrorCount() { - return errorCount; - } - - public int getHitCount() { - return hitCount; - } - - public int getTopLevelCount() { - return topLevelCount; - } - - public long getDuration() { - return duration; - } - - public Histogram getOkLatencies() { - return okLatencies; - } - - public Histogram getErrorLatencies() { - return errorLatencies; - } - - public void clear() { - this.errorCount = 0; - this.hitCount = 0; - this.topLevelCount = 0; - this.duration = 0; - this.okLatencies.clear(); - this.errorLatencies.clear(); - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/common/metrics/Batch.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/common/metrics/Batch.java deleted file mode 100644 index d99c11b13a..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/common/metrics/Batch.java +++ /dev/null @@ -1,89 +0,0 @@ -package com.datadog.trace.common.metrics; - -import java.util.concurrent.atomic.AtomicIntegerFieldUpdater; -import java.util.concurrent.atomic.AtomicLongArray; - -/** - * This is a thread-safe container for partial conflating and accumulating partial aggregates on the - * same key. - * - *

Updates to an already consumed batch are rejected. - * - *

A batch can currently take at most 64 values. Attempts to add the 65th update will be - * rejected. - */ -public final class Batch implements InboxItem { - - private static final int MAX_BATCH_SIZE = 64; - private static final AtomicIntegerFieldUpdater COUNT = - AtomicIntegerFieldUpdater.newUpdater(Batch.class, "count"); - private static final AtomicIntegerFieldUpdater COMMITTED = - AtomicIntegerFieldUpdater.newUpdater(Batch.class, "committed"); - - /** - * This counter has two states: - * - *

    - *
  1. negative: the batch has been used, must not add values - *
  2. otherwise: the number of values added to the batch - *
- */ - private volatile int count = 0; - /** incremented when a duration has been added. */ - private volatile int committed = 0; - - private MetricKey key; - private final AtomicLongArray durations; - - Batch(MetricKey key) { - this(new AtomicLongArray(MAX_BATCH_SIZE)); - this.key = key; - } - - Batch() { - this(new AtomicLongArray(MAX_BATCH_SIZE)); - } - - private Batch(AtomicLongArray durations) { - this.durations = durations; - } - - public MetricKey getKey() { - return key; - } - - public Batch reset(MetricKey key) { - this.key = key; - COUNT.lazySet(this, 0); - return this; - } - - public boolean isUsed() { - return count < 0; - } - - public boolean add(long tag, long durationNanos) { - // technically this would be wrong if there were 2^31 unsuccessful - // attempts to add a value, but this an acceptable risk - int position = COUNT.getAndIncrement(this); - if (position >= 0 && position < durations.length()) { - durations.set(position, tag | durationNanos); - COMMITTED.getAndIncrement(this); - return true; - } - return false; - } - - public void contributeTo(AggregateMetric aggregate) { - int count = Math.min(COUNT.getAndSet(this, Integer.MIN_VALUE), MAX_BATCH_SIZE); - if (count >= 0) { - // wait for the duration to have been set. - // note this mechanism only supports a single reader - while (committed != count) { - Thread.yield(); - } - COMMITTED.lazySet(this, 0); - aggregate.recordDurations(count, durations); - } - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/common/metrics/MetricWriter.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/common/metrics/MetricWriter.java deleted file mode 100644 index d2fe567ab6..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/common/metrics/MetricWriter.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.datadog.trace.common.metrics; - -public interface MetricWriter { - void startBucket(int metricCount, long start, long duration); - - void add(MetricKey key, AggregateMetric aggregate); - - void finishBucket(); - - void reset(); -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/core/CoreTracer.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/core/CoreTracer.java index cc168e984c..a03dedaf17 100644 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/core/CoreTracer.java +++ b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/core/CoreTracer.java @@ -25,7 +25,6 @@ import com.datadog.trace.api.TracePropagationStyle; import com.datadog.trace.api.config.GeneralConfig; import com.datadog.trace.api.experimental.DataStreamsCheckpointer; -import com.datadog.trace.api.flare.TracerFlare; import com.datadog.trace.api.gateway.CallbackProvider; import com.datadog.trace.api.gateway.InstrumentationGateway; import com.datadog.trace.api.gateway.RequestContext; @@ -54,7 +53,6 @@ import com.datadog.trace.bootstrap.instrumentation.api.ScopeSource; import com.datadog.trace.bootstrap.instrumentation.api.ScopeState; import com.datadog.trace.bootstrap.instrumentation.api.TagContext; -import com.datadog.trace.civisibility.interceptor.CiVisibilityTraceInterceptor; import com.datadog.trace.common.metrics.MetricsAggregator; import com.datadog.trace.common.metrics.NoOpMetricsAggregator; import com.datadog.trace.common.sampling.Sampler; @@ -554,11 +552,6 @@ private CoreTracer( this.propagation = new NoOpCorePropagation(builtExtractor); this.tagInterceptor = null == tagInterceptor ? new TagInterceptor(new RuleFlags(config)) : tagInterceptor; - if (config.isCiVisibilityEnabled()) { - if (config.isCiVisibilityTraceSanitationEnabled()) { - addTraceInterceptor(CiVisibilityTraceInterceptor.INSTANCE); - } - } this.instrumentationGateway = instrumentationGateway; callbackProviderAppSec = instrumentationGateway.getCallbackProvider(RequestContextSlot.APPSEC); callbackProviderIast = instrumentationGateway.getCallbackProvider(RequestContextSlot.IAST); @@ -1001,11 +994,6 @@ public TraceSegment getTraceSegment() { return null; } - public void addTracerReportToFlare(ZipOutputStream zip) throws IOException { - TracerFlare.addText(zip, "tracer_health.txt", healthMetrics.summary()); - TracerFlare.addText(zip, "span_metrics.txt", SpanMetricRegistry.getInstance().summary()); - } - private static String[] generateConstantTags(final Config config) { final List constantTags = new ArrayList<>(); diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/core/StatusLogger.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/core/StatusLogger.java index 3a4549662e..52ba4ecc5e 100644 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/core/StatusLogger.java +++ b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/core/StatusLogger.java @@ -115,12 +115,6 @@ public void toJson(JsonWriter writer, Config config) throws IOException { writer.value(config.isProfilingEnabled()); writer.name("remote_config_enabled"); writer.value(config.isRemoteConfigEnabled()); - writer.name("debugger_enabled"); - writer.value(config.isDebuggerEnabled()); - writer.name("appsec_enabled"); - writer.value(config.getAppSecActivation().toString()); - writer.name("appsec_rules_file_path"); - writer.value(config.getAppSecRulesFile()); writer.name("telemetry_enabled"); writer.value(config.isTelemetryEnabled()); writer.name("telemetry_dependency_collection_enabled"); @@ -137,20 +131,12 @@ public void toJson(JsonWriter writer, Config config) throws IOException { writer.value(config.getRuntimeId()); writer.name("logging_settings"); writeObjectMap(writer, LoggingSettingsDescription.getDescription()); - writer.name("cws_enabled"); - writer.value(config.isCwsEnabled()); - writer.name("cws_tls_refresh"); - writer.value(config.getCwsTlsRefresh()); writer.name("datadog_profiler_enabled"); writer.value(config.isDatadogProfilerEnabled()); writer.name("datadog_profiler_safe"); writer.value(isDatadogProfilerSafeInCurrentEnvironment()); writer.name("datadog_profiler_enabled_overridden"); writer.value(isDatadogProfilerEnablementOverridden()); - if (config.getIastActivation() != ProductActivation.FULLY_DISABLED) { - writer.name("iast_enabled"); - writer.value(config.getIastActivation().toString()); - } writer.name("data_streams_enabled"); writer.value(config.isDataStreamsEnabled()); writer.endObject(); diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/core/datastreams/DatastreamsPayloadWriter.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/core/datastreams/DatastreamsPayloadWriter.java deleted file mode 100644 index 09d89b390c..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/core/datastreams/DatastreamsPayloadWriter.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.datadog.trace.core.datastreams; - -import java.util.Collection; - -public interface DatastreamsPayloadWriter { - void writePayload(Collection data); -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/core/datastreams/StatsBucket.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/core/datastreams/StatsBucket.java deleted file mode 100644 index e73317769e..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/core/datastreams/StatsBucket.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.datadog.trace.core.datastreams; - -import com.datadog.trace.bootstrap.instrumentation.api.Backlog; -import com.datadog.trace.bootstrap.instrumentation.api.StatsPoint; - -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -public class StatsBucket { - private final long startTimeNanos; - private final long bucketDurationNanos; - private final Map hashToGroup = new HashMap<>(); - private final Map, Long> backlogs = new HashMap<>(); - - public StatsBucket(long startTimeNanos, long bucketDurationNanos) { - this.startTimeNanos = startTimeNanos; - this.bucketDurationNanos = bucketDurationNanos; - } - - public void addPoint(StatsPoint statsPoint) { - StatsGroup statsGroup = hashToGroup.get(statsPoint.getHash()); - - // FIXME Java 7 - if (statsGroup == null) { - statsGroup = - new StatsGroup( - statsPoint.getEdgeTags(), statsPoint.getHash(), statsPoint.getParentHash()); - hashToGroup.put(statsPoint.getHash(), statsGroup); - } - - statsGroup.add( - statsPoint.getPathwayLatencyNano(), - statsPoint.getEdgeLatencyNano(), - statsPoint.getPayloadSizeBytes()); - } - - public void addBacklog(Backlog backlog) { - backlogs.compute( - backlog.getSortedTags(), - (k, v) -> (v == null) ? backlog.getValue() : Math.max(v, backlog.getValue())); - } - - public long getStartTimeNanos() { - return startTimeNanos; - } - - public long getBucketDurationNanos() { - return bucketDurationNanos; - } - - public Collection getGroups() { - return hashToGroup.values(); - } - - public Collection, Long>> getBacklogs() { - return backlogs.entrySet(); - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/core/datastreams/StatsGroup.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/core/datastreams/StatsGroup.java deleted file mode 100644 index eafb0021bc..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/core/datastreams/StatsGroup.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.datadog.trace.core.datastreams; - -import com.datadog.trace.core.histogram.Histogram; -import com.datadog.trace.core.histogram.Histograms; - -import java.util.List; - -public class StatsGroup { - private static final double NANOSECONDS_TO_SECOND = 1_000_000_000d; - - private final List edgeTags; - private final long hash; - private final long parentHash; - private final Histogram pathwayLatency; - private final Histogram edgeLatency; - private final Histogram payloadSize; - - public StatsGroup(List edgeTags, long hash, long parentHash) { - this.edgeTags = edgeTags; - this.hash = hash; - this.parentHash = parentHash; - pathwayLatency = Histograms.newHistogram(); - edgeLatency = Histograms.newHistogram(); - payloadSize = Histograms.newHistogram(); - } - - public void add(long pathwayLatencyNano, long edgeLatencyNano, long payloadSizeBytes) { - pathwayLatency.accept(((double) pathwayLatencyNano) / NANOSECONDS_TO_SECOND); - edgeLatency.accept(((double) edgeLatencyNano) / NANOSECONDS_TO_SECOND); - // payload size is set to zero when we cannot compute it - // in that case, it's probably better to have an empty histogram than filling it with zeros - if (payloadSizeBytes != 0) payloadSize.accept((double) payloadSizeBytes); - } - - public List getEdgeTags() { - return edgeTags; - } - - public long getHash() { - return hash; - } - - public long getParentHash() { - return parentHash; - } - - public Histogram getPathwayLatency() { - return pathwayLatency; - } - - public Histogram getEdgeLatency() { - return edgeLatency; - } - - public Histogram getPayloadSize() { - return payloadSize; - } - - @Override - public String toString() { - return "StatsGroup{" - + "edgeTags='" - + edgeTags - + '\'' - + ", hash=" - + hash - + ", parentHash=" - + parentHash - + '}'; - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/core/monitor/MonitoringImpl.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/core/monitor/MonitoringImpl.java deleted file mode 100644 index 87e7fe955f..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/core/monitor/MonitoringImpl.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.datadog.trace.core.monitor; - -import com.datadog.trace.api.StatsDClient; -import com.datadog.trace.monitor.Counter; -import com.datadog.trace.monitor.Monitoring; -import com.datadog.trace.monitor.NoOpCounter; -import com.datadog.trace.monitor.NoOpRecording; -import com.datadog.trace.monitor.Recording; - -import java.util.concurrent.TimeUnit; - -public final class MonitoringImpl implements Monitoring { - - private final StatsDClient statsd; - private final long flushAfterNanos; - private final boolean enabled; - - public MonitoringImpl(final StatsDClient statsd, long flushInterval, TimeUnit flushUnit) { - this.statsd = statsd; - this.flushAfterNanos = flushUnit.toNanos(flushInterval); - this.enabled = true; - } - - private MonitoringImpl() { - this.statsd = StatsDClient.NO_OP; - this.flushAfterNanos = 0; - this.enabled = false; - } - - @Override - public Recording newTimer(final String name) { - if (!enabled) { - return NoOpRecording.NO_OP; - } - return new Timer(name, statsd, flushAfterNanos); - } - - @Override - public Recording newTimer(final String name, final String... tags) { - if (!enabled) { - return NoOpRecording.NO_OP; - } - return new Timer(name, tags, statsd, flushAfterNanos); - } - - @Override - public Recording newThreadLocalTimer(final String name) { - if (!enabled) { - return NoOpRecording.NO_OP; - } - return new ThreadLocalRecording( - new ThreadLocal() { - @Override - protected Recording initialValue() { - return newTimer(name, "thread:" + Thread.currentThread().getName()); - } - }); - } - - @Override - public Counter newCounter(final String name) { - if (!enabled) { - return NoOpCounter.NO_OP; - } - return new StatsDCounter(name, statsd); - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/core/monitor/Timer.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/core/monitor/Timer.java deleted file mode 100644 index 73c7641bc7..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/core/monitor/Timer.java +++ /dev/null @@ -1,90 +0,0 @@ -package com.datadog.trace.core.monitor; - -import static com.datadog.trace.core.monitor.Utils.mergeTags; -import static java.util.concurrent.TimeUnit.NANOSECONDS; -import static java.util.concurrent.TimeUnit.SECONDS; - -import com.datadog.trace.api.StatsDClient; -import com.datadog.trace.core.histogram.Histogram; -import com.datadog.trace.core.histogram.Histograms; -import com.datadog.trace.monitor.Recording; - -/** - * A timer which records times in a histogram, and flushes stats from the histogram after a - * configurable period of time. - */ -public class Timer extends Recording { - - private static final long THIRTY_SECONDS_AS_MICROS = SECONDS.toMicros(30); - - private static final String[] P_50 = new String[] {"stat:p50"}; - private static final String[] P_99 = new String[] {"stat:p99"}; - private static final String[] MAX = new String[] {"stat:max"}; - - private final String name; - private final StatsDClient statsd; - private final Histogram histogram; - private final long flushAfterNanos; - - private final String[] p50Tags; - private final String[] p99Tags; - private final String[] maxTags; - - private long start; - private long lastFlush = 0; - - Timer(final String name, final String[] tags, final StatsDClient statsd, long flushAfterNanos) { - this.name = name; - this.statsd = statsd; - this.flushAfterNanos = flushAfterNanos; - this.histogram = Histograms.newHistogram(); - this.p50Tags = mergeTags(P_50, tags); - this.p99Tags = mergeTags(P_99, tags); - this.maxTags = mergeTags(MAX, tags); - } - - Timer(final String name, final StatsDClient statsd, long flushAfterNanos) { - this(name, null, statsd, flushAfterNanos); - } - - @Override - public Recording start() { - start = System.nanoTime(); - return this; - } - - @Override - public void reset() { - long now = System.nanoTime(); - record(now); - start = now; - } - - @Override - public void stop() { - record(System.nanoTime()); - } - - private void record(long now) { - // if it's longer than 30s, we have bigger problems - histogram.accept(Math.min(NANOSECONDS.toMicros(now - start), THIRTY_SECONDS_AS_MICROS)); - if (now - lastFlush > flushAfterNanos) { - lastFlush = now; - flush(); - } - } - - @Override - public void flush() { - if (histogram.isEmpty()) { - statsd.gauge(name, 0D, p50Tags); - statsd.gauge(name, 0D, p99Tags); - statsd.gauge(name, 0D, maxTags); - } else { - statsd.gauge(name, histogram.getValueAtQuantile(0.50), p50Tags); - statsd.gauge(name, histogram.getValueAtQuantile(0.99), p99Tags); - statsd.gauge(name, histogram.getMaxValue(), maxTags); - } - histogram.clear(); - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/lambda/ReadFromInputStreamJsonAdapter.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/lambda/ReadFromInputStreamJsonAdapter.java deleted file mode 100644 index 11f9cf6f53..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/lambda/ReadFromInputStreamJsonAdapter.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.datadog.trace.lambda; - -import com.squareup.moshi.JsonAdapter; -import com.squareup.moshi.JsonReader; -import com.squareup.moshi.JsonWriter; - -import java.io.ByteArrayInputStream; -import java.io.IOException; - -import okio.BufferedSink; - -public final class ReadFromInputStreamJsonAdapter extends JsonAdapter { - - @Override - public ByteArrayInputStream fromJson(JsonReader reader) throws IOException { - throw new UnsupportedOperationException(); - } - - @Override - public void toJson(JsonWriter writer, ByteArrayInputStream inputStream) throws IOException { - if (inputStream != null) { - BufferedSink sink = writer.valueSink(); - byte[] bytes = getInputBytes(inputStream); - sink.write(bytes); - sink.flush(); - } - } - - private byte[] getInputBytes(ByteArrayInputStream inputStream) throws IOException { - inputStream.mark(0); - byte[] bytes = new byte[inputStream.available()]; - inputStream.read(bytes); - inputStream.reset(); - return bytes; - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/logging/GlobalLogLevelSwitcher.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/logging/GlobalLogLevelSwitcher.java deleted file mode 100644 index 707b763177..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/logging/GlobalLogLevelSwitcher.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.datadog.trace.logging; - -import com.datadog.trace.logger.ILoggerFactory; -import com.datadog.trace.logger.Logger; -import com.datadog.trace.logger.LoggerFactory; - -public class GlobalLogLevelSwitcher implements LogLevelSwitcher { - private static volatile LogLevelSwitcher INSTANCE = null; - - public static LogLevelSwitcher get() { - LogLevelSwitcher switcher = INSTANCE; - if (switcher == null) { - ILoggerFactory factory = LoggerFactory.getILoggerFactory(); - INSTANCE = switcher = new GlobalLogLevelSwitcher(factory); - } - return switcher; - } - - private final Logger log; - private final LogLevelSwitcher delegate; - - GlobalLogLevelSwitcher(ILoggerFactory factory) { - log = factory.getLogger(GlobalLogLevelSwitcher.class.getName()); - if (factory instanceof LogLevelSwitcher) { - delegate = (LogLevelSwitcher) factory; - } else { - log.error( - "Unable to find global log level switcher, found {}", factory.getClass().getSimpleName()); - delegate = null; - } - } - - @Override - public void switchLevel(LogLevel level) { - if (delegate != null) { - delegate.switchLevel(level); - } - } - - @Override - public void restore() { - if (delegate != null) { - delegate.restore(); - } - } - - @Override - public void reinitialize() { - if (delegate != null) { - delegate.reinitialize(); - } - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/logging/LogLevel.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/logging/LogLevel.java deleted file mode 100644 index 42ce35aaea..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/logging/LogLevel.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.datadog.trace.logging; - -import java.util.Locale; - -/** Log level enum. */ -public enum LogLevel { - TRACE, - DEBUG, - INFO, - WARN, - ERROR, - OFF; - - /** - * Case insensitive conversion from {@link String} to {@link LogLevel}. - * - *

Fallback is {@link #INFO}. - * - * @param level the {@link LogLevel} as a {@link String} - * @return the corresponding {@link LogLevel} enum - */ - public static LogLevel fromString(String level) { - String upper = level.toUpperCase(Locale.US); - try { - return Enum.valueOf(LogLevel.class, upper); - } catch (Throwable t) { - // INFO is the fallback - return LogLevel.INFO; - } - } - - /** - * Check if a {@link LogLevel} is enabled for this {@link LogLevel}. - * - * @param level the {@link LogLevel} to check - * @return true if the {@code level} is enabled, false otherwise - */ - public boolean isEnabled(LogLevel level) { - return this.compareTo(level) >= 0; - } -} diff --git a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/logging/LogLevelSwitcher.java b/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/logging/LogLevelSwitcher.java deleted file mode 100644 index 7595231b05..0000000000 --- a/features/dd-sdk-android-trace/src/main/java/com/datadog/trace/logging/LogLevelSwitcher.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.datadog.trace.logging; - -/** Enables temporary runtime switching of LogLevel. */ -public interface LogLevelSwitcher { - - /** - * Temporarily switch the current LogLevel to a new LogLevel - * - * @param level the LogLevel to switch to - */ - void switchLevel(LogLevel level); - - /** Restore the LogLevel to the original setting. */ - void restore(); - - /** Re-execute logging settings initialization */ - void reinitialize(); -}