From e825613f5c163ac8beb6ae7dc3630e6403201bac Mon Sep 17 00:00:00 2001 From: chimp1984 Date: Thu, 1 Oct 2020 19:56:01 -0500 Subject: [PATCH] Use PersistenceManager --- .../ballot/BallotListServiceTest.java | 4 +- .../proposal/MyProposalListServiceTest.java | 8 ++-- .../bisq/core/offer/OpenOfferManagerTest.java | 17 ++++---- .../bisq/core/trade/TradableListTest.java | 20 ++-------- .../java/bisq/core/user/PreferencesTest.java | 15 ++++--- .../bisq/desktop/maker/PreferenceMakers.java | 6 +-- .../bisq/network/p2p/storage/TestState.java | 40 ++++++++----------- .../storage/mocks/MapStoreServiceFake.java | 4 +- 8 files changed, 45 insertions(+), 69 deletions(-) diff --git a/core/src/test/java/bisq/core/dao/governance/ballot/BallotListServiceTest.java b/core/src/test/java/bisq/core/dao/governance/ballot/BallotListServiceTest.java index f6b912497f..3c5da9c169 100644 --- a/core/src/test/java/bisq/core/dao/governance/ballot/BallotListServiceTest.java +++ b/core/src/test/java/bisq/core/dao/governance/ballot/BallotListServiceTest.java @@ -6,7 +6,7 @@ import bisq.core.dao.governance.proposal.ProposalService; import bisq.core.dao.governance.proposal.ProposalValidatorProvider; import bisq.core.dao.governance.proposal.storage.appendonly.ProposalPayload; -import bisq.common.storage.Storage; +import bisq.common.persistence.PersistenceManager; import javafx.collections.FXCollections; import javafx.collections.ObservableList; @@ -30,7 +30,7 @@ public class BallotListServiceTest { when(proposalService.getProposalPayloads()).thenReturn(payloads); BallotListService service = new BallotListService(proposalService, mock(PeriodService.class), - mock(ProposalValidatorProvider.class), mock(Storage.class)); + mock(ProposalValidatorProvider.class), mock(PersistenceManager.class)); BallotListChangeListener listener = mock(BallotListChangeListener.class); service.addListener(listener); diff --git a/core/src/test/java/bisq/core/dao/governance/proposal/MyProposalListServiceTest.java b/core/src/test/java/bisq/core/dao/governance/proposal/MyProposalListServiceTest.java index 2a80becf2b..a851e6cdab 100644 --- a/core/src/test/java/bisq/core/dao/governance/proposal/MyProposalListServiceTest.java +++ b/core/src/test/java/bisq/core/dao/governance/proposal/MyProposalListServiceTest.java @@ -7,7 +7,7 @@ import bisq.core.dao.state.DaoStateService; import bisq.network.p2p.P2PService; import bisq.common.crypto.PubKeyRing; -import bisq.common.storage.Storage; +import bisq.common.persistence.PersistenceManager; import javafx.beans.property.SimpleIntegerProperty; @@ -21,12 +21,10 @@ public class MyProposalListServiceTest { public void canInstantiate() { P2PService p2PService = mock(P2PService.class); when(p2PService.getNumConnectedPeers()).thenReturn(new SimpleIntegerProperty(0)); - Storage storage = mock(Storage.class); + PersistenceManager persistenceManager = mock(PersistenceManager.class); MyProposalListService service = new MyProposalListService(p2PService, mock(DaoStateService.class), - mock(PeriodService.class), mock(WalletsManager.class), storage, mock(PubKeyRing.class) + mock(PeriodService.class), mock(WalletsManager.class), persistenceManager, mock(PubKeyRing.class) ); } - - } diff --git a/core/src/test/java/bisq/core/offer/OpenOfferManagerTest.java b/core/src/test/java/bisq/core/offer/OpenOfferManagerTest.java index 428fbacadb..d5ae649e00 100644 --- a/core/src/test/java/bisq/core/offer/OpenOfferManagerTest.java +++ b/core/src/test/java/bisq/core/offer/OpenOfferManagerTest.java @@ -6,7 +6,7 @@ import bisq.network.p2p.peers.PeerManager; import bisq.common.file.CorruptedStorageFileHandler; import bisq.common.handlers.ErrorMessageHandler; import bisq.common.handlers.ResultHandler; -import bisq.common.storage.Storage; +import bisq.common.persistence.PersistenceManager; import java.nio.file.Files; @@ -46,7 +46,7 @@ public class OpenOfferManagerTest { null, null, null, offerBookService, null, null, null, null, null, null, null, null, null, - new Storage<>(storageDir, null, corruptedStorageFileHandler)); + new PersistenceManager<>(storageDir, null, corruptedStorageFileHandler)); AtomicBoolean startEditOfferSuccessful = new AtomicBoolean(false); @@ -56,7 +56,7 @@ public class OpenOfferManagerTest { return null; }).when(offerBookService).deactivateOffer(any(OfferPayload.class), any(ResultHandler.class), any(ErrorMessageHandler.class)); - final OpenOffer openOffer = new OpenOffer(make(btcUsdOffer), null); + final OpenOffer openOffer = new OpenOffer(make(btcUsdOffer)); ResultHandler resultHandler = () -> { startEditOfferSuccessful.set(true); @@ -74,15 +74,13 @@ public class OpenOfferManagerTest { public void testStartEditOfferForDeactivatedOffer() throws IOException { P2PService p2PService = mock(P2PService.class); OfferBookService offerBookService = mock(OfferBookService.class); - Storage storage = mock(Storage.class); - when(p2PService.getPeerManager()).thenReturn(mock(PeerManager.class)); final OpenOfferManager manager = new OpenOfferManager(null, null, null, p2PService, null, null, null, offerBookService, null, null, null, null, null, null, null, null, null, - new Storage<>(storageDir, null, corruptedStorageFileHandler)); + new PersistenceManager<>(storageDir, null, corruptedStorageFileHandler)); AtomicBoolean startEditOfferSuccessful = new AtomicBoolean(false); @@ -90,7 +88,7 @@ public class OpenOfferManagerTest { startEditOfferSuccessful.set(true); }; - final OpenOffer openOffer = new OpenOffer(make(btcUsdOffer), storage); + final OpenOffer openOffer = new OpenOffer(make(btcUsdOffer)); openOffer.setState(OpenOffer.State.DEACTIVATED); manager.editOpenOfferStart(openOffer, resultHandler, null); @@ -102,7 +100,6 @@ public class OpenOfferManagerTest { public void testStartEditOfferForOfferThatIsCurrentlyEdited() { P2PService p2PService = mock(P2PService.class); OfferBookService offerBookService = mock(OfferBookService.class); - Storage storage = mock(Storage.class); when(p2PService.getPeerManager()).thenReturn(mock(PeerManager.class)); @@ -110,7 +107,7 @@ public class OpenOfferManagerTest { null, null, null, offerBookService, null, null, null, null, null, null, null, null, null, - new Storage<>(storageDir, null, corruptedStorageFileHandler)); + new PersistenceManager<>(storageDir, null, corruptedStorageFileHandler)); AtomicBoolean startEditOfferSuccessful = new AtomicBoolean(false); @@ -118,7 +115,7 @@ public class OpenOfferManagerTest { startEditOfferSuccessful.set(true); }; - final OpenOffer openOffer = new OpenOffer(make(btcUsdOffer), storage); + final OpenOffer openOffer = new OpenOffer(make(btcUsdOffer)); openOffer.setState(OpenOffer.State.DEACTIVATED); manager.editOpenOfferStart(openOffer, resultHandler, null); diff --git a/core/src/test/java/bisq/core/trade/TradableListTest.java b/core/src/test/java/bisq/core/trade/TradableListTest.java index 3666ed9454..e6a41bca6a 100644 --- a/core/src/test/java/bisq/core/trade/TradableListTest.java +++ b/core/src/test/java/bisq/core/trade/TradableListTest.java @@ -21,18 +21,9 @@ import bisq.core.offer.Offer; import bisq.core.offer.OfferPayload; import bisq.core.offer.OpenOffer; -import bisq.common.file.CorruptedStorageFileHandler; -import bisq.common.storage.Storage; - -import java.nio.file.Files; - -import java.io.File; -import java.io.IOException; - import org.junit.Test; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.RETURNS_DEEP_STUBS; import static org.mockito.Mockito.mock; import static protobuf.PersistableEnvelope.MessageCase.TRADABLE_LIST; @@ -40,18 +31,15 @@ import static protobuf.PersistableEnvelope.MessageCase.TRADABLE_LIST; public class TradableListTest { @Test - public void protoTesting() throws IOException { + public void protoTesting() { OfferPayload offerPayload = mock(OfferPayload.class, RETURNS_DEEP_STUBS); - File storageDir = Files.createTempDirectory("storage").toFile(); - Storage> storage = new Storage<>(storageDir, null, mock(CorruptedStorageFileHandler.class)); - TradableList openOfferTradableList = new TradableList<>(storage, "filename"); + TradableList openOfferTradableList = new TradableList<>(); protobuf.PersistableEnvelope message = (protobuf.PersistableEnvelope) openOfferTradableList.toProtoMessage(); - assertTrue(message.getMessageCase().equals(TRADABLE_LIST)); + assertEquals(message.getMessageCase(), TRADABLE_LIST); // test adding an OpenOffer and convert toProto Offer offer = new Offer(offerPayload); - OpenOffer openOffer = new OpenOffer(offer, storage); - //openOfferTradableList = new TradableList(storage,Lists.newArrayList(openOffer)); + OpenOffer openOffer = new OpenOffer(offer); openOfferTradableList.add(openOffer); message = (protobuf.PersistableEnvelope) openOfferTradableList.toProtoMessage(); assertEquals(message.getMessageCase(), TRADABLE_LIST); diff --git a/core/src/test/java/bisq/core/user/PreferencesTest.java b/core/src/test/java/bisq/core/user/PreferencesTest.java index b29ea9520c..87d83bc347 100644 --- a/core/src/test/java/bisq/core/user/PreferencesTest.java +++ b/core/src/test/java/bisq/core/user/PreferencesTest.java @@ -26,7 +26,7 @@ import bisq.core.locale.GlobalSettings; import bisq.core.locale.Res; import bisq.common.config.Config; -import bisq.common.storage.Storage; +import bisq.common.persistence.PersistenceManager; import javafx.collections.ObservableList; @@ -40,7 +40,6 @@ import org.junit.Test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; -import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -48,7 +47,7 @@ import static org.mockito.Mockito.when; public class PreferencesTest { private Preferences preferences; - private Storage storage; + private PersistenceManager persistenceManager; @Before public void setUp() { @@ -58,11 +57,11 @@ public class PreferencesTest { Res.setBaseCurrencyCode("BTC"); Res.setBaseCurrencyName("Bitcoin"); - storage = mock(Storage.class); + persistenceManager = mock(PersistenceManager.class); Config config = new Config(); LocalBitcoinNode localBitcoinNode = new LocalBitcoinNode(config); preferences = new Preferences( - storage, config, localBitcoinNode, null, null, Config.DEFAULT_FULL_DAO_NODE, + persistenceManager, config, localBitcoinNode, null, null, Config.DEFAULT_FULL_DAO_NODE, null, null, Config.UNSPECIFIED_PORT); } @@ -89,7 +88,7 @@ public class PreferencesTest { final FiatCurrency usd = new FiatCurrency("USD"); fiatCurrencies.add(usd); - when(storage.initAndGetPersistedWithFileName(anyString(), anyLong())).thenReturn(payload); + when(persistenceManager.getPersisted(anyString())).thenReturn(payload); when(payload.getUserLanguage()).thenReturn("en"); when(payload.getUserCountry()).thenReturn(CountryUtil.getDefaultCountry()); when(payload.getPreferredTradeCurrency()).thenReturn(usd); @@ -110,7 +109,7 @@ public class PreferencesTest { final CryptoCurrency dash = new CryptoCurrency("DASH", "Dash"); cryptoCurrencies.add(dash); - when(storage.initAndGetPersistedWithFileName(anyString(), anyLong())).thenReturn(payload); + when(persistenceManager.getPersisted(anyString())).thenReturn(payload); when(payload.getUserLanguage()).thenReturn("en"); when(payload.getUserCountry()).thenReturn(CountryUtil.getDefaultCountry()); when(payload.getPreferredTradeCurrency()).thenReturn(new FiatCurrency("USD")); @@ -131,7 +130,7 @@ public class PreferencesTest { assertEquals("US-Dollar (USD)", usd.getNameAndCode()); - when(storage.initAndGetPersistedWithFileName(anyString(), anyLong())).thenReturn(payload); + when(persistenceManager.getPersisted(anyString())).thenReturn(payload); when(payload.getUserLanguage()).thenReturn("en"); when(payload.getUserCountry()).thenReturn(CountryUtil.getDefaultCountry()); when(payload.getPreferredTradeCurrency()).thenReturn(usd); diff --git a/desktop/src/test/java/bisq/desktop/maker/PreferenceMakers.java b/desktop/src/test/java/bisq/desktop/maker/PreferenceMakers.java index a3edfa8a18..9acd80b5fd 100644 --- a/desktop/src/test/java/bisq/desktop/maker/PreferenceMakers.java +++ b/desktop/src/test/java/bisq/desktop/maker/PreferenceMakers.java @@ -21,7 +21,7 @@ import bisq.core.btc.nodes.LocalBitcoinNode; import bisq.core.user.Preferences; import bisq.common.config.Config; -import bisq.common.storage.Storage; +import bisq.common.persistence.PersistenceManager; import com.natpryce.makeiteasy.Instantiator; import com.natpryce.makeiteasy.Property; @@ -32,14 +32,14 @@ import static com.natpryce.makeiteasy.MakeItEasy.make; public class PreferenceMakers { - public static final Property storage = new Property<>(); + public static final Property storage = new Property<>(); public static final Property config = new Property<>(); public static final Property localBitcoinNode = new Property<>(); public static final Property useTorFlagFromOptions = new Property<>(); public static final Property referralID = new Property<>(); public static final Instantiator Preferences = lookup -> new Preferences( - lookup.valueOf(storage, new SameValueDonor(null)), + lookup.valueOf(storage, new SameValueDonor(null)), lookup.valueOf(config, new SameValueDonor(null)), lookup.valueOf(localBitcoinNode, new SameValueDonor(null)), lookup.valueOf(useTorFlagFromOptions, new SameValueDonor(null)), diff --git a/p2p/src/test/java/bisq/network/p2p/storage/TestState.java b/p2p/src/test/java/bisq/network/p2p/storage/TestState.java index e71246a031..b04491ed40 100644 --- a/p2p/src/test/java/bisq/network/p2p/storage/TestState.java +++ b/p2p/src/test/java/bisq/network/p2p/storage/TestState.java @@ -39,8 +39,8 @@ import bisq.network.p2p.storage.persistence.ResourceDataStoreService; import bisq.network.p2p.storage.persistence.SequenceNumberMap; import bisq.common.crypto.Sig; +import bisq.common.persistence.PersistenceManager; import bisq.common.proto.persistable.PersistablePayload; -import bisq.common.storage.Storage; import java.security.PublicKey; @@ -69,13 +69,13 @@ public class TestState { final AppendOnlyDataStoreListener appendOnlyDataStoreListener; private final HashMapChangedListener hashMapChangedListener; - private final Storage mockSeqNrStorage; + private final PersistenceManager mockSeqNrPersistenceManager; private final ProtectedDataStoreService protectedDataStoreService; final ClockFake clockFake; TestState() { this.mockBroadcaster = mock(Broadcaster.class); - this.mockSeqNrStorage = mock(Storage.class); + this.mockSeqNrPersistenceManager = mock(PersistenceManager.class); this.clockFake = new ClockFake(); this.protectedDataStoreService = new ProtectedDataStoreService(); @@ -83,7 +83,9 @@ public class TestState { this.mockBroadcaster, new AppendOnlyDataStoreServiceFake(), this.protectedDataStoreService, mock(ResourceDataStoreService.class), - this.mockSeqNrStorage, this.clockFake, MAX_SEQUENCE_NUMBER_MAP_SIZE_BEFORE_PURGE); + this.mockSeqNrPersistenceManager, + this.clockFake, + MAX_SEQUENCE_NUMBER_MAP_SIZE_BEFORE_PURGE); this.appendOnlyDataStoreListener = mock(AppendOnlyDataStoreListener.class); this.hashMapChangedListener = mock(HashMapChangedListener.class); @@ -92,10 +94,13 @@ public class TestState { this.mockedStorage = createP2PDataStorageForTest( this.mockBroadcaster, this.protectedDataStoreService, - this.mockSeqNrStorage, + this.mockSeqNrPersistenceManager, this.clockFake, this.hashMapChangedListener, this.appendOnlyDataStoreListener); + + when(this.mockSeqNrPersistenceManager.getPersisted()) + .thenReturn(this.mockedStorage.sequenceNumberMap); } @@ -105,22 +110,22 @@ public class TestState { * not running the entire storage code paths. */ void simulateRestart() { - when(this.mockSeqNrStorage.initAndGetPersisted(any(SequenceNumberMap.class), anyLong())) - .thenReturn(this.mockedStorage.sequenceNumberMap); - this.mockedStorage = createP2PDataStorageForTest( this.mockBroadcaster, this.protectedDataStoreService, - this.mockSeqNrStorage, + this.mockSeqNrPersistenceManager, this.clockFake, this.hashMapChangedListener, this.appendOnlyDataStoreListener); + + when(this.mockSeqNrPersistenceManager.getPersisted()) + .thenReturn(this.mockedStorage.sequenceNumberMap); } private static P2PDataStorage createP2PDataStorageForTest( Broadcaster broadcaster, ProtectedDataStoreService protectedDataStoreService, - Storage sequenceNrMapStorage, + PersistenceManager sequenceNrMapPersistenceManager, ClockFake clock, HashMapChangedListener hashMapChangedListener, AppendOnlyDataStoreListener appendOnlyDataStoreListener) { @@ -129,7 +134,7 @@ public class TestState { broadcaster, new AppendOnlyDataStoreServiceFake(), protectedDataStoreService, mock(ResourceDataStoreService.class), - sequenceNrMapStorage, clock, MAX_SEQUENCE_NUMBER_MAP_SIZE_BEFORE_PURGE); + sequenceNrMapPersistenceManager, clock, MAX_SEQUENCE_NUMBER_MAP_SIZE_BEFORE_PURGE); // Currently TestState only supports reading ProtectedStorageEntries off disk. p2PDataStorage.readFromResources("unused"); @@ -145,7 +150,6 @@ public class TestState { reset(this.mockBroadcaster); reset(this.appendOnlyDataStoreListener); reset(this.hashMapChangedListener); - reset(this.mockSeqNrStorage); } void incrementClock() { @@ -160,11 +164,7 @@ public class TestState { * Common test helpers that verify the correct events were signaled based on the test expectation and before/after states. */ private void verifySequenceNumberMapWriteContains(P2PDataStorage.ByteArray payloadHash, int sequenceNumber) { - final ArgumentCaptor captor = ArgumentCaptor.forClass(SequenceNumberMap.class); - verify(this.mockSeqNrStorage).queueUpForSave(captor.capture(), anyLong()); - - SequenceNumberMap savedMap = captor.getValue(); - Assert.assertEquals(sequenceNumber, savedMap.get(payloadHash).sequenceNr); + Assert.assertEquals(sequenceNumber, mockSeqNrPersistenceManager.getPersisted().get(payloadHash).sequenceNr); } void verifyPersistableAdd(SavedTestState beforeState, @@ -231,8 +231,6 @@ public class TestState { if (expectedSequenceNrMapWrite) { this.verifySequenceNumberMapWriteContains(P2PDataStorage.get32ByteHashAsByteArray(protectedStorageEntry.getProtectedStoragePayload()), protectedStorageEntry.getSequenceNumber()); - } else { - verify(this.mockSeqNrStorage, never()).queueUpForSave(any(SequenceNumberMap.class), anyLong()); } } @@ -272,9 +270,6 @@ public class TestState { verify(this.hashMapChangedListener, never()).onRemoved(any()); } - if (!expectedSeqNrWrite) - verify(this.mockSeqNrStorage, never()).queueUpForSave(any(SequenceNumberMap.class), anyLong()); - if (!expectedBroadcast) verify(this.mockBroadcaster, never()).broadcast(any(BroadcastMessage.class), nullable(NodeAddress.class)); @@ -338,7 +333,6 @@ public class TestState { } verify(this.mockBroadcaster, never()).broadcast(any(BroadcastMessage.class), nullable(NodeAddress.class)); - verify(this.mockSeqNrStorage, never()).queueUpForSave(any(SequenceNumberMap.class), anyLong()); } } diff --git a/p2p/src/test/java/bisq/network/p2p/storage/mocks/MapStoreServiceFake.java b/p2p/src/test/java/bisq/network/p2p/storage/mocks/MapStoreServiceFake.java index 9f282497d8..fb7f39f901 100644 --- a/p2p/src/test/java/bisq/network/p2p/storage/mocks/MapStoreServiceFake.java +++ b/p2p/src/test/java/bisq/network/p2p/storage/mocks/MapStoreServiceFake.java @@ -21,9 +21,9 @@ import bisq.network.p2p.storage.P2PDataStorage; import bisq.network.p2p.storage.payload.ProtectedStorageEntry; import bisq.network.p2p.storage.persistence.MapStoreService; +import bisq.common.persistence.PersistenceManager; import bisq.common.proto.persistable.PersistableEnvelope; import bisq.common.proto.persistable.PersistablePayload; -import bisq.common.storage.Storage; import java.io.File; @@ -45,7 +45,7 @@ public class MapStoreServiceFake extends MapStoreService { private final Map map; public MapStoreServiceFake() { - super(mock(File.class), mock(Storage.class)); + super(mock(File.class), mock(PersistenceManager.class)); this.map = new HashMap<>(); }