From c9ee0889626bcdfadb9ced7e17eb6afd4664f128 Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Thu, 9 Jun 2016 18:39:50 +0200 Subject: [PATCH 01/37] Add stress test flag to log flag --- gui/src/main/java/io/bitsquare/app/BitsquareApp.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gui/src/main/java/io/bitsquare/app/BitsquareApp.java b/gui/src/main/java/io/bitsquare/app/BitsquareApp.java index 64632c62c2..ce5a40f866 100644 --- a/gui/src/main/java/io/bitsquare/app/BitsquareApp.java +++ b/gui/src/main/java/io/bitsquare/app/BitsquareApp.java @@ -102,7 +102,7 @@ public class BitsquareApp extends Application { log.info("Log files under: " + logPath); Version.printVersion(); Utilities.printSysInfo(); - Log.setLevel(!DevFlags.IS_RELEASE_VERSION); + Log.setLevel(!DevFlags.IS_RELEASE_VERSION && !DevFlags.STRESS_TEST_MODE); UserThread.setExecutor(Platform::runLater); UserThread.setTimerClass(UITimer.class); From fd4b6a02cd496a674543c74fc30e07de09b01d69 Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Thu, 9 Jun 2016 18:40:06 +0200 Subject: [PATCH 02/37] add concrete stress test onion address --- .../java/io/bitsquare/p2p/seed/SeedNodesRepository.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/network/src/main/java/io/bitsquare/p2p/seed/SeedNodesRepository.java b/network/src/main/java/io/bitsquare/p2p/seed/SeedNodesRepository.java index 311c3d07da..6c468c3ceb 100644 --- a/network/src/main/java/io/bitsquare/p2p/seed/SeedNodesRepository.java +++ b/network/src/main/java/io/bitsquare/p2p/seed/SeedNodesRepository.java @@ -34,10 +34,10 @@ public class SeedNodesRepository { new NodeAddress("b66vnevaljo6xt5a.onion:8000"),*/ // v0.4.2 - DevFlags.STRESS_TEST_MODE ? new NodeAddress("TBD.onion:8000") : new NodeAddress("uadzuib66jupaept.onion:8000"), - DevFlags.STRESS_TEST_MODE ? new NodeAddress("TBD.onion:8000") : new NodeAddress("hbma455xxbqhcuqh.onion:8000"), - DevFlags.STRESS_TEST_MODE ? new NodeAddress("TBD.onion:8000") : new NodeAddress("wgthuiqn3aoiovbm.onion:8000"), - DevFlags.STRESS_TEST_MODE ? new NodeAddress("TBD.onion:8000") : new NodeAddress("2zxtnprnx5wqr7a3.onion:8000"), + DevFlags.STRESS_TEST_MODE ? new NodeAddress("hlitt7z4bec4kdh4.onion:8000") : new NodeAddress("uadzuib66jupaept.onion:8000"), + DevFlags.STRESS_TEST_MODE ? new NodeAddress("hlitt7z4bec4kdh4.onion:8000") : new NodeAddress("hbma455xxbqhcuqh.onion:8000"), + DevFlags.STRESS_TEST_MODE ? new NodeAddress("hlitt7z4bec4kdh4.onion:8000") : new NodeAddress("wgthuiqn3aoiovbm.onion:8000"), + DevFlags.STRESS_TEST_MODE ? new NodeAddress("hlitt7z4bec4kdh4.onion:8000") : new NodeAddress("2zxtnprnx5wqr7a3.onion:8000"), // testnet new NodeAddress("znmy44wcstn2rkva.onion:8001"), From 12e56fbd8bef3270add5aaef291b58db36d6dc87 Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Thu, 9 Jun 2016 18:40:19 +0200 Subject: [PATCH 03/37] Add maxConnection program arg --- common/src/main/java/io/bitsquare/app/DevFlags.java | 2 +- common/src/main/java/io/bitsquare/app/ProgramArguments.java | 1 + gui/src/main/java/io/bitsquare/app/BitsquareAppMain.java | 4 ++++ network/src/main/java/io/bitsquare/p2p/P2PModule.java | 3 +++ network/src/main/java/io/bitsquare/p2p/P2PService.java | 4 +++- 5 files changed, 12 insertions(+), 2 deletions(-) diff --git a/common/src/main/java/io/bitsquare/app/DevFlags.java b/common/src/main/java/io/bitsquare/app/DevFlags.java index 2e76ee79a6..b7349c9311 100644 --- a/common/src/main/java/io/bitsquare/app/DevFlags.java +++ b/common/src/main/java/io/bitsquare/app/DevFlags.java @@ -6,7 +6,7 @@ import org.slf4j.LoggerFactory; public class DevFlags { private static final Logger log = LoggerFactory.getLogger(DevFlags.class); - public static final boolean STRESS_TEST_MODE = false; + public static final boolean STRESS_TEST_MODE = true; public static final boolean DEV_MODE = STRESS_TEST_MODE || false; public static final boolean IS_RELEASE_VERSION = !DEV_MODE && true; diff --git a/common/src/main/java/io/bitsquare/app/ProgramArguments.java b/common/src/main/java/io/bitsquare/app/ProgramArguments.java index 185a92a402..e01a544477 100644 --- a/common/src/main/java/io/bitsquare/app/ProgramArguments.java +++ b/common/src/main/java/io/bitsquare/app/ProgramArguments.java @@ -8,6 +8,7 @@ public class ProgramArguments { // program arg names public static final String TOR_DIR = "torDir"; public static final String USE_LOCALHOST = "useLocalhost"; + public static final String MAX_CONNECTIONS = "maxConnections"; public static final String NAME_KEY = "node.name"; diff --git a/gui/src/main/java/io/bitsquare/app/BitsquareAppMain.java b/gui/src/main/java/io/bitsquare/app/BitsquareAppMain.java index d4d41af28f..5f0934d3bb 100644 --- a/gui/src/main/java/io/bitsquare/app/BitsquareAppMain.java +++ b/gui/src/main/java/io/bitsquare/app/BitsquareAppMain.java @@ -20,6 +20,7 @@ package io.bitsquare.app; import io.bitsquare.BitsquareException; import io.bitsquare.btc.BitcoinNetwork; import io.bitsquare.btc.RegTestHost; +import io.bitsquare.p2p.P2PService; import io.bitsquare.util.joptsimple.EnumValueConverter; import joptsimple.OptionException; import joptsimple.OptionParser; @@ -106,6 +107,9 @@ public class BitsquareAppMain extends BitsquareExecutable { parser.accepts(ProgramArguments.USE_LOCALHOST, description("Use localhost network for development", false)) .withRequiredArg() .ofType(boolean.class); + parser.accepts(ProgramArguments.MAX_CONNECTIONS, description("Max. connections a peer will try to keep", P2PService.MAX_CONNECTIONS_DEFAULT)) + .withRequiredArg() + .ofType(int.class); parser.accepts(BitcoinNetwork.KEY, description("Bitcoin network", BitcoinNetwork.DEFAULT)) .withRequiredArg() .ofType(BitcoinNetwork.class) diff --git a/network/src/main/java/io/bitsquare/p2p/P2PModule.java b/network/src/main/java/io/bitsquare/p2p/P2PModule.java index 3818da82b1..4ae571da9e 100644 --- a/network/src/main/java/io/bitsquare/p2p/P2PModule.java +++ b/network/src/main/java/io/bitsquare/p2p/P2PModule.java @@ -50,6 +50,9 @@ public class P2PModule extends AppModule { Integer port = env.getProperty(ProgramArguments.PORT_KEY, int.class, 9999); bind(int.class).annotatedWith(Names.named(ProgramArguments.PORT_KEY)).toInstance(port); + Integer maxConnections = env.getProperty(ProgramArguments.MAX_CONNECTIONS, int.class, P2PService.MAX_CONNECTIONS_DEFAULT); + bind(int.class).annotatedWith(Names.named(ProgramArguments.MAX_CONNECTIONS)).toInstance(maxConnections); + Integer networkId = env.getProperty(ProgramArguments.NETWORK_ID, int.class, 1); bind(int.class).annotatedWith(Names.named(ProgramArguments.NETWORK_ID)).toInstance(networkId); } diff --git a/network/src/main/java/io/bitsquare/p2p/P2PService.java b/network/src/main/java/io/bitsquare/p2p/P2PService.java index dde89d05ab..d38142f4ad 100644 --- a/network/src/main/java/io/bitsquare/p2p/P2PService.java +++ b/network/src/main/java/io/bitsquare/p2p/P2PService.java @@ -102,13 +102,15 @@ public class P2PService implements SetupListener, MessageListener, ConnectionLis @Named(ProgramArguments.TOR_DIR) File torDir, @Named(ProgramArguments.USE_LOCALHOST) boolean useLocalhost, @Named(ProgramArguments.NETWORK_ID) int networkId, + @Named(ProgramArguments.MAX_CONNECTIONS) int maxConnections, @Named("storage.dir") File storageDir, Clock clock, @Nullable EncryptionService encryptionService, @Nullable KeyRing keyRing) { this( seedNodesRepository, - port, MAX_CONNECTIONS_DEFAULT, + port, + maxConnections, torDir, useLocalhost, networkId, From ef2e3e593e81e5400017b333c2296dddfd14f02a Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Thu, 9 Jun 2016 18:44:15 +0200 Subject: [PATCH 04/37] Add maxConnection program arg --- network/src/test/java/io/bitsquare/p2p/TestUtils.java | 2 +- .../test/java/io/bitsquare/p2p/network/NetworkStressTest.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/network/src/test/java/io/bitsquare/p2p/TestUtils.java b/network/src/test/java/io/bitsquare/p2p/TestUtils.java index 25a6fdcc01..a6f87ff4c7 100644 --- a/network/src/test/java/io/bitsquare/p2p/TestUtils.java +++ b/network/src/test/java/io/bitsquare/p2p/TestUtils.java @@ -131,7 +131,7 @@ public class TestUtils { } P2PService p2PService = new P2PService(seedNodesRepository, port, new File("seed_node_" + port), useLocalhost, - 2, new File("dummy"), new Clock(), encryptionService, keyRing); + 2, P2PService.MAX_CONNECTIONS_DEFAULT, new File("dummy"), new Clock(), encryptionService, keyRing); p2PService.start(new P2PServiceListener() { @Override public void onRequestingDataCompleted() { diff --git a/network/src/test/java/io/bitsquare/p2p/network/NetworkStressTest.java b/network/src/test/java/io/bitsquare/p2p/network/NetworkStressTest.java index fae8cf1284..bff1b788f3 100644 --- a/network/src/test/java/io/bitsquare/p2p/network/NetworkStressTest.java +++ b/network/src/test/java/io/bitsquare/p2p/network/NetworkStressTest.java @@ -323,7 +323,7 @@ public class NetworkStressTest { final EncryptionService peerEncryptionService = new EncryptionService(peerKeyRing); return new P2PService(seedNodesRepository, port, peerTorDir, useLocalhost, - REGTEST_NETWORK_ID, peerStorageDir, new Clock(), peerEncryptionService, peerKeyRing); + REGTEST_NETWORK_ID, P2PService.MAX_CONNECTIONS_DEFAULT, peerStorageDir, new Clock(), peerEncryptionService, peerKeyRing); } // ## TEST SETUP: P2P service listener classes From d1bb37d2b9fee6603f18729a4f3c10768236c2e6 Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Thu, 9 Jun 2016 20:36:58 +0200 Subject: [PATCH 05/37] Add scripts --- package/stresstest/copyDir.sh | 10 ++++++++++ package/stresstest/startnodes.sh | 23 +++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100755 package/stresstest/copyDir.sh create mode 100755 package/stresstest/startnodes.sh diff --git a/package/stresstest/copyDir.sh b/package/stresstest/copyDir.sh new file mode 100755 index 0000000000..60b874c3f9 --- /dev/null +++ b/package/stresstest/copyDir.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +cd /Users/mk/Library/Application\ Support + +for i in `seq 101 500`; + do + dir=BS_$i + mkdir $dir + cp -av BS_/* $dir/ +done \ No newline at end of file diff --git a/package/stresstest/startnodes.sh b/package/stresstest/startnodes.sh new file mode 100755 index 0000000000..0f87a0d4ec --- /dev/null +++ b/package/stresstest/startnodes.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +cd ../../seednode/target + +logpath=/Users/mk/Documents/_intellij/bitsquare + +nohup java -jar SeedNode.jar hlitt7z4bec4kdh4.onion:8000 0 500 >/dev/null 2>$logpath/stresstest_seednode.log & +sleep 40 + +cd ../../gui/target +nohup java -jar shaded.jar --app.name=BS_arb --maxConnections=500 >/dev/null 2>$logpath/stresstest_arb.log & +sleep 40 + +delay=5 +for i in `seq 1 10`; + do + echo $i + nohup java -jar shaded.jar --app.name=BS_$i --maxConnections=500 >/dev/null 2>$logpath/stresstest_$i.log & + sleep $delay +done + +# kill `ps -ef | grep java | grep -v grep | awk '{print $2}'` + From 49a1dacab60db1553814e2c699d17beb29c383c8 Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Thu, 9 Jun 2016 20:37:13 +0200 Subject: [PATCH 06/37] Log nr offers --- .../gui/main/offer/offerbook/OfferBook.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/gui/src/main/java/io/bitsquare/gui/main/offer/offerbook/OfferBook.java b/gui/src/main/java/io/bitsquare/gui/main/offer/offerbook/OfferBook.java index 47f30e11d9..695d8c58b9 100644 --- a/gui/src/main/java/io/bitsquare/gui/main/offer/offerbook/OfferBook.java +++ b/gui/src/main/java/io/bitsquare/gui/main/offer/offerbook/OfferBook.java @@ -17,6 +17,7 @@ package io.bitsquare.gui.main.offer.offerbook; +import io.bitsquare.app.DevFlags; import io.bitsquare.trade.TradeManager; import io.bitsquare.trade.offer.Offer; import io.bitsquare.trade.offer.OfferBookService; @@ -56,8 +57,12 @@ public class OfferBook { @Override public void onAdded(Offer offer) { OfferBookListItem offerBookListItem = new OfferBookListItem(offer); - if (!offerBookListItems.contains(offerBookListItem)) + if (!offerBookListItems.contains(offerBookListItem)) { offerBookListItems.add(offerBookListItem); + + if (DevFlags.STRESS_TEST_MODE) + System.err.println("Offer added: Nr. of offers = " + offerBookListItems.size()); + } } @Override @@ -72,8 +77,12 @@ public class OfferBook { if (candidate.isPresent()) { OfferBookListItem item = candidate.get(); synchronized (offerBookListItems) { - if (offerBookListItems.contains(item)) + if (offerBookListItems.contains(item)) { offerBookListItems.remove(item); + + if (DevFlags.STRESS_TEST_MODE) + System.err.println("Offer removed: Nr. of offers = " + offerBookListItems.size()); + } } } } @@ -95,6 +104,9 @@ public class OfferBook { offerBookListItems.addAll(list); + if (DevFlags.STRESS_TEST_MODE) + System.err.println("Offer filled: Nr. of offers = " + offerBookListItems.size()); + log.debug("offerBookListItems " + offerBookListItems.size()); } } From d65e020ecee23d849e46d4105ff410154c089ae3 Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Thu, 9 Jun 2016 20:37:32 +0200 Subject: [PATCH 07/37] Log nr peers --- network/src/main/java/io/bitsquare/p2p/peers/PeerManager.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/network/src/main/java/io/bitsquare/p2p/peers/PeerManager.java b/network/src/main/java/io/bitsquare/p2p/peers/PeerManager.java index e24dbea098..be96d50778 100644 --- a/network/src/main/java/io/bitsquare/p2p/peers/PeerManager.java +++ b/network/src/main/java/io/bitsquare/p2p/peers/PeerManager.java @@ -1,5 +1,6 @@ package io.bitsquare.p2p.peers; +import io.bitsquare.app.DevFlags; import io.bitsquare.app.Log; import io.bitsquare.common.Clock; import io.bitsquare.common.Timer; @@ -211,6 +212,9 @@ public class PeerManager implements ConnectionListener { Set allConnections = networkNode.getAllConnections(); int size = allConnections.size(); log.info("We have {} connections open. Our limit is {}", size, limit); + if (DevFlags.STRESS_TEST_MODE) + System.err.println("Connections = " + size); + if (size > limit) { log.info("We have too many connections open.\n\t" + "Lets try first to remove the inbound connections of type PEER."); From f2a0c56b67a7a085fb3257d68130cb0c6f844988 Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Thu, 9 Jun 2016 20:43:18 +0200 Subject: [PATCH 08/37] Add num offers label to offer book view --- .../main/java/io/bitsquare/gui/bitsquare.css | 6 ++++++ .../main/offer/offerbook/OfferBookView.java | 20 ++++++++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/gui/src/main/java/io/bitsquare/gui/bitsquare.css b/gui/src/main/java/io/bitsquare/gui/bitsquare.css index 9aca50cd64..3679b24b99 100644 --- a/gui/src/main/java/io/bitsquare/gui/bitsquare.css +++ b/gui/src/main/java/io/bitsquare/gui/bitsquare.css @@ -460,6 +460,12 @@ textfield */ -fx-text-fill: #333000; } +/* Offer book */ +#num-offers { + -fx-font-size: 12; +} + + /* Create offer */ #direction-icon-label { -fx-font-weight: bold; diff --git a/gui/src/main/java/io/bitsquare/gui/main/offer/offerbook/OfferBookView.java b/gui/src/main/java/io/bitsquare/gui/main/offer/offerbook/OfferBookView.java index 373079b986..aacbc70f80 100644 --- a/gui/src/main/java/io/bitsquare/gui/main/offer/offerbook/OfferBookView.java +++ b/gui/src/main/java/io/bitsquare/gui/main/offer/offerbook/OfferBookView.java @@ -43,6 +43,7 @@ import io.bitsquare.trade.offer.Offer; import javafx.beans.property.ReadOnlyObjectWrapper; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; +import javafx.collections.ListChangeListener; import javafx.geometry.HPos; import javafx.geometry.Insets; import javafx.geometry.VPos; @@ -75,6 +76,8 @@ public class OfferBookView extends ActivatableViewAndModel offerListListener; /////////////////////////////////////////////////////////////////////////////////////////// @@ -181,7 +184,17 @@ public class OfferBookView extends ActivatableViewAndModel o1.getOffer().getPaymentMethod().compareTo(o2.getOffer().getPaymentMethod())); avatarColumn.setComparator((o1, o2) -> o1.getOffer().getOwnerNodeAddress().hostName.compareTo(o2.getOffer().getOwnerNodeAddress().hostName)); - createOfferButton = addButton(root, ++gridRow, ""); + nrOfOffersLabel = new Label("Nr. of offers: -"); + nrOfOffersLabel.setId("num-offers"); + GridPane.setHalignment(nrOfOffersLabel, HPos.LEFT); + GridPane.setVgrow(nrOfOffersLabel, Priority.NEVER); + GridPane.setValignment(nrOfOffersLabel, VPos.TOP); + GridPane.setRowIndex(nrOfOffersLabel, ++gridRow); + GridPane.setColumnIndex(nrOfOffersLabel, 0); + GridPane.setMargin(nrOfOffersLabel, new Insets(10, 0, 0, -5)); + root.getChildren().add(nrOfOffersLabel); + + createOfferButton = addButton(root, gridRow, ""); createOfferButton.setMinHeight(40); createOfferButton.setPadding(new Insets(0, 20, 0, 20)); createOfferButton.setGraphicTextGap(10); @@ -233,6 +246,10 @@ public class OfferBookView extends ActivatableViewAndModel nrOfOffersLabel.setText("Nr. of offers: " + model.getOfferList().size()); + model.getOfferList().addListener(offerListListener); + nrOfOffersLabel.setText("Nr. of offers: " + model.getOfferList().size()); } @Override @@ -245,6 +262,7 @@ public class OfferBookView extends ActivatableViewAndModel Date: Thu, 9 Jun 2016 22:26:49 +0200 Subject: [PATCH 09/37] Add time to logs --- .../io/bitsquare/gui/main/offer/offerbook/OfferBook.java | 8 +++++--- .../src/main/java/io/bitsquare/p2p/peers/PeerManager.java | 3 ++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/gui/src/main/java/io/bitsquare/gui/main/offer/offerbook/OfferBook.java b/gui/src/main/java/io/bitsquare/gui/main/offer/offerbook/OfferBook.java index 695d8c58b9..051c776def 100644 --- a/gui/src/main/java/io/bitsquare/gui/main/offer/offerbook/OfferBook.java +++ b/gui/src/main/java/io/bitsquare/gui/main/offer/offerbook/OfferBook.java @@ -27,6 +27,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.inject.Inject; +import java.text.SimpleDateFormat; +import java.util.Date; import java.util.List; import java.util.Optional; import java.util.concurrent.CopyOnWriteArraySet; @@ -61,7 +63,7 @@ public class OfferBook { offerBookListItems.add(offerBookListItem); if (DevFlags.STRESS_TEST_MODE) - System.err.println("Offer added: Nr. of offers = " + offerBookListItems.size()); + System.err.println(new SimpleDateFormat("HH:mm:ss.SSS").format(new Date()) + " - Offer added: Nr. of offers = " + offerBookListItems.size()); } } @@ -81,7 +83,7 @@ public class OfferBook { offerBookListItems.remove(item); if (DevFlags.STRESS_TEST_MODE) - System.err.println("Offer removed: Nr. of offers = " + offerBookListItems.size()); + System.err.println(new SimpleDateFormat("HH:mm:ss.SSS").format(new Date()) + " - Offer removed: Nr. of offers = " + offerBookListItems.size()); } } } @@ -105,7 +107,7 @@ public class OfferBook { offerBookListItems.addAll(list); if (DevFlags.STRESS_TEST_MODE) - System.err.println("Offer filled: Nr. of offers = " + offerBookListItems.size()); + System.err.println(new SimpleDateFormat("HH:mm:ss.SSS").format(new Date()) + " - Offer filled: Nr. of offers = " + offerBookListItems.size()); log.debug("offerBookListItems " + offerBookListItems.size()); } diff --git a/network/src/main/java/io/bitsquare/p2p/peers/PeerManager.java b/network/src/main/java/io/bitsquare/p2p/peers/PeerManager.java index be96d50778..afee6159d6 100644 --- a/network/src/main/java/io/bitsquare/p2p/peers/PeerManager.java +++ b/network/src/main/java/io/bitsquare/p2p/peers/PeerManager.java @@ -14,6 +14,7 @@ import org.slf4j.LoggerFactory; import javax.annotation.Nullable; import java.io.File; +import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.TimeUnit; @@ -213,7 +214,7 @@ public class PeerManager implements ConnectionListener { int size = allConnections.size(); log.info("We have {} connections open. Our limit is {}", size, limit); if (DevFlags.STRESS_TEST_MODE) - System.err.println("Connections = " + size); + System.err.println(new SimpleDateFormat("HH:mm:ss.SSS").format(new Date()) + " - Connections = " + size); if (size > limit) { log.info("We have too many connections open.\n\t" + From e2cb35110eb92e873d56c075dfe7bce24c44631a Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Fri, 10 Jun 2016 21:09:49 +0200 Subject: [PATCH 10/37] Add scripts for stress test --- package/stresstest/startnodes.sh | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/package/stresstest/startnodes.sh b/package/stresstest/startnodes.sh index 0f87a0d4ec..090f100ceb 100755 --- a/package/stresstest/startnodes.sh +++ b/package/stresstest/startnodes.sh @@ -2,22 +2,24 @@ cd ../../seednode/target -logpath=/Users/mk/Documents/_intellij/bitsquare +logpath=/Users/mk/Documents/_intellij/bitsquare/logs -nohup java -jar SeedNode.jar hlitt7z4bec4kdh4.onion:8000 0 500 >/dev/null 2>$logpath/stresstest_seednode.log & +mkdir $logpath + +nohup java -jar SeedNode.jar hlitt7z4bec4kdh4.onion:8000 0 500 >/dev/null 2>$logpath/ST_0_seednode.log & sleep 40 cd ../../gui/target -nohup java -jar shaded.jar --app.name=BS_arb --maxConnections=500 >/dev/null 2>$logpath/stresstest_arb.log & +nohup java -jar shaded.jar --app.name=BS_arb --maxConnections=120 >/dev/null 2>$logpath/ST_0_arb.log & sleep 40 -delay=5 +delay=10 for i in `seq 1 10`; - do + do echo $i - nohup java -jar shaded.jar --app.name=BS_$i --maxConnections=500 >/dev/null 2>$logpath/stresstest_$i.log & + nohup java -jar shaded.jar --app.name=BS_$i --maxConnections=120 >/dev/null 2>$logpath/ST_$i.log & sleep $delay -done + done # kill `ps -ef | grep java | grep -v grep | awk '{print $2}'` From fc9f904da0986274c58d45706a01d2932f4e4ac3 Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Fri, 10 Jun 2016 21:20:41 +0200 Subject: [PATCH 11/37] Rename --- .../io/bitsquare/gui/util/{Profiler.java => GUIProfiler.java} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename gui/src/main/java/io/bitsquare/gui/util/{Profiler.java => GUIProfiler.java} (94%) diff --git a/gui/src/main/java/io/bitsquare/gui/util/Profiler.java b/gui/src/main/java/io/bitsquare/gui/util/GUIProfiler.java similarity index 94% rename from gui/src/main/java/io/bitsquare/gui/util/Profiler.java rename to gui/src/main/java/io/bitsquare/gui/util/GUIProfiler.java index 68b27f17be..cd76dfe59d 100644 --- a/gui/src/main/java/io/bitsquare/gui/util/Profiler.java +++ b/gui/src/main/java/io/bitsquare/gui/util/GUIProfiler.java @@ -24,8 +24,8 @@ import org.slf4j.LoggerFactory; import java.util.concurrent.TimeUnit; -public class Profiler { - private static final Logger log = LoggerFactory.getLogger(Profiler.class); +public class GUIProfiler { + private static final Logger log = LoggerFactory.getLogger(GUIProfiler.class); private static final Stopwatch globalStopwatch = Stopwatch.createStarted(); private static final ThreadLocal threadStopwatch = ThreadLocal.withInitial(Stopwatch::createStarted); From f6d595653f5906520bafdaa85dd4e425993b888f Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Fri, 10 Jun 2016 21:21:10 +0200 Subject: [PATCH 12/37] Add memory logs, log when removed on disconnect --- .../java/io/bitsquare/common/util/Profiler.java | 15 ++++++++++++--- .../gui/main/offer/offerbook/OfferBook.java | 7 ++++--- .../io/bitsquare/p2p/storage/P2PDataStorage.java | 9 +++++++++ 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/common/src/main/java/io/bitsquare/common/util/Profiler.java b/common/src/main/java/io/bitsquare/common/util/Profiler.java index f889a4bd68..a535f8400d 100644 --- a/common/src/main/java/io/bitsquare/common/util/Profiler.java +++ b/common/src/main/java/io/bitsquare/common/util/Profiler.java @@ -20,15 +20,24 @@ package io.bitsquare.common.util; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -class Profiler { +public class Profiler { private static final Logger log = LoggerFactory.getLogger(Profiler.class); public static void printSystemLoad(Logger log) { + String msg = printSystemLoadString(); + log.info(msg); + } + + public static String printSystemLoadString() { + long used = getUsedMemory(); + return "System load (nr. threads/used memory (MB)): " + Thread.activeCount() + "/" + used; + } + + public static long getUsedMemory() { Runtime runtime = Runtime.getRuntime(); long free = runtime.freeMemory() / 1024 / 1024; long total = runtime.totalMemory() / 1024 / 1024; - long used = total - free; - log.info("System load (nr. threads/used memory (MB)): " + Thread.activeCount() + "/" + used); + return total - free; } } diff --git a/gui/src/main/java/io/bitsquare/gui/main/offer/offerbook/OfferBook.java b/gui/src/main/java/io/bitsquare/gui/main/offer/offerbook/OfferBook.java index 051c776def..df79a41746 100644 --- a/gui/src/main/java/io/bitsquare/gui/main/offer/offerbook/OfferBook.java +++ b/gui/src/main/java/io/bitsquare/gui/main/offer/offerbook/OfferBook.java @@ -18,6 +18,7 @@ package io.bitsquare.gui.main.offer.offerbook; import io.bitsquare.app.DevFlags; +import io.bitsquare.common.util.Profiler; import io.bitsquare.trade.TradeManager; import io.bitsquare.trade.offer.Offer; import io.bitsquare.trade.offer.OfferBookService; @@ -63,7 +64,7 @@ public class OfferBook { offerBookListItems.add(offerBookListItem); if (DevFlags.STRESS_TEST_MODE) - System.err.println(new SimpleDateFormat("HH:mm:ss.SSS").format(new Date()) + " - Offer added: Nr. of offers = " + offerBookListItems.size()); + System.err.println(new SimpleDateFormat("HH:mm:ss.SSS").format(new Date()) + " - Offer added: Nr. of offers = " + offerBookListItems.size() + " / Memory(MB): " + Profiler.getUsedMemory()); } } @@ -83,7 +84,7 @@ public class OfferBook { offerBookListItems.remove(item); if (DevFlags.STRESS_TEST_MODE) - System.err.println(new SimpleDateFormat("HH:mm:ss.SSS").format(new Date()) + " - Offer removed: Nr. of offers = " + offerBookListItems.size()); + System.err.println(new SimpleDateFormat("HH:mm:ss.SSS").format(new Date()) + " - Offer removed: Nr. of offers = " + offerBookListItems.size() + " / Memory(MB): " + Profiler.getUsedMemory()); } } } @@ -107,7 +108,7 @@ public class OfferBook { offerBookListItems.addAll(list); if (DevFlags.STRESS_TEST_MODE) - System.err.println(new SimpleDateFormat("HH:mm:ss.SSS").format(new Date()) + " - Offer filled: Nr. of offers = " + offerBookListItems.size()); + System.err.println(new SimpleDateFormat("HH:mm:ss.SSS").format(new Date()) + " - Offer filled: Nr. of offers = " + offerBookListItems.size() + " / Memory(MB): " + Profiler.getUsedMemory()); log.debug("offerBookListItems " + offerBookListItems.size()); } diff --git a/network/src/main/java/io/bitsquare/p2p/storage/P2PDataStorage.java b/network/src/main/java/io/bitsquare/p2p/storage/P2PDataStorage.java index 0dec127ddc..4841eb94d9 100644 --- a/network/src/main/java/io/bitsquare/p2p/storage/P2PDataStorage.java +++ b/network/src/main/java/io/bitsquare/p2p/storage/P2PDataStorage.java @@ -1,6 +1,7 @@ package io.bitsquare.p2p.storage; import com.google.common.annotations.VisibleForTesting; +import io.bitsquare.app.DevFlags; import io.bitsquare.app.Log; import io.bitsquare.app.Version; import io.bitsquare.common.Timer; @@ -9,6 +10,7 @@ import io.bitsquare.common.crypto.CryptoException; import io.bitsquare.common.crypto.Hash; import io.bitsquare.common.crypto.Sig; import io.bitsquare.common.persistance.Persistable; +import io.bitsquare.common.util.Profiler; import io.bitsquare.common.wire.Payload; import io.bitsquare.p2p.Message; import io.bitsquare.p2p.NodeAddress; @@ -32,6 +34,7 @@ import java.io.File; import java.io.Serializable; import java.security.KeyPair; import java.security.PublicKey; +import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CopyOnWriteArraySet; @@ -159,6 +162,12 @@ public class P2PDataStorage implements MessageListener, ConnectionListener { if (containsKey) { log.info("We remove the data as the data owner got disconnected with " + "closeConnectionReason=" + closeConnectionReason); + if (DevFlags.STRESS_TEST_MODE) + System.err.println(new SimpleDateFormat("HH:mm:ss.SSS").format(new Date()) + + " - We remove the data as the data owner got disconnected with " + + "closeConnectionReason=" + closeConnectionReason + + " / isIntended=" + closeConnectionReason.isIntended + + " / Memory(MB): " + Profiler.getUsedMemory()); doRemoveProtectedExpirableData(protectedData, hashOfPayload); } else { log.debug("Remove data ignored as we don't have an entry for that data."); From d5eaef5ea8745cb58e4ea45eabf6058fb9e7da35 Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Fri, 10 Jun 2016 21:21:56 +0200 Subject: [PATCH 13/37] Use ConfidenceProgressIndicator instead of ProgressIndicator to avoid high cpu load --- .../gui/main/offer/createoffer/CreateOfferView.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gui/src/main/java/io/bitsquare/gui/main/offer/createoffer/CreateOfferView.java b/gui/src/main/java/io/bitsquare/gui/main/offer/createoffer/CreateOfferView.java index c29246c49f..855663cf9b 100644 --- a/gui/src/main/java/io/bitsquare/gui/main/offer/createoffer/CreateOfferView.java +++ b/gui/src/main/java/io/bitsquare/gui/main/offer/createoffer/CreateOfferView.java @@ -28,6 +28,7 @@ import io.bitsquare.gui.Navigation; import io.bitsquare.gui.common.view.ActivatableViewAndModel; import io.bitsquare.gui.common.view.FxmlView; import io.bitsquare.gui.components.*; +import io.bitsquare.gui.components.confidence.ConfidenceProgressIndicator; import io.bitsquare.gui.main.MainView; import io.bitsquare.gui.main.account.AccountView; import io.bitsquare.gui.main.account.content.arbitratorselection.ArbitratorSelectionView; @@ -91,7 +92,7 @@ public class CreateOfferView extends ActivatableViewAndModel GUIUtil.showFeeInfoBeforeExecute(this::openWallet)); - spinner = new ProgressIndicator(0); + spinner = new ConfidenceProgressIndicator(0); spinner.setPrefHeight(18); spinner.setPrefWidth(18); spinnerInfoLabel = new Label(); From 03171abd2827f0139c3409c3e09e381adcae06c4 Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Fri, 10 Jun 2016 21:22:28 +0200 Subject: [PATCH 14/37] Add mem. log --- network/src/main/java/io/bitsquare/p2p/peers/PeerManager.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/network/src/main/java/io/bitsquare/p2p/peers/PeerManager.java b/network/src/main/java/io/bitsquare/p2p/peers/PeerManager.java index afee6159d6..d8d9d4208a 100644 --- a/network/src/main/java/io/bitsquare/p2p/peers/PeerManager.java +++ b/network/src/main/java/io/bitsquare/p2p/peers/PeerManager.java @@ -5,6 +5,7 @@ import io.bitsquare.app.Log; import io.bitsquare.common.Clock; import io.bitsquare.common.Timer; import io.bitsquare.common.UserThread; +import io.bitsquare.common.util.Profiler; import io.bitsquare.p2p.NodeAddress; import io.bitsquare.p2p.network.*; import io.bitsquare.p2p.peers.peerexchange.Peer; @@ -214,7 +215,7 @@ public class PeerManager implements ConnectionListener { int size = allConnections.size(); log.info("We have {} connections open. Our limit is {}", size, limit); if (DevFlags.STRESS_TEST_MODE) - System.err.println(new SimpleDateFormat("HH:mm:ss.SSS").format(new Date()) + " - Connections = " + size); + System.err.println(new SimpleDateFormat("HH:mm:ss.SSS").format(new Date()) + " - Connections = " + size + " / Memory(MB): " + Profiler.getUsedMemory()); if (size > limit) { log.info("We have too many connections open.\n\t" + From 6057c20406e431fa2ae2a6255c0465d866a5f63e Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Fri, 10 Jun 2016 21:22:59 +0200 Subject: [PATCH 15/37] dont blur at stresstests, dont animate spinners --- gui/src/main/java/io/bitsquare/gui/main/MainView.java | 9 ++++++--- .../main/java/io/bitsquare/gui/main/MainViewModel.java | 4 ++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/gui/src/main/java/io/bitsquare/gui/main/MainView.java b/gui/src/main/java/io/bitsquare/gui/main/MainView.java index b7b2b0c043..688a77ed58 100644 --- a/gui/src/main/java/io/bitsquare/gui/main/MainView.java +++ b/gui/src/main/java/io/bitsquare/gui/main/MainView.java @@ -19,6 +19,7 @@ package io.bitsquare.gui.main; import io.bitsquare.BitsquareException; import io.bitsquare.app.BitsquareApp; +import io.bitsquare.app.DevFlags; import io.bitsquare.btc.pricefeed.PriceFeed; import io.bitsquare.common.UserThread; import io.bitsquare.common.util.Tuple2; @@ -67,11 +68,13 @@ public class MainView extends InitializableView { } public static void blurLight() { - transitions.blur(MainView.rootContainer, Transitions.DEFAULT_DURATION, -0.1, false, 5); + if (!DevFlags.STRESS_TEST_MODE) + transitions.blur(MainView.rootContainer, Transitions.DEFAULT_DURATION, -0.1, false, 5); } public static void blurUltraLight() { - transitions.blur(MainView.rootContainer, Transitions.DEFAULT_DURATION, -0.1, false, 2); + if (!DevFlags.STRESS_TEST_MODE) + transitions.blur(MainView.rootContainer, Transitions.DEFAULT_DURATION, -0.1, false, 2); } public static void darken() { @@ -335,7 +338,7 @@ public class MainView extends InitializableView { }; model.walletServiceErrorMsg.addListener(walletServiceErrorMsgListener); - btcSyncIndicator = new ProgressBar(-1); + btcSyncIndicator = new ProgressBar(); btcSyncIndicator.setPrefWidth(120); btcSyncIndicator.progressProperty().bind(model.btcSyncProgress); diff --git a/gui/src/main/java/io/bitsquare/gui/main/MainViewModel.java b/gui/src/main/java/io/bitsquare/gui/main/MainViewModel.java index cda3c1c983..394807cd77 100644 --- a/gui/src/main/java/io/bitsquare/gui/main/MainViewModel.java +++ b/gui/src/main/java/io/bitsquare/gui/main/MainViewModel.java @@ -110,7 +110,7 @@ public class MainViewModel implements ViewModel { // BTC network final StringProperty btcInfo = new SimpleStringProperty("Initializing"); - final DoubleProperty btcSyncProgress = new SimpleDoubleProperty(-1); + final DoubleProperty btcSyncProgress = new SimpleDoubleProperty(DevFlags.STRESS_TEST_MODE ? 0 : -1); final StringProperty walletServiceErrorMsg = new SimpleStringProperty(); final StringProperty btcSplashSyncIconId = new SimpleStringProperty(); final StringProperty marketPrice = new SimpleStringProperty("N/A"); @@ -126,7 +126,7 @@ public class MainViewModel implements ViewModel { // P2P network final StringProperty p2PNetworkInfo = new SimpleStringProperty(); private MonadicBinding p2PNetworkInfoBinding; - final DoubleProperty splashP2PNetworkProgress = new SimpleDoubleProperty(-1); + final DoubleProperty splashP2PNetworkProgress = new SimpleDoubleProperty(DevFlags.STRESS_TEST_MODE ? 0 : -1); final StringProperty p2pNetworkWarnMsg = new SimpleStringProperty(); final StringProperty p2PNetworkIconId = new SimpleStringProperty(); final BooleanProperty bootstrapComplete = new SimpleBooleanProperty(); From 0bc9a8a7f87f5c92914f4e9d6b08a65d4f5d1608 Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Fri, 10 Jun 2016 22:28:07 +0200 Subject: [PATCH 16/37] Dont remove offer at EOFException --- .../main/java/io/bitsquare/p2p/storage/P2PDataStorage.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/network/src/main/java/io/bitsquare/p2p/storage/P2PDataStorage.java b/network/src/main/java/io/bitsquare/p2p/storage/P2PDataStorage.java index 4841eb94d9..2132c086be 100644 --- a/network/src/main/java/io/bitsquare/p2p/storage/P2PDataStorage.java +++ b/network/src/main/java/io/bitsquare/p2p/storage/P2PDataStorage.java @@ -168,7 +168,11 @@ public class P2PDataStorage implements MessageListener, ConnectionListener { "closeConnectionReason=" + closeConnectionReason + " / isIntended=" + closeConnectionReason.isIntended + " / Memory(MB): " + Profiler.getUsedMemory()); - doRemoveProtectedExpirableData(protectedData, hashOfPayload); + + // TODO We get closeConnectionReason TERMINATED which removes offers which should nto be removed + // TODO investigate why EOFException happens + //doRemoveProtectedExpirableData(protectedData, hashOfPayload); + } else { log.debug("Remove data ignored as we don't have an entry for that data."); } From 5fea34bb5470484eeef2066d769ee43ba43fb432 Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Fri, 10 Jun 2016 22:48:41 +0200 Subject: [PATCH 17/37] update scripts --- package/stresstest/init.sh | 21 +++++++++++++++++++++ package/stresstest/start.sh | 21 +++++++++++++++++++++ package/stresstest/startnodes.sh | 25 ------------------------- 3 files changed, 42 insertions(+), 25 deletions(-) create mode 100755 package/stresstest/init.sh create mode 100755 package/stresstest/start.sh delete mode 100755 package/stresstest/startnodes.sh diff --git a/package/stresstest/init.sh b/package/stresstest/init.sh new file mode 100755 index 0000000000..8b8ab79f6e --- /dev/null +++ b/package/stresstest/init.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +cd ../../seednode/target + +logpath=/Users/mk/Documents/_intellij/bitsquare/logs +datapath=/Users/mk/Library/Application\ Support + +mkdir -p $logpath + +rm $datapath/Bitsquare_seed_node_hlitt7z4bec4kdh4.onion_8000/db/SequenceNumberMap +rm $datapath/Bitsquare_seed_node_hlitt7z4bec4kdh4.onion_8000/db/PersistedPeers +nohup java -jar SeedNode.jar hlitt7z4bec4kdh4.onion:8000 0 500 >/dev/null 2>$logpath/ST_0_seednode.log & +sleep 40 + +cd ../../gui/target +rm $datapath/BS_arb/mainnet/db/SequenceNumberMap +rm $datapath/BS_arb/mainnet/db/PersistedPeers +nohup java -jar shaded.jar --app.name=BS_arb --maxConnections=12 >/dev/null 2>$logpath/ST_0_arb.log & + +# kill `ps -ef | grep java | grep -v grep | awk '{print $2}'` + diff --git a/package/stresstest/start.sh b/package/stresstest/start.sh new file mode 100755 index 0000000000..379395f1db --- /dev/null +++ b/package/stresstest/start.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +logpath=/Users/bs/bitsquare/logs +datapath=/Users/bs/.local/shared + +mkdir -p $logpath + +cd ../../gui/target + +delay=5 +for i in `seq 1 10`; + do + echo $i + rm $datapath/BS_$i/mainnet/db/SequenceNumberMap + rm $datapath/BS_$i/mainnet/db/PersistedPeers + nohup java -jar shaded.jar --app.name=BS_$i --maxConnections=12 >/dev/null 2>$logpath/ST_$i.log & + sleep $delay + done + +# kill `ps -ef | grep java | grep -v grep | awk '{print $2}'` + diff --git a/package/stresstest/startnodes.sh b/package/stresstest/startnodes.sh deleted file mode 100755 index 090f100ceb..0000000000 --- a/package/stresstest/startnodes.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash - -cd ../../seednode/target - -logpath=/Users/mk/Documents/_intellij/bitsquare/logs - -mkdir $logpath - -nohup java -jar SeedNode.jar hlitt7z4bec4kdh4.onion:8000 0 500 >/dev/null 2>$logpath/ST_0_seednode.log & -sleep 40 - -cd ../../gui/target -nohup java -jar shaded.jar --app.name=BS_arb --maxConnections=120 >/dev/null 2>$logpath/ST_0_arb.log & -sleep 40 - -delay=10 -for i in `seq 1 10`; - do - echo $i - nohup java -jar shaded.jar --app.name=BS_$i --maxConnections=120 >/dev/null 2>$logpath/ST_$i.log & - sleep $delay - done - -# kill `ps -ef | grep java | grep -v grep | awk '{print $2}'` - From 7c8f88aed3d98cde0ae883fec50759664bb42dee Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Fri, 10 Jun 2016 22:51:12 +0200 Subject: [PATCH 18/37] update scripts --- package/stresstest/start.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/stresstest/start.sh b/package/stresstest/start.sh index 379395f1db..9b7448e60c 100755 --- a/package/stresstest/start.sh +++ b/package/stresstest/start.sh @@ -1,7 +1,7 @@ #!/bin/bash logpath=/Users/bs/bitsquare/logs -datapath=/Users/bs/.local/shared +datapath=/Users/bs/.local/share mkdir -p $logpath From f5a0cd9e0fb7cdb5f264434850ea04c7ea4920ed Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Fri, 10 Jun 2016 22:53:16 +0200 Subject: [PATCH 19/37] update scripts --- package/stresstest/start.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package/stresstest/start.sh b/package/stresstest/start.sh index 9b7448e60c..7920e86c51 100755 --- a/package/stresstest/start.sh +++ b/package/stresstest/start.sh @@ -1,7 +1,7 @@ #!/bin/bash -logpath=/Users/bs/bitsquare/logs -datapath=/Users/bs/.local/share +logpath=/home/bs/bitsquare/logs +datapath=/home/bs/.local/share mkdir -p $logpath From bb18c41715c954c178106b576b181fe8152155f8 Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Sat, 11 Jun 2016 00:16:02 +0200 Subject: [PATCH 20/37] Improve wording --- .../bitsquare/gui/main/offer/createoffer/CreateOfferView.java | 2 +- .../bitsquare/gui/main/offer/takeoffer/TakeOfferViewModel.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gui/src/main/java/io/bitsquare/gui/main/offer/createoffer/CreateOfferView.java b/gui/src/main/java/io/bitsquare/gui/main/offer/createoffer/CreateOfferView.java index 855663cf9b..0e6686f3fa 100644 --- a/gui/src/main/java/io/bitsquare/gui/main/offer/createoffer/CreateOfferView.java +++ b/gui/src/main/java/io/bitsquare/gui/main/offer/createoffer/CreateOfferView.java @@ -581,7 +581,7 @@ public class CreateOfferView extends ActivatableViewAndModel { if (newValue != null) UserThread.runAfter(() -> new Popup().error(BSResources.get("createOffer.amountPriceBox.error.message", model.errorMessage.get()) + - "\n\nThere have no funds left your wallet yet.\n" + + "\n\nNo funds have left your wallet yet.\n" + "Please try to restart you application and check your network connection to see if you can resolve the issue.") .show(), 100, TimeUnit.MILLISECONDS); }; diff --git a/gui/src/main/java/io/bitsquare/gui/main/offer/takeoffer/TakeOfferViewModel.java b/gui/src/main/java/io/bitsquare/gui/main/offer/takeoffer/TakeOfferViewModel.java index d1ffbb74b9..52d03af26d 100644 --- a/gui/src/main/java/io/bitsquare/gui/main/offer/takeoffer/TakeOfferViewModel.java +++ b/gui/src/main/java/io/bitsquare/gui/main/offer/takeoffer/TakeOfferViewModel.java @@ -324,7 +324,7 @@ class TakeOfferViewModel extends ActivatableWithDataModel im String appendMsg = ""; switch (trade.getState().getPhase()) { case PREPARATION: - appendMsg = "\n\nThere have no funds left your wallet yet.\n" + + appendMsg = "\n\nNo funds have left your wallet yet.\n" + "Please try to restart you application and check your network connection to see if you can resolve the issue."; break; case TAKER_FEE_PAID: From 6e770dac2bdf5101b416f6c037be38535e387d7b Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Sat, 11 Jun 2016 12:30:05 +0200 Subject: [PATCH 21/37] update scripts --- package/stresstest/cleanup.sh | 11 +++++++++++ package/stresstest/init.sh | 11 +++++------ package/stresstest/mac_cleanup.sh | 20 ++++++++++++++++++++ 3 files changed, 36 insertions(+), 6 deletions(-) create mode 100755 package/stresstest/cleanup.sh create mode 100755 package/stresstest/mac_cleanup.sh diff --git a/package/stresstest/cleanup.sh b/package/stresstest/cleanup.sh new file mode 100755 index 0000000000..d66c3469b4 --- /dev/null +++ b/package/stresstest/cleanup.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +cd /home/bs/.local/share + +find . -name \*.DS_Store -type f -delete +find . -name \*._.DS_Store -type f -delete +find . -name \*SequenceNumberMap -type f -delete +find . -name \*PersistedPeers -type f -delete +find . -name \*bitsquare.log -type f -delete +find . -name \*__MACOSX -type d -delete +find . -name \*backup -type d -exec rm -R -f {} diff --git a/package/stresstest/init.sh b/package/stresstest/init.sh index 8b8ab79f6e..8371b20a1e 100755 --- a/package/stresstest/init.sh +++ b/package/stresstest/init.sh @@ -3,18 +3,17 @@ cd ../../seednode/target logpath=/Users/mk/Documents/_intellij/bitsquare/logs -datapath=/Users/mk/Library/Application\ Support - +datapath="/Users/mk/Library/Application Support" mkdir -p $logpath -rm $datapath/Bitsquare_seed_node_hlitt7z4bec4kdh4.onion_8000/db/SequenceNumberMap -rm $datapath/Bitsquare_seed_node_hlitt7z4bec4kdh4.onion_8000/db/PersistedPeers +rm "$datapath/Bitsquare_seed_node_hlitt7z4bec4kdh4.onion_8000/db/SequenceNumberMap" +rm "$datapath/Bitsquare_seed_node_hlitt7z4bec4kdh4.onion_8000/db/PersistedPeers" nohup java -jar SeedNode.jar hlitt7z4bec4kdh4.onion:8000 0 500 >/dev/null 2>$logpath/ST_0_seednode.log & sleep 40 cd ../../gui/target -rm $datapath/BS_arb/mainnet/db/SequenceNumberMap -rm $datapath/BS_arb/mainnet/db/PersistedPeers +rm "$datapath/BS_arb/mainnet/db/SequenceNumberMap" +rm "$datapath/BS_arb/mainnet/db/PersistedPeers" nohup java -jar shaded.jar --app.name=BS_arb --maxConnections=12 >/dev/null 2>$logpath/ST_0_arb.log & # kill `ps -ef | grep java | grep -v grep | awk '{print $2}'` diff --git a/package/stresstest/mac_cleanup.sh b/package/stresstest/mac_cleanup.sh new file mode 100755 index 0000000000..66045ad4ac --- /dev/null +++ b/package/stresstest/mac_cleanup.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +dir=/Users/mk/Desktop/10_offers + +for i in `seq 1 20`; + do + echo $i + rm $dir/BS_$i/mainnet/tor/tor.real + rm $dir/BS_$i/mainnet/tor/geoip + rm $dir/BS_$i/mainnet/tor/geoip6 + rm $dir/BS_$i/mainnet/tor/cached-microdescs + rm $dir/BS_$i/mainnet/tor/cached-microdesc-consensus + rm $dir/BS_$i/mainnet/db/SequenceNumberMap + rm $dir/BS_$i/mainnet/db/PersistedPeers + rm -R -f $dir/BS_$i/mainnet/tor/__MACOSX + rm -R -f $dir/BS_$i/mainnet/tor/hiddenservice/backup + rm -R -f $dir/BS_$i/mainnet/keys/backup + rm -R -f $dir/BS_$i/mainnet/db/backup + rm -R -f $dir/BS_$i/mainnet/bitcoin/backup + done \ No newline at end of file From 1aba53dd06afe9c7bfeaeb7a45e078f6538d1541 Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Sat, 11 Jun 2016 12:59:38 +0200 Subject: [PATCH 22/37] update scripts --- package/stresstest/cleanup.sh | 2 +- package/stresstest/init.sh | 4 ---- package/stresstest/start.sh | 2 -- 3 files changed, 1 insertion(+), 7 deletions(-) diff --git a/package/stresstest/cleanup.sh b/package/stresstest/cleanup.sh index d66c3469b4..93b8dc94f2 100755 --- a/package/stresstest/cleanup.sh +++ b/package/stresstest/cleanup.sh @@ -8,4 +8,4 @@ find . -name \*SequenceNumberMap -type f -delete find . -name \*PersistedPeers -type f -delete find . -name \*bitsquare.log -type f -delete find . -name \*__MACOSX -type d -delete -find . -name \*backup -type d -exec rm -R -f {} +find . -name \*backup -type d -exec rm -R -f {} + diff --git a/package/stresstest/init.sh b/package/stresstest/init.sh index 8371b20a1e..679a977a8e 100755 --- a/package/stresstest/init.sh +++ b/package/stresstest/init.sh @@ -6,14 +6,10 @@ logpath=/Users/mk/Documents/_intellij/bitsquare/logs datapath="/Users/mk/Library/Application Support" mkdir -p $logpath -rm "$datapath/Bitsquare_seed_node_hlitt7z4bec4kdh4.onion_8000/db/SequenceNumberMap" -rm "$datapath/Bitsquare_seed_node_hlitt7z4bec4kdh4.onion_8000/db/PersistedPeers" nohup java -jar SeedNode.jar hlitt7z4bec4kdh4.onion:8000 0 500 >/dev/null 2>$logpath/ST_0_seednode.log & sleep 40 cd ../../gui/target -rm "$datapath/BS_arb/mainnet/db/SequenceNumberMap" -rm "$datapath/BS_arb/mainnet/db/PersistedPeers" nohup java -jar shaded.jar --app.name=BS_arb --maxConnections=12 >/dev/null 2>$logpath/ST_0_arb.log & # kill `ps -ef | grep java | grep -v grep | awk '{print $2}'` diff --git a/package/stresstest/start.sh b/package/stresstest/start.sh index 7920e86c51..79725b59b8 100755 --- a/package/stresstest/start.sh +++ b/package/stresstest/start.sh @@ -11,8 +11,6 @@ delay=5 for i in `seq 1 10`; do echo $i - rm $datapath/BS_$i/mainnet/db/SequenceNumberMap - rm $datapath/BS_$i/mainnet/db/PersistedPeers nohup java -jar shaded.jar --app.name=BS_$i --maxConnections=12 >/dev/null 2>$logpath/ST_$i.log & sleep $delay done From 72510417e540f26fbeeee8aa7063f9754546e34d Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Sat, 11 Jun 2016 13:00:30 +0200 Subject: [PATCH 23/37] update scripts --- package/stresstest/start.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/stresstest/start.sh b/package/stresstest/start.sh index 79725b59b8..7bea8206ad 100755 --- a/package/stresstest/start.sh +++ b/package/stresstest/start.sh @@ -7,7 +7,7 @@ mkdir -p $logpath cd ../../gui/target -delay=5 +delay=30 for i in `seq 1 10`; do echo $i From 0a36d0b2410bcb37343daf539d3c7c1d7bca7ce9 Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Sat, 11 Jun 2016 13:39:39 +0200 Subject: [PATCH 24/37] update scripts, add log --- .../src/main/java/io/bitsquare/p2p/peers/PeerManager.java | 7 ++++++- package/stresstest/init.sh | 6 ++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/network/src/main/java/io/bitsquare/p2p/peers/PeerManager.java b/network/src/main/java/io/bitsquare/p2p/peers/PeerManager.java index d8d9d4208a..f426914698 100644 --- a/network/src/main/java/io/bitsquare/p2p/peers/PeerManager.java +++ b/network/src/main/java/io/bitsquare/p2p/peers/PeerManager.java @@ -51,6 +51,11 @@ public class PeerManager implements ConnectionListener { maxConnectionsPeer = maxConnections + 4; maxConnectionsNonDirect = maxConnections + 8; maxConnectionsAbsolute = maxConnections + 18; + + if (DevFlags.STRESS_TEST_MODE) + System.err.println(new SimpleDateFormat("HH:mm:ss.SSS").format(new Date()) + + " - maxConnections = " + maxConnections + + " / maxConnectionsAbsolute = " + maxConnectionsAbsolute); } @@ -216,7 +221,7 @@ public class PeerManager implements ConnectionListener { log.info("We have {} connections open. Our limit is {}", size, limit); if (DevFlags.STRESS_TEST_MODE) System.err.println(new SimpleDateFormat("HH:mm:ss.SSS").format(new Date()) + " - Connections = " + size + " / Memory(MB): " + Profiler.getUsedMemory()); - + if (size > limit) { log.info("We have too many connections open.\n\t" + "Lets try first to remove the inbound connections of type PEER."); diff --git a/package/stresstest/init.sh b/package/stresstest/init.sh index 679a977a8e..04827b157b 100755 --- a/package/stresstest/init.sh +++ b/package/stresstest/init.sh @@ -6,6 +6,12 @@ logpath=/Users/mk/Documents/_intellij/bitsquare/logs datapath="/Users/mk/Library/Application Support" mkdir -p $logpath +rm "$datapath/Bitsquare_seed_node_hlitt7z4bec4kdh4.onion_8000/db/SequenceNumberMap" +rm "$datapath/Bitsquare_seed_node_hlitt7z4bec4kdh4.onion_8000/db/PersistedPeers" + +rm "$datapath/BS_arb/mainnet/db/SequenceNumberMap" +rm "$datapath/BS_arb/mainnet/db/PersistedPeers" + nohup java -jar SeedNode.jar hlitt7z4bec4kdh4.onion:8000 0 500 >/dev/null 2>$logpath/ST_0_seednode.log & sleep 40 From c2eb77edaee5ec7ba2cebfb7648002a337ffe74a Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Sat, 11 Jun 2016 21:57:43 +0200 Subject: [PATCH 25/37] update scripts --- package/stresstest/init.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package/stresstest/init.sh b/package/stresstest/init.sh index 04827b157b..990b537ff4 100755 --- a/package/stresstest/init.sh +++ b/package/stresstest/init.sh @@ -6,11 +6,11 @@ logpath=/Users/mk/Documents/_intellij/bitsquare/logs datapath="/Users/mk/Library/Application Support" mkdir -p $logpath -rm "$datapath/Bitsquare_seed_node_hlitt7z4bec4kdh4.onion_8000/db/SequenceNumberMap" -rm "$datapath/Bitsquare_seed_node_hlitt7z4bec4kdh4.onion_8000/db/PersistedPeers" +# rm "$datapath/Bitsquare_seed_node_hlitt7z4bec4kdh4.onion_8000/db/SequenceNumberMap" +# rm "$datapath/Bitsquare_seed_node_hlitt7z4bec4kdh4.onion_8000/db/PersistedPeers" -rm "$datapath/BS_arb/mainnet/db/SequenceNumberMap" -rm "$datapath/BS_arb/mainnet/db/PersistedPeers" +# rm "$datapath/BS_arb/mainnet/db/SequenceNumberMap" +# rm "$datapath/BS_arb/mainnet/db/PersistedPeers" nohup java -jar SeedNode.jar hlitt7z4bec4kdh4.onion:8000 0 500 >/dev/null 2>$logpath/ST_0_seednode.log & sleep 40 From 663b505410f105dfc5a56a09dc565a0262e1b836 Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Sun, 12 Jun 2016 12:43:30 +0200 Subject: [PATCH 26/37] Change isIntended falt to false for RULE_VIOLATION --- .../java/io/bitsquare/p2p/network/CloseConnectionReason.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/network/src/main/java/io/bitsquare/p2p/network/CloseConnectionReason.java b/network/src/main/java/io/bitsquare/p2p/network/CloseConnectionReason.java index eb054f9ddc..2cb8922f87 100644 --- a/network/src/main/java/io/bitsquare/p2p/network/CloseConnectionReason.java +++ b/network/src/main/java/io/bitsquare/p2p/network/CloseConnectionReason.java @@ -23,7 +23,7 @@ public enum CloseConnectionReason { UNKNOWN_PEER_ADDRESS(true, true), // illegal requests - RULE_VIOLATION(true, true); + RULE_VIOLATION(true, false); public final boolean sendCloseMessage; public boolean isIntended; From 775227b90212dabe26cd195cd57befd1f171f517 Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Sun, 12 Jun 2016 12:46:12 +0200 Subject: [PATCH 27/37] Enable doRemoveProtectedExpirableData again on close connection --- .../src/main/java/io/bitsquare/p2p/peers/PeerManager.java | 5 ----- .../main/java/io/bitsquare/p2p/storage/P2PDataStorage.java | 4 ++-- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/network/src/main/java/io/bitsquare/p2p/peers/PeerManager.java b/network/src/main/java/io/bitsquare/p2p/peers/PeerManager.java index f426914698..9486e9b470 100644 --- a/network/src/main/java/io/bitsquare/p2p/peers/PeerManager.java +++ b/network/src/main/java/io/bitsquare/p2p/peers/PeerManager.java @@ -51,11 +51,6 @@ public class PeerManager implements ConnectionListener { maxConnectionsPeer = maxConnections + 4; maxConnectionsNonDirect = maxConnections + 8; maxConnectionsAbsolute = maxConnections + 18; - - if (DevFlags.STRESS_TEST_MODE) - System.err.println(new SimpleDateFormat("HH:mm:ss.SSS").format(new Date()) + - " - maxConnections = " + maxConnections + - " / maxConnectionsAbsolute = " + maxConnectionsAbsolute); } diff --git a/network/src/main/java/io/bitsquare/p2p/storage/P2PDataStorage.java b/network/src/main/java/io/bitsquare/p2p/storage/P2PDataStorage.java index 2132c086be..44eab5b566 100644 --- a/network/src/main/java/io/bitsquare/p2p/storage/P2PDataStorage.java +++ b/network/src/main/java/io/bitsquare/p2p/storage/P2PDataStorage.java @@ -169,9 +169,9 @@ public class P2PDataStorage implements MessageListener, ConnectionListener { " / isIntended=" + closeConnectionReason.isIntended + " / Memory(MB): " + Profiler.getUsedMemory()); - // TODO We get closeConnectionReason TERMINATED which removes offers which should nto be removed + // TODO We get closeConnectionReason TERMINATED which removes offers which should not be removed // TODO investigate why EOFException happens - //doRemoveProtectedExpirableData(protectedData, hashOfPayload); + doRemoveProtectedExpirableData(protectedData, hashOfPayload); } else { log.debug("Remove data ignored as we don't have an entry for that data."); From 11e50ae3bce911025bd8f8b8cdd77bf4e37fab47 Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Sun, 12 Jun 2016 14:25:15 +0200 Subject: [PATCH 28/37] Move stresstest logs to static Log method --- .../src/main/java/io/bitsquare/app/DevFlags.java | 1 - common/src/main/java/io/bitsquare/app/Log.java | 11 +++++++++++ .../gui/main/offer/offerbook/OfferBook.java | 14 ++++---------- .../java/io/bitsquare/p2p/peers/PeerManager.java | 7 ++----- .../io/bitsquare/p2p/storage/P2PDataStorage.java | 13 +++---------- 5 files changed, 20 insertions(+), 26 deletions(-) diff --git a/common/src/main/java/io/bitsquare/app/DevFlags.java b/common/src/main/java/io/bitsquare/app/DevFlags.java index b7349c9311..e8796e86c9 100644 --- a/common/src/main/java/io/bitsquare/app/DevFlags.java +++ b/common/src/main/java/io/bitsquare/app/DevFlags.java @@ -9,5 +9,4 @@ public class DevFlags { public static final boolean STRESS_TEST_MODE = true; public static final boolean DEV_MODE = STRESS_TEST_MODE || false; public static final boolean IS_RELEASE_VERSION = !DEV_MODE && true; - } diff --git a/common/src/main/java/io/bitsquare/app/Log.java b/common/src/main/java/io/bitsquare/app/Log.java index 5c08e9db0a..535c84c07b 100644 --- a/common/src/main/java/io/bitsquare/app/Log.java +++ b/common/src/main/java/io/bitsquare/app/Log.java @@ -24,8 +24,12 @@ import ch.qos.logback.classic.encoder.PatternLayoutEncoder; import ch.qos.logback.core.rolling.FixedWindowRollingPolicy; import ch.qos.logback.core.rolling.RollingFileAppender; import ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy; +import io.bitsquare.common.util.Profiler; import org.slf4j.LoggerFactory; +import java.text.SimpleDateFormat; +import java.util.Date; + public class Log { private static SizeBasedTriggeringPolicy triggeringPolicy; private static Logger logbackLogger; @@ -105,4 +109,11 @@ public class Log { LoggerFactory.getLogger(className).trace("Called: {} [{}]", methodName, message); } } + + public static void logIfStressTests(String msg) { + if (DevFlags.STRESS_TEST_MODE) + System.err.println(new SimpleDateFormat("HH:mm:ss.SSS").format(new Date()) + + msg + + " / Memory(MB): " + Profiler.getUsedMemory()); + } } diff --git a/gui/src/main/java/io/bitsquare/gui/main/offer/offerbook/OfferBook.java b/gui/src/main/java/io/bitsquare/gui/main/offer/offerbook/OfferBook.java index df79a41746..327b41b309 100644 --- a/gui/src/main/java/io/bitsquare/gui/main/offer/offerbook/OfferBook.java +++ b/gui/src/main/java/io/bitsquare/gui/main/offer/offerbook/OfferBook.java @@ -17,8 +17,7 @@ package io.bitsquare.gui.main.offer.offerbook; -import io.bitsquare.app.DevFlags; -import io.bitsquare.common.util.Profiler; +import io.bitsquare.app.Log; import io.bitsquare.trade.TradeManager; import io.bitsquare.trade.offer.Offer; import io.bitsquare.trade.offer.OfferBookService; @@ -28,8 +27,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.inject.Inject; -import java.text.SimpleDateFormat; -import java.util.Date; import java.util.List; import java.util.Optional; import java.util.concurrent.CopyOnWriteArraySet; @@ -63,8 +60,7 @@ public class OfferBook { if (!offerBookListItems.contains(offerBookListItem)) { offerBookListItems.add(offerBookListItem); - if (DevFlags.STRESS_TEST_MODE) - System.err.println(new SimpleDateFormat("HH:mm:ss.SSS").format(new Date()) + " - Offer added: Nr. of offers = " + offerBookListItems.size() + " / Memory(MB): " + Profiler.getUsedMemory()); + Log.logIfStressTests("Offer added: Nr. of offers = " + offerBookListItems.size()); } } @@ -83,8 +79,7 @@ public class OfferBook { if (offerBookListItems.contains(item)) { offerBookListItems.remove(item); - if (DevFlags.STRESS_TEST_MODE) - System.err.println(new SimpleDateFormat("HH:mm:ss.SSS").format(new Date()) + " - Offer removed: Nr. of offers = " + offerBookListItems.size() + " / Memory(MB): " + Profiler.getUsedMemory()); + Log.logIfStressTests("Offer removed: Nr. of offers = " + offerBookListItems.size()); } } } @@ -107,8 +102,7 @@ public class OfferBook { offerBookListItems.addAll(list); - if (DevFlags.STRESS_TEST_MODE) - System.err.println(new SimpleDateFormat("HH:mm:ss.SSS").format(new Date()) + " - Offer filled: Nr. of offers = " + offerBookListItems.size() + " / Memory(MB): " + Profiler.getUsedMemory()); + Log.logIfStressTests("Offer filled: Nr. of offers = " + offerBookListItems.size()); log.debug("offerBookListItems " + offerBookListItems.size()); } diff --git a/network/src/main/java/io/bitsquare/p2p/peers/PeerManager.java b/network/src/main/java/io/bitsquare/p2p/peers/PeerManager.java index 9486e9b470..1ca1f30c60 100644 --- a/network/src/main/java/io/bitsquare/p2p/peers/PeerManager.java +++ b/network/src/main/java/io/bitsquare/p2p/peers/PeerManager.java @@ -1,11 +1,9 @@ package io.bitsquare.p2p.peers; -import io.bitsquare.app.DevFlags; import io.bitsquare.app.Log; import io.bitsquare.common.Clock; import io.bitsquare.common.Timer; import io.bitsquare.common.UserThread; -import io.bitsquare.common.util.Profiler; import io.bitsquare.p2p.NodeAddress; import io.bitsquare.p2p.network.*; import io.bitsquare.p2p.peers.peerexchange.Peer; @@ -15,7 +13,6 @@ import org.slf4j.LoggerFactory; import javax.annotation.Nullable; import java.io.File; -import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.TimeUnit; @@ -158,6 +155,7 @@ public class PeerManager implements ConnectionListener { @Override public void onConnection(Connection connection) { + Log.logIfStressTests("onConnection to peer " + networkNode.getAllConnections().size() + (connection.getPeersNodeAddressOptional().isPresent() ? connection.getPeersNodeAddressOptional().get() : "PeersNode unknown")); if (isSeedNode(connection)) connection.setPeerType(Connection.PeerType.SEED_NODE); @@ -172,6 +170,7 @@ public class PeerManager implements ConnectionListener { @Override public void onDisconnect(CloseConnectionReason closeConnectionReason, Connection connection) { + Log.logIfStressTests("onDisconnect of peer " + networkNode.getAllConnections().size() + (connection.getPeersNodeAddressOptional().isPresent() ? connection.getPeersNodeAddressOptional().get() : "PeersNode unknown")); handleConnectionFault(connection); lostAllConnections = networkNode.getAllConnections().isEmpty(); @@ -214,8 +213,6 @@ public class PeerManager implements ConnectionListener { Set allConnections = networkNode.getAllConnections(); int size = allConnections.size(); log.info("We have {} connections open. Our limit is {}", size, limit); - if (DevFlags.STRESS_TEST_MODE) - System.err.println(new SimpleDateFormat("HH:mm:ss.SSS").format(new Date()) + " - Connections = " + size + " / Memory(MB): " + Profiler.getUsedMemory()); if (size > limit) { log.info("We have too many connections open.\n\t" + diff --git a/network/src/main/java/io/bitsquare/p2p/storage/P2PDataStorage.java b/network/src/main/java/io/bitsquare/p2p/storage/P2PDataStorage.java index 44eab5b566..9fd5e8284f 100644 --- a/network/src/main/java/io/bitsquare/p2p/storage/P2PDataStorage.java +++ b/network/src/main/java/io/bitsquare/p2p/storage/P2PDataStorage.java @@ -1,7 +1,6 @@ package io.bitsquare.p2p.storage; import com.google.common.annotations.VisibleForTesting; -import io.bitsquare.app.DevFlags; import io.bitsquare.app.Log; import io.bitsquare.app.Version; import io.bitsquare.common.Timer; @@ -10,7 +9,6 @@ import io.bitsquare.common.crypto.CryptoException; import io.bitsquare.common.crypto.Hash; import io.bitsquare.common.crypto.Sig; import io.bitsquare.common.persistance.Persistable; -import io.bitsquare.common.util.Profiler; import io.bitsquare.common.wire.Payload; import io.bitsquare.p2p.Message; import io.bitsquare.p2p.NodeAddress; @@ -34,7 +32,6 @@ import java.io.File; import java.io.Serializable; import java.security.KeyPair; import java.security.PublicKey; -import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CopyOnWriteArraySet; @@ -162,17 +159,13 @@ public class P2PDataStorage implements MessageListener, ConnectionListener { if (containsKey) { log.info("We remove the data as the data owner got disconnected with " + "closeConnectionReason=" + closeConnectionReason); - if (DevFlags.STRESS_TEST_MODE) - System.err.println(new SimpleDateFormat("HH:mm:ss.SSS").format(new Date()) + - " - We remove the data as the data owner got disconnected with " + - "closeConnectionReason=" + closeConnectionReason + - " / isIntended=" + closeConnectionReason.isIntended + - " / Memory(MB): " + Profiler.getUsedMemory()); + Log.logIfStressTests("We remove the data as the data owner got disconnected with " + + "closeConnectionReason=" + closeConnectionReason + + " / isIntended=" + closeConnectionReason.isIntended); // TODO We get closeConnectionReason TERMINATED which removes offers which should not be removed // TODO investigate why EOFException happens doRemoveProtectedExpirableData(protectedData, hashOfPayload); - } else { log.debug("Remove data ignored as we don't have an entry for that data."); } From 807f5f2e50d89e06f6bbfae09f793a911d71b2f3 Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Sun, 12 Jun 2016 14:28:02 +0200 Subject: [PATCH 29/37] update scripts --- package/stresstest/start.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/package/stresstest/start.sh b/package/stresstest/start.sh index 7bea8206ad..c48ce81ed2 100755 --- a/package/stresstest/start.sh +++ b/package/stresstest/start.sh @@ -7,8 +7,9 @@ mkdir -p $logpath cd ../../gui/target -delay=30 -for i in `seq 1 10`; +delay=40 +# edit start end index +for i in `seq 0 0`; do echo $i nohup java -jar shaded.jar --app.name=BS_$i --maxConnections=12 >/dev/null 2>$logpath/ST_$i.log & From 67a3c5d5026b8aea498b3a975724a621d4140c00 Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Sun, 12 Jun 2016 14:50:06 +0200 Subject: [PATCH 30/37] Improce logging --- common/src/main/java/io/bitsquare/app/Log.java | 2 +- .../src/main/java/io/bitsquare/p2p/peers/PeerManager.java | 8 ++++++-- .../java/io/bitsquare/p2p/storage/P2PDataStorage.java | 4 +++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/common/src/main/java/io/bitsquare/app/Log.java b/common/src/main/java/io/bitsquare/app/Log.java index 535c84c07b..ccd882aba0 100644 --- a/common/src/main/java/io/bitsquare/app/Log.java +++ b/common/src/main/java/io/bitsquare/app/Log.java @@ -113,7 +113,7 @@ public class Log { public static void logIfStressTests(String msg) { if (DevFlags.STRESS_TEST_MODE) System.err.println(new SimpleDateFormat("HH:mm:ss.SSS").format(new Date()) + - msg + + " - " + msg + " / Memory(MB): " + Profiler.getUsedMemory()); } } diff --git a/network/src/main/java/io/bitsquare/p2p/peers/PeerManager.java b/network/src/main/java/io/bitsquare/p2p/peers/PeerManager.java index 1ca1f30c60..533a33d9e2 100644 --- a/network/src/main/java/io/bitsquare/p2p/peers/PeerManager.java +++ b/network/src/main/java/io/bitsquare/p2p/peers/PeerManager.java @@ -155,7 +155,9 @@ public class PeerManager implements ConnectionListener { @Override public void onConnection(Connection connection) { - Log.logIfStressTests("onConnection to peer " + networkNode.getAllConnections().size() + (connection.getPeersNodeAddressOptional().isPresent() ? connection.getPeersNodeAddressOptional().get() : "PeersNode unknown")); + Log.logIfStressTests("onConnection to peer " + + (connection.getPeersNodeAddressOptional().isPresent() ? connection.getPeersNodeAddressOptional().get() : "PeersNode unknown") + + " / Nr. of connections: " + networkNode.getAllConnections().size()); if (isSeedNode(connection)) connection.setPeerType(Connection.PeerType.SEED_NODE); @@ -170,7 +172,9 @@ public class PeerManager implements ConnectionListener { @Override public void onDisconnect(CloseConnectionReason closeConnectionReason, Connection connection) { - Log.logIfStressTests("onDisconnect of peer " + networkNode.getAllConnections().size() + (connection.getPeersNodeAddressOptional().isPresent() ? connection.getPeersNodeAddressOptional().get() : "PeersNode unknown")); + Log.logIfStressTests("onDisconnect of peer " + + (connection.getPeersNodeAddressOptional().isPresent() ? connection.getPeersNodeAddressOptional().get() : "PeersNode unknown") + + " / Nr. of connections: " + networkNode.getAllConnections().size()); handleConnectionFault(connection); lostAllConnections = networkNode.getAllConnections().isEmpty(); diff --git a/network/src/main/java/io/bitsquare/p2p/storage/P2PDataStorage.java b/network/src/main/java/io/bitsquare/p2p/storage/P2PDataStorage.java index 9fd5e8284f..70f1471e3b 100644 --- a/network/src/main/java/io/bitsquare/p2p/storage/P2PDataStorage.java +++ b/network/src/main/java/io/bitsquare/p2p/storage/P2PDataStorage.java @@ -159,9 +159,11 @@ public class P2PDataStorage implements MessageListener, ConnectionListener { if (containsKey) { log.info("We remove the data as the data owner got disconnected with " + "closeConnectionReason=" + closeConnectionReason); + Log.logIfStressTests("We remove the data as the data owner got disconnected with " + "closeConnectionReason=" + closeConnectionReason + - " / isIntended=" + closeConnectionReason.isIntended); + " / isIntended=" + closeConnectionReason.isIntended + + " / peer=" + (connection.getPeersNodeAddressOptional().isPresent() ? connection.getPeersNodeAddressOptional().get() : "PeersNode unknown")); // TODO We get closeConnectionReason TERMINATED which removes offers which should not be removed // TODO investigate why EOFException happens From b8baffbc23b3497e3a89e842e8091ee3c4480fa9 Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Sun, 12 Jun 2016 15:18:29 +0200 Subject: [PATCH 31/37] Fix wording --- .../portfolio/pendingtrades/steps/seller/SellerStep1View.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gui/src/main/java/io/bitsquare/gui/main/portfolio/pendingtrades/steps/seller/SellerStep1View.java b/gui/src/main/java/io/bitsquare/gui/main/portfolio/pendingtrades/steps/seller/SellerStep1View.java index c7ec8d2d10..26bc0bfa22 100644 --- a/gui/src/main/java/io/bitsquare/gui/main/portfolio/pendingtrades/steps/seller/SellerStep1View.java +++ b/gui/src/main/java/io/bitsquare/gui/main/portfolio/pendingtrades/steps/seller/SellerStep1View.java @@ -43,7 +43,7 @@ public class SellerStep1View extends TradeStepView { @Override protected String getInfoText() { return "Deposit transaction has been published.\n" + - "The bitcoin buyer need to wait for at least one blockchain confirmation before " + + "The bitcoin buyer needs to wait for at least one blockchain confirmation before " + "starting the payment."; } From e249f0f5189069a3ab23c6ce18a2d543240e7149 Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Sun, 12 Jun 2016 16:19:56 +0200 Subject: [PATCH 32/37] Add check for arm --- common/src/main/java/io/bitsquare/common/util/Utilities.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/common/src/main/java/io/bitsquare/common/util/Utilities.java b/common/src/main/java/io/bitsquare/common/util/Utilities.java index 76ce508dfe..6b4661af21 100644 --- a/common/src/main/java/io/bitsquare/common/util/Utilities.java +++ b/common/src/main/java/io/bitsquare/common/util/Utilities.java @@ -133,6 +133,8 @@ public class Utilities { return arch.endsWith("64") || wow64Arch != null && wow64Arch.endsWith("64") ? "64" : "32"; + } else if (osArch.contains("arm")) { + return osArch.contains("64") ? "64" : "32"; } else if (isLinux()) { return osArch.startsWith("i") ? "32" : "64"; } else { @@ -148,7 +150,7 @@ public class Utilities { log.info("JRE: " + System.getProperty("java.runtime.version", "-") + " (" + System.getProperty("java.vendor", "-") + ")"); log.info("JVM: " + System.getProperty("java.vm.version", "-") + " (" + System.getProperty("java.vm.name", "-") + ")"); } - + public static String getJVMArchitecture() { return System.getProperty("sun.arch.data.model"); } From 7c26b5f33d980f4a8ad0bd97e237c4a80ac649b3 Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Sun, 12 Jun 2016 17:11:50 +0200 Subject: [PATCH 33/37] Increase SOCKET_TIMEOUT to 2 min. --- network/src/main/java/io/bitsquare/p2p/network/Connection.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/network/src/main/java/io/bitsquare/p2p/network/Connection.java b/network/src/main/java/io/bitsquare/p2p/network/Connection.java index a50c4a89d0..e0c318adcc 100644 --- a/network/src/main/java/io/bitsquare/p2p/network/Connection.java +++ b/network/src/main/java/io/bitsquare/p2p/network/Connection.java @@ -69,7 +69,7 @@ public class Connection implements MessageListener { //TODO decrease limits again after testing static final int MSG_THROTTLE_PER_SEC = 70; // With MAX_MSG_SIZE of 500kb results in bandwidth of 35 mbit/sec static final int MSG_THROTTLE_PER_10_SEC = 500; // With MAX_MSG_SIZE of 100kb results in bandwidth of 50 mbit/sec for 10 sec - private static final int SOCKET_TIMEOUT = (int) TimeUnit.SECONDS.toMillis(60); + private static final int SOCKET_TIMEOUT = (int) TimeUnit.SECONDS.toMillis(120); public static int getMaxMsgSize() { return MAX_MSG_SIZE; From eb45dce6af78c6817cfd3dbbfbb5dd9925e6a5cd Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Sun, 12 Jun 2016 23:36:16 +0200 Subject: [PATCH 34/37] Add checks for arm OS arch --- .../main/java/com/msopentech/thali/toronionproxy/OsData.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/jtorproxy/src/main/java/com/msopentech/thali/toronionproxy/OsData.java b/jtorproxy/src/main/java/com/msopentech/thali/toronionproxy/OsData.java index 77f2aad277..ec77a6889a 100644 --- a/jtorproxy/src/main/java/com/msopentech/thali/toronionproxy/OsData.java +++ b/jtorproxy/src/main/java/com/msopentech/thali/toronionproxy/OsData.java @@ -96,8 +96,9 @@ public class OsData { return OsType.Linux64; } + // armv8 is 64 bit, armv7l is 32 bit if (unameOutput.contains("arm")) - return unameOutput.contains("64") ? OsType.Linux64 : OsType.Linux32; + return unameOutput.contains("64") || unameOutput.contains("v8") ? OsType.Linux64 : OsType.Linux32; throw new RuntimeException("Could not understand uname output, not sure what bitness"); } catch (IOException e) { From e66e49df619162b8224fe1f74a230e95822323c0 Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Sun, 12 Jun 2016 23:36:32 +0200 Subject: [PATCH 35/37] Add shorter TTL for stresstest --- core/src/main/java/io/bitsquare/trade/offer/Offer.java | 3 ++- .../main/java/io/bitsquare/trade/offer/OpenOfferManager.java | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/io/bitsquare/trade/offer/Offer.java b/core/src/main/java/io/bitsquare/trade/offer/Offer.java index 07d0567ba9..e8a72d668d 100644 --- a/core/src/main/java/io/bitsquare/trade/offer/Offer.java +++ b/core/src/main/java/io/bitsquare/trade/offer/Offer.java @@ -17,6 +17,7 @@ package io.bitsquare.trade.offer; +import io.bitsquare.app.DevFlags; import io.bitsquare.app.Version; import io.bitsquare.btc.Restrictions; import io.bitsquare.btc.pricefeed.MarketPrice; @@ -59,7 +60,7 @@ public final class Offer implements StoragePayload, RequiresOwnerIsOnlinePayload private static final long serialVersionUID = Version.P2P_NETWORK_VERSION; @JsonExclude private static final Logger log = LoggerFactory.getLogger(Offer.class); - public static final long TTL = TimeUnit.MINUTES.toMillis(6); + public static final long TTL = TimeUnit.MINUTES.toMillis(DevFlags.STRESS_TEST_MODE ? 3 : 6); public final static String TAC_OFFERER = "With placing that offer I agree to trade " + "with any trader who fulfills the conditions as defined above."; public static final String TAC_TAKER = "With taking that offer I agree to the trade conditions as defined above."; diff --git a/core/src/main/java/io/bitsquare/trade/offer/OpenOfferManager.java b/core/src/main/java/io/bitsquare/trade/offer/OpenOfferManager.java index b6214229b2..00f9fe4e1a 100644 --- a/core/src/main/java/io/bitsquare/trade/offer/OpenOfferManager.java +++ b/core/src/main/java/io/bitsquare/trade/offer/OpenOfferManager.java @@ -18,6 +18,7 @@ package io.bitsquare.trade.offer; import com.google.inject.Inject; +import io.bitsquare.app.DevFlags; import io.bitsquare.app.Log; import io.bitsquare.btc.AddressEntry; import io.bitsquare.btc.TradeWalletService; @@ -67,8 +68,8 @@ public class OpenOfferManager implements PeerManager.Listener, DecryptedDirectMe private static final long RETRY_REPUBLISH_DELAY_SEC = 10; private static final long REPUBLISH_AGAIN_AT_STARTUP_DELAY_SEC = 10; - private static final long REPUBLISH_INTERVAL_MS = TimeUnit.MINUTES.toMillis(15); - private static final long REFRESH_INTERVAL_MS = TimeUnit.MINUTES.toMillis(4); + private static final long REPUBLISH_INTERVAL_MS = TimeUnit.MINUTES.toMillis(DevFlags.STRESS_TEST_MODE ? 6 : 12); + private static final long REFRESH_INTERVAL_MS = TimeUnit.MINUTES.toMillis(DevFlags.STRESS_TEST_MODE ? 2 : 4); private final KeyRing keyRing; private final User user; From b7a6a9c5558496b89e6233e27d4f1dcb9a601c0f Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Mon, 13 Jun 2016 01:14:38 +0200 Subject: [PATCH 36/37] Update TTL params (WIP) --- core/src/main/java/io/bitsquare/trade/offer/Offer.java | 2 +- .../main/java/io/bitsquare/trade/offer/OpenOfferManager.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/io/bitsquare/trade/offer/Offer.java b/core/src/main/java/io/bitsquare/trade/offer/Offer.java index e8a72d668d..d63c07ca57 100644 --- a/core/src/main/java/io/bitsquare/trade/offer/Offer.java +++ b/core/src/main/java/io/bitsquare/trade/offer/Offer.java @@ -60,7 +60,7 @@ public final class Offer implements StoragePayload, RequiresOwnerIsOnlinePayload private static final long serialVersionUID = Version.P2P_NETWORK_VERSION; @JsonExclude private static final Logger log = LoggerFactory.getLogger(Offer.class); - public static final long TTL = TimeUnit.MINUTES.toMillis(DevFlags.STRESS_TEST_MODE ? 3 : 6); + public static final long TTL = TimeUnit.MINUTES.toMillis(DevFlags.STRESS_TEST_MODE ? 6 : 6); public final static String TAC_OFFERER = "With placing that offer I agree to trade " + "with any trader who fulfills the conditions as defined above."; public static final String TAC_TAKER = "With taking that offer I agree to the trade conditions as defined above."; diff --git a/core/src/main/java/io/bitsquare/trade/offer/OpenOfferManager.java b/core/src/main/java/io/bitsquare/trade/offer/OpenOfferManager.java index 00f9fe4e1a..8f2a2c9da0 100644 --- a/core/src/main/java/io/bitsquare/trade/offer/OpenOfferManager.java +++ b/core/src/main/java/io/bitsquare/trade/offer/OpenOfferManager.java @@ -68,8 +68,8 @@ public class OpenOfferManager implements PeerManager.Listener, DecryptedDirectMe private static final long RETRY_REPUBLISH_DELAY_SEC = 10; private static final long REPUBLISH_AGAIN_AT_STARTUP_DELAY_SEC = 10; - private static final long REPUBLISH_INTERVAL_MS = TimeUnit.MINUTES.toMillis(DevFlags.STRESS_TEST_MODE ? 6 : 12); - private static final long REFRESH_INTERVAL_MS = TimeUnit.MINUTES.toMillis(DevFlags.STRESS_TEST_MODE ? 2 : 4); + private static final long REPUBLISH_INTERVAL_MS = TimeUnit.MINUTES.toMillis(DevFlags.STRESS_TEST_MODE ? 12 : 12); + private static final long REFRESH_INTERVAL_MS = TimeUnit.MINUTES.toMillis(DevFlags.STRESS_TEST_MODE ? 4 : 4); private final KeyRing keyRing; private final User user; From 93940ea899a439b03823550854605a2a76aed6f9 Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Mon, 13 Jun 2016 19:08:27 +0200 Subject: [PATCH 37/37] Add Lisk --- core/src/main/java/io/bitsquare/locale/CurrencyUtil.java | 1 + 1 file changed, 1 insertion(+) diff --git a/core/src/main/java/io/bitsquare/locale/CurrencyUtil.java b/core/src/main/java/io/bitsquare/locale/CurrencyUtil.java index e9dca73934..793db017fe 100644 --- a/core/src/main/java/io/bitsquare/locale/CurrencyUtil.java +++ b/core/src/main/java/io/bitsquare/locale/CurrencyUtil.java @@ -124,6 +124,7 @@ public class CurrencyUtil { result.add(new CryptoCurrency("SHIFT", "Shift")); result.add(new CryptoCurrency("ERC", "Europecoin")); result.add(new CryptoCurrency("POST", "PostCoin")); + result.add(new CryptoCurrency("LSK", "Lisk")); return result; }