X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Futils%2FInMemorySnapshotStore.java;h=22e522b760792366997fe0e4576ab4d576fc390f;hb=18126649bba1cda7b589a4f23b96211562f9e008;hp=0e492f0fbbc57ada924540b7f2958ea9c81ae437;hpb=70c27e8bf6d323376a78aa5468faf4f27d081638;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/InMemorySnapshotStore.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/InMemorySnapshotStore.java index 0e492f0fbb..22e522b760 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/InMemorySnapshotStore.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/InMemorySnapshotStore.java @@ -16,46 +16,66 @@ import akka.persistence.SnapshotSelectionCriteria; import akka.persistence.snapshot.japi.SnapshotStore; import com.google.common.collect.Iterables; import scala.concurrent.Future; - import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import org.opendaylight.controller.cluster.raft.Snapshot; public class InMemorySnapshotStore extends SnapshotStore { - Map> snapshots = new HashMap<>(); + private static Map> snapshots = new ConcurrentHashMap<>(); + + public static void addSnapshot(String persistentId, Snapshot snapshot) { + List snapshotList = snapshots.get(persistentId); + + if(snapshotList == null) { + snapshotList = new ArrayList<>(); + snapshots.put(persistentId, snapshotList); + } + + snapshotList.add(new StoredSnapshot(new SnapshotMetadata(persistentId, snapshotList.size(), + System.currentTimeMillis()), snapshot)); + } + + public static void clear() { + snapshots.clear(); + } - @Override public Future> doLoadAsync(String s, + @Override + public Future> doLoadAsync(String s, SnapshotSelectionCriteria snapshotSelectionCriteria) { - List snapshotList = snapshots.get(s); + List snapshotList = snapshots.get(s); if(snapshotList == null){ return Futures.successful(Option.none()); } - Snapshot snapshot = Iterables.getLast(snapshotList); + StoredSnapshot snapshot = Iterables.getLast(snapshotList); SelectedSnapshot selectedSnapshot = new SelectedSnapshot(snapshot.getMetadata(), snapshot.getData()); return Futures.successful(Option.some(selectedSnapshot)); } - @Override public Future doSaveAsync(SnapshotMetadata snapshotMetadata, Object o) { - List snapshotList = snapshots.get(snapshotMetadata.persistenceId()); + @Override + public Future doSaveAsync(SnapshotMetadata snapshotMetadata, Object o) { + List snapshotList = snapshots.get(snapshotMetadata.persistenceId()); if(snapshotList == null){ snapshotList = new ArrayList<>(); snapshots.put(snapshotMetadata.persistenceId(), snapshotList); } - snapshotList.add(new Snapshot(snapshotMetadata, o)); + snapshotList.add(new StoredSnapshot(snapshotMetadata, o)); return Futures.successful(null); } - @Override public void onSaved(SnapshotMetadata snapshotMetadata) throws Exception { + @Override + public void onSaved(SnapshotMetadata snapshotMetadata) throws Exception { } - @Override public void doDelete(SnapshotMetadata snapshotMetadata) throws Exception { - List snapshotList = snapshots.get(snapshotMetadata.persistenceId()); + @Override + public void doDelete(SnapshotMetadata snapshotMetadata) throws Exception { + List snapshotList = snapshots.get(snapshotMetadata.persistenceId()); if(snapshotList == null){ return; @@ -64,7 +84,7 @@ public class InMemorySnapshotStore extends SnapshotStore { int deleteIndex = -1; for(int i=0;i snapshotList = snapshots.get(s); + List snapshotList = snapshots.get(s); if(snapshotList == null){ return; @@ -90,11 +111,11 @@ public class InMemorySnapshotStore extends SnapshotStore { snapshots.remove(s); } - private static class Snapshot { + private static class StoredSnapshot { private final SnapshotMetadata metadata; private final Object data; - private Snapshot(SnapshotMetadata metadata, Object data) { + private StoredSnapshot(SnapshotMetadata metadata, Object data) { this.metadata = metadata; this.data = data; }