| /** |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package com.twitter.distributedlog.injector; |
| |
| /** |
| * Failure Injector that works in asynchronous way |
| */ |
| public interface AsyncFailureInjector { |
| |
| AsyncFailureInjector NULL = new AsyncFailureInjector() { |
| @Override |
| public void injectErrors(boolean enabled) { |
| // no-op |
| } |
| |
| @Override |
| public boolean shouldInjectErrors() { |
| return false; |
| } |
| |
| @Override |
| public void injectDelays(boolean enabled) { |
| // no-op |
| } |
| |
| @Override |
| public boolean shouldInjectDelays() { |
| return false; |
| } |
| |
| @Override |
| public int getInjectedDelayMs() { |
| return 0; |
| } |
| |
| @Override |
| public void injectStops(boolean enabled) { |
| // no-op |
| } |
| |
| @Override |
| public boolean shouldInjectStops() { |
| return false; |
| } |
| |
| @Override |
| public boolean shouldInjectCorruption(long startEntryId, long endEntryId) { |
| return false; |
| } |
| |
| @Override |
| public String toString() { |
| return "NULL"; |
| } |
| }; |
| |
| /** |
| * Enable or disable error injection. |
| * |
| * @param enabled |
| * flag to enable or disable error injection. |
| */ |
| void injectErrors(boolean enabled); |
| |
| /** |
| * Return the flag indicating if should inject errors. |
| * |
| * @return true to inject errors otherwise false. |
| */ |
| boolean shouldInjectErrors(); |
| |
| /** |
| * Enable or disable delay injection. |
| * |
| * @param enabled |
| * flag to enable or disable delay injection. |
| */ |
| void injectDelays(boolean enabled); |
| |
| /** |
| * Return the flag indicating if should inject delays. |
| * |
| * @return true to inject delays otherwise false. |
| */ |
| boolean shouldInjectDelays(); |
| |
| /** |
| * Return the injected delay in milliseconds. |
| * |
| * @return the injected delay in milliseconds. |
| */ |
| int getInjectedDelayMs(); |
| |
| /** |
| * Enable or disable injecting stops. This could be used |
| * for simulating stopping an action. |
| */ |
| void injectStops(boolean enabled); |
| |
| /** |
| * Return the flag indicating if should inject stops. |
| * |
| * @return true to inject stops otherwise false. |
| */ |
| boolean shouldInjectStops(); |
| |
| /** |
| * Return the flag indicating if should inject corruption. |
| * |
| * @param startEntryId the start entry id |
| * @param endEntryId the end entry id |
| * @return true to inject corruption otherwise false. |
| */ |
| boolean shouldInjectCorruption(long startEntryId, long endEntryId); |
| |
| } |