MCPcopy Create free account
hub / github.com/grpc/grpc-java / FaultFilter

Class FaultFilter

xds/src/main/java/io/grpc/xds/FaultFilter.java:58–499  ·  view source on GitHub ↗

HttpFault filter implementation.

Source from the content-addressed store, hash-verified

56
57/** HttpFault filter implementation. */
58final class FaultFilter implements Filter {
59
60 private static final FaultFilter INSTANCE =
61 new FaultFilter(ThreadSafeRandomImpl.instance, new AtomicLong());
62
63 @VisibleForTesting
64 static final Metadata.Key<String> HEADER_DELAY_KEY =
65 Metadata.Key.of("x-envoy-fault-delay-request", Metadata.ASCII_STRING_MARSHALLER);
66 @VisibleForTesting
67 static final Metadata.Key<String> HEADER_DELAY_PERCENTAGE_KEY =
68 Metadata.Key.of("x-envoy-fault-delay-request-percentage", Metadata.ASCII_STRING_MARSHALLER);
69 @VisibleForTesting
70 static final Metadata.Key<String> HEADER_ABORT_HTTP_STATUS_KEY =
71 Metadata.Key.of("x-envoy-fault-abort-request", Metadata.ASCII_STRING_MARSHALLER);
72 @VisibleForTesting
73 static final Metadata.Key<String> HEADER_ABORT_GRPC_STATUS_KEY =
74 Metadata.Key.of("x-envoy-fault-abort-grpc-request", Metadata.ASCII_STRING_MARSHALLER);
75 @VisibleForTesting
76 static final Metadata.Key<String> HEADER_ABORT_PERCENTAGE_KEY =
77 Metadata.Key.of("x-envoy-fault-abort-request-percentage", Metadata.ASCII_STRING_MARSHALLER);
78 static final String TYPE_URL =
79 "type.googleapis.com/envoy.extensions.filters.http.fault.v3.HTTPFault";
80
81 private final ThreadSafeRandom random;
82 private final AtomicLong activeFaultCounter;
83
84 @VisibleForTesting
85 FaultFilter(ThreadSafeRandom random, AtomicLong activeFaultCounter) {
86 this.random = random;
87 this.activeFaultCounter = activeFaultCounter;
88 }
89
90 static final class Provider implements Filter.Provider {
91 @Override
92 public String[] typeUrls() {
93 return new String[]{TYPE_URL};
94 }
95
96 @Override
97 public boolean isClientFilter() {
98 return true;
99 }
100
101 @Override
102 public FaultFilter newInstance(String name) {
103 return INSTANCE;
104 }
105
106 @Override
107 public ConfigOrError<FaultConfig> parseFilterConfig(
108 Message rawProtoMessage, FilterConfigParseContext context) {
109 HTTPFault httpFaultProto;
110 if (!(rawProtoMessage instanceof Any)) {
111 return ConfigOrError.fromError("Invalid config type: " + rawProtoMessage.getClass());
112 }
113 Any anyMessage = (Any) rawProtoMessage;
114 try {
115 httpFaultProto = anyMessage.unpack(HTTPFault.class);

Callers

nothing calls this directly

Calls 1

ofMethod · 0.45

Tested by

no test coverage detected