Class DataBrokerFailuresImpl
- java.lang.Object
-
- com.google.common.collect.ForwardingObject
-
- org.opendaylight.controller.md.sal.binding.api.ForwardingDataBroker
-
- org.opendaylight.genius.datastoreutils.testutils.DataBrokerFailuresImpl
-
- All Implemented Interfaces:
org.opendaylight.controller.md.sal.binding.api.BindingService,org.opendaylight.controller.md.sal.binding.api.DataBroker,org.opendaylight.controller.md.sal.binding.api.DataTreeChangeService,org.opendaylight.controller.md.sal.binding.api.TransactionFactory,org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker<org.opendaylight.yangtools.yang.binding.InstanceIdentifier<?>,org.opendaylight.yangtools.yang.binding.DataObject>,org.opendaylight.controller.md.sal.common.api.data.AsyncDataTransactionFactory<org.opendaylight.yangtools.yang.binding.InstanceIdentifier<?>,org.opendaylight.yangtools.yang.binding.DataObject>,org.opendaylight.controller.md.sal.common.api.data.TransactionChainFactory<org.opendaylight.yangtools.yang.binding.InstanceIdentifier<?>,org.opendaylight.yangtools.yang.binding.DataObject>,org.opendaylight.controller.sal.binding.api.BindingAwareService,DataBrokerFailures
public class DataBrokerFailuresImpl extends org.opendaylight.controller.md.sal.binding.api.ForwardingDataBroker implements DataBrokerFailures
DataBroker with methods to simulate failures, useful for tests.If you use this from a Guice-based component test, consider just binding it via the
DataBrokerFailuresModule.- Author:
- Michael Vorburger.ch
-
-
Constructor Summary
Constructors Constructor Description DataBrokerFailuresImpl(org.opendaylight.controller.md.sal.binding.api.DataBroker delegate)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected org.opendaylight.controller.md.sal.binding.api.DataBrokerdelegate()voidfailButSubmitsAnyways()To simulate scenarios where even though the transaction throws a TransactionCommitFailedException (caused by akka.pattern.AskTimeoutException) it eventually succeeds.voidfailReads(int howManyTimes, org.opendaylight.controller.md.sal.common.api.data.ReadFailedException exception)Fails N future reads.voidfailReads(org.opendaylight.controller.md.sal.common.api.data.ReadFailedException exception)Fails all future reads.voidfailSubmits(int howManyTimes, org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException exception)Fails N future Transaction submits.voidfailSubmits(org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException exception)Fails all future Transaction submits.<T extends org.opendaylight.yangtools.yang.binding.DataObject>
com.google.common.util.concurrent.CheckedFuture<com.google.common.base.Optional<T>,org.opendaylight.controller.md.sal.common.api.data.ReadFailedException>handleRead(java.util.function.BiFunction<org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType,org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T>,com.google.common.util.concurrent.CheckedFuture<com.google.common.base.Optional<T>,org.opendaylight.controller.md.sal.common.api.data.ReadFailedException>> readMethod, org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType store, org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path)org.opendaylight.controller.md.sal.binding.api.ReadWriteTransactionnewReadWriteTransaction()org.opendaylight.controller.md.sal.binding.api.WriteTransactionnewWriteOnlyTransaction()voidunfailReads()voidunfailSubmits()
-
-
-
Method Detail
-
delegate
protected org.opendaylight.controller.md.sal.binding.api.DataBroker delegate()
- Specified by:
delegatein classorg.opendaylight.controller.md.sal.binding.api.ForwardingDataBroker
-
failReads
public void failReads(org.opendaylight.controller.md.sal.common.api.data.ReadFailedException exception)
Description copied from interface:DataBrokerFailuresFails all future reads.- Specified by:
failReadsin interfaceDataBrokerFailures- Parameters:
exception- aReadFailedExceptionto throw from aReadTransaction.read(LogicalDatastoreType, InstanceIdentifier)call.
-
failReads
public void failReads(int howManyTimes, org.opendaylight.controller.md.sal.common.api.data.ReadFailedException exception)Description copied from interface:DataBrokerFailuresFails N future reads.- Specified by:
failReadsin interfaceDataBrokerFailures- Parameters:
howManyTimes- how many times to throw the passed exception, until it resets.exception- aReadFailedExceptionto throw from aReadTransaction.read(LogicalDatastoreType, InstanceIdentifier)call.
-
failSubmits
public void failSubmits(org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException exception)
Description copied from interface:DataBrokerFailuresFails all future Transaction submits.- Specified by:
failSubmitsin interfaceDataBrokerFailures- Parameters:
exception- an Exception to throw from aAsyncWriteTransaction.submit()(alsoAsyncWriteTransaction.submit()) method
-
failSubmits
public void failSubmits(int howManyTimes, org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException exception)Description copied from interface:DataBrokerFailuresFails N future Transaction submits.- Specified by:
failSubmitsin interfaceDataBrokerFailures- Parameters:
howManyTimes- how many times to throw the passed exception, until it resetsexception- an Exception to throw from aAsyncWriteTransaction.submit()(alsoAsyncWriteTransaction.submit()) method
-
unfailReads
public void unfailReads()
Description copied from interface:DataBrokerFailuresResets any earlierDataBrokerFailures.failReads(ReadFailedException)orDataBrokerFailures.failReads(int, ReadFailedException).- Specified by:
unfailReadsin interfaceDataBrokerFailures
-
unfailSubmits
public void unfailSubmits()
Description copied from interface:DataBrokerFailuresResets any earlierDataBrokerFailures.failSubmits(TransactionCommitFailedException)orDataBrokerFailures.failSubmits(int, TransactionCommitFailedException).- Specified by:
unfailSubmitsin interfaceDataBrokerFailures
-
failButSubmitsAnyways
public void failButSubmitsAnyways()
Description copied from interface:DataBrokerFailuresTo simulate scenarios where even though the transaction throws a TransactionCommitFailedException (caused by akka.pattern.AskTimeoutException) it eventually succeeds. These timeouts are typically seen in scaled cluster environments under load. The new tell-based protocol, which will soon be enabled by default (c/61002), adds internal retries for transactions, making the application not to handle such scenarios.- Specified by:
failButSubmitsAnywaysin interfaceDataBrokerFailures
-
handleRead
public <T extends org.opendaylight.yangtools.yang.binding.DataObject> com.google.common.util.concurrent.CheckedFuture<com.google.common.base.Optional<T>,org.opendaylight.controller.md.sal.common.api.data.ReadFailedException> handleRead(java.util.function.BiFunction<org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType,org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T>,com.google.common.util.concurrent.CheckedFuture<com.google.common.base.Optional<T>,org.opendaylight.controller.md.sal.common.api.data.ReadFailedException>> readMethod, org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType store, org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path)
-
newReadWriteTransaction
public org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction newReadWriteTransaction()
- Specified by:
newReadWriteTransactionin interfaceorg.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker<org.opendaylight.yangtools.yang.binding.InstanceIdentifier<?>,org.opendaylight.yangtools.yang.binding.DataObject>- Specified by:
newReadWriteTransactionin interfaceorg.opendaylight.controller.md.sal.common.api.data.AsyncDataTransactionFactory<org.opendaylight.yangtools.yang.binding.InstanceIdentifier<?>,org.opendaylight.yangtools.yang.binding.DataObject>- Specified by:
newReadWriteTransactionin interfaceorg.opendaylight.controller.md.sal.binding.api.DataBroker- Specified by:
newReadWriteTransactionin interfaceorg.opendaylight.controller.md.sal.binding.api.TransactionFactory- Overrides:
newReadWriteTransactionin classorg.opendaylight.controller.md.sal.binding.api.ForwardingDataBroker
-
newWriteOnlyTransaction
public org.opendaylight.controller.md.sal.binding.api.WriteTransaction newWriteOnlyTransaction()
- Specified by:
newWriteOnlyTransactionin interfaceorg.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker<org.opendaylight.yangtools.yang.binding.InstanceIdentifier<?>,org.opendaylight.yangtools.yang.binding.DataObject>- Specified by:
newWriteOnlyTransactionin interfaceorg.opendaylight.controller.md.sal.common.api.data.AsyncDataTransactionFactory<org.opendaylight.yangtools.yang.binding.InstanceIdentifier<?>,org.opendaylight.yangtools.yang.binding.DataObject>- Specified by:
newWriteOnlyTransactionin interfaceorg.opendaylight.controller.md.sal.binding.api.DataBroker- Specified by:
newWriteOnlyTransactionin interfaceorg.opendaylight.controller.md.sal.binding.api.TransactionFactory- Overrides:
newWriteOnlyTransactionin classorg.opendaylight.controller.md.sal.binding.api.ForwardingDataBroker
-
-