feat(Tests): Make DataHub Tests Feature configurable via env variable (#5020)

This commit is contained in:
John Joyce 2022-05-26 12:29:20 -07:00 committed by GitHub
parent 480fb2e770
commit b6773e4637
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 67 additions and 6 deletions

View File

@ -185,6 +185,7 @@ import com.linkedin.datahub.graphql.types.test.TestType;
import com.linkedin.datahub.graphql.types.usage.UsageType;
import com.linkedin.entity.client.EntityClient;
import com.linkedin.metadata.config.IngestionConfiguration;
import com.linkedin.metadata.config.TestsConfiguration;
import com.linkedin.metadata.entity.EntityService;
import com.linkedin.metadata.graph.GraphClient;
import com.linkedin.metadata.models.registry.EntityRegistry;
@ -250,6 +251,7 @@ public class GmsGraphQLEngine {
private final AuthorizationConfiguration authorizationConfiguration;
private final VisualConfiguration visualConfiguration;
private final TelemetryConfiguration telemetryConfiguration;
private final TestsConfiguration testsConfiguration;
private final DatasetType datasetType;
private final CorpUserType corpUserType;
@ -320,7 +322,8 @@ public class GmsGraphQLEngine {
final TimelineService timelineService,
final boolean supportsImpactAnalysis,
final VisualConfiguration visualConfiguration,
final TelemetryConfiguration telemetryConfiguration
final TelemetryConfiguration telemetryConfiguration,
final TestsConfiguration testsConfiguration
) {
this.entityClient = entityClient;
@ -343,6 +346,7 @@ public class GmsGraphQLEngine {
this.authorizationConfiguration = Objects.requireNonNull(authorizationConfiguration);
this.visualConfiguration = visualConfiguration;
this.telemetryConfiguration = telemetryConfiguration;
this.testsConfiguration = testsConfiguration;
this.datasetType = new DatasetType(entityClient);
this.corpUserType = new CorpUserType(entityClient);
@ -538,7 +542,11 @@ public class GmsGraphQLEngine {
this.ingestionConfiguration,
this.authenticationConfiguration,
this.authorizationConfiguration,
supportsImpactAnalysis, this.visualConfiguration, this.telemetryConfiguration))
this.supportsImpactAnalysis,
this.visualConfiguration,
this.telemetryConfiguration,
this.testsConfiguration
))
.dataFetcher("me", new MeResolver(this.entityClient))
.dataFetcher("search", new SearchResolver(this.entityClient))
.dataFetcher("searchAcrossEntities", new SearchAcrossEntitiesResolver(this.entityClient))

View File

@ -14,8 +14,10 @@ import com.linkedin.datahub.graphql.generated.PoliciesConfig;
import com.linkedin.datahub.graphql.generated.Privilege;
import com.linkedin.datahub.graphql.generated.ResourcePrivileges;
import com.linkedin.datahub.graphql.generated.TelemetryConfig;
import com.linkedin.datahub.graphql.generated.TestsConfig;
import com.linkedin.datahub.graphql.generated.VisualConfiguration;
import com.linkedin.metadata.config.IngestionConfiguration;
import com.linkedin.metadata.config.TestsConfiguration;
import com.linkedin.metadata.telemetry.TelemetryConfiguration;
import com.linkedin.metadata.version.GitVersion;
import graphql.schema.DataFetcher;
@ -37,6 +39,7 @@ public class AppConfigResolver implements DataFetcher<CompletableFuture<AppConfi
private final boolean _supportsImpactAnalysis;
private final VisualConfiguration _visualConfiguration;
private final TelemetryConfiguration _telemetryConfiguration;
private final TestsConfiguration _testsConfiguration;
public AppConfigResolver(
final GitVersion gitVersion,
@ -46,7 +49,8 @@ public class AppConfigResolver implements DataFetcher<CompletableFuture<AppConfi
final AuthorizationConfiguration authorizationConfiguration,
final boolean supportsImpactAnalysis,
final VisualConfiguration visualConfiguration,
final TelemetryConfiguration telemetryConfiguration) {
final TelemetryConfiguration telemetryConfiguration,
final TestsConfiguration testsConfiguration) {
_gitVersion = gitVersion;
_isAnalyticsEnabled = isAnalyticsEnabled;
_ingestionConfiguration = ingestionConfiguration;
@ -55,6 +59,7 @@ public class AppConfigResolver implements DataFetcher<CompletableFuture<AppConfi
_supportsImpactAnalysis = supportsImpactAnalysis;
_visualConfiguration = visualConfiguration;
_telemetryConfiguration = telemetryConfiguration;
_testsConfiguration = testsConfiguration;
}
@Override
@ -107,6 +112,10 @@ public class AppConfigResolver implements DataFetcher<CompletableFuture<AppConfi
telemetryConfig.setEnableThirdPartyLogging(_telemetryConfiguration.isEnableThirdPartyLogging());
appConfig.setTelemetryConfig(telemetryConfig);
final TestsConfig testsConfig = new TestsConfig();
testsConfig.setEnabled(_testsConfiguration.isEnabled());
appConfig.setTestsConfig(testsConfig);
return CompletableFuture.completedFuture(appConfig);
}

View File

@ -127,6 +127,11 @@ type AppConfig {
Configurations related to tracking users in the app
"""
telemetryConfig: TelemetryConfig!
"""
Configurations related to DataHub tests
"""
testsConfig: TestsConfig!
}
"""
@ -265,3 +270,13 @@ type ManagedIngestionConfig {
"""
enabled: Boolean!
}
"""
Configurations related to DataHub Tests feature
"""
type TestsConfig {
"""
Whether Tests feature is enabled
"""
enabled: Boolean!
}

View File

@ -28,6 +28,9 @@ export const DEFAULT_APP_CONFIG = {
telemetryConfig: {
enableThirdPartyLogging: false,
},
testsConfig: {
enabled: false,
},
};
export const AppConfigContext = React.createContext<{

View File

@ -40,6 +40,9 @@ query appConfig {
telemetryConfig {
enableThirdPartyLogging
}
testsConfig {
enabled
}
}
}

View File

@ -0,0 +1,14 @@
package com.linkedin.metadata.config;
import lombok.Data;
/**
* POJO representing the "tests" configuration block in application.yml.on.yml
*/
@Data
public class TestsConfiguration {
/**
* Whether tests are enabled
*/
public boolean enabled;
}

View File

@ -3,6 +3,7 @@ package com.linkedin.gms.factory.config;
import com.datahub.authentication.AuthenticationConfiguration;
import com.datahub.authorization.AuthorizationConfiguration;
import com.linkedin.metadata.config.IngestionConfiguration;
import com.linkedin.metadata.config.TestsConfiguration;
import com.linkedin.metadata.telemetry.TelemetryConfiguration;
import com.linkedin.gms.factory.spring.YamlPropertySourceFactory;
import lombok.Data;
@ -28,9 +29,12 @@ public class ConfigurationProvider {
* Ingestion related configs
*/
private IngestionConfiguration ingestion;
/**
* Telemetry related configs
*/
private TelemetryConfiguration telemetry;
/**
* Tests related configs
*/
private TestsConfiguration metadataTests;
}

View File

@ -127,7 +127,8 @@ public class GraphQLEngineFactory {
_timelineService,
_graphService.supportsMultiHop(),
_visualConfiguration,
_configProvider.getTelemetry()
_configProvider.getTelemetry(),
_configProvider.getMetadataTests()
).builder().build();
}
return new GmsGraphQLEngine(
@ -148,7 +149,8 @@ public class GraphQLEngineFactory {
_timelineService,
_graphService.supportsMultiHop(),
_visualConfiguration,
_configProvider.getTelemetry()
_configProvider.getTelemetry(),
_configProvider.getMetadataTests()
).builder().build();
}
}

View File

@ -179,3 +179,6 @@ spring:
springdoc:
cache:
disabled: true
metadataTests:
enabled: ${METADATA_TESTS_ENABLED:true}