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.datahub.graphql.types.usage.UsageType;
import com.linkedin.entity.client.EntityClient; import com.linkedin.entity.client.EntityClient;
import com.linkedin.metadata.config.IngestionConfiguration; import com.linkedin.metadata.config.IngestionConfiguration;
import com.linkedin.metadata.config.TestsConfiguration;
import com.linkedin.metadata.entity.EntityService; import com.linkedin.metadata.entity.EntityService;
import com.linkedin.metadata.graph.GraphClient; import com.linkedin.metadata.graph.GraphClient;
import com.linkedin.metadata.models.registry.EntityRegistry; import com.linkedin.metadata.models.registry.EntityRegistry;
@ -250,6 +251,7 @@ public class GmsGraphQLEngine {
private final AuthorizationConfiguration authorizationConfiguration; private final AuthorizationConfiguration authorizationConfiguration;
private final VisualConfiguration visualConfiguration; private final VisualConfiguration visualConfiguration;
private final TelemetryConfiguration telemetryConfiguration; private final TelemetryConfiguration telemetryConfiguration;
private final TestsConfiguration testsConfiguration;
private final DatasetType datasetType; private final DatasetType datasetType;
private final CorpUserType corpUserType; private final CorpUserType corpUserType;
@ -320,7 +322,8 @@ public class GmsGraphQLEngine {
final TimelineService timelineService, final TimelineService timelineService,
final boolean supportsImpactAnalysis, final boolean supportsImpactAnalysis,
final VisualConfiguration visualConfiguration, final VisualConfiguration visualConfiguration,
final TelemetryConfiguration telemetryConfiguration final TelemetryConfiguration telemetryConfiguration,
final TestsConfiguration testsConfiguration
) { ) {
this.entityClient = entityClient; this.entityClient = entityClient;
@ -343,6 +346,7 @@ public class GmsGraphQLEngine {
this.authorizationConfiguration = Objects.requireNonNull(authorizationConfiguration); this.authorizationConfiguration = Objects.requireNonNull(authorizationConfiguration);
this.visualConfiguration = visualConfiguration; this.visualConfiguration = visualConfiguration;
this.telemetryConfiguration = telemetryConfiguration; this.telemetryConfiguration = telemetryConfiguration;
this.testsConfiguration = testsConfiguration;
this.datasetType = new DatasetType(entityClient); this.datasetType = new DatasetType(entityClient);
this.corpUserType = new CorpUserType(entityClient); this.corpUserType = new CorpUserType(entityClient);
@ -538,7 +542,11 @@ public class GmsGraphQLEngine {
this.ingestionConfiguration, this.ingestionConfiguration,
this.authenticationConfiguration, this.authenticationConfiguration,
this.authorizationConfiguration, this.authorizationConfiguration,
supportsImpactAnalysis, this.visualConfiguration, this.telemetryConfiguration)) this.supportsImpactAnalysis,
this.visualConfiguration,
this.telemetryConfiguration,
this.testsConfiguration
))
.dataFetcher("me", new MeResolver(this.entityClient)) .dataFetcher("me", new MeResolver(this.entityClient))
.dataFetcher("search", new SearchResolver(this.entityClient)) .dataFetcher("search", new SearchResolver(this.entityClient))
.dataFetcher("searchAcrossEntities", new SearchAcrossEntitiesResolver(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.Privilege;
import com.linkedin.datahub.graphql.generated.ResourcePrivileges; import com.linkedin.datahub.graphql.generated.ResourcePrivileges;
import com.linkedin.datahub.graphql.generated.TelemetryConfig; import com.linkedin.datahub.graphql.generated.TelemetryConfig;
import com.linkedin.datahub.graphql.generated.TestsConfig;
import com.linkedin.datahub.graphql.generated.VisualConfiguration; import com.linkedin.datahub.graphql.generated.VisualConfiguration;
import com.linkedin.metadata.config.IngestionConfiguration; import com.linkedin.metadata.config.IngestionConfiguration;
import com.linkedin.metadata.config.TestsConfiguration;
import com.linkedin.metadata.telemetry.TelemetryConfiguration; import com.linkedin.metadata.telemetry.TelemetryConfiguration;
import com.linkedin.metadata.version.GitVersion; import com.linkedin.metadata.version.GitVersion;
import graphql.schema.DataFetcher; import graphql.schema.DataFetcher;
@ -37,6 +39,7 @@ public class AppConfigResolver implements DataFetcher<CompletableFuture<AppConfi
private final boolean _supportsImpactAnalysis; private final boolean _supportsImpactAnalysis;
private final VisualConfiguration _visualConfiguration; private final VisualConfiguration _visualConfiguration;
private final TelemetryConfiguration _telemetryConfiguration; private final TelemetryConfiguration _telemetryConfiguration;
private final TestsConfiguration _testsConfiguration;
public AppConfigResolver( public AppConfigResolver(
final GitVersion gitVersion, final GitVersion gitVersion,
@ -46,7 +49,8 @@ public class AppConfigResolver implements DataFetcher<CompletableFuture<AppConfi
final AuthorizationConfiguration authorizationConfiguration, final AuthorizationConfiguration authorizationConfiguration,
final boolean supportsImpactAnalysis, final boolean supportsImpactAnalysis,
final VisualConfiguration visualConfiguration, final VisualConfiguration visualConfiguration,
final TelemetryConfiguration telemetryConfiguration) { final TelemetryConfiguration telemetryConfiguration,
final TestsConfiguration testsConfiguration) {
_gitVersion = gitVersion; _gitVersion = gitVersion;
_isAnalyticsEnabled = isAnalyticsEnabled; _isAnalyticsEnabled = isAnalyticsEnabled;
_ingestionConfiguration = ingestionConfiguration; _ingestionConfiguration = ingestionConfiguration;
@ -55,6 +59,7 @@ public class AppConfigResolver implements DataFetcher<CompletableFuture<AppConfi
_supportsImpactAnalysis = supportsImpactAnalysis; _supportsImpactAnalysis = supportsImpactAnalysis;
_visualConfiguration = visualConfiguration; _visualConfiguration = visualConfiguration;
_telemetryConfiguration = telemetryConfiguration; _telemetryConfiguration = telemetryConfiguration;
_testsConfiguration = testsConfiguration;
} }
@Override @Override
@ -107,6 +112,10 @@ public class AppConfigResolver implements DataFetcher<CompletableFuture<AppConfi
telemetryConfig.setEnableThirdPartyLogging(_telemetryConfiguration.isEnableThirdPartyLogging()); telemetryConfig.setEnableThirdPartyLogging(_telemetryConfiguration.isEnableThirdPartyLogging());
appConfig.setTelemetryConfig(telemetryConfig); appConfig.setTelemetryConfig(telemetryConfig);
final TestsConfig testsConfig = new TestsConfig();
testsConfig.setEnabled(_testsConfiguration.isEnabled());
appConfig.setTestsConfig(testsConfig);
return CompletableFuture.completedFuture(appConfig); return CompletableFuture.completedFuture(appConfig);
} }

View File

@ -127,6 +127,11 @@ type AppConfig {
Configurations related to tracking users in the app Configurations related to tracking users in the app
""" """
telemetryConfig: TelemetryConfig! telemetryConfig: TelemetryConfig!
"""
Configurations related to DataHub tests
"""
testsConfig: TestsConfig!
} }
""" """
@ -265,3 +270,13 @@ type ManagedIngestionConfig {
""" """
enabled: Boolean! 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: { telemetryConfig: {
enableThirdPartyLogging: false, enableThirdPartyLogging: false,
}, },
testsConfig: {
enabled: false,
},
}; };
export const AppConfigContext = React.createContext<{ export const AppConfigContext = React.createContext<{

View File

@ -40,6 +40,9 @@ query appConfig {
telemetryConfig { telemetryConfig {
enableThirdPartyLogging 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.authentication.AuthenticationConfiguration;
import com.datahub.authorization.AuthorizationConfiguration; import com.datahub.authorization.AuthorizationConfiguration;
import com.linkedin.metadata.config.IngestionConfiguration; import com.linkedin.metadata.config.IngestionConfiguration;
import com.linkedin.metadata.config.TestsConfiguration;
import com.linkedin.metadata.telemetry.TelemetryConfiguration; import com.linkedin.metadata.telemetry.TelemetryConfiguration;
import com.linkedin.gms.factory.spring.YamlPropertySourceFactory; import com.linkedin.gms.factory.spring.YamlPropertySourceFactory;
import lombok.Data; import lombok.Data;
@ -28,9 +29,12 @@ public class ConfigurationProvider {
* Ingestion related configs * Ingestion related configs
*/ */
private IngestionConfiguration ingestion; private IngestionConfiguration ingestion;
/** /**
* Telemetry related configs * Telemetry related configs
*/ */
private TelemetryConfiguration telemetry; private TelemetryConfiguration telemetry;
/**
* Tests related configs
*/
private TestsConfiguration metadataTests;
} }

View File

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

View File

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