Package io.grpc.xds
Class FaultFilter
- java.lang.Object
-
- io.grpc.xds.FaultFilter
-
- All Implemented Interfaces:
Filter,Filter.ClientInterceptorBuilder
final class FaultFilter extends java.lang.Object implements Filter, Filter.ClientInterceptorBuilder
HttpFault filter implementation.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private classFaultFilter.DelayInjectedCall<ReqT,RespT>ADelayedClientCallwith a fixed delay.private classFaultFilter.FailingClientCall<ReqT,RespT>An implementation ofClientCallthat fails when started.-
Nested classes/interfaces inherited from interface io.grpc.xds.Filter
Filter.ClientInterceptorBuilder, Filter.FilterConfig, Filter.NamedFilterConfig, Filter.ServerInterceptorBuilder
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.concurrent.atomic.AtomicLongactiveFaultCounter(package private) static io.grpc.Metadata.Key<java.lang.String>HEADER_ABORT_GRPC_STATUS_KEY(package private) static io.grpc.Metadata.Key<java.lang.String>HEADER_ABORT_HTTP_STATUS_KEY(package private) static io.grpc.Metadata.Key<java.lang.String>HEADER_ABORT_PERCENTAGE_KEY(package private) static io.grpc.Metadata.Key<java.lang.String>HEADER_DELAY_KEY(package private) static io.grpc.Metadata.Key<java.lang.String>HEADER_DELAY_PERCENTAGE_KEY(package private) static FaultFilterINSTANCEprivate ThreadSafeRandomrandom(package private) static java.lang.StringTYPE_URL
-
Constructor Summary
Constructors Constructor Description FaultFilter(ThreadSafeRandom random, java.util.concurrent.atomic.AtomicLong activeFaultCounter)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description io.grpc.ClientInterceptorbuildClientInterceptor(Filter.FilterConfig config, Filter.FilterConfig overrideConfig, io.grpc.LoadBalancer.PickSubchannelArgs args, java.util.concurrent.ScheduledExecutorService scheduler)private io.grpc.StatusdetermineFaultAbortStatus(FaultConfig.FaultAbort faultAbort, io.grpc.Metadata headers)private java.lang.LongdetermineFaultDelayNanos(FaultConfig.FaultDelay faultDelay, io.grpc.Metadata headers)private static io.grpc.StatusgetAbortStatusWithDescription(io.grpc.Status abortStatus)private static intgetRatePerMillion(FaultConfig.FractionalPercent percent)(package private) static ConfigOrError<FaultConfig.FaultAbort>parseFaultAbort(FaultAbort faultAbort)private static FaultConfig.FaultDelayparseFaultDelay(FaultDelay faultDelay)ConfigOrError<FaultConfig>parseFilterConfig(com.google.protobuf.Message rawProtoMessage)Parses the top-level filter config from raw proto message.ConfigOrError<FaultConfig>parseFilterConfigOverride(com.google.protobuf.Message rawProtoMessage)Parses the per-filter override filter config from raw proto message.private static ConfigOrError<FaultConfig>parseHttpFault(HTTPFault httpFault)private static FaultConfig.FractionalPercentparsePercent(FractionalPercent proto)java.lang.String[]typeUrls()The proto message types supported by this filter.
-
-
-
Field Detail
-
INSTANCE
static final FaultFilter INSTANCE
-
HEADER_DELAY_KEY
static final io.grpc.Metadata.Key<java.lang.String> HEADER_DELAY_KEY
-
HEADER_DELAY_PERCENTAGE_KEY
static final io.grpc.Metadata.Key<java.lang.String> HEADER_DELAY_PERCENTAGE_KEY
-
HEADER_ABORT_HTTP_STATUS_KEY
static final io.grpc.Metadata.Key<java.lang.String> HEADER_ABORT_HTTP_STATUS_KEY
-
HEADER_ABORT_GRPC_STATUS_KEY
static final io.grpc.Metadata.Key<java.lang.String> HEADER_ABORT_GRPC_STATUS_KEY
-
HEADER_ABORT_PERCENTAGE_KEY
static final io.grpc.Metadata.Key<java.lang.String> HEADER_ABORT_PERCENTAGE_KEY
-
TYPE_URL
static final java.lang.String TYPE_URL
- See Also:
- Constant Field Values
-
random
private final ThreadSafeRandom random
-
activeFaultCounter
private final java.util.concurrent.atomic.AtomicLong activeFaultCounter
-
-
Constructor Detail
-
FaultFilter
FaultFilter(ThreadSafeRandom random, java.util.concurrent.atomic.AtomicLong activeFaultCounter)
-
-
Method Detail
-
typeUrls
public java.lang.String[] typeUrls()
Description copied from interface:FilterThe proto message types supported by this filter. A filter will be registered by each of its supported message types.
-
parseFilterConfig
public ConfigOrError<FaultConfig> parseFilterConfig(com.google.protobuf.Message rawProtoMessage)
Description copied from interface:FilterParses the top-level filter config from raw proto message. The message may be either aAnyor aStruct.- Specified by:
parseFilterConfigin interfaceFilter
-
parseHttpFault
private static ConfigOrError<FaultConfig> parseHttpFault(HTTPFault httpFault)
-
parseFaultDelay
private static FaultConfig.FaultDelay parseFaultDelay(FaultDelay faultDelay)
-
parseFaultAbort
static ConfigOrError<FaultConfig.FaultAbort> parseFaultAbort(FaultAbort faultAbort)
-
parsePercent
private static FaultConfig.FractionalPercent parsePercent(FractionalPercent proto)
-
parseFilterConfigOverride
public ConfigOrError<FaultConfig> parseFilterConfigOverride(com.google.protobuf.Message rawProtoMessage)
Description copied from interface:FilterParses the per-filter override filter config from raw proto message. The message may be either aAnyor aStruct.- Specified by:
parseFilterConfigOverridein interfaceFilter
-
buildClientInterceptor
@Nullable public io.grpc.ClientInterceptor buildClientInterceptor(Filter.FilterConfig config, @Nullable Filter.FilterConfig overrideConfig, io.grpc.LoadBalancer.PickSubchannelArgs args, java.util.concurrent.ScheduledExecutorService scheduler)
- Specified by:
buildClientInterceptorin interfaceFilter.ClientInterceptorBuilder
-
getAbortStatusWithDescription
private static io.grpc.Status getAbortStatusWithDescription(io.grpc.Status abortStatus)
-
determineFaultDelayNanos
@Nullable private java.lang.Long determineFaultDelayNanos(FaultConfig.FaultDelay faultDelay, io.grpc.Metadata headers)
-
determineFaultAbortStatus
@Nullable private io.grpc.Status determineFaultAbortStatus(FaultConfig.FaultAbort faultAbort, io.grpc.Metadata headers)
-
getRatePerMillion
private static int getRatePerMillion(FaultConfig.FractionalPercent percent)
-
-