import akka.actor.Props;
import com.google.common.annotations.VisibleForTesting;
import java.util.Collection;
-import java.util.function.Supplier;
+import java.util.function.LongSupplier;
import javax.annotation.Nullable;
import org.opendaylight.controller.cluster.DataPersistenceProvider;
import org.opendaylight.controller.cluster.raft.behaviors.RaftActorBehavior;
* @param retriever a supplier of the total memory metric
*/
@VisibleForTesting
- void setTotalMemoryRetriever(Supplier<Long> retriever);
+ void setTotalMemoryRetriever(LongSupplier retriever);
/**
*
import java.util.List;
import java.util.Map;
import java.util.Set;
-import java.util.function.Supplier;
+import java.util.function.LongSupplier;
import org.opendaylight.controller.cluster.DataPersistenceProvider;
import org.opendaylight.controller.cluster.raft.ServerConfigurationPayload.ServerInfo;
import org.opendaylight.controller.cluster.raft.behaviors.RaftActorBehavior;
import org.slf4j.Logger;
public class RaftActorContextImpl implements RaftActorContext {
+ private static final LongSupplier JVM_MEMORY_RETRIEVER = () -> Runtime.getRuntime().totalMemory();
private final ActorRef actor;
private boolean dynamicServerConfiguration = false;
@VisibleForTesting
- private Supplier<Long> totalMemoryRetriever;
+ private LongSupplier totalMemoryRetriever = JVM_MEMORY_RETRIEVER;
// Snapshot manager will need to be created on demand as it needs raft actor context which cannot
// be passed to it in the constructor
@Override
public long getTotalMemory() {
- return totalMemoryRetriever != null ? totalMemoryRetriever.get() : Runtime.getRuntime().totalMemory();
+ return totalMemoryRetriever.getAsLong();
}
@Override
- public void setTotalMemoryRetriever(Supplier<Long> retriever) {
- totalMemoryRetriever = retriever;
+ public void setTotalMemoryRetriever(LongSupplier retriever) {
+ totalMemoryRetriever = retriever == null ? JVM_MEMORY_RETRIEVER : retriever;
}
@Override
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.TimeUnit;
-import java.util.function.Supplier;
import org.junit.After;
import org.opendaylight.controller.cluster.raft.MockRaftActorContext.MockPayload;
import org.opendaylight.controller.cluster.raft.base.messages.ApplyJournalEntries;
}
void setMockTotalMemory(final long mockTotalMemory) {
- if(mockTotalMemory > 0) {
- getRaftActorContext().setTotalMemoryRetriever(new Supplier<Long>() {
- @Override
- public Long get() {
- return mockTotalMemory;
- }
-
- });
- } else {
- getRaftActorContext().setTotalMemoryRetriever(null);
- }
+ getRaftActorContext().setTotalMemoryRetriever(mockTotalMemory > 0 ? () -> mockTotalMemory : null);
}
@Override
import static org.mockito.Mockito.verifyNoMoreInteractions;
import akka.japi.Procedure;
import java.util.Collections;
-import java.util.function.Supplier;
import org.hamcrest.BaseMatcher;
import org.hamcrest.Description;
import org.hamcrest.Matcher;
public void testAppendAndPersistExpectingCaptureDueToDataSize() throws Exception {
doReturn(1L).when(mockBehavior).getReplicatedToAllIndex();
- context.setTotalMemoryRetriever(new Supplier<Long>() {
- @Override
- public Long get() {
- return 100L;
- }
- });
+ context.setTotalMemoryRetriever(() -> 100);
ReplicatedLog log = ReplicatedLogImpl.newInstance(context);