From 7c24305a2097a14a1c4481e37b6a521844dbe9f5 Mon Sep 17 00:00:00 2001 From: capdev Date: Mon, 2 Sep 2019 11:35:59 +0500 Subject: [PATCH 01/51] frame --- .../test/scala/encry/it/LinkToChainTest.scala | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 it/src/test/scala/encry/it/LinkToChainTest.scala diff --git a/it/src/test/scala/encry/it/LinkToChainTest.scala b/it/src/test/scala/encry/it/LinkToChainTest.scala new file mode 100644 index 0000000000..d6b7ab023f --- /dev/null +++ b/it/src/test/scala/encry/it/LinkToChainTest.scala @@ -0,0 +1,24 @@ +package encry.it + +import com.typesafe.config.Config +import encry.consensus.EncrySupplyController +import encry.it.configs.Configs +import encry.it.docker.NodesFromDocker +import org.encryfoundation.common.utils.Algos +import org.encryfoundation.common.utils.TaggedTypes.Height +import org.encryfoundation.common.utils.constants.TestNetConstants +import org.scalatest.{AsyncFunSuite, Matchers} + +import scala.concurrent.Await +import scala.concurrent.duration._ + +class LinkToChainTest extends AsyncFunSuite with Matchers with NodesFromDocker { + + override protected def nodeConfigs: Seq[Config] = Seq(Configs.mining(true) + .withFallback(Configs.offlineGeneration(true)) + .withFallback(Configs.nodeName("node1"))) + + test("Late node should connect to highest chain") { + + } +} From 3554ad9462ff24b16de6d3676bdb91e5218a5fc3 Mon Sep 17 00:00:00 2001 From: capdev Date: Mon, 2 Sep 2019 18:37:56 +0500 Subject: [PATCH 02/51] add test draft: Late node should sync with chain add connectOnlyWithKnownPeers to Config --- .../main/scala/encry/it/configs/Configs.scala | 6 ++ .../encry/it/ForkResolvingOnDownloading.scala | 78 +++++++++++++++++++ .../test/scala/encry/it/LinkToChainTest.scala | 24 ------ 3 files changed, 84 insertions(+), 24 deletions(-) create mode 100644 it/src/test/scala/encry/it/ForkResolvingOnDownloading.scala delete mode 100644 it/src/test/scala/encry/it/LinkToChainTest.scala diff --git a/it/src/main/scala/encry/it/configs/Configs.scala b/it/src/main/scala/encry/it/configs/Configs.scala index cd06c72f23..57aad37030 100644 --- a/it/src/main/scala/encry/it/configs/Configs.scala +++ b/it/src/main/scala/encry/it/configs/Configs.scala @@ -22,6 +22,12 @@ object Configs { """.stripMargin ) + def connectOnlyWithKnownPeers(connectOnlyWithKnownPeersEnable: Boolean): Config = ConfigFactory.parseString( + s""" + |encry.network.connectOnlyWithKnownPeers=$connectOnlyWithKnownPeersEnable + """.stripMargin + ) + def miningDelay(miningDelay: Int): Config = ConfigFactory.parseString( s""" |encry.node.miningDelay=${miningDelay}s diff --git a/it/src/test/scala/encry/it/ForkResolvingOnDownloading.scala b/it/src/test/scala/encry/it/ForkResolvingOnDownloading.scala new file mode 100644 index 0000000000..f34c5ec3f3 --- /dev/null +++ b/it/src/test/scala/encry/it/ForkResolvingOnDownloading.scala @@ -0,0 +1,78 @@ +package encry.it + +import com.typesafe.config.Config +import encry.consensus.EncrySupplyController +import encry.it.configs.Configs +import encry.it.docker.{DockerAfterAll, Node, NodesFromDocker} +import monix.eval.Coeval +import org.encryfoundation.common.utils.Algos +import org.encryfoundation.common.utils.TaggedTypes.Height +import org.encryfoundation.common.utils.constants.TestNetConstants +import org.scalatest.{AsyncFunSuite, Matchers} + +import scala.concurrent.{Await, Future} +import scala.concurrent.duration._ + +class ForkResolvingOnDownloading extends AsyncFunSuite with Matchers with DockerAfterAll { + + implicit class FutureBlockedRun[T](future: Future[T]) { + def run(implicit duration: Duration): T = Await.result(future, duration) + } + implicit val futureDuration = 10 minutes + + test("Late node should sync with chain") { + + val node1 = dockerSingleton() + .startNodes(Seq( + Configs.nodeName("node1") + .withFallback(Configs.mining(true)) + .withFallback(Configs.offlineGeneration(true)) + )) + .head + + val node2 = dockerSingleton() + .startNodes(Seq( + Configs.nodeName("node2") + .withFallback(Configs.mining(true)) + .withFallback(Configs.offlineGeneration(true)) + )) + .head + + node1.waitForStartup.run + println(s"node1: ${extractNodeInfo(node1)}") + + node2.waitForStartup.run + println(s"node2: ${extractNodeInfo(node2)}") + + node1.waitForFullHeight(5).run + + val node3 = dockerSingleton() + .startNodes(Seq( + Configs.nodeName("node3") + .withFallback(Configs.mining(false)) + .withFallback(Configs.knownPeers(Seq((node1.nodeIp, 9001), (node2.nodeIp, 9001)))) + )) + .head + + node3.waitForStartup.run + println(s"node3: ${extractNodeInfo(node3)}") + + val hight1 = node1.headersHeight.run + println(s"headersHeight: $hight1") + + node3.waitForFullHeight(hight1).run + + docker.close() + + node3.fullHeight.run shouldEqual hight1 + } + + def extractNodeInfo(node: Node) = s"node: ${node.name}" + + s"address ${node.address} " + + s"networkAddress: ${node.networkAddress} " + + s"nodeApiEndpoint: ${node.nodeApiEndpoint} " + + s"nodeIp: ${node.nodeIp} " + + s"nodePort: ${node.nodePort} " + + +} diff --git a/it/src/test/scala/encry/it/LinkToChainTest.scala b/it/src/test/scala/encry/it/LinkToChainTest.scala deleted file mode 100644 index d6b7ab023f..0000000000 --- a/it/src/test/scala/encry/it/LinkToChainTest.scala +++ /dev/null @@ -1,24 +0,0 @@ -package encry.it - -import com.typesafe.config.Config -import encry.consensus.EncrySupplyController -import encry.it.configs.Configs -import encry.it.docker.NodesFromDocker -import org.encryfoundation.common.utils.Algos -import org.encryfoundation.common.utils.TaggedTypes.Height -import org.encryfoundation.common.utils.constants.TestNetConstants -import org.scalatest.{AsyncFunSuite, Matchers} - -import scala.concurrent.Await -import scala.concurrent.duration._ - -class LinkToChainTest extends AsyncFunSuite with Matchers with NodesFromDocker { - - override protected def nodeConfigs: Seq[Config] = Seq(Configs.mining(true) - .withFallback(Configs.offlineGeneration(true)) - .withFallback(Configs.nodeName("node1"))) - - test("Late node should connect to highest chain") { - - } -} From 4775c797ac02681de3d49c247fbce13480fcaeeb Mon Sep 17 00:00:00 2001 From: capdev Date: Mon, 2 Sep 2019 18:41:11 +0500 Subject: [PATCH 03/51] add test draft: Late node should sync with chain add connectOnlyWithKnownPeers to Config --- ...g.scala => ForkResolvingOnDownloadingTest.scala} | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) rename it/src/test/scala/encry/it/{ForkResolvingOnDownloading.scala => ForkResolvingOnDownloadingTest.scala} (80%) diff --git a/it/src/test/scala/encry/it/ForkResolvingOnDownloading.scala b/it/src/test/scala/encry/it/ForkResolvingOnDownloadingTest.scala similarity index 80% rename from it/src/test/scala/encry/it/ForkResolvingOnDownloading.scala rename to it/src/test/scala/encry/it/ForkResolvingOnDownloadingTest.scala index f34c5ec3f3..611f117869 100644 --- a/it/src/test/scala/encry/it/ForkResolvingOnDownloading.scala +++ b/it/src/test/scala/encry/it/ForkResolvingOnDownloadingTest.scala @@ -1,19 +1,13 @@ package encry.it -import com.typesafe.config.Config -import encry.consensus.EncrySupplyController import encry.it.configs.Configs -import encry.it.docker.{DockerAfterAll, Node, NodesFromDocker} -import monix.eval.Coeval -import org.encryfoundation.common.utils.Algos -import org.encryfoundation.common.utils.TaggedTypes.Height -import org.encryfoundation.common.utils.constants.TestNetConstants +import encry.it.docker.{DockerAfterAll, Node} import org.scalatest.{AsyncFunSuite, Matchers} -import scala.concurrent.{Await, Future} import scala.concurrent.duration._ +import scala.concurrent.{Await, Future} -class ForkResolvingOnDownloading extends AsyncFunSuite with Matchers with DockerAfterAll { +class ForkResolvingOnDownloadingTest extends AsyncFunSuite with Matchers with DockerAfterAll { implicit class FutureBlockedRun[T](future: Future[T]) { def run(implicit duration: Duration): T = Await.result(future, duration) @@ -74,5 +68,4 @@ class ForkResolvingOnDownloading extends AsyncFunSuite with Matchers with Docker s"nodeIp: ${node.nodeIp} " + s"nodePort: ${node.nodePort} " - } From 736394b1c2ab9f94115e1a5148c483bb27a55fd5 Mon Sep 17 00:00:00 2001 From: capdev Date: Tue, 3 Sep 2019 13:05:45 +0500 Subject: [PATCH 04/51] add test Late node should sync with one node add test Late node should sync with the first of two nodes add test All nodes should go to first chain --- it/src/main/scala/encry/it/api/HttpApi.scala | 13 ++ .../it/ForkResolvingOnDownloadingTest.scala | 124 +++++++++++++----- 2 files changed, 103 insertions(+), 34 deletions(-) diff --git a/it/src/main/scala/encry/it/api/HttpApi.scala b/it/src/main/scala/encry/it/api/HttpApi.scala index 4eb3ebe547..105807a906 100644 --- a/it/src/main/scala/encry/it/api/HttpApi.scala +++ b/it/src/main/scala/encry/it/api/HttpApi.scala @@ -90,6 +90,15 @@ trait HttpApi { // scalastyle:ignore ) } + def bestFullHeaderId: Future[String] = get("/info") flatMap { r => + val response = jsonAnswerAs[Json](r.getResponseBody) + val eitherHeight = response.hcursor.downField("bestFullHeaderId").as[Option[String]] + eitherHeight.fold[Future[String]]( + e => Future.failed(new Exception(s"Error getting `bestFullHeaderId` from /info response: $e\n$response", e)), + maybeId => Future.successful(maybeId.getOrElse("")) + ) + } + def balances: Future[Map[String, Long]] = get("/wallet/info") flatMap { r => val response = jsonAnswerAs[Json](r.getResponseBody) val eitherBalance = response.hcursor.downField("balances").as[Map[String, String]] @@ -148,6 +157,10 @@ trait HttpApi { // scalastyle:ignore waitFor[Int](_.headersHeight, h => h >= expectedHeight, retryingInterval) } + def waitForBestFullHeaderId(expectedId: String, retryingInterval: FiniteDuration = 1.minute): Future[String] = { + waitFor[String](_.bestFullHeaderId, id => id == expectedId, retryingInterval) + } + def waitFor[A](f: this.type => Future[A], cond: A => Boolean, retryInterval: FiniteDuration): Future[A] = { timer.retryUntil(f(this), cond, retryInterval) } diff --git a/it/src/test/scala/encry/it/ForkResolvingOnDownloadingTest.scala b/it/src/test/scala/encry/it/ForkResolvingOnDownloadingTest.scala index 611f117869..6c70b35154 100644 --- a/it/src/test/scala/encry/it/ForkResolvingOnDownloadingTest.scala +++ b/it/src/test/scala/encry/it/ForkResolvingOnDownloadingTest.scala @@ -1,9 +1,11 @@ package encry.it import encry.it.configs.Configs +import encry.it.docker.Docker.defaultConf import encry.it.docker.{DockerAfterAll, Node} import org.scalatest.{AsyncFunSuite, Matchers} +import scala.annotation.tailrec import scala.concurrent.duration._ import scala.concurrent.{Await, Future} @@ -12,60 +14,114 @@ class ForkResolvingOnDownloadingTest extends AsyncFunSuite with Matchers with Do implicit class FutureBlockedRun[T](future: Future[T]) { def run(implicit duration: Duration): T = Await.result(future, duration) } - implicit val futureDuration = 10 minutes - test("Late node should sync with chain") { + implicit val futureDuration: FiniteDuration = 30 minutes + val heightSeparation = 10 //blocks + val maxTries: Int = 1800 //seconds + + test("Late node should sync with one node") { + + val miningNodeConfig = Configs.mining(true) + .withFallback(Configs.offlineGeneration(true)) + .withFallback(Configs.knownPeers(Seq())) + .withFallback(defaultConf) val node1 = dockerSingleton() - .startNodes(Seq( - Configs.nodeName("node1") - .withFallback(Configs.mining(true)) - .withFallback(Configs.offlineGeneration(true)) - )) - .head + .startNodeInternal(miningNodeConfig.withFallback(Configs.nodeName("node1"))) + + node1.waitForFullHeight(heightSeparation).run val node2 = dockerSingleton() - .startNodes(Seq( + .startNodeInternal( Configs.nodeName("node2") - .withFallback(Configs.mining(true)) - .withFallback(Configs.offlineGeneration(true)) - )) - .head + .withFallback(Configs.mining(false)) + .withFallback(Configs.knownPeers(Seq((node1.nodeIp, 9001)))) + .withFallback(defaultConf) + ) + + val (bestFullHeaderId1, bestFullHeaderId2) = + waitForEqualsId(node1.bestFullHeaderId.run, node2.bestFullHeaderId.run, maxTries) + + docker.close() + + bestFullHeaderId2 shouldEqual bestFullHeaderId1 + } + + test("Late node should sync with the first of two nodes") { - node1.waitForStartup.run - println(s"node1: ${extractNodeInfo(node1)}") + val miningNodeConfig = Configs.mining(true) + .withFallback(Configs.offlineGeneration(true)) + .withFallback(Configs.knownPeers(Seq())) + .withFallback(defaultConf) + + val node1 = dockerSingleton() + .startNodeInternal(miningNodeConfig.withFallback(Configs.nodeName("node1"))) - node2.waitForStartup.run - println(s"node2: ${extractNodeInfo(node2)}") + val node2 = dockerSingleton() + .startNodeInternal(miningNodeConfig.withFallback(Configs.nodeName("node2"))) - node1.waitForFullHeight(5).run + node1.waitForFullHeight(heightSeparation).run val node3 = dockerSingleton() - .startNodes(Seq( + .startNodeInternal( Configs.nodeName("node3") .withFallback(Configs.mining(false)) .withFallback(Configs.knownPeers(Seq((node1.nodeIp, 9001), (node2.nodeIp, 9001)))) - )) - .head + .withFallback(defaultConf) + ) + + val (bestFullHeaderId1, bestFullHeaderId3) = + waitForEqualsId(node1.bestFullHeaderId.run, node3.bestFullHeaderId.run, maxTries) + + docker.close() - node3.waitForStartup.run - println(s"node3: ${extractNodeInfo(node3)}") + bestFullHeaderId3 shouldEqual bestFullHeaderId1 + } + + test("All nodes should go to first chain") { + + val miningNodeConfig = Configs.mining(true) + .withFallback(Configs.offlineGeneration(true)) + .withFallback(Configs.knownPeers(Seq())) + .withFallback(defaultConf) + + val node1 = dockerSingleton() + .startNodeInternal(miningNodeConfig.withFallback(Configs.nodeName("node1"))) + + node1.waitForFullHeight(heightSeparation).run + + val node2 = dockerSingleton() + .startNodeInternal(miningNodeConfig.withFallback(Configs.nodeName("node2"))) - val hight1 = node1.headersHeight.run - println(s"headersHeight: $hight1") + node2.waitForFullHeight(heightSeparation).run - node3.waitForFullHeight(hight1).run + val node3 = dockerSingleton() + .startNodeInternal( + Configs.nodeName("node3") + .withFallback(Configs.mining(false)) + .withFallback(Configs.knownPeers(Seq((node1.nodeIp, 9001), (node2.nodeIp, 9001)))) + .withFallback(defaultConf) + ) + + val (bestFullHeaderId13, bestFullHeaderId3) = + waitForEqualsId(node1.bestFullHeaderId.run, node3.bestFullHeaderId.run, maxTries) + + val (bestFullHeaderId12, bestFullHeaderId2) = + waitForEqualsId(node1.bestFullHeaderId.run, node2.bestFullHeaderId.run, maxTries) docker.close() - node3.fullHeight.run shouldEqual hight1 + bestFullHeaderId3 shouldEqual bestFullHeaderId13 + bestFullHeaderId2 shouldEqual bestFullHeaderId12 } - def extractNodeInfo(node: Node) = s"node: ${node.name}" + - s"address ${node.address} " + - s"networkAddress: ${node.networkAddress} " + - s"nodeApiEndpoint: ${node.nodeApiEndpoint} " + - s"nodeIp: ${node.nodeIp} " + - s"nodePort: ${node.nodePort} " - + @tailrec + final def waitForEqualsId(id1Func: => String, id2Func: => String, maxTries: Int): (String, String) = { + val id1: String = id1Func + val id2: String = id2Func + if (id1 != id2 && maxTries > 0) { + Thread.sleep(1000) + waitForEqualsId(id1Func, id2Func, maxTries - 1) + } else (id1, id2) + } } From 74edce853490ec35aa28819c60e30541fbaa5a41 Mon Sep 17 00:00:00 2001 From: capdev Date: Tue, 3 Sep 2019 15:37:00 +0500 Subject: [PATCH 05/51] maxTries -> implicit duration --- .../it/ForkResolvingOnDownloadingTest.scala | 29 ++++++++++--------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/it/src/test/scala/encry/it/ForkResolvingOnDownloadingTest.scala b/it/src/test/scala/encry/it/ForkResolvingOnDownloadingTest.scala index 6c70b35154..bc1f84e32d 100644 --- a/it/src/test/scala/encry/it/ForkResolvingOnDownloadingTest.scala +++ b/it/src/test/scala/encry/it/ForkResolvingOnDownloadingTest.scala @@ -17,7 +17,6 @@ class ForkResolvingOnDownloadingTest extends AsyncFunSuite with Matchers with Do implicit val futureDuration: FiniteDuration = 30 minutes val heightSeparation = 10 //blocks - val maxTries: Int = 1800 //seconds test("Late node should sync with one node") { @@ -40,7 +39,7 @@ class ForkResolvingOnDownloadingTest extends AsyncFunSuite with Matchers with Do ) val (bestFullHeaderId1, bestFullHeaderId2) = - waitForEqualsId(node1.bestFullHeaderId.run, node2.bestFullHeaderId.run, maxTries) + waitForEqualsId(node1.bestFullHeaderId.run, node2.bestFullHeaderId.run) docker.close() @@ -71,7 +70,7 @@ class ForkResolvingOnDownloadingTest extends AsyncFunSuite with Matchers with Do ) val (bestFullHeaderId1, bestFullHeaderId3) = - waitForEqualsId(node1.bestFullHeaderId.run, node3.bestFullHeaderId.run, maxTries) + waitForEqualsId(node1.bestFullHeaderId.run, node3.bestFullHeaderId.run) docker.close() @@ -104,10 +103,10 @@ class ForkResolvingOnDownloadingTest extends AsyncFunSuite with Matchers with Do ) val (bestFullHeaderId13, bestFullHeaderId3) = - waitForEqualsId(node1.bestFullHeaderId.run, node3.bestFullHeaderId.run, maxTries) + waitForEqualsId(node1.bestFullHeaderId.run, node3.bestFullHeaderId.run) val (bestFullHeaderId12, bestFullHeaderId2) = - waitForEqualsId(node1.bestFullHeaderId.run, node2.bestFullHeaderId.run, maxTries) + waitForEqualsId(node1.bestFullHeaderId.run, node2.bestFullHeaderId.run) docker.close() @@ -115,13 +114,17 @@ class ForkResolvingOnDownloadingTest extends AsyncFunSuite with Matchers with Do bestFullHeaderId2 shouldEqual bestFullHeaderId12 } - @tailrec - final def waitForEqualsId(id1Func: => String, id2Func: => String, maxTries: Int): (String, String) = { - val id1: String = id1Func - val id2: String = id2Func - if (id1 != id2 && maxTries > 0) { - Thread.sleep(1000) - waitForEqualsId(id1Func, id2Func, maxTries - 1) - } else (id1, id2) + def waitForEqualsId(id1Func: => String, id2Func: => String)(implicit duration: Duration): (String, String) = { + @tailrec + def loop(id1Func: => String, id2Func: => String, maxTries: Long): (String, String) = { + val id1: String = id1Func + val id2: String = id2Func + if (id1 != id2 && maxTries > 0) { + Thread.sleep(1000) + loop(id1Func, id2Func, maxTries - 1) + } else (id1, id2) + } + + loop(id1Func, id2Func, duration.toSeconds) } } From 0346c3e61607f9957354d95ab1c4715ad9daacbb Mon Sep 17 00:00:00 2001 From: capdev Date: Tue, 3 Sep 2019 16:53:21 +0500 Subject: [PATCH 06/51] add test draft "Node should sync after change offlineGeneration and port" --- .../it/ForkResolvingOnDownloadingTest.scala | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/it/src/test/scala/encry/it/ForkResolvingOnDownloadingTest.scala b/it/src/test/scala/encry/it/ForkResolvingOnDownloadingTest.scala index bc1f84e32d..d186fc912e 100644 --- a/it/src/test/scala/encry/it/ForkResolvingOnDownloadingTest.scala +++ b/it/src/test/scala/encry/it/ForkResolvingOnDownloadingTest.scala @@ -114,6 +114,39 @@ class ForkResolvingOnDownloadingTest extends AsyncFunSuite with Matchers with Do bestFullHeaderId2 shouldEqual bestFullHeaderId12 } + test("Node should sync after change offlineGeneration and port") { + + val baseNodeConfig = Configs.mining(true) + .withFallback(Configs.knownPeers(Seq())) + .withFallback(defaultConf) + + val node1 = dockerSingleton() + .startNodeInternal(baseNodeConfig + .withFallback(Configs.nodeName("node1")) + .withFallback(Configs.offlineGeneration(true)) + ) + + val node2 = dockerSingleton() + .startNodeInternal(baseNodeConfig + .withFallback(Configs.nodeName("node2")) + .withFallback(Configs.offlineGeneration(false)) + ) + + println(s"${node2.nodeIp}:9001") + println(s"${node1.nodeIp}:9001") + node1.connect(s"${node2.nodeIp}:9001").run +// node2.connect(s"${node1.nodeIp}:9001").run + + node1.waitForFullHeight(100).run + +// val (bestFullHeaderId1, bestFullHeaderId2) = +// waitForEqualsId(node1.bestFullHeaderId.run, node2.bestFullHeaderId.run) +// + docker.close() + + true shouldEqual true + } + def waitForEqualsId(id1Func: => String, id2Func: => String)(implicit duration: Duration): (String, String) = { @tailrec def loop(id1Func: => String, id2Func: => String, maxTries: Long): (String, String) = { From 363ae2c31b7cda0fe12d9ffc67822bb51162e309 Mon Sep 17 00:00:00 2001 From: capdev Date: Tue, 3 Sep 2019 17:55:16 +0500 Subject: [PATCH 07/51] add /peers/connect api route --- .../encry/api/http/routes/PeersApiRoute.scala | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/src/main/scala/encry/api/http/routes/PeersApiRoute.scala b/src/main/scala/encry/api/http/routes/PeersApiRoute.scala index dc74e5638e..f5f3a1a504 100755 --- a/src/main/scala/encry/api/http/routes/PeersApiRoute.scala +++ b/src/main/scala/encry/api/http/routes/PeersApiRoute.scala @@ -1,24 +1,30 @@ package encry.api.http.routes import java.net.{InetAddress, InetSocketAddress} + import akka.actor.{ActorRef, ActorRefFactory} +import akka.http.scaladsl.model.StatusCodes import akka.http.scaladsl.server.Route import akka.pattern.ask +import encry.EncryApp.nodeViewSynchronizer import encry.api.http.DataHolderForApi.{GetAllPeers, GetBannedPeers, GetConnectedPeers} import encry.api.http.routes.PeersApiRoute.PeerInfoResponse +import encry.cli.commands.AddPeer.PeerFromCli import encry.network.BlackList.{BanReason, BanTime, BanType} import encry.network.ConnectedPeersCollection.PeerInfo import encry.network.PeerConnectionHandler.ConnectedPeer import encry.settings.RESTApiSettings import io.circe.Encoder import io.circe.generic.semiauto._ + import scala.concurrent.Future +import scala.util.{Failure, Success, Try} case class PeersApiRoute(override val settings: RESTApiSettings, dataHolder: ActorRef)(implicit val context: ActorRefFactory) extends EncryBaseApiRoute { override lazy val route: Route = pathPrefix("peers") { - connectedPeers ~ allPeers ~ bannedList + connectedPeers ~ connectPeer ~ allPeers ~ bannedList } def allPeers: Route = (path("all") & get) { @@ -40,6 +46,24 @@ case class PeersApiRoute(override val settings: RESTApiSettings, (r => complete(r)) ) + def connectPeer: Route = path("connect") { + post(entity(as[String]) { + str => + complete { + Try { + val split = str.split(':') + (split(0), split(1).toInt) + } match { + case Success((host, port)) => + nodeViewSynchronizer ! PeerFromCli(new InetSocketAddress(host, port)) + StatusCodes.OK + case Failure(_) => + StatusCodes.BadRequest + } + } + }) + } + def bannedList: Route = (path("banned") & get) { val result = (dataHolder ? GetBannedPeers) .mapTo[Seq[(InetAddress, (BanReason, BanTime, BanType))]] From 3fcf2c962e1205c9043332ef550bd24f99faee20 Mon Sep 17 00:00:00 2001 From: capdev Date: Wed, 4 Sep 2019 12:24:06 +0500 Subject: [PATCH 08/51] add /node/shutdown api route --- src/main/scala/encry/EncryApp.scala | 7 ++++-- .../encry/api/http/routes/NodeApiRoute.scala | 25 +++++++++++++++++++ .../encry/api/http/routes/SwaggerRoute.scala | 3 ++- 3 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 src/main/scala/encry/api/http/routes/NodeApiRoute.scala diff --git a/src/main/scala/encry/EncryApp.scala b/src/main/scala/encry/EncryApp.scala index ba761db356..aeb15a25f7 100644 --- a/src/main/scala/encry/EncryApp.scala +++ b/src/main/scala/encry/EncryApp.scala @@ -1,6 +1,7 @@ package encry import java.net.InetAddress + import akka.actor.SupervisorStrategy.Restart import akka.actor.{ActorRef, ActorSystem, OneForOneStrategy, Props} import akka.http.scaladsl.Http @@ -8,7 +9,7 @@ import akka.http.scaladsl.model.HttpResponse import akka.http.scaladsl.server.ExceptionHandler import akka.stream.ActorMaterializer import com.typesafe.scalalogging.StrictLogging -import encry.api.http.{ApiRoute, CompositeHttpService, DataHolderForApi} +import encry.api.http.{ApiRoute, CompositeHttpService, DataHolderForApi, routes} import encry.api.http.routes._ import encry.cli.ConsoleListener import encry.cli.ConsoleListener.StartListening @@ -24,6 +25,7 @@ import kamon.Kamon import kamon.influxdb.InfluxDBReporter import kamon.system.SystemMetrics import org.encryfoundation.common.utils.Algos + import scala.concurrent.{Await, ExecutionContextExecutor} import scala.concurrent.duration._ import scala.io.Source @@ -84,7 +86,8 @@ object EncryApp extends App with StrictLogging { InfoApiRoute(dataHolderForApi, settings, nodeId, timeProvider), HistoryApiRoute(dataHolderForApi, settings, nodeId), TransactionsApiRoute(dataHolderForApi, memoryPool, settings.restApi), - WalletInfoApiRoute(dataHolderForApi, settings.restApi) + WalletInfoApiRoute(dataHolderForApi, settings.restApi), + NodeApiRoute(settings.restApi) ) Http().bindAndHandle( CompositeHttpService(system, apiRoutes, settings.restApi, swaggerConfig).compositeRoute, diff --git a/src/main/scala/encry/api/http/routes/NodeApiRoute.scala b/src/main/scala/encry/api/http/routes/NodeApiRoute.scala new file mode 100644 index 0000000000..6b6eed7679 --- /dev/null +++ b/src/main/scala/encry/api/http/routes/NodeApiRoute.scala @@ -0,0 +1,25 @@ +package encry.api.http.routes + +import akka.actor.{ActorRef, ActorRefFactory} +import akka.http.scaladsl.model.StatusCodes +import akka.http.scaladsl.server.Route +import de.heikoseeberger.akkahttpcirce.FailFastCirceSupport +import encry.EncryApp +import encry.settings.RESTApiSettings + +case class NodeApiRoute(restApiSettings: RESTApiSettings)(implicit val context: ActorRefFactory) + extends EncryBaseApiRoute with FailFastCirceSupport { + + override val route: Route = pathPrefix("node")(shutdownR) + + override val settings: RESTApiSettings = restApiSettings + + def shutdownR: Route = path("shutdown") { + post { + complete { + EncryApp.forceStopApplication(errorMessage = "Stopped by http api") + StatusCodes.OK + } + } + } +} \ No newline at end of file diff --git a/src/main/scala/encry/api/http/routes/SwaggerRoute.scala b/src/main/scala/encry/api/http/routes/SwaggerRoute.scala index 3108d5a210..7c7211a62a 100644 --- a/src/main/scala/encry/api/http/routes/SwaggerRoute.scala +++ b/src/main/scala/encry/api/http/routes/SwaggerRoute.scala @@ -9,7 +9,8 @@ object SwaggerRoute extends SwaggerHttpService { classOf[InfoApiRoute], classOf[TransactionsApiRoute], classOf[WalletInfoApiRoute], - classOf[PeersApiRoute] + classOf[PeersApiRoute], + classOf[NodeApiRoute] ) override def info: model.Info = Info( From 16f127eec00b66d2c89e63bf6be3b10e2e437ae0 Mon Sep 17 00:00:00 2001 From: capdev Date: Wed, 4 Sep 2019 14:03:14 +0500 Subject: [PATCH 09/51] add node api shutdown --- it/src/main/scala/encry/it/api/HttpApi.scala | 2 ++ 1 file changed, 2 insertions(+) diff --git a/it/src/main/scala/encry/it/api/HttpApi.scala b/it/src/main/scala/encry/it/api/HttpApi.scala index 105807a906..f1d3d0128a 100644 --- a/it/src/main/scala/encry/it/api/HttpApi.scala +++ b/it/src/main/scala/encry/it/api/HttpApi.scala @@ -167,6 +167,8 @@ trait HttpApi { // scalastyle:ignore def connect(addressAndPort: String): Future[Unit] = post("/peers/connect", addressAndPort).map(_ => ()) + def shutdown: Future[Unit] = post("/node/shutdown", "").map(_ => ()) + def postJson[A: Encoder](path: String, body: A): Future[Response] = post(path, body.asJson.toString()) From b0f3672fca80f85c27e7ffa34ceff6427b855855 Mon Sep 17 00:00:00 2001 From: capdev Date: Wed, 4 Sep 2019 14:04:17 +0500 Subject: [PATCH 10/51] add Config wrappers --- it/src/main/scala/encry/it/configs/Configs.scala | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/it/src/main/scala/encry/it/configs/Configs.scala b/it/src/main/scala/encry/it/configs/Configs.scala index 57aad37030..16737ccce2 100644 --- a/it/src/main/scala/encry/it/configs/Configs.scala +++ b/it/src/main/scala/encry/it/configs/Configs.scala @@ -50,4 +50,16 @@ object Configs { |encry.wallet.seed="$key" """.stripMargin ) + + def networkAddress(address: String): Config = ConfigFactory.parseString( + s""" + |encry.network.bindAddress = "$address" + """.stripMargin + ) + + def apiAddress(address: String): Config = ConfigFactory.parseString( + s""" + |encry.restApi.bindAddress = "$address" + """.stripMargin + ) } From baab41ffbf8d0f862f0cc984997bb7b2a3660c8f Mon Sep 17 00:00:00 2001 From: capdev Date: Wed, 4 Sep 2019 14:09:10 +0500 Subject: [PATCH 11/51] passthrough volume param --- it/src/main/scala/encry/it/docker/Docker.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/it/src/main/scala/encry/it/docker/Docker.scala b/it/src/main/scala/encry/it/docker/Docker.scala index fe5f580302..692db10b64 100644 --- a/it/src/main/scala/encry/it/docker/Docker.scala +++ b/it/src/main/scala/encry/it/docker/Docker.scala @@ -210,13 +210,13 @@ case class Docker(suiteConfig: Config = empty, .build() } - def startNodeInternal(nodeConfig: Config): Node = + def startNodeInternal(nodeConfig: Config, specialVolumeOpt: Option[(String, String)] = None): Node = try { val settings = EncryAppSettings.fromConfig(nodeConfig.withFallback(configTemplate)) val nodeNumber = settings.network.nodeName.map(_.replace("node", "").toInt).getOrElse(0) val ip = ipForNode(nodeNumber) - val containerConfig = buildPeerContainerConfig(nodeConfig, EncryAppSettings.fromConfig(nodeConfig), ip) + val containerConfig = buildPeerContainerConfig(nodeConfig, EncryAppSettings.fromConfig(nodeConfig), ip, specialVolumeOpt) val containerId = { val containerName = networkName + "-" + settings.network.nodeName.getOrElse("NodeWithoutName") + "-" + uuidShort From 6efc443cd44a6a1af63b948fa340f457f8c22899 Mon Sep 17 00:00:00 2001 From: capdev Date: Wed, 4 Sep 2019 16:36:33 +0500 Subject: [PATCH 12/51] add stopNode port from Config --- it/src/main/scala/encry/it/docker/Docker.scala | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/it/src/main/scala/encry/it/docker/Docker.scala b/it/src/main/scala/encry/it/docker/Docker.scala index 692db10b64..5861acc5b1 100644 --- a/it/src/main/scala/encry/it/docker/Docker.scala +++ b/it/src/main/scala/encry/it/docker/Docker.scala @@ -29,7 +29,7 @@ import scala.collection.JavaConverters._ import scala.concurrent.ExecutionContext.Implicits.global import scala.concurrent.duration._ import scala.concurrent.{Await, Future, blocking} -import scala.util.Random +import scala.util.{Random, Try} import scala.util.control.NonFatal case class Docker(suiteConfig: Config = empty, @@ -233,8 +233,8 @@ case class Docker(suiteConfig: Config = empty, client.startContainer(containerId) val containerInfo = client.inspectContainer(containerId) val ports = containerInfo.networkSettings().ports() - val hostPort = extractHostPort(ports, 9001) - val hostRestApiPort = extractHostPort(ports, 9051) //get port from settings + val hostPort = extractHostPort(ports, extractNetworkPortFromConfig(nodeConfig).getOrElse(9001)) + val hostRestApiPort = extractHostPort(ports, extractApiPortFromConfig(nodeConfig).getOrElse(9051)) val node = new Node(nodeConfig, hostRestApiPort, containerId, attachedNetwork.ipAddress(), hostPort, http) nodes.add(node) logger.debug(s"Started $containerId -> ${node.name}") @@ -246,10 +246,20 @@ case class Docker(suiteConfig: Config = empty, throw e } + def stopNode(node: Node, secondsToWaitBeforeKilling: Int = 0) { + client.stopContainer(node.containerId, secondsToWaitBeforeKilling) + client.removeContainer(node.containerId, RemoveContainerParam.forceKill()) + } def extractHostPort(portBindingMap: JMap[String, JList[PortBinding]], containerPort: Int): Int = portBindingMap.get(s"$containerPort/tcp").get(0).hostPort().toInt + def extractNetworkPortFromConfig(config: Config): Option[Int] = + Try(config.getString("encry.network.bindAddress").split(":")(1).toInt).toOption + + def extractApiPortFromConfig(config: Config): Option[Int] = + Try(config.getString("encry.restApi.bindAddress").split(":")(1).toInt).toOption + private def saveNodeLogs(): Unit = { val logDir = Paths.get(System.getProperty("user.dir"), "target", "logs") Files.createDirectories(logDir) From a5f96306734f8b36a63e520c6f3a46fe1ce49abe Mon Sep 17 00:00:00 2001 From: capdev Date: Wed, 4 Sep 2019 16:38:47 +0500 Subject: [PATCH 13/51] add test "Nodes should sync after restart with new offlineGeneration and port" --- .../it/ForkResolvingOnDownloadingTest.scala | 34 +++++++++++++------ 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/it/src/test/scala/encry/it/ForkResolvingOnDownloadingTest.scala b/it/src/test/scala/encry/it/ForkResolvingOnDownloadingTest.scala index d186fc912e..49d3b2b914 100644 --- a/it/src/test/scala/encry/it/ForkResolvingOnDownloadingTest.scala +++ b/it/src/test/scala/encry/it/ForkResolvingOnDownloadingTest.scala @@ -114,7 +114,7 @@ class ForkResolvingOnDownloadingTest extends AsyncFunSuite with Matchers with Do bestFullHeaderId2 shouldEqual bestFullHeaderId12 } - test("Node should sync after change offlineGeneration and port") { + test("Nodes should sync after restart with new offlineGeneration and port") { val baseNodeConfig = Configs.mining(true) .withFallback(Configs.knownPeers(Seq())) @@ -126,9 +126,18 @@ class ForkResolvingOnDownloadingTest extends AsyncFunSuite with Matchers with Do .withFallback(Configs.offlineGeneration(true)) ) - val node2 = dockerSingleton() - .startNodeInternal(baseNodeConfig - .withFallback(Configs.nodeName("node2")) + val userDir = Paths.get(System.getProperty("user.dir")) + println(s"userDir: $userDir") + + val volumeName = Algos.encode(Random.randomBytes(32)) + println(s"volumeName: $volumeName") + + val containerMountPath = userDir + "/encry/data" + println(s"containerMountPath: $containerMountPath") + + val node21 = dockerSingleton() + .startNodeInternal(Configs.mining(true) + .withFallback(Configs.nodeName("node21")) .withFallback(Configs.offlineGeneration(false)) ) @@ -137,14 +146,19 @@ class ForkResolvingOnDownloadingTest extends AsyncFunSuite with Matchers with Do node1.connect(s"${node2.nodeIp}:9001").run // node2.connect(s"${node1.nodeIp}:9001").run - node1.waitForFullHeight(100).run + println("connect again") -// val (bestFullHeaderId1, bestFullHeaderId2) = -// waitForEqualsId(node1.bestFullHeaderId.run, node2.bestFullHeaderId.run) -// - docker.close() + node1.connect(s"${node22.nodeIp}:9002").run + node22.connect(s"${node1.nodeIp}:9001").run - true shouldEqual true + node1.waitForFullHeight(20).run + + println("try to sync") + + val (bestFullHeaderId1, bestFullHeaderId2) = + waitForEqualsId(node1.bestFullHeaderId.run, node22.bestFullHeaderId.run) + + bestFullHeaderId2 shouldEqual bestFullHeaderId1 } def waitForEqualsId(id1Func: => String, id2Func: => String)(implicit duration: Duration): (String, String) = { From b5ff812e598dad591715f5842f788057295fb28b Mon Sep 17 00:00:00 2001 From: capdev Date: Wed, 4 Sep 2019 16:42:29 +0500 Subject: [PATCH 14/51] add test "Nodes should sync after restart with new offlineGeneration and port" --- .../it/ForkResolvingOnDownloadingTest.scala | 51 +++++++++++++++---- 1 file changed, 42 insertions(+), 9 deletions(-) diff --git a/it/src/test/scala/encry/it/ForkResolvingOnDownloadingTest.scala b/it/src/test/scala/encry/it/ForkResolvingOnDownloadingTest.scala index 49d3b2b914..2dfe272d42 100644 --- a/it/src/test/scala/encry/it/ForkResolvingOnDownloadingTest.scala +++ b/it/src/test/scala/encry/it/ForkResolvingOnDownloadingTest.scala @@ -1,9 +1,13 @@ package encry.it +import java.nio.file.Paths + import encry.it.configs.Configs import encry.it.docker.Docker.defaultConf import encry.it.docker.{DockerAfterAll, Node} +import org.encryfoundation.common.utils.Algos import org.scalatest.{AsyncFunSuite, Matchers} +import scorex.utils.Random import scala.annotation.tailrec import scala.concurrent.duration._ @@ -116,14 +120,12 @@ class ForkResolvingOnDownloadingTest extends AsyncFunSuite with Matchers with Do test("Nodes should sync after restart with new offlineGeneration and port") { - val baseNodeConfig = Configs.mining(true) - .withFallback(Configs.knownPeers(Seq())) - .withFallback(defaultConf) - val node1 = dockerSingleton() - .startNodeInternal(baseNodeConfig + .startNodeInternal(Configs.mining(true) .withFallback(Configs.nodeName("node1")) .withFallback(Configs.offlineGeneration(true)) + .withFallback(Configs.knownPeers(Seq())) + .withFallback(defaultConf) ) val userDir = Paths.get(System.getProperty("user.dir")) @@ -139,12 +141,43 @@ class ForkResolvingOnDownloadingTest extends AsyncFunSuite with Matchers with Do .startNodeInternal(Configs.mining(true) .withFallback(Configs.nodeName("node21")) .withFallback(Configs.offlineGeneration(false)) + .withFallback(Configs.knownPeers(Seq())) + .withFallback(defaultConf), + Some(volumeName, containerMountPath) ) - println(s"${node2.nodeIp}:9001") - println(s"${node1.nodeIp}:9001") - node1.connect(s"${node2.nodeIp}:9001").run -// node2.connect(s"${node1.nodeIp}:9001").run + node1.connect(s"${node21.nodeIp}:9001").run + node21.connect(s"${node1.nodeIp}:9001").run + + node1.waitForFullHeight(5).run + + println("node21 try stop") + + node21.shutdown + Thread.sleep(5000) + docker.stopNode(node21, 5) + Thread.sleep(7000) + + println("node21 stopped") + + node1.waitForFullHeight(10).run + + println("node2 start again") + + val node22 = dockerSingleton() + .startNodeInternal(Configs.mining(true) + .withFallback(Configs.nodeName("node22")) + .withFallback(Configs.offlineGeneration(true)) + .withFallback(Configs.knownPeers(Seq())) + .withFallback(Configs.networkAddress("0.0.0.0:9002")) + .withFallback(Configs.apiAddress("0.0.0.0:9052")) + .withFallback(defaultConf), + Some(volumeName, containerMountPath) + ) + + println("node22 started") + + node1.waitForFullHeight(15).run println("connect again") From 2014d590fa2d5ecebfc5106e226d8cdcaa8e8d48 Mon Sep 17 00:00:00 2001 From: capdev Date: Wed, 4 Sep 2019 17:05:22 +0500 Subject: [PATCH 15/51] fix remove container --- it/src/main/scala/encry/it/docker/Docker.scala | 1 - 1 file changed, 1 deletion(-) diff --git a/it/src/main/scala/encry/it/docker/Docker.scala b/it/src/main/scala/encry/it/docker/Docker.scala index 5861acc5b1..1012fe7688 100644 --- a/it/src/main/scala/encry/it/docker/Docker.scala +++ b/it/src/main/scala/encry/it/docker/Docker.scala @@ -248,7 +248,6 @@ case class Docker(suiteConfig: Config = empty, def stopNode(node: Node, secondsToWaitBeforeKilling: Int = 0) { client.stopContainer(node.containerId, secondsToWaitBeforeKilling) - client.removeContainer(node.containerId, RemoveContainerParam.forceKill()) } def extractHostPort(portBindingMap: JMap[String, JList[PortBinding]], containerPort: Int): Int = From 8d700d4aac05b9238541a43ea4fede829ac08118 Mon Sep 17 00:00:00 2001 From: capdev Date: Thu, 5 Sep 2019 10:42:53 +0500 Subject: [PATCH 16/51] general refactoring of tests split forkResolving tests --- .../main/scala/encry/it/util/WaitUtils.scala | 22 ++ .../it/ForkResolvingOnDownloadingTest.scala | 210 ------------------ .../SyncAfterNodeRestartTest.scala | 96 ++++++++ .../it/forkResolving/SyncThreeNodesTest.scala | 45 ++++ .../it/forkResolving/SyncTwoNodesTest.scala | 43 ++++ .../TwoNodesSyncWithFirstTest.scala | 55 +++++ .../{ => miner}/MinerWalletBalanceTest.scala | 2 +- .../AssetTokenTransactionTest.scala | 2 +- .../it/transactions/DataTransactionTest.scala | 3 +- ...ransferTransactionWithEncryCoinsTest.scala | 2 +- .../encry/it/utils/FutureBlockedRun.scala | 12 + .../it/utils}/TransactionsUtil.scala | 2 +- 12 files changed, 279 insertions(+), 215 deletions(-) create mode 100644 it/src/main/scala/encry/it/util/WaitUtils.scala delete mode 100644 it/src/test/scala/encry/it/ForkResolvingOnDownloadingTest.scala create mode 100644 it/src/test/scala/encry/it/forkResolving/SyncAfterNodeRestartTest.scala create mode 100644 it/src/test/scala/encry/it/forkResolving/SyncThreeNodesTest.scala create mode 100644 it/src/test/scala/encry/it/forkResolving/SyncTwoNodesTest.scala create mode 100644 it/src/test/scala/encry/it/forkResolving/TwoNodesSyncWithFirstTest.scala rename it/src/test/scala/encry/it/{ => miner}/MinerWalletBalanceTest.scala (98%) create mode 100644 it/src/test/scala/encry/it/utils/FutureBlockedRun.scala rename it/src/test/scala/{TransactionGenerator => encry/it/utils}/TransactionsUtil.scala (99%) diff --git a/it/src/main/scala/encry/it/util/WaitUtils.scala b/it/src/main/scala/encry/it/util/WaitUtils.scala new file mode 100644 index 0000000000..6f00d0d2a2 --- /dev/null +++ b/it/src/main/scala/encry/it/util/WaitUtils.scala @@ -0,0 +1,22 @@ +package encry.it.util + +import scala.annotation.tailrec +import scala.concurrent.duration.Duration + +object WaitUtils { + + def waitForEqualsId(id1Func: => String, id2Func: => String)(implicit duration: Duration): (String, String) = { + @tailrec + def loop(id1Func: => String, id2Func: => String, maxTries: Long): (String, String) = { + val id1: String = id1Func + val id2: String = id2Func + if (id1 != id2 && maxTries > 0) { + Thread.sleep(1000) + loop(id1Func, id2Func, maxTries - 1) + } else (id1, id2) + } + + loop(id1Func, id2Func, duration.toSeconds) + } + +} diff --git a/it/src/test/scala/encry/it/ForkResolvingOnDownloadingTest.scala b/it/src/test/scala/encry/it/ForkResolvingOnDownloadingTest.scala deleted file mode 100644 index 2dfe272d42..0000000000 --- a/it/src/test/scala/encry/it/ForkResolvingOnDownloadingTest.scala +++ /dev/null @@ -1,210 +0,0 @@ -package encry.it - -import java.nio.file.Paths - -import encry.it.configs.Configs -import encry.it.docker.Docker.defaultConf -import encry.it.docker.{DockerAfterAll, Node} -import org.encryfoundation.common.utils.Algos -import org.scalatest.{AsyncFunSuite, Matchers} -import scorex.utils.Random - -import scala.annotation.tailrec -import scala.concurrent.duration._ -import scala.concurrent.{Await, Future} - -class ForkResolvingOnDownloadingTest extends AsyncFunSuite with Matchers with DockerAfterAll { - - implicit class FutureBlockedRun[T](future: Future[T]) { - def run(implicit duration: Duration): T = Await.result(future, duration) - } - - implicit val futureDuration: FiniteDuration = 30 minutes - val heightSeparation = 10 //blocks - - test("Late node should sync with one node") { - - val miningNodeConfig = Configs.mining(true) - .withFallback(Configs.offlineGeneration(true)) - .withFallback(Configs.knownPeers(Seq())) - .withFallback(defaultConf) - - val node1 = dockerSingleton() - .startNodeInternal(miningNodeConfig.withFallback(Configs.nodeName("node1"))) - - node1.waitForFullHeight(heightSeparation).run - - val node2 = dockerSingleton() - .startNodeInternal( - Configs.nodeName("node2") - .withFallback(Configs.mining(false)) - .withFallback(Configs.knownPeers(Seq((node1.nodeIp, 9001)))) - .withFallback(defaultConf) - ) - - val (bestFullHeaderId1, bestFullHeaderId2) = - waitForEqualsId(node1.bestFullHeaderId.run, node2.bestFullHeaderId.run) - - docker.close() - - bestFullHeaderId2 shouldEqual bestFullHeaderId1 - } - - test("Late node should sync with the first of two nodes") { - - val miningNodeConfig = Configs.mining(true) - .withFallback(Configs.offlineGeneration(true)) - .withFallback(Configs.knownPeers(Seq())) - .withFallback(defaultConf) - - val node1 = dockerSingleton() - .startNodeInternal(miningNodeConfig.withFallback(Configs.nodeName("node1"))) - - val node2 = dockerSingleton() - .startNodeInternal(miningNodeConfig.withFallback(Configs.nodeName("node2"))) - - node1.waitForFullHeight(heightSeparation).run - - val node3 = dockerSingleton() - .startNodeInternal( - Configs.nodeName("node3") - .withFallback(Configs.mining(false)) - .withFallback(Configs.knownPeers(Seq((node1.nodeIp, 9001), (node2.nodeIp, 9001)))) - .withFallback(defaultConf) - ) - - val (bestFullHeaderId1, bestFullHeaderId3) = - waitForEqualsId(node1.bestFullHeaderId.run, node3.bestFullHeaderId.run) - - docker.close() - - bestFullHeaderId3 shouldEqual bestFullHeaderId1 - } - - test("All nodes should go to first chain") { - - val miningNodeConfig = Configs.mining(true) - .withFallback(Configs.offlineGeneration(true)) - .withFallback(Configs.knownPeers(Seq())) - .withFallback(defaultConf) - - val node1 = dockerSingleton() - .startNodeInternal(miningNodeConfig.withFallback(Configs.nodeName("node1"))) - - node1.waitForFullHeight(heightSeparation).run - - val node2 = dockerSingleton() - .startNodeInternal(miningNodeConfig.withFallback(Configs.nodeName("node2"))) - - node2.waitForFullHeight(heightSeparation).run - - val node3 = dockerSingleton() - .startNodeInternal( - Configs.nodeName("node3") - .withFallback(Configs.mining(false)) - .withFallback(Configs.knownPeers(Seq((node1.nodeIp, 9001), (node2.nodeIp, 9001)))) - .withFallback(defaultConf) - ) - - val (bestFullHeaderId13, bestFullHeaderId3) = - waitForEqualsId(node1.bestFullHeaderId.run, node3.bestFullHeaderId.run) - - val (bestFullHeaderId12, bestFullHeaderId2) = - waitForEqualsId(node1.bestFullHeaderId.run, node2.bestFullHeaderId.run) - - docker.close() - - bestFullHeaderId3 shouldEqual bestFullHeaderId13 - bestFullHeaderId2 shouldEqual bestFullHeaderId12 - } - - test("Nodes should sync after restart with new offlineGeneration and port") { - - val node1 = dockerSingleton() - .startNodeInternal(Configs.mining(true) - .withFallback(Configs.nodeName("node1")) - .withFallback(Configs.offlineGeneration(true)) - .withFallback(Configs.knownPeers(Seq())) - .withFallback(defaultConf) - ) - - val userDir = Paths.get(System.getProperty("user.dir")) - println(s"userDir: $userDir") - - val volumeName = Algos.encode(Random.randomBytes(32)) - println(s"volumeName: $volumeName") - - val containerMountPath = userDir + "/encry/data" - println(s"containerMountPath: $containerMountPath") - - val node21 = dockerSingleton() - .startNodeInternal(Configs.mining(true) - .withFallback(Configs.nodeName("node21")) - .withFallback(Configs.offlineGeneration(false)) - .withFallback(Configs.knownPeers(Seq())) - .withFallback(defaultConf), - Some(volumeName, containerMountPath) - ) - - node1.connect(s"${node21.nodeIp}:9001").run - node21.connect(s"${node1.nodeIp}:9001").run - - node1.waitForFullHeight(5).run - - println("node21 try stop") - - node21.shutdown - Thread.sleep(5000) - docker.stopNode(node21, 5) - Thread.sleep(7000) - - println("node21 stopped") - - node1.waitForFullHeight(10).run - - println("node2 start again") - - val node22 = dockerSingleton() - .startNodeInternal(Configs.mining(true) - .withFallback(Configs.nodeName("node22")) - .withFallback(Configs.offlineGeneration(true)) - .withFallback(Configs.knownPeers(Seq())) - .withFallback(Configs.networkAddress("0.0.0.0:9002")) - .withFallback(Configs.apiAddress("0.0.0.0:9052")) - .withFallback(defaultConf), - Some(volumeName, containerMountPath) - ) - - println("node22 started") - - node1.waitForFullHeight(15).run - - println("connect again") - - node1.connect(s"${node22.nodeIp}:9002").run - node22.connect(s"${node1.nodeIp}:9001").run - - node1.waitForFullHeight(20).run - - println("try to sync") - - val (bestFullHeaderId1, bestFullHeaderId2) = - waitForEqualsId(node1.bestFullHeaderId.run, node22.bestFullHeaderId.run) - - bestFullHeaderId2 shouldEqual bestFullHeaderId1 - } - - def waitForEqualsId(id1Func: => String, id2Func: => String)(implicit duration: Duration): (String, String) = { - @tailrec - def loop(id1Func: => String, id2Func: => String, maxTries: Long): (String, String) = { - val id1: String = id1Func - val id2: String = id2Func - if (id1 != id2 && maxTries > 0) { - Thread.sleep(1000) - loop(id1Func, id2Func, maxTries - 1) - } else (id1, id2) - } - - loop(id1Func, id2Func, duration.toSeconds) - } -} diff --git a/it/src/test/scala/encry/it/forkResolving/SyncAfterNodeRestartTest.scala b/it/src/test/scala/encry/it/forkResolving/SyncAfterNodeRestartTest.scala new file mode 100644 index 0000000000..0ee23b67c4 --- /dev/null +++ b/it/src/test/scala/encry/it/forkResolving/SyncAfterNodeRestartTest.scala @@ -0,0 +1,96 @@ +package encry.it.forkResolving + +import java.nio.file.Paths + +import encry.it.configs.Configs +import encry.it.docker.Docker.defaultConf +import encry.it.docker.DockerAfterAll +import encry.it.util.WaitUtils._ +import encry.it.utils.FutureBlockedRun._ +import org.encryfoundation.common.utils.Algos +import org.scalatest.{AsyncFunSuite, Matchers} +import scorex.utils.Random + +import scala.concurrent.duration._ + +class SyncAfterNodeRestartTest extends AsyncFunSuite with Matchers with DockerAfterAll { + + implicit val futureDuration: FiniteDuration = 30 minutes + val heightSeparation = 10 //blocks + + test("Nodes should sync after restart with new offlineGeneration and port") { + val node1 = docker + .startNodeInternal(Configs.mining(true) + .withFallback(Configs.nodeName("node1")) + .withFallback(Configs.offlineGeneration(true)) + .withFallback(Configs.knownPeers(Seq())) + .withFallback(defaultConf) + ) + + val userDir = Paths.get(System.getProperty("user.dir")) + println(s"userDir: $userDir") + + val volumeName = Algos.encode(Random.randomBytes(32)) + println(s"volumeName: $volumeName") + + val containerMountPath = userDir + "/encry/data" + println(s"containerMountPath: $containerMountPath") + + val node21 = docker + .startNodeInternal(Configs.mining(true) + .withFallback(Configs.nodeName("node21")) + .withFallback(Configs.offlineGeneration(false)) + .withFallback(Configs.knownPeers(Seq())) + .withFallback(defaultConf), + Some(volumeName, containerMountPath) + ) + + node1.connect(s"${node21.nodeIp}:9001").run + node21.connect(s"${node1.nodeIp}:9001").run + + node1.waitForFullHeight(5).run + + println("node21 try stop") + + node21.shutdown + Thread.sleep(5000) + docker.stopNode(node21, 5) + Thread.sleep(7000) + + println("node21 stopped") + + node1.waitForFullHeight(10).run + + println("node2 start again") + + val node22 = docker + .startNodeInternal(Configs.mining(true) + .withFallback(Configs.nodeName("node22")) + .withFallback(Configs.offlineGeneration(true)) + .withFallback(Configs.knownPeers(Seq())) + .withFallback(Configs.networkAddress("0.0.0.0:9002")) + .withFallback(Configs.apiAddress("0.0.0.0:9052")) + .withFallback(defaultConf), + Some(volumeName, containerMountPath) + ) + + println("node22 started") + + node1.waitForFullHeight(15).run + + println("connect again") + + node1.connect(s"${node22.nodeIp}:9002").run + node22.connect(s"${node1.nodeIp}:9001").run + + node1.waitForFullHeight(20).run + + println("try to sync") + + val (bestFullHeaderId1, bestFullHeaderId2) = + waitForEqualsId(node1.bestFullHeaderId.run, node22.bestFullHeaderId.run) + + bestFullHeaderId2 shouldEqual bestFullHeaderId1 + } + +} diff --git a/it/src/test/scala/encry/it/forkResolving/SyncThreeNodesTest.scala b/it/src/test/scala/encry/it/forkResolving/SyncThreeNodesTest.scala new file mode 100644 index 0000000000..ca19d8028b --- /dev/null +++ b/it/src/test/scala/encry/it/forkResolving/SyncThreeNodesTest.scala @@ -0,0 +1,45 @@ +package encry.it.forkResolving + +import encry.it.configs.Configs +import encry.it.docker.Docker.defaultConf +import encry.it.docker.DockerAfterAll +import encry.it.util.WaitUtils._ +import encry.it.utils.FutureBlockedRun._ +import org.scalatest.{FunSuite, Matchers} + +import scala.concurrent.duration._ + +class SyncThreeNodesTest extends FunSuite with Matchers with DockerAfterAll { + + implicit val futureDuration: FiniteDuration = 30 minutes + val heightSeparation = 10 //blocks + + test("Late node should sync with the first of two nodes") { + + val miningNodeConfig = Configs.mining(true) + .withFallback(Configs.offlineGeneration(true)) + .withFallback(Configs.knownPeers(Seq())) + .withFallback(defaultConf) + + val node1 = docker + .startNodeInternal(miningNodeConfig.withFallback(Configs.nodeName("node1"))) + + val node2 = docker + .startNodeInternal(miningNodeConfig.withFallback(Configs.nodeName("node2"))) + + node1.waitForFullHeight(heightSeparation).run + + val node3 = docker + .startNodeInternal( + Configs.nodeName("node3") + .withFallback(Configs.mining(false)) + .withFallback(Configs.knownPeers(Seq((node1.nodeIp, 9001), (node2.nodeIp, 9001)))) + .withFallback(defaultConf) + ) + + val (bestFullHeaderId1, bestFullHeaderId3) = + waitForEqualsId(node1.bestFullHeaderId.run, node3.bestFullHeaderId.run) + + bestFullHeaderId3 shouldEqual bestFullHeaderId1 + } +} diff --git a/it/src/test/scala/encry/it/forkResolving/SyncTwoNodesTest.scala b/it/src/test/scala/encry/it/forkResolving/SyncTwoNodesTest.scala new file mode 100644 index 0000000000..8329cc98f4 --- /dev/null +++ b/it/src/test/scala/encry/it/forkResolving/SyncTwoNodesTest.scala @@ -0,0 +1,43 @@ +package encry.it.forkResolving + +import encry.it.configs.Configs +import encry.it.docker.Docker.defaultConf +import encry.it.docker.{Docker, DockerAfterAll} +import encry.it.util.WaitUtils._ +import encry.it.utils.FutureBlockedRun._ +import org.scalatest.{FunSuite, Matchers} + +import scala.concurrent.duration._ + +class SyncTwoNodesTest extends FunSuite with Matchers with DockerAfterAll { + + implicit val futureDuration: FiniteDuration = 30 minutes + val heightSeparation = 10 //blocks + + test("Late node should sync with one node") { + + val miningNodeConfig = Configs.mining(true) + .withFallback(Configs.offlineGeneration(true)) + .withFallback(Configs.knownPeers(Seq())) + .withFallback(Docker.defaultConf) + + val node1 = docker + .startNodeInternal(miningNodeConfig.withFallback(Configs.nodeName("node1"))) + + node1.waitForFullHeight(heightSeparation).run + + val node2 = docker + .startNodeInternal( + Configs.nodeName("node2") + .withFallback(Configs.mining(false)) + .withFallback(Configs.knownPeers(Seq((node1.nodeIp, 9001)))) + .withFallback(defaultConf) + ) + + val (bestFullHeaderId1, bestFullHeaderId2) = + waitForEqualsId(node1.bestFullHeaderId.run, node2.bestFullHeaderId.run) + + bestFullHeaderId2 shouldEqual bestFullHeaderId1 + } + +} diff --git a/it/src/test/scala/encry/it/forkResolving/TwoNodesSyncWithFirstTest.scala b/it/src/test/scala/encry/it/forkResolving/TwoNodesSyncWithFirstTest.scala new file mode 100644 index 0000000000..882e700b40 --- /dev/null +++ b/it/src/test/scala/encry/it/forkResolving/TwoNodesSyncWithFirstTest.scala @@ -0,0 +1,55 @@ +package encry.it.forkResolving + +import encry.it.configs.Configs +import encry.it.docker.Docker.defaultConf +import encry.it.docker.DockerAfterAll +import encry.it.util.WaitUtils._ +import org.scalatest.{FunSuite, Matchers} + +import scala.concurrent.duration._ +import scala.concurrent.{Await, Future} + +class TwoNodesSyncWithFirstTest extends FunSuite with Matchers with DockerAfterAll { + + implicit class FutureBlockedRun[T](future: Future[T]) { + def run(implicit duration: Duration): T = Await.result(future, duration) + } + + implicit val futureDuration: FiniteDuration = 30 minutes + val heightSeparation = 10 //blocks + + test("All nodes should go to first chain") { + + val miningNodeConfig = Configs.mining(true) + .withFallback(Configs.offlineGeneration(true)) + .withFallback(Configs.knownPeers(Seq())) + .withFallback(defaultConf) + + val node1 = docker + .startNodeInternal(miningNodeConfig.withFallback(Configs.nodeName("node1"))) + + node1.waitForFullHeight(heightSeparation).run + + val node2 = docker + .startNodeInternal(miningNodeConfig.withFallback(Configs.nodeName("node2"))) + + node2.waitForFullHeight(heightSeparation).run + + val node3 = docker + .startNodeInternal( + Configs.nodeName("node3") + .withFallback(Configs.mining(false)) + .withFallback(Configs.knownPeers(Seq((node1.nodeIp, 9001), (node2.nodeIp, 9001)))) + .withFallback(defaultConf) + ) + + val (bestFullHeaderId13, bestFullHeaderId3) = + waitForEqualsId(node1.bestFullHeaderId.run, node3.bestFullHeaderId.run) + + val (bestFullHeaderId12, bestFullHeaderId2) = + waitForEqualsId(node1.bestFullHeaderId.run, node2.bestFullHeaderId.run) + + bestFullHeaderId3 shouldEqual bestFullHeaderId13 + bestFullHeaderId2 shouldEqual bestFullHeaderId12 + } +} diff --git a/it/src/test/scala/encry/it/MinerWalletBalanceTest.scala b/it/src/test/scala/encry/it/miner/MinerWalletBalanceTest.scala similarity index 98% rename from it/src/test/scala/encry/it/MinerWalletBalanceTest.scala rename to it/src/test/scala/encry/it/miner/MinerWalletBalanceTest.scala index b383050961..666480ab2b 100644 --- a/it/src/test/scala/encry/it/MinerWalletBalanceTest.scala +++ b/it/src/test/scala/encry/it/miner/MinerWalletBalanceTest.scala @@ -1,4 +1,4 @@ -package encry.it +package encry.it.miner import com.typesafe.config.Config import encry.consensus.EncrySupplyController diff --git a/it/src/test/scala/encry/it/transactions/AssetTokenTransactionTest.scala b/it/src/test/scala/encry/it/transactions/AssetTokenTransactionTest.scala index 123f754f2c..dbe842be29 100644 --- a/it/src/test/scala/encry/it/transactions/AssetTokenTransactionTest.scala +++ b/it/src/test/scala/encry/it/transactions/AssetTokenTransactionTest.scala @@ -1,12 +1,12 @@ package encry.it.transactions -import TransactionGenerator.CreateTransaction import com.typesafe.config.Config import com.typesafe.scalalogging.StrictLogging import encry.consensus.EncrySupplyController import encry.it.configs.Configs import encry.it.docker.NodesFromDocker import encry.it.util.KeyHelper._ +import encry.it.utils.CreateTransaction import org.encryfoundation.common.crypto.{PrivateKey25519, PublicKey25519} import org.encryfoundation.common.modifiers.history.Block import org.encryfoundation.common.modifiers.mempool.transaction.EncryAddress.Address diff --git a/it/src/test/scala/encry/it/transactions/DataTransactionTest.scala b/it/src/test/scala/encry/it/transactions/DataTransactionTest.scala index 7388629245..1242d4eb92 100644 --- a/it/src/test/scala/encry/it/transactions/DataTransactionTest.scala +++ b/it/src/test/scala/encry/it/transactions/DataTransactionTest.scala @@ -1,11 +1,11 @@ package encry.it.transactions -import TransactionGenerator.CreateTransaction import com.typesafe.config.Config import com.typesafe.scalalogging.StrictLogging import encry.it.configs.Configs import encry.it.docker.NodesFromDocker import encry.it.util.KeyHelper._ +import encry.it.utils.CreateTransaction import org.encryfoundation.common.crypto.PrivateKey25519 import org.encryfoundation.common.modifiers.history.Block import org.encryfoundation.common.modifiers.mempool.transaction.{PubKeyLockedContract, Transaction} @@ -13,6 +13,7 @@ import org.encryfoundation.common.modifiers.state.box.{AssetBox, EncryBaseBox} import org.scalatest.concurrent.ScalaFutures import org.scalatest.{AsyncFunSuite, Matchers} import scorex.utils.Random + import scala.concurrent.{Await, Future} import scala.concurrent.duration._ diff --git a/it/src/test/scala/encry/it/transactions/ProcessingTransferTransactionWithEncryCoinsTest.scala b/it/src/test/scala/encry/it/transactions/ProcessingTransferTransactionWithEncryCoinsTest.scala index 9c123ebfd7..6463e9ddba 100644 --- a/it/src/test/scala/encry/it/transactions/ProcessingTransferTransactionWithEncryCoinsTest.scala +++ b/it/src/test/scala/encry/it/transactions/ProcessingTransferTransactionWithEncryCoinsTest.scala @@ -1,6 +1,6 @@ package encry.it.transactions -import TransactionGenerator.CreateTransaction +import encry.it.utils.CreateTransaction import com.typesafe.config.Config import com.typesafe.scalalogging.StrictLogging import encry.consensus.EncrySupplyController diff --git a/it/src/test/scala/encry/it/utils/FutureBlockedRun.scala b/it/src/test/scala/encry/it/utils/FutureBlockedRun.scala new file mode 100644 index 0000000000..d5f81fb452 --- /dev/null +++ b/it/src/test/scala/encry/it/utils/FutureBlockedRun.scala @@ -0,0 +1,12 @@ +package encry.it.utils + +import scala.concurrent.{Await, Future} +import scala.concurrent.duration.Duration + +object FutureBlockedRun { + + implicit class FutureBlockedRun[T](future: Future[T]) { + def run(implicit duration: Duration): T = Await.result(future, duration) + } + +} diff --git a/it/src/test/scala/TransactionGenerator/TransactionsUtil.scala b/it/src/test/scala/encry/it/utils/TransactionsUtil.scala similarity index 99% rename from it/src/test/scala/TransactionGenerator/TransactionsUtil.scala rename to it/src/test/scala/encry/it/utils/TransactionsUtil.scala index 7bb546a1fd..057f5a029e 100644 --- a/it/src/test/scala/TransactionGenerator/TransactionsUtil.scala +++ b/it/src/test/scala/encry/it/utils/TransactionsUtil.scala @@ -1,4 +1,4 @@ -package TransactionGenerator +package encry.it.utils import com.google.common.primitives.{Bytes, Longs} import com.typesafe.scalalogging.StrictLogging From 39e49a5efeb0e22ef24bf6a44460c13baba442c7 Mon Sep 17 00:00:00 2001 From: capdev Date: Thu, 5 Sep 2019 15:27:01 +0500 Subject: [PATCH 17/51] cleanup debug info --- .../SyncAfterNodeRestartTest.scala | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/it/src/test/scala/encry/it/forkResolving/SyncAfterNodeRestartTest.scala b/it/src/test/scala/encry/it/forkResolving/SyncAfterNodeRestartTest.scala index 0ee23b67c4..0fea5dd3c9 100644 --- a/it/src/test/scala/encry/it/forkResolving/SyncAfterNodeRestartTest.scala +++ b/it/src/test/scala/encry/it/forkResolving/SyncAfterNodeRestartTest.scala @@ -16,7 +16,6 @@ import scala.concurrent.duration._ class SyncAfterNodeRestartTest extends AsyncFunSuite with Matchers with DockerAfterAll { implicit val futureDuration: FiniteDuration = 30 minutes - val heightSeparation = 10 //blocks test("Nodes should sync after restart with new offlineGeneration and port") { val node1 = docker @@ -28,13 +27,8 @@ class SyncAfterNodeRestartTest extends AsyncFunSuite with Matchers with DockerAf ) val userDir = Paths.get(System.getProperty("user.dir")) - println(s"userDir: $userDir") - val volumeName = Algos.encode(Random.randomBytes(32)) - println(s"volumeName: $volumeName") - val containerMountPath = userDir + "/encry/data" - println(s"containerMountPath: $containerMountPath") val node21 = docker .startNodeInternal(Configs.mining(true) @@ -50,19 +44,13 @@ class SyncAfterNodeRestartTest extends AsyncFunSuite with Matchers with DockerAf node1.waitForFullHeight(5).run - println("node21 try stop") - node21.shutdown Thread.sleep(5000) docker.stopNode(node21, 5) Thread.sleep(7000) - println("node21 stopped") - node1.waitForFullHeight(10).run - println("node2 start again") - val node22 = docker .startNodeInternal(Configs.mining(true) .withFallback(Configs.nodeName("node22")) @@ -74,19 +62,13 @@ class SyncAfterNodeRestartTest extends AsyncFunSuite with Matchers with DockerAf Some(volumeName, containerMountPath) ) - println("node22 started") - node1.waitForFullHeight(15).run - println("connect again") - node1.connect(s"${node22.nodeIp}:9002").run node22.connect(s"${node1.nodeIp}:9001").run node1.waitForFullHeight(20).run - println("try to sync") - val (bestFullHeaderId1, bestFullHeaderId2) = waitForEqualsId(node1.bestFullHeaderId.run, node22.bestFullHeaderId.run) From b3f932524e82df5beea32ae65b3e829ea8ca2df2 Mon Sep 17 00:00:00 2001 From: capdev Date: Thu, 5 Sep 2019 19:12:29 +0500 Subject: [PATCH 18/51] constant class name should be passed through application.conf --- benchmarks/src/test/scala/benches/Utils.scala | 14 +++++----- it/src/main/scala/encry/it/docker/Node.scala | 5 ++-- .../encry/it/MinerWalletBalanceTest.scala | 5 ++-- .../AssetTokenTransactionTest.scala | 4 +-- ...ransferTransactionWithEncryCoinsTest.scala | 4 +-- src/main/scala/encry/EncryApp.scala | 5 +++- .../encry/api/http/routes/InfoApiRoute.scala | 4 +-- .../consensus/ConsensusSchemeReaders.scala | 8 +++--- .../consensus/EncrySupplyController.scala | 14 +++++----- .../encry/consensus/EquihashPowScheme.scala | 8 +++--- .../encry/consensus/PowLinearController.scala | 4 +-- src/main/scala/encry/local/miner/Miner.scala | 10 +++---- src/main/scala/encry/local/miner/Worker.scala | 4 +-- .../encry/modifiers/history/HeaderUtils.scala | 10 +++---- .../modifiers/history/PayloadUtils.scala | 6 ++-- .../encry/settings/EncryAppSettings.scala | 8 ++++-- .../scala/encry/settings/MainConstants.scala | 25 +++++++++++++++++ .../encry/settings/NodeSettingsReader.scala | 1 + .../scala/encry/settings/TestConstants.scala | 2 +- .../scala/encry/utils/BalanceCalculator.scala | 4 +-- .../scala/encry/view/ModifiersCache.scala | 8 +++--- .../view/history/BlockDownloadProcessor.scala | 8 +++--- .../scala/encry/view/history/HistoryApi.scala | 28 +++++++++---------- .../encry/view/history/HistoryDBApi.scala | 10 +++---- .../history/HistoryModifiersProcessors.scala | 6 ++-- .../history/HistoryModifiersValidator.scala | 10 +++---- .../scala/encry/view/state/UtxoState.scala | 18 ++++++------ .../consensus/PowLinearControllerSpec.scala | 8 +++--- .../emission/EncrySupplyControllerTest.scala | 10 +++---- .../encry/modifiers/InstanceFactory.scala | 9 +++--- .../history/BlockSerializerTest.scala | 5 ++-- .../DownloadedModifiersValidatorTests.scala | 7 +++-- .../scala/encry/utils/EncryGenerator.scala | 9 +++--- .../encry/view/state/UtxoStateSpec.scala | 10 +++---- .../scala/encry/view/wallet/WalletSpec.scala | 7 ++--- 35 files changed, 167 insertions(+), 131 deletions(-) create mode 100644 src/main/scala/encry/settings/MainConstants.scala diff --git a/benchmarks/src/test/scala/benches/Utils.scala b/benchmarks/src/test/scala/benches/Utils.scala index b48fe50693..419dda32f3 100644 --- a/benchmarks/src/test/scala/benches/Utils.scala +++ b/benchmarks/src/test/scala/benches/Utils.scala @@ -25,7 +25,7 @@ import org.encryfoundation.common.modifiers.mempool.transaction._ import org.encryfoundation.common.modifiers.state.box.Box.Amount import org.encryfoundation.common.modifiers.state.box.{AssetBox, EncryProposition, MonetaryBox} import org.encryfoundation.common.utils.TaggedTypes._ -import org.encryfoundation.common.utils.constants.TestNetConstants +import encry.settings.MainConstants.constants import org.encryfoundation.prismlang.core.wrapped.BoxedValue import org.iq80.leveldb.Options import scorex.crypto.hash.{Blake2b256, Digest32} @@ -66,13 +66,13 @@ object Utils extends StrictLogging { val txs = Seq(coinbaseTransaction(0)) val header = genHeader.copy( parentId = Header.GenesisParentId, - height = TestNetConstants.GenesisHeight + height = constants.GenesisHeight ) Block(header, Payload(header.id, txs)) } def generateGenesisBlockValidForHistory: Block = { - val header = genHeader.copy(parentId = Header.GenesisParentId, height = TestNetConstants.GenesisHeight) + val header = genHeader.copy(parentId = Header.GenesisParentId, height = constants.GenesisHeight) Block(header, Payload(header.id, Seq(coinbaseTransaction))) } @@ -150,7 +150,7 @@ object Utils extends StrictLogging { val previousHeaderId: ModifierId = prevBlock.map(_.id).getOrElse(Header.GenesisParentId) val requiredDifficulty: Difficulty = prevBlock.map(b => history.requiredDifficultyAfter(b.header).getOrElse(Difficulty @@ BigInt(0))) - .getOrElse(TestNetConstants.InitialDifficulty) + .getOrElse(constants.InitialDifficulty) val header = genHeader.copy( parentId = previousHeaderId, height = history.getBestHeaderHeight + 1, @@ -180,7 +180,7 @@ object Utils extends StrictLogging { val storage = settings.storage.state match { case VersionalStorage.IODB => logger.info("Init state with iodb storage") - IODBWrapper(new LSMStore(dir, keepVersions = TestNetConstants.DefaultKeepVersions)) + IODBWrapper(new LSMStore(dir, keepVersions = constants.DefaultKeepVersions)) case VersionalStorage.LevelDB => logger.info("Init state with levelDB storage") val levelDBInit = LevelDbFactory.factory.open(dir, new Options) @@ -194,7 +194,7 @@ object Utils extends StrictLogging { new UtxoState( storage, - TestNetConstants.PreGenesisHeight, + constants.PreGenesisHeight, 0L, ) } @@ -214,7 +214,7 @@ object Utils extends StrictLogging { Math.abs(random.nextLong()), Math.abs(random.nextInt(10000)), random.nextLong(), - TestNetConstants.InitialDifficulty, + constants.InitialDifficulty, EquihashSolution(Seq(1, 3)) ) } diff --git a/it/src/main/scala/encry/it/docker/Node.scala b/it/src/main/scala/encry/it/docker/Node.scala index b8275a8ddf..b989a40f27 100644 --- a/it/src/main/scala/encry/it/docker/Node.scala +++ b/it/src/main/scala/encry/it/docker/Node.scala @@ -10,7 +10,8 @@ import encry.it.util.KeyHelper.createPrivKey import encry.settings.EncryAppSettings import org.asynchttpclient._ import org.encryfoundation.common.crypto.{PrivateKey25519, PublicKey25519} -import org.encryfoundation.common.utils.constants.TestNetConstants + +import encry.settings.MainConstants.constants import scala.concurrent.duration.FiniteDuration @@ -47,6 +48,6 @@ object Node { def publicKeyStr: String = n.publicKey.toString - def blockDelay: FiniteDuration = TestNetConstants.DesiredBlockInterval + def blockDelay: FiniteDuration = constants.DesiredBlockInterval } } diff --git a/it/src/test/scala/encry/it/MinerWalletBalanceTest.scala b/it/src/test/scala/encry/it/MinerWalletBalanceTest.scala index b383050961..11e46863bb 100644 --- a/it/src/test/scala/encry/it/MinerWalletBalanceTest.scala +++ b/it/src/test/scala/encry/it/MinerWalletBalanceTest.scala @@ -6,9 +6,8 @@ import encry.it.configs.Configs import encry.it.docker.NodesFromDocker import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.Height -import org.encryfoundation.common.utils.constants.TestNetConstants import org.scalatest.{AsyncFunSuite, Matchers} - +import encry.settings.MainConstants.constants import scala.concurrent.Await import scala.concurrent.duration._ @@ -29,7 +28,7 @@ class MinerWalletBalanceTest extends AsyncFunSuite with Matchers with NodesFromD Await.result(height, 30.minutes) height map { _ => val res = Await.result(dockerNodes().head.balances, 30.minutes) - .find(_._1 == Algos.encode(TestNetConstants.IntrinsicTokenId)) + .find(_._1 == Algos.encode(constants.IntrinsicTokenId)) .map(_._2 == supplyAtHeight) .get docker.close() diff --git a/it/src/test/scala/encry/it/transactions/AssetTokenTransactionTest.scala b/it/src/test/scala/encry/it/transactions/AssetTokenTransactionTest.scala index 123f754f2c..130045c8e3 100644 --- a/it/src/test/scala/encry/it/transactions/AssetTokenTransactionTest.scala +++ b/it/src/test/scala/encry/it/transactions/AssetTokenTransactionTest.scala @@ -15,7 +15,7 @@ import org.encryfoundation.common.modifiers.state.box.TokenIssuingBox.TokenId import org.encryfoundation.common.modifiers.state.box.{AssetBox, EncryBaseBox, TokenIssuingBox} import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.Height -import org.encryfoundation.common.utils.constants.TestNetConstants +import encry.settings.MainConstants.constants import org.scalatest.concurrent.ScalaFutures import org.scalatest.{AsyncFunSuite, Matchers} import scorex.crypto.signatures.Curve25519 @@ -135,7 +135,7 @@ class AssetTokenTransactionTest extends AsyncFunSuite } val ckeckEncryBalanceNew: Boolean = Await.result(dockerNodes().head.balances, waitTime) - .find(_._1 == Algos.encode(TestNetConstants.IntrinsicTokenId)) + .find(_._1 == Algos.encode(constants.IntrinsicTokenId)) .map(_._2 == supplyAtHeight - amount) .get diff --git a/it/src/test/scala/encry/it/transactions/ProcessingTransferTransactionWithEncryCoinsTest.scala b/it/src/test/scala/encry/it/transactions/ProcessingTransferTransactionWithEncryCoinsTest.scala index 9c123ebfd7..76409d2921 100644 --- a/it/src/test/scala/encry/it/transactions/ProcessingTransferTransactionWithEncryCoinsTest.scala +++ b/it/src/test/scala/encry/it/transactions/ProcessingTransferTransactionWithEncryCoinsTest.scala @@ -14,7 +14,7 @@ import org.encryfoundation.common.modifiers.mempool.transaction.Transaction import org.encryfoundation.common.modifiers.state.box.{AssetBox, EncryBaseBox} import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.Height -import org.encryfoundation.common.utils.constants.TestNetConstants +import encry.settings.MainConstants.constants import org.scalatest.concurrent.ScalaFutures import org.scalatest.{AsyncFunSuite, Matchers} import scorex.crypto.signatures.Curve25519 @@ -65,7 +65,7 @@ class ProcessingTransferTransactionWithEncryCoinsTest extends AsyncFunSuite Await.result(dockerNodes().head.waitForHeadersHeight(secondHeightToWait), waitTime) val checkBalance: Boolean = Await.result(dockerNodes().head.balances, waitTime) - .find(_._1 == Algos.encode(TestNetConstants.IntrinsicTokenId)) + .find(_._1 == Algos.encode(constants.IntrinsicTokenId)) .map(_._2 == supplyAtHeight - amount) .get diff --git a/src/main/scala/encry/EncryApp.scala b/src/main/scala/encry/EncryApp.scala index ba761db356..11127f3726 100644 --- a/src/main/scala/encry/EncryApp.scala +++ b/src/main/scala/encry/EncryApp.scala @@ -1,6 +1,7 @@ package encry import java.net.InetAddress + import akka.actor.SupervisorStrategy.Restart import akka.actor.{ActorRef, ActorSystem, OneForOneStrategy, Props} import akka.http.scaladsl.Http @@ -15,7 +16,7 @@ import encry.cli.ConsoleListener.StartListening import encry.local.miner.Miner import encry.local.miner.Miner.StartMining import encry.network._ -import encry.settings.EncryAppSettings +import encry.settings.{EncryAppSettings, MainConstants} import encry.stats.{StatsSender, Zombie} import encry.utils.NetworkTimeProvider import encry.view.NodeViewHolder @@ -24,10 +25,12 @@ import kamon.Kamon import kamon.influxdb.InfluxDBReporter import kamon.system.SystemMetrics import org.encryfoundation.common.utils.Algos + import scala.concurrent.{Await, ExecutionContextExecutor} import scala.concurrent.duration._ import scala.io.Source import scala.language.postfixOps +import org.encryfoundation.common.utils.constants.Constants object EncryApp extends App with StrictLogging { diff --git a/src/main/scala/encry/api/http/routes/InfoApiRoute.scala b/src/main/scala/encry/api/http/routes/InfoApiRoute.scala index c6ee50eaed..932135608e 100644 --- a/src/main/scala/encry/api/http/routes/InfoApiRoute.scala +++ b/src/main/scala/encry/api/http/routes/InfoApiRoute.scala @@ -13,7 +13,7 @@ import io.circe.Json import io.circe.syntax._ import org.encryfoundation.common.modifiers.history.{Block, Header} import org.encryfoundation.common.utils.Algos -import org.encryfoundation.common.utils.constants.TestNetConstants +import encry.settings.MainConstants.constants import scala.concurrent.Future case class InfoApiRoute(dataHolder: ActorRef, @@ -90,7 +90,7 @@ object InfoApiRoute { "bestFullHeaderId" -> block.map(_.encodedId).getOrElse("").asJson, "previousFullHeaderId" -> prevFullHeaderId.asJson, "difficulty" -> block.map(_.header.difficulty.toString) - .getOrElse(TestNetConstants.InitialDifficulty.toString).asJson, + .getOrElse(constants.InitialDifficulty.toString).asJson, "unconfirmedCount" -> mempoolSize.asJson, "stateType" -> stateType.asJson, "stateVersion" -> stateVersion.asJson, diff --git a/src/main/scala/encry/consensus/ConsensusSchemeReaders.scala b/src/main/scala/encry/consensus/ConsensusSchemeReaders.scala index 3806da0203..ba651287ef 100644 --- a/src/main/scala/encry/consensus/ConsensusSchemeReaders.scala +++ b/src/main/scala/encry/consensus/ConsensusSchemeReaders.scala @@ -1,11 +1,11 @@ package encry.consensus -import org.encryfoundation.common.utils.constants.TestNetConstants +import encry.settings.MainConstants.constants object ConsensusSchemeReaders { val consensusScheme: ConsensusScheme = { - val schemeName = TestNetConstants.ConsensusScheme + val schemeName = constants.ConsensusScheme Seq(EquihashPowSchemeReader).find(_.schemeName == schemeName) .getOrElse(EquihashPowSchemeReader) .read @@ -22,8 +22,8 @@ object EquihashPowSchemeReader extends ConsensusSchemeReader[EquihashPowScheme] val schemeName = "equihash" def read: EquihashPowScheme = { - val n = TestNetConstants.n - val k = TestNetConstants.k + val n = constants.n + val k = constants.k EquihashPowScheme(n, k) } } diff --git a/src/main/scala/encry/consensus/EncrySupplyController.scala b/src/main/scala/encry/consensus/EncrySupplyController.scala index 4cc6ae91d9..c72e1cc8dd 100644 --- a/src/main/scala/encry/consensus/EncrySupplyController.scala +++ b/src/main/scala/encry/consensus/EncrySupplyController.scala @@ -1,16 +1,16 @@ package encry.consensus -import org.encryfoundation.common.utils.constants.TestNetConstants +import encry.settings.MainConstants.constants import org.encryfoundation.common.modifiers.state.box.Box.Amount import org.encryfoundation.common.utils.TaggedTypes.Height object EncrySupplyController { - def supplyAt(height: Height): Amount = if (height > TestNetConstants.EmissionEpochLength){ + def supplyAt(height: Height): Amount = if (height > constants.EmissionEpochLength){ val multiptlyIterQty: Int = - if (height % TestNetConstants.EmissionEpochLength == 0) - Math.round(height / TestNetConstants.EmissionEpochLength) + 1 - else Math.round(height / TestNetConstants.EmissionEpochLength) - (TestNetConstants.InitialEmissionAmount * Math.pow(1 - TestNetConstants.EmissionDecay, multiptlyIterQty)).toLong - } else TestNetConstants.InitialEmissionAmount + if (height % constants.EmissionEpochLength == 0) + Math.round(height / constants.EmissionEpochLength) + 1 + else Math.round(height / constants.EmissionEpochLength) + (constants.InitialEmissionAmount * Math.pow(1 - constants.EmissionDecay, multiptlyIterQty)).toLong + } else constants.InitialEmissionAmount } \ No newline at end of file diff --git a/src/main/scala/encry/consensus/EquihashPowScheme.scala b/src/main/scala/encry/consensus/EquihashPowScheme.scala index f4ee0c81a6..1e1e23a01e 100644 --- a/src/main/scala/encry/consensus/EquihashPowScheme.scala +++ b/src/main/scala/encry/consensus/EquihashPowScheme.scala @@ -2,7 +2,7 @@ package encry.consensus import com.google.common.primitives.Chars import encry.crypto.equihash.{Equihash, EquihashValidationErrors} -import org.encryfoundation.common.utils.constants.TestNetConstants +import encry.settings.MainConstants.constants import org.bouncycastle.crypto.digests.Blake2bDigest import org.encryfoundation.common.crypto.equihash.EquihashSolution import org.encryfoundation.common.modifiers.history.{Block, Header, Payload} @@ -21,10 +21,10 @@ case class EquihashPowScheme(n: Char, k: Char) extends ConsensusScheme { override def verifyCandidate(candidateBlock: CandidateBlock, startingNonce: Long): Either[EquihashValidationErrors, Block] = { val difficulty = candidateBlock.difficulty - val version: Byte = TestNetConstants.Version + val version: Byte = constants.Version val parentId: ModifierId = candidateBlock.parentOpt.map(_.id).getOrElse(Header.GenesisParentId) val txsRoot: Digest32 = Payload.rootHash(candidateBlock.transactions.map(_.id)) - val height: Int = candidateBlock.parentOpt.map(_.height).getOrElse(TestNetConstants.PreGenesisHeight) + 1 + val height: Int = candidateBlock.parentOpt.map(_.height).getOrElse(constants.PreGenesisHeight) + 1 val bytesPerWord: Int = n / 8 val wordsPerHash: Int = 512 / n val digest: Blake2bDigest = new Blake2bDigest(null, bytesPerWord * wordsPerHash, null, seed) @@ -61,7 +61,7 @@ case class EquihashPowScheme(n: Char, k: Char) extends ConsensusScheme { .validateSolution(n, k, seed, Equihash.nonceToLeBytes(header.nonce), header.equihashSolution.indexedSeq) override def realDifficulty(header: Header): Difficulty = - Difficulty @@ (TestNetConstants.MaxTarget / BigInt(1, header.powHash)) + Difficulty @@ (constants.MaxTarget / BigInt(1, header.powHash)) override def toString: String = s"EquihashPowScheme(n = ${n.toInt}, k = ${k.toInt})" } \ No newline at end of file diff --git a/src/main/scala/encry/consensus/PowLinearController.scala b/src/main/scala/encry/consensus/PowLinearController.scala index 9202409cf5..3f5b3ba379 100644 --- a/src/main/scala/encry/consensus/PowLinearController.scala +++ b/src/main/scala/encry/consensus/PowLinearController.scala @@ -1,13 +1,13 @@ package encry.consensus -import org.encryfoundation.common.utils.constants.TestNetConstants +import encry.settings.MainConstants.constants import org.encryfoundation.common.modifiers.history.Header import org.encryfoundation.common.utils.TaggedTypes.{Difficulty, Height} import supertagged.@@ object PowLinearController { - private val chainParams = TestNetConstants + private val chainParams = constants val PrecisionConstant: Int = 1000000000 diff --git a/src/main/scala/encry/local/miner/Miner.scala b/src/main/scala/encry/local/miner/Miner.scala index f26c9ca4bc..ef4c784ec6 100644 --- a/src/main/scala/encry/local/miner/Miner.scala +++ b/src/main/scala/encry/local/miner/Miner.scala @@ -30,7 +30,7 @@ import org.encryfoundation.common.modifiers.mempool.transaction.Transaction import org.encryfoundation.common.modifiers.state.box.Box.Amount import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.{Difficulty, Height, ModifierId} -import org.encryfoundation.common.utils.constants.TestNetConstants +import encry.settings.MainConstants.constants import scala.collection._ import scala.concurrent.duration._ @@ -48,7 +48,7 @@ class Miner(dataHolder: ActorRef, influx: Option[ActorRef]) extends Actor with S var candidateOpt: Option[CandidateBlock] = None var syncingDone: Boolean = settings.node.offlineGeneration val numberOfWorkers: Int = settings.node.numberOfMiningWorkers - val powScheme: EquihashPowScheme = EquihashPowScheme(TestNetConstants.n, TestNetConstants.k) + val powScheme: EquihashPowScheme = EquihashPowScheme(constants.n, constants.k) var transactionsPool: IndexedSeq[Transaction] = IndexedSeq.empty[Transaction] override def preStart(): Unit = { @@ -163,7 +163,7 @@ class Miner(dataHolder: ActorRef, influx: Option[ActorRef]) extends Actor with S } else usedInputsIds -> acc }._2 val timestamp: Time = timeProvider.estimatedTime - val height: Height = Height @@ (bestHeaderOpt.map(_.height).getOrElse(TestNetConstants.PreGenesisHeight) + 1) + val height: Height = Height @@ (bestHeaderOpt.map(_.height).getOrElse(constants.PreGenesisHeight) + 1) val feesTotal: Amount = filteredTxsWithoutDuplicateInputs.map(_.fee).sum val supplyTotal: Amount = EncrySupplyController.supplyAt(view.state.height) val minerSecret: PrivateKey25519 = view.vault.accountManager.mandatoryAccount @@ -176,10 +176,10 @@ class Miner(dataHolder: ActorRef, influx: Option[ActorRef]) extends Actor with S case Right(value) => value case Left(value) => EncryApp.forceStopApplication(999, value.toString) }) - .getOrElse(TestNetConstants.InitialDifficulty) + .getOrElse(constants.InitialDifficulty) val candidate: CandidateBlock = - CandidateBlock(bestHeaderOpt, TestNetConstants.Version, txs, timestamp, difficulty) + CandidateBlock(bestHeaderOpt, constants.Version, txs, timestamp, difficulty) logger.info(s"Sending candidate block with ${candidate.transactions.length - 1} transactions " + s"and 1 coinbase for height $height.") diff --git a/src/main/scala/encry/local/miner/Worker.scala b/src/main/scala/encry/local/miner/Worker.scala index 862205798b..06e629baeb 100644 --- a/src/main/scala/encry/local/miner/Worker.scala +++ b/src/main/scala/encry/local/miner/Worker.scala @@ -12,7 +12,7 @@ import encry.local.miner.Worker.{MineBlock, NextChallenge} import java.text.SimpleDateFormat import com.typesafe.scalalogging.StrictLogging -import org.encryfoundation.common.utils.constants.TestNetConstants +import encry.settings.MainConstants.constants class Worker(myIdx: Int, numberOfWorkers: Int) extends Actor with StrictLogging { @@ -43,7 +43,7 @@ class Worker(myIdx: Int, numberOfWorkers: Int) extends Actor with StrictLogging case NextChallenge(candidate: CandidateBlock) => challengeStartTime = new Date(System.currentTimeMillis()) logger.info(s"Start next challenge on worker: $myIdx at height " + - s"${candidate.parentOpt.map(_.height + 1).getOrElse(TestNetConstants.PreGenesisHeight.toString)} at ${sdf.format(challengeStartTime)}") + s"${candidate.parentOpt.map(_.height + 1).getOrElse(constants.PreGenesisHeight.toString)} at ${sdf.format(challengeStartTime)}") self ! MineBlock(candidate, Long.MaxValue / numberOfWorkers * myIdx) } diff --git a/src/main/scala/encry/modifiers/history/HeaderUtils.scala b/src/main/scala/encry/modifiers/history/HeaderUtils.scala index e63d4fb06f..96096fa69e 100644 --- a/src/main/scala/encry/modifiers/history/HeaderUtils.scala +++ b/src/main/scala/encry/modifiers/history/HeaderUtils.scala @@ -2,7 +2,7 @@ package encry.modifiers.history import encry.settings.TestConstants import org.encryfoundation.common.modifiers.history.Header -import org.encryfoundation.common.utils.constants.TestNetConstants +import encry.settings.MainConstants.constants import org.encryfoundation.common.validation.{ModifierValidator, ValidationResult} object HeaderUtils { @@ -10,10 +10,10 @@ object HeaderUtils { def syntacticallyValidity(header: Header): ValidationResult = ModifierValidator.accumulateErrors .demand(header.modifierTypeId == Header.modifierTypeId, s"Modifier's type id should be ${Header.modifierTypeId}") - .demand(header.id.size == TestNetConstants.ModifierIdSize, - s"Modifier's id should be ${TestNetConstants.ModifierIdSize} bytes") - .demand(header.parentId.size == TestNetConstants.ModifierIdSize, - s"Parent's id should be ${TestNetConstants.ModifierIdSize} bytes") + .demand(header.id.size == constants.ModifierIdSize, + s"Modifier's id should be ${constants.ModifierIdSize} bytes") + .demand(header.parentId.size == constants.ModifierIdSize, + s"Parent's id should be ${constants.ModifierIdSize} bytes") .demand(header.transactionsRoot.size == TestConstants.TransactionsRootSize, s"TransactionsRoot's size should be ${TestConstants.TransactionsRootSize} bytes") .result diff --git a/src/main/scala/encry/modifiers/history/PayloadUtils.scala b/src/main/scala/encry/modifiers/history/PayloadUtils.scala index e7050b2494..eb2174f439 100644 --- a/src/main/scala/encry/modifiers/history/PayloadUtils.scala +++ b/src/main/scala/encry/modifiers/history/PayloadUtils.scala @@ -1,7 +1,7 @@ package encry.modifiers.history import org.encryfoundation.common.modifiers.history.Payload -import org.encryfoundation.common.utils.constants.TestNetConstants +import encry.settings.MainConstants.constants import org.encryfoundation.common.validation.{ModifierValidator, ValidationResult} object PayloadUtils { @@ -10,7 +10,7 @@ object PayloadUtils { def syntacticallyValidity(payload: Payload): ValidationResult = ModifierValidator.accumulateErrors .demand(payload.modifierTypeId == Payload.modifierTypeId, s"Modifier's type id should be ${Payload.modifierTypeId}") - .demand(payload.headerId.size == TestNetConstants.ModifierIdSize, - s"Modifier's id should be ${TestNetConstants.ModifierIdSize} bytes") + .demand(payload.headerId.size == constants.ModifierIdSize, + s"Modifier's id should be ${constants.ModifierIdSize} bytes") .result } \ No newline at end of file diff --git a/src/main/scala/encry/settings/EncryAppSettings.scala b/src/main/scala/encry/settings/EncryAppSettings.scala index 25e99e8a72..f53805c7e8 100644 --- a/src/main/scala/encry/settings/EncryAppSettings.scala +++ b/src/main/scala/encry/settings/EncryAppSettings.scala @@ -2,6 +2,7 @@ package encry.settings import java.io.File import java.net.InetSocketAddress + import com.typesafe.scalalogging.StrictLogging import com.typesafe.config.{Config, ConfigFactory} import encry.EncryApp @@ -9,6 +10,8 @@ import encry.storage.VersionalStorage.StorageType import encry.utils.NetworkTimeProviderSettings import net.ceedubs.ficus.Ficus._ import net.ceedubs.ficus.readers.ArbitraryTypeReader._ +import org.encryfoundation.common.utils.constants.{Constants, TestNetConstants} + import scala.concurrent.duration.FiniteDuration final case class EncryAppSettings(directory: String, @@ -27,7 +30,6 @@ final case class EncryAppSettings(directory: String, object EncryAppSettings extends SettingsReaders with NodeSettingsReader with StrictLogging { val configPath: String = "encry" - val read: EncryAppSettings = ConfigFactory.load("local.conf") .withFallback(ConfigFactory.load()).as[EncryAppSettings](configPath) @@ -93,6 +95,7 @@ object EncryAppSettings extends SettingsReaders with NodeSettingsReader with Str private def failWithError(msg: String): Nothing = EncryApp.forceStopApplication(errorMessage = s"Stop application due to malformed configuration file: $msg") + } final case class StorageSettings(history: StorageType, state: StorageType) @@ -139,4 +142,5 @@ final case class NodeSettings(blocksToKeep: Int, numberOfMiningWorkers: Int, miningDelay: FiniteDuration, offlineGeneration: Boolean, - useCli: Boolean) + useCli: Boolean, + constantsClass: Option[String]) diff --git a/src/main/scala/encry/settings/MainConstants.scala b/src/main/scala/encry/settings/MainConstants.scala new file mode 100644 index 0000000000..80a30823cf --- /dev/null +++ b/src/main/scala/encry/settings/MainConstants.scala @@ -0,0 +1,25 @@ +package encry.settings + +import com.typesafe.config.{Config, ConfigFactory} +import org.encryfoundation.common.utils.constants.{Constants, TestNetConstants} + +object MainConstants { + + val keyPath = "encry.node.constantsClass" + lazy val config: Config = ConfigFactory.load() + lazy val constants: Constants = getConstants( + if(config.hasPath(keyPath)) config.getString(keyPath) else "" + ) + + def getConstants(constantsClass: String): Constants = { + constantsClass match { + case "TestConstants" => + println("TestConstants") + TestConstants + case _ => + println("TestNetConstants") + TestNetConstants + } + } + +} \ No newline at end of file diff --git a/src/main/scala/encry/settings/NodeSettingsReader.scala b/src/main/scala/encry/settings/NodeSettingsReader.scala index 4d4212d42d..85e3556f7e 100644 --- a/src/main/scala/encry/settings/NodeSettingsReader.scala +++ b/src/main/scala/encry/settings/NodeSettingsReader.scala @@ -15,5 +15,6 @@ trait NodeSettingsReader { cfg.as[FiniteDuration](s"$path.miningDelay"), cfg.as[Boolean](s"$path.offlineGeneration"), cfg.as[Boolean](s"$path.useCli"), + cfg.as[Option[String]](s"$path.constantsClass"), ) } \ No newline at end of file diff --git a/src/main/scala/encry/settings/TestConstants.scala b/src/main/scala/encry/settings/TestConstants.scala index fda5691ec4..a0b7481cfa 100644 --- a/src/main/scala/encry/settings/TestConstants.scala +++ b/src/main/scala/encry/settings/TestConstants.scala @@ -53,7 +53,7 @@ case object TestConstants extends Constants { val NewHeaderTimeMultiplier: Int = 5 - val RetargetingEpochsQty: Int = 4 + val RetargetingEpochsQty: Int = 2 val EpochLength: Int = 100 diff --git a/src/main/scala/encry/utils/BalanceCalculator.scala b/src/main/scala/encry/utils/BalanceCalculator.scala index 6a23a0b330..25372f7e80 100644 --- a/src/main/scala/encry/utils/BalanceCalculator.scala +++ b/src/main/scala/encry/utils/BalanceCalculator.scala @@ -1,6 +1,6 @@ package encry.utils -import org.encryfoundation.common.utils.constants.TestNetConstants +import encry.settings.MainConstants.constants import org.encryfoundation.common.modifiers.state.box.Box.Amount import org.encryfoundation.common.modifiers.state.box.TokenIssuingBox.TokenId import org.encryfoundation.common.modifiers.state.box.{AssetBox, EncryBaseBox, TokenIssuingBox} @@ -11,7 +11,7 @@ object BalanceCalculator { excludeTokenIssuance: Boolean = false): Map[TokenId, Amount] = bxs.foldLeft(Map.empty[ByteStr, Amount]) { case (cache, bx: AssetBox) => - val tokenId: ByteStr = ByteStr(bx.tokenIdOpt.getOrElse(TestNetConstants.IntrinsicTokenId)) + val tokenId: ByteStr = ByteStr(bx.tokenIdOpt.getOrElse(constants.IntrinsicTokenId)) cache.get(tokenId).map { amount => cache.updated(tokenId, amount + bx.amount) }.getOrElse(cache.updated(tokenId, bx.amount)) diff --git a/src/main/scala/encry/view/ModifiersCache.scala b/src/main/scala/encry/view/ModifiersCache.scala index 02f7536982..1ec8349bd3 100644 --- a/src/main/scala/encry/view/ModifiersCache.scala +++ b/src/main/scala/encry/view/ModifiersCache.scala @@ -2,7 +2,7 @@ package encry.view import com.typesafe.scalalogging.StrictLogging import encry.EncryApp.settings -import org.encryfoundation.common.utils.constants.TestNetConstants +import encry.settings.MainConstants.constants import encry.view.history.History import encry.view.history.ValidationError.{FatalValidationError, NonFatalValidationError} import org.encryfoundation.common.modifiers.PersistentModifier @@ -116,7 +116,7 @@ object ModifiersCache extends StrictLogging { val res = value.map(cache.get(_)).collect { case Some(v: Header) if ((v.parentId sameElements history.getBestHeaderId.getOrElse(Array.emptyByteArray)) || - (history.getBestHeaderHeight == TestNetConstants.PreGenesisHeight && + (history.getBestHeaderHeight == constants.PreGenesisHeight && (v.parentId sameElements Header.GenesisParentId) ) || history.getHeaderById(v.parentId).nonEmpty) && isApplicable(new mutable.WrappedArray.ofByte(v.id)) => logger.debug(s"Find new bestHeader in cache: ${Algos.encode(v.id)}") @@ -126,8 +126,8 @@ object ModifiersCache extends StrictLogging { res case None => logger.debug(s"No header in cache at height ${history.getBestHeaderHeight + 1}. " + - s"Trying to find in range [${history.getBestHeaderHeight - TestNetConstants.MaxRollbackDepth}, ${history.getBestHeaderHeight}]") - (history.getBestHeaderHeight - TestNetConstants.MaxRollbackDepth to history.getBestHeaderHeight).flatMap(height => + s"Trying to find in range [${history.getBestHeaderHeight - constants.MaxRollbackDepth}, ${history.getBestHeaderHeight}]") + (history.getBestHeaderHeight - constants.MaxRollbackDepth to history.getBestHeaderHeight).flatMap(height => getHeadersKeysAtHeight(height) ).toList } diff --git a/src/main/scala/encry/view/history/BlockDownloadProcessor.scala b/src/main/scala/encry/view/history/BlockDownloadProcessor.scala index 8ee640961f..d2b70befb8 100644 --- a/src/main/scala/encry/view/history/BlockDownloadProcessor.scala +++ b/src/main/scala/encry/view/history/BlockDownloadProcessor.scala @@ -2,7 +2,7 @@ package encry.view.history import encry.settings.NodeSettings import org.encryfoundation.common.modifiers.history.Header -import org.encryfoundation.common.utils.constants.TestNetConstants +import encry.settings.MainConstants.constants /** Class that keeps and calculates minimal height for full blocks starting from which we need to download these full * blocks from the network and keep them in our history. */ @@ -26,11 +26,11 @@ case class BlockDownloadProcessor(nodeSettings: NodeSettings) { private def minimalBlockHeightAfter(header: Header): Int = { if (minimalBlockHeightVar == Int.MaxValue) { // just synced with the headers chain - determine first full block to apply - if (nodeSettings.blocksToKeep < 0) TestNetConstants.GenesisHeight // keep all blocks in history + if (nodeSettings.blocksToKeep < 0) constants.GenesisHeight // keep all blocks in history // TODO: start with the height of UTXO snapshot applied. Start from genesis until this is implemented // Start from config.blocksToKeep blocks back - else Math.max(TestNetConstants.GenesisHeight, header.height - nodeSettings.blocksToKeep + 1) + else Math.max(constants.GenesisHeight, header.height - nodeSettings.blocksToKeep + 1) } else if (nodeSettings.blocksToKeep >= 0) Math.max(header.height - nodeSettings.blocksToKeep + 1, minimalBlockHeightVar) - else TestNetConstants.GenesisHeight + else constants.GenesisHeight } } diff --git a/src/main/scala/encry/view/history/HistoryApi.scala b/src/main/scala/encry/view/history/HistoryApi.scala index f9039c9e48..3ffdf24b67 100644 --- a/src/main/scala/encry/view/history/HistoryApi.scala +++ b/src/main/scala/encry/view/history/HistoryApi.scala @@ -12,7 +12,7 @@ import org.encryfoundation.common.modifiers.history.{Block, BlockProtoSerializer import org.encryfoundation.common.network.SyncInfo import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.{Difficulty, Height, ModifierId, ModifierTypeId} -import org.encryfoundation.common.utils.constants.TestNetConstants +import encry.settings.MainConstants.constants import scala.annotation.tailrec import scala.collection.immutable.HashSet @@ -54,7 +54,7 @@ trait HistoryApi extends HistoryDBApi { //scalastyle:ignore headersCache.get(ByteArrayWrapper(id)).map(_.height) .orElse(blocksCache.get(ByteArrayWrapper(id)).map(_.header.height)) .orElse(getHeightByHeaderId(id)) - ).getOrElse(TestNetConstants.PreGenesisHeight) + ).getOrElse(constants.PreGenesisHeight) def getBestBlock: Option[Block] = getBestBlockId.flatMap(id => blocksCache.get(ByteArrayWrapper(id)) @@ -63,7 +63,7 @@ trait HistoryApi extends HistoryDBApi { //scalastyle:ignore def getBestBlockHeight: Int = getBestBlockId .flatMap(id => blocksCache.get(ByteArrayWrapper(id)).map(_.header.height).orElse(getHeightByHeaderId(id))) - .getOrElse(TestNetConstants.PreGenesisHeight) + .getOrElse(constants.PreGenesisHeight) def getHeaderOfBestBlock: Option[Header] = getBestBlockId.flatMap(id => headersCache.get(ByteArrayWrapper(id)) @@ -172,7 +172,7 @@ trait HistoryApi extends HistoryDBApi { //scalastyle:ignore .find(p) .flatMap(getHeaderById) match { case h@Some(_) => h - case None if height > TestNetConstants.GenesisHeight => loopHeightDown(height - 1, p) + case None if height > constants.GenesisHeight => loopHeightDown(height - 1, p) case n@None => n } @@ -225,7 +225,7 @@ trait HistoryApi extends HistoryDBApi { //scalastyle:ignore startId <- headerIdsAtHeight(heightFrom).headOption startHeader <- getHeaderById(startId) } yield headerChainBack(size, startHeader, _ => false)) match { - case Some(value) if value.headers.exists(_.height == TestNetConstants.GenesisHeight) => value.headers.map(_.id) + case Some(value) if value.headers.exists(_.height == constants.GenesisHeight) => value.headers.map(_.id) case _ => Seq.empty } } else { @@ -280,43 +280,43 @@ trait HistoryApi extends HistoryDBApi { //scalastyle:ignore private def isNewHeader(header: Header): Boolean = timeProvider.estimatedTime - header.timestamp < - TestNetConstants.DesiredBlockInterval.toMillis * TestNetConstants.NewHeaderTimeMultiplier + constants.DesiredBlockInterval.toMillis * constants.NewHeaderTimeMultiplier def isHeadersChainSynced: Boolean = isHeadersChainSyncedVar def addHeaderToCacheIfNecessary(h: Header): Unit = - if (h.height >= getBestHeaderHeight - TestNetConstants.MaxRollbackDepth) { + if (h.height >= getBestHeaderHeight - constants.MaxRollbackDepth) { logger.debug(s"Should add ${Algos.encode(h.id)} to header cache") val newHeadersIdsAtHeaderHeight = headersCacheIndexes.getOrElse(h.height, Seq.empty[ModifierId]) :+ h.id headersCacheIndexes = headersCacheIndexes + (h.height -> newHeadersIdsAtHeaderHeight) headersCache = headersCache + (ByteArrayWrapper(h.id) -> h) // cleanup cache if necessary - if (headersCacheIndexes.size > TestNetConstants.MaxRollbackDepth) { - headersCacheIndexes.get(getBestHeaderHeight - TestNetConstants.MaxRollbackDepth).foreach { headersIds => + if (headersCacheIndexes.size > constants.MaxRollbackDepth) { + headersCacheIndexes.get(getBestHeaderHeight - constants.MaxRollbackDepth).foreach { headersIds => val wrappedIds = headersIds.map(ByteArrayWrapper.apply) logger.debug(s"Cleanup header cache from headers: ${headersIds.map(Algos.encode).mkString(",")}") headersCache = headersCache.filterNot { case (id, _) => wrappedIds.contains(id) } } - headersCacheIndexes = headersCacheIndexes - (getBestHeaderHeight - TestNetConstants.MaxRollbackDepth) + headersCacheIndexes = headersCacheIndexes - (getBestHeaderHeight - constants.MaxRollbackDepth) } logger.debug(s"headersCache size: ${headersCache.size}") logger.debug(s"headersCacheIndexes size: ${headersCacheIndexes.size}") } def addBlockToCacheIfNecessary(b: Block): Unit = - if (b.header.height >= getBestBlockHeight - TestNetConstants.MaxRollbackDepth) { + if (b.header.height >= getBestBlockHeight - constants.MaxRollbackDepth) { logger.debug(s"Should add ${Algos.encode(b.id)} to header cache") val newBlocksIdsAtBlockHeight = blocksCacheIndexes.getOrElse(b.header.height, Seq.empty[ModifierId]) :+ b.id blocksCacheIndexes = blocksCacheIndexes + (b.header.height -> newBlocksIdsAtBlockHeight) blocksCache = blocksCache + (ByteArrayWrapper(b.id) -> b) // cleanup cache if necessary - if (blocksCacheIndexes.size > TestNetConstants.MaxRollbackDepth) { - blocksCacheIndexes.get(getBestBlockHeight - TestNetConstants.MaxRollbackDepth).foreach { blocksIds => + if (blocksCacheIndexes.size > constants.MaxRollbackDepth) { + blocksCacheIndexes.get(getBestBlockHeight - constants.MaxRollbackDepth).foreach { blocksIds => val wrappedIds = blocksIds.map(ByteArrayWrapper.apply) logger.debug(s"Cleanup block cache from headers: ${blocksIds.map(Algos.encode).mkString(",")}") blocksCache = blocksCache.filterNot { case (id, _) => wrappedIds.contains(id) } } - blocksCacheIndexes = blocksCacheIndexes - (getBestBlockHeight - TestNetConstants.MaxRollbackDepth) + blocksCacheIndexes = blocksCacheIndexes - (getBestBlockHeight - constants.MaxRollbackDepth) } logger.debug(s"headersCache size: ${blocksCache.size}") logger.debug(s"headersCacheIndexes size: ${blocksCacheIndexes.size}") diff --git a/src/main/scala/encry/view/history/HistoryDBApi.scala b/src/main/scala/encry/view/history/HistoryDBApi.scala index c88e1c738c..149af7cbde 100644 --- a/src/main/scala/encry/view/history/HistoryDBApi.scala +++ b/src/main/scala/encry/view/history/HistoryDBApi.scala @@ -7,7 +7,7 @@ import encry.view.history.storage.HistoryStorage import org.encryfoundation.common.modifiers.history.{Block, Header, Payload} import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.{Height, ModifierId, ModifierTypeId} -import org.encryfoundation.common.utils.constants.TestNetConstants +import encry.settings.MainConstants.constants import scorex.crypto.hash.Digest32 import scala.reflect.ClassTag @@ -16,9 +16,9 @@ trait HistoryDBApi extends StrictLogging { val historyStorage: HistoryStorage val BestHeaderKey: StorageKey = - StorageKey @@ Array.fill(TestNetConstants.DigestLength)(Header.modifierTypeId.untag(ModifierTypeId)) + StorageKey @@ Array.fill(constants.DigestLength)(Header.modifierTypeId.untag(ModifierTypeId)) val BestBlockKey: StorageKey = - StorageKey @@ Array.fill(TestNetConstants.DigestLength)(-1: Byte) + StorageKey @@ Array.fill(constants.DigestLength)(-1: Byte) private def getModifierById[T: ClassTag](id: ModifierId): Option[T] = historyStorage .modifierById(id) @@ -39,13 +39,13 @@ trait HistoryDBApi extends StrictLogging { def getBestHeaderDB: Option[Header] = getBestHeaderId.flatMap(getHeaderByIdDB) def getBestHeaderHeightDB: Int = getBestHeaderId .flatMap(getHeightByHeaderIdDB) - .getOrElse(TestNetConstants.PreGenesisHeight) + .getOrElse(constants.PreGenesisHeight) def getBestBlockId: Option[ModifierId] = historyStorage.get(BestBlockKey).map(ModifierId @@ _) def getBestBlockDB: Option[Block] = getBestBlockId.flatMap(getBlockByHeaderIdDB) def getBestBlockHeightDB: Int = getBestBlockId .flatMap(getHeightByHeaderIdDB) - .getOrElse(TestNetConstants.PreGenesisHeight) + .getOrElse(constants.PreGenesisHeight) def modifierBytesByIdDB(id: ModifierId): Option[Array[Byte]] = historyStorage.modifiersBytesById(id) diff --git a/src/main/scala/encry/view/history/HistoryModifiersProcessors.scala b/src/main/scala/encry/view/history/HistoryModifiersProcessors.scala index 9d4deddda5..d6017bd25f 100644 --- a/src/main/scala/encry/view/history/HistoryModifiersProcessors.scala +++ b/src/main/scala/encry/view/history/HistoryModifiersProcessors.scala @@ -9,7 +9,7 @@ import encry.storage.VersionalStorage.{StorageKey, StorageValue} import org.encryfoundation.common.modifiers.PersistentModifier import org.encryfoundation.common.modifiers.history.{Block, Header, Payload} import org.encryfoundation.common.utils.TaggedTypes.{Difficulty, ModifierId} -import org.encryfoundation.common.utils.constants.TestNetConstants +import encry.settings.MainConstants.constants import cats.syntax.option._ import scala.annotation.tailrec import cats.syntax.either._ @@ -131,8 +131,8 @@ trait HistoryModifiersProcessors extends HistoryApi { logger.info(s"Initialize header chain with genesis header ${header.encodedId}") Seq( BestHeaderKey -> StorageValue @@ header.id, - heightIdsKey(TestNetConstants.GenesisHeight) -> StorageValue @@ header.id, - headerHeightKey(header.id) -> StorageValue @@ Ints.toByteArray(TestNetConstants.GenesisHeight), + heightIdsKey(constants.GenesisHeight) -> StorageValue @@ header.id, + headerHeightKey(header.id) -> StorageValue @@ Ints.toByteArray(constants.GenesisHeight), headerScoreKey(header.id) -> StorageValue @@ header.difficulty.toByteArray ) } else scoreOf(header.parentId).map { parentScore => diff --git a/src/main/scala/encry/view/history/HistoryModifiersValidator.scala b/src/main/scala/encry/view/history/HistoryModifiersValidator.scala index 9d5a65670a..e0ee2c0190 100644 --- a/src/main/scala/encry/view/history/HistoryModifiersValidator.scala +++ b/src/main/scala/encry/view/history/HistoryModifiersValidator.scala @@ -4,7 +4,7 @@ import encry.view.history.ValidationError.FatalValidationError._ import encry.view.history.ValidationError.NonFatalValidationError._ import org.encryfoundation.common.modifiers.PersistentModifier import org.encryfoundation.common.modifiers.history.{Header, Payload} -import org.encryfoundation.common.utils.constants.TestNetConstants +import encry.settings.MainConstants.constants import org.encryfoundation.common.validation.ModifierSemanticValidity import cats.syntax.either._ import encry.consensus.EquihashPowScheme @@ -12,7 +12,7 @@ import org.encryfoundation.common.utils.TaggedTypes.{Difficulty, ModifierId} trait HistoryModifiersValidator extends HistoryApi { - val powScheme: EquihashPowScheme = EquihashPowScheme(TestNetConstants.n, TestNetConstants.k) + val powScheme: EquihashPowScheme = EquihashPowScheme(constants.n, constants.k) def testApplicable(modifier: PersistentModifier): Either[ValidationError, PersistentModifier] = (modifier match { @@ -51,7 +51,7 @@ trait HistoryModifiersValidator extends HistoryApi { GenesisBlockFatalValidationError(s"Genesis block with header ${h.encodedId} should has genesis parent id")) _ <- Either.cond(getBestHeaderId.isEmpty, (), GenesisBlockFatalValidationError(s"Genesis block with header ${h.encodedId} appended to non-empty history")) - _ <- Either.cond(h.height == TestNetConstants.GenesisHeight, (), + _ <- Either.cond(h.height == constants.GenesisHeight, (), GenesisBlockFatalValidationError(s"Height of genesis block with header ${h.encodedId} is incorrect")) } yield h @@ -68,7 +68,7 @@ trait HistoryModifiersValidator extends HistoryApi { HeaderFatalValidationError(s"Incorrect real difficulty in header ${h.encodedId}")) _ <- Either.cond(requiredDifficultyAfter(parent).exists(_ <= h.difficulty), (), HeaderFatalValidationError(s"Incorrect required difficulty in header ${h.encodedId}")) - _ <- Either.cond(heightOf(h.parentId).exists(h => getBestHeaderHeight - h < TestNetConstants.MaxRollbackDepth), (), + _ <- Either.cond(heightOf(h.parentId).exists(h => getBestHeaderHeight - h < constants.MaxRollbackDepth), (), HeaderFatalValidationError(s"Header ${h.encodedId} has height greater than max roll back depth")) powSchemeValidationResult = powScheme.verify(h) _ <- Either.cond(powSchemeValidationResult.isRight, (), @@ -76,7 +76,7 @@ trait HistoryModifiersValidator extends HistoryApi { s" caused: $powSchemeValidationResult")) _ <- Either.cond(isSemanticallyValid(h.parentId) != ModifierSemanticValidity.Invalid, (), HeaderFatalValidationError(s"Header ${h.encodedId} is semantically invalid")) - _ <- Either.cond(h.timestamp - timeProvider.estimatedTime <= TestNetConstants.MaxTimeDrift, (), + _ <- Either.cond(h.timestamp - timeProvider.estimatedTime <= constants.MaxTimeDrift, (), HeaderNonFatalValidationError(s"Header ${h.encodedId} with timestamp ${h.timestamp}" + s" is too far in future from now ${timeProvider.estimatedTime}")) } yield h diff --git a/src/main/scala/encry/view/state/UtxoState.scala b/src/main/scala/encry/view/state/UtxoState.scala index 7a7faf8cbc..0266cfe4d6 100644 --- a/src/main/scala/encry/view/state/UtxoState.scala +++ b/src/main/scala/encry/view/state/UtxoState.scala @@ -33,7 +33,7 @@ import org.encryfoundation.common.modifiers.state.box.TokenIssuingBox.TokenId import org.encryfoundation.common.modifiers.state.box.{AssetBox, EncryBaseBox, EncryProposition} import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.{ADDigest, Height} -import org.encryfoundation.common.utils.constants.TestNetConstants +import encry.settings.MainConstants.constants import org.encryfoundation.common.validation.ValidationResult.Invalid import org.encryfoundation.common.validation.{MalformedModifierError, ValidationResult} import org.iq80.leveldb.Options @@ -99,7 +99,7 @@ final case class UtxoState(storage: VersionalStorage, logger.info(s"Rollback to version ${Algos.encode(version)}") storage.rollbackTo(StorageVersion !@@ version) val stateHeight: Int = storage.get(StorageKey @@ UtxoState.bestHeightKey.untag(Digest32)) - .map(d => Ints.fromByteArray(d)).getOrElse(TestNetConstants.GenesisHeight) + .map(d => Ints.fromByteArray(d)).getOrElse(constants.GenesisHeight) UtxoState( storage, Height @@ stateHeight, @@ -138,11 +138,11 @@ final case class UtxoState(storage: VersionalStorage, val creditB: Map[String, Amount] = { val balanceSheet: Map[TokenId, Amount] = BalanceCalculator.balanceSheet(tx.newBoxes, excludeTokenIssuance = true) - val intrinsicBalance: Amount = balanceSheet.getOrElse(TestNetConstants.IntrinsicTokenId, 0L) - balanceSheet.updated(TestNetConstants.IntrinsicTokenId, intrinsicBalance + tx.fee) + val intrinsicBalance: Amount = balanceSheet.getOrElse(constants.IntrinsicTokenId, 0L) + balanceSheet.updated(constants.IntrinsicTokenId, intrinsicBalance + tx.fee) }.map { case (tokenId, amount) => Algos.encode(tokenId) -> amount } creditB.forall { case (tokenId, amount) => - if (tokenId == Algos.encode(TestNetConstants.IntrinsicTokenId)) + if (tokenId == Algos.encode(constants.IntrinsicTokenId)) debitB.getOrElse(tokenId, 0L) + allowedOutputDelta >= amount else debitB.getOrElse(tokenId, 0L) >= amount } @@ -191,14 +191,14 @@ object UtxoState extends StrictLogging { val versionalStorage = settings.storage.state match { case VersionalStorage.IODB => logger.info("Init state with iodb storage") - IODBWrapper(new LSMStore(stateDir, keepVersions = TestNetConstants.DefaultKeepVersions)) + IODBWrapper(new LSMStore(stateDir, keepVersions = constants.DefaultKeepVersions)) case VersionalStorage.LevelDB => logger.info("Init state with levelDB storage") val levelDBInit = LevelDbFactory.factory.open(stateDir, new Options) VLDBWrapper(VersionalLevelDBCompanion(levelDBInit, LevelDBSettings(300, 32), keySize = 32)) } val stateHeight: Int = versionalStorage.get(StorageKey @@ bestHeightKey.untag(Digest32)) - .map(d => Ints.fromByteArray(d)).getOrElse(TestNetConstants.PreGenesisHeight) + .map(d => Ints.fromByteArray(d)).getOrElse(constants.PreGenesisHeight) val lastBlockTimestamp: Amount = versionalStorage.get(StorageKey @@ lastBlockTimeKey.untag(Digest32)) .map(d => Longs.fromByteArray(d)).getOrElse(0L) new UtxoState( @@ -216,7 +216,7 @@ object UtxoState extends StrictLogging { val storage = settings.storage.state match { case VersionalStorage.IODB => logger.info("Init state with iodb storage") - IODBWrapper(new LSMStore(stateDir, keepVersions = TestNetConstants.DefaultKeepVersions)) + IODBWrapper(new LSMStore(stateDir, keepVersions = constants.DefaultKeepVersions)) case VersionalStorage.LevelDB => logger.info("Init state with levelDB storage") val levelDBInit = LevelDbFactory.factory.open(stateDir, new Options) @@ -230,7 +230,7 @@ object UtxoState extends StrictLogging { new UtxoState( storage, - TestNetConstants.PreGenesisHeight, + constants.PreGenesisHeight, 0L, ) } diff --git a/src/test/scala/encry/consensus/PowLinearControllerSpec.scala b/src/test/scala/encry/consensus/PowLinearControllerSpec.scala index eff36d2652..ebe4b82b8d 100644 --- a/src/test/scala/encry/consensus/PowLinearControllerSpec.scala +++ b/src/test/scala/encry/consensus/PowLinearControllerSpec.scala @@ -1,9 +1,9 @@ package encry.consensus -import org.encryfoundation.common.utils.constants.TestNetConstants +import encry.settings.MainConstants.constants import org.encryfoundation.common.utils.TaggedTypes.Height import org.scalatest.{Matchers, PropSpec} - +import encry.settings.MainConstants.constants import scala.collection.immutable class PowLinearControllerSpec extends PropSpec with Matchers { @@ -12,8 +12,8 @@ class PowLinearControllerSpec extends PropSpec with Matchers { val retargetingAtHeight: Int = 1001 - val expected: immutable.Seq[Int] = (0 to TestNetConstants.RetargetingEpochsQty).reverse - .map(i => (retargetingAtHeight - 1) - i * TestNetConstants.EpochLength).filter(_ >= TestNetConstants.GenesisHeight) + val expected: immutable.Seq[Int] = (0 to constants.RetargetingEpochsQty).reverse + .map(i => (retargetingAtHeight - 1) - i * constants.EpochLength).filter(_ >= constants.GenesisHeight) val heights: Seq[Height] = PowLinearController.getHeightsForRetargetingAt(Height @@ retargetingAtHeight) diff --git a/src/test/scala/encry/consensus/emission/EncrySupplyControllerTest.scala b/src/test/scala/encry/consensus/emission/EncrySupplyControllerTest.scala index d8eb51d623..84f5001d85 100644 --- a/src/test/scala/encry/consensus/emission/EncrySupplyControllerTest.scala +++ b/src/test/scala/encry/consensus/emission/EncrySupplyControllerTest.scala @@ -1,17 +1,17 @@ package encry.consensus.emission import encry.consensus.EncrySupplyController -import org.encryfoundation.common.utils.constants.TestNetConstants +import encry.utils.EncryGenerator import org.encryfoundation.common.utils.TaggedTypes.Height import org.scalatest.{Matchers, PropSpec} - +import encry.settings.MainConstants.constants import scala.concurrent.duration._ -class EncrySupplyControllerTest extends PropSpec with Matchers { +class EncrySupplyControllerTest extends PropSpec with Matchers with EncryGenerator { val epochLen = 10 - val blocksPerHour: Int = ((60 * 60).seconds / TestNetConstants.DesiredBlockInterval).toInt + val blocksPerHour: Int = ((60 * 60).seconds / constants.DesiredBlockInterval).toInt val blocksPerYear: Int = blocksPerHour * 24 * 365 @@ -27,7 +27,7 @@ class EncrySupplyControllerTest extends PropSpec with Matchers { val firstYearSupply = epochSupply.zipWithIndex.filter(i => i._2 <= blocksPerYear).map(_._1).sum - atEndEpochSupply < TestNetConstants.InitialEmissionAmount shouldBe true + atEndEpochSupply < constants.InitialEmissionAmount shouldBe true } } diff --git a/src/test/scala/encry/modifiers/InstanceFactory.scala b/src/test/scala/encry/modifiers/InstanceFactory.scala index 7ad3c2ea1d..c2cd2f77c7 100755 --- a/src/test/scala/encry/modifiers/InstanceFactory.scala +++ b/src/test/scala/encry/modifiers/InstanceFactory.scala @@ -2,7 +2,7 @@ package encry.modifiers import encry.modifiers.mempool._ import encry.modifiers.state.Keys -import encry.settings.{EncryAppSettings, NodeSettings} +import encry.settings.{EncryAppSettings, MainConstants, NodeSettings} import encry.storage.levelDb.versionalLevelDB.{LevelDbFactory, VLDBWrapper, VersionalLevelDBCompanion} import encry.utils.{EncryGenerator, FileHelper, NetworkTimeProvider, TestHelper} import encry.view.history.History @@ -14,13 +14,14 @@ import org.encryfoundation.common.modifiers.state.box.{AssetBox, EncryPropositio import org.encryfoundation.common.modifiers.state.box.Box.Amount import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.{Height, _} -import org.encryfoundation.common.utils.constants.TestNetConstants + import org.encryfoundation.prismlang.compiler.CompiledContract import org.encryfoundation.prismlang.core.Ast.Expr import org.encryfoundation.prismlang.core.{Ast, Types} import org.iq80.leveldb.Options import scorex.crypto.hash.Digest32 import scorex.utils.Random +import encry.settings.MainConstants.constants import scala.util.{Random => Scarand} @@ -51,7 +52,7 @@ trait InstanceFactory extends Keys with EncryGenerator { val txsRoot: Digest32 = Payload.rootHash(txs.map(_.id)) val header = genHeader.copy( parentId = Header.GenesisParentId, - height = TestNetConstants.GenesisHeight, + height = constants.GenesisHeight, transactionsRoot = txsRoot ) Block(header, Payload(header.id, Seq(coinbaseTransaction))) @@ -151,7 +152,7 @@ trait InstanceFactory extends Keys with EncryGenerator { prevId.getOrElse(history.getBestHeader.map(_.id).getOrElse(Header.GenesisParentId)) val requiredDifficulty: Difficulty = history.getBestHeader.map(parent => history.requiredDifficultyAfter(parent).getOrElse(Difficulty @@ BigInt(0))) - .getOrElse(TestNetConstants.InitialDifficulty) + .getOrElse(constants.InitialDifficulty) val txs = (if (txsQty != 0) genValidPaymentTxs(Scarand.nextInt(txsQty)) else Seq.empty) ++ Seq(coinbaseTransaction) val header = genHeader.copy( diff --git a/src/test/scala/encry/modifiers/history/BlockSerializerTest.scala b/src/test/scala/encry/modifiers/history/BlockSerializerTest.scala index 68c1fc6ddf..31a697c72a 100755 --- a/src/test/scala/encry/modifiers/history/BlockSerializerTest.scala +++ b/src/test/scala/encry/modifiers/history/BlockSerializerTest.scala @@ -6,10 +6,11 @@ import org.encryfoundation.common.crypto.equihash.EquihashSolution import org.encryfoundation.common.modifiers.history._ import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.{ADDigest, ModifierId} -import org.encryfoundation.common.utils.constants.TestNetConstants +import encry.settings.MainConstants.constants import org.scalatest.FunSuite import scorex.crypto.hash.Digest32 import scorex.utils.Random +import encry.settings.MainConstants.constants class BlockSerializerTest extends FunSuite with EncryGenerator { @@ -22,7 +23,7 @@ class BlockSerializerTest extends FunSuite with EncryGenerator { 99999L, 199, 999L, - TestNetConstants.InitialDifficulty, + constants.InitialDifficulty, EquihashSolution(Seq(1, 2, 3)) ) diff --git a/src/test/scala/encry/network/DownloadedModifiersValidatorTests.scala b/src/test/scala/encry/network/DownloadedModifiersValidatorTests.scala index da776cb15f..eae634d939 100644 --- a/src/test/scala/encry/network/DownloadedModifiersValidatorTests.scala +++ b/src/test/scala/encry/network/DownloadedModifiersValidatorTests.scala @@ -16,10 +16,11 @@ import org.encryfoundation.common.crypto.equihash.EquihashSolution import org.encryfoundation.common.modifiers.history.{Block, Header, HeaderProtoSerializer, Payload, PayloadProtoSerializer} import org.encryfoundation.common.network.BasicMessagesRepo.Handshake import org.encryfoundation.common.utils.TaggedTypes.ModifierId -import org.encryfoundation.common.utils.constants.TestNetConstants +import encry.settings.MainConstants.constants import org.scalatest.{BeforeAndAfterAll, Matchers, OneInstancePerTest, WordSpecLike} import scorex.crypto.hash.Digest32 import scorex.utils.Random +import encry.settings.MainConstants.constants class DownloadedModifiersValidatorTests extends WordSpecLike with Matchers @@ -66,7 +67,7 @@ class DownloadedModifiersValidatorTests extends WordSpecLike timestamp2, 2, scala.util.Random.nextLong(), - TestNetConstants.InitialDifficulty, + constants.InitialDifficulty, EquihashSolution(Seq(1, 3)) ) val header_second: Header = Header( @@ -76,7 +77,7 @@ class DownloadedModifiersValidatorTests extends WordSpecLike timestamp1, 1, scala.util.Random.nextLong(), - TestNetConstants.InitialDifficulty, + constants.InitialDifficulty, EquihashSolution(Seq(1, 3)) ) diff --git a/src/test/scala/encry/utils/EncryGenerator.scala b/src/test/scala/encry/utils/EncryGenerator.scala index 8fcfee1fd1..2fd3b3cd88 100644 --- a/src/test/scala/encry/utils/EncryGenerator.scala +++ b/src/test/scala/encry/utils/EncryGenerator.scala @@ -3,7 +3,8 @@ package encry.utils import encry.modifiers.mempool.TransactionFactory import encry.modifiers.mempool.directive._ import encry.modifiers.state.box._ -import org.encryfoundation.common.utils.constants.TestNetConstants +import encry.settings.MainConstants +import encry.settings.MainConstants.constants import encry.utils.TestHelper.Props import org.encryfoundation.common.crypto.equihash.EquihashSolution import org.encryfoundation.common.crypto.{PrivateKey25519, PublicKey25519, Signature25519} @@ -18,7 +19,7 @@ import org.encryfoundation.prismlang.core.wrapped.BoxedValue import scorex.crypto.hash.{Blake2b256, Digest32} import scorex.crypto.signatures.{Curve25519, PrivateKey, PublicKey} import scorex.utils.Random - +import encry.settings.MainConstants.constants import scala.util.{Random => ScRand} trait EncryGenerator { @@ -140,7 +141,7 @@ trait EncryGenerator { Math.abs(random.nextLong()), Math.abs(random.nextInt(10000)), random.nextLong(), - TestNetConstants.InitialDifficulty, + constants.InitialDifficulty, EquihashSolution(Seq(1, 3)) ) } @@ -154,7 +155,7 @@ trait EncryGenerator { Math.abs(random.nextLong()), height, random.nextLong(), - TestNetConstants.InitialDifficulty, + constants.InitialDifficulty, EquihashSolution(Seq(1, 3)) ) } diff --git a/src/test/scala/encry/view/state/UtxoStateSpec.scala b/src/test/scala/encry/view/state/UtxoStateSpec.scala index a56caf4333..3cc51a82ff 100755 --- a/src/test/scala/encry/view/state/UtxoStateSpec.scala +++ b/src/test/scala/encry/view/state/UtxoStateSpec.scala @@ -12,10 +12,10 @@ import encry.storage.levelDb.versionalLevelDB.{LevelDbFactory, VLDBWrapper, Vers import encry.utils.{EncryGenerator, FileHelper, TestHelper} import io.iohk.iodb.LSMStore import org.encryfoundation.common.modifiers.history.{Block, Payload} -import org.encryfoundation.common.utils.constants.TestNetConstants +import encry.settings.MainConstants.constants import org.iq80.leveldb.Options import org.scalatest.{Matchers, PropSpec} - +import encry.settings.MainConstants.constants import scala.concurrent.ExecutionContextExecutor class UtxoStateSpec extends PropSpec with Matchers with EncryGenerator { @@ -38,7 +38,7 @@ class UtxoStateSpec extends PropSpec with Matchers with EncryGenerator { // new UtxoState( // persistentProver, // EncryState.genesisStateVersion, -// TestNetConstants.GenesisHeight, +// constants.GenesisHeight, // vldb, // 0L, // None, @@ -53,7 +53,7 @@ class UtxoStateSpec extends PropSpec with Matchers with EncryGenerator { settings: EncryAppSettings): UtxoState = { val storage = settings.storage.state match { case VersionalStorage.IODB => - IODBWrapper(new LSMStore(dir, keepVersions = TestNetConstants.DefaultKeepVersions)) + IODBWrapper(new LSMStore(dir, keepVersions = constants.DefaultKeepVersions)) case VersionalStorage.LevelDB => val levelDBInit = LevelDbFactory.factory.open(dir, new Options) VLDBWrapper(VersionalLevelDBCompanion(levelDBInit, settings.levelDB, keySize = 32)) @@ -66,7 +66,7 @@ class UtxoStateSpec extends PropSpec with Matchers with EncryGenerator { new UtxoState( storage, - TestNetConstants.PreGenesisHeight, + constants.PreGenesisHeight, 0L, ) } diff --git a/src/test/scala/encry/view/wallet/WalletSpec.scala b/src/test/scala/encry/view/wallet/WalletSpec.scala index 1152253781..1e905d53cc 100644 --- a/src/test/scala/encry/view/wallet/WalletSpec.scala +++ b/src/test/scala/encry/view/wallet/WalletSpec.scala @@ -11,9 +11,8 @@ import org.encryfoundation.common.modifiers.history.{Block, Header, Payload} import org.encryfoundation.common.modifiers.mempool.transaction.Transaction import org.encryfoundation.common.modifiers.state.box.{AssetBox, MonetaryBox} import org.encryfoundation.common.utils.TaggedTypes.ModifierId -import org.encryfoundation.common.utils.constants.TestNetConstants -import org.iq80.leveldb.{DB, Options} import org.scalatest.{Matchers, PropSpec} +import encry.settings.MainConstants.constants class WalletSpec extends PropSpec with Matchers with InstanceFactory with EncryGenerator with StrictLogging { @@ -55,11 +54,11 @@ class WalletSpec extends PropSpec with Matchers with InstanceFactory with EncryG wallet.scanPersistent(firstBlock) - wallet.walletStorage.getTokenBalanceById(TestNetConstants.IntrinsicTokenId).getOrElse(0L) shouldEqual correctBalance + wallet.walletStorage.getTokenBalanceById(constants.IntrinsicTokenId).getOrElse(0L) shouldEqual correctBalance wallet.scanPersistent(secondBlock) - wallet.walletStorage.getTokenBalanceById(TestNetConstants.IntrinsicTokenId).getOrElse(0L) shouldEqual correctBalance - useBox.amount + wallet.walletStorage.getTokenBalanceById(constants.IntrinsicTokenId).getOrElse(0L) shouldEqual correctBalance - useBox.amount logger.info(s"tmp dir size: ${dir.length()}") } From e65b4eef97e20b7b1a889ae928c78161db99a0b7 Mon Sep 17 00:00:00 2001 From: capdev Date: Fri, 6 Sep 2019 10:10:39 +0500 Subject: [PATCH 19/51] MainConstants rename to Constants --- benchmarks/src/test/scala/benches/Utils.scala | 2 +- it/src/main/scala/encry/it/docker/Node.scala | 2 +- it/src/test/scala/encry/it/MinerWalletBalanceTest.scala | 2 +- .../encry/it/transactions/AssetTokenTransactionTest.scala | 2 +- .../ProcessingTransferTransactionWithEncryCoinsTest.scala | 2 +- src/main/scala/encry/EncryApp.scala | 2 +- src/main/scala/encry/api/http/routes/InfoApiRoute.scala | 2 +- src/main/scala/encry/consensus/ConsensusSchemeReaders.scala | 2 +- src/main/scala/encry/consensus/EncrySupplyController.scala | 2 +- src/main/scala/encry/consensus/EquihashPowScheme.scala | 2 +- src/main/scala/encry/consensus/PowLinearController.scala | 2 +- src/main/scala/encry/local/miner/Miner.scala | 2 +- src/main/scala/encry/local/miner/Worker.scala | 2 +- src/main/scala/encry/modifiers/history/HeaderUtils.scala | 2 +- src/main/scala/encry/modifiers/history/PayloadUtils.scala | 2 +- .../encry/settings/{MainConstants.scala => Constants.scala} | 2 +- src/main/scala/encry/utils/BalanceCalculator.scala | 2 +- src/main/scala/encry/view/ModifiersCache.scala | 2 +- .../scala/encry/view/history/BlockDownloadProcessor.scala | 2 +- src/main/scala/encry/view/history/HistoryApi.scala | 2 +- src/main/scala/encry/view/history/HistoryDBApi.scala | 2 +- .../encry/view/history/HistoryModifiersProcessors.scala | 2 +- .../encry/view/history/HistoryModifiersValidator.scala | 2 +- src/main/scala/encry/view/state/UtxoState.scala | 2 +- .../scala/encry/consensus/PowLinearControllerSpec.scala | 4 ++-- .../consensus/emission/EncrySupplyControllerTest.scala | 2 +- src/test/scala/encry/modifiers/InstanceFactory.scala | 4 ++-- .../scala/encry/modifiers/history/BlockSerializerTest.scala | 4 ++-- .../encry/network/DownloadedModifiersValidatorTests.scala | 4 ++-- src/test/scala/encry/utils/EncryGenerator.scala | 6 +++--- src/test/scala/encry/view/state/UtxoStateSpec.scala | 4 ++-- src/test/scala/encry/view/wallet/WalletSpec.scala | 2 +- 32 files changed, 39 insertions(+), 39 deletions(-) rename src/main/scala/encry/settings/{MainConstants.scala => Constants.scala} (96%) diff --git a/benchmarks/src/test/scala/benches/Utils.scala b/benchmarks/src/test/scala/benches/Utils.scala index 419dda32f3..44a68c7ac8 100644 --- a/benchmarks/src/test/scala/benches/Utils.scala +++ b/benchmarks/src/test/scala/benches/Utils.scala @@ -25,7 +25,7 @@ import org.encryfoundation.common.modifiers.mempool.transaction._ import org.encryfoundation.common.modifiers.state.box.Box.Amount import org.encryfoundation.common.modifiers.state.box.{AssetBox, EncryProposition, MonetaryBox} import org.encryfoundation.common.utils.TaggedTypes._ -import encry.settings.MainConstants.constants +import encry.settings.Constants.constants import org.encryfoundation.prismlang.core.wrapped.BoxedValue import org.iq80.leveldb.Options import scorex.crypto.hash.{Blake2b256, Digest32} diff --git a/it/src/main/scala/encry/it/docker/Node.scala b/it/src/main/scala/encry/it/docker/Node.scala index b989a40f27..8085bff77f 100644 --- a/it/src/main/scala/encry/it/docker/Node.scala +++ b/it/src/main/scala/encry/it/docker/Node.scala @@ -11,7 +11,7 @@ import encry.settings.EncryAppSettings import org.asynchttpclient._ import org.encryfoundation.common.crypto.{PrivateKey25519, PublicKey25519} -import encry.settings.MainConstants.constants +import encry.settings.Constants.constants import scala.concurrent.duration.FiniteDuration diff --git a/it/src/test/scala/encry/it/MinerWalletBalanceTest.scala b/it/src/test/scala/encry/it/MinerWalletBalanceTest.scala index 11e46863bb..61ca72021a 100644 --- a/it/src/test/scala/encry/it/MinerWalletBalanceTest.scala +++ b/it/src/test/scala/encry/it/MinerWalletBalanceTest.scala @@ -7,7 +7,7 @@ import encry.it.docker.NodesFromDocker import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.Height import org.scalatest.{AsyncFunSuite, Matchers} -import encry.settings.MainConstants.constants +import encry.settings.Constants.constants import scala.concurrent.Await import scala.concurrent.duration._ diff --git a/it/src/test/scala/encry/it/transactions/AssetTokenTransactionTest.scala b/it/src/test/scala/encry/it/transactions/AssetTokenTransactionTest.scala index 130045c8e3..2085aa433c 100644 --- a/it/src/test/scala/encry/it/transactions/AssetTokenTransactionTest.scala +++ b/it/src/test/scala/encry/it/transactions/AssetTokenTransactionTest.scala @@ -15,7 +15,7 @@ import org.encryfoundation.common.modifiers.state.box.TokenIssuingBox.TokenId import org.encryfoundation.common.modifiers.state.box.{AssetBox, EncryBaseBox, TokenIssuingBox} import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.Height -import encry.settings.MainConstants.constants +import encry.settings.Constants.constants import org.scalatest.concurrent.ScalaFutures import org.scalatest.{AsyncFunSuite, Matchers} import scorex.crypto.signatures.Curve25519 diff --git a/it/src/test/scala/encry/it/transactions/ProcessingTransferTransactionWithEncryCoinsTest.scala b/it/src/test/scala/encry/it/transactions/ProcessingTransferTransactionWithEncryCoinsTest.scala index 76409d2921..b4c7f6ca0d 100644 --- a/it/src/test/scala/encry/it/transactions/ProcessingTransferTransactionWithEncryCoinsTest.scala +++ b/it/src/test/scala/encry/it/transactions/ProcessingTransferTransactionWithEncryCoinsTest.scala @@ -14,7 +14,7 @@ import org.encryfoundation.common.modifiers.mempool.transaction.Transaction import org.encryfoundation.common.modifiers.state.box.{AssetBox, EncryBaseBox} import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.Height -import encry.settings.MainConstants.constants +import encry.settings.Constants.constants import org.scalatest.concurrent.ScalaFutures import org.scalatest.{AsyncFunSuite, Matchers} import scorex.crypto.signatures.Curve25519 diff --git a/src/main/scala/encry/EncryApp.scala b/src/main/scala/encry/EncryApp.scala index 11127f3726..efd84f5a4b 100644 --- a/src/main/scala/encry/EncryApp.scala +++ b/src/main/scala/encry/EncryApp.scala @@ -16,7 +16,7 @@ import encry.cli.ConsoleListener.StartListening import encry.local.miner.Miner import encry.local.miner.Miner.StartMining import encry.network._ -import encry.settings.{EncryAppSettings, MainConstants} +import encry.settings.{EncryAppSettings, Constants} import encry.stats.{StatsSender, Zombie} import encry.utils.NetworkTimeProvider import encry.view.NodeViewHolder diff --git a/src/main/scala/encry/api/http/routes/InfoApiRoute.scala b/src/main/scala/encry/api/http/routes/InfoApiRoute.scala index 932135608e..d8d4d24b8e 100644 --- a/src/main/scala/encry/api/http/routes/InfoApiRoute.scala +++ b/src/main/scala/encry/api/http/routes/InfoApiRoute.scala @@ -13,7 +13,7 @@ import io.circe.Json import io.circe.syntax._ import org.encryfoundation.common.modifiers.history.{Block, Header} import org.encryfoundation.common.utils.Algos -import encry.settings.MainConstants.constants +import encry.settings.Constants.constants import scala.concurrent.Future case class InfoApiRoute(dataHolder: ActorRef, diff --git a/src/main/scala/encry/consensus/ConsensusSchemeReaders.scala b/src/main/scala/encry/consensus/ConsensusSchemeReaders.scala index ba651287ef..715d8bd7f1 100644 --- a/src/main/scala/encry/consensus/ConsensusSchemeReaders.scala +++ b/src/main/scala/encry/consensus/ConsensusSchemeReaders.scala @@ -1,6 +1,6 @@ package encry.consensus -import encry.settings.MainConstants.constants +import encry.settings.Constants.constants object ConsensusSchemeReaders { diff --git a/src/main/scala/encry/consensus/EncrySupplyController.scala b/src/main/scala/encry/consensus/EncrySupplyController.scala index c72e1cc8dd..d8179fe5bf 100644 --- a/src/main/scala/encry/consensus/EncrySupplyController.scala +++ b/src/main/scala/encry/consensus/EncrySupplyController.scala @@ -1,6 +1,6 @@ package encry.consensus -import encry.settings.MainConstants.constants +import encry.settings.Constants.constants import org.encryfoundation.common.modifiers.state.box.Box.Amount import org.encryfoundation.common.utils.TaggedTypes.Height diff --git a/src/main/scala/encry/consensus/EquihashPowScheme.scala b/src/main/scala/encry/consensus/EquihashPowScheme.scala index 1e1e23a01e..85738410da 100644 --- a/src/main/scala/encry/consensus/EquihashPowScheme.scala +++ b/src/main/scala/encry/consensus/EquihashPowScheme.scala @@ -2,7 +2,7 @@ package encry.consensus import com.google.common.primitives.Chars import encry.crypto.equihash.{Equihash, EquihashValidationErrors} -import encry.settings.MainConstants.constants +import encry.settings.Constants.constants import org.bouncycastle.crypto.digests.Blake2bDigest import org.encryfoundation.common.crypto.equihash.EquihashSolution import org.encryfoundation.common.modifiers.history.{Block, Header, Payload} diff --git a/src/main/scala/encry/consensus/PowLinearController.scala b/src/main/scala/encry/consensus/PowLinearController.scala index 3f5b3ba379..adc2ffb849 100644 --- a/src/main/scala/encry/consensus/PowLinearController.scala +++ b/src/main/scala/encry/consensus/PowLinearController.scala @@ -1,6 +1,6 @@ package encry.consensus -import encry.settings.MainConstants.constants +import encry.settings.Constants.constants import org.encryfoundation.common.modifiers.history.Header import org.encryfoundation.common.utils.TaggedTypes.{Difficulty, Height} import supertagged.@@ diff --git a/src/main/scala/encry/local/miner/Miner.scala b/src/main/scala/encry/local/miner/Miner.scala index ef4c784ec6..0759a5e66c 100644 --- a/src/main/scala/encry/local/miner/Miner.scala +++ b/src/main/scala/encry/local/miner/Miner.scala @@ -30,7 +30,7 @@ import org.encryfoundation.common.modifiers.mempool.transaction.Transaction import org.encryfoundation.common.modifiers.state.box.Box.Amount import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.{Difficulty, Height, ModifierId} -import encry.settings.MainConstants.constants +import encry.settings.Constants.constants import scala.collection._ import scala.concurrent.duration._ diff --git a/src/main/scala/encry/local/miner/Worker.scala b/src/main/scala/encry/local/miner/Worker.scala index 06e629baeb..9da01c9ea7 100644 --- a/src/main/scala/encry/local/miner/Worker.scala +++ b/src/main/scala/encry/local/miner/Worker.scala @@ -12,7 +12,7 @@ import encry.local.miner.Worker.{MineBlock, NextChallenge} import java.text.SimpleDateFormat import com.typesafe.scalalogging.StrictLogging -import encry.settings.MainConstants.constants +import encry.settings.Constants.constants class Worker(myIdx: Int, numberOfWorkers: Int) extends Actor with StrictLogging { diff --git a/src/main/scala/encry/modifiers/history/HeaderUtils.scala b/src/main/scala/encry/modifiers/history/HeaderUtils.scala index 96096fa69e..019a6c91e8 100644 --- a/src/main/scala/encry/modifiers/history/HeaderUtils.scala +++ b/src/main/scala/encry/modifiers/history/HeaderUtils.scala @@ -2,7 +2,7 @@ package encry.modifiers.history import encry.settings.TestConstants import org.encryfoundation.common.modifiers.history.Header -import encry.settings.MainConstants.constants +import encry.settings.Constants.constants import org.encryfoundation.common.validation.{ModifierValidator, ValidationResult} object HeaderUtils { diff --git a/src/main/scala/encry/modifiers/history/PayloadUtils.scala b/src/main/scala/encry/modifiers/history/PayloadUtils.scala index eb2174f439..fba2682fdc 100644 --- a/src/main/scala/encry/modifiers/history/PayloadUtils.scala +++ b/src/main/scala/encry/modifiers/history/PayloadUtils.scala @@ -1,7 +1,7 @@ package encry.modifiers.history import org.encryfoundation.common.modifiers.history.Payload -import encry.settings.MainConstants.constants +import encry.settings.Constants.constants import org.encryfoundation.common.validation.{ModifierValidator, ValidationResult} object PayloadUtils { diff --git a/src/main/scala/encry/settings/MainConstants.scala b/src/main/scala/encry/settings/Constants.scala similarity index 96% rename from src/main/scala/encry/settings/MainConstants.scala rename to src/main/scala/encry/settings/Constants.scala index 80a30823cf..c254f81c8f 100644 --- a/src/main/scala/encry/settings/MainConstants.scala +++ b/src/main/scala/encry/settings/Constants.scala @@ -3,7 +3,7 @@ package encry.settings import com.typesafe.config.{Config, ConfigFactory} import org.encryfoundation.common.utils.constants.{Constants, TestNetConstants} -object MainConstants { +object Constants { val keyPath = "encry.node.constantsClass" lazy val config: Config = ConfigFactory.load() diff --git a/src/main/scala/encry/utils/BalanceCalculator.scala b/src/main/scala/encry/utils/BalanceCalculator.scala index 25372f7e80..f518f70a01 100644 --- a/src/main/scala/encry/utils/BalanceCalculator.scala +++ b/src/main/scala/encry/utils/BalanceCalculator.scala @@ -1,6 +1,6 @@ package encry.utils -import encry.settings.MainConstants.constants +import encry.settings.Constants.constants import org.encryfoundation.common.modifiers.state.box.Box.Amount import org.encryfoundation.common.modifiers.state.box.TokenIssuingBox.TokenId import org.encryfoundation.common.modifiers.state.box.{AssetBox, EncryBaseBox, TokenIssuingBox} diff --git a/src/main/scala/encry/view/ModifiersCache.scala b/src/main/scala/encry/view/ModifiersCache.scala index 1ec8349bd3..5589726fff 100644 --- a/src/main/scala/encry/view/ModifiersCache.scala +++ b/src/main/scala/encry/view/ModifiersCache.scala @@ -2,7 +2,7 @@ package encry.view import com.typesafe.scalalogging.StrictLogging import encry.EncryApp.settings -import encry.settings.MainConstants.constants +import encry.settings.Constants.constants import encry.view.history.History import encry.view.history.ValidationError.{FatalValidationError, NonFatalValidationError} import org.encryfoundation.common.modifiers.PersistentModifier diff --git a/src/main/scala/encry/view/history/BlockDownloadProcessor.scala b/src/main/scala/encry/view/history/BlockDownloadProcessor.scala index d2b70befb8..07c294a1cb 100644 --- a/src/main/scala/encry/view/history/BlockDownloadProcessor.scala +++ b/src/main/scala/encry/view/history/BlockDownloadProcessor.scala @@ -2,7 +2,7 @@ package encry.view.history import encry.settings.NodeSettings import org.encryfoundation.common.modifiers.history.Header -import encry.settings.MainConstants.constants +import encry.settings.Constants.constants /** Class that keeps and calculates minimal height for full blocks starting from which we need to download these full * blocks from the network and keep them in our history. */ diff --git a/src/main/scala/encry/view/history/HistoryApi.scala b/src/main/scala/encry/view/history/HistoryApi.scala index 3ffdf24b67..eb3c33c349 100644 --- a/src/main/scala/encry/view/history/HistoryApi.scala +++ b/src/main/scala/encry/view/history/HistoryApi.scala @@ -12,7 +12,7 @@ import org.encryfoundation.common.modifiers.history.{Block, BlockProtoSerializer import org.encryfoundation.common.network.SyncInfo import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.{Difficulty, Height, ModifierId, ModifierTypeId} -import encry.settings.MainConstants.constants +import encry.settings.Constants.constants import scala.annotation.tailrec import scala.collection.immutable.HashSet diff --git a/src/main/scala/encry/view/history/HistoryDBApi.scala b/src/main/scala/encry/view/history/HistoryDBApi.scala index 149af7cbde..b38becc8ac 100644 --- a/src/main/scala/encry/view/history/HistoryDBApi.scala +++ b/src/main/scala/encry/view/history/HistoryDBApi.scala @@ -7,7 +7,7 @@ import encry.view.history.storage.HistoryStorage import org.encryfoundation.common.modifiers.history.{Block, Header, Payload} import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.{Height, ModifierId, ModifierTypeId} -import encry.settings.MainConstants.constants +import encry.settings.Constants.constants import scorex.crypto.hash.Digest32 import scala.reflect.ClassTag diff --git a/src/main/scala/encry/view/history/HistoryModifiersProcessors.scala b/src/main/scala/encry/view/history/HistoryModifiersProcessors.scala index d6017bd25f..62e07a0b49 100644 --- a/src/main/scala/encry/view/history/HistoryModifiersProcessors.scala +++ b/src/main/scala/encry/view/history/HistoryModifiersProcessors.scala @@ -9,7 +9,7 @@ import encry.storage.VersionalStorage.{StorageKey, StorageValue} import org.encryfoundation.common.modifiers.PersistentModifier import org.encryfoundation.common.modifiers.history.{Block, Header, Payload} import org.encryfoundation.common.utils.TaggedTypes.{Difficulty, ModifierId} -import encry.settings.MainConstants.constants +import encry.settings.Constants.constants import cats.syntax.option._ import scala.annotation.tailrec import cats.syntax.either._ diff --git a/src/main/scala/encry/view/history/HistoryModifiersValidator.scala b/src/main/scala/encry/view/history/HistoryModifiersValidator.scala index e0ee2c0190..f250e69eb5 100644 --- a/src/main/scala/encry/view/history/HistoryModifiersValidator.scala +++ b/src/main/scala/encry/view/history/HistoryModifiersValidator.scala @@ -4,7 +4,7 @@ import encry.view.history.ValidationError.FatalValidationError._ import encry.view.history.ValidationError.NonFatalValidationError._ import org.encryfoundation.common.modifiers.PersistentModifier import org.encryfoundation.common.modifiers.history.{Header, Payload} -import encry.settings.MainConstants.constants +import encry.settings.Constants.constants import org.encryfoundation.common.validation.ModifierSemanticValidity import cats.syntax.either._ import encry.consensus.EquihashPowScheme diff --git a/src/main/scala/encry/view/state/UtxoState.scala b/src/main/scala/encry/view/state/UtxoState.scala index 0266cfe4d6..2dacc3400c 100644 --- a/src/main/scala/encry/view/state/UtxoState.scala +++ b/src/main/scala/encry/view/state/UtxoState.scala @@ -33,7 +33,7 @@ import org.encryfoundation.common.modifiers.state.box.TokenIssuingBox.TokenId import org.encryfoundation.common.modifiers.state.box.{AssetBox, EncryBaseBox, EncryProposition} import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.{ADDigest, Height} -import encry.settings.MainConstants.constants +import encry.settings.Constants.constants import org.encryfoundation.common.validation.ValidationResult.Invalid import org.encryfoundation.common.validation.{MalformedModifierError, ValidationResult} import org.iq80.leveldb.Options diff --git a/src/test/scala/encry/consensus/PowLinearControllerSpec.scala b/src/test/scala/encry/consensus/PowLinearControllerSpec.scala index ebe4b82b8d..c27c2b1b86 100644 --- a/src/test/scala/encry/consensus/PowLinearControllerSpec.scala +++ b/src/test/scala/encry/consensus/PowLinearControllerSpec.scala @@ -1,9 +1,9 @@ package encry.consensus -import encry.settings.MainConstants.constants +import encry.settings.Constants.constants import org.encryfoundation.common.utils.TaggedTypes.Height import org.scalatest.{Matchers, PropSpec} -import encry.settings.MainConstants.constants +import encry.settings.Constants.constants import scala.collection.immutable class PowLinearControllerSpec extends PropSpec with Matchers { diff --git a/src/test/scala/encry/consensus/emission/EncrySupplyControllerTest.scala b/src/test/scala/encry/consensus/emission/EncrySupplyControllerTest.scala index 84f5001d85..88c9c7c4de 100644 --- a/src/test/scala/encry/consensus/emission/EncrySupplyControllerTest.scala +++ b/src/test/scala/encry/consensus/emission/EncrySupplyControllerTest.scala @@ -4,7 +4,7 @@ import encry.consensus.EncrySupplyController import encry.utils.EncryGenerator import org.encryfoundation.common.utils.TaggedTypes.Height import org.scalatest.{Matchers, PropSpec} -import encry.settings.MainConstants.constants +import encry.settings.Constants.constants import scala.concurrent.duration._ class EncrySupplyControllerTest extends PropSpec with Matchers with EncryGenerator { diff --git a/src/test/scala/encry/modifiers/InstanceFactory.scala b/src/test/scala/encry/modifiers/InstanceFactory.scala index c2cd2f77c7..5d94b2a1c8 100755 --- a/src/test/scala/encry/modifiers/InstanceFactory.scala +++ b/src/test/scala/encry/modifiers/InstanceFactory.scala @@ -2,7 +2,7 @@ package encry.modifiers import encry.modifiers.mempool._ import encry.modifiers.state.Keys -import encry.settings.{EncryAppSettings, MainConstants, NodeSettings} +import encry.settings.{EncryAppSettings, Constants, NodeSettings} import encry.storage.levelDb.versionalLevelDB.{LevelDbFactory, VLDBWrapper, VersionalLevelDBCompanion} import encry.utils.{EncryGenerator, FileHelper, NetworkTimeProvider, TestHelper} import encry.view.history.History @@ -21,7 +21,7 @@ import org.encryfoundation.prismlang.core.{Ast, Types} import org.iq80.leveldb.Options import scorex.crypto.hash.Digest32 import scorex.utils.Random -import encry.settings.MainConstants.constants +import encry.settings.Constants.constants import scala.util.{Random => Scarand} diff --git a/src/test/scala/encry/modifiers/history/BlockSerializerTest.scala b/src/test/scala/encry/modifiers/history/BlockSerializerTest.scala index 31a697c72a..8661050e93 100755 --- a/src/test/scala/encry/modifiers/history/BlockSerializerTest.scala +++ b/src/test/scala/encry/modifiers/history/BlockSerializerTest.scala @@ -6,11 +6,11 @@ import org.encryfoundation.common.crypto.equihash.EquihashSolution import org.encryfoundation.common.modifiers.history._ import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.{ADDigest, ModifierId} -import encry.settings.MainConstants.constants +import encry.settings.Constants.constants import org.scalatest.FunSuite import scorex.crypto.hash.Digest32 import scorex.utils.Random -import encry.settings.MainConstants.constants +import encry.settings.Constants.constants class BlockSerializerTest extends FunSuite with EncryGenerator { diff --git a/src/test/scala/encry/network/DownloadedModifiersValidatorTests.scala b/src/test/scala/encry/network/DownloadedModifiersValidatorTests.scala index eae634d939..be37046b84 100644 --- a/src/test/scala/encry/network/DownloadedModifiersValidatorTests.scala +++ b/src/test/scala/encry/network/DownloadedModifiersValidatorTests.scala @@ -16,11 +16,11 @@ import org.encryfoundation.common.crypto.equihash.EquihashSolution import org.encryfoundation.common.modifiers.history.{Block, Header, HeaderProtoSerializer, Payload, PayloadProtoSerializer} import org.encryfoundation.common.network.BasicMessagesRepo.Handshake import org.encryfoundation.common.utils.TaggedTypes.ModifierId -import encry.settings.MainConstants.constants +import encry.settings.Constants.constants import org.scalatest.{BeforeAndAfterAll, Matchers, OneInstancePerTest, WordSpecLike} import scorex.crypto.hash.Digest32 import scorex.utils.Random -import encry.settings.MainConstants.constants +import encry.settings.Constants.constants class DownloadedModifiersValidatorTests extends WordSpecLike with Matchers diff --git a/src/test/scala/encry/utils/EncryGenerator.scala b/src/test/scala/encry/utils/EncryGenerator.scala index 2fd3b3cd88..2742cfe837 100644 --- a/src/test/scala/encry/utils/EncryGenerator.scala +++ b/src/test/scala/encry/utils/EncryGenerator.scala @@ -3,8 +3,8 @@ package encry.utils import encry.modifiers.mempool.TransactionFactory import encry.modifiers.mempool.directive._ import encry.modifiers.state.box._ -import encry.settings.MainConstants -import encry.settings.MainConstants.constants +import encry.settings.Constants +import encry.settings.Constants.constants import encry.utils.TestHelper.Props import org.encryfoundation.common.crypto.equihash.EquihashSolution import org.encryfoundation.common.crypto.{PrivateKey25519, PublicKey25519, Signature25519} @@ -19,7 +19,7 @@ import org.encryfoundation.prismlang.core.wrapped.BoxedValue import scorex.crypto.hash.{Blake2b256, Digest32} import scorex.crypto.signatures.{Curve25519, PrivateKey, PublicKey} import scorex.utils.Random -import encry.settings.MainConstants.constants +import encry.settings.Constants.constants import scala.util.{Random => ScRand} trait EncryGenerator { diff --git a/src/test/scala/encry/view/state/UtxoStateSpec.scala b/src/test/scala/encry/view/state/UtxoStateSpec.scala index 3cc51a82ff..dc7b816a60 100755 --- a/src/test/scala/encry/view/state/UtxoStateSpec.scala +++ b/src/test/scala/encry/view/state/UtxoStateSpec.scala @@ -12,10 +12,10 @@ import encry.storage.levelDb.versionalLevelDB.{LevelDbFactory, VLDBWrapper, Vers import encry.utils.{EncryGenerator, FileHelper, TestHelper} import io.iohk.iodb.LSMStore import org.encryfoundation.common.modifiers.history.{Block, Payload} -import encry.settings.MainConstants.constants +import encry.settings.Constants.constants import org.iq80.leveldb.Options import org.scalatest.{Matchers, PropSpec} -import encry.settings.MainConstants.constants +import encry.settings.Constants.constants import scala.concurrent.ExecutionContextExecutor class UtxoStateSpec extends PropSpec with Matchers with EncryGenerator { diff --git a/src/test/scala/encry/view/wallet/WalletSpec.scala b/src/test/scala/encry/view/wallet/WalletSpec.scala index 1e905d53cc..3a466d6e5a 100644 --- a/src/test/scala/encry/view/wallet/WalletSpec.scala +++ b/src/test/scala/encry/view/wallet/WalletSpec.scala @@ -12,7 +12,7 @@ import org.encryfoundation.common.modifiers.mempool.transaction.Transaction import org.encryfoundation.common.modifiers.state.box.{AssetBox, MonetaryBox} import org.encryfoundation.common.utils.TaggedTypes.ModifierId import org.scalatest.{Matchers, PropSpec} -import encry.settings.MainConstants.constants +import encry.settings.Constants.constants class WalletSpec extends PropSpec with Matchers with InstanceFactory with EncryGenerator with StrictLogging { From 58d65c5d584b65f7b4bd1763fabcce034a2a96f2 Mon Sep 17 00:00:00 2001 From: capdev Date: Fri, 6 Sep 2019 10:21:44 +0500 Subject: [PATCH 20/51] add SlowMiningConstants --- src/main/scala/encry/settings/Constants.scala | 9 +-- .../encry/settings/SlowMiningConstants.scala | 68 +++++++++++++++++++ 2 files changed, 71 insertions(+), 6 deletions(-) create mode 100644 src/main/scala/encry/settings/SlowMiningConstants.scala diff --git a/src/main/scala/encry/settings/Constants.scala b/src/main/scala/encry/settings/Constants.scala index c254f81c8f..fa06f9e840 100644 --- a/src/main/scala/encry/settings/Constants.scala +++ b/src/main/scala/encry/settings/Constants.scala @@ -13,12 +13,9 @@ object Constants { def getConstants(constantsClass: String): Constants = { constantsClass match { - case "TestConstants" => - println("TestConstants") - TestConstants - case _ => - println("TestNetConstants") - TestNetConstants + case "TestConstants" => TestConstants + case "SlowMiningConstants" => SlowMiningConstants + case _ => TestNetConstants } } diff --git a/src/main/scala/encry/settings/SlowMiningConstants.scala b/src/main/scala/encry/settings/SlowMiningConstants.scala new file mode 100644 index 0000000000..efbc3a1ee9 --- /dev/null +++ b/src/main/scala/encry/settings/SlowMiningConstants.scala @@ -0,0 +1,68 @@ +package encry.settings + +import org.encryfoundation.common.utils.Algos +import org.encryfoundation.common.utils.TaggedTypes.{ADKey, Difficulty, Height} +import org.encryfoundation.common.utils.constants.Constants + +import scala.concurrent.duration._ + +case object SlowMiningConstants extends Constants { + + val DigestLength: Int = 32 + + val ModifierIdSize: Int = DigestLength + + val PayloadMaxSize: Int = 1000000 + + val HeaderMaxSize: Int = 200 + + val DefaultKeepVersions: Int = 200 + + val PersistentByteCost: Int = 16 + + val StateByteCost: Int = 26 + + val MaxDataLength: Int = 1000 + + val AfterGenesisStateDigestHex: String = "39bc0df81fec1ee7b3804eb42084883ce4925aec8393df39806f00e129ade9f101" + + val GenesisStateVersion: String = "0909090909090909090909090909090909090909090909090909090909090909" + + val IntrinsicTokenId: ADKey = ADKey !@@ Algos.hash("intrinsic_token") + + val ConsensusScheme: String = "equihash" + + val HashLength: Int = 32 + + val MaxTarget: BigInt = BigInt(1, Array.fill(HashLength)((-1).toByte)) + + val InitialDifficulty: Difficulty = Difficulty @@ BigInt(1) + + val Version: Byte = 0: Byte + + val InitialEmissionAmount: Int = 1000000000 + + val EmissionDecay = 0.05 + + val EmissionEpochLength: Int = 5040 + + val DesiredBlockInterval: FiniteDuration = 5 minutes//120.seconds + + val NewHeaderTimeMultiplier: Int = 5 + + val RetargetingEpochsQty: Int = 2//4 + + val EpochLength: Int = 3//100 + + val GenesisHeight: Height = Height @@ 0 + + val PreGenesisHeight: Height = Height @@ (GenesisHeight - 1) + + val MaxRollbackDepth: Int = 100 + + val MaxTimeDrift: Long = 2.hours.toMillis + + val n: Char = 96 + + val k: Char = 5 +} \ No newline at end of file From abc87eb3d6a0d7d426c4f8a879251c62bea2987a Mon Sep 17 00:00:00 2001 From: capdev Date: Fri, 6 Sep 2019 11:03:44 +0500 Subject: [PATCH 21/51] add constantsClass wrapper --- it/src/main/scala/encry/it/configs/Configs.scala | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/it/src/main/scala/encry/it/configs/Configs.scala b/it/src/main/scala/encry/it/configs/Configs.scala index 16737ccce2..a7c940976d 100644 --- a/it/src/main/scala/encry/it/configs/Configs.scala +++ b/it/src/main/scala/encry/it/configs/Configs.scala @@ -62,4 +62,11 @@ object Configs { |encry.restApi.bindAddress = "$address" """.stripMargin ) + + def constantsClass(name: String): Config = ConfigFactory.parseString( + s""" + |encry.node.constantsClass="$name" + """.stripMargin + ) + } From 26a5ff9db7cd4654b57d53c527f726ad9a7d46b6 Mon Sep 17 00:00:00 2001 From: capdev Date: Fri, 6 Sep 2019 12:01:57 +0500 Subject: [PATCH 22/51] add fixed network port add slow mining settings --- .../scala/encry/it/forkResolving/SyncThreeNodesTest.scala | 5 ++++- ...WithFirstTest.scala => SyncThreeNodesWithDelayTest.scala} | 5 ++++- .../test/scala/encry/it/forkResolving/SyncTwoNodesTest.scala | 1 + 3 files changed, 9 insertions(+), 2 deletions(-) rename it/src/test/scala/encry/it/forkResolving/{TwoNodesSyncWithFirstTest.scala => SyncThreeNodesWithDelayTest.scala} (86%) diff --git a/it/src/test/scala/encry/it/forkResolving/SyncThreeNodesTest.scala b/it/src/test/scala/encry/it/forkResolving/SyncThreeNodesTest.scala index ca19d8028b..756d4bfcc6 100644 --- a/it/src/test/scala/encry/it/forkResolving/SyncThreeNodesTest.scala +++ b/it/src/test/scala/encry/it/forkResolving/SyncThreeNodesTest.scala @@ -12,13 +12,15 @@ import scala.concurrent.duration._ class SyncThreeNodesTest extends FunSuite with Matchers with DockerAfterAll { implicit val futureDuration: FiniteDuration = 30 minutes - val heightSeparation = 10 //blocks + val heightSeparation = 5 //blocks test("Late node should sync with the first of two nodes") { val miningNodeConfig = Configs.mining(true) .withFallback(Configs.offlineGeneration(true)) + .withFallback(Configs.networkAddress("0.0.0.0:9001")) .withFallback(Configs.knownPeers(Seq())) + .withFallback(Configs.constantsClass("SlowMiningConstants")) .withFallback(defaultConf) val node1 = docker @@ -33,6 +35,7 @@ class SyncThreeNodesTest extends FunSuite with Matchers with DockerAfterAll { .startNodeInternal( Configs.nodeName("node3") .withFallback(Configs.mining(false)) + .withFallback(Configs.networkAddress("0.0.0.0:9001")) .withFallback(Configs.knownPeers(Seq((node1.nodeIp, 9001), (node2.nodeIp, 9001)))) .withFallback(defaultConf) ) diff --git a/it/src/test/scala/encry/it/forkResolving/TwoNodesSyncWithFirstTest.scala b/it/src/test/scala/encry/it/forkResolving/SyncThreeNodesWithDelayTest.scala similarity index 86% rename from it/src/test/scala/encry/it/forkResolving/TwoNodesSyncWithFirstTest.scala rename to it/src/test/scala/encry/it/forkResolving/SyncThreeNodesWithDelayTest.scala index 882e700b40..bba3f22296 100644 --- a/it/src/test/scala/encry/it/forkResolving/TwoNodesSyncWithFirstTest.scala +++ b/it/src/test/scala/encry/it/forkResolving/SyncThreeNodesWithDelayTest.scala @@ -9,7 +9,7 @@ import org.scalatest.{FunSuite, Matchers} import scala.concurrent.duration._ import scala.concurrent.{Await, Future} -class TwoNodesSyncWithFirstTest extends FunSuite with Matchers with DockerAfterAll { +class SyncThreeNodesWithDelayTest extends FunSuite with Matchers with DockerAfterAll { implicit class FutureBlockedRun[T](future: Future[T]) { def run(implicit duration: Duration): T = Await.result(future, duration) @@ -22,7 +22,9 @@ class TwoNodesSyncWithFirstTest extends FunSuite with Matchers with DockerAfterA val miningNodeConfig = Configs.mining(true) .withFallback(Configs.offlineGeneration(true)) + .withFallback(Configs.networkAddress("0.0.0.0:9001")) .withFallback(Configs.knownPeers(Seq())) + .withFallback(Configs.constantsClass("SlowMiningConstants")) .withFallback(defaultConf) val node1 = docker @@ -39,6 +41,7 @@ class TwoNodesSyncWithFirstTest extends FunSuite with Matchers with DockerAfterA .startNodeInternal( Configs.nodeName("node3") .withFallback(Configs.mining(false)) + .withFallback(Configs.networkAddress("0.0.0.0:9001")) .withFallback(Configs.knownPeers(Seq((node1.nodeIp, 9001), (node2.nodeIp, 9001)))) .withFallback(defaultConf) ) diff --git a/it/src/test/scala/encry/it/forkResolving/SyncTwoNodesTest.scala b/it/src/test/scala/encry/it/forkResolving/SyncTwoNodesTest.scala index 8329cc98f4..d8b46e5eb5 100644 --- a/it/src/test/scala/encry/it/forkResolving/SyncTwoNodesTest.scala +++ b/it/src/test/scala/encry/it/forkResolving/SyncTwoNodesTest.scala @@ -19,6 +19,7 @@ class SyncTwoNodesTest extends FunSuite with Matchers with DockerAfterAll { val miningNodeConfig = Configs.mining(true) .withFallback(Configs.offlineGeneration(true)) .withFallback(Configs.knownPeers(Seq())) + .withFallback(Configs.networkAddress("0.0.0.0:9001")) .withFallback(Docker.defaultConf) val node1 = docker From 8f56ecbbcb2cf7fc10b558123ac115e7ca2f307a Mon Sep 17 00:00:00 2001 From: capdev Date: Fri, 6 Sep 2019 12:44:55 +0500 Subject: [PATCH 23/51] add SyncThreeNodesKnowAboutEachOtherTest --- ...SyncThreeNodesKnowAboutEachOtherTest.scala | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 it/src/test/scala/encry/it/forkResolving/SyncThreeNodesKnowAboutEachOtherTest.scala diff --git a/it/src/test/scala/encry/it/forkResolving/SyncThreeNodesKnowAboutEachOtherTest.scala b/it/src/test/scala/encry/it/forkResolving/SyncThreeNodesKnowAboutEachOtherTest.scala new file mode 100644 index 0000000000..8e3a620dd2 --- /dev/null +++ b/it/src/test/scala/encry/it/forkResolving/SyncThreeNodesKnowAboutEachOtherTest.scala @@ -0,0 +1,59 @@ +package encry.it.forkResolving + +import encry.it.configs.Configs +import encry.it.docker.Docker.defaultConf +import encry.it.docker.DockerAfterAll +import encry.it.util.WaitUtils._ +import encry.it.utils.FutureBlockedRun._ +import org.scalatest.{FunSuite, Matchers} + +import scala.concurrent.duration._ + +class SyncThreeNodesKnowAboutEachOtherTest extends FunSuite with Matchers with DockerAfterAll { + + implicit val futureDuration: FiniteDuration = 30 minutes + val heightSeparation = 10 //blocks + + test("nodes know about each other should sync") { + + val node1 = docker + .startNodeInternal(Configs.nodeName("node1") + .withFallback(Configs.mining(true)) + .withFallback(Configs.offlineGeneration(true)) + .withFallback(Configs.networkAddress("0.0.0.0:9001")) + .withFallback(Configs.knownPeers(Seq())) + .withFallback(defaultConf) + ) + + node1.waitForFullHeight(heightSeparation).run + println("try start node2") + val node2 = docker + .startNodeInternal(Configs.nodeName("node2") + .withFallback(Configs.mining(true)) + .withFallback(Configs.offlineGeneration(false)) + .withFallback(Configs.networkAddress("0.0.0.0:9001")) + .withFallback(Configs.knownPeers(Seq((node1.nodeIp, 9001)))) + .withFallback(defaultConf) + ) + + node1.connect(s"${node2.nodeIp}:9001").run + + node1.waitForFullHeight(heightSeparation * 2).run + + val node3 = docker + .startNodeInternal(Configs.nodeName("node3") + .withFallback(Configs.mining(true)) + .withFallback(Configs.offlineGeneration(false)) + .withFallback(Configs.networkAddress("0.0.0.0:9001")) + .withFallback(Configs.knownPeers(Seq((node1.nodeIp, 9001), (node2.nodeIp, 9001)))) + .withFallback(defaultConf) + ) + + waitForEqualsId(node1.bestFullHeaderId.run, node3.bestFullHeaderId.run) + + val (bestFullHeaderId2, bestFullHeaderId3) = + waitForEqualsId(node2.bestFullHeaderId.run, node3.bestFullHeaderId.run) + + bestFullHeaderId2 shouldEqual bestFullHeaderId3 + } +} From 63e07f46ad78be2bc2842105def63fafed348c8e Mon Sep 17 00:00:00 2001 From: capdev Date: Fri, 6 Sep 2019 12:45:29 +0500 Subject: [PATCH 24/51] =?UTF-8?q?add=20SyncThreeNodes=D0=A1onnectedWithFir?= =?UTF-8?q?stTest?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...eNodes\320\241onnectedWithFirstTest.scala" | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 "it/src/test/scala/encry/it/forkResolving/SyncThreeNodes\320\241onnectedWithFirstTest.scala" diff --git "a/it/src/test/scala/encry/it/forkResolving/SyncThreeNodes\320\241onnectedWithFirstTest.scala" "b/it/src/test/scala/encry/it/forkResolving/SyncThreeNodes\320\241onnectedWithFirstTest.scala" new file mode 100644 index 0000000000..7e6fb3be71 --- /dev/null +++ "b/it/src/test/scala/encry/it/forkResolving/SyncThreeNodes\320\241onnectedWithFirstTest.scala" @@ -0,0 +1,57 @@ +package encry.it.forkResolving + +import encry.it.configs.Configs +import encry.it.docker.Docker.defaultConf +import encry.it.docker.DockerAfterAll +import encry.it.util.WaitUtils._ +import encry.it.utils.FutureBlockedRun._ +import org.scalatest.{FunSuite, Matchers} + +import scala.concurrent.duration._ + +class SyncThreeNodesСonnectedWithFirstTest extends FunSuite with Matchers with DockerAfterAll { + + implicit val futureDuration: FiniteDuration = 30 minutes + val heightSeparation = 10 //blocks + + test("nodes connected with first should sync") { + + val node1 = docker + .startNodeInternal(Configs.nodeName("node1") + .withFallback(Configs.mining(true)) + .withFallback(Configs.offlineGeneration(true)) + .withFallback(Configs.networkAddress("0.0.0.0:9001")) + .withFallback(Configs.knownPeers(Seq())) + .withFallback(defaultConf) + ) + + node1.waitForFullHeight(heightSeparation).run + + val node2 = docker + .startNodeInternal(Configs.nodeName("node2") + .withFallback(Configs.mining(true)) + .withFallback(Configs.offlineGeneration(false)) + .withFallback(Configs.networkAddress("0.0.0.0:9001")) + .withFallback(Configs.knownPeers(Seq())) + .withFallback(defaultConf) + ) + + node1.waitForFullHeight(heightSeparation * 2).run + + val node3 = docker + .startNodeInternal(Configs.nodeName("node3") + .withFallback(Configs.mining(true)) + .withFallback(Configs.offlineGeneration(false)) + .withFallback(Configs.networkAddress("0.0.0.0:9001")) + .withFallback(Configs.knownPeers(Seq((node1.nodeIp, 9001), (node2.nodeIp, 9001)))) + .withFallback(defaultConf) + ) + + waitForEqualsId(node1.bestFullHeaderId.run, node3.bestFullHeaderId.run) + + val (bestFullHeaderId2, bestFullHeaderId3) = + waitForEqualsId(node2.bestFullHeaderId.run, node3.bestFullHeaderId.run) + + bestFullHeaderId2 shouldEqual bestFullHeaderId3 + } +} From 415d3293a6613e688a71c5669d1b64a9492c3872 Mon Sep 17 00:00:00 2001 From: capdev Date: Fri, 6 Sep 2019 13:17:22 +0500 Subject: [PATCH 25/51] refactoring --- .../it/various\320\241ompound/NodeRestartTest.scala" | 6 +++--- .../ThreeNodesKnowAboutEachOtherTest.scala" | 8 ++++---- .../it/various\320\241ompound/TwoNodesTest.scala" | 6 +++--- .../TwoNodes\320\241onnectedThroughOneTest.scala" | 6 +++--- .../TwoOfflinegenDelayTest.scala" | 10 +++++----- .../it/various\320\241ompound/TwoOfflinegenTest.scala" | 8 ++++---- 6 files changed, 22 insertions(+), 22 deletions(-) rename it/src/test/scala/encry/it/forkResolving/SyncAfterNodeRestartTest.scala => "it/src/test/scala/encry/it/various\320\241ompound/NodeRestartTest.scala" (92%) rename it/src/test/scala/encry/it/forkResolving/SyncThreeNodesKnowAboutEachOtherTest.scala => "it/src/test/scala/encry/it/various\320\241ompound/ThreeNodesKnowAboutEachOtherTest.scala" (89%) rename it/src/test/scala/encry/it/forkResolving/SyncTwoNodesTest.scala => "it/src/test/scala/encry/it/various\320\241ompound/TwoNodesTest.scala" (87%) rename "it/src/test/scala/encry/it/forkResolving/SyncThreeNodes\320\241onnectedWithFirstTest.scala" => "it/src/test/scala/encry/it/various\320\241ompound/TwoNodes\320\241onnectedThroughOneTest.scala" (90%) rename it/src/test/scala/encry/it/forkResolving/SyncThreeNodesWithDelayTest.scala => "it/src/test/scala/encry/it/various\320\241ompound/TwoOfflinegenDelayTest.scala" (84%) rename it/src/test/scala/encry/it/forkResolving/SyncThreeNodesTest.scala => "it/src/test/scala/encry/it/various\320\241ompound/TwoOfflinegenTest.scala" (85%) diff --git a/it/src/test/scala/encry/it/forkResolving/SyncAfterNodeRestartTest.scala "b/it/src/test/scala/encry/it/various\320\241ompound/NodeRestartTest.scala" similarity index 92% rename from it/src/test/scala/encry/it/forkResolving/SyncAfterNodeRestartTest.scala rename to "it/src/test/scala/encry/it/various\320\241ompound/NodeRestartTest.scala" index 0fea5dd3c9..43712daa53 100644 --- a/it/src/test/scala/encry/it/forkResolving/SyncAfterNodeRestartTest.scala +++ "b/it/src/test/scala/encry/it/various\320\241ompound/NodeRestartTest.scala" @@ -1,4 +1,4 @@ -package encry.it.forkResolving +package encry.it.variousСompound import java.nio.file.Paths @@ -13,9 +13,9 @@ import scorex.utils.Random import scala.concurrent.duration._ -class SyncAfterNodeRestartTest extends AsyncFunSuite with Matchers with DockerAfterAll { +class NodeRestartTest extends AsyncFunSuite with Matchers with DockerAfterAll { - implicit val futureDuration: FiniteDuration = 30 minutes + implicit val futureDuration: FiniteDuration = 10 minutes test("Nodes should sync after restart with new offlineGeneration and port") { val node1 = docker diff --git a/it/src/test/scala/encry/it/forkResolving/SyncThreeNodesKnowAboutEachOtherTest.scala "b/it/src/test/scala/encry/it/various\320\241ompound/ThreeNodesKnowAboutEachOtherTest.scala" similarity index 89% rename from it/src/test/scala/encry/it/forkResolving/SyncThreeNodesKnowAboutEachOtherTest.scala rename to "it/src/test/scala/encry/it/various\320\241ompound/ThreeNodesKnowAboutEachOtherTest.scala" index 8e3a620dd2..7a9f5150e2 100644 --- a/it/src/test/scala/encry/it/forkResolving/SyncThreeNodesKnowAboutEachOtherTest.scala +++ "b/it/src/test/scala/encry/it/various\320\241ompound/ThreeNodesKnowAboutEachOtherTest.scala" @@ -1,4 +1,4 @@ -package encry.it.forkResolving +package encry.it.variousСompound import encry.it.configs.Configs import encry.it.docker.Docker.defaultConf @@ -9,9 +9,9 @@ import org.scalatest.{FunSuite, Matchers} import scala.concurrent.duration._ -class SyncThreeNodesKnowAboutEachOtherTest extends FunSuite with Matchers with DockerAfterAll { +class ThreeNodesKnowAboutEachOtherTest extends FunSuite with Matchers with DockerAfterAll { - implicit val futureDuration: FiniteDuration = 30 minutes + implicit val futureDuration: FiniteDuration = 10 minutes val heightSeparation = 10 //blocks test("nodes know about each other should sync") { @@ -26,7 +26,7 @@ class SyncThreeNodesKnowAboutEachOtherTest extends FunSuite with Matchers with D ) node1.waitForFullHeight(heightSeparation).run - println("try start node2") + val node2 = docker .startNodeInternal(Configs.nodeName("node2") .withFallback(Configs.mining(true)) diff --git a/it/src/test/scala/encry/it/forkResolving/SyncTwoNodesTest.scala "b/it/src/test/scala/encry/it/various\320\241ompound/TwoNodesTest.scala" similarity index 87% rename from it/src/test/scala/encry/it/forkResolving/SyncTwoNodesTest.scala rename to "it/src/test/scala/encry/it/various\320\241ompound/TwoNodesTest.scala" index d8b46e5eb5..3c3b85af47 100644 --- a/it/src/test/scala/encry/it/forkResolving/SyncTwoNodesTest.scala +++ "b/it/src/test/scala/encry/it/various\320\241ompound/TwoNodesTest.scala" @@ -1,4 +1,4 @@ -package encry.it.forkResolving +package encry.it.variousСompound import encry.it.configs.Configs import encry.it.docker.Docker.defaultConf @@ -9,9 +9,9 @@ import org.scalatest.{FunSuite, Matchers} import scala.concurrent.duration._ -class SyncTwoNodesTest extends FunSuite with Matchers with DockerAfterAll { +class TwoNodesTest extends FunSuite with Matchers with DockerAfterAll { - implicit val futureDuration: FiniteDuration = 30 minutes + implicit val futureDuration: FiniteDuration = 10 minutes val heightSeparation = 10 //blocks test("Late node should sync with one node") { diff --git "a/it/src/test/scala/encry/it/forkResolving/SyncThreeNodes\320\241onnectedWithFirstTest.scala" "b/it/src/test/scala/encry/it/various\320\241ompound/TwoNodes\320\241onnectedThroughOneTest.scala" similarity index 90% rename from "it/src/test/scala/encry/it/forkResolving/SyncThreeNodes\320\241onnectedWithFirstTest.scala" rename to "it/src/test/scala/encry/it/various\320\241ompound/TwoNodes\320\241onnectedThroughOneTest.scala" index 7e6fb3be71..f7130ec422 100644 --- "a/it/src/test/scala/encry/it/forkResolving/SyncThreeNodes\320\241onnectedWithFirstTest.scala" +++ "b/it/src/test/scala/encry/it/various\320\241ompound/TwoNodes\320\241onnectedThroughOneTest.scala" @@ -1,4 +1,4 @@ -package encry.it.forkResolving +package encry.it.variousСompound import encry.it.configs.Configs import encry.it.docker.Docker.defaultConf @@ -9,9 +9,9 @@ import org.scalatest.{FunSuite, Matchers} import scala.concurrent.duration._ -class SyncThreeNodesСonnectedWithFirstTest extends FunSuite with Matchers with DockerAfterAll { +class TwoNodesСonnectedThroughOneTest extends FunSuite with Matchers with DockerAfterAll { - implicit val futureDuration: FiniteDuration = 30 minutes + implicit val futureDuration: FiniteDuration = 10 minutes val heightSeparation = 10 //blocks test("nodes connected with first should sync") { diff --git a/it/src/test/scala/encry/it/forkResolving/SyncThreeNodesWithDelayTest.scala "b/it/src/test/scala/encry/it/various\320\241ompound/TwoOfflinegenDelayTest.scala" similarity index 84% rename from it/src/test/scala/encry/it/forkResolving/SyncThreeNodesWithDelayTest.scala rename to "it/src/test/scala/encry/it/various\320\241ompound/TwoOfflinegenDelayTest.scala" index bba3f22296..0dd4ed36e6 100644 --- a/it/src/test/scala/encry/it/forkResolving/SyncThreeNodesWithDelayTest.scala +++ "b/it/src/test/scala/encry/it/various\320\241ompound/TwoOfflinegenDelayTest.scala" @@ -1,4 +1,4 @@ -package encry.it.forkResolving +package encry.it.variousСompound import encry.it.configs.Configs import encry.it.docker.Docker.defaultConf @@ -9,16 +9,16 @@ import org.scalatest.{FunSuite, Matchers} import scala.concurrent.duration._ import scala.concurrent.{Await, Future} -class SyncThreeNodesWithDelayTest extends FunSuite with Matchers with DockerAfterAll { +class TwoOfflinegenDelayTest extends FunSuite with Matchers with DockerAfterAll { implicit class FutureBlockedRun[T](future: Future[T]) { def run(implicit duration: Duration): T = Await.result(future, duration) } - implicit val futureDuration: FiniteDuration = 30 minutes + implicit val futureDuration: FiniteDuration = 20 minutes val heightSeparation = 10 //blocks - test("All nodes should go to first chain") { + test("Third node should sync with two offgen nodes started with delayed") { val miningNodeConfig = Configs.mining(true) .withFallback(Configs.offlineGeneration(true)) @@ -35,7 +35,7 @@ class SyncThreeNodesWithDelayTest extends FunSuite with Matchers with DockerAfte val node2 = docker .startNodeInternal(miningNodeConfig.withFallback(Configs.nodeName("node2"))) - node2.waitForFullHeight(heightSeparation).run + node1.waitForFullHeight(heightSeparation * 2).run val node3 = docker .startNodeInternal( diff --git a/it/src/test/scala/encry/it/forkResolving/SyncThreeNodesTest.scala "b/it/src/test/scala/encry/it/various\320\241ompound/TwoOfflinegenTest.scala" similarity index 85% rename from it/src/test/scala/encry/it/forkResolving/SyncThreeNodesTest.scala rename to "it/src/test/scala/encry/it/various\320\241ompound/TwoOfflinegenTest.scala" index 756d4bfcc6..a0075160b5 100644 --- a/it/src/test/scala/encry/it/forkResolving/SyncThreeNodesTest.scala +++ "b/it/src/test/scala/encry/it/various\320\241ompound/TwoOfflinegenTest.scala" @@ -1,4 +1,4 @@ -package encry.it.forkResolving +package encry.it.variousСompound import encry.it.configs.Configs import encry.it.docker.Docker.defaultConf @@ -9,12 +9,12 @@ import org.scalatest.{FunSuite, Matchers} import scala.concurrent.duration._ -class SyncThreeNodesTest extends FunSuite with Matchers with DockerAfterAll { +class TwoOfflinegenTest extends FunSuite with Matchers with DockerAfterAll { - implicit val futureDuration: FiniteDuration = 30 minutes + implicit val futureDuration: FiniteDuration = 20 minutes val heightSeparation = 5 //blocks - test("Late node should sync with the first of two nodes") { + test("Third node should sync with two offgen nodes") { val miningNodeConfig = Configs.mining(true) .withFallback(Configs.offlineGeneration(true)) From eb5d14bb86e328e6eb47946fbc6607d7b206643d Mon Sep 17 00:00:00 2001 From: capdev Date: Fri, 6 Sep 2019 16:25:26 +0500 Subject: [PATCH 26/51] refactor to implicits --- benchmarks/src/test/scala/benches/Utils.scala | 2 +- it/src/main/scala/encry/it/docker/Node.scala | 4 +-- .../encry/it/MinerWalletBalanceTest.scala | 2 +- .../AssetTokenTransactionTest.scala | 2 +- ...ransferTransactionWithEncryCoinsTest.scala | 2 +- .../encry/api/http/routes/InfoApiRoute.scala | 2 +- .../consensus/ConsensusSchemeReaders.scala | 2 +- .../consensus/EncrySupplyController.scala | 2 +- .../encry/consensus/EquihashPowScheme.scala | 2 +- .../encry/consensus/PowLinearController.scala | 2 +- src/main/scala/encry/local/miner/Miner.scala | 2 +- src/main/scala/encry/local/miner/Worker.scala | 2 +- .../encry/modifiers/history/HeaderUtils.scala | 2 +- .../modifiers/history/PayloadUtils.scala | 2 +- src/main/scala/encry/settings/Constants.scala | 6 ++-- .../settings/ConstantsSettingsReader.scala | 28 +++++++++++++++++++ .../encry/settings/EncryAppSettings.scala | 10 ++++--- .../encry/settings/NodeSettingsReader.scala | 3 +- .../encry/settings/SettingsReaders.scala | 18 ++++++++++++ .../scala/encry/utils/BalanceCalculator.scala | 2 +- .../scala/encry/view/ModifiersCache.scala | 2 +- .../view/history/BlockDownloadProcessor.scala | 2 +- .../scala/encry/view/history/HistoryApi.scala | 2 +- .../encry/view/history/HistoryDBApi.scala | 2 +- .../history/HistoryModifiersProcessors.scala | 2 +- .../history/HistoryModifiersValidator.scala | 2 +- .../scala/encry/view/state/UtxoState.scala | 2 +- .../consensus/PowLinearControllerSpec.scala | 4 +-- .../emission/EncrySupplyControllerTest.scala | 6 ++-- .../encry/modifiers/InstanceFactory.scala | 2 +- .../history/BlockSerializerTest.scala | 4 +-- .../DownloadedModifiersValidatorTests.scala | 4 +-- .../scala/encry/utils/EncryGenerator.scala | 4 +-- .../encry/view/state/UtxoStateSpec.scala | 4 +-- .../scala/encry/view/wallet/WalletSpec.scala | 2 +- 35 files changed, 95 insertions(+), 46 deletions(-) create mode 100644 src/main/scala/encry/settings/ConstantsSettingsReader.scala diff --git a/benchmarks/src/test/scala/benches/Utils.scala b/benchmarks/src/test/scala/benches/Utils.scala index 44a68c7ac8..040e72070e 100644 --- a/benchmarks/src/test/scala/benches/Utils.scala +++ b/benchmarks/src/test/scala/benches/Utils.scala @@ -25,7 +25,7 @@ import org.encryfoundation.common.modifiers.mempool.transaction._ import org.encryfoundation.common.modifiers.state.box.Box.Amount import org.encryfoundation.common.modifiers.state.box.{AssetBox, EncryProposition, MonetaryBox} import org.encryfoundation.common.utils.TaggedTypes._ -import encry.settings.Constants.constants +import encry.settings.EncryAppSettings.read.constants import org.encryfoundation.prismlang.core.wrapped.BoxedValue import org.iq80.leveldb.Options import scorex.crypto.hash.{Blake2b256, Digest32} diff --git a/it/src/main/scala/encry/it/docker/Node.scala b/it/src/main/scala/encry/it/docker/Node.scala index 8085bff77f..670edb0fb2 100644 --- a/it/src/main/scala/encry/it/docker/Node.scala +++ b/it/src/main/scala/encry/it/docker/Node.scala @@ -11,7 +11,7 @@ import encry.settings.EncryAppSettings import org.asynchttpclient._ import org.encryfoundation.common.crypto.{PrivateKey25519, PublicKey25519} -import encry.settings.Constants.constants +import encry.settings.EncryAppSettings.read.constants import scala.concurrent.duration.FiniteDuration @@ -48,6 +48,6 @@ object Node { def publicKeyStr: String = n.publicKey.toString - def blockDelay: FiniteDuration = constants.DesiredBlockInterval + def blockDelay: FiniteDuration = settings.constants.DesiredBlockInterval } } diff --git a/it/src/test/scala/encry/it/MinerWalletBalanceTest.scala b/it/src/test/scala/encry/it/MinerWalletBalanceTest.scala index 61ca72021a..6ef6c8207f 100644 --- a/it/src/test/scala/encry/it/MinerWalletBalanceTest.scala +++ b/it/src/test/scala/encry/it/MinerWalletBalanceTest.scala @@ -7,7 +7,7 @@ import encry.it.docker.NodesFromDocker import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.Height import org.scalatest.{AsyncFunSuite, Matchers} -import encry.settings.Constants.constants +import encry.settings.EncryAppSettings.read.constants import scala.concurrent.Await import scala.concurrent.duration._ diff --git a/it/src/test/scala/encry/it/transactions/AssetTokenTransactionTest.scala b/it/src/test/scala/encry/it/transactions/AssetTokenTransactionTest.scala index 2085aa433c..9236112393 100644 --- a/it/src/test/scala/encry/it/transactions/AssetTokenTransactionTest.scala +++ b/it/src/test/scala/encry/it/transactions/AssetTokenTransactionTest.scala @@ -15,7 +15,7 @@ import org.encryfoundation.common.modifiers.state.box.TokenIssuingBox.TokenId import org.encryfoundation.common.modifiers.state.box.{AssetBox, EncryBaseBox, TokenIssuingBox} import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.Height -import encry.settings.Constants.constants +import encry.settings.EncryAppSettings.read.constants import org.scalatest.concurrent.ScalaFutures import org.scalatest.{AsyncFunSuite, Matchers} import scorex.crypto.signatures.Curve25519 diff --git a/it/src/test/scala/encry/it/transactions/ProcessingTransferTransactionWithEncryCoinsTest.scala b/it/src/test/scala/encry/it/transactions/ProcessingTransferTransactionWithEncryCoinsTest.scala index b4c7f6ca0d..a78d6754bf 100644 --- a/it/src/test/scala/encry/it/transactions/ProcessingTransferTransactionWithEncryCoinsTest.scala +++ b/it/src/test/scala/encry/it/transactions/ProcessingTransferTransactionWithEncryCoinsTest.scala @@ -14,7 +14,7 @@ import org.encryfoundation.common.modifiers.mempool.transaction.Transaction import org.encryfoundation.common.modifiers.state.box.{AssetBox, EncryBaseBox} import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.Height -import encry.settings.Constants.constants +import encry.settings.EncryAppSettings.read.constants import org.scalatest.concurrent.ScalaFutures import org.scalatest.{AsyncFunSuite, Matchers} import scorex.crypto.signatures.Curve25519 diff --git a/src/main/scala/encry/api/http/routes/InfoApiRoute.scala b/src/main/scala/encry/api/http/routes/InfoApiRoute.scala index d8d4d24b8e..8bbd888729 100644 --- a/src/main/scala/encry/api/http/routes/InfoApiRoute.scala +++ b/src/main/scala/encry/api/http/routes/InfoApiRoute.scala @@ -13,7 +13,7 @@ import io.circe.Json import io.circe.syntax._ import org.encryfoundation.common.modifiers.history.{Block, Header} import org.encryfoundation.common.utils.Algos -import encry.settings.Constants.constants +import encry.settings.EncryAppSettings.read.constants import scala.concurrent.Future case class InfoApiRoute(dataHolder: ActorRef, diff --git a/src/main/scala/encry/consensus/ConsensusSchemeReaders.scala b/src/main/scala/encry/consensus/ConsensusSchemeReaders.scala index 715d8bd7f1..385ddbbefa 100644 --- a/src/main/scala/encry/consensus/ConsensusSchemeReaders.scala +++ b/src/main/scala/encry/consensus/ConsensusSchemeReaders.scala @@ -1,6 +1,6 @@ package encry.consensus -import encry.settings.Constants.constants +import encry.settings.EncryAppSettings.read.constants object ConsensusSchemeReaders { diff --git a/src/main/scala/encry/consensus/EncrySupplyController.scala b/src/main/scala/encry/consensus/EncrySupplyController.scala index d8179fe5bf..86f5f028ab 100644 --- a/src/main/scala/encry/consensus/EncrySupplyController.scala +++ b/src/main/scala/encry/consensus/EncrySupplyController.scala @@ -1,6 +1,6 @@ package encry.consensus -import encry.settings.Constants.constants +import encry.settings.EncryAppSettings.read.constants import org.encryfoundation.common.modifiers.state.box.Box.Amount import org.encryfoundation.common.utils.TaggedTypes.Height diff --git a/src/main/scala/encry/consensus/EquihashPowScheme.scala b/src/main/scala/encry/consensus/EquihashPowScheme.scala index 85738410da..4d36055d16 100644 --- a/src/main/scala/encry/consensus/EquihashPowScheme.scala +++ b/src/main/scala/encry/consensus/EquihashPowScheme.scala @@ -2,7 +2,7 @@ package encry.consensus import com.google.common.primitives.Chars import encry.crypto.equihash.{Equihash, EquihashValidationErrors} -import encry.settings.Constants.constants +import encry.settings.EncryAppSettings.read.constants import org.bouncycastle.crypto.digests.Blake2bDigest import org.encryfoundation.common.crypto.equihash.EquihashSolution import org.encryfoundation.common.modifiers.history.{Block, Header, Payload} diff --git a/src/main/scala/encry/consensus/PowLinearController.scala b/src/main/scala/encry/consensus/PowLinearController.scala index adc2ffb849..de0cdbd64d 100644 --- a/src/main/scala/encry/consensus/PowLinearController.scala +++ b/src/main/scala/encry/consensus/PowLinearController.scala @@ -1,6 +1,6 @@ package encry.consensus -import encry.settings.Constants.constants +import encry.settings.EncryAppSettings.read.constants import org.encryfoundation.common.modifiers.history.Header import org.encryfoundation.common.utils.TaggedTypes.{Difficulty, Height} import supertagged.@@ diff --git a/src/main/scala/encry/local/miner/Miner.scala b/src/main/scala/encry/local/miner/Miner.scala index 0759a5e66c..acff8333ee 100644 --- a/src/main/scala/encry/local/miner/Miner.scala +++ b/src/main/scala/encry/local/miner/Miner.scala @@ -30,7 +30,7 @@ import org.encryfoundation.common.modifiers.mempool.transaction.Transaction import org.encryfoundation.common.modifiers.state.box.Box.Amount import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.{Difficulty, Height, ModifierId} -import encry.settings.Constants.constants +import encry.settings.EncryAppSettings.read.constants import scala.collection._ import scala.concurrent.duration._ diff --git a/src/main/scala/encry/local/miner/Worker.scala b/src/main/scala/encry/local/miner/Worker.scala index 9da01c9ea7..d12a8da963 100644 --- a/src/main/scala/encry/local/miner/Worker.scala +++ b/src/main/scala/encry/local/miner/Worker.scala @@ -12,7 +12,7 @@ import encry.local.miner.Worker.{MineBlock, NextChallenge} import java.text.SimpleDateFormat import com.typesafe.scalalogging.StrictLogging -import encry.settings.Constants.constants +import encry.settings.EncryAppSettings.read.constants class Worker(myIdx: Int, numberOfWorkers: Int) extends Actor with StrictLogging { diff --git a/src/main/scala/encry/modifiers/history/HeaderUtils.scala b/src/main/scala/encry/modifiers/history/HeaderUtils.scala index 019a6c91e8..bdf0e8015b 100644 --- a/src/main/scala/encry/modifiers/history/HeaderUtils.scala +++ b/src/main/scala/encry/modifiers/history/HeaderUtils.scala @@ -2,7 +2,7 @@ package encry.modifiers.history import encry.settings.TestConstants import org.encryfoundation.common.modifiers.history.Header -import encry.settings.Constants.constants +import encry.settings.EncryAppSettings.read.constants import org.encryfoundation.common.validation.{ModifierValidator, ValidationResult} object HeaderUtils { diff --git a/src/main/scala/encry/modifiers/history/PayloadUtils.scala b/src/main/scala/encry/modifiers/history/PayloadUtils.scala index fba2682fdc..1c7aa8f3fc 100644 --- a/src/main/scala/encry/modifiers/history/PayloadUtils.scala +++ b/src/main/scala/encry/modifiers/history/PayloadUtils.scala @@ -1,7 +1,7 @@ package encry.modifiers.history import org.encryfoundation.common.modifiers.history.Payload -import encry.settings.Constants.constants +import encry.settings.EncryAppSettings.read.constants import org.encryfoundation.common.validation.{ModifierValidator, ValidationResult} object PayloadUtils { diff --git a/src/main/scala/encry/settings/Constants.scala b/src/main/scala/encry/settings/Constants.scala index fa06f9e840..2442f6ae27 100644 --- a/src/main/scala/encry/settings/Constants.scala +++ b/src/main/scala/encry/settings/Constants.scala @@ -7,9 +7,9 @@ object Constants { val keyPath = "encry.node.constantsClass" lazy val config: Config = ConfigFactory.load() - lazy val constants: Constants = getConstants( - if(config.hasPath(keyPath)) config.getString(keyPath) else "" - ) +// lazy val constants: Constants = getConstants( +// if(config.hasPath(keyPath)) config.getString(keyPath) else "" +// ) def getConstants(constantsClass: String): Constants = { constantsClass match { diff --git a/src/main/scala/encry/settings/ConstantsSettingsReader.scala b/src/main/scala/encry/settings/ConstantsSettingsReader.scala new file mode 100644 index 0000000000..1d5dda41c1 --- /dev/null +++ b/src/main/scala/encry/settings/ConstantsSettingsReader.scala @@ -0,0 +1,28 @@ +package encry.settings + +import net.ceedubs.ficus.readers.ValueReader + +import org.encryfoundation.common.utils.constants.{Constants, TestNetConstants} + +trait ConstantsSettingsReader { + + implicit val constantsSettingsReader: ValueReader[Constants] = (cfg, path) => { + + def getConstants(constantsClass: String): Constants = { + constantsClass match { + case "TestConstants" => TestConstants + case "SlowMiningConstants" => SlowMiningConstants + case _ => TestNetConstants + } + } + + println(s"path: $path") + + val keyPath = path//"encry.node.constantsClass" + getConstants( + if (cfg.hasPath(keyPath)) cfg.getString(keyPath) else "" + ) + + } + +} \ No newline at end of file diff --git a/src/main/scala/encry/settings/EncryAppSettings.scala b/src/main/scala/encry/settings/EncryAppSettings.scala index f53805c7e8..901e65064d 100644 --- a/src/main/scala/encry/settings/EncryAppSettings.scala +++ b/src/main/scala/encry/settings/EncryAppSettings.scala @@ -25,7 +25,8 @@ final case class EncryAppSettings(directory: String, influxDB: Option[InfluxDBSettings], levelDB: LevelDBSettings, monitoringSettings: Option[MonitoringSettings], - blackList: BlackListSettings) + blackList: BlackListSettings, + constants: Constants) object EncryAppSettings extends SettingsReaders with NodeSettingsReader with StrictLogging { @@ -76,6 +77,7 @@ object EncryAppSettings extends SettingsReaders with NodeSettingsReader with Str val levelDb = config.as[LevelDBSettings](s"$configPath.levelDB") val monitoringSettings = config.as[Option[MonitoringSettings]](s"$configPath.monitoringSettings") val blackList = config.as[BlackListSettings](s"$configPath.blackList") + val constants = config.as[Constants](s"$configPath.constantsClass") EncryAppSettings( directory, @@ -89,7 +91,8 @@ object EncryAppSettings extends SettingsReaders with NodeSettingsReader with Str influxSettings, levelDb, monitoringSettings, - blackList + blackList, + constants ) } @@ -142,5 +145,4 @@ final case class NodeSettings(blocksToKeep: Int, numberOfMiningWorkers: Int, miningDelay: FiniteDuration, offlineGeneration: Boolean, - useCli: Boolean, - constantsClass: Option[String]) + useCli: Boolean) diff --git a/src/main/scala/encry/settings/NodeSettingsReader.scala b/src/main/scala/encry/settings/NodeSettingsReader.scala index 85e3556f7e..208c7ded16 100644 --- a/src/main/scala/encry/settings/NodeSettingsReader.scala +++ b/src/main/scala/encry/settings/NodeSettingsReader.scala @@ -14,7 +14,6 @@ trait NodeSettingsReader { cfg.as[Int](s"$path.numberOfMiningWorkers"), cfg.as[FiniteDuration](s"$path.miningDelay"), cfg.as[Boolean](s"$path.offlineGeneration"), - cfg.as[Boolean](s"$path.useCli"), - cfg.as[Option[String]](s"$path.constantsClass"), + cfg.as[Boolean](s"$path.useCli") ) } \ No newline at end of file diff --git a/src/main/scala/encry/settings/SettingsReaders.scala b/src/main/scala/encry/settings/SettingsReaders.scala index 90b4823484..54eeac02bf 100644 --- a/src/main/scala/encry/settings/SettingsReaders.scala +++ b/src/main/scala/encry/settings/SettingsReaders.scala @@ -2,11 +2,13 @@ package encry.settings import java.io.File import java.net.InetSocketAddress + import com.typesafe.config.Config import encry.storage.VersionalStorage import encry.storage.VersionalStorage.StorageType import encry.utils.ByteStr import net.ceedubs.ficus.readers.ValueReader +import org.encryfoundation.common.utils.constants.{Constants, TestNetConstants} trait SettingsReaders { implicit val byteStrReader: ValueReader[ByteStr] = (cfg, path) => ByteStr.decodeBase58(cfg.getString(path)).get @@ -20,4 +22,20 @@ trait SettingsReaders { val split = config.getString(path).split(":") new InetSocketAddress(split(0), split(1).toInt) } + + implicit val constantsSettingsReader: ValueReader[Constants] = (cfg, path) => { + def getConstants(constantsClass: String): Constants = { + constantsClass match { + case "TestConstants" => TestConstants + case "SlowMiningConstants" => SlowMiningConstants + case _ => TestNetConstants + } + } + println(s"path: $path") + val keyPath = path//"encry.node.constantsClass" + getConstants( + if (cfg.hasPath(keyPath)) cfg.getString(keyPath) else "" + ) + } + } \ No newline at end of file diff --git a/src/main/scala/encry/utils/BalanceCalculator.scala b/src/main/scala/encry/utils/BalanceCalculator.scala index f518f70a01..d9128e00ab 100644 --- a/src/main/scala/encry/utils/BalanceCalculator.scala +++ b/src/main/scala/encry/utils/BalanceCalculator.scala @@ -1,6 +1,6 @@ package encry.utils -import encry.settings.Constants.constants +import encry.settings.EncryAppSettings.read.constants import org.encryfoundation.common.modifiers.state.box.Box.Amount import org.encryfoundation.common.modifiers.state.box.TokenIssuingBox.TokenId import org.encryfoundation.common.modifiers.state.box.{AssetBox, EncryBaseBox, TokenIssuingBox} diff --git a/src/main/scala/encry/view/ModifiersCache.scala b/src/main/scala/encry/view/ModifiersCache.scala index 5589726fff..1572d4f70d 100644 --- a/src/main/scala/encry/view/ModifiersCache.scala +++ b/src/main/scala/encry/view/ModifiersCache.scala @@ -2,7 +2,7 @@ package encry.view import com.typesafe.scalalogging.StrictLogging import encry.EncryApp.settings -import encry.settings.Constants.constants +import encry.settings.EncryAppSettings.read.constants import encry.view.history.History import encry.view.history.ValidationError.{FatalValidationError, NonFatalValidationError} import org.encryfoundation.common.modifiers.PersistentModifier diff --git a/src/main/scala/encry/view/history/BlockDownloadProcessor.scala b/src/main/scala/encry/view/history/BlockDownloadProcessor.scala index 07c294a1cb..6e91ac302d 100644 --- a/src/main/scala/encry/view/history/BlockDownloadProcessor.scala +++ b/src/main/scala/encry/view/history/BlockDownloadProcessor.scala @@ -2,7 +2,7 @@ package encry.view.history import encry.settings.NodeSettings import org.encryfoundation.common.modifiers.history.Header -import encry.settings.Constants.constants +import encry.settings.EncryAppSettings.read.constants /** Class that keeps and calculates minimal height for full blocks starting from which we need to download these full * blocks from the network and keep them in our history. */ diff --git a/src/main/scala/encry/view/history/HistoryApi.scala b/src/main/scala/encry/view/history/HistoryApi.scala index eb3c33c349..f2489cd24b 100644 --- a/src/main/scala/encry/view/history/HistoryApi.scala +++ b/src/main/scala/encry/view/history/HistoryApi.scala @@ -12,7 +12,7 @@ import org.encryfoundation.common.modifiers.history.{Block, BlockProtoSerializer import org.encryfoundation.common.network.SyncInfo import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.{Difficulty, Height, ModifierId, ModifierTypeId} -import encry.settings.Constants.constants +import encry.settings.EncryAppSettings.read.constants import scala.annotation.tailrec import scala.collection.immutable.HashSet diff --git a/src/main/scala/encry/view/history/HistoryDBApi.scala b/src/main/scala/encry/view/history/HistoryDBApi.scala index b38becc8ac..5295e98440 100644 --- a/src/main/scala/encry/view/history/HistoryDBApi.scala +++ b/src/main/scala/encry/view/history/HistoryDBApi.scala @@ -7,7 +7,7 @@ import encry.view.history.storage.HistoryStorage import org.encryfoundation.common.modifiers.history.{Block, Header, Payload} import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.{Height, ModifierId, ModifierTypeId} -import encry.settings.Constants.constants +import encry.settings.EncryAppSettings.read.constants import scorex.crypto.hash.Digest32 import scala.reflect.ClassTag diff --git a/src/main/scala/encry/view/history/HistoryModifiersProcessors.scala b/src/main/scala/encry/view/history/HistoryModifiersProcessors.scala index 62e07a0b49..1e9d2a88bc 100644 --- a/src/main/scala/encry/view/history/HistoryModifiersProcessors.scala +++ b/src/main/scala/encry/view/history/HistoryModifiersProcessors.scala @@ -9,7 +9,7 @@ import encry.storage.VersionalStorage.{StorageKey, StorageValue} import org.encryfoundation.common.modifiers.PersistentModifier import org.encryfoundation.common.modifiers.history.{Block, Header, Payload} import org.encryfoundation.common.utils.TaggedTypes.{Difficulty, ModifierId} -import encry.settings.Constants.constants +import encry.settings.EncryAppSettings.read.constants import cats.syntax.option._ import scala.annotation.tailrec import cats.syntax.either._ diff --git a/src/main/scala/encry/view/history/HistoryModifiersValidator.scala b/src/main/scala/encry/view/history/HistoryModifiersValidator.scala index f250e69eb5..f6070daeb8 100644 --- a/src/main/scala/encry/view/history/HistoryModifiersValidator.scala +++ b/src/main/scala/encry/view/history/HistoryModifiersValidator.scala @@ -4,7 +4,7 @@ import encry.view.history.ValidationError.FatalValidationError._ import encry.view.history.ValidationError.NonFatalValidationError._ import org.encryfoundation.common.modifiers.PersistentModifier import org.encryfoundation.common.modifiers.history.{Header, Payload} -import encry.settings.Constants.constants +import encry.settings.EncryAppSettings.read.constants import org.encryfoundation.common.validation.ModifierSemanticValidity import cats.syntax.either._ import encry.consensus.EquihashPowScheme diff --git a/src/main/scala/encry/view/state/UtxoState.scala b/src/main/scala/encry/view/state/UtxoState.scala index 2dacc3400c..1335191c5d 100644 --- a/src/main/scala/encry/view/state/UtxoState.scala +++ b/src/main/scala/encry/view/state/UtxoState.scala @@ -33,7 +33,7 @@ import org.encryfoundation.common.modifiers.state.box.TokenIssuingBox.TokenId import org.encryfoundation.common.modifiers.state.box.{AssetBox, EncryBaseBox, EncryProposition} import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.{ADDigest, Height} -import encry.settings.Constants.constants +import encry.settings.EncryAppSettings.read.constants import org.encryfoundation.common.validation.ValidationResult.Invalid import org.encryfoundation.common.validation.{MalformedModifierError, ValidationResult} import org.iq80.leveldb.Options diff --git a/src/test/scala/encry/consensus/PowLinearControllerSpec.scala b/src/test/scala/encry/consensus/PowLinearControllerSpec.scala index c27c2b1b86..c768eca404 100644 --- a/src/test/scala/encry/consensus/PowLinearControllerSpec.scala +++ b/src/test/scala/encry/consensus/PowLinearControllerSpec.scala @@ -1,9 +1,9 @@ package encry.consensus -import encry.settings.Constants.constants +import encry.settings.EncryAppSettings.read.constants import org.encryfoundation.common.utils.TaggedTypes.Height import org.scalatest.{Matchers, PropSpec} -import encry.settings.Constants.constants +import encry.settings.EncryAppSettings.read.constants import scala.collection.immutable class PowLinearControllerSpec extends PropSpec with Matchers { diff --git a/src/test/scala/encry/consensus/emission/EncrySupplyControllerTest.scala b/src/test/scala/encry/consensus/emission/EncrySupplyControllerTest.scala index 88c9c7c4de..6a3cf28f7f 100644 --- a/src/test/scala/encry/consensus/emission/EncrySupplyControllerTest.scala +++ b/src/test/scala/encry/consensus/emission/EncrySupplyControllerTest.scala @@ -4,10 +4,12 @@ import encry.consensus.EncrySupplyController import encry.utils.EncryGenerator import org.encryfoundation.common.utils.TaggedTypes.Height import org.scalatest.{Matchers, PropSpec} -import encry.settings.Constants.constants +import encry.settings.EncryAppSettings.read.constants +import encry.settings.ConstantsSettingsReader + import scala.concurrent.duration._ -class EncrySupplyControllerTest extends PropSpec with Matchers with EncryGenerator { +class EncrySupplyControllerTest extends PropSpec with Matchers with ConstantsSettingsReader with EncryGenerator { val epochLen = 10 diff --git a/src/test/scala/encry/modifiers/InstanceFactory.scala b/src/test/scala/encry/modifiers/InstanceFactory.scala index 5d94b2a1c8..1438cdd9ea 100755 --- a/src/test/scala/encry/modifiers/InstanceFactory.scala +++ b/src/test/scala/encry/modifiers/InstanceFactory.scala @@ -21,7 +21,7 @@ import org.encryfoundation.prismlang.core.{Ast, Types} import org.iq80.leveldb.Options import scorex.crypto.hash.Digest32 import scorex.utils.Random -import encry.settings.Constants.constants +import encry.settings.EncryAppSettings.read.constants import scala.util.{Random => Scarand} diff --git a/src/test/scala/encry/modifiers/history/BlockSerializerTest.scala b/src/test/scala/encry/modifiers/history/BlockSerializerTest.scala index 8661050e93..7687f0f169 100755 --- a/src/test/scala/encry/modifiers/history/BlockSerializerTest.scala +++ b/src/test/scala/encry/modifiers/history/BlockSerializerTest.scala @@ -6,11 +6,11 @@ import org.encryfoundation.common.crypto.equihash.EquihashSolution import org.encryfoundation.common.modifiers.history._ import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.{ADDigest, ModifierId} -import encry.settings.Constants.constants +import encry.settings.EncryAppSettings.read.constants import org.scalatest.FunSuite import scorex.crypto.hash.Digest32 import scorex.utils.Random -import encry.settings.Constants.constants +import encry.settings.EncryAppSettings.read.constants class BlockSerializerTest extends FunSuite with EncryGenerator { diff --git a/src/test/scala/encry/network/DownloadedModifiersValidatorTests.scala b/src/test/scala/encry/network/DownloadedModifiersValidatorTests.scala index be37046b84..7305e38d16 100644 --- a/src/test/scala/encry/network/DownloadedModifiersValidatorTests.scala +++ b/src/test/scala/encry/network/DownloadedModifiersValidatorTests.scala @@ -16,11 +16,11 @@ import org.encryfoundation.common.crypto.equihash.EquihashSolution import org.encryfoundation.common.modifiers.history.{Block, Header, HeaderProtoSerializer, Payload, PayloadProtoSerializer} import org.encryfoundation.common.network.BasicMessagesRepo.Handshake import org.encryfoundation.common.utils.TaggedTypes.ModifierId -import encry.settings.Constants.constants +import encry.settings.EncryAppSettings.read.constants import org.scalatest.{BeforeAndAfterAll, Matchers, OneInstancePerTest, WordSpecLike} import scorex.crypto.hash.Digest32 import scorex.utils.Random -import encry.settings.Constants.constants +import encry.settings.EncryAppSettings.read.constants class DownloadedModifiersValidatorTests extends WordSpecLike with Matchers diff --git a/src/test/scala/encry/utils/EncryGenerator.scala b/src/test/scala/encry/utils/EncryGenerator.scala index 2742cfe837..279a8176cc 100644 --- a/src/test/scala/encry/utils/EncryGenerator.scala +++ b/src/test/scala/encry/utils/EncryGenerator.scala @@ -4,7 +4,7 @@ import encry.modifiers.mempool.TransactionFactory import encry.modifiers.mempool.directive._ import encry.modifiers.state.box._ import encry.settings.Constants -import encry.settings.Constants.constants +import encry.settings.EncryAppSettings.read.constants import encry.utils.TestHelper.Props import org.encryfoundation.common.crypto.equihash.EquihashSolution import org.encryfoundation.common.crypto.{PrivateKey25519, PublicKey25519, Signature25519} @@ -19,7 +19,7 @@ import org.encryfoundation.prismlang.core.wrapped.BoxedValue import scorex.crypto.hash.{Blake2b256, Digest32} import scorex.crypto.signatures.{Curve25519, PrivateKey, PublicKey} import scorex.utils.Random -import encry.settings.Constants.constants +import encry.settings.EncryAppSettings.read.constants import scala.util.{Random => ScRand} trait EncryGenerator { diff --git a/src/test/scala/encry/view/state/UtxoStateSpec.scala b/src/test/scala/encry/view/state/UtxoStateSpec.scala index dc7b816a60..a23d1bc684 100755 --- a/src/test/scala/encry/view/state/UtxoStateSpec.scala +++ b/src/test/scala/encry/view/state/UtxoStateSpec.scala @@ -12,10 +12,10 @@ import encry.storage.levelDb.versionalLevelDB.{LevelDbFactory, VLDBWrapper, Vers import encry.utils.{EncryGenerator, FileHelper, TestHelper} import io.iohk.iodb.LSMStore import org.encryfoundation.common.modifiers.history.{Block, Payload} -import encry.settings.Constants.constants +import encry.settings.EncryAppSettings.read.constants import org.iq80.leveldb.Options import org.scalatest.{Matchers, PropSpec} -import encry.settings.Constants.constants +import encry.settings.EncryAppSettings.read.constants import scala.concurrent.ExecutionContextExecutor class UtxoStateSpec extends PropSpec with Matchers with EncryGenerator { diff --git a/src/test/scala/encry/view/wallet/WalletSpec.scala b/src/test/scala/encry/view/wallet/WalletSpec.scala index 3a466d6e5a..5b669a2308 100644 --- a/src/test/scala/encry/view/wallet/WalletSpec.scala +++ b/src/test/scala/encry/view/wallet/WalletSpec.scala @@ -12,7 +12,7 @@ import org.encryfoundation.common.modifiers.mempool.transaction.Transaction import org.encryfoundation.common.modifiers.state.box.{AssetBox, MonetaryBox} import org.encryfoundation.common.utils.TaggedTypes.ModifierId import org.scalatest.{Matchers, PropSpec} -import encry.settings.Constants.constants +import encry.settings.EncryAppSettings.read.constants class WalletSpec extends PropSpec with Matchers with InstanceFactory with EncryGenerator with StrictLogging { From 508fd20af4dbd4a3d4957cb64a0251101e84b9af Mon Sep 17 00:00:00 2001 From: capdev Date: Fri, 6 Sep 2019 16:32:46 +0500 Subject: [PATCH 27/51] cleanup --- src/main/resources/application.conf | 3 ++ src/main/scala/encry/EncryApp.scala | 2 +- src/main/scala/encry/settings/Constants.scala | 22 --------------- .../settings/ConstantsSettingsReader.scala | 28 ------------------- .../encry/settings/SettingsReaders.scala | 4 +-- .../emission/EncrySupplyControllerTest.scala | 3 +- .../encry/modifiers/InstanceFactory.scala | 2 +- .../scala/encry/utils/EncryGenerator.scala | 7 ++--- 8 files changed, 9 insertions(+), 62 deletions(-) delete mode 100644 src/main/scala/encry/settings/Constants.scala delete mode 100644 src/main/scala/encry/settings/ConstantsSettingsReader.scala diff --git a/src/main/resources/application.conf b/src/main/resources/application.conf index 9b0ec65ff2..5e62044141 100644 --- a/src/main/resources/application.conf +++ b/src/main/resources/application.conf @@ -19,6 +19,9 @@ encry { # Is CLI available useCli = true } + + constantsClass = "TestConstants" + mempool { # The time during which the transaction is considered valid utxMaxAge = 9m diff --git a/src/main/scala/encry/EncryApp.scala b/src/main/scala/encry/EncryApp.scala index efd84f5a4b..27c6296d94 100644 --- a/src/main/scala/encry/EncryApp.scala +++ b/src/main/scala/encry/EncryApp.scala @@ -16,7 +16,7 @@ import encry.cli.ConsoleListener.StartListening import encry.local.miner.Miner import encry.local.miner.Miner.StartMining import encry.network._ -import encry.settings.{EncryAppSettings, Constants} +import encry.settings.EncryAppSettings import encry.stats.{StatsSender, Zombie} import encry.utils.NetworkTimeProvider import encry.view.NodeViewHolder diff --git a/src/main/scala/encry/settings/Constants.scala b/src/main/scala/encry/settings/Constants.scala deleted file mode 100644 index 2442f6ae27..0000000000 --- a/src/main/scala/encry/settings/Constants.scala +++ /dev/null @@ -1,22 +0,0 @@ -package encry.settings - -import com.typesafe.config.{Config, ConfigFactory} -import org.encryfoundation.common.utils.constants.{Constants, TestNetConstants} - -object Constants { - - val keyPath = "encry.node.constantsClass" - lazy val config: Config = ConfigFactory.load() -// lazy val constants: Constants = getConstants( -// if(config.hasPath(keyPath)) config.getString(keyPath) else "" -// ) - - def getConstants(constantsClass: String): Constants = { - constantsClass match { - case "TestConstants" => TestConstants - case "SlowMiningConstants" => SlowMiningConstants - case _ => TestNetConstants - } - } - -} \ No newline at end of file diff --git a/src/main/scala/encry/settings/ConstantsSettingsReader.scala b/src/main/scala/encry/settings/ConstantsSettingsReader.scala deleted file mode 100644 index 1d5dda41c1..0000000000 --- a/src/main/scala/encry/settings/ConstantsSettingsReader.scala +++ /dev/null @@ -1,28 +0,0 @@ -package encry.settings - -import net.ceedubs.ficus.readers.ValueReader - -import org.encryfoundation.common.utils.constants.{Constants, TestNetConstants} - -trait ConstantsSettingsReader { - - implicit val constantsSettingsReader: ValueReader[Constants] = (cfg, path) => { - - def getConstants(constantsClass: String): Constants = { - constantsClass match { - case "TestConstants" => TestConstants - case "SlowMiningConstants" => SlowMiningConstants - case _ => TestNetConstants - } - } - - println(s"path: $path") - - val keyPath = path//"encry.node.constantsClass" - getConstants( - if (cfg.hasPath(keyPath)) cfg.getString(keyPath) else "" - ) - - } - -} \ No newline at end of file diff --git a/src/main/scala/encry/settings/SettingsReaders.scala b/src/main/scala/encry/settings/SettingsReaders.scala index 54eeac02bf..49a89d51c7 100644 --- a/src/main/scala/encry/settings/SettingsReaders.scala +++ b/src/main/scala/encry/settings/SettingsReaders.scala @@ -31,10 +31,8 @@ trait SettingsReaders { case _ => TestNetConstants } } - println(s"path: $path") - val keyPath = path//"encry.node.constantsClass" getConstants( - if (cfg.hasPath(keyPath)) cfg.getString(keyPath) else "" + if (cfg.hasPath(path)) cfg.getString(path) else "" ) } diff --git a/src/test/scala/encry/consensus/emission/EncrySupplyControllerTest.scala b/src/test/scala/encry/consensus/emission/EncrySupplyControllerTest.scala index 6a3cf28f7f..81232d81ec 100644 --- a/src/test/scala/encry/consensus/emission/EncrySupplyControllerTest.scala +++ b/src/test/scala/encry/consensus/emission/EncrySupplyControllerTest.scala @@ -5,11 +5,10 @@ import encry.utils.EncryGenerator import org.encryfoundation.common.utils.TaggedTypes.Height import org.scalatest.{Matchers, PropSpec} import encry.settings.EncryAppSettings.read.constants -import encry.settings.ConstantsSettingsReader import scala.concurrent.duration._ -class EncrySupplyControllerTest extends PropSpec with Matchers with ConstantsSettingsReader with EncryGenerator { +class EncrySupplyControllerTest extends PropSpec with Matchers with EncryGenerator { val epochLen = 10 diff --git a/src/test/scala/encry/modifiers/InstanceFactory.scala b/src/test/scala/encry/modifiers/InstanceFactory.scala index 1438cdd9ea..b828362b2b 100755 --- a/src/test/scala/encry/modifiers/InstanceFactory.scala +++ b/src/test/scala/encry/modifiers/InstanceFactory.scala @@ -2,7 +2,7 @@ package encry.modifiers import encry.modifiers.mempool._ import encry.modifiers.state.Keys -import encry.settings.{EncryAppSettings, Constants, NodeSettings} +import encry.settings.{EncryAppSettings, NodeSettings} import encry.storage.levelDb.versionalLevelDB.{LevelDbFactory, VLDBWrapper, VersionalLevelDBCompanion} import encry.utils.{EncryGenerator, FileHelper, NetworkTimeProvider, TestHelper} import encry.view.history.History diff --git a/src/test/scala/encry/utils/EncryGenerator.scala b/src/test/scala/encry/utils/EncryGenerator.scala index 279a8176cc..75500996bd 100644 --- a/src/test/scala/encry/utils/EncryGenerator.scala +++ b/src/test/scala/encry/utils/EncryGenerator.scala @@ -1,9 +1,6 @@ package encry.utils import encry.modifiers.mempool.TransactionFactory -import encry.modifiers.mempool.directive._ -import encry.modifiers.state.box._ -import encry.settings.Constants import encry.settings.EncryAppSettings.read.constants import encry.utils.TestHelper.Props import org.encryfoundation.common.crypto.equihash.EquihashSolution @@ -14,12 +11,12 @@ import org.encryfoundation.common.modifiers.mempool.transaction.EncryAddress.Add import org.encryfoundation.common.modifiers.mempool.transaction._ import org.encryfoundation.common.modifiers.state.box.Box.Amount import org.encryfoundation.common.modifiers.state.box._ -import org.encryfoundation.common.utils.TaggedTypes.{ADDigest, ADKey, ModifierId} +import org.encryfoundation.common.utils.TaggedTypes.{ADKey, ModifierId} import org.encryfoundation.prismlang.core.wrapped.BoxedValue import scorex.crypto.hash.{Blake2b256, Digest32} import scorex.crypto.signatures.{Curve25519, PrivateKey, PublicKey} import scorex.utils.Random -import encry.settings.EncryAppSettings.read.constants + import scala.util.{Random => ScRand} trait EncryGenerator { From a0b0a99004e30d64ef4ef8323ede90f888bbff43 Mon Sep 17 00:00:00 2001 From: capdev Date: Fri, 6 Sep 2019 17:59:36 +0500 Subject: [PATCH 28/51] fix bug with two setting instance EncryApp.settings EncryAppSettings.read --- src/main/scala/encry/EncryApp.scala | 7 ++- .../encry/settings/EncryAppSettings.scala | 43 ++++++++++++------- 2 files changed, 33 insertions(+), 17 deletions(-) diff --git a/src/main/scala/encry/EncryApp.scala b/src/main/scala/encry/EncryApp.scala index 27c6296d94..49ef2fe23f 100644 --- a/src/main/scala/encry/EncryApp.scala +++ b/src/main/scala/encry/EncryApp.scala @@ -8,6 +8,7 @@ import akka.http.scaladsl.Http import akka.http.scaladsl.model.HttpResponse import akka.http.scaladsl.server.ExceptionHandler import akka.stream.ActorMaterializer +import com.typesafe.config.ConfigFactory import com.typesafe.scalalogging.StrictLogging import encry.api.http.{ApiRoute, CompositeHttpService, DataHolderForApi} import encry.api.http.routes._ @@ -30,7 +31,7 @@ import scala.concurrent.{Await, ExecutionContextExecutor} import scala.concurrent.duration._ import scala.io.Source import scala.language.postfixOps -import org.encryfoundation.common.utils.constants.Constants +import net.ceedubs.ficus.Ficus._ object EncryApp extends App with StrictLogging { @@ -38,7 +39,9 @@ object EncryApp extends App with StrictLogging { implicit val ec: ExecutionContextExecutor = system.dispatcher implicit val materializer: ActorMaterializer = ActorMaterializer() - lazy val settings: EncryAppSettings = EncryAppSettings.read(args.headOption) + val cmdArgs:Array[String] = args + + lazy val settings: EncryAppSettings = EncryAppSettings.settings val timeProvider: NetworkTimeProvider = new NetworkTimeProvider(settings.ntp) val swaggerConfig: String = Source.fromResource("api/openapi.yaml").getLines.mkString("\n") diff --git a/src/main/scala/encry/settings/EncryAppSettings.scala b/src/main/scala/encry/settings/EncryAppSettings.scala index 901e65064d..0d3807e19b 100644 --- a/src/main/scala/encry/settings/EncryAppSettings.scala +++ b/src/main/scala/encry/settings/EncryAppSettings.scala @@ -10,7 +10,7 @@ import encry.storage.VersionalStorage.StorageType import encry.utils.NetworkTimeProviderSettings import net.ceedubs.ficus.Ficus._ import net.ceedubs.ficus.readers.ArbitraryTypeReader._ -import org.encryfoundation.common.utils.constants.{Constants, TestNetConstants} +import org.encryfoundation.common.utils.constants.Constants import scala.concurrent.duration.FiniteDuration @@ -31,8 +31,12 @@ final case class EncryAppSettings(directory: String, object EncryAppSettings extends SettingsReaders with NodeSettingsReader with StrictLogging { val configPath: String = "encry" - val read: EncryAppSettings = ConfigFactory.load("local.conf") - .withFallback(ConfigFactory.load()).as[EncryAppSettings](configPath) + lazy val settings: EncryAppSettings = + if (EncryApp.cmdArgs.nonEmpty) + EncryAppSettings.read(EncryApp.cmdArgs.headOption) + else + ConfigFactory.load("local.conf") + .withFallback(ConfigFactory.load()).as[EncryAppSettings](configPath) private def readConfigFromPath(userConfigPath: Option[String]): Config = { val maybeConfigFile: Option[File] = for { @@ -65,19 +69,19 @@ object EncryAppSettings extends SettingsReaders with NodeSettingsReader with Str def fromConfig(config: Config): EncryAppSettings = { - val directory = config.as[String](s"$configPath.directory") - val nodeSettings = config.as[NodeSettings](s"$configPath.node") - val mempool = config.as[MemoryPoolSettings](s"$configPath.mempool") - val walletSettings = config.as[Option[WalletSettings]](s"$configPath.wallet") - val networkSettings = config.as[NetworkSettings](s"$configPath.network") - val restApiSettings = config.as[RESTApiSettings](s"$configPath.restApi") - val storageSettings = config.as[StorageSettings](s"$configPath.storage") - val ntpSettings = config.as[NetworkTimeProviderSettings](s"$configPath.ntp") - val influxSettings = config.as[Option[InfluxDBSettings]](s"$configPath.influxDB") - val levelDb = config.as[LevelDBSettings](s"$configPath.levelDB") + val directory = config.as[String](s"$configPath.directory") + val nodeSettings = config.as[NodeSettings](s"$configPath.node") + val mempool = config.as[MemoryPoolSettings](s"$configPath.mempool") + val walletSettings = config.as[Option[WalletSettings]](s"$configPath.wallet") + val networkSettings = config.as[NetworkSettings](s"$configPath.network") + val restApiSettings = config.as[RESTApiSettings](s"$configPath.restApi") + val storageSettings = config.as[StorageSettings](s"$configPath.storage") + val ntpSettings = config.as[NetworkTimeProviderSettings](s"$configPath.ntp") + val influxSettings = config.as[Option[InfluxDBSettings]](s"$configPath.influxDB") + val levelDb = config.as[LevelDBSettings](s"$configPath.levelDB") val monitoringSettings = config.as[Option[MonitoringSettings]](s"$configPath.monitoringSettings") - val blackList = config.as[BlackListSettings](s"$configPath.blackList") - val constants = config.as[Constants](s"$configPath.constantsClass") + val blackList = config.as[BlackListSettings](s"$configPath.blackList") + val constants = config.as[Constants](s"$configPath.constantsClass") EncryAppSettings( directory, @@ -102,15 +106,22 @@ object EncryAppSettings extends SettingsReaders with NodeSettingsReader with Str } final case class StorageSettings(history: StorageType, state: StorageType) + final case class WalletSettings(password: String, seed: Option[String]) + final case class InfluxDBSettings(url: String, login: String, password: String, udpPort: Int) + final case class BlackListSettings(banTime: FiniteDuration, cleanupTime: FiniteDuration) + final case class LevelDBSettings(maxVersions: Int, versionKeySize: Int = 32) + final case class MonitoringSettings(kamonEnabled: Boolean) + final case class RESTApiSettings(enabled: Option[Boolean], bindAddress: InetSocketAddress, corsAllowedOrigin: Option[String], timeout: FiniteDuration) + final case class NetworkSettings(nodeName: Option[String], addedMaxDelay: Option[FiniteDuration], networkChunkSize: Int, @@ -131,6 +142,7 @@ final case class NetworkSettings(nodeName: Option[String], syncTimeout: Option[FiniteDuration], syncPacketLength: Int, maxNumberOfReConnections: Int) + final case class MemoryPoolSettings(utxMaxAge: FiniteDuration, cleanupInterval: FiniteDuration, maxCapacity: Int, @@ -139,6 +151,7 @@ final case class MemoryPoolSettings(utxMaxAge: FiniteDuration, bloomFilterCleanupInterval: FiniteDuration, bloomFilterCapacity: Long, bloomFilterFailureProbability: Double) + final case class NodeSettings(blocksToKeep: Int, modifiersCacheSize: Int, mining: Boolean, From a6a0fae4d886d56a543883472b3c1798989f5453 Mon Sep 17 00:00:00 2001 From: capdev Date: Fri, 6 Sep 2019 18:05:21 +0500 Subject: [PATCH 29/51] link to EncryApp.settings replaced --- .../test/scala/benches/HistoryBenches.scala | 2 +- .../src/test/scala/benches/StateBenches.scala | 2 +- .../scala/benches/StateRollbackBench.scala | 2 +- benchmarks/src/test/scala/benches/Utils.scala | 2 +- it/src/main/scala/encry/it/docker/Node.scala | 12 ++++----- .../encry/it/MinerWalletBalanceTest.scala | 2 +- .../AssetTokenTransactionTest.scala | 2 +- ...ransferTransactionWithEncryCoinsTest.scala | 2 +- src/main/resources/application.conf | 2 -- src/main/scala/encry/EncryApp.scala | 2 +- .../encry/api/http/routes/InfoApiRoute.scala | 2 +- .../scala/encry/cli/ConsoleListener.scala | 2 +- .../consensus/ConsensusSchemeReaders.scala | 2 +- .../consensus/EncrySupplyController.scala | 2 +- .../encry/consensus/EquihashPowScheme.scala | 2 +- .../encry/consensus/PowLinearController.scala | 2 +- src/main/scala/encry/local/miner/Miner.scala | 3 ++- src/main/scala/encry/local/miner/Worker.scala | 2 +- .../encry/modifiers/history/HeaderUtils.scala | 2 +- .../modifiers/history/PayloadUtils.scala | 2 +- .../encry/network/PeerConnectionHandler.scala | 4 +-- src/main/scala/encry/stats/StatsSender.scala | 3 ++- .../scala/encry/utils/BalanceCalculator.scala | 2 +- .../scala/encry/view/ModifiersCache.scala | 9 +++---- .../scala/encry/view/NodeViewHolder.scala | 5 +++- .../view/history/BlockDownloadProcessor.scala | 2 +- .../scala/encry/view/history/HistoryApi.scala | 27 +++++++++---------- .../encry/view/history/HistoryDBApi.scala | 2 +- .../history/HistoryModifiersProcessors.scala | 2 +- .../history/HistoryModifiersValidator.scala | 2 +- .../scala/encry/view/state/UtxoState.scala | 2 +- .../encry/view/wallet/AccountManager.scala | 2 +- .../consensus/PowLinearControllerSpec.scala | 4 +-- .../emission/EncrySupplyControllerTest.scala | 2 +- .../encry/modifiers/InstanceFactory.scala | 2 +- .../history/BlockSerializerTest.scala | 4 +-- .../DownloadedModifiersValidatorTests.scala | 4 +-- .../BasicNetworkMessagesProtoTest.scala | 2 +- .../scala/encry/utils/EncryGenerator.scala | 2 +- .../encry/view/state/UtxoStateSpec.scala | 6 ++--- .../scala/encry/view/wallet/WalletSpec.scala | 4 +-- 41 files changed, 71 insertions(+), 72 deletions(-) diff --git a/benchmarks/src/test/scala/benches/HistoryBenches.scala b/benchmarks/src/test/scala/benches/HistoryBenches.scala index ac0cc97d12..39488bc9b9 100644 --- a/benchmarks/src/test/scala/benches/HistoryBenches.scala +++ b/benchmarks/src/test/scala/benches/HistoryBenches.scala @@ -62,7 +62,7 @@ object HistoryBenches { @State(Scope.Benchmark) class HistoryBenchState { - val settings: EncryAppSettings = EncryAppSettings.read + val settings: EncryAppSettings = EncryAppSettings.settings val tmpDir: File = getRandomTempDir val initialHistory: History = generateHistory(settings, tmpDir) diff --git a/benchmarks/src/test/scala/benches/StateBenches.scala b/benchmarks/src/test/scala/benches/StateBenches.scala index 6b0f3757c1..cdda27cf87 100644 --- a/benchmarks/src/test/scala/benches/StateBenches.scala +++ b/benchmarks/src/test/scala/benches/StateBenches.scala @@ -66,7 +66,7 @@ object StateBenches { @State(Scope.Benchmark) class StateBenchState { - val settings: EncryAppSettings = EncryAppSettings.read + val settings: EncryAppSettings = EncryAppSettings.settings val tmpDir: File = getRandomTempDir val initialBoxes: IndexedSeq[AssetBox] = (0 until benchSettings.stateBenchSettings.totalBoxesNumber).map(nonce => diff --git a/benchmarks/src/test/scala/benches/StateRollbackBench.scala b/benchmarks/src/test/scala/benches/StateRollbackBench.scala index 7450648b51..d91f59f238 100644 --- a/benchmarks/src/test/scala/benches/StateRollbackBench.scala +++ b/benchmarks/src/test/scala/benches/StateRollbackBench.scala @@ -62,7 +62,7 @@ object StateRollbackBench { @State(Scope.Benchmark) class StateRollbackState { - val settings: EncryAppSettings = EncryAppSettings.read + val settings: EncryAppSettings = EncryAppSettings.settings val tmpDir: File = getRandomTempDir val initialBoxes: IndexedSeq[AssetBox] = (0 until benchSettings.stateBenchSettings.totalBoxesNumber).map(nonce => diff --git a/benchmarks/src/test/scala/benches/Utils.scala b/benchmarks/src/test/scala/benches/Utils.scala index 040e72070e..0a776712b7 100644 --- a/benchmarks/src/test/scala/benches/Utils.scala +++ b/benchmarks/src/test/scala/benches/Utils.scala @@ -25,7 +25,7 @@ import org.encryfoundation.common.modifiers.mempool.transaction._ import org.encryfoundation.common.modifiers.state.box.Box.Amount import org.encryfoundation.common.modifiers.state.box.{AssetBox, EncryProposition, MonetaryBox} import org.encryfoundation.common.utils.TaggedTypes._ -import encry.settings.EncryAppSettings.read.constants +import encry.settings.EncryAppSettings.settings.constants import org.encryfoundation.prismlang.core.wrapped.BoxedValue import org.iq80.leveldb.Options import scorex.crypto.hash.{Blake2b256, Digest32} diff --git a/it/src/main/scala/encry/it/docker/Node.scala b/it/src/main/scala/encry/it/docker/Node.scala index 670edb0fb2..85379a519a 100644 --- a/it/src/main/scala/encry/it/docker/Node.scala +++ b/it/src/main/scala/encry/it/docker/Node.scala @@ -11,8 +11,6 @@ import encry.settings.EncryAppSettings import org.asynchttpclient._ import org.encryfoundation.common.crypto.{PrivateKey25519, PublicKey25519} -import encry.settings.EncryAppSettings.read.constants - import scala.concurrent.duration.FiniteDuration case class Node(config: Config, @@ -42,12 +40,12 @@ case class Node(config: Config, object Node { - implicit class NodeExt(val n: Node) extends AnyVal { - def name: String = n.settings.network.nodeName - .getOrElse(InetAddress.getLocalHost.getHostAddress + ":" + settings.network.bindAddress.getPort) + implicit class NodeExt(val node: Node) extends AnyVal { + def name: String = node.settings.network.nodeName + .getOrElse(InetAddress.getLocalHost.getHostAddress + ":" + node.settings.network.bindAddress.getPort) - def publicKeyStr: String = n.publicKey.toString + def publicKeyStr: String = node.publicKey.toString - def blockDelay: FiniteDuration = settings.constants.DesiredBlockInterval + def blockDelay: FiniteDuration = node.settings.constants.DesiredBlockInterval } } diff --git a/it/src/test/scala/encry/it/MinerWalletBalanceTest.scala b/it/src/test/scala/encry/it/MinerWalletBalanceTest.scala index 6ef6c8207f..30326668fe 100644 --- a/it/src/test/scala/encry/it/MinerWalletBalanceTest.scala +++ b/it/src/test/scala/encry/it/MinerWalletBalanceTest.scala @@ -7,7 +7,7 @@ import encry.it.docker.NodesFromDocker import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.Height import org.scalatest.{AsyncFunSuite, Matchers} -import encry.settings.EncryAppSettings.read.constants +import encry.settings.EncryAppSettings.settings.constants import scala.concurrent.Await import scala.concurrent.duration._ diff --git a/it/src/test/scala/encry/it/transactions/AssetTokenTransactionTest.scala b/it/src/test/scala/encry/it/transactions/AssetTokenTransactionTest.scala index 9236112393..ae3b518067 100644 --- a/it/src/test/scala/encry/it/transactions/AssetTokenTransactionTest.scala +++ b/it/src/test/scala/encry/it/transactions/AssetTokenTransactionTest.scala @@ -15,7 +15,7 @@ import org.encryfoundation.common.modifiers.state.box.TokenIssuingBox.TokenId import org.encryfoundation.common.modifiers.state.box.{AssetBox, EncryBaseBox, TokenIssuingBox} import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.Height -import encry.settings.EncryAppSettings.read.constants +import encry.settings.EncryAppSettings.settings.constants import org.scalatest.concurrent.ScalaFutures import org.scalatest.{AsyncFunSuite, Matchers} import scorex.crypto.signatures.Curve25519 diff --git a/it/src/test/scala/encry/it/transactions/ProcessingTransferTransactionWithEncryCoinsTest.scala b/it/src/test/scala/encry/it/transactions/ProcessingTransferTransactionWithEncryCoinsTest.scala index a78d6754bf..a476c87932 100644 --- a/it/src/test/scala/encry/it/transactions/ProcessingTransferTransactionWithEncryCoinsTest.scala +++ b/it/src/test/scala/encry/it/transactions/ProcessingTransferTransactionWithEncryCoinsTest.scala @@ -14,7 +14,7 @@ import org.encryfoundation.common.modifiers.mempool.transaction.Transaction import org.encryfoundation.common.modifiers.state.box.{AssetBox, EncryBaseBox} import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.Height -import encry.settings.EncryAppSettings.read.constants +import encry.settings.EncryAppSettings.settings.constants import org.scalatest.concurrent.ScalaFutures import org.scalatest.{AsyncFunSuite, Matchers} import scorex.crypto.signatures.Curve25519 diff --git a/src/main/resources/application.conf b/src/main/resources/application.conf index 5e62044141..3c9ee454c1 100644 --- a/src/main/resources/application.conf +++ b/src/main/resources/application.conf @@ -20,8 +20,6 @@ encry { useCli = true } - constantsClass = "TestConstants" - mempool { # The time during which the transaction is considered valid utxMaxAge = 9m diff --git a/src/main/scala/encry/EncryApp.scala b/src/main/scala/encry/EncryApp.scala index 49ef2fe23f..32a4a511cb 100644 --- a/src/main/scala/encry/EncryApp.scala +++ b/src/main/scala/encry/EncryApp.scala @@ -41,7 +41,7 @@ object EncryApp extends App with StrictLogging { val cmdArgs:Array[String] = args - lazy val settings: EncryAppSettings = EncryAppSettings.settings + private lazy val settings: EncryAppSettings = EncryAppSettings.settings val timeProvider: NetworkTimeProvider = new NetworkTimeProvider(settings.ntp) val swaggerConfig: String = Source.fromResource("api/openapi.yaml").getLines.mkString("\n") diff --git a/src/main/scala/encry/api/http/routes/InfoApiRoute.scala b/src/main/scala/encry/api/http/routes/InfoApiRoute.scala index 8bbd888729..07d4a2f3c2 100644 --- a/src/main/scala/encry/api/http/routes/InfoApiRoute.scala +++ b/src/main/scala/encry/api/http/routes/InfoApiRoute.scala @@ -13,7 +13,7 @@ import io.circe.Json import io.circe.syntax._ import org.encryfoundation.common.modifiers.history.{Block, Header} import org.encryfoundation.common.utils.Algos -import encry.settings.EncryAppSettings.read.constants +import encry.settings.EncryAppSettings.settings.constants import scala.concurrent.Future case class InfoApiRoute(dataHolder: ActorRef, diff --git a/src/main/scala/encry/cli/ConsoleListener.scala b/src/main/scala/encry/cli/ConsoleListener.scala index db66e66f19..aa6e0b9d61 100644 --- a/src/main/scala/encry/cli/ConsoleListener.scala +++ b/src/main/scala/encry/cli/ConsoleListener.scala @@ -1,7 +1,7 @@ package encry.cli import akka.actor.Actor -import encry.EncryApp.settings +import encry.settings.EncryAppSettings.settings import encry.cli.commands._ import scala.concurrent.ExecutionContext.Implicits.global import scala.util.{Failure, Success} diff --git a/src/main/scala/encry/consensus/ConsensusSchemeReaders.scala b/src/main/scala/encry/consensus/ConsensusSchemeReaders.scala index 385ddbbefa..69355484fd 100644 --- a/src/main/scala/encry/consensus/ConsensusSchemeReaders.scala +++ b/src/main/scala/encry/consensus/ConsensusSchemeReaders.scala @@ -1,6 +1,6 @@ package encry.consensus -import encry.settings.EncryAppSettings.read.constants +import encry.settings.EncryAppSettings.settings.constants object ConsensusSchemeReaders { diff --git a/src/main/scala/encry/consensus/EncrySupplyController.scala b/src/main/scala/encry/consensus/EncrySupplyController.scala index 86f5f028ab..f8d4733841 100644 --- a/src/main/scala/encry/consensus/EncrySupplyController.scala +++ b/src/main/scala/encry/consensus/EncrySupplyController.scala @@ -1,6 +1,6 @@ package encry.consensus -import encry.settings.EncryAppSettings.read.constants +import encry.settings.EncryAppSettings.settings.constants import org.encryfoundation.common.modifiers.state.box.Box.Amount import org.encryfoundation.common.utils.TaggedTypes.Height diff --git a/src/main/scala/encry/consensus/EquihashPowScheme.scala b/src/main/scala/encry/consensus/EquihashPowScheme.scala index 4d36055d16..31ca622b0b 100644 --- a/src/main/scala/encry/consensus/EquihashPowScheme.scala +++ b/src/main/scala/encry/consensus/EquihashPowScheme.scala @@ -2,7 +2,7 @@ package encry.consensus import com.google.common.primitives.Chars import encry.crypto.equihash.{Equihash, EquihashValidationErrors} -import encry.settings.EncryAppSettings.read.constants +import encry.settings.EncryAppSettings.settings.constants import org.bouncycastle.crypto.digests.Blake2bDigest import org.encryfoundation.common.crypto.equihash.EquihashSolution import org.encryfoundation.common.modifiers.history.{Block, Header, Payload} diff --git a/src/main/scala/encry/consensus/PowLinearController.scala b/src/main/scala/encry/consensus/PowLinearController.scala index de0cdbd64d..1caf44b59c 100644 --- a/src/main/scala/encry/consensus/PowLinearController.scala +++ b/src/main/scala/encry/consensus/PowLinearController.scala @@ -1,6 +1,6 @@ package encry.consensus -import encry.settings.EncryAppSettings.read.constants +import encry.settings.EncryAppSettings.settings.constants import org.encryfoundation.common.modifiers.history.Header import org.encryfoundation.common.utils.TaggedTypes.{Difficulty, Height} import supertagged.@@ diff --git a/src/main/scala/encry/local/miner/Miner.scala b/src/main/scala/encry/local/miner/Miner.scala index acff8333ee..5ba1b79255 100644 --- a/src/main/scala/encry/local/miner/Miner.scala +++ b/src/main/scala/encry/local/miner/Miner.scala @@ -7,6 +7,7 @@ import akka.util.Timeout import com.typesafe.scalalogging.StrictLogging import encry.EncryApp import encry.EncryApp._ +import encry.settings.EncryAppSettings.settings import encry.api.http.DataHolderForApi.{UpdatingMinerStatus, UpdatingTransactionsNumberForApi} import encry.consensus.{CandidateBlock, EncrySupplyController, EquihashPowScheme} import encry.local.miner.Miner._ @@ -30,7 +31,7 @@ import org.encryfoundation.common.modifiers.mempool.transaction.Transaction import org.encryfoundation.common.modifiers.state.box.Box.Amount import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.{Difficulty, Height, ModifierId} -import encry.settings.EncryAppSettings.read.constants +import encry.settings.EncryAppSettings.settings.constants import scala.collection._ import scala.concurrent.duration._ diff --git a/src/main/scala/encry/local/miner/Worker.scala b/src/main/scala/encry/local/miner/Worker.scala index d12a8da963..335f5f7d99 100644 --- a/src/main/scala/encry/local/miner/Worker.scala +++ b/src/main/scala/encry/local/miner/Worker.scala @@ -12,7 +12,7 @@ import encry.local.miner.Worker.{MineBlock, NextChallenge} import java.text.SimpleDateFormat import com.typesafe.scalalogging.StrictLogging -import encry.settings.EncryAppSettings.read.constants +import encry.settings.EncryAppSettings.settings.constants class Worker(myIdx: Int, numberOfWorkers: Int) extends Actor with StrictLogging { diff --git a/src/main/scala/encry/modifiers/history/HeaderUtils.scala b/src/main/scala/encry/modifiers/history/HeaderUtils.scala index bdf0e8015b..c3ad8f6590 100644 --- a/src/main/scala/encry/modifiers/history/HeaderUtils.scala +++ b/src/main/scala/encry/modifiers/history/HeaderUtils.scala @@ -2,7 +2,7 @@ package encry.modifiers.history import encry.settings.TestConstants import org.encryfoundation.common.modifiers.history.Header -import encry.settings.EncryAppSettings.read.constants +import encry.settings.EncryAppSettings.settings.constants import org.encryfoundation.common.validation.{ModifierValidator, ValidationResult} object HeaderUtils { diff --git a/src/main/scala/encry/modifiers/history/PayloadUtils.scala b/src/main/scala/encry/modifiers/history/PayloadUtils.scala index 1c7aa8f3fc..a0caa0bf4b 100644 --- a/src/main/scala/encry/modifiers/history/PayloadUtils.scala +++ b/src/main/scala/encry/modifiers/history/PayloadUtils.scala @@ -1,7 +1,7 @@ package encry.modifiers.history import org.encryfoundation.common.modifiers.history.Payload -import encry.settings.EncryAppSettings.read.constants +import encry.settings.EncryAppSettings.settings.constants import org.encryfoundation.common.validation.{ModifierValidator, ValidationResult} object PayloadUtils { diff --git a/src/main/scala/encry/network/PeerConnectionHandler.scala b/src/main/scala/encry/network/PeerConnectionHandler.scala index ee759c9842..3246be10fa 100755 --- a/src/main/scala/encry/network/PeerConnectionHandler.scala +++ b/src/main/scala/encry/network/PeerConnectionHandler.scala @@ -8,13 +8,13 @@ import akka.io.Tcp._ import akka.util.{ByteString, CompactByteString} import com.google.common.primitives.Ints import com.typesafe.scalalogging.StrictLogging -import encry.EncryApp.{settings, timeProvider} +import encry.EncryApp.timeProvider +import encry.settings.EncryAppSettings.settings import encry.network.PeerConnectionHandler.{AwaitingHandshake, CommunicationState, _} import encry.network.PeerConnectionHandler.ReceivableMessages._ import encry.network.PeersKeeper.{ConnectionStopped, HandshakedDone} import org.encryfoundation.common.network.BasicMessagesRepo.{GeneralizedNetworkMessage, Handshake, NetworkMessage} import org.encryfoundation.common.utils.Algos -import cats.instances.long._ import scala.annotation.tailrec import scala.collection.immutable.{HashMap, SortedMap} diff --git a/src/main/scala/encry/stats/StatsSender.scala b/src/main/scala/encry/stats/StatsSender.scala index 39183c8863..6c87a8cc0f 100644 --- a/src/main/scala/encry/stats/StatsSender.scala +++ b/src/main/scala/encry/stats/StatsSender.scala @@ -6,7 +6,8 @@ import java.util import java.text.SimpleDateFormat import akka.actor.{Actor, Props} import com.typesafe.scalalogging.StrictLogging -import encry.EncryApp.{settings, timeProvider} +import encry.EncryApp.timeProvider +import encry.settings.EncryAppSettings.settings import encry.consensus.EncrySupplyController import encry.settings.InfluxDBSettings import encry.stats.StatsSender._ diff --git a/src/main/scala/encry/utils/BalanceCalculator.scala b/src/main/scala/encry/utils/BalanceCalculator.scala index d9128e00ab..7061c6f656 100644 --- a/src/main/scala/encry/utils/BalanceCalculator.scala +++ b/src/main/scala/encry/utils/BalanceCalculator.scala @@ -1,6 +1,6 @@ package encry.utils -import encry.settings.EncryAppSettings.read.constants +import encry.settings.EncryAppSettings.settings.constants import org.encryfoundation.common.modifiers.state.box.Box.Amount import org.encryfoundation.common.modifiers.state.box.TokenIssuingBox.TokenId import org.encryfoundation.common.modifiers.state.box.{AssetBox, EncryBaseBox, TokenIssuingBox} diff --git a/src/main/scala/encry/view/ModifiersCache.scala b/src/main/scala/encry/view/ModifiersCache.scala index 1572d4f70d..68a108fde6 100644 --- a/src/main/scala/encry/view/ModifiersCache.scala +++ b/src/main/scala/encry/view/ModifiersCache.scala @@ -1,8 +1,7 @@ package encry.view import com.typesafe.scalalogging.StrictLogging -import encry.EncryApp.settings -import encry.settings.EncryAppSettings.read.constants +import encry.settings.EncryAppSettings.settings import encry.view.history.History import encry.view.history.ValidationError.{FatalValidationError, NonFatalValidationError} import org.encryfoundation.common.modifiers.PersistentModifier @@ -116,7 +115,7 @@ object ModifiersCache extends StrictLogging { val res = value.map(cache.get(_)).collect { case Some(v: Header) if ((v.parentId sameElements history.getBestHeaderId.getOrElse(Array.emptyByteArray)) || - (history.getBestHeaderHeight == constants.PreGenesisHeight && + (history.getBestHeaderHeight == settings.constants.PreGenesisHeight && (v.parentId sameElements Header.GenesisParentId) ) || history.getHeaderById(v.parentId).nonEmpty) && isApplicable(new mutable.WrappedArray.ofByte(v.id)) => logger.debug(s"Find new bestHeader in cache: ${Algos.encode(v.id)}") @@ -126,8 +125,8 @@ object ModifiersCache extends StrictLogging { res case None => logger.debug(s"No header in cache at height ${history.getBestHeaderHeight + 1}. " + - s"Trying to find in range [${history.getBestHeaderHeight - constants.MaxRollbackDepth}, ${history.getBestHeaderHeight}]") - (history.getBestHeaderHeight - constants.MaxRollbackDepth to history.getBestHeaderHeight).flatMap(height => + s"Trying to find in range [${history.getBestHeaderHeight - settings.constants.MaxRollbackDepth}, ${history.getBestHeaderHeight}]") + (history.getBestHeaderHeight - settings.constants.MaxRollbackDepth to history.getBestHeaderHeight).flatMap(height => getHeadersKeysAtHeight(height) ).toList } diff --git a/src/main/scala/encry/view/NodeViewHolder.scala b/src/main/scala/encry/view/NodeViewHolder.scala index 24b8f01f7b..0c2d51f262 100644 --- a/src/main/scala/encry/view/NodeViewHolder.scala +++ b/src/main/scala/encry/view/NodeViewHolder.scala @@ -1,13 +1,15 @@ package encry.view import java.io.File + import akka.actor.{Actor, ActorRef, ActorSystem, PoisonPill, Props} import akka.dispatch.{PriorityGenerator, UnboundedStablePriorityMailbox} import akka.pattern._ import com.typesafe.config.Config import com.typesafe.scalalogging.StrictLogging import encry.EncryApp -import encry.EncryApp.{miner, nodeViewSynchronizer, settings, timeProvider} +import encry.settings.EncryAppSettings.settings +import encry.EncryApp.{miner, nodeViewSynchronizer, timeProvider} import encry.consensus.HistoryConsensus.ProgressInfo import encry.network.DeliveryManager.FullBlockChainIsSynced import encry.network.NodeViewSynchronizer.ReceivableMessages._ @@ -27,6 +29,7 @@ import org.encryfoundation.common.modifiers.history._ import org.encryfoundation.common.modifiers.mempool.transaction.Transaction import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.{ADDigest, ModifierId, ModifierTypeId} + import scala.collection.{IndexedSeq, Seq, mutable} import scala.concurrent.duration._ import scala.concurrent.{ExecutionContextExecutor, Future} diff --git a/src/main/scala/encry/view/history/BlockDownloadProcessor.scala b/src/main/scala/encry/view/history/BlockDownloadProcessor.scala index 6e91ac302d..e694748167 100644 --- a/src/main/scala/encry/view/history/BlockDownloadProcessor.scala +++ b/src/main/scala/encry/view/history/BlockDownloadProcessor.scala @@ -2,7 +2,7 @@ package encry.view.history import encry.settings.NodeSettings import org.encryfoundation.common.modifiers.history.Header -import encry.settings.EncryAppSettings.read.constants +import encry.settings.EncryAppSettings.settings.constants /** Class that keeps and calculates minimal height for full blocks starting from which we need to download these full * blocks from the network and keep them in our history. */ diff --git a/src/main/scala/encry/view/history/HistoryApi.scala b/src/main/scala/encry/view/history/HistoryApi.scala index f2489cd24b..102cf00d0d 100644 --- a/src/main/scala/encry/view/history/HistoryApi.scala +++ b/src/main/scala/encry/view/history/HistoryApi.scala @@ -12,7 +12,6 @@ import org.encryfoundation.common.modifiers.history.{Block, BlockProtoSerializer import org.encryfoundation.common.network.SyncInfo import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.{Difficulty, Height, ModifierId, ModifierTypeId} -import encry.settings.EncryAppSettings.read.constants import scala.annotation.tailrec import scala.collection.immutable.HashSet @@ -54,7 +53,7 @@ trait HistoryApi extends HistoryDBApi { //scalastyle:ignore headersCache.get(ByteArrayWrapper(id)).map(_.height) .orElse(blocksCache.get(ByteArrayWrapper(id)).map(_.header.height)) .orElse(getHeightByHeaderId(id)) - ).getOrElse(constants.PreGenesisHeight) + ).getOrElse(settings.constants.PreGenesisHeight) def getBestBlock: Option[Block] = getBestBlockId.flatMap(id => blocksCache.get(ByteArrayWrapper(id)) @@ -63,7 +62,7 @@ trait HistoryApi extends HistoryDBApi { //scalastyle:ignore def getBestBlockHeight: Int = getBestBlockId .flatMap(id => blocksCache.get(ByteArrayWrapper(id)).map(_.header.height).orElse(getHeightByHeaderId(id))) - .getOrElse(constants.PreGenesisHeight) + .getOrElse(settings.constants.PreGenesisHeight) def getHeaderOfBestBlock: Option[Header] = getBestBlockId.flatMap(id => headersCache.get(ByteArrayWrapper(id)) @@ -172,7 +171,7 @@ trait HistoryApi extends HistoryDBApi { //scalastyle:ignore .find(p) .flatMap(getHeaderById) match { case h@Some(_) => h - case None if height > constants.GenesisHeight => loopHeightDown(height - 1, p) + case None if height > settings.constants.GenesisHeight => loopHeightDown(height - 1, p) case n@None => n } @@ -225,7 +224,7 @@ trait HistoryApi extends HistoryDBApi { //scalastyle:ignore startId <- headerIdsAtHeight(heightFrom).headOption startHeader <- getHeaderById(startId) } yield headerChainBack(size, startHeader, _ => false)) match { - case Some(value) if value.headers.exists(_.height == constants.GenesisHeight) => value.headers.map(_.id) + case Some(value) if value.headers.exists(_.height == settings.constants.GenesisHeight) => value.headers.map(_.id) case _ => Seq.empty } } else { @@ -280,43 +279,43 @@ trait HistoryApi extends HistoryDBApi { //scalastyle:ignore private def isNewHeader(header: Header): Boolean = timeProvider.estimatedTime - header.timestamp < - constants.DesiredBlockInterval.toMillis * constants.NewHeaderTimeMultiplier + settings.constants.DesiredBlockInterval.toMillis * settings.constants.NewHeaderTimeMultiplier def isHeadersChainSynced: Boolean = isHeadersChainSyncedVar def addHeaderToCacheIfNecessary(h: Header): Unit = - if (h.height >= getBestHeaderHeight - constants.MaxRollbackDepth) { + if (h.height >= getBestHeaderHeight - settings.constants.MaxRollbackDepth) { logger.debug(s"Should add ${Algos.encode(h.id)} to header cache") val newHeadersIdsAtHeaderHeight = headersCacheIndexes.getOrElse(h.height, Seq.empty[ModifierId]) :+ h.id headersCacheIndexes = headersCacheIndexes + (h.height -> newHeadersIdsAtHeaderHeight) headersCache = headersCache + (ByteArrayWrapper(h.id) -> h) // cleanup cache if necessary - if (headersCacheIndexes.size > constants.MaxRollbackDepth) { - headersCacheIndexes.get(getBestHeaderHeight - constants.MaxRollbackDepth).foreach { headersIds => + if (headersCacheIndexes.size > settings.constants.MaxRollbackDepth) { + headersCacheIndexes.get(getBestHeaderHeight - settings.constants.MaxRollbackDepth).foreach { headersIds => val wrappedIds = headersIds.map(ByteArrayWrapper.apply) logger.debug(s"Cleanup header cache from headers: ${headersIds.map(Algos.encode).mkString(",")}") headersCache = headersCache.filterNot { case (id, _) => wrappedIds.contains(id) } } - headersCacheIndexes = headersCacheIndexes - (getBestHeaderHeight - constants.MaxRollbackDepth) + headersCacheIndexes = headersCacheIndexes - (getBestHeaderHeight - settings.constants.MaxRollbackDepth) } logger.debug(s"headersCache size: ${headersCache.size}") logger.debug(s"headersCacheIndexes size: ${headersCacheIndexes.size}") } def addBlockToCacheIfNecessary(b: Block): Unit = - if (b.header.height >= getBestBlockHeight - constants.MaxRollbackDepth) { + if (b.header.height >= getBestBlockHeight - settings.constants.MaxRollbackDepth) { logger.debug(s"Should add ${Algos.encode(b.id)} to header cache") val newBlocksIdsAtBlockHeight = blocksCacheIndexes.getOrElse(b.header.height, Seq.empty[ModifierId]) :+ b.id blocksCacheIndexes = blocksCacheIndexes + (b.header.height -> newBlocksIdsAtBlockHeight) blocksCache = blocksCache + (ByteArrayWrapper(b.id) -> b) // cleanup cache if necessary - if (blocksCacheIndexes.size > constants.MaxRollbackDepth) { - blocksCacheIndexes.get(getBestBlockHeight - constants.MaxRollbackDepth).foreach { blocksIds => + if (blocksCacheIndexes.size > settings.constants.MaxRollbackDepth) { + blocksCacheIndexes.get(getBestBlockHeight - settings.constants.MaxRollbackDepth).foreach { blocksIds => val wrappedIds = blocksIds.map(ByteArrayWrapper.apply) logger.debug(s"Cleanup block cache from headers: ${blocksIds.map(Algos.encode).mkString(",")}") blocksCache = blocksCache.filterNot { case (id, _) => wrappedIds.contains(id) } } - blocksCacheIndexes = blocksCacheIndexes - (getBestBlockHeight - constants.MaxRollbackDepth) + blocksCacheIndexes = blocksCacheIndexes - (getBestBlockHeight - settings.constants.MaxRollbackDepth) } logger.debug(s"headersCache size: ${blocksCache.size}") logger.debug(s"headersCacheIndexes size: ${blocksCacheIndexes.size}") diff --git a/src/main/scala/encry/view/history/HistoryDBApi.scala b/src/main/scala/encry/view/history/HistoryDBApi.scala index 5295e98440..4480ec9033 100644 --- a/src/main/scala/encry/view/history/HistoryDBApi.scala +++ b/src/main/scala/encry/view/history/HistoryDBApi.scala @@ -7,7 +7,7 @@ import encry.view.history.storage.HistoryStorage import org.encryfoundation.common.modifiers.history.{Block, Header, Payload} import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.{Height, ModifierId, ModifierTypeId} -import encry.settings.EncryAppSettings.read.constants +import encry.settings.EncryAppSettings.settings.constants import scorex.crypto.hash.Digest32 import scala.reflect.ClassTag diff --git a/src/main/scala/encry/view/history/HistoryModifiersProcessors.scala b/src/main/scala/encry/view/history/HistoryModifiersProcessors.scala index 1e9d2a88bc..a6f0fc06d1 100644 --- a/src/main/scala/encry/view/history/HistoryModifiersProcessors.scala +++ b/src/main/scala/encry/view/history/HistoryModifiersProcessors.scala @@ -9,7 +9,7 @@ import encry.storage.VersionalStorage.{StorageKey, StorageValue} import org.encryfoundation.common.modifiers.PersistentModifier import org.encryfoundation.common.modifiers.history.{Block, Header, Payload} import org.encryfoundation.common.utils.TaggedTypes.{Difficulty, ModifierId} -import encry.settings.EncryAppSettings.read.constants +import encry.settings.EncryAppSettings.settings.constants import cats.syntax.option._ import scala.annotation.tailrec import cats.syntax.either._ diff --git a/src/main/scala/encry/view/history/HistoryModifiersValidator.scala b/src/main/scala/encry/view/history/HistoryModifiersValidator.scala index f6070daeb8..e12319be10 100644 --- a/src/main/scala/encry/view/history/HistoryModifiersValidator.scala +++ b/src/main/scala/encry/view/history/HistoryModifiersValidator.scala @@ -4,7 +4,7 @@ import encry.view.history.ValidationError.FatalValidationError._ import encry.view.history.ValidationError.NonFatalValidationError._ import org.encryfoundation.common.modifiers.PersistentModifier import org.encryfoundation.common.modifiers.history.{Header, Payload} -import encry.settings.EncryAppSettings.read.constants +import encry.settings.EncryAppSettings.settings.constants import org.encryfoundation.common.validation.ModifierSemanticValidity import cats.syntax.either._ import encry.consensus.EquihashPowScheme diff --git a/src/main/scala/encry/view/state/UtxoState.scala b/src/main/scala/encry/view/state/UtxoState.scala index 1335191c5d..a264cbfe2a 100644 --- a/src/main/scala/encry/view/state/UtxoState.scala +++ b/src/main/scala/encry/view/state/UtxoState.scala @@ -33,7 +33,7 @@ import org.encryfoundation.common.modifiers.state.box.TokenIssuingBox.TokenId import org.encryfoundation.common.modifiers.state.box.{AssetBox, EncryBaseBox, EncryProposition} import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.{ADDigest, Height} -import encry.settings.EncryAppSettings.read.constants +import encry.settings.EncryAppSettings.settings.constants import org.encryfoundation.common.validation.ValidationResult.Invalid import org.encryfoundation.common.validation.{MalformedModifierError, ValidationResult} import org.iq80.leveldb.Options diff --git a/src/main/scala/encry/view/wallet/AccountManager.scala b/src/main/scala/encry/view/wallet/AccountManager.scala index d5051d1493..c9c248d4bd 100644 --- a/src/main/scala/encry/view/wallet/AccountManager.scala +++ b/src/main/scala/encry/view/wallet/AccountManager.scala @@ -16,7 +16,7 @@ case class AccountManager(store: Store) extends StrictLogging { import encry.storage.EncryStorage._ - val settings: EncryAppSettings = EncryAppSettings.read + val settings: EncryAppSettings = EncryAppSettings.settings lazy val mandatoryAccount: PrivateKey25519 = store.get(AccountManager.MandatoryAccountKey).flatMap { res => store.get(AccountManager.AccountPrefix +: res.data).map { secretRes => diff --git a/src/test/scala/encry/consensus/PowLinearControllerSpec.scala b/src/test/scala/encry/consensus/PowLinearControllerSpec.scala index c768eca404..60c0fcf6c5 100644 --- a/src/test/scala/encry/consensus/PowLinearControllerSpec.scala +++ b/src/test/scala/encry/consensus/PowLinearControllerSpec.scala @@ -1,9 +1,9 @@ package encry.consensus -import encry.settings.EncryAppSettings.read.constants +import encry.settings.EncryAppSettings.settings.constants import org.encryfoundation.common.utils.TaggedTypes.Height import org.scalatest.{Matchers, PropSpec} -import encry.settings.EncryAppSettings.read.constants +import encry.settings.EncryAppSettings.settings.constants import scala.collection.immutable class PowLinearControllerSpec extends PropSpec with Matchers { diff --git a/src/test/scala/encry/consensus/emission/EncrySupplyControllerTest.scala b/src/test/scala/encry/consensus/emission/EncrySupplyControllerTest.scala index 81232d81ec..0482bd263b 100644 --- a/src/test/scala/encry/consensus/emission/EncrySupplyControllerTest.scala +++ b/src/test/scala/encry/consensus/emission/EncrySupplyControllerTest.scala @@ -4,7 +4,7 @@ import encry.consensus.EncrySupplyController import encry.utils.EncryGenerator import org.encryfoundation.common.utils.TaggedTypes.Height import org.scalatest.{Matchers, PropSpec} -import encry.settings.EncryAppSettings.read.constants +import encry.settings.EncryAppSettings.settings.constants import scala.concurrent.duration._ diff --git a/src/test/scala/encry/modifiers/InstanceFactory.scala b/src/test/scala/encry/modifiers/InstanceFactory.scala index b828362b2b..a86b125bcb 100755 --- a/src/test/scala/encry/modifiers/InstanceFactory.scala +++ b/src/test/scala/encry/modifiers/InstanceFactory.scala @@ -21,7 +21,7 @@ import org.encryfoundation.prismlang.core.{Ast, Types} import org.iq80.leveldb.Options import scorex.crypto.hash.Digest32 import scorex.utils.Random -import encry.settings.EncryAppSettings.read.constants +import encry.settings.EncryAppSettings.settings.constants import scala.util.{Random => Scarand} diff --git a/src/test/scala/encry/modifiers/history/BlockSerializerTest.scala b/src/test/scala/encry/modifiers/history/BlockSerializerTest.scala index 7687f0f169..5c582e008c 100755 --- a/src/test/scala/encry/modifiers/history/BlockSerializerTest.scala +++ b/src/test/scala/encry/modifiers/history/BlockSerializerTest.scala @@ -6,11 +6,11 @@ import org.encryfoundation.common.crypto.equihash.EquihashSolution import org.encryfoundation.common.modifiers.history._ import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.{ADDigest, ModifierId} -import encry.settings.EncryAppSettings.read.constants +import encry.settings.EncryAppSettings.settings.constants import org.scalatest.FunSuite import scorex.crypto.hash.Digest32 import scorex.utils.Random -import encry.settings.EncryAppSettings.read.constants +import encry.settings.EncryAppSettings.settings.constants class BlockSerializerTest extends FunSuite with EncryGenerator { diff --git a/src/test/scala/encry/network/DownloadedModifiersValidatorTests.scala b/src/test/scala/encry/network/DownloadedModifiersValidatorTests.scala index 7305e38d16..c09644b2bb 100644 --- a/src/test/scala/encry/network/DownloadedModifiersValidatorTests.scala +++ b/src/test/scala/encry/network/DownloadedModifiersValidatorTests.scala @@ -16,11 +16,11 @@ import org.encryfoundation.common.crypto.equihash.EquihashSolution import org.encryfoundation.common.modifiers.history.{Block, Header, HeaderProtoSerializer, Payload, PayloadProtoSerializer} import org.encryfoundation.common.network.BasicMessagesRepo.Handshake import org.encryfoundation.common.utils.TaggedTypes.ModifierId -import encry.settings.EncryAppSettings.read.constants +import encry.settings.EncryAppSettings.settings.constants import org.scalatest.{BeforeAndAfterAll, Matchers, OneInstancePerTest, WordSpecLike} import scorex.crypto.hash.Digest32 import scorex.utils.Random -import encry.settings.EncryAppSettings.read.constants +import encry.settings.EncryAppSettings.settings.constants class DownloadedModifiersValidatorTests extends WordSpecLike with Matchers diff --git a/src/test/scala/encry/network/NetworkMessagesProtoTest/BasicNetworkMessagesProtoTest.scala b/src/test/scala/encry/network/NetworkMessagesProtoTest/BasicNetworkMessagesProtoTest.scala index bf54cdf506..69ec00df5e 100644 --- a/src/test/scala/encry/network/NetworkMessagesProtoTest/BasicNetworkMessagesProtoTest.scala +++ b/src/test/scala/encry/network/NetworkMessagesProtoTest/BasicNetworkMessagesProtoTest.scala @@ -17,7 +17,7 @@ import scala.util.Try class BasicNetworkMessagesProtoTest extends PropSpec with Matchers with InstanceFactory { - val settings: EncryAppSettings = EncryAppSettings.read + val settings: EncryAppSettings = EncryAppSettings.settings val testedBlocks: Vector[Block] = (0 until 10).foldLeft(generateDummyHistory(settings), Vector.empty[Block]) { case ((prevHistory, blocks), _) => val block: Block = generateNextBlock(prevHistory) diff --git a/src/test/scala/encry/utils/EncryGenerator.scala b/src/test/scala/encry/utils/EncryGenerator.scala index 75500996bd..e67874fbd8 100644 --- a/src/test/scala/encry/utils/EncryGenerator.scala +++ b/src/test/scala/encry/utils/EncryGenerator.scala @@ -1,7 +1,7 @@ package encry.utils import encry.modifiers.mempool.TransactionFactory -import encry.settings.EncryAppSettings.read.constants +import encry.settings.EncryAppSettings.settings.constants import encry.utils.TestHelper.Props import org.encryfoundation.common.crypto.equihash.EquihashSolution import org.encryfoundation.common.crypto.{PrivateKey25519, PublicKey25519, Signature25519} diff --git a/src/test/scala/encry/view/state/UtxoStateSpec.scala b/src/test/scala/encry/view/state/UtxoStateSpec.scala index a23d1bc684..d7e23ae3e7 100755 --- a/src/test/scala/encry/view/state/UtxoStateSpec.scala +++ b/src/test/scala/encry/view/state/UtxoStateSpec.scala @@ -12,15 +12,15 @@ import encry.storage.levelDb.versionalLevelDB.{LevelDbFactory, VLDBWrapper, Vers import encry.utils.{EncryGenerator, FileHelper, TestHelper} import io.iohk.iodb.LSMStore import org.encryfoundation.common.modifiers.history.{Block, Payload} -import encry.settings.EncryAppSettings.read.constants +import encry.settings.EncryAppSettings.settings.constants import org.iq80.leveldb.Options import org.scalatest.{Matchers, PropSpec} -import encry.settings.EncryAppSettings.read.constants +import encry.settings.EncryAppSettings.settings.constants import scala.concurrent.ExecutionContextExecutor class UtxoStateSpec extends PropSpec with Matchers with EncryGenerator { - val settings: EncryAppSettings = EncryAppSettings.read + val settings: EncryAppSettings = EncryAppSettings.settings // def utxoFromBoxHolder(bh: BoxHolder, // dir: File, diff --git a/src/test/scala/encry/view/wallet/WalletSpec.scala b/src/test/scala/encry/view/wallet/WalletSpec.scala index 5b669a2308..b0015b9cbe 100644 --- a/src/test/scala/encry/view/wallet/WalletSpec.scala +++ b/src/test/scala/encry/view/wallet/WalletSpec.scala @@ -12,11 +12,11 @@ import org.encryfoundation.common.modifiers.mempool.transaction.Transaction import org.encryfoundation.common.modifiers.state.box.{AssetBox, MonetaryBox} import org.encryfoundation.common.utils.TaggedTypes.ModifierId import org.scalatest.{Matchers, PropSpec} -import encry.settings.EncryAppSettings.read.constants +import encry.settings.EncryAppSettings.settings.constants class WalletSpec extends PropSpec with Matchers with InstanceFactory with EncryGenerator with StrictLogging { - lazy val settings: EncryAppSettings = EncryAppSettings.read + lazy val settings: EncryAppSettings = EncryAppSettings.settings val dummyLevelDBSettings = LevelDBSettings(5) From 725636080ab2dfa1bae80dfed0dc14f431734cf3 Mon Sep 17 00:00:00 2001 From: capdev Date: Fri, 6 Sep 2019 18:18:52 +0500 Subject: [PATCH 30/51] EncryApp.settings to local param settings replaced --- benchmarks/src/test/scala/benches/Utils.scala | 2 +- src/main/scala/encry/view/state/UtxoState.scala | 15 +++++++-------- .../DownloadedModifiersValidatorTests.scala | 6 ++---- .../scala/encry/view/state/UtxoStateSpec.scala | 13 +++---------- 4 files changed, 13 insertions(+), 23 deletions(-) diff --git a/benchmarks/src/test/scala/benches/Utils.scala b/benchmarks/src/test/scala/benches/Utils.scala index 0a776712b7..8df1ee11e6 100644 --- a/benchmarks/src/test/scala/benches/Utils.scala +++ b/benchmarks/src/test/scala/benches/Utils.scala @@ -5,7 +5,7 @@ import java.io.File import akka.actor.ActorRef import com.typesafe.scalalogging.StrictLogging import encry.modifiers.mempool.TransactionFactory -import encry.settings.{EncryAppSettings, NodeSettings} +import encry.settings.{EncryAppSettings} import encry.storage.VersionalStorage import encry.storage.VersionalStorage.{StorageKey, StorageType, StorageValue, StorageVersion} import encry.storage.iodb.versionalIODB.IODBWrapper diff --git a/src/main/scala/encry/view/state/UtxoState.scala b/src/main/scala/encry/view/state/UtxoState.scala index a264cbfe2a..25523ce7a1 100644 --- a/src/main/scala/encry/view/state/UtxoState.scala +++ b/src/main/scala/encry/view/state/UtxoState.scala @@ -1,11 +1,17 @@ package encry.view.state import java.io.File + import akka.actor.ActorRef +import cats.data.Validated +import cats.instances.list._ +import cats.syntax.either._ +import cats.syntax.traverse._ import com.google.common.primitives.{Ints, Longs} import com.typesafe.scalalogging.StrictLogging import encry.consensus.EncrySupplyController import encry.modifiers.state.{Context, EncryPropositionFunctions} +import encry.settings.EncryAppSettings.settings.constants import encry.settings.{EncryAppSettings, LevelDBSettings} import encry.storage.VersionalStorage import encry.storage.VersionalStorage.{StorageKey, StorageValue, StorageVersion} @@ -18,12 +24,6 @@ import encry.utils.implicits.Validation._ import encry.view.NodeViewErrors.ModifierApplyError import encry.view.NodeViewErrors.ModifierApplyError.StateModifierApplyError import io.iohk.iodb.LSMStore -import cats.data.Validated -import cats.Traverse -import cats.syntax.traverse._ -import cats.instances.list._ -import cats.syntax.either._ -import cats.syntax.validated._ import org.encryfoundation.common.modifiers.PersistentModifier import org.encryfoundation.common.modifiers.history.{Block, Header} import org.encryfoundation.common.modifiers.mempool.transaction.Transaction @@ -33,12 +33,11 @@ import org.encryfoundation.common.modifiers.state.box.TokenIssuingBox.TokenId import org.encryfoundation.common.modifiers.state.box.{AssetBox, EncryBaseBox, EncryProposition} import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.{ADDigest, Height} -import encry.settings.EncryAppSettings.settings.constants import org.encryfoundation.common.validation.ValidationResult.Invalid import org.encryfoundation.common.validation.{MalformedModifierError, ValidationResult} import org.iq80.leveldb.Options import scorex.crypto.hash.Digest32 -import scala.concurrent.ExecutionContextExecutor + import scala.util.Try final case class UtxoState(storage: VersionalStorage, diff --git a/src/test/scala/encry/network/DownloadedModifiersValidatorTests.scala b/src/test/scala/encry/network/DownloadedModifiersValidatorTests.scala index c09644b2bb..f0e2fc03a7 100644 --- a/src/test/scala/encry/network/DownloadedModifiersValidatorTests.scala +++ b/src/test/scala/encry/network/DownloadedModifiersValidatorTests.scala @@ -16,11 +16,9 @@ import org.encryfoundation.common.crypto.equihash.EquihashSolution import org.encryfoundation.common.modifiers.history.{Block, Header, HeaderProtoSerializer, Payload, PayloadProtoSerializer} import org.encryfoundation.common.network.BasicMessagesRepo.Handshake import org.encryfoundation.common.utils.TaggedTypes.ModifierId -import encry.settings.EncryAppSettings.settings.constants import org.scalatest.{BeforeAndAfterAll, Matchers, OneInstancePerTest, WordSpecLike} import scorex.crypto.hash.Digest32 import scorex.utils.Random -import encry.settings.EncryAppSettings.settings.constants class DownloadedModifiersValidatorTests extends WordSpecLike with Matchers @@ -67,7 +65,7 @@ class DownloadedModifiersValidatorTests extends WordSpecLike timestamp2, 2, scala.util.Random.nextLong(), - constants.InitialDifficulty, + settingsWithAllPeers.constants.InitialDifficulty, EquihashSolution(Seq(1, 3)) ) val header_second: Header = Header( @@ -77,7 +75,7 @@ class DownloadedModifiersValidatorTests extends WordSpecLike timestamp1, 1, scala.util.Random.nextLong(), - constants.InitialDifficulty, + settingsWithAllPeers.constants.InitialDifficulty, EquihashSolution(Seq(1, 3)) ) diff --git a/src/test/scala/encry/view/state/UtxoStateSpec.scala b/src/test/scala/encry/view/state/UtxoStateSpec.scala index d7e23ae3e7..119344d2b5 100755 --- a/src/test/scala/encry/view/state/UtxoStateSpec.scala +++ b/src/test/scala/encry/view/state/UtxoStateSpec.scala @@ -3,25 +3,18 @@ package encry.view.state import java.io.File import akka.actor.ActorRef -import encry.modifiers.mempool.TransactionFactory import encry.settings.EncryAppSettings import encry.storage.VersionalStorage import encry.storage.VersionalStorage.{StorageKey, StorageValue, StorageVersion} import encry.storage.iodb.versionalIODB.IODBWrapper import encry.storage.levelDb.versionalLevelDB.{LevelDbFactory, VLDBWrapper, VersionalLevelDBCompanion} -import encry.utils.{EncryGenerator, FileHelper, TestHelper} +import encry.utils.EncryGenerator import io.iohk.iodb.LSMStore -import org.encryfoundation.common.modifiers.history.{Block, Payload} -import encry.settings.EncryAppSettings.settings.constants import org.iq80.leveldb.Options import org.scalatest.{Matchers, PropSpec} -import encry.settings.EncryAppSettings.settings.constants -import scala.concurrent.ExecutionContextExecutor class UtxoStateSpec extends PropSpec with Matchers with EncryGenerator { - val settings: EncryAppSettings = EncryAppSettings.settings - // def utxoFromBoxHolder(bh: BoxHolder, // dir: File, // nodeViewHolderRef: Option[ActorRef], @@ -53,7 +46,7 @@ class UtxoStateSpec extends PropSpec with Matchers with EncryGenerator { settings: EncryAppSettings): UtxoState = { val storage = settings.storage.state match { case VersionalStorage.IODB => - IODBWrapper(new LSMStore(dir, keepVersions = constants.DefaultKeepVersions)) + IODBWrapper(new LSMStore(dir, keepVersions = settings.constants.DefaultKeepVersions)) case VersionalStorage.LevelDB => val levelDBInit = LevelDbFactory.factory.open(dir, new Options) VLDBWrapper(VersionalLevelDBCompanion(levelDBInit, settings.levelDB, keySize = 32)) @@ -66,7 +59,7 @@ class UtxoStateSpec extends PropSpec with Matchers with EncryGenerator { new UtxoState( storage, - constants.PreGenesisHeight, + settings.constants.PreGenesisHeight, 0L, ) } From 12b130f892cbc25345adfb490e60cbcbbc85c61f Mon Sep 17 00:00:00 2001 From: capdev Date: Fri, 6 Sep 2019 18:23:59 +0500 Subject: [PATCH 31/51] fix null cmdArgs --- src/main/scala/encry/settings/EncryAppSettings.scala | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/scala/encry/settings/EncryAppSettings.scala b/src/main/scala/encry/settings/EncryAppSettings.scala index 0d3807e19b..fa2363329a 100644 --- a/src/main/scala/encry/settings/EncryAppSettings.scala +++ b/src/main/scala/encry/settings/EncryAppSettings.scala @@ -31,8 +31,9 @@ final case class EncryAppSettings(directory: String, object EncryAppSettings extends SettingsReaders with NodeSettingsReader with StrictLogging { val configPath: String = "encry" + lazy val settings: EncryAppSettings = - if (EncryApp.cmdArgs.nonEmpty) + if (Option(EncryApp.cmdArgs).nonEmpty && EncryApp.cmdArgs.headOption.nonEmpty) EncryAppSettings.read(EncryApp.cmdArgs.headOption) else ConfigFactory.load("local.conf") From 434883eb855e84c99a17c2a0416ab5a26e553aa5 Mon Sep 17 00:00:00 2001 From: capdev Date: Mon, 9 Sep 2019 12:00:21 +0500 Subject: [PATCH 32/51] refactor load settings --- benchmarks/src/test/scala/benches/HistoryBenches.scala | 4 +++- benchmarks/src/test/scala/benches/StateBenches.scala | 4 +++- .../src/test/scala/benches/StateRollbackBench.scala | 3 ++- benchmarks/src/test/scala/benches/Utils.scala | 2 +- it/src/test/scala/encry/it/MinerWalletBalanceTest.scala | 2 +- .../encry/it/transactions/AssetTokenTransactionTest.scala | 2 +- .../ProcessingTransferTransactionWithEncryCoinsTest.scala | 2 +- src/main/scala/encry/EncryApp.scala | 5 +---- src/main/scala/encry/api/http/routes/InfoApiRoute.scala | 2 +- src/main/scala/encry/cli/ConsoleListener.scala | 2 +- .../scala/encry/consensus/ConsensusSchemeReaders.scala | 2 +- .../scala/encry/consensus/EncrySupplyController.scala | 2 +- src/main/scala/encry/consensus/EquihashPowScheme.scala | 2 +- src/main/scala/encry/consensus/PowLinearController.scala | 2 +- src/main/scala/encry/local/miner/Miner.scala | 4 ++-- src/main/scala/encry/local/miner/Worker.scala | 2 +- src/main/scala/encry/modifiers/history/HeaderUtils.scala | 2 +- src/main/scala/encry/modifiers/history/PayloadUtils.scala | 2 +- src/main/scala/encry/network/PeerConnectionHandler.scala | 2 +- src/main/scala/encry/settings/EncryAppSettings.scala | 8 +++----- src/main/scala/encry/stats/StatsSender.scala | 2 +- src/main/scala/encry/utils/BalanceCalculator.scala | 2 +- src/main/scala/encry/view/ModifiersCache.scala | 2 +- src/main/scala/encry/view/NodeViewHolder.scala | 2 +- .../scala/encry/view/history/BlockDownloadProcessor.scala | 2 +- src/main/scala/encry/view/history/HistoryDBApi.scala | 2 +- .../encry/view/history/HistoryModifiersProcessors.scala | 2 +- .../encry/view/history/HistoryModifiersValidator.scala | 2 +- src/main/scala/encry/view/state/UtxoState.scala | 2 +- src/main/scala/encry/view/wallet/AccountManager.scala | 2 +- .../scala/encry/consensus/PowLinearControllerSpec.scala | 4 ++-- .../consensus/emission/EncrySupplyControllerTest.scala | 2 +- src/test/scala/encry/modifiers/InstanceFactory.scala | 2 +- .../encry/modifiers/history/BlockSerializerTest.scala | 4 ++-- .../BasicNetworkMessagesProtoTest.scala | 3 ++- src/test/scala/encry/utils/EncryGenerator.scala | 2 +- src/test/scala/encry/view/wallet/WalletSpec.scala | 5 +++-- 37 files changed, 50 insertions(+), 48 deletions(-) diff --git a/benchmarks/src/test/scala/benches/HistoryBenches.scala b/benchmarks/src/test/scala/benches/HistoryBenches.scala index 39488bc9b9..3e96cdcd41 100644 --- a/benchmarks/src/test/scala/benches/HistoryBenches.scala +++ b/benchmarks/src/test/scala/benches/HistoryBenches.scala @@ -2,8 +2,10 @@ package benches import java.io.File import java.util.concurrent.TimeUnit + import benches.HistoryBenches.HistoryBenchState import benches.Utils.{generateHistory, generateNextBlockValidForHistory, getRandomTempDir} +import encry.EncryApp import encry.settings.EncryAppSettings import encry.view.history.History import encryBenchmark.Settings @@ -62,7 +64,7 @@ object HistoryBenches { @State(Scope.Benchmark) class HistoryBenchState { - val settings: EncryAppSettings = EncryAppSettings.settings + val settings: EncryAppSettings = EncryApp.settings val tmpDir: File = getRandomTempDir val initialHistory: History = generateHistory(settings, tmpDir) diff --git a/benchmarks/src/test/scala/benches/StateBenches.scala b/benchmarks/src/test/scala/benches/StateBenches.scala index cdda27cf87..0cbabbc78e 100644 --- a/benchmarks/src/test/scala/benches/StateBenches.scala +++ b/benchmarks/src/test/scala/benches/StateBenches.scala @@ -2,9 +2,11 @@ package benches import java.io.File import java.util.concurrent.TimeUnit + import benches.StateBenches.StateBenchState import org.openjdk.jmh.annotations._ import benches.Utils._ +import encry.EncryApp import encry.settings.EncryAppSettings import encry.storage.VersionalStorage import encry.storage.VersionalStorage.IODB @@ -66,7 +68,7 @@ object StateBenches { @State(Scope.Benchmark) class StateBenchState { - val settings: EncryAppSettings = EncryAppSettings.settings + val settings: EncryAppSettings = EncryApp.settings val tmpDir: File = getRandomTempDir val initialBoxes: IndexedSeq[AssetBox] = (0 until benchSettings.stateBenchSettings.totalBoxesNumber).map(nonce => diff --git a/benchmarks/src/test/scala/benches/StateRollbackBench.scala b/benchmarks/src/test/scala/benches/StateRollbackBench.scala index d91f59f238..866f80ceb4 100644 --- a/benchmarks/src/test/scala/benches/StateRollbackBench.scala +++ b/benchmarks/src/test/scala/benches/StateRollbackBench.scala @@ -5,6 +5,7 @@ import java.util.concurrent.TimeUnit import benches.StateRollbackBench.StateRollbackState import benches.Utils._ +import encry.EncryApp import encry.settings.EncryAppSettings import encry.storage.VersionalStorage import encry.utils.CoreTaggedTypes.VersionTag @@ -62,7 +63,7 @@ object StateRollbackBench { @State(Scope.Benchmark) class StateRollbackState { - val settings: EncryAppSettings = EncryAppSettings.settings + val settings: EncryAppSettings = EncryApp.settings val tmpDir: File = getRandomTempDir val initialBoxes: IndexedSeq[AssetBox] = (0 until benchSettings.stateBenchSettings.totalBoxesNumber).map(nonce => diff --git a/benchmarks/src/test/scala/benches/Utils.scala b/benchmarks/src/test/scala/benches/Utils.scala index 8df1ee11e6..751453a18d 100644 --- a/benchmarks/src/test/scala/benches/Utils.scala +++ b/benchmarks/src/test/scala/benches/Utils.scala @@ -25,7 +25,7 @@ import org.encryfoundation.common.modifiers.mempool.transaction._ import org.encryfoundation.common.modifiers.state.box.Box.Amount import org.encryfoundation.common.modifiers.state.box.{AssetBox, EncryProposition, MonetaryBox} import org.encryfoundation.common.utils.TaggedTypes._ -import encry.settings.EncryAppSettings.settings.constants +import encry.EncryApp.settings.constants import org.encryfoundation.prismlang.core.wrapped.BoxedValue import org.iq80.leveldb.Options import scorex.crypto.hash.{Blake2b256, Digest32} diff --git a/it/src/test/scala/encry/it/MinerWalletBalanceTest.scala b/it/src/test/scala/encry/it/MinerWalletBalanceTest.scala index 30326668fe..e7bf0967e5 100644 --- a/it/src/test/scala/encry/it/MinerWalletBalanceTest.scala +++ b/it/src/test/scala/encry/it/MinerWalletBalanceTest.scala @@ -7,7 +7,7 @@ import encry.it.docker.NodesFromDocker import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.Height import org.scalatest.{AsyncFunSuite, Matchers} -import encry.settings.EncryAppSettings.settings.constants +import encry.EncryApp.settings.constants import scala.concurrent.Await import scala.concurrent.duration._ diff --git a/it/src/test/scala/encry/it/transactions/AssetTokenTransactionTest.scala b/it/src/test/scala/encry/it/transactions/AssetTokenTransactionTest.scala index ae3b518067..e07101dfff 100644 --- a/it/src/test/scala/encry/it/transactions/AssetTokenTransactionTest.scala +++ b/it/src/test/scala/encry/it/transactions/AssetTokenTransactionTest.scala @@ -15,7 +15,7 @@ import org.encryfoundation.common.modifiers.state.box.TokenIssuingBox.TokenId import org.encryfoundation.common.modifiers.state.box.{AssetBox, EncryBaseBox, TokenIssuingBox} import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.Height -import encry.settings.EncryAppSettings.settings.constants +import encry.EncryApp.settings.constants import org.scalatest.concurrent.ScalaFutures import org.scalatest.{AsyncFunSuite, Matchers} import scorex.crypto.signatures.Curve25519 diff --git a/it/src/test/scala/encry/it/transactions/ProcessingTransferTransactionWithEncryCoinsTest.scala b/it/src/test/scala/encry/it/transactions/ProcessingTransferTransactionWithEncryCoinsTest.scala index a476c87932..86dc6b51d1 100644 --- a/it/src/test/scala/encry/it/transactions/ProcessingTransferTransactionWithEncryCoinsTest.scala +++ b/it/src/test/scala/encry/it/transactions/ProcessingTransferTransactionWithEncryCoinsTest.scala @@ -14,7 +14,7 @@ import org.encryfoundation.common.modifiers.mempool.transaction.Transaction import org.encryfoundation.common.modifiers.state.box.{AssetBox, EncryBaseBox} import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.Height -import encry.settings.EncryAppSettings.settings.constants +import encry.EncryApp.settings.constants import org.scalatest.concurrent.ScalaFutures import org.scalatest.{AsyncFunSuite, Matchers} import scorex.crypto.signatures.Curve25519 diff --git a/src/main/scala/encry/EncryApp.scala b/src/main/scala/encry/EncryApp.scala index 32a4a511cb..156a8732df 100644 --- a/src/main/scala/encry/EncryApp.scala +++ b/src/main/scala/encry/EncryApp.scala @@ -31,7 +31,6 @@ import scala.concurrent.{Await, ExecutionContextExecutor} import scala.concurrent.duration._ import scala.io.Source import scala.language.postfixOps -import net.ceedubs.ficus.Ficus._ object EncryApp extends App with StrictLogging { @@ -39,9 +38,7 @@ object EncryApp extends App with StrictLogging { implicit val ec: ExecutionContextExecutor = system.dispatcher implicit val materializer: ActorMaterializer = ActorMaterializer() - val cmdArgs:Array[String] = args - - private lazy val settings: EncryAppSettings = EncryAppSettings.settings + lazy val settings: EncryAppSettings = EncryAppSettings.read(args) val timeProvider: NetworkTimeProvider = new NetworkTimeProvider(settings.ntp) val swaggerConfig: String = Source.fromResource("api/openapi.yaml").getLines.mkString("\n") diff --git a/src/main/scala/encry/api/http/routes/InfoApiRoute.scala b/src/main/scala/encry/api/http/routes/InfoApiRoute.scala index 07d4a2f3c2..ef4ae37fe9 100644 --- a/src/main/scala/encry/api/http/routes/InfoApiRoute.scala +++ b/src/main/scala/encry/api/http/routes/InfoApiRoute.scala @@ -13,7 +13,7 @@ import io.circe.Json import io.circe.syntax._ import org.encryfoundation.common.modifiers.history.{Block, Header} import org.encryfoundation.common.utils.Algos -import encry.settings.EncryAppSettings.settings.constants +import encry.EncryApp.settings.constants import scala.concurrent.Future case class InfoApiRoute(dataHolder: ActorRef, diff --git a/src/main/scala/encry/cli/ConsoleListener.scala b/src/main/scala/encry/cli/ConsoleListener.scala index aa6e0b9d61..db66e66f19 100644 --- a/src/main/scala/encry/cli/ConsoleListener.scala +++ b/src/main/scala/encry/cli/ConsoleListener.scala @@ -1,7 +1,7 @@ package encry.cli import akka.actor.Actor -import encry.settings.EncryAppSettings.settings +import encry.EncryApp.settings import encry.cli.commands._ import scala.concurrent.ExecutionContext.Implicits.global import scala.util.{Failure, Success} diff --git a/src/main/scala/encry/consensus/ConsensusSchemeReaders.scala b/src/main/scala/encry/consensus/ConsensusSchemeReaders.scala index 69355484fd..d4556caa73 100644 --- a/src/main/scala/encry/consensus/ConsensusSchemeReaders.scala +++ b/src/main/scala/encry/consensus/ConsensusSchemeReaders.scala @@ -1,6 +1,6 @@ package encry.consensus -import encry.settings.EncryAppSettings.settings.constants +import encry.EncryApp.settings.constants object ConsensusSchemeReaders { diff --git a/src/main/scala/encry/consensus/EncrySupplyController.scala b/src/main/scala/encry/consensus/EncrySupplyController.scala index f8d4733841..177ee14693 100644 --- a/src/main/scala/encry/consensus/EncrySupplyController.scala +++ b/src/main/scala/encry/consensus/EncrySupplyController.scala @@ -1,6 +1,6 @@ package encry.consensus -import encry.settings.EncryAppSettings.settings.constants +import encry.EncryApp.settings.constants import org.encryfoundation.common.modifiers.state.box.Box.Amount import org.encryfoundation.common.utils.TaggedTypes.Height diff --git a/src/main/scala/encry/consensus/EquihashPowScheme.scala b/src/main/scala/encry/consensus/EquihashPowScheme.scala index 31ca622b0b..b2646eedea 100644 --- a/src/main/scala/encry/consensus/EquihashPowScheme.scala +++ b/src/main/scala/encry/consensus/EquihashPowScheme.scala @@ -2,7 +2,7 @@ package encry.consensus import com.google.common.primitives.Chars import encry.crypto.equihash.{Equihash, EquihashValidationErrors} -import encry.settings.EncryAppSettings.settings.constants +import encry.EncryApp.settings.constants import org.bouncycastle.crypto.digests.Blake2bDigest import org.encryfoundation.common.crypto.equihash.EquihashSolution import org.encryfoundation.common.modifiers.history.{Block, Header, Payload} diff --git a/src/main/scala/encry/consensus/PowLinearController.scala b/src/main/scala/encry/consensus/PowLinearController.scala index 1caf44b59c..9fe1a7347b 100644 --- a/src/main/scala/encry/consensus/PowLinearController.scala +++ b/src/main/scala/encry/consensus/PowLinearController.scala @@ -1,6 +1,6 @@ package encry.consensus -import encry.settings.EncryAppSettings.settings.constants +import encry.EncryApp.settings.constants import org.encryfoundation.common.modifiers.history.Header import org.encryfoundation.common.utils.TaggedTypes.{Difficulty, Height} import supertagged.@@ diff --git a/src/main/scala/encry/local/miner/Miner.scala b/src/main/scala/encry/local/miner/Miner.scala index 5ba1b79255..15043e925c 100644 --- a/src/main/scala/encry/local/miner/Miner.scala +++ b/src/main/scala/encry/local/miner/Miner.scala @@ -7,7 +7,7 @@ import akka.util.Timeout import com.typesafe.scalalogging.StrictLogging import encry.EncryApp import encry.EncryApp._ -import encry.settings.EncryAppSettings.settings +import encry.EncryApp.settings import encry.api.http.DataHolderForApi.{UpdatingMinerStatus, UpdatingTransactionsNumberForApi} import encry.consensus.{CandidateBlock, EncrySupplyController, EquihashPowScheme} import encry.local.miner.Miner._ @@ -31,7 +31,7 @@ import org.encryfoundation.common.modifiers.mempool.transaction.Transaction import org.encryfoundation.common.modifiers.state.box.Box.Amount import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.{Difficulty, Height, ModifierId} -import encry.settings.EncryAppSettings.settings.constants +import encry.EncryApp.settings.constants import scala.collection._ import scala.concurrent.duration._ diff --git a/src/main/scala/encry/local/miner/Worker.scala b/src/main/scala/encry/local/miner/Worker.scala index 335f5f7d99..a01077e0f0 100644 --- a/src/main/scala/encry/local/miner/Worker.scala +++ b/src/main/scala/encry/local/miner/Worker.scala @@ -12,7 +12,7 @@ import encry.local.miner.Worker.{MineBlock, NextChallenge} import java.text.SimpleDateFormat import com.typesafe.scalalogging.StrictLogging -import encry.settings.EncryAppSettings.settings.constants +import encry.EncryApp.settings.constants class Worker(myIdx: Int, numberOfWorkers: Int) extends Actor with StrictLogging { diff --git a/src/main/scala/encry/modifiers/history/HeaderUtils.scala b/src/main/scala/encry/modifiers/history/HeaderUtils.scala index c3ad8f6590..ce0ba8f7e0 100644 --- a/src/main/scala/encry/modifiers/history/HeaderUtils.scala +++ b/src/main/scala/encry/modifiers/history/HeaderUtils.scala @@ -2,7 +2,7 @@ package encry.modifiers.history import encry.settings.TestConstants import org.encryfoundation.common.modifiers.history.Header -import encry.settings.EncryAppSettings.settings.constants +import encry.EncryApp.settings.constants import org.encryfoundation.common.validation.{ModifierValidator, ValidationResult} object HeaderUtils { diff --git a/src/main/scala/encry/modifiers/history/PayloadUtils.scala b/src/main/scala/encry/modifiers/history/PayloadUtils.scala index a0caa0bf4b..91e8948dc7 100644 --- a/src/main/scala/encry/modifiers/history/PayloadUtils.scala +++ b/src/main/scala/encry/modifiers/history/PayloadUtils.scala @@ -1,7 +1,7 @@ package encry.modifiers.history import org.encryfoundation.common.modifiers.history.Payload -import encry.settings.EncryAppSettings.settings.constants +import encry.EncryApp.settings.constants import org.encryfoundation.common.validation.{ModifierValidator, ValidationResult} object PayloadUtils { diff --git a/src/main/scala/encry/network/PeerConnectionHandler.scala b/src/main/scala/encry/network/PeerConnectionHandler.scala index 3246be10fa..e781a6bbcf 100755 --- a/src/main/scala/encry/network/PeerConnectionHandler.scala +++ b/src/main/scala/encry/network/PeerConnectionHandler.scala @@ -9,7 +9,7 @@ import akka.util.{ByteString, CompactByteString} import com.google.common.primitives.Ints import com.typesafe.scalalogging.StrictLogging import encry.EncryApp.timeProvider -import encry.settings.EncryAppSettings.settings +import encry.EncryApp.settings import encry.network.PeerConnectionHandler.{AwaitingHandshake, CommunicationState, _} import encry.network.PeerConnectionHandler.ReceivableMessages._ import encry.network.PeersKeeper.{ConnectionStopped, HandshakedDone} diff --git a/src/main/scala/encry/settings/EncryAppSettings.scala b/src/main/scala/encry/settings/EncryAppSettings.scala index fa2363329a..7d49280daa 100644 --- a/src/main/scala/encry/settings/EncryAppSettings.scala +++ b/src/main/scala/encry/settings/EncryAppSettings.scala @@ -32,9 +32,9 @@ object EncryAppSettings extends SettingsReaders with NodeSettingsReader with Str val configPath: String = "encry" - lazy val settings: EncryAppSettings = - if (Option(EncryApp.cmdArgs).nonEmpty && EncryApp.cmdArgs.headOption.nonEmpty) - EncryAppSettings.read(EncryApp.cmdArgs.headOption) + def read(args: Array[String]): EncryAppSettings = + if (Option(args).nonEmpty && args.headOption.nonEmpty) + fromConfig(readConfigFromPath(args.headOption)) else ConfigFactory.load("local.conf") .withFallback(ConfigFactory.load()).as[EncryAppSettings](configPath) @@ -63,8 +63,6 @@ object EncryAppSettings extends SettingsReaders with NodeSettingsReader with Str } } - def read(userConfigPath: Option[String]): EncryAppSettings = fromConfig(readConfigFromPath(userConfigPath)) - val allConfig: Config = ConfigFactory.load("local.conf") .withFallback(ConfigFactory.load()) diff --git a/src/main/scala/encry/stats/StatsSender.scala b/src/main/scala/encry/stats/StatsSender.scala index 6c87a8cc0f..9133ecfc0a 100644 --- a/src/main/scala/encry/stats/StatsSender.scala +++ b/src/main/scala/encry/stats/StatsSender.scala @@ -7,7 +7,7 @@ import java.text.SimpleDateFormat import akka.actor.{Actor, Props} import com.typesafe.scalalogging.StrictLogging import encry.EncryApp.timeProvider -import encry.settings.EncryAppSettings.settings +import encry.EncryApp.settings import encry.consensus.EncrySupplyController import encry.settings.InfluxDBSettings import encry.stats.StatsSender._ diff --git a/src/main/scala/encry/utils/BalanceCalculator.scala b/src/main/scala/encry/utils/BalanceCalculator.scala index 7061c6f656..d9d5284bc8 100644 --- a/src/main/scala/encry/utils/BalanceCalculator.scala +++ b/src/main/scala/encry/utils/BalanceCalculator.scala @@ -1,6 +1,6 @@ package encry.utils -import encry.settings.EncryAppSettings.settings.constants +import encry.EncryApp.settings.constants import org.encryfoundation.common.modifiers.state.box.Box.Amount import org.encryfoundation.common.modifiers.state.box.TokenIssuingBox.TokenId import org.encryfoundation.common.modifiers.state.box.{AssetBox, EncryBaseBox, TokenIssuingBox} diff --git a/src/main/scala/encry/view/ModifiersCache.scala b/src/main/scala/encry/view/ModifiersCache.scala index 68a108fde6..c528243f14 100644 --- a/src/main/scala/encry/view/ModifiersCache.scala +++ b/src/main/scala/encry/view/ModifiersCache.scala @@ -1,7 +1,7 @@ package encry.view import com.typesafe.scalalogging.StrictLogging -import encry.settings.EncryAppSettings.settings +import encry.EncryApp.settings import encry.view.history.History import encry.view.history.ValidationError.{FatalValidationError, NonFatalValidationError} import org.encryfoundation.common.modifiers.PersistentModifier diff --git a/src/main/scala/encry/view/NodeViewHolder.scala b/src/main/scala/encry/view/NodeViewHolder.scala index 0c2d51f262..6dea2c7030 100644 --- a/src/main/scala/encry/view/NodeViewHolder.scala +++ b/src/main/scala/encry/view/NodeViewHolder.scala @@ -8,7 +8,7 @@ import akka.pattern._ import com.typesafe.config.Config import com.typesafe.scalalogging.StrictLogging import encry.EncryApp -import encry.settings.EncryAppSettings.settings +import encry.EncryApp.settings import encry.EncryApp.{miner, nodeViewSynchronizer, timeProvider} import encry.consensus.HistoryConsensus.ProgressInfo import encry.network.DeliveryManager.FullBlockChainIsSynced diff --git a/src/main/scala/encry/view/history/BlockDownloadProcessor.scala b/src/main/scala/encry/view/history/BlockDownloadProcessor.scala index e694748167..8c2be080d5 100644 --- a/src/main/scala/encry/view/history/BlockDownloadProcessor.scala +++ b/src/main/scala/encry/view/history/BlockDownloadProcessor.scala @@ -2,7 +2,7 @@ package encry.view.history import encry.settings.NodeSettings import org.encryfoundation.common.modifiers.history.Header -import encry.settings.EncryAppSettings.settings.constants +import encry.EncryApp.settings.constants /** Class that keeps and calculates minimal height for full blocks starting from which we need to download these full * blocks from the network and keep them in our history. */ diff --git a/src/main/scala/encry/view/history/HistoryDBApi.scala b/src/main/scala/encry/view/history/HistoryDBApi.scala index 4480ec9033..447bc47675 100644 --- a/src/main/scala/encry/view/history/HistoryDBApi.scala +++ b/src/main/scala/encry/view/history/HistoryDBApi.scala @@ -7,7 +7,7 @@ import encry.view.history.storage.HistoryStorage import org.encryfoundation.common.modifiers.history.{Block, Header, Payload} import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.{Height, ModifierId, ModifierTypeId} -import encry.settings.EncryAppSettings.settings.constants +import encry.EncryApp.settings.constants import scorex.crypto.hash.Digest32 import scala.reflect.ClassTag diff --git a/src/main/scala/encry/view/history/HistoryModifiersProcessors.scala b/src/main/scala/encry/view/history/HistoryModifiersProcessors.scala index a6f0fc06d1..aa300bc309 100644 --- a/src/main/scala/encry/view/history/HistoryModifiersProcessors.scala +++ b/src/main/scala/encry/view/history/HistoryModifiersProcessors.scala @@ -9,7 +9,7 @@ import encry.storage.VersionalStorage.{StorageKey, StorageValue} import org.encryfoundation.common.modifiers.PersistentModifier import org.encryfoundation.common.modifiers.history.{Block, Header, Payload} import org.encryfoundation.common.utils.TaggedTypes.{Difficulty, ModifierId} -import encry.settings.EncryAppSettings.settings.constants +import encry.EncryApp.settings.constants import cats.syntax.option._ import scala.annotation.tailrec import cats.syntax.either._ diff --git a/src/main/scala/encry/view/history/HistoryModifiersValidator.scala b/src/main/scala/encry/view/history/HistoryModifiersValidator.scala index e12319be10..56001b0ab0 100644 --- a/src/main/scala/encry/view/history/HistoryModifiersValidator.scala +++ b/src/main/scala/encry/view/history/HistoryModifiersValidator.scala @@ -4,7 +4,7 @@ import encry.view.history.ValidationError.FatalValidationError._ import encry.view.history.ValidationError.NonFatalValidationError._ import org.encryfoundation.common.modifiers.PersistentModifier import org.encryfoundation.common.modifiers.history.{Header, Payload} -import encry.settings.EncryAppSettings.settings.constants +import encry.EncryApp.settings.constants import org.encryfoundation.common.validation.ModifierSemanticValidity import cats.syntax.either._ import encry.consensus.EquihashPowScheme diff --git a/src/main/scala/encry/view/state/UtxoState.scala b/src/main/scala/encry/view/state/UtxoState.scala index 25523ce7a1..fe69810a57 100644 --- a/src/main/scala/encry/view/state/UtxoState.scala +++ b/src/main/scala/encry/view/state/UtxoState.scala @@ -11,7 +11,7 @@ import com.google.common.primitives.{Ints, Longs} import com.typesafe.scalalogging.StrictLogging import encry.consensus.EncrySupplyController import encry.modifiers.state.{Context, EncryPropositionFunctions} -import encry.settings.EncryAppSettings.settings.constants +import encry.EncryApp.settings.constants import encry.settings.{EncryAppSettings, LevelDBSettings} import encry.storage.VersionalStorage import encry.storage.VersionalStorage.{StorageKey, StorageValue, StorageVersion} diff --git a/src/main/scala/encry/view/wallet/AccountManager.scala b/src/main/scala/encry/view/wallet/AccountManager.scala index c9c248d4bd..716c950571 100644 --- a/src/main/scala/encry/view/wallet/AccountManager.scala +++ b/src/main/scala/encry/view/wallet/AccountManager.scala @@ -16,7 +16,7 @@ case class AccountManager(store: Store) extends StrictLogging { import encry.storage.EncryStorage._ - val settings: EncryAppSettings = EncryAppSettings.settings + val settings: EncryAppSettings = EncryApp.settings lazy val mandatoryAccount: PrivateKey25519 = store.get(AccountManager.MandatoryAccountKey).flatMap { res => store.get(AccountManager.AccountPrefix +: res.data).map { secretRes => diff --git a/src/test/scala/encry/consensus/PowLinearControllerSpec.scala b/src/test/scala/encry/consensus/PowLinearControllerSpec.scala index 60c0fcf6c5..9f02903852 100644 --- a/src/test/scala/encry/consensus/PowLinearControllerSpec.scala +++ b/src/test/scala/encry/consensus/PowLinearControllerSpec.scala @@ -1,9 +1,9 @@ package encry.consensus -import encry.settings.EncryAppSettings.settings.constants +import encry.EncryApp.settings.constants import org.encryfoundation.common.utils.TaggedTypes.Height import org.scalatest.{Matchers, PropSpec} -import encry.settings.EncryAppSettings.settings.constants +import encry.EncryApp.settings.constants import scala.collection.immutable class PowLinearControllerSpec extends PropSpec with Matchers { diff --git a/src/test/scala/encry/consensus/emission/EncrySupplyControllerTest.scala b/src/test/scala/encry/consensus/emission/EncrySupplyControllerTest.scala index 0482bd263b..3758ec5f0a 100644 --- a/src/test/scala/encry/consensus/emission/EncrySupplyControllerTest.scala +++ b/src/test/scala/encry/consensus/emission/EncrySupplyControllerTest.scala @@ -4,7 +4,7 @@ import encry.consensus.EncrySupplyController import encry.utils.EncryGenerator import org.encryfoundation.common.utils.TaggedTypes.Height import org.scalatest.{Matchers, PropSpec} -import encry.settings.EncryAppSettings.settings.constants +import encry.EncryApp.settings.constants import scala.concurrent.duration._ diff --git a/src/test/scala/encry/modifiers/InstanceFactory.scala b/src/test/scala/encry/modifiers/InstanceFactory.scala index a86b125bcb..0b795ad507 100755 --- a/src/test/scala/encry/modifiers/InstanceFactory.scala +++ b/src/test/scala/encry/modifiers/InstanceFactory.scala @@ -21,7 +21,7 @@ import org.encryfoundation.prismlang.core.{Ast, Types} import org.iq80.leveldb.Options import scorex.crypto.hash.Digest32 import scorex.utils.Random -import encry.settings.EncryAppSettings.settings.constants +import encry.EncryApp.settings.constants import scala.util.{Random => Scarand} diff --git a/src/test/scala/encry/modifiers/history/BlockSerializerTest.scala b/src/test/scala/encry/modifiers/history/BlockSerializerTest.scala index 5c582e008c..cbbe9e5db3 100755 --- a/src/test/scala/encry/modifiers/history/BlockSerializerTest.scala +++ b/src/test/scala/encry/modifiers/history/BlockSerializerTest.scala @@ -6,11 +6,11 @@ import org.encryfoundation.common.crypto.equihash.EquihashSolution import org.encryfoundation.common.modifiers.history._ import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.{ADDigest, ModifierId} -import encry.settings.EncryAppSettings.settings.constants +import encry.EncryApp.settings.constants import org.scalatest.FunSuite import scorex.crypto.hash.Digest32 import scorex.utils.Random -import encry.settings.EncryAppSettings.settings.constants +import encry.EncryApp.settings.constants class BlockSerializerTest extends FunSuite with EncryGenerator { diff --git a/src/test/scala/encry/network/NetworkMessagesProtoTest/BasicNetworkMessagesProtoTest.scala b/src/test/scala/encry/network/NetworkMessagesProtoTest/BasicNetworkMessagesProtoTest.scala index 69ec00df5e..233c7b879d 100644 --- a/src/test/scala/encry/network/NetworkMessagesProtoTest/BasicNetworkMessagesProtoTest.scala +++ b/src/test/scala/encry/network/NetworkMessagesProtoTest/BasicNetworkMessagesProtoTest.scala @@ -4,6 +4,7 @@ import java.net.InetSocketAddress import NetworkMessagesProto.GeneralizedNetworkProtoMessage import NetworkMessagesProto.GeneralizedNetworkProtoMessage.InnerMessage +import encry.EncryApp import encry.modifiers.InstanceFactory import encry.settings.EncryAppSettings import org.encryfoundation.common.modifiers.history.{Block, Header, Payload} @@ -17,7 +18,7 @@ import scala.util.Try class BasicNetworkMessagesProtoTest extends PropSpec with Matchers with InstanceFactory { - val settings: EncryAppSettings = EncryAppSettings.settings + val settings: EncryAppSettings = EncryApp.settings val testedBlocks: Vector[Block] = (0 until 10).foldLeft(generateDummyHistory(settings), Vector.empty[Block]) { case ((prevHistory, blocks), _) => val block: Block = generateNextBlock(prevHistory) diff --git a/src/test/scala/encry/utils/EncryGenerator.scala b/src/test/scala/encry/utils/EncryGenerator.scala index e67874fbd8..173787d459 100644 --- a/src/test/scala/encry/utils/EncryGenerator.scala +++ b/src/test/scala/encry/utils/EncryGenerator.scala @@ -1,7 +1,7 @@ package encry.utils import encry.modifiers.mempool.TransactionFactory -import encry.settings.EncryAppSettings.settings.constants +import encry.EncryApp.settings.constants import encry.utils.TestHelper.Props import org.encryfoundation.common.crypto.equihash.EquihashSolution import org.encryfoundation.common.crypto.{PrivateKey25519, PublicKey25519, Signature25519} diff --git a/src/test/scala/encry/view/wallet/WalletSpec.scala b/src/test/scala/encry/view/wallet/WalletSpec.scala index b0015b9cbe..6b57168259 100644 --- a/src/test/scala/encry/view/wallet/WalletSpec.scala +++ b/src/test/scala/encry/view/wallet/WalletSpec.scala @@ -1,6 +1,7 @@ package encry.view.wallet import com.typesafe.scalalogging.StrictLogging +import encry.EncryApp import encry.modifiers.InstanceFactory import encry.settings.{EncryAppSettings, LevelDBSettings} import encry.storage.levelDb.versionalLevelDB.{LevelDbFactory, WalletVersionalLevelDBCompanion} @@ -12,11 +13,11 @@ import org.encryfoundation.common.modifiers.mempool.transaction.Transaction import org.encryfoundation.common.modifiers.state.box.{AssetBox, MonetaryBox} import org.encryfoundation.common.utils.TaggedTypes.ModifierId import org.scalatest.{Matchers, PropSpec} -import encry.settings.EncryAppSettings.settings.constants +import encry.EncryApp.settings.constants class WalletSpec extends PropSpec with Matchers with InstanceFactory with EncryGenerator with StrictLogging { - lazy val settings: EncryAppSettings = EncryAppSettings.settings + lazy val settings: EncryAppSettings = EncryApp.settings val dummyLevelDBSettings = LevelDBSettings(5) From 36c627986161c8f50795c43682eba9977fe8ef69 Mon Sep 17 00:00:00 2001 From: capdev Date: Mon, 9 Sep 2019 18:56:08 +0500 Subject: [PATCH 33/51] refactoring EncryApp.settings global links to params --- .../scala/benches/StateRollbackBench.scala | 7 +++-- benchmarks/src/test/scala/benches/Utils.scala | 8 +++-- it/src/main/scala/encry/it/docker/Node.scala | 1 - .../encry/it/MinerWalletBalanceTest.scala | 3 +- .../AssetTokenTransactionTest.scala | 3 +- ...ransferTransactionWithEncryCoinsTest.scala | 6 ++-- src/main/scala/encry/EncryApp.scala | 7 ++--- .../encry/api/http/routes/InfoApiRoute.scala | 11 ++++--- .../scala/encry/cli/ConsoleListener.scala | 9 ++++-- .../encry/consensus/ConsensusScheme.scala | 3 +- .../consensus/ConsensusSchemeReaders.scala | 10 +++--- .../consensus/EncrySupplyController.scala | 16 +++++----- .../encry/consensus/EquihashPowScheme.scala | 12 +++---- .../encry/consensus/PowLinearController.scala | 28 ++++++++--------- src/main/scala/encry/local/miner/Miner.scala | 25 ++++++++------- src/main/scala/encry/local/miner/Worker.scala | 10 +++--- .../encry/modifiers/history/HeaderUtils.scala | 11 +++---- .../modifiers/history/PayloadUtils.scala | 8 ++--- .../DownloadedModifiersValidator.scala | 2 +- .../network/ModifiersToNetworkUtils.scala | 6 ++-- .../encry/settings/ConstantsSettings.scala | 7 +++++ .../encry/settings/EncryAppSettings.scala | 6 ++-- src/main/scala/encry/stats/StatsSender.scala | 4 ++- .../WalletVersionalLevelDB.scala | 7 +++-- .../scala/encry/utils/BalanceCalculator.scala | 4 +-- .../view/history/BlockDownloadProcessor.scala | 4 +-- .../scala/encry/view/history/HistoryApi.scala | 8 +++-- .../encry/view/history/HistoryDBApi.scala | 3 +- .../history/HistoryModifiersProcessors.scala | 5 ++- .../history/HistoryModifiersValidator.scala | 10 +++--- .../scala/encry/view/state/UtxoState.scala | 31 ++++++++++++------- .../scala/encry/view/wallet/EncryWallet.scala | 9 +++--- .../consensus/PowLinearControllerSpec.scala | 3 +- .../emission/EncrySupplyControllerTest.scala | 3 +- .../encry/view/state/UtxoStateSpec.scala | 1 + .../scala/encry/view/wallet/WalletSpec.scala | 7 ++--- 36 files changed, 164 insertions(+), 134 deletions(-) create mode 100644 src/main/scala/encry/settings/ConstantsSettings.scala diff --git a/benchmarks/src/test/scala/benches/StateRollbackBench.scala b/benchmarks/src/test/scala/benches/StateRollbackBench.scala index 866f80ceb4..613bac6e3d 100644 --- a/benchmarks/src/test/scala/benches/StateRollbackBench.scala +++ b/benchmarks/src/test/scala/benches/StateRollbackBench.scala @@ -13,7 +13,7 @@ import encry.view.state.{BoxHolder, UtxoState} import encryBenchmark.Settings import org.encryfoundation.common.modifiers.history.Block import org.encryfoundation.common.modifiers.state.box.AssetBox -import org.encryfoundation.common.utils.TaggedTypes.Difficulty +import org.encryfoundation.common.utils.TaggedTypes.{ADKey, Difficulty} import org.openjdk.jmh.annotations.{Benchmark, Mode, Scope, State} import org.openjdk.jmh.infra.Blackhole import org.openjdk.jmh.profile.GCProfiler @@ -81,12 +81,13 @@ object StateRollbackBench { val nextBlockMainChain: Block = generateNextBlockForStateWithSpendingAllPreviousBoxes( block, stateL, - block.payload.txs.flatMap(_.newBoxes.map(_.asInstanceOf[AssetBox])).toIndexedSeq - ) + block.payload.txs.flatMap(_.newBoxes.map(_.asInstanceOf[AssetBox])).toIndexedSeq, + settings.constants.IntrinsicTokenId) val nextBlockFork: Block = generateNextBlockForStateWithSpendingAllPreviousBoxes( block, stateL, block.payload.txs.flatMap(_.newBoxes.map(_.asInstanceOf[AssetBox])).toIndexedSeq, + settings.constants.IntrinsicTokenId, addDiff = Difficulty @@ BigInt(100) ) val stateN: UtxoState = stateL.applyModifier(nextBlockMainChain).right.get diff --git a/benchmarks/src/test/scala/benches/Utils.scala b/benchmarks/src/test/scala/benches/Utils.scala index 751453a18d..2f3e9e5744 100644 --- a/benchmarks/src/test/scala/benches/Utils.scala +++ b/benchmarks/src/test/scala/benches/Utils.scala @@ -5,7 +5,7 @@ import java.io.File import akka.actor.ActorRef import com.typesafe.scalalogging.StrictLogging import encry.modifiers.mempool.TransactionFactory -import encry.settings.{EncryAppSettings} +import encry.settings.EncryAppSettings import encry.storage.VersionalStorage import encry.storage.VersionalStorage.{StorageKey, StorageType, StorageValue, StorageVersion} import encry.storage.iodb.versionalIODB.IODBWrapper @@ -26,6 +26,7 @@ import org.encryfoundation.common.modifiers.state.box.Box.Amount import org.encryfoundation.common.modifiers.state.box.{AssetBox, EncryProposition, MonetaryBox} import org.encryfoundation.common.utils.TaggedTypes._ import encry.EncryApp.settings.constants +import org.encryfoundation.common.modifiers.state.box.TokenIssuingBox.TokenId import org.encryfoundation.prismlang.core.wrapped.BoxedValue import org.iq80.leveldb.Options import scorex.crypto.hash.{Blake2b256, Digest32} @@ -113,8 +114,10 @@ object Utils extends StrictLogging { def generateNextBlockForStateWithSpendingAllPreviousBoxes(prevBlock: Block, state: UtxoState, box: Seq[AssetBox], + intrinsicTokenId: ADKey, splitCoef: Int = 2, - addDiff: Difficulty = Difficulty @@ BigInt(0)): Block = { + addDiff: Difficulty = Difficulty @@ BigInt(0) + ): Block = { val transactions: Seq[Transaction] = box.indices.foldLeft(box, Seq.empty[Transaction]) { case ((boxes, transactionsL), _) => @@ -196,6 +199,7 @@ object Utils extends StrictLogging { storage, constants.PreGenesisHeight, 0L, + settings.constants ) } diff --git a/it/src/main/scala/encry/it/docker/Node.scala b/it/src/main/scala/encry/it/docker/Node.scala index 85379a519a..9b5f7df99b 100644 --- a/it/src/main/scala/encry/it/docker/Node.scala +++ b/it/src/main/scala/encry/it/docker/Node.scala @@ -4,7 +4,6 @@ import java.net.{InetAddress, InetSocketAddress, URL} import com.typesafe.config.Config import com.typesafe.scalalogging.StrictLogging -import encry.EncryApp.settings import encry.it.api.HttpApi import encry.it.util.KeyHelper.createPrivKey import encry.settings.EncryAppSettings diff --git a/it/src/test/scala/encry/it/MinerWalletBalanceTest.scala b/it/src/test/scala/encry/it/MinerWalletBalanceTest.scala index e7bf0967e5..5e558ec444 100644 --- a/it/src/test/scala/encry/it/MinerWalletBalanceTest.scala +++ b/it/src/test/scala/encry/it/MinerWalletBalanceTest.scala @@ -21,7 +21,8 @@ class MinerWalletBalanceTest extends AsyncFunSuite with Matchers with NodesFromD val heightToCheck = 5 val supplyAtHeight = (0 to heightToCheck).foldLeft(0: Long) { - case (supply, i) => supply + EncrySupplyController.supplyAt(Height @@ i) + case (supply, i) => supply + EncrySupplyController.supplyAt(Height @@ i, constants.InitialEmissionAmount, + constants.EmissionEpochLength, constants.EmissionDecay) } val height = dockerNodes().head.waitForHeadersHeight(heightToCheck) diff --git a/it/src/test/scala/encry/it/transactions/AssetTokenTransactionTest.scala b/it/src/test/scala/encry/it/transactions/AssetTokenTransactionTest.scala index e07101dfff..13d9750e90 100644 --- a/it/src/test/scala/encry/it/transactions/AssetTokenTransactionTest.scala +++ b/it/src/test/scala/encry/it/transactions/AssetTokenTransactionTest.scala @@ -131,7 +131,8 @@ class AssetTokenTransactionTest extends AsyncFunSuite .get val supplyAtHeight: Long = (0 to thirdHeightToWait).foldLeft(0: Long) { - case (supply, i) => supply + EncrySupplyController.supplyAt(Height @@ i) + case (supply, i) => supply + EncrySupplyController.supplyAt(Height @@ i, constants.InitialEmissionAmount, + constants.EmissionEpochLength, constants.EmissionDecay) } val ckeckEncryBalanceNew: Boolean = Await.result(dockerNodes().head.balances, waitTime) diff --git a/it/src/test/scala/encry/it/transactions/ProcessingTransferTransactionWithEncryCoinsTest.scala b/it/src/test/scala/encry/it/transactions/ProcessingTransferTransactionWithEncryCoinsTest.scala index 86dc6b51d1..a3fbe04a7f 100644 --- a/it/src/test/scala/encry/it/transactions/ProcessingTransferTransactionWithEncryCoinsTest.scala +++ b/it/src/test/scala/encry/it/transactions/ProcessingTransferTransactionWithEncryCoinsTest.scala @@ -14,12 +14,11 @@ import org.encryfoundation.common.modifiers.mempool.transaction.Transaction import org.encryfoundation.common.modifiers.state.box.{AssetBox, EncryBaseBox} import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.Height -import encry.EncryApp.settings.constants import org.scalatest.concurrent.ScalaFutures import org.scalatest.{AsyncFunSuite, Matchers} import scorex.crypto.signatures.Curve25519 import scorex.utils.Random - +import encry.EncryApp.settings.constants import scala.concurrent.{Await, Future} import scala.concurrent.duration._ @@ -45,7 +44,8 @@ class ProcessingTransferTransactionWithEncryCoinsTest extends AsyncFunSuite val waitTime: FiniteDuration = 30.minutes val supplyAtHeight: Long = (0 to secondHeightToWait).foldLeft(0: Long) { - case (supply, i) => supply + EncrySupplyController.supplyAt(Height @@ i) + case (supply, i) => supply + EncrySupplyController.supplyAt(Height @@ i, constants.InitialEmissionAmount, + constants.EmissionEpochLength, constants.EmissionDecay) } Await.result(dockerNodes().head.waitForHeadersHeight(firstHeightToWait), waitTime) diff --git a/src/main/scala/encry/EncryApp.scala b/src/main/scala/encry/EncryApp.scala index 156a8732df..d2be7082b0 100644 --- a/src/main/scala/encry/EncryApp.scala +++ b/src/main/scala/encry/EncryApp.scala @@ -8,7 +8,6 @@ import akka.http.scaladsl.Http import akka.http.scaladsl.model.HttpResponse import akka.http.scaladsl.server.ExceptionHandler import akka.stream.ActorMaterializer -import com.typesafe.config.ConfigFactory import com.typesafe.scalalogging.StrictLogging import encry.api.http.{ApiRoute, CompositeHttpService, DataHolderForApi} import encry.api.http.routes._ @@ -38,7 +37,7 @@ object EncryApp extends App with StrictLogging { implicit val ec: ExecutionContextExecutor = system.dispatcher implicit val materializer: ActorMaterializer = ActorMaterializer() - lazy val settings: EncryAppSettings = EncryAppSettings.read(args) + lazy val settings: EncryAppSettings = EncryAppSettings.read(if(Option(args).nonEmpty) Option(args).get.headOption else None) val timeProvider: NetworkTimeProvider = new NetworkTimeProvider(settings.ntp) val swaggerConfig: String = Source.fromResource("api/openapi.yaml").getLines.mkString("\n") @@ -50,7 +49,7 @@ object EncryApp extends App with StrictLogging { lazy val dataHolderForApi = system.actorOf(DataHolderForApi.props(settings, timeProvider), "dataHolder") - lazy val miner: ActorRef = system.actorOf(Miner.props(dataHolderForApi, influxRef), "miner") + lazy val miner: ActorRef = system.actorOf(Miner.props(dataHolderForApi, influxRef, settings), "miner") lazy val memoryPool: ActorRef = system.actorOf(MemoryPool.props(settings, timeProvider, miner, influxRef) .withDispatcher("mempool-dispatcher")) val nodeViewHolder: ActorRef = system.actorOf(NodeViewHolder.props(memoryPool, influxRef, dataHolderForApi) @@ -67,7 +66,7 @@ object EncryApp extends App with StrictLogging { } if (settings.node.mining) miner ! StartMining if (settings.node.useCli) { - system.actorOf(Props[ConsoleListener], "cliListener") + system.actorOf(ConsoleListener.props(settings), "cliListener") system.actorSelection("/user/cliListener") ! StartListening } diff --git a/src/main/scala/encry/api/http/routes/InfoApiRoute.scala b/src/main/scala/encry/api/http/routes/InfoApiRoute.scala index ef4ae37fe9..d5f5408d7c 100644 --- a/src/main/scala/encry/api/http/routes/InfoApiRoute.scala +++ b/src/main/scala/encry/api/http/routes/InfoApiRoute.scala @@ -1,6 +1,7 @@ package encry.api.http.routes import java.net.{InetAddress, InetSocketAddress} + import akka.actor.{ActorRef, ActorRefFactory} import akka.http.scaladsl.server.Route import akka.pattern.ask @@ -13,7 +14,8 @@ import io.circe.Json import io.circe.syntax._ import org.encryfoundation.common.modifiers.history.{Block, Header} import org.encryfoundation.common.utils.Algos -import encry.EncryApp.settings.constants +import org.encryfoundation.common.utils.constants.Constants + import scala.concurrent.Future case class InfoApiRoute(dataHolder: ActorRef, @@ -27,7 +29,6 @@ case class InfoApiRoute(dataHolder: ActorRef, private val getNodeName: String = appSettings.network.nodeName .getOrElse(InetAddress.getLocalHost.getHostAddress + ":" + appSettings.network.bindAddress.getPort) - //todo: remove later private val getStateType: String = "UTXO" @@ -59,7 +60,8 @@ case class InfoApiRoute(dataHolder: ActorRef, txsQty, getConnectionWithPeers, blocksInfo.header, - blocksInfo.block + blocksInfo.block, + appSettings.constants )).okJson() } } @@ -78,7 +80,8 @@ object InfoApiRoute { mempoolSize: Int, connectWithOnlyKnownPeer: Boolean, header: Option[Header], - block: Option[Block] + block: Option[Block], + constants: Constants ): Json = { val stateVersion: Option[String] = readers.s.map(_.version).map(Algos.encode) val prevFullHeaderId: String = block.map(b => Algos.encode(b.header.parentId)).getOrElse("") diff --git a/src/main/scala/encry/cli/ConsoleListener.scala b/src/main/scala/encry/cli/ConsoleListener.scala index db66e66f19..6ee7d7d429 100644 --- a/src/main/scala/encry/cli/ConsoleListener.scala +++ b/src/main/scala/encry/cli/ConsoleListener.scala @@ -1,12 +1,13 @@ package encry.cli -import akka.actor.Actor -import encry.EncryApp.settings +import akka.actor.{Actor, Props} import encry.cli.commands._ +import encry.settings.EncryAppSettings + import scala.concurrent.ExecutionContext.Implicits.global import scala.util.{Failure, Success} -class ConsoleListener extends Actor { +class ConsoleListener(settings: EncryAppSettings) extends Actor { import ConsoleListener._ @@ -64,4 +65,6 @@ object ConsoleListener { val cmdDictionary: Map[String, Map[String, Command]] = ConsoleListener.nodeCmds ++ ConsoleListener.appCmds ++ ConsoleListener.walletCmds ++ ConsoleListener.settingsCmds + + def props(settings: EncryAppSettings): Props = Props(new ConsoleListener(settings)) } \ No newline at end of file diff --git a/src/main/scala/encry/consensus/ConsensusScheme.scala b/src/main/scala/encry/consensus/ConsensusScheme.scala index 4ba131a8df..2a4e52c700 100644 --- a/src/main/scala/encry/consensus/ConsensusScheme.scala +++ b/src/main/scala/encry/consensus/ConsensusScheme.scala @@ -2,7 +2,8 @@ package encry.consensus import encry.crypto.equihash.EquihashValidationErrors import org.encryfoundation.common.modifiers.history.{Block, Header} -import org.encryfoundation.common.utils.TaggedTypes.Difficulty +import org.encryfoundation.common.utils.TaggedTypes.{Difficulty, Height} + import scala.math.BigInt trait ConsensusScheme { diff --git a/src/main/scala/encry/consensus/ConsensusSchemeReaders.scala b/src/main/scala/encry/consensus/ConsensusSchemeReaders.scala index d4556caa73..fc3e0f172a 100644 --- a/src/main/scala/encry/consensus/ConsensusSchemeReaders.scala +++ b/src/main/scala/encry/consensus/ConsensusSchemeReaders.scala @@ -1,8 +1,8 @@ package encry.consensus -import encry.EncryApp.settings.constants +import encry.settings.ConstantsSettings -object ConsensusSchemeReaders { +object ConsensusSchemeReaders extends ConstantsSettings { val consensusScheme: ConsensusScheme = { val schemeName = constants.ConsensusScheme @@ -17,13 +17,11 @@ sealed trait ConsensusSchemeReader[T <: ConsensusScheme] { def read: T } -object EquihashPowSchemeReader extends ConsensusSchemeReader[EquihashPowScheme] { +object EquihashPowSchemeReader extends ConsensusSchemeReader[EquihashPowScheme] with ConstantsSettings { val schemeName = "equihash" def read: EquihashPowScheme = { - val n = constants.n - val k = constants.k - EquihashPowScheme(n, k) + EquihashPowScheme(constants.n, constants.k, constants.Version, constants.PreGenesisHeight, constants.MaxTarget) } } diff --git a/src/main/scala/encry/consensus/EncrySupplyController.scala b/src/main/scala/encry/consensus/EncrySupplyController.scala index 177ee14693..a79cb6236f 100644 --- a/src/main/scala/encry/consensus/EncrySupplyController.scala +++ b/src/main/scala/encry/consensus/EncrySupplyController.scala @@ -1,16 +1,16 @@ package encry.consensus -import encry.EncryApp.settings.constants import org.encryfoundation.common.modifiers.state.box.Box.Amount import org.encryfoundation.common.utils.TaggedTypes.Height object EncrySupplyController { - def supplyAt(height: Height): Amount = if (height > constants.EmissionEpochLength){ - val multiptlyIterQty: Int = - if (height % constants.EmissionEpochLength == 0) - Math.round(height / constants.EmissionEpochLength) + 1 - else Math.round(height / constants.EmissionEpochLength) - (constants.InitialEmissionAmount * Math.pow(1 - constants.EmissionDecay, multiptlyIterQty)).toLong - } else constants.InitialEmissionAmount + def supplyAt(height: Height, initialEmissionAmount: Int, emissionEpochLength: Int, emissionDecay: Double): Amount = + if (height > emissionEpochLength) { + val multiptlyIterQty: Int = + if (height % emissionEpochLength == 0) + Math.round(height / emissionEpochLength) + 1 + else Math.round(height / emissionEpochLength) + (initialEmissionAmount * Math.pow(1 - emissionDecay, multiptlyIterQty)).toLong + } else initialEmissionAmount } \ No newline at end of file diff --git a/src/main/scala/encry/consensus/EquihashPowScheme.scala b/src/main/scala/encry/consensus/EquihashPowScheme.scala index b2646eedea..41aae00e2e 100644 --- a/src/main/scala/encry/consensus/EquihashPowScheme.scala +++ b/src/main/scala/encry/consensus/EquihashPowScheme.scala @@ -2,18 +2,19 @@ package encry.consensus import com.google.common.primitives.Chars import encry.crypto.equihash.{Equihash, EquihashValidationErrors} -import encry.EncryApp.settings.constants import org.bouncycastle.crypto.digests.Blake2bDigest import org.encryfoundation.common.crypto.equihash.EquihashSolution import org.encryfoundation.common.modifiers.history.{Block, Header, Payload} import org.encryfoundation.common.utils.Algos -import org.encryfoundation.common.utils.TaggedTypes.{Difficulty, ModifierId} +import org.encryfoundation.common.utils.TaggedTypes.{Difficulty, Height, ModifierId} import scorex.crypto.hash.Digest32 + import scala.math.BigInt import cats.syntax.either._ import encry.crypto.equihash.EquihashValidationErrors._ -case class EquihashPowScheme(n: Char, k: Char) extends ConsensusScheme { +case class EquihashPowScheme(n: Char, k: Char, version: Byte, preGenesisHeight: Height, maxTarget: BigInt) + extends ConsensusScheme { private val seed: Array[Byte] = "equi_seed_12".getBytes(Algos.charset) ++ Chars.toByteArray(n) ++ Chars.toByteArray(k) @@ -21,10 +22,9 @@ case class EquihashPowScheme(n: Char, k: Char) extends ConsensusScheme { override def verifyCandidate(candidateBlock: CandidateBlock, startingNonce: Long): Either[EquihashValidationErrors, Block] = { val difficulty = candidateBlock.difficulty - val version: Byte = constants.Version val parentId: ModifierId = candidateBlock.parentOpt.map(_.id).getOrElse(Header.GenesisParentId) val txsRoot: Digest32 = Payload.rootHash(candidateBlock.transactions.map(_.id)) - val height: Int = candidateBlock.parentOpt.map(_.height).getOrElse(constants.PreGenesisHeight) + 1 + val height: Int = candidateBlock.parentOpt.map(_.height).getOrElse(preGenesisHeight) + 1 val bytesPerWord: Int = n / 8 val wordsPerHash: Int = 512 / n val digest: Blake2bDigest = new Blake2bDigest(null, bytesPerWord * wordsPerHash, null, seed) @@ -61,7 +61,7 @@ case class EquihashPowScheme(n: Char, k: Char) extends ConsensusScheme { .validateSolution(n, k, seed, Equihash.nonceToLeBytes(header.nonce), header.equihashSolution.indexedSeq) override def realDifficulty(header: Header): Difficulty = - Difficulty @@ (constants.MaxTarget / BigInt(1, header.powHash)) + Difficulty @@ (maxTarget / BigInt(1, header.powHash)) override def toString: String = s"EquihashPowScheme(n = ${n.toInt}, k = ${k.toInt})" } \ No newline at end of file diff --git a/src/main/scala/encry/consensus/PowLinearController.scala b/src/main/scala/encry/consensus/PowLinearController.scala index 9fe1a7347b..dbc3bef145 100644 --- a/src/main/scala/encry/consensus/PowLinearController.scala +++ b/src/main/scala/encry/consensus/PowLinearController.scala @@ -1,41 +1,41 @@ package encry.consensus -import encry.EncryApp.settings.constants import org.encryfoundation.common.modifiers.history.Header import org.encryfoundation.common.utils.TaggedTypes.{Difficulty, Height} import supertagged.@@ -object PowLinearController { +import scala.concurrent.duration.FiniteDuration - private val chainParams = constants +object PowLinearController { val PrecisionConstant: Int = 1000000000 - def getDifficulty(previousHeaders: Seq[(Int, Header)]): Difficulty = + def getDifficulty(previousHeaders: Seq[(Int, Header)], epochLength: Int, desiredBlockInterval: FiniteDuration, + initialDifficulty: Difficulty): Difficulty = if (previousHeaders.lengthCompare(1) == 0 || previousHeaders.head._2.timestamp >= previousHeaders.last._2.timestamp) previousHeaders.head._2.difficulty else { val data: Seq[(Int, Difficulty)] = previousHeaders.sliding(2).toList.map { d => val start: (Int, Header) = d.head val end: (Int, Header) = d.last - require(end._1 - start._1 == chainParams.EpochLength, s"Incorrect heights interval for $d") - val diff: @@[BigInt, Difficulty.Tag] = Difficulty @@ (end._2.requiredDifficulty * chainParams.DesiredBlockInterval.toMillis * - chainParams.EpochLength / (end._2.timestamp - start._2.timestamp)) + require(end._1 - start._1 == epochLength, s"Incorrect heights interval for $d") + val diff: @@[BigInt, Difficulty.Tag] = Difficulty @@ (end._2.requiredDifficulty * desiredBlockInterval.toMillis * + epochLength / (end._2.timestamp - start._2.timestamp)) (end._1, diff) } - val diff: Difficulty = interpolate(data) - if (diff >= chainParams.InitialDifficulty) diff else chainParams.InitialDifficulty + val diff: Difficulty = interpolate(data, epochLength) + if (diff >= initialDifficulty) diff else initialDifficulty } /** Used to provide `getDifficulty()` with the sequence of headers of correct heights. */ - def getHeightsForRetargetingAt(height: Height): Seq[Height] = { - if ((height - 1) % chainParams.EpochLength == 0 && height > chainParams.EpochLength * chainParams.RetargetingEpochsQty) - (0 to chainParams.RetargetingEpochsQty).reverse.map(i => (height - 1) - i * chainParams.EpochLength) + def getHeightsForRetargetingAt(height: Height, epochLength: Int, retargetingEpochsQty: Int): Seq[Height] = { + if ((height - 1) % epochLength == 0 && height > epochLength * retargetingEpochsQty) + (0 to retargetingEpochsQty).reverse.map(i => (height - 1) - i * epochLength) else Seq(height - 1) }.map(i => Height @@ i) // y = a + bx - private def interpolate(data: Seq[(Int, Difficulty)]): Difficulty = { + private def interpolate(data: Seq[(Int, Difficulty)], epochLength: Int): Difficulty = { val size: Int = data.size val xy: Iterable[BigInt] = data.map(d => d._1 * d._2) val x: Iterable[BigInt] = data.map(d => BigInt(d._1)) @@ -49,7 +49,7 @@ object PowLinearController { val k: BigInt = (xySum * size - xSum * ySum) * PrecisionConstant / (x2Sum * size - xSum * xSum) val b: BigInt = (ySum * PrecisionConstant - k * xSum) / size / PrecisionConstant - val point: Int = data.map(_._1).max + chainParams.EpochLength + val point: Int = data.map(_._1).max + epochLength Difficulty @@ (b + k * point / PrecisionConstant) } } diff --git a/src/main/scala/encry/local/miner/Miner.scala b/src/main/scala/encry/local/miner/Miner.scala index 15043e925c..105f0dfef6 100644 --- a/src/main/scala/encry/local/miner/Miner.scala +++ b/src/main/scala/encry/local/miner/Miner.scala @@ -2,12 +2,11 @@ package encry.local.miner import java.text.SimpleDateFormat import java.util.Date + import akka.actor.{Actor, ActorRef, Props} import akka.util.Timeout import com.typesafe.scalalogging.StrictLogging import encry.EncryApp -import encry.EncryApp._ -import encry.EncryApp.settings import encry.api.http.DataHolderForApi.{UpdatingMinerStatus, UpdatingTransactionsNumberForApi} import encry.consensus.{CandidateBlock, EncrySupplyController, EquihashPowScheme} import encry.local.miner.Miner._ @@ -15,6 +14,7 @@ import encry.local.miner.Worker.NextChallenge import encry.modifiers.mempool.TransactionFactory import encry.network.DeliveryManager.FullBlockChainIsSynced import encry.network.NodeViewSynchronizer.ReceivableMessages.SemanticallySuccessfulModifier +import encry.settings.EncryAppSettings import encry.stats.StatsSender._ import encry.utils.NetworkTime.Time import encry.view.NodeViewHolder.CurrentView @@ -31,11 +31,12 @@ import org.encryfoundation.common.modifiers.mempool.transaction.Transaction import org.encryfoundation.common.modifiers.state.box.Box.Amount import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.{Difficulty, Height, ModifierId} -import encry.EncryApp.settings.constants +import encry.EncryApp.{ec, nodeViewHolder, timeProvider} + import scala.collection._ import scala.concurrent.duration._ -class Miner(dataHolder: ActorRef, influx: Option[ActorRef]) extends Actor with StrictLogging { +class Miner(dataHolder: ActorRef, influx: Option[ActorRef], settings: EncryAppSettings) extends Actor with StrictLogging { implicit val timeout: Timeout = Timeout(5.seconds) @@ -49,7 +50,8 @@ class Miner(dataHolder: ActorRef, influx: Option[ActorRef]) extends Actor with S var candidateOpt: Option[CandidateBlock] = None var syncingDone: Boolean = settings.node.offlineGeneration val numberOfWorkers: Int = settings.node.numberOfMiningWorkers - val powScheme: EquihashPowScheme = EquihashPowScheme(constants.n, constants.k) + val powScheme: EquihashPowScheme = EquihashPowScheme(settings.constants.n, settings.constants.k, + settings.constants.Version, settings.constants.PreGenesisHeight, settings.constants.MaxTarget) var transactionsPool: IndexedSeq[Transaction] = IndexedSeq.empty[Transaction] override def preStart(): Unit = { @@ -78,7 +80,7 @@ class Miner(dataHolder: ActorRef, influx: Option[ActorRef]) extends Actor with S self ! StartMining case StartMining if syncingDone => for (i <- 0 until numberOfWorkers) yield context.actorOf( - Props(classOf[Worker], i, numberOfWorkers).withDispatcher("mining-dispatcher").withMailbox("mining-mailbox")) + Props(classOf[Worker], i, numberOfWorkers, settings.constants.PreGenesisHeight).withDispatcher("mining-dispatcher").withMailbox("mining-mailbox")) candidateOpt match { case Some(candidateBlock) => logger.info(s"Starting mining at ${dateFormat.format(new Date(System.currentTimeMillis()))}") @@ -164,9 +166,10 @@ class Miner(dataHolder: ActorRef, influx: Option[ActorRef]) extends Actor with S } else usedInputsIds -> acc }._2 val timestamp: Time = timeProvider.estimatedTime - val height: Height = Height @@ (bestHeaderOpt.map(_.height).getOrElse(constants.PreGenesisHeight) + 1) + val height: Height = Height @@ (bestHeaderOpt.map(_.height).getOrElse(settings.constants.PreGenesisHeight) + 1) val feesTotal: Amount = filteredTxsWithoutDuplicateInputs.map(_.fee).sum - val supplyTotal: Amount = EncrySupplyController.supplyAt(view.state.height) + val supplyTotal: Amount = EncrySupplyController.supplyAt(view.state.height, settings.constants.InitialEmissionAmount, + settings.constants.EmissionEpochLength, settings.constants.EmissionDecay) val minerSecret: PrivateKey25519 = view.vault.accountManager.mandatoryAccount val coinbase: Transaction = TransactionFactory .coinbaseTransactionScratch(minerSecret.publicImage, timestamp, supplyTotal, feesTotal, view.state.height) @@ -177,10 +180,10 @@ class Miner(dataHolder: ActorRef, influx: Option[ActorRef]) extends Actor with S case Right(value) => value case Left(value) => EncryApp.forceStopApplication(999, value.toString) }) - .getOrElse(constants.InitialDifficulty) + .getOrElse(settings.constants.InitialDifficulty) val candidate: CandidateBlock = - CandidateBlock(bestHeaderOpt, constants.Version, txs, timestamp, difficulty) + CandidateBlock(bestHeaderOpt, settings.constants.Version, txs, timestamp, difficulty) logger.info(s"Sending candidate block with ${candidate.transactions.length - 1} transactions " + s"and 1 coinbase for height $height.") @@ -247,5 +250,5 @@ object Miner { "candidateBlock" -> r.candidateBlock.map(_.asJson).getOrElse("None".asJson) ).asJson - def props(dataHolder: ActorRef, influx: Option[ActorRef]): Props = Props(new Miner(dataHolder, influx)) + def props(dataHolder: ActorRef, influx: Option[ActorRef], settings: EncryAppSettings): Props = Props(new Miner(dataHolder, influx, settings)) } \ No newline at end of file diff --git a/src/main/scala/encry/local/miner/Worker.scala b/src/main/scala/encry/local/miner/Worker.scala index a01077e0f0..13a6b325e6 100644 --- a/src/main/scala/encry/local/miner/Worker.scala +++ b/src/main/scala/encry/local/miner/Worker.scala @@ -3,18 +3,16 @@ package encry.local.miner import java.util.Date import akka.actor.Actor -import encry.EncryApp._ - -import scala.concurrent.duration._ +import encry.EncryApp.miner import encry.consensus.{CandidateBlock, ConsensusSchemeReaders} import encry.local.miner.Miner.MinedBlock import encry.local.miner.Worker.{MineBlock, NextChallenge} import java.text.SimpleDateFormat import com.typesafe.scalalogging.StrictLogging -import encry.EncryApp.settings.constants +import org.encryfoundation.common.utils.TaggedTypes.Height -class Worker(myIdx: Int, numberOfWorkers: Int) extends Actor with StrictLogging { +class Worker(myIdx: Int, numberOfWorkers: Int, preGenesisHeight: Height) extends Actor with StrictLogging { val sdf: SimpleDateFormat = new SimpleDateFormat("HH:mm:ss") var challengeStartTime: Date = new Date(System.currentTimeMillis()) @@ -43,7 +41,7 @@ class Worker(myIdx: Int, numberOfWorkers: Int) extends Actor with StrictLogging case NextChallenge(candidate: CandidateBlock) => challengeStartTime = new Date(System.currentTimeMillis()) logger.info(s"Start next challenge on worker: $myIdx at height " + - s"${candidate.parentOpt.map(_.height + 1).getOrElse(constants.PreGenesisHeight.toString)} at ${sdf.format(challengeStartTime)}") + s"${candidate.parentOpt.map(_.height + 1).getOrElse(preGenesisHeight.toString)} at ${sdf.format(challengeStartTime)}") self ! MineBlock(candidate, Long.MaxValue / numberOfWorkers * myIdx) } diff --git a/src/main/scala/encry/modifiers/history/HeaderUtils.scala b/src/main/scala/encry/modifiers/history/HeaderUtils.scala index ce0ba8f7e0..a14f278a76 100644 --- a/src/main/scala/encry/modifiers/history/HeaderUtils.scala +++ b/src/main/scala/encry/modifiers/history/HeaderUtils.scala @@ -2,18 +2,17 @@ package encry.modifiers.history import encry.settings.TestConstants import org.encryfoundation.common.modifiers.history.Header -import encry.EncryApp.settings.constants import org.encryfoundation.common.validation.{ModifierValidator, ValidationResult} object HeaderUtils { - def syntacticallyValidity(header: Header): ValidationResult = ModifierValidator.accumulateErrors + def syntacticallyValidity(header: Header, modifierIdSize: Int): ValidationResult = ModifierValidator.accumulateErrors .demand(header.modifierTypeId == Header.modifierTypeId, s"Modifier's type id should be ${Header.modifierTypeId}") - .demand(header.id.size == constants.ModifierIdSize, - s"Modifier's id should be ${constants.ModifierIdSize} bytes") - .demand(header.parentId.size == constants.ModifierIdSize, - s"Parent's id should be ${constants.ModifierIdSize} bytes") + .demand(header.id.size == modifierIdSize, + s"Modifier's id should be $modifierIdSize bytes") + .demand(header.parentId.size == modifierIdSize, + s"Parent's id should be $modifierIdSize bytes") .demand(header.transactionsRoot.size == TestConstants.TransactionsRootSize, s"TransactionsRoot's size should be ${TestConstants.TransactionsRootSize} bytes") .result diff --git a/src/main/scala/encry/modifiers/history/PayloadUtils.scala b/src/main/scala/encry/modifiers/history/PayloadUtils.scala index 91e8948dc7..7354a17ea2 100644 --- a/src/main/scala/encry/modifiers/history/PayloadUtils.scala +++ b/src/main/scala/encry/modifiers/history/PayloadUtils.scala @@ -1,16 +1,16 @@ package encry.modifiers.history import org.encryfoundation.common.modifiers.history.Payload -import encry.EncryApp.settings.constants + import org.encryfoundation.common.validation.{ModifierValidator, ValidationResult} object PayloadUtils { //todo add payload size validation - def syntacticallyValidity(payload: Payload): ValidationResult = ModifierValidator.accumulateErrors + def syntacticallyValidity(payload: Payload, modifierIdSize: Int): ValidationResult = ModifierValidator.accumulateErrors .demand(payload.modifierTypeId == Payload.modifierTypeId, s"Modifier's type id should be ${Payload.modifierTypeId}") - .demand(payload.headerId.size == constants.ModifierIdSize, - s"Modifier's id should be ${constants.ModifierIdSize} bytes") + .demand(payload.headerId.size == modifierIdSize, + s"Modifier's id should be $modifierIdSize bytes") .result } \ No newline at end of file diff --git a/src/main/scala/encry/network/DownloadedModifiersValidator.scala b/src/main/scala/encry/network/DownloadedModifiersValidator.scala index 25450f83a4..b7a1ac80c3 100644 --- a/src/main/scala/encry/network/DownloadedModifiersValidator.scala +++ b/src/main/scala/encry/network/DownloadedModifiersValidator.scala @@ -35,7 +35,7 @@ class DownloadedModifiersValidator(settings: EncryAppSettings, case ModifiersForValidating(remote, typeId, filteredModifiers) if typeId != Transaction.modifierTypeId => filteredModifiers.foreach { case (id, bytes) => ModifiersToNetworkUtils.fromProto(typeId, bytes) match { - case Success(modifier) if ModifiersToNetworkUtils.isSyntacticallyValid(modifier) => + case Success(modifier) if ModifiersToNetworkUtils.isSyntacticallyValid(modifier, settings.constants.ModifierIdSize) => logger.debug(s"Modifier: ${modifier.encodedId} after testApplicable is correct. " + s"Sending validated modifier to NodeViewHolder") influxRef.foreach(_ ! ValidatedModifierFromNetwork(typeId)) diff --git a/src/main/scala/encry/network/ModifiersToNetworkUtils.scala b/src/main/scala/encry/network/ModifiersToNetworkUtils.scala index 60c7f01939..28517fc2f8 100644 --- a/src/main/scala/encry/network/ModifiersToNetworkUtils.scala +++ b/src/main/scala/encry/network/ModifiersToNetworkUtils.scala @@ -23,9 +23,9 @@ object ModifiersToNetworkUtils extends StrictLogging { case m => Failure(new RuntimeException(s"Try to deserialize unknown modifier: $m from proto.")) }).flatten - def isSyntacticallyValid(modifier: PersistentModifier): Boolean = modifier match { - case h: Header => HeaderUtils.syntacticallyValidity(h).isSuccess - case p: Payload => PayloadUtils.syntacticallyValidity(p).isSuccess + def isSyntacticallyValid(modifier: PersistentModifier, modifierIdSize: Int): Boolean = modifier match { + case h: Header => HeaderUtils.syntacticallyValidity(h, modifierIdSize).isSuccess + case p: Payload => PayloadUtils.syntacticallyValidity(p, modifierIdSize).isSuccess case _ => true } } \ No newline at end of file diff --git a/src/main/scala/encry/settings/ConstantsSettings.scala b/src/main/scala/encry/settings/ConstantsSettings.scala new file mode 100644 index 0000000000..4282277a3b --- /dev/null +++ b/src/main/scala/encry/settings/ConstantsSettings.scala @@ -0,0 +1,7 @@ +package encry.settings + +import org.encryfoundation.common.utils.constants.Constants + +trait ConstantsSettings { + val constants: Constants = EncryAppSettings.read().constants +} diff --git a/src/main/scala/encry/settings/EncryAppSettings.scala b/src/main/scala/encry/settings/EncryAppSettings.scala index 7d49280daa..49101301e3 100644 --- a/src/main/scala/encry/settings/EncryAppSettings.scala +++ b/src/main/scala/encry/settings/EncryAppSettings.scala @@ -32,9 +32,9 @@ object EncryAppSettings extends SettingsReaders with NodeSettingsReader with Str val configPath: String = "encry" - def read(args: Array[String]): EncryAppSettings = - if (Option(args).nonEmpty && args.headOption.nonEmpty) - fromConfig(readConfigFromPath(args.headOption)) + def read(args: Option[String] = None): EncryAppSettings = + if (args.nonEmpty) + fromConfig(readConfigFromPath(args)) else ConfigFactory.load("local.conf") .withFallback(ConfigFactory.load()).as[EncryAppSettings](configPath) diff --git a/src/main/scala/encry/stats/StatsSender.scala b/src/main/scala/encry/stats/StatsSender.scala index 9133ecfc0a..bb0d4ebf0b 100644 --- a/src/main/scala/encry/stats/StatsSender.scala +++ b/src/main/scala/encry/stats/StatsSender.scala @@ -46,7 +46,9 @@ class StatsSender(influxDBSettings: InfluxDBSettings) extends Actor with StrictL s"historyWeight,nodeName=$nodeName,height=${fb.height} " + s"value=${new File("encry/data/history/").listFiles.foldLeft(0L)(_ + _.length())}", //++ s"supply,nodeName=$nodeName,height=${fb.height} " + - s"value=${EncrySupplyController.supplyAt(fb.height.asInstanceOf[Height])}" //++ + s"value=${EncrySupplyController.supplyAt(fb.height.asInstanceOf[Height], + settings.constants.InitialEmissionAmount, settings.constants.EmissionEpochLength, + settings.constants.EmissionDecay)}" //++ )) case HeightStatistics(bestHeaderHeight, bestBlockHeight) => diff --git a/src/main/scala/encry/storage/levelDb/versionalLevelDB/WalletVersionalLevelDB.scala b/src/main/scala/encry/storage/levelDb/versionalLevelDB/WalletVersionalLevelDB.scala index 201ae99b73..6c25c96ccb 100644 --- a/src/main/scala/encry/storage/levelDb/versionalLevelDB/WalletVersionalLevelDB.scala +++ b/src/main/scala/encry/storage/levelDb/versionalLevelDB/WalletVersionalLevelDB.scala @@ -40,11 +40,12 @@ case class WalletVersionalLevelDB(db: DB, settings: LevelDBSettings) extends Str def rollback(modId: ModifierId): Unit = levelDb.rollbackTo(LevelDBVersion @@ modId.untag(ModifierId)) - def updateWallet(modifierId: ModifierId, newBxs: Seq[EncryBaseBox], spentBxs: Seq[EncryBaseBox]): Unit = { + def updateWallet(modifierId: ModifierId, newBxs: Seq[EncryBaseBox], spentBxs: Seq[EncryBaseBox], + intrinsicTokenId: ADKey): Unit = { val bxsToInsert: Seq[EncryBaseBox] = newBxs.filter(bx => !spentBxs.contains(bx)) val newBalances: Map[String, Amount] = { - val toRemoveFromBalance = BalanceCalculator.balanceSheet(spentBxs).map { case (key, value) => ByteStr(key) -> value * -1 } - val toAddToBalance = BalanceCalculator.balanceSheet(newBxs).map { case (key, value) => ByteStr(key) -> value } + val toRemoveFromBalance = BalanceCalculator.balanceSheet(spentBxs, intrinsicTokenId).map { case (key, value) => ByteStr(key) -> value * -1 } + val toAddToBalance = BalanceCalculator.balanceSheet(newBxs, intrinsicTokenId).map { case (key, value) => ByteStr(key) -> value } val prevBalance = getBalances.map { case (id, value) => ByteStr(Algos.decode(id).get) -> value } (toAddToBalance |+| toRemoveFromBalance |+| prevBalance).map { case (tokenId, value) => tokenId.toString -> value } } diff --git a/src/main/scala/encry/utils/BalanceCalculator.scala b/src/main/scala/encry/utils/BalanceCalculator.scala index d9d5284bc8..a923c78124 100644 --- a/src/main/scala/encry/utils/BalanceCalculator.scala +++ b/src/main/scala/encry/utils/BalanceCalculator.scala @@ -1,6 +1,5 @@ package encry.utils -import encry.EncryApp.settings.constants import org.encryfoundation.common.modifiers.state.box.Box.Amount import org.encryfoundation.common.modifiers.state.box.TokenIssuingBox.TokenId import org.encryfoundation.common.modifiers.state.box.{AssetBox, EncryBaseBox, TokenIssuingBox} @@ -8,10 +7,11 @@ import org.encryfoundation.common.modifiers.state.box.{AssetBox, EncryBaseBox, T object BalanceCalculator { def balanceSheet(bxs: Traversable[EncryBaseBox], + defaultTokenId: TokenId, excludeTokenIssuance: Boolean = false): Map[TokenId, Amount] = bxs.foldLeft(Map.empty[ByteStr, Amount]) { case (cache, bx: AssetBox) => - val tokenId: ByteStr = ByteStr(bx.tokenIdOpt.getOrElse(constants.IntrinsicTokenId)) + val tokenId: ByteStr = ByteStr(bx.tokenIdOpt.getOrElse(defaultTokenId)) cache.get(tokenId).map { amount => cache.updated(tokenId, amount + bx.amount) }.getOrElse(cache.updated(tokenId, bx.amount)) diff --git a/src/main/scala/encry/view/history/BlockDownloadProcessor.scala b/src/main/scala/encry/view/history/BlockDownloadProcessor.scala index 8c2be080d5..3ef66576e1 100644 --- a/src/main/scala/encry/view/history/BlockDownloadProcessor.scala +++ b/src/main/scala/encry/view/history/BlockDownloadProcessor.scala @@ -2,11 +2,11 @@ package encry.view.history import encry.settings.NodeSettings import org.encryfoundation.common.modifiers.history.Header -import encry.EncryApp.settings.constants +import org.encryfoundation.common.utils.constants.Constants /** Class that keeps and calculates minimal height for full blocks starting from which we need to download these full * blocks from the network and keep them in our history. */ -case class BlockDownloadProcessor(nodeSettings: NodeSettings) { +case class BlockDownloadProcessor(nodeSettings: NodeSettings, constants: Constants) { private[history] var minimalBlockHeightVar: Int = Int.MaxValue diff --git a/src/main/scala/encry/view/history/HistoryApi.scala b/src/main/scala/encry/view/history/HistoryApi.scala index 102cf00d0d..87a37a5325 100644 --- a/src/main/scala/encry/view/history/HistoryApi.scala +++ b/src/main/scala/encry/view/history/HistoryApi.scala @@ -29,7 +29,7 @@ trait HistoryApi extends HistoryDBApi { //scalastyle:ignore var blocksCache: Map[ByteArrayWrapper, Block] = Map.empty[ByteArrayWrapper, Block] - lazy val blockDownloadProcessor: BlockDownloadProcessor = BlockDownloadProcessor(settings.node) + lazy val blockDownloadProcessor: BlockDownloadProcessor = BlockDownloadProcessor(settings.node, settings.constants) private var isHeadersChainSyncedVar: Boolean = false @@ -176,7 +176,8 @@ trait HistoryApi extends HistoryDBApi { //scalastyle:ignore } def requiredDifficultyAfter(parent: Header): Either[HistoryApiError, Difficulty] = { - val requiredHeights: Seq[Height] = PowLinearController.getHeightsForRetargetingAt(Height @@ (parent.height + 1)) + val requiredHeights: Seq[Height] = PowLinearController.getHeightsForRetargetingAt(Height @@ (parent.height + 1), + settings.constants.EpochLength, settings.constants.RetargetingEpochsQty) for { _ <- Either.cond(requiredHeights.lastOption.contains(parent.height), (), HistoryApiError("Incorrect heights sequence in requiredDifficultyAfter function")) @@ -186,7 +187,8 @@ trait HistoryApi extends HistoryDBApi { //scalastyle:ignore .filter(p => requiredHeights.contains(p._1)) _ <- Either.cond(requiredHeights.length == requiredHeaders.length, (), HistoryApiError(s"Missed headers: $requiredHeights != ${requiredHeaders.map(_._1)}")) - } yield PowLinearController.getDifficulty(requiredHeaders) + } yield PowLinearController.getDifficulty(requiredHeaders, settings.constants.EpochLength, + settings.constants.DesiredBlockInterval, settings.constants.InitialDifficulty) } def syncInfo: SyncInfo = diff --git a/src/main/scala/encry/view/history/HistoryDBApi.scala b/src/main/scala/encry/view/history/HistoryDBApi.scala index 447bc47675..f97bdc583b 100644 --- a/src/main/scala/encry/view/history/HistoryDBApi.scala +++ b/src/main/scala/encry/view/history/HistoryDBApi.scala @@ -2,13 +2,14 @@ package encry.view.history import com.google.common.primitives.Ints import com.typesafe.scalalogging.StrictLogging +import encry.EncryApp.settings.constants import encry.storage.VersionalStorage.StorageKey import encry.view.history.storage.HistoryStorage import org.encryfoundation.common.modifiers.history.{Block, Header, Payload} import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.{Height, ModifierId, ModifierTypeId} -import encry.EncryApp.settings.constants import scorex.crypto.hash.Digest32 + import scala.reflect.ClassTag trait HistoryDBApi extends StrictLogging { diff --git a/src/main/scala/encry/view/history/HistoryModifiersProcessors.scala b/src/main/scala/encry/view/history/HistoryModifiersProcessors.scala index aa300bc309..eb67b5e258 100644 --- a/src/main/scala/encry/view/history/HistoryModifiersProcessors.scala +++ b/src/main/scala/encry/view/history/HistoryModifiersProcessors.scala @@ -9,7 +9,6 @@ import encry.storage.VersionalStorage.{StorageKey, StorageValue} import org.encryfoundation.common.modifiers.PersistentModifier import org.encryfoundation.common.modifiers.history.{Block, Header, Payload} import org.encryfoundation.common.utils.TaggedTypes.{Difficulty, ModifierId} -import encry.EncryApp.settings.constants import cats.syntax.option._ import scala.annotation.tailrec import cats.syntax.either._ @@ -131,8 +130,8 @@ trait HistoryModifiersProcessors extends HistoryApi { logger.info(s"Initialize header chain with genesis header ${header.encodedId}") Seq( BestHeaderKey -> StorageValue @@ header.id, - heightIdsKey(constants.GenesisHeight) -> StorageValue @@ header.id, - headerHeightKey(header.id) -> StorageValue @@ Ints.toByteArray(constants.GenesisHeight), + heightIdsKey(settings.constants.GenesisHeight) -> StorageValue @@ header.id, + headerHeightKey(header.id) -> StorageValue @@ Ints.toByteArray(settings.constants.GenesisHeight), headerScoreKey(header.id) -> StorageValue @@ header.difficulty.toByteArray ) } else scoreOf(header.parentId).map { parentScore => diff --git a/src/main/scala/encry/view/history/HistoryModifiersValidator.scala b/src/main/scala/encry/view/history/HistoryModifiersValidator.scala index 56001b0ab0..ca546e0589 100644 --- a/src/main/scala/encry/view/history/HistoryModifiersValidator.scala +++ b/src/main/scala/encry/view/history/HistoryModifiersValidator.scala @@ -4,7 +4,6 @@ import encry.view.history.ValidationError.FatalValidationError._ import encry.view.history.ValidationError.NonFatalValidationError._ import org.encryfoundation.common.modifiers.PersistentModifier import org.encryfoundation.common.modifiers.history.{Header, Payload} -import encry.EncryApp.settings.constants import org.encryfoundation.common.validation.ModifierSemanticValidity import cats.syntax.either._ import encry.consensus.EquihashPowScheme @@ -12,7 +11,8 @@ import org.encryfoundation.common.utils.TaggedTypes.{Difficulty, ModifierId} trait HistoryModifiersValidator extends HistoryApi { - val powScheme: EquihashPowScheme = EquihashPowScheme(constants.n, constants.k) + val powScheme: EquihashPowScheme = EquihashPowScheme(settings.constants.n, settings.constants.k + , settings.constants.Version, settings.constants.PreGenesisHeight, settings.constants.MaxTarget) def testApplicable(modifier: PersistentModifier): Either[ValidationError, PersistentModifier] = (modifier match { @@ -51,7 +51,7 @@ trait HistoryModifiersValidator extends HistoryApi { GenesisBlockFatalValidationError(s"Genesis block with header ${h.encodedId} should has genesis parent id")) _ <- Either.cond(getBestHeaderId.isEmpty, (), GenesisBlockFatalValidationError(s"Genesis block with header ${h.encodedId} appended to non-empty history")) - _ <- Either.cond(h.height == constants.GenesisHeight, (), + _ <- Either.cond(h.height == settings.constants.GenesisHeight, (), GenesisBlockFatalValidationError(s"Height of genesis block with header ${h.encodedId} is incorrect")) } yield h @@ -68,7 +68,7 @@ trait HistoryModifiersValidator extends HistoryApi { HeaderFatalValidationError(s"Incorrect real difficulty in header ${h.encodedId}")) _ <- Either.cond(requiredDifficultyAfter(parent).exists(_ <= h.difficulty), (), HeaderFatalValidationError(s"Incorrect required difficulty in header ${h.encodedId}")) - _ <- Either.cond(heightOf(h.parentId).exists(h => getBestHeaderHeight - h < constants.MaxRollbackDepth), (), + _ <- Either.cond(heightOf(h.parentId).exists(h => getBestHeaderHeight - h < settings.constants.MaxRollbackDepth), (), HeaderFatalValidationError(s"Header ${h.encodedId} has height greater than max roll back depth")) powSchemeValidationResult = powScheme.verify(h) _ <- Either.cond(powSchemeValidationResult.isRight, (), @@ -76,7 +76,7 @@ trait HistoryModifiersValidator extends HistoryApi { s" caused: $powSchemeValidationResult")) _ <- Either.cond(isSemanticallyValid(h.parentId) != ModifierSemanticValidity.Invalid, (), HeaderFatalValidationError(s"Header ${h.encodedId} is semantically invalid")) - _ <- Either.cond(h.timestamp - timeProvider.estimatedTime <= constants.MaxTimeDrift, (), + _ <- Either.cond(h.timestamp - timeProvider.estimatedTime <= settings.constants.MaxTimeDrift, (), HeaderNonFatalValidationError(s"Header ${h.encodedId} with timestamp ${h.timestamp}" + s" is too far in future from now ${timeProvider.estimatedTime}")) } yield h diff --git a/src/main/scala/encry/view/state/UtxoState.scala b/src/main/scala/encry/view/state/UtxoState.scala index fe69810a57..3f6f88b351 100644 --- a/src/main/scala/encry/view/state/UtxoState.scala +++ b/src/main/scala/encry/view/state/UtxoState.scala @@ -11,7 +11,6 @@ import com.google.common.primitives.{Ints, Longs} import com.typesafe.scalalogging.StrictLogging import encry.consensus.EncrySupplyController import encry.modifiers.state.{Context, EncryPropositionFunctions} -import encry.EncryApp.settings.constants import encry.settings.{EncryAppSettings, LevelDBSettings} import encry.storage.VersionalStorage import encry.storage.VersionalStorage.{StorageKey, StorageValue, StorageVersion} @@ -33,16 +32,19 @@ import org.encryfoundation.common.modifiers.state.box.TokenIssuingBox.TokenId import org.encryfoundation.common.modifiers.state.box.{AssetBox, EncryBaseBox, EncryProposition} import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.{ADDigest, Height} +import org.encryfoundation.common.utils.constants.Constants import org.encryfoundation.common.validation.ValidationResult.Invalid import org.encryfoundation.common.validation.{MalformedModifierError, ValidationResult} import org.iq80.leveldb.Options +import scorex.crypto.authds.ADKey import scorex.crypto.hash.Digest32 import scala.util.Try final case class UtxoState(storage: VersionalStorage, height: Height, - lastBlockTimestamp: Long) + lastBlockTimestamp: Long, + constants: Constants) extends StrictLogging with UtxoStateReader with AutoCloseable { def applyModifier(mod: PersistentModifier): Either[List[ModifierApplyError], UtxoState] = { @@ -53,7 +55,8 @@ final case class UtxoState(storage: VersionalStorage, UtxoState( storage, height, - header.timestamp + header.timestamp, + constants ).asRight[List[ModifierApplyError]] case block: Block => logger.info(s"\n\nStarting to applyModifier as a Block: ${Algos.encode(mod.id)} to state at height ${block.header.height}") @@ -61,7 +64,8 @@ final case class UtxoState(storage: VersionalStorage, val totalFees: Amount = block.payload.txs.init.map(_.fee).sum val validstartTime = System.currentTimeMillis() val res: Either[ValidationResult, List[Transaction]] = block.payload.txs.map(tx => { - if (tx.id sameElements lastTxId) validate(tx, totalFees + EncrySupplyController.supplyAt(height)) + if (tx.id sameElements lastTxId) validate(tx, totalFees + EncrySupplyController.supplyAt(height, + constants.InitialEmissionAmount, constants.EmissionEpochLength, constants.EmissionDecay)) else validate(tx) }).toList .traverse(Validated.fromEither) @@ -83,7 +87,7 @@ final case class UtxoState(storage: VersionalStorage, UtxoState( storage, Height @@ block.header.height, - block.header.timestamp + block.header.timestamp, constants ).asRight[List[ModifierApplyError]] } ) @@ -102,7 +106,8 @@ final case class UtxoState(storage: VersionalStorage, UtxoState( storage, Height @@ stateHeight, - lastBlockTimestamp + lastBlockTimestamp, + constants ) case None => throw new Exception(s"Impossible to rollback to version ${Algos.encode(version)}") } @@ -131,12 +136,12 @@ final case class UtxoState(storage: VersionalStorage, } val validBalance: Boolean = { - val debitB: Map[String, Amount] = BalanceCalculator.balanceSheet(bxs).map { + val debitB: Map[String, Amount] = BalanceCalculator.balanceSheet(bxs, constants.IntrinsicTokenId).map { case (key, value) => Algos.encode(key) -> value } val creditB: Map[String, Amount] = { val balanceSheet: Map[TokenId, Amount] = - BalanceCalculator.balanceSheet(tx.newBoxes, excludeTokenIssuance = true) + BalanceCalculator.balanceSheet(tx.newBoxes, constants.IntrinsicTokenId, excludeTokenIssuance = true) val intrinsicBalance: Amount = balanceSheet.getOrElse(constants.IntrinsicTokenId, 0L) balanceSheet.updated(constants.IntrinsicTokenId, intrinsicBalance + tx.fee) }.map { case (tokenId, amount) => Algos.encode(tokenId) -> amount } @@ -190,20 +195,21 @@ object UtxoState extends StrictLogging { val versionalStorage = settings.storage.state match { case VersionalStorage.IODB => logger.info("Init state with iodb storage") - IODBWrapper(new LSMStore(stateDir, keepVersions = constants.DefaultKeepVersions)) + IODBWrapper(new LSMStore(stateDir, keepVersions = settings.constants.DefaultKeepVersions)) case VersionalStorage.LevelDB => logger.info("Init state with levelDB storage") val levelDBInit = LevelDbFactory.factory.open(stateDir, new Options) VLDBWrapper(VersionalLevelDBCompanion(levelDBInit, LevelDBSettings(300, 32), keySize = 32)) } val stateHeight: Int = versionalStorage.get(StorageKey @@ bestHeightKey.untag(Digest32)) - .map(d => Ints.fromByteArray(d)).getOrElse(constants.PreGenesisHeight) + .map(d => Ints.fromByteArray(d)).getOrElse(settings.constants.PreGenesisHeight) val lastBlockTimestamp: Amount = versionalStorage.get(StorageKey @@ lastBlockTimeKey.untag(Digest32)) .map(d => Longs.fromByteArray(d)).getOrElse(0L) new UtxoState( versionalStorage, Height @@ stateHeight, lastBlockTimestamp, + settings.constants ) } @@ -215,7 +221,7 @@ object UtxoState extends StrictLogging { val storage = settings.storage.state match { case VersionalStorage.IODB => logger.info("Init state with iodb storage") - IODBWrapper(new LSMStore(stateDir, keepVersions = constants.DefaultKeepVersions)) + IODBWrapper(new LSMStore(stateDir, keepVersions = settings.constants.DefaultKeepVersions)) case VersionalStorage.LevelDB => logger.info("Init state with levelDB storage") val levelDBInit = LevelDbFactory.factory.open(stateDir, new Options) @@ -229,8 +235,9 @@ object UtxoState extends StrictLogging { new UtxoState( storage, - constants.PreGenesisHeight, + settings.constants.PreGenesisHeight, 0L, + settings.constants ) } } \ No newline at end of file diff --git a/src/main/scala/encry/view/wallet/EncryWallet.scala b/src/main/scala/encry/view/wallet/EncryWallet.scala index d54e9391d3..d6a23533e5 100644 --- a/src/main/scala/encry/view/wallet/EncryWallet.scala +++ b/src/main/scala/encry/view/wallet/EncryWallet.scala @@ -1,6 +1,7 @@ package encry.view.wallet import java.io.File + import com.typesafe.scalalogging.StrictLogging import encry.settings.EncryAppSettings import encry.storage.levelDb.versionalLevelDB.{LevelDbFactory, WalletVersionalLevelDB, WalletVersionalLevelDBCompanion} @@ -11,12 +12,12 @@ import org.encryfoundation.common.modifiers.PersistentModifier import org.encryfoundation.common.modifiers.history.Block import org.encryfoundation.common.modifiers.mempool.transaction.Transaction import org.encryfoundation.common.modifiers.state.box.{EncryBaseBox, EncryProposition} -import org.encryfoundation.common.utils.TaggedTypes.ModifierId +import org.encryfoundation.common.utils.TaggedTypes.{ADKey, ModifierId} import org.iq80.leveldb.{DB, Options} import scala.util.Try -case class EncryWallet(walletStorage: WalletVersionalLevelDB, accountManager: AccountManager) extends StrictLogging with AutoCloseable{ +case class EncryWallet(walletStorage: WalletVersionalLevelDB, accountManager: AccountManager, intrinsicTokenId: ADKey) extends StrictLogging with AutoCloseable{ val publicKeys: Set[PublicKey25519] = accountManager.publicAccounts.toSet @@ -41,7 +42,7 @@ case class EncryWallet(walletStorage: WalletVersionalLevelDB, accountManager: Ac } (nBxs ++ newBxsL) -> (sBxs ++ spendBxsIdsL) } - walletStorage.updateWallet(modifier.id, newBxs, spentBxs) + walletStorage.updateWallet(modifier.id, newBxs, spentBxs, intrinsicTokenId) this case _ => this @@ -71,6 +72,6 @@ object EncryWallet extends StrictLogging { val accountManager = AccountManager(accountManagerStore) //init keys accountManager.mandatoryAccount - EncryWallet(walletStorage, accountManager) + EncryWallet(walletStorage, accountManager, settings.constants.IntrinsicTokenId) } } \ No newline at end of file diff --git a/src/test/scala/encry/consensus/PowLinearControllerSpec.scala b/src/test/scala/encry/consensus/PowLinearControllerSpec.scala index 9f02903852..5dd0ac90d7 100644 --- a/src/test/scala/encry/consensus/PowLinearControllerSpec.scala +++ b/src/test/scala/encry/consensus/PowLinearControllerSpec.scala @@ -15,7 +15,8 @@ class PowLinearControllerSpec extends PropSpec with Matchers { val expected: immutable.Seq[Int] = (0 to constants.RetargetingEpochsQty).reverse .map(i => (retargetingAtHeight - 1) - i * constants.EpochLength).filter(_ >= constants.GenesisHeight) - val heights: Seq[Height] = PowLinearController.getHeightsForRetargetingAt(Height @@ retargetingAtHeight) + val heights: Seq[Height] = PowLinearController.getHeightsForRetargetingAt(Height @@ retargetingAtHeight, + constants.EpochLength, constants.RetargetingEpochsQty) heights sameElements expected shouldBe true } diff --git a/src/test/scala/encry/consensus/emission/EncrySupplyControllerTest.scala b/src/test/scala/encry/consensus/emission/EncrySupplyControllerTest.scala index 3758ec5f0a..152611c30d 100644 --- a/src/test/scala/encry/consensus/emission/EncrySupplyControllerTest.scala +++ b/src/test/scala/encry/consensus/emission/EncrySupplyControllerTest.scala @@ -18,7 +18,8 @@ class EncrySupplyControllerTest extends PropSpec with Matchers with EncryGenerat property("testSupplyAt") { - val epochSupply = (0 until blocksPerYear * epochLen).map(h => EncrySupplyController.supplyAt(Height @@ h)) + val epochSupply = (0 until blocksPerYear * epochLen).map(h => EncrySupplyController.supplyAt(Height @@ h, + constants.InitialEmissionAmount, constants.EmissionEpochLength, constants.EmissionDecay)) val atEndEpochSupply = epochSupply.last diff --git a/src/test/scala/encry/view/state/UtxoStateSpec.scala b/src/test/scala/encry/view/state/UtxoStateSpec.scala index 119344d2b5..8c5d778548 100755 --- a/src/test/scala/encry/view/state/UtxoStateSpec.scala +++ b/src/test/scala/encry/view/state/UtxoStateSpec.scala @@ -61,6 +61,7 @@ class UtxoStateSpec extends PropSpec with Matchers with EncryGenerator { storage, settings.constants.PreGenesisHeight, 0L, + settings.constants ) } diff --git a/src/test/scala/encry/view/wallet/WalletSpec.scala b/src/test/scala/encry/view/wallet/WalletSpec.scala index 6b57168259..90924feaae 100644 --- a/src/test/scala/encry/view/wallet/WalletSpec.scala +++ b/src/test/scala/encry/view/wallet/WalletSpec.scala @@ -4,16 +4,13 @@ import com.typesafe.scalalogging.StrictLogging import encry.EncryApp import encry.modifiers.InstanceFactory import encry.settings.{EncryAppSettings, LevelDBSettings} -import encry.storage.levelDb.versionalLevelDB.{LevelDbFactory, WalletVersionalLevelDBCompanion} import encry.utils.TestHelper.Props import encry.utils.{EncryGenerator, FileHelper} -import io.iohk.iodb.LSMStore import org.encryfoundation.common.modifiers.history.{Block, Header, Payload} import org.encryfoundation.common.modifiers.mempool.transaction.Transaction import org.encryfoundation.common.modifiers.state.box.{AssetBox, MonetaryBox} import org.encryfoundation.common.utils.TaggedTypes.ModifierId import org.scalatest.{Matchers, PropSpec} -import encry.EncryApp.settings.constants class WalletSpec extends PropSpec with Matchers with InstanceFactory with EncryGenerator with StrictLogging { @@ -55,11 +52,11 @@ class WalletSpec extends PropSpec with Matchers with InstanceFactory with EncryG wallet.scanPersistent(firstBlock) - wallet.walletStorage.getTokenBalanceById(constants.IntrinsicTokenId).getOrElse(0L) shouldEqual correctBalance + wallet.walletStorage.getTokenBalanceById(settings.constants.IntrinsicTokenId).getOrElse(0L) shouldEqual correctBalance wallet.scanPersistent(secondBlock) - wallet.walletStorage.getTokenBalanceById(constants.IntrinsicTokenId).getOrElse(0L) shouldEqual correctBalance - useBox.amount + wallet.walletStorage.getTokenBalanceById(settings.constants.IntrinsicTokenId).getOrElse(0L) shouldEqual correctBalance - useBox.amount logger.info(s"tmp dir size: ${dir.length()}") } From 650bd0c6ae53da9a04193ef2bb41ebd333902ad6 Mon Sep 17 00:00:00 2001 From: capdev Date: Tue, 10 Sep 2019 10:16:17 +0500 Subject: [PATCH 34/51] more settings refactoring --- src/main/scala/encry/EncryApp.scala | 6 +-- .../scala/encry/network/DeliveryManager.scala | 14 ++--- .../DownloadedModifiersValidator.scala | 8 +-- .../encry/network/NetworkController.scala | 23 ++++---- .../encry/network/NodeViewSynchronizer.scala | 9 ++-- .../encry/network/PeerConnectionHandler.scala | 20 +++---- .../encry/network/PrioritiesCalculator.scala | 22 ++++---- src/main/scala/encry/settings/Settings.scala | 5 ++ src/main/scala/encry/stats/StatsSender.scala | 53 ++++++++++--------- .../scala/encry/view/ModifiersCache.scala | 9 ++-- .../scala/encry/view/NodeViewHolder.scala | 9 ++-- .../scala/encry/view/history/HistoryApi.scala | 7 ++- .../encry/view/history/HistoryDBApi.scala | 4 +- .../encry/view/wallet/AccountManager.scala | 13 +++-- .../scala/encry/view/wallet/EncryWallet.scala | 2 +- 15 files changed, 108 insertions(+), 96 deletions(-) create mode 100644 src/main/scala/encry/settings/Settings.scala diff --git a/src/main/scala/encry/EncryApp.scala b/src/main/scala/encry/EncryApp.scala index d2be7082b0..529712dc39 100644 --- a/src/main/scala/encry/EncryApp.scala +++ b/src/main/scala/encry/EncryApp.scala @@ -44,15 +44,15 @@ object EncryApp extends App with StrictLogging { val nodeId: Array[Byte] = Algos.hash(settings.network.nodeName .getOrElse(InetAddress.getLocalHost.getHostAddress + ":" + settings.network.bindAddress.getPort)).take(5) - val influxRef: Option[ActorRef] = - settings.influxDB.map(s => system.actorOf(StatsSender.props(s), "statsSender")) + val influxRef: Option[ActorRef] = settings.influxDB.map(influxSettings => + system.actorOf(StatsSender.props(influxSettings, settings.network, settings.constants), "statsSender")) lazy val dataHolderForApi = system.actorOf(DataHolderForApi.props(settings, timeProvider), "dataHolder") lazy val miner: ActorRef = system.actorOf(Miner.props(dataHolderForApi, influxRef, settings), "miner") lazy val memoryPool: ActorRef = system.actorOf(MemoryPool.props(settings, timeProvider, miner, influxRef) .withDispatcher("mempool-dispatcher")) - val nodeViewHolder: ActorRef = system.actorOf(NodeViewHolder.props(memoryPool, influxRef, dataHolderForApi) + val nodeViewHolder: ActorRef = system.actorOf(NodeViewHolder.props(memoryPool, influxRef, dataHolderForApi, settings) .withDispatcher("nvh-dispatcher"), "nodeViewHolder") val nodeViewSynchronizer: ActorRef = system.actorOf(NodeViewSynchronizer diff --git a/src/main/scala/encry/network/DeliveryManager.scala b/src/main/scala/encry/network/DeliveryManager.scala index 651d7f3d24..869c6f8649 100644 --- a/src/main/scala/encry/network/DeliveryManager.scala +++ b/src/main/scala/encry/network/DeliveryManager.scala @@ -36,10 +36,10 @@ import scala.concurrent.ExecutionContextExecutor class DeliveryManager(influxRef: Option[ActorRef], nodeViewHolderRef: ActorRef, networkControllerRef: ActorRef, - settings: EncryAppSettings, memoryPoolRef: ActorRef, nodeViewSync: ActorRef, - downloadedModifiersValidator: ActorRef) extends Actor with StrictLogging { + downloadedModifiersValidator: ActorRef, + settings: EncryAppSettings) extends Actor with StrictLogging { type ModifierIdAsKey = scala.collection.mutable.WrappedArray.ofByte @@ -65,7 +65,7 @@ class DeliveryManager(influxRef: Option[ActorRef], var peersCollection: Map[InetSocketAddress, (ConnectedPeer, HistoryComparisonResult, PeersPriorityStatus)] = Map.empty - var priorityCalculator: PrioritiesCalculator = PrioritiesCalculator(settings) + var priorityCalculator: PrioritiesCalculator = PrioritiesCalculator(settings.network) var canProcessTransactions: Boolean = true @@ -512,12 +512,12 @@ object DeliveryManager { def props(influxRef: Option[ActorRef], nodeViewHolderRef: ActorRef, networkControllerRef: ActorRef, - settings: EncryAppSettings, memoryPoolRef: ActorRef, nodeViewSync: ActorRef, - downloadedModifiersValidator: ActorRef): Props = - Props(new DeliveryManager(influxRef, nodeViewHolderRef, networkControllerRef, settings, - memoryPoolRef, nodeViewSync, downloadedModifiersValidator)) + downloadedModifiersValidator: ActorRef, + settings: EncryAppSettings): Props = + Props(new DeliveryManager(influxRef, nodeViewHolderRef, networkControllerRef, memoryPoolRef, nodeViewSync, + downloadedModifiersValidator, settings)) class DeliveryManagerPriorityQueue(settings: ActorSystem.Settings, config: Config) extends UnboundedStablePriorityMailbox( diff --git a/src/main/scala/encry/network/DownloadedModifiersValidator.scala b/src/main/scala/encry/network/DownloadedModifiersValidator.scala index b7a1ac80c3..fc429071df 100644 --- a/src/main/scala/encry/network/DownloadedModifiersValidator.scala +++ b/src/main/scala/encry/network/DownloadedModifiersValidator.scala @@ -19,7 +19,7 @@ import org.encryfoundation.common.modifiers.mempool.transaction.{Transaction, Tr import org.encryfoundation.common.utils.TaggedTypes.{ModifierId, ModifierTypeId} import scala.util.{Failure, Success, Try} -class DownloadedModifiersValidator(settings: EncryAppSettings, +class DownloadedModifiersValidator(modifierIdSize: Int, nodeViewHolder: ActorRef, peersKeeper: ActorRef, nodeViewSync: ActorRef, @@ -35,7 +35,7 @@ class DownloadedModifiersValidator(settings: EncryAppSettings, case ModifiersForValidating(remote, typeId, filteredModifiers) if typeId != Transaction.modifierTypeId => filteredModifiers.foreach { case (id, bytes) => ModifiersToNetworkUtils.fromProto(typeId, bytes) match { - case Success(modifier) if ModifiersToNetworkUtils.isSyntacticallyValid(modifier, settings.constants.ModifierIdSize) => + case Success(modifier) if ModifiersToNetworkUtils.isSyntacticallyValid(modifier, modifierIdSize) => logger.debug(s"Modifier: ${modifier.encodedId} after testApplicable is correct. " + s"Sending validated modifier to NodeViewHolder") influxRef.foreach(_ ! ValidatedModifierFromNetwork(typeId)) @@ -81,13 +81,13 @@ object DownloadedModifiersValidator { final case class InvalidModifier(ids: ModifierId) extends AnyVal - def props(settings: EncryAppSettings, + def props(modifierIdSize: Int, nodeViewHolder: ActorRef, peersKeeper: ActorRef, nodeViewSync: ActorRef, memoryPoolRef: ActorRef, influxRef: Option[ActorRef]): Props = - Props(new DownloadedModifiersValidator(settings, nodeViewHolder, peersKeeper, nodeViewSync, memoryPoolRef, influxRef)) + Props(new DownloadedModifiersValidator(modifierIdSize, nodeViewHolder, peersKeeper, nodeViewSync, memoryPoolRef, influxRef)) class DownloadedModifiersValidatorPriorityQueue(settings: ActorSystem.Settings, config: Config) extends UnboundedStablePriorityMailbox( diff --git a/src/main/scala/encry/network/NetworkController.scala b/src/main/scala/encry/network/NetworkController.scala index 3a86cc9826..090ccb1c29 100755 --- a/src/main/scala/encry/network/NetworkController.scala +++ b/src/main/scala/encry/network/NetworkController.scala @@ -1,6 +1,7 @@ package encry.network import java.net.{InetAddress, InetSocketAddress, NetworkInterface, URI} + import akka.actor._ import akka.actor.SupervisorStrategy.Restart import akka.io.{IO, Tcp} @@ -12,14 +13,15 @@ import encry.network.NetworkController.ReceivableMessages._ import encry.network.PeerConnectionHandler._ import encry.network.PeerConnectionHandler.ReceivableMessages.StartInteraction import encry.network.PeersKeeper._ -import encry.settings.EncryAppSettings +import encry.settings.{EncryAppSettings, NetworkSettings} import org.encryfoundation.common.network.BasicMessagesRepo.NetworkMessage + import scala.collection.JavaConverters._ import scala.concurrent.duration._ import scala.language.{existentials, postfixOps} import scala.util.Try -class NetworkController(settings: EncryAppSettings, +class NetworkController(networkSettings: NetworkSettings, peersKeeper: ActorRef, nodeViewSync: ActorRef) extends Actor with StrictLogging { @@ -29,17 +31,17 @@ class NetworkController(settings: EncryAppSettings, override def preStart(): Unit = logger.info(s"Network controller started") var messagesHandlers: Map[Seq[Byte], ActorRef] = Map.empty - val externalSocketAddress: Option[InetSocketAddress] = settings.network.declaredAddress + val externalSocketAddress: Option[InetSocketAddress] = networkSettings.declaredAddress logger.info(s"Declared address is: $externalSocketAddress.") - if (!settings.network.localOnly.getOrElse(false)) settings.network.declaredAddress.foreach(myAddress => + if (!networkSettings.localOnly.getOrElse(false)) networkSettings.declaredAddress.foreach(myAddress => Try(NetworkInterface.getNetworkInterfaces.asScala.exists(interface => interface.getInterfaceAddresses.asScala.exists(interfaceAddress => InetAddress.getAllByName(new URI("http://" + myAddress).getHost).contains(interfaceAddress.getAddress) ))).recover { case t: Throwable => logger.error(s"Declared address validation failed: $t") } ) - IO(Tcp) ! Bind(self, settings.network.bindAddress, options = KeepAlive(true) :: Nil, pullMode = false) + IO(Tcp) ! Bind(self, networkSettings.bindAddress, options = KeepAlive(true) :: Nil, pullMode = false) override def supervisorStrategy: SupervisorStrategy = OneForOneStrategy( maxNrOfRetries = 5, @@ -69,7 +71,7 @@ class NetworkController(settings: EncryAppSettings, } def businessLogic: Receive = { - case MessageFromNetwork(message, Some(remote)) if message.isValid(settings.network.syncPacketLength) => + case MessageFromNetwork(message, Some(remote)) if message.isValid(networkSettings.syncPacketLength) => logger.debug(s"Got ${message.messageName} on the NetworkController.") findHandler(message, message.NetworkMessageTypeID, remote, messagesHandlers) case MessageFromNetwork(message, Some(remote)) => @@ -84,7 +86,7 @@ class NetworkController(settings: EncryAppSettings, peer, None, KeepAlive(true) :: Nil, - Some(settings.network.connectionTimeout), + Some(networkSettings.connectionTimeout), pullMode = true ) @@ -95,7 +97,7 @@ class NetworkController(settings: EncryAppSettings, case ConnectionVerified(remote, remoteConnection, connectionType) => logger.info(s"Network controller got approvement for stable connection with: $remote. Starting interaction process...") val peerConnectionHandler: ActorRef = context.actorOf( - PeerConnectionHandler.props(remoteConnection, connectionType, externalSocketAddress, remote) + PeerConnectionHandler.props(remoteConnection, connectionType, externalSocketAddress, remote, networkSettings) .withDispatcher("network-dispatcher") ) peerConnectionHandler ! StartInteraction @@ -130,9 +132,8 @@ class NetworkController(settings: EncryAppSettings, object NetworkController { - def props(settings: EncryAppSettings, - peersKeeper: ActorRef, - nodeViewSync: ActorRef): Props = Props(new NetworkController(settings, peersKeeper, nodeViewSync)) + def props(networkSettings: NetworkSettings, peersKeeper: ActorRef, nodeViewSync: ActorRef): Props = + Props(new NetworkController(networkSettings, peersKeeper, nodeViewSync)) object ReceivableMessages { diff --git a/src/main/scala/encry/network/NodeViewSynchronizer.scala b/src/main/scala/encry/network/NodeViewSynchronizer.scala index 9cd532c9b6..4cf3e7e30e 100644 --- a/src/main/scala/encry/network/NodeViewSynchronizer.scala +++ b/src/main/scala/encry/network/NodeViewSynchronizer.scala @@ -43,7 +43,7 @@ class NodeViewSynchronizer(influxRef: Option[ActorRef], val peersKeeper: ActorRef = context.system.actorOf(PeersKeeper.props(settings, self, dataHolder) .withDispatcher("peers-keeper-dispatcher"), "PeersKeeper") - val networkController: ActorRef = context.system.actorOf(NetworkController.props(settings, peersKeeper, self) + val networkController: ActorRef = context.system.actorOf(NetworkController.props(settings.network, peersKeeper, self) .withDispatcher("network-dispatcher"), "NetworkController") networkController ! RegisterMessagesHandler(Seq( @@ -61,12 +61,13 @@ class NodeViewSynchronizer(influxRef: Option[ActorRef], var canProcessTransactions: Boolean = true val downloadedModifiersValidator: ActorRef = context.system - .actorOf(DownloadedModifiersValidator.props(settings, nodeViewHolderRef, peersKeeper, self, memoryPoolRef, influxRef) + .actorOf(DownloadedModifiersValidator.props(settings.constants.ModifierIdSize, nodeViewHolderRef, + peersKeeper, self, memoryPoolRef, influxRef) .withDispatcher("Downloaded-Modifiers-Validator-dispatcher"), "DownloadedModifiersValidator") val deliveryManager: ActorRef = context.actorOf( - DeliveryManager.props(influxRef, nodeViewHolderRef, networkController, settings, - memoryPoolRef, self, downloadedModifiersValidator) + DeliveryManager.props(influxRef, nodeViewHolderRef, networkController, memoryPoolRef, self, + downloadedModifiersValidator, settings) .withDispatcher("delivery-manager-dispatcher"), "DeliveryManager") override def preStart(): Unit = { diff --git a/src/main/scala/encry/network/PeerConnectionHandler.scala b/src/main/scala/encry/network/PeerConnectionHandler.scala index e781a6bbcf..d4fe617311 100755 --- a/src/main/scala/encry/network/PeerConnectionHandler.scala +++ b/src/main/scala/encry/network/PeerConnectionHandler.scala @@ -2,6 +2,7 @@ package encry.network import java.net.{InetAddress, InetSocketAddress} import java.nio.ByteOrder + import akka.actor.{Actor, ActorRef, Cancellable, Props} import akka.io.Tcp import akka.io.Tcp._ @@ -9,10 +10,10 @@ import akka.util.{ByteString, CompactByteString} import com.google.common.primitives.Ints import com.typesafe.scalalogging.StrictLogging import encry.EncryApp.timeProvider -import encry.EncryApp.settings import encry.network.PeerConnectionHandler.{AwaitingHandshake, CommunicationState, _} import encry.network.PeerConnectionHandler.ReceivableMessages._ import encry.network.PeersKeeper.{ConnectionStopped, HandshakedDone} +import encry.settings.NetworkSettings import org.encryfoundation.common.network.BasicMessagesRepo.{GeneralizedNetworkMessage, Handshake, NetworkMessage} import org.encryfoundation.common.utils.Algos @@ -25,7 +26,8 @@ import scala.util.{Failure, Random, Success} class PeerConnectionHandler(connection: ActorRef, direction: ConnectionType, ownSocketAddress: Option[InetSocketAddress], - remote: InetSocketAddress) extends Actor with StrictLogging { + remote: InetSocketAddress, + networkSettings: NetworkSettings) extends Actor with StrictLogging { context watch connection @@ -42,7 +44,7 @@ class PeerConnectionHandler(connection: ActorRef, override def preStart: Unit = { handshakeTimeoutCancellableOpt = Some( - context.system.scheduler.scheduleOnce(settings.network.handshakeTimeout)(self ! HandshakeTimeout) + context.system.scheduler.scheduleOnce(networkSettings.handshakeTimeout)(self ! HandshakeTimeout) ) connection ! Register(self, keepOpenOnPeerClosed = false, useResumeWriting = true) connection ! ResumeReading @@ -66,9 +68,9 @@ class PeerConnectionHandler(connection: ActorRef, case StartInteraction => timeProvider.time().map { time => val handshake: Handshake = Handshake( - protocolToBytes(settings.network.appVersion), - settings.network.nodeName - .getOrElse(InetAddress.getLocalHost.getHostAddress + ":" + settings.network.bindAddress.getPort), + protocolToBytes(networkSettings.appVersion), + networkSettings.nodeName + .getOrElse(InetAddress.getLocalHost.getHostAddress + ":" + networkSettings.bindAddress.getPort), ownSocketAddress, time ) @@ -161,7 +163,7 @@ class PeerConnectionHandler(connection: ActorRef, s"Msg hash: ${Algos.encode(Algos.hash(ByteString(Ints.toByteArray(messageToNetwork.length) ++ messageToNetwork).toArray))}") connection ! Write(bytes, Ack(outMessagesCounter)) } - settings.network.addedMaxDelay match { + networkSettings.addedMaxDelay match { case Some(delay) => context.system.scheduler.scheduleOnce(Random.nextInt(delay.toMillis.toInt).millis)(sendMessage()) case None => sendMessage() @@ -338,6 +340,6 @@ object PeerConnectionHandler { final case class MessageFromNetwork(message: NetworkMessage, source: Option[ConnectedPeer]) def props(connection: ActorRef, direction: ConnectionType, - ownSocketAddress: Option[InetSocketAddress], remote: InetSocketAddress): Props = - Props(new PeerConnectionHandler(connection, direction, ownSocketAddress, remote)) + ownSocketAddress: Option[InetSocketAddress], remote: InetSocketAddress, networkSettings: NetworkSettings): Props = + Props(new PeerConnectionHandler(connection, direction, ownSocketAddress, remote, networkSettings)) } \ No newline at end of file diff --git a/src/main/scala/encry/network/PrioritiesCalculator.scala b/src/main/scala/encry/network/PrioritiesCalculator.scala index c95dbba506..bd10cc2bfc 100644 --- a/src/main/scala/encry/network/PrioritiesCalculator.scala +++ b/src/main/scala/encry/network/PrioritiesCalculator.scala @@ -1,45 +1,47 @@ package encry.network import java.net.InetSocketAddress + import com.typesafe.scalalogging.StrictLogging import encry.network.PrioritiesCalculator.PeersPriorityStatus import encry.network.PrioritiesCalculator.PeersPriorityStatus.PeersPriorityStatus._ import encry.network.PrioritiesCalculator.PeersPriorityStatus._ -import encry.settings.EncryAppSettings +import encry.settings.NetworkSettings + import scala.concurrent.duration._ -final case class PrioritiesCalculator(settings: EncryAppSettings, +final case class PrioritiesCalculator(networkSettings: NetworkSettings, private val peersNetworkStatistic: Map[InetSocketAddress, (Requested, Received)]) extends StrictLogging { - val updatingStatisticTime: FiniteDuration = (settings.network.deliveryTimeout._1 * settings.network.maxDeliveryChecks).seconds + val updatingStatisticTime: FiniteDuration = (networkSettings.deliveryTimeout._1 * networkSettings.maxDeliveryChecks).seconds def incrementRequest(peer: InetSocketAddress): PrioritiesCalculator = { val (requested, received): (Requested, Received) = peersNetworkStatistic.getOrElse(peer, (Requested(), Received())) val newRequested: Requested = requested.increment logger.debug(s"Updating request parameter from $peer. Old is ($requested, $received). New one is: ($newRequested, $received)") - PrioritiesCalculator(settings, peersNetworkStatistic.updated(peer, (newRequested, received))) + PrioritiesCalculator(networkSettings, peersNetworkStatistic.updated(peer, (newRequested, received))) } def incrementReceive(peer: InetSocketAddress): PrioritiesCalculator = { val (requested, received): (Requested, Received) = peersNetworkStatistic.getOrElse(peer, (Requested(), Received())) val newReceived: Received = received.increment logger.debug(s"Updating received parameter from $peer. Old is ($requested, $received). New one is: ($requested, $newReceived)") - PrioritiesCalculator(settings, peersNetworkStatistic.updated(peer, (requested, newReceived))) + PrioritiesCalculator(networkSettings, peersNetworkStatistic.updated(peer, (requested, newReceived))) } def decrementRequest(peer: InetSocketAddress): PrioritiesCalculator = { val (requested, received): (Requested, Received) = peersNetworkStatistic.getOrElse(peer, (Requested(), Received())) val newRequested: Requested = requested.decrement logger.debug(s"Decrement request parameter from $peer. Old is ($requested, $received). New one is: ($newRequested, $received)") - PrioritiesCalculator(settings, peersNetworkStatistic.updated(peer, (newRequested, received))) + PrioritiesCalculator(networkSettings, peersNetworkStatistic.updated(peer, (newRequested, received))) } def incrementRequestForNModifiers(peer: InetSocketAddress, modifiersQty: Int): PrioritiesCalculator = { val (requested, received): (Requested, Received) = peersNetworkStatistic.getOrElse(peer, (Requested(), Received())) val newRequested: Requested = requested.incrementForN(modifiersQty) logger.debug(s"Updating request parameter from $peer. Old is ($requested, $received). New one is: ($newRequested, $received)") - PrioritiesCalculator(settings, peersNetworkStatistic.updated(peer, (newRequested, received))) + PrioritiesCalculator(networkSettings, peersNetworkStatistic.updated(peer, (newRequested, received))) } def accumulatePeersStatistic: (Map[InetSocketAddress, PeersPriorityStatus], PrioritiesCalculator) = { @@ -50,7 +52,7 @@ final case class PrioritiesCalculator(settings: EncryAppSettings, peer -> priority } logger.info(s"Accumulated peers statistic. Current stats are: ${updatedStatistic.mkString(",")}") - (updatedStatistic, PrioritiesCalculator(settings)) + (updatedStatistic, PrioritiesCalculator(networkSettings)) } } @@ -91,6 +93,6 @@ object PrioritiesCalculator { } } - def apply(settings: EncryAppSettings): PrioritiesCalculator = - PrioritiesCalculator(settings, Map.empty[InetSocketAddress, (Requested, Received)]) + def apply(networkSettings: NetworkSettings): PrioritiesCalculator = + PrioritiesCalculator(networkSettings, Map.empty[InetSocketAddress, (Requested, Received)]) } \ No newline at end of file diff --git a/src/main/scala/encry/settings/Settings.scala b/src/main/scala/encry/settings/Settings.scala new file mode 100644 index 0000000000..88a57a4257 --- /dev/null +++ b/src/main/scala/encry/settings/Settings.scala @@ -0,0 +1,5 @@ +package encry.settings + +trait Settings { + val settings: EncryAppSettings = EncryAppSettings.read() +} diff --git a/src/main/scala/encry/stats/StatsSender.scala b/src/main/scala/encry/stats/StatsSender.scala index bb0d4ebf0b..40ce10947a 100644 --- a/src/main/scala/encry/stats/StatsSender.scala +++ b/src/main/scala/encry/stats/StatsSender.scala @@ -2,42 +2,44 @@ package encry.stats import java.io.File import java.net.InetAddress -import java.util import java.text.SimpleDateFormat +import java.util + import akka.actor.{Actor, Props} import com.typesafe.scalalogging.StrictLogging import encry.EncryApp.timeProvider -import encry.EncryApp.settings import encry.consensus.EncrySupplyController -import encry.settings.InfluxDBSettings +import encry.settings.{InfluxDBSettings, NetworkSettings} import encry.stats.StatsSender._ -import org.encryfoundation.common.modifiers.history.{Header, Payload} +import org.encryfoundation.common.modifiers.history.Header import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.{Height, ModifierId, ModifierTypeId} +import org.encryfoundation.common.utils.constants.Constants import org.influxdb.{InfluxDB, InfluxDBFactory} + import scala.concurrent.ExecutionContext.Implicits.global -class StatsSender(influxDBSettings: InfluxDBSettings) extends Actor with StrictLogging { +class StatsSender(influxSettings: InfluxDBSettings, networkSettings: NetworkSettings, constants: Constants) extends Actor with StrictLogging { var modifiersToDownload: Map[String, (ModifierTypeId, Long)] = Map.empty var modifiersToApply: Map[String, (ModifierTypeId, Long)] = Map.empty - val nodeName: String = settings.network.nodeName match { + val nodeName: String = networkSettings.nodeName match { case Some(value) => value - case None => InetAddress.getLocalHost.getHostAddress + ":" + settings.network.bindAddress.getPort + case None => InetAddress.getLocalHost.getHostAddress + ":" + networkSettings.bindAddress.getPort } val influxDB: InfluxDB = InfluxDBFactory - .connect(influxDBSettings.url, influxDBSettings.login, influxDBSettings.password) + .connect(influxSettings.url, influxSettings.login, influxSettings.password) influxDB.setRetentionPolicy("autogen") - override def preStart(): Unit = influxDB.write(influxDBSettings.udpPort, s"""nodesStartTime value="$nodeName"""") + override def preStart(): Unit = influxDB.write(influxSettings.udpPort, s"""nodesStartTime value="$nodeName"""") val sdf: SimpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") override def receive: Receive = { case BestHeaderInChain(fb) => influxDB.write( - influxDBSettings.udpPort, + influxSettings.udpPort, util.Arrays.asList( s"difficulty,nodeName=$nodeName diff=${fb.difficulty.toString},height=${fb.height}", //++ s"""height,nodeName=$nodeName header="${fb.encodedId}",height=${fb.height}""", //++ @@ -47,41 +49,41 @@ class StatsSender(influxDBSettings: InfluxDBSettings) extends Actor with StrictL s"value=${new File("encry/data/history/").listFiles.foldLeft(0L)(_ + _.length())}", //++ s"supply,nodeName=$nodeName,height=${fb.height} " + s"value=${EncrySupplyController.supplyAt(fb.height.asInstanceOf[Height], - settings.constants.InitialEmissionAmount, settings.constants.EmissionEpochLength, - settings.constants.EmissionDecay)}" //++ + constants.InitialEmissionAmount, constants.EmissionEpochLength, + constants.EmissionDecay)}" //++ )) case HeightStatistics(bestHeaderHeight, bestBlockHeight) => influxDB.write( - influxDBSettings.udpPort, + influxSettings.udpPort, s"chainStat,nodeName=$nodeName value=$bestHeaderHeight,bestBlockHeight=$bestBlockHeight" ) case TransactionsInBlock(txsNum) => - influxDB.write(influxDBSettings.udpPort, s"txsInEachBlock,nodeName=$nodeName value=$txsNum") + influxDB.write(influxSettings.udpPort, s"txsInEachBlock,nodeName=$nodeName value=$txsNum") case ModifierAppendedToHistory(isHeader, success) if nodeName.exists(_.isDigit) => val nodeNumber: Long = nodeName.filter(_.isDigit).toLong influxDB.write( - influxDBSettings.udpPort, + influxSettings.udpPort, s"""modifierAppendedToHistory,success=$success,isHeader=$isHeader,nodeName=$nodeName value=$nodeNumber""" ) case ModifierAppendedToState(success) if nodeName.exists(_.isDigit) => val nodeNumber: Long = nodeName.filter(_.isDigit).toLong influxDB.write( - influxDBSettings.udpPort, + influxSettings.udpPort, s"""modifierAppendedToState,success=$success,nodeName=$nodeName value=$nodeNumber""" ) case InfoAboutTransactionsFromMiner(qty) => - influxDB.write(influxDBSettings.udpPort, s"infoAboutTxsFromMiner,nodeName=$nodeName value=$qty") + influxDB.write(influxSettings.udpPort, s"infoAboutTxsFromMiner,nodeName=$nodeName value=$qty") case GetModifiers(_, modifiers) => modifiers .foreach(downloadedModifierId => modifiersToDownload.get(Algos.encode(downloadedModifierId)).foreach { dowloadInfo => influxDB.write( - influxDBSettings.udpPort, + influxSettings.udpPort, s"modDownloadStat,nodeName=$nodeName,modId=${Algos.encode(downloadedModifierId)}," + s"modType=${dowloadInfo._1} value=${System.currentTimeMillis() - dowloadInfo._2}" ) @@ -92,7 +94,7 @@ class StatsSender(influxDBSettings: InfluxDBSettings) extends Actor with StrictL case MiningEnd(blockHeader, workerIdx, workersQty) => timeProvider .time() .map(time => influxDB.write( - influxDBSettings.udpPort, + influxSettings.udpPort, util.Arrays.asList( s"miningEnd,nodeName=$nodeName,block=${Algos.encode(blockHeader.id)}," + s"height=${blockHeader.height},worker=$workerIdx value=${time - blockHeader.timestamp}", @@ -102,7 +104,7 @@ class StatsSender(influxDBSettings: InfluxDBSettings) extends Actor with StrictL case EndOfApplyingModifier(modifierId) => modifiersToApply.get(Algos.encode(modifierId)).foreach { modInfo => - influxDB.write(influxDBSettings.udpPort, s"modifApplying,nodeName=$nodeName," + + influxDB.write(influxSettings.udpPort, s"modifApplying,nodeName=$nodeName," + s"modType=${modInfo._1} value=${System.currentTimeMillis() - modInfo._2}") modifiersToApply -= Algos.encode(modifierId) } @@ -110,11 +112,11 @@ class StatsSender(influxDBSettings: InfluxDBSettings) extends Actor with StrictL case StartApplyingModifier(modifierId, modifierTypeId, startTime) => modifiersToApply += Algos.encode(modifierId) -> (modifierTypeId, startTime) - case MiningTime(time) => influxDB.write(influxDBSettings.udpPort, s"miningTime,nodeName=$nodeName value=$time") + case MiningTime(time) => influxDB.write(influxSettings.udpPort, s"miningTime,nodeName=$nodeName value=$time") - case SleepTime(time) => influxDB.write(influxDBSettings.udpPort, s"sleepTime,nodeName=$nodeName value=$time") + case SleepTime(time) => influxDB.write(influxSettings.udpPort, s"sleepTime,nodeName=$nodeName value=$time") - case StateUpdating(time) => influxDB.write(influxDBSettings.udpPort, s"stateUpdatingTime,nodeName=$nodeName value=$time") + case StateUpdating(time) => influxDB.write(influxSettings.udpPort, s"stateUpdatingTime,nodeName=$nodeName value=$time") case msg: ModifiersDownloadStatistic => msg match { case _ if nodeName.exists(_.isDigit) => @@ -126,7 +128,7 @@ class StatsSender(influxDBSettings: InfluxDBSettings) extends Actor with StrictL (t == Header.modifierTypeId) -> "validatedModifierFromNetwork" } influxDB.write( - influxDBSettings.udpPort, + influxSettings.udpPort, s"""$tableName,nodeName=$nodeNumber,isHeader=$isHeader value=$nodeNumber""" ) case _ => //do nothing @@ -159,5 +161,6 @@ object StatsSender { final case class SerializedModifierFromNetwork(modifierTypeId: ModifierTypeId) extends ModifiersDownloadStatistic final case class ValidatedModifierFromNetwork(modifierTypeId: ModifierTypeId) extends ModifiersDownloadStatistic - def props(settings: InfluxDBSettings): Props = Props(new StatsSender(settings)) + def props(influxSettings: InfluxDBSettings, networkSettings: NetworkSettings, constants: Constants): Props = + Props(new StatsSender(influxSettings, networkSettings, constants)) } \ No newline at end of file diff --git a/src/main/scala/encry/view/ModifiersCache.scala b/src/main/scala/encry/view/ModifiersCache.scala index c528243f14..f137cefda5 100644 --- a/src/main/scala/encry/view/ModifiersCache.scala +++ b/src/main/scala/encry/view/ModifiersCache.scala @@ -1,7 +1,6 @@ package encry.view import com.typesafe.scalalogging.StrictLogging -import encry.EncryApp.settings import encry.view.history.History import encry.view.history.ValidationError.{FatalValidationError, NonFatalValidationError} import org.encryfoundation.common.modifiers.PersistentModifier @@ -43,7 +42,7 @@ object ModifiersCache extends StrictLogging { case _ => } - if (size > settings.node.modifiersCacheSize) cache.find { case (_, modifier) => + if (size > history.settings.node.modifiersCacheSize) cache.find { case (_, modifier) => history.testApplicable(modifier) match { case Right(_) | Left(_: NonFatalValidationError) => false case _ => true @@ -115,7 +114,7 @@ object ModifiersCache extends StrictLogging { val res = value.map(cache.get(_)).collect { case Some(v: Header) if ((v.parentId sameElements history.getBestHeaderId.getOrElse(Array.emptyByteArray)) || - (history.getBestHeaderHeight == settings.constants.PreGenesisHeight && + (history.getBestHeaderHeight == history.settings.constants.PreGenesisHeight && (v.parentId sameElements Header.GenesisParentId) ) || history.getHeaderById(v.parentId).nonEmpty) && isApplicable(new mutable.WrappedArray.ofByte(v.id)) => logger.debug(s"Find new bestHeader in cache: ${Algos.encode(v.id)}") @@ -125,8 +124,8 @@ object ModifiersCache extends StrictLogging { res case None => logger.debug(s"No header in cache at height ${history.getBestHeaderHeight + 1}. " + - s"Trying to find in range [${history.getBestHeaderHeight - settings.constants.MaxRollbackDepth}, ${history.getBestHeaderHeight}]") - (history.getBestHeaderHeight - settings.constants.MaxRollbackDepth to history.getBestHeaderHeight).flatMap(height => + s"Trying to find in range [${history.getBestHeaderHeight - history.settings.constants.MaxRollbackDepth}, ${history.getBestHeaderHeight}]") + (history.getBestHeaderHeight - history.settings.constants.MaxRollbackDepth to history.getBestHeaderHeight).flatMap(height => getHeadersKeysAtHeight(height) ).toList } diff --git a/src/main/scala/encry/view/NodeViewHolder.scala b/src/main/scala/encry/view/NodeViewHolder.scala index 6dea2c7030..52edb51d3a 100644 --- a/src/main/scala/encry/view/NodeViewHolder.scala +++ b/src/main/scala/encry/view/NodeViewHolder.scala @@ -8,12 +8,12 @@ import akka.pattern._ import com.typesafe.config.Config import com.typesafe.scalalogging.StrictLogging import encry.EncryApp -import encry.EncryApp.settings import encry.EncryApp.{miner, nodeViewSynchronizer, timeProvider} import encry.consensus.HistoryConsensus.ProgressInfo import encry.network.DeliveryManager.FullBlockChainIsSynced import encry.network.NodeViewSynchronizer.ReceivableMessages._ import encry.network.PeerConnectionHandler.ConnectedPeer +import encry.settings.EncryAppSettings import encry.stats.StatsSender._ import encry.utils.CoreTaggedTypes.VersionTag import encry.view.NodeViewErrors.ModifierApplyError.HistoryApplyError @@ -37,7 +37,8 @@ import scala.util.{Failure, Success, Try} class NodeViewHolder(memoryPoolRef: ActorRef, influxRef: Option[ActorRef], - dataHolder: ActorRef) extends Actor with StrictLogging with AutoCloseable { + dataHolder: ActorRef, + settings: EncryAppSettings) extends Actor with StrictLogging with AutoCloseable { implicit val exCon: ExecutionContextExecutor = context.dispatcher @@ -404,6 +405,6 @@ object NodeViewHolder { case otherwise => 1 }) - def props(memoryPoolRef: ActorRef, influxRef: Option[ActorRef], dataHolder: ActorRef): Props = - Props(new NodeViewHolder(memoryPoolRef, influxRef, dataHolder)) + def props(memoryPoolRef: ActorRef, influxRef: Option[ActorRef], dataHolder: ActorRef, settings: EncryAppSettings): Props = + Props(new NodeViewHolder(memoryPoolRef, influxRef, dataHolder, settings)) } \ No newline at end of file diff --git a/src/main/scala/encry/view/history/HistoryApi.scala b/src/main/scala/encry/view/history/HistoryApi.scala index 87a37a5325..375e1609b5 100644 --- a/src/main/scala/encry/view/history/HistoryApi.scala +++ b/src/main/scala/encry/view/history/HistoryApi.scala @@ -4,7 +4,7 @@ import cats.syntax.option._ import encry.consensus.HistoryConsensus._ import encry.consensus._ import encry.modifiers.history._ -import encry.settings.EncryAppSettings +import encry.settings.{ConstantsSettings, EncryAppSettings, Settings} import encry.utils.NetworkTimeProvider import encry.view.history.ValidationError.HistoryApiError import io.iohk.iodb.ByteArrayWrapper @@ -12,12 +12,11 @@ import org.encryfoundation.common.modifiers.history.{Block, BlockProtoSerializer import org.encryfoundation.common.network.SyncInfo import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.{Difficulty, Height, ModifierId, ModifierTypeId} + import scala.annotation.tailrec import scala.collection.immutable.HashSet -trait HistoryApi extends HistoryDBApi { //scalastyle:ignore - - val settings: EncryAppSettings +trait HistoryApi extends HistoryDBApi with Settings { //scalastyle:ignore val timeProvider: NetworkTimeProvider diff --git a/src/main/scala/encry/view/history/HistoryDBApi.scala b/src/main/scala/encry/view/history/HistoryDBApi.scala index f97bdc583b..76bad74ea0 100644 --- a/src/main/scala/encry/view/history/HistoryDBApi.scala +++ b/src/main/scala/encry/view/history/HistoryDBApi.scala @@ -2,7 +2,7 @@ package encry.view.history import com.google.common.primitives.Ints import com.typesafe.scalalogging.StrictLogging -import encry.EncryApp.settings.constants +import encry.settings.ConstantsSettings import encry.storage.VersionalStorage.StorageKey import encry.view.history.storage.HistoryStorage import org.encryfoundation.common.modifiers.history.{Block, Header, Payload} @@ -12,7 +12,7 @@ import scorex.crypto.hash.Digest32 import scala.reflect.ClassTag -trait HistoryDBApi extends StrictLogging { +trait HistoryDBApi extends ConstantsSettings with StrictLogging { val historyStorage: HistoryStorage diff --git a/src/main/scala/encry/view/wallet/AccountManager.scala b/src/main/scala/encry/view/wallet/AccountManager.scala index 716c950571..b7bc193414 100644 --- a/src/main/scala/encry/view/wallet/AccountManager.scala +++ b/src/main/scala/encry/view/wallet/AccountManager.scala @@ -3,26 +3,25 @@ package encry.view.wallet import com.typesafe.scalalogging.StrictLogging import encry.EncryApp import encry.crypto.encryption.AES -import encry.settings.EncryAppSettings +import encry.settings.WalletSettings import encry.utils.Mnemonic import io.iohk.iodb.{ByteArrayWrapper, Store} import org.encryfoundation.common.crypto.{PrivateKey25519, PublicKey25519} import org.encryfoundation.common.utils.Algos import scorex.crypto.hash.Blake2b256 import scorex.crypto.signatures.{Curve25519, PrivateKey, PublicKey} + import scala.util.Try -case class AccountManager(store: Store) extends StrictLogging { +case class AccountManager(store: Store, walletSettings: Option[WalletSettings]) extends StrictLogging { import encry.storage.EncryStorage._ - val settings: EncryAppSettings = EncryApp.settings - lazy val mandatoryAccount: PrivateKey25519 = store.get(AccountManager.MandatoryAccountKey).flatMap { res => store.get(AccountManager.AccountPrefix +: res.data).map { secretRes => PrivateKey25519(PrivateKey @@ decrypt(secretRes.data), PublicKey @@ res.data) } - } getOrElse createMandatory(settings.wallet.flatMap(_.seed)) + } getOrElse createMandatory(walletSettings.flatMap(_.seed)) def accounts: Seq[PrivateKey25519] = store.getAll().foldLeft(Seq.empty[PrivateKey25519]) { case (acc, (k, v)) => if (k.data.head == AccountManager.AccountPrefix) @@ -63,7 +62,7 @@ case class AccountManager(store: Store) extends StrictLogging { acc } - private def decrypt(data: Array[Byte]): Array[Byte] = Try(AES.decrypt(data, settings.wallet.map(_.password) + private def decrypt(data: Array[Byte]): Array[Byte] = Try(AES.decrypt(data, walletSettings.map(_.password) .getOrElse(throw new RuntimeException("password not specified")))) .fold(e => { EncryApp.forceStopApplication(500, s"AccountManager: decryption failed cause ${e.getCause}") @@ -75,7 +74,7 @@ case class AccountManager(store: Store) extends StrictLogging { Seq.empty, Seq((ByteArrayWrapper(AccountManager.AccountPrefix +: publicKey), - ByteArrayWrapper(AES.encrypt(privateKey, settings.wallet.map(_.password) + ByteArrayWrapper(AES.encrypt(privateKey, walletSettings.map(_.password) .getOrElse(throw new RuntimeException("password not specified")))))) ) diff --git a/src/main/scala/encry/view/wallet/EncryWallet.scala b/src/main/scala/encry/view/wallet/EncryWallet.scala index d6a23533e5..cafdfefdad 100644 --- a/src/main/scala/encry/view/wallet/EncryWallet.scala +++ b/src/main/scala/encry/view/wallet/EncryWallet.scala @@ -69,7 +69,7 @@ object EncryWallet extends StrictLogging { val db: DB = LevelDbFactory.factory.open(walletDir, new Options) val accountManagerStore: LSMStore = new LSMStore(keysDir, keepVersions = 0, keySize = 33) val walletStorage = WalletVersionalLevelDBCompanion(db, settings.levelDB) - val accountManager = AccountManager(accountManagerStore) + val accountManager = AccountManager(accountManagerStore, settings.wallet) //init keys accountManager.mandatoryAccount EncryWallet(walletStorage, accountManager, settings.constants.IntrinsicTokenId) From 7ae12ea2b319f64f851cf7d1d142619533167046 Mon Sep 17 00:00:00 2001 From: capdev Date: Tue, 10 Sep 2019 10:38:11 +0500 Subject: [PATCH 35/51] replace DummyEncryAppSettingsReader with Settings trait --- src/main/scala/encry/view/history/HistoryApi.scala | 2 +- .../view/history/HistoryModifiersValidator.scala | 3 ++- .../network/DeliveryManagerTests/DMUtils.scala | 2 +- .../DeliveryManagerPriorityTests.scala | 7 ++++--- .../DeliveryManagerReRequestModifiesSpec.scala | 8 +++++--- .../DeliveryManagerRequestModifiesSpec.scala | 8 +++++--- .../DummyEncryAppSettingsReader.scala | 14 -------------- .../DownloadedModifiersValidatorTests.scala | 4 ++-- .../history/HistoryComparisionResultTest.scala | 8 +++----- .../view/history/ModifiersValidationTest.scala | 8 +++----- .../scala/encry/view/mempool/MemoryPoolTests.scala | 8 ++++---- 11 files changed, 30 insertions(+), 42 deletions(-) delete mode 100644 src/test/scala/encry/network/DeliveryManagerTests/DummyEncryAppSettingsReader.scala diff --git a/src/main/scala/encry/view/history/HistoryApi.scala b/src/main/scala/encry/view/history/HistoryApi.scala index 375e1609b5..c13bf06400 100644 --- a/src/main/scala/encry/view/history/HistoryApi.scala +++ b/src/main/scala/encry/view/history/HistoryApi.scala @@ -16,7 +16,7 @@ import org.encryfoundation.common.utils.TaggedTypes.{Difficulty, Height, Modifie import scala.annotation.tailrec import scala.collection.immutable.HashSet -trait HistoryApi extends HistoryDBApi with Settings { //scalastyle:ignore +trait HistoryApi extends HistoryDBApi with Settings { //scalastyle:ignore val timeProvider: NetworkTimeProvider diff --git a/src/main/scala/encry/view/history/HistoryModifiersValidator.scala b/src/main/scala/encry/view/history/HistoryModifiersValidator.scala index ca546e0589..b70b2deac9 100644 --- a/src/main/scala/encry/view/history/HistoryModifiersValidator.scala +++ b/src/main/scala/encry/view/history/HistoryModifiersValidator.scala @@ -7,9 +7,10 @@ import org.encryfoundation.common.modifiers.history.{Header, Payload} import org.encryfoundation.common.validation.ModifierSemanticValidity import cats.syntax.either._ import encry.consensus.EquihashPowScheme +import encry.settings.Settings import org.encryfoundation.common.utils.TaggedTypes.{Difficulty, ModifierId} -trait HistoryModifiersValidator extends HistoryApi { +trait HistoryModifiersValidator extends HistoryApi with Settings { val powScheme: EquihashPowScheme = EquihashPowScheme(settings.constants.n, settings.constants.k , settings.constants.Version, settings.constants.PreGenesisHeight, settings.constants.MaxTarget) diff --git a/src/test/scala/encry/network/DeliveryManagerTests/DMUtils.scala b/src/test/scala/encry/network/DeliveryManagerTests/DMUtils.scala index 53f3f281d1..32d0e3fe1a 100644 --- a/src/test/scala/encry/network/DeliveryManagerTests/DMUtils.scala +++ b/src/test/scala/encry/network/DeliveryManagerTests/DMUtils.scala @@ -26,7 +26,7 @@ object DMUtils extends InstanceFactory { val history: History = generateDummyHistory(settings) val deliveryManager: TestActorRef[DeliveryManager] = TestActorRef[DeliveryManager](DeliveryManager - .props(None, TestProbe().ref, TestProbe().ref, settings, TestProbe().ref, TestProbe().ref, TestProbe().ref)) + .props(None, TestProbe().ref, TestProbe().ref, TestProbe().ref, TestProbe().ref, TestProbe().ref, settings)) deliveryManager ! UpdatedHistory(history) if (isMining) deliveryManager ! StartMining else deliveryManager ! DisableMining diff --git a/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerPriorityTests.scala b/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerPriorityTests.scala index 79b2c800cc..abcaec5b49 100644 --- a/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerPriorityTests.scala +++ b/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerPriorityTests.scala @@ -1,6 +1,7 @@ package encry.network.DeliveryManagerTests import java.net.InetSocketAddress + import encry.network.DeliveryManagerTests.DMUtils.{createPeer, generateBlocks, initialiseDeliveryManager} import akka.actor.ActorSystem import akka.testkit.{TestActorRef, TestKit} @@ -14,7 +15,7 @@ import encry.network.PeerConnectionHandler.ConnectedPeer import encry.network.PrioritiesCalculator.PeersPriorityStatus.PeersPriorityStatus import encry.network.PeersKeeper.UpdatedPeersCollection import encry.network.PrioritiesCalculator.PeersPriorityStatus.PeersPriorityStatus._ -import encry.settings.EncryAppSettings +import encry.settings.{EncryAppSettings, Settings} import org.encryfoundation.common.modifiers.history.{Block, Header, HeaderProtoSerializer} import org.encryfoundation.common.network.BasicMessagesRepo.ModifiersNetworkMessage import org.encryfoundation.common.utils.TaggedTypes.ModifierId @@ -24,10 +25,10 @@ class DeliveryManagerPriorityTests extends WordSpecLike with BeforeAndAfterAll with Matchers with InstanceFactory - with OneInstancePerTest { + with OneInstancePerTest + with Settings { implicit val system: ActorSystem = ActorSystem("SynchronousTestingSpec") - val settings: EncryAppSettings = DummyEncryAppSettingsReader.read override def afterAll: Unit = TestKit.shutdownActorSystem(system) diff --git a/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerReRequestModifiesSpec.scala b/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerReRequestModifiesSpec.scala index f76a4449e3..6eb708f6ad 100644 --- a/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerReRequestModifiesSpec.scala +++ b/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerReRequestModifiesSpec.scala @@ -1,6 +1,7 @@ package encry.network.DeliveryManagerTests import java.net.InetSocketAddress + import akka.actor.ActorSystem import akka.testkit.{TestActorRef, TestProbe} import encry.consensus.HistoryConsensus @@ -14,13 +15,14 @@ import encry.network.PeerConnectionHandler.{ConnectedPeer, Incoming} import encry.network.PeersKeeper.UpdatedPeersCollection import encry.network.PrioritiesCalculator.PeersPriorityStatus.PeersPriorityStatus.InitialPriority import encry.network.PrioritiesCalculator.PeersPriorityStatus.PeersPriorityStatus -import encry.settings.EncryAppSettings +import encry.settings.{EncryAppSettings, Settings} import encry.view.history.History import org.encryfoundation.common.modifiers.history.{Block, Header, HeaderProtoSerializer} import org.encryfoundation.common.modifiers.mempool.transaction.Transaction import org.encryfoundation.common.network.BasicMessagesRepo.{Handshake, ModifiersNetworkMessage, RequestModifiersNetworkMessage} import org.encryfoundation.common.utils.TaggedTypes.ModifierId import org.scalatest.{BeforeAndAfterAll, Matchers, OneInstancePerTest, WordSpecLike} + import scala.concurrent.duration._ import scala.collection.mutable.WrappedArray @@ -28,10 +30,10 @@ class DeliveryManagerReRequestModifiesSpec extends WordSpecLike with BeforeAndAfterAll with Matchers with InstanceFactory - with OneInstancePerTest { + with OneInstancePerTest + with Settings { implicit val system: ActorSystem = ActorSystem("SynchronousTestingSpec") - val settings: EncryAppSettings = DummyEncryAppSettingsReader.read override def afterAll(): Unit = system.terminate() diff --git a/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerRequestModifiesSpec.scala b/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerRequestModifiesSpec.scala index 3e68242016..a35793c9c1 100644 --- a/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerRequestModifiesSpec.scala +++ b/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerRequestModifiesSpec.scala @@ -1,6 +1,7 @@ package encry.network.DeliveryManagerTests import java.net.InetSocketAddress + import akka.actor.ActorSystem import akka.testkit.{TestActorRef, TestKit, TestProbe} import encry.consensus.HistoryConsensus @@ -10,7 +11,7 @@ import encry.network.DeliveryManager import encry.network.NetworkController.ReceivableMessages.DataFromPeer import encry.network.NodeViewSynchronizer.ReceivableMessages.RequestFromLocal import encry.network.PeerConnectionHandler.{ConnectedPeer, Incoming} -import encry.settings.EncryAppSettings +import encry.settings.{EncryAppSettings, Settings} import encry.view.NodeViewHolder.DownloadRequest import org.scalatest.{BeforeAndAfterAll, Matchers, OneInstancePerTest, WordSpecLike} import encry.network.DeliveryManagerTests.DMUtils._ @@ -22,15 +23,16 @@ import org.encryfoundation.common.modifiers.mempool.transaction.Transaction import org.encryfoundation.common.network.BasicMessagesRepo.{Handshake, ModifiersNetworkMessage, RequestModifiersNetworkMessage, SyncInfoNetworkMessage} import org.encryfoundation.common.network.SyncInfo import org.encryfoundation.common.utils.TaggedTypes.ModifierId + import scala.collection.mutable.WrappedArray class DeliveryManagerRequestModifiesSpec extends WordSpecLike with BeforeAndAfterAll with Matchers with InstanceFactory - with OneInstancePerTest { + with OneInstancePerTest + with Settings { implicit val system: ActorSystem = ActorSystem("SynchronousTestingSpec") - val settings: EncryAppSettings = DummyEncryAppSettingsReader.read override def afterAll(): Unit = TestKit.shutdownActorSystem(system) diff --git a/src/test/scala/encry/network/DeliveryManagerTests/DummyEncryAppSettingsReader.scala b/src/test/scala/encry/network/DeliveryManagerTests/DummyEncryAppSettingsReader.scala deleted file mode 100644 index 0faf34962f..0000000000 --- a/src/test/scala/encry/network/DeliveryManagerTests/DummyEncryAppSettingsReader.scala +++ /dev/null @@ -1,14 +0,0 @@ -package encry.network.DeliveryManagerTests - -import com.typesafe.config.ConfigFactory -import encry.settings.{EncryAppSettings, NodeSettingsReader, SettingsReaders} -import net.ceedubs.ficus.Ficus._ -import net.ceedubs.ficus.readers.ArbitraryTypeReader._ - -object DummyEncryAppSettingsReader extends SettingsReaders with NodeSettingsReader { - - val configPath: String = "encry" - - val read: EncryAppSettings = ConfigFactory.load("MainTestSettings.conf").as[EncryAppSettings]("encry") - -} \ No newline at end of file diff --git a/src/test/scala/encry/network/DownloadedModifiersValidatorTests.scala b/src/test/scala/encry/network/DownloadedModifiersValidatorTests.scala index f0e2fc03a7..efdc507d59 100644 --- a/src/test/scala/encry/network/DownloadedModifiersValidatorTests.scala +++ b/src/test/scala/encry/network/DownloadedModifiersValidatorTests.scala @@ -41,7 +41,7 @@ class DownloadedModifiersValidatorTests extends WordSpecLike val mempool = TestProbe() val downloadedModifiersValidator = TestActorRef[DownloadedModifiersValidator](DownloadedModifiersValidator.props( - settingsWithAllPeers, nodeViewHolder.ref, peersKeeper.ref, nodeViewSync.ref, mempool.ref, None) + settingsWithAllPeers.constants.ModifierIdSize, nodeViewHolder.ref, peersKeeper.ref, nodeViewSync.ref, mempool.ref, None) ) val history: History = generateDummyHistory(settingsWithAllPeers) @@ -109,7 +109,7 @@ class DownloadedModifiersValidatorTests extends WordSpecLike ) val downloadedModifiersValidator = TestActorRef[DownloadedModifiersValidator](DownloadedModifiersValidator.props( - settingsWithAllPeers, nodeViewHolder.ref, peersKeeper.ref, nodeViewSync.ref, mempool.ref, None) + settingsWithAllPeers.constants.ModifierIdSize, nodeViewHolder.ref, peersKeeper.ref, nodeViewSync.ref, mempool.ref, None) ) val history: History = generateDummyHistory(settingsWithAllPeers) diff --git a/src/test/scala/encry/view/history/HistoryComparisionResultTest.scala b/src/test/scala/encry/view/history/HistoryComparisionResultTest.scala index 81dd01a672..7da0ad00b6 100644 --- a/src/test/scala/encry/view/history/HistoryComparisionResultTest.scala +++ b/src/test/scala/encry/view/history/HistoryComparisionResultTest.scala @@ -3,8 +3,7 @@ package encry.view.history import encry.consensus.HistoryConsensus._ import encry.modifiers.InstanceFactory import encry.network.DeliveryManagerTests.DMUtils.generateBlocks -import encry.network.DeliveryManagerTests.DummyEncryAppSettingsReader -import encry.settings.EncryAppSettings +import encry.settings.Settings import org.encryfoundation.common.modifiers.history.Block import org.encryfoundation.common.network.SyncInfo import org.scalatest.{Matchers, OneInstancePerTest, WordSpecLike} @@ -12,9 +11,8 @@ import org.scalatest.{Matchers, OneInstancePerTest, WordSpecLike} class HistoryComparisionResultTest extends WordSpecLike with Matchers with InstanceFactory - with OneInstancePerTest { - - val settings: EncryAppSettings = DummyEncryAppSettingsReader.read + with OneInstancePerTest + with Settings { "History Reader" should { "mark history as Equal where our best header is the same as other history best header" in { diff --git a/src/test/scala/encry/view/history/ModifiersValidationTest.scala b/src/test/scala/encry/view/history/ModifiersValidationTest.scala index f6c95353f4..be26264f6a 100644 --- a/src/test/scala/encry/view/history/ModifiersValidationTest.scala +++ b/src/test/scala/encry/view/history/ModifiersValidationTest.scala @@ -2,17 +2,15 @@ package encry.view.history import encry.modifiers.InstanceFactory import encry.network.DeliveryManagerTests.DMUtils.generateBlocks -import encry.network.DeliveryManagerTests.DummyEncryAppSettingsReader -import encry.settings.EncryAppSettings +import encry.settings.{EncryAppSettings, Settings} import org.encryfoundation.common.modifiers.history.Block import org.scalatest.{Matchers, OneInstancePerTest, WordSpecLike} class ModifiersValidationTest extends WordSpecLike with Matchers with InstanceFactory - with OneInstancePerTest { - - val settings: EncryAppSettings = DummyEncryAppSettingsReader.read + with OneInstancePerTest + with Settings { "Modifiers validator" should { "validate genesis block" in { diff --git a/src/test/scala/encry/view/mempool/MemoryPoolTests.scala b/src/test/scala/encry/view/mempool/MemoryPoolTests.scala index dbde896c85..331b390e1b 100644 --- a/src/test/scala/encry/view/mempool/MemoryPoolTests.scala +++ b/src/test/scala/encry/view/mempool/MemoryPoolTests.scala @@ -4,8 +4,7 @@ import akka.actor.ActorSystem import akka.testkit.{TestActorRef, TestProbe} import com.typesafe.scalalogging.StrictLogging import encry.modifiers.InstanceFactory -import encry.network.DeliveryManagerTests.DummyEncryAppSettingsReader -import encry.settings.EncryAppSettings +import encry.settings.{EncryAppSettings, Settings} import encry.utils.NetworkTimeProvider import encry.view.mempool.MemoryPool.{NewTransaction, TransactionsForMiner} import org.scalatest.{BeforeAndAfterAll, Matchers, OneInstancePerTest, WordSpecLike} @@ -16,13 +15,14 @@ class MemoryPoolTests extends WordSpecLike with Matchers with InstanceFactory with BeforeAndAfterAll - with OneInstancePerTest with StrictLogging { + with OneInstancePerTest + with Settings + with StrictLogging { implicit val system: ActorSystem = ActorSystem() override def afterAll(): Unit = system.terminate() - val settings: EncryAppSettings = DummyEncryAppSettingsReader.read val timeProvider: NetworkTimeProvider = new NetworkTimeProvider(settings.ntp) "MemoryPool" should { From ddd0fce0426ac6a17ce49ee9942d7dbcf052a5bb Mon Sep 17 00:00:00 2001 From: capdev Date: Tue, 10 Sep 2019 11:15:10 +0500 Subject: [PATCH 36/51] more settings refactoring --- benchmarks/src/test/scala/benches/Utils.scala | 1 - .../scala/encry/settings/ConstantsSettings.scala | 2 +- src/main/scala/encry/settings/Settings.scala | 2 +- src/main/scala/encry/view/history/History.scala | 1 - .../view/history/HistoryModifiersValidator.scala | 14 +++++++------- .../scala/encry/modifiers/InstanceFactory.scala | 7 +++---- .../DeliveryManagerReRequestModifiesSpec.scala | 2 +- 7 files changed, 13 insertions(+), 16 deletions(-) diff --git a/benchmarks/src/test/scala/benches/Utils.scala b/benchmarks/src/test/scala/benches/Utils.scala index 2f3e9e5744..c8fbd6d096 100644 --- a/benchmarks/src/test/scala/benches/Utils.scala +++ b/benchmarks/src/test/scala/benches/Utils.scala @@ -418,7 +418,6 @@ object Utils extends StrictLogging { val ntp: NetworkTimeProvider = new NetworkTimeProvider(settingsEncry.ntp) new History { - override val settings: EncryAppSettings = settingsEncry override val historyStorage: HistoryStorage = storage override val timeProvider: NetworkTimeProvider = ntp } diff --git a/src/main/scala/encry/settings/ConstantsSettings.scala b/src/main/scala/encry/settings/ConstantsSettings.scala index 4282277a3b..f7662872c8 100644 --- a/src/main/scala/encry/settings/ConstantsSettings.scala +++ b/src/main/scala/encry/settings/ConstantsSettings.scala @@ -3,5 +3,5 @@ package encry.settings import org.encryfoundation.common.utils.constants.Constants trait ConstantsSettings { - val constants: Constants = EncryAppSettings.read().constants + lazy val constants: Constants = EncryAppSettings.read().constants } diff --git a/src/main/scala/encry/settings/Settings.scala b/src/main/scala/encry/settings/Settings.scala index 88a57a4257..ac7e7cc9d5 100644 --- a/src/main/scala/encry/settings/Settings.scala +++ b/src/main/scala/encry/settings/Settings.scala @@ -1,5 +1,5 @@ package encry.settings trait Settings { - val settings: EncryAppSettings = EncryAppSettings.read() + lazy val settings: EncryAppSettings = EncryAppSettings.read() } diff --git a/src/main/scala/encry/view/history/History.scala b/src/main/scala/encry/view/history/History.scala index e495d10f6f..8d1acdd2f4 100644 --- a/src/main/scala/encry/view/history/History.scala +++ b/src/main/scala/encry/view/history/History.scala @@ -170,7 +170,6 @@ object History extends StrictLogging { VLDBWrapper(VersionalLevelDBCompanion(levelDBInit, settingsEncry.levelDB)) } new History { - override val settings: EncryAppSettings = settingsEncry override val historyStorage: HistoryStorage = HistoryStorage(vldbInit) override val timeProvider: NetworkTimeProvider = new NetworkTimeProvider(settingsEncry.ntp) } diff --git a/src/main/scala/encry/view/history/HistoryModifiersValidator.scala b/src/main/scala/encry/view/history/HistoryModifiersValidator.scala index b70b2deac9..1183feed3e 100644 --- a/src/main/scala/encry/view/history/HistoryModifiersValidator.scala +++ b/src/main/scala/encry/view/history/HistoryModifiersValidator.scala @@ -7,13 +7,13 @@ import org.encryfoundation.common.modifiers.history.{Header, Payload} import org.encryfoundation.common.validation.ModifierSemanticValidity import cats.syntax.either._ import encry.consensus.EquihashPowScheme -import encry.settings.Settings +import encry.settings.{ConstantsSettings} import org.encryfoundation.common.utils.TaggedTypes.{Difficulty, ModifierId} -trait HistoryModifiersValidator extends HistoryApi with Settings { +trait HistoryModifiersValidator extends HistoryApi with ConstantsSettings { - val powScheme: EquihashPowScheme = EquihashPowScheme(settings.constants.n, settings.constants.k - , settings.constants.Version, settings.constants.PreGenesisHeight, settings.constants.MaxTarget) + val powScheme: EquihashPowScheme = EquihashPowScheme(constants.n, constants.k + , constants.Version, constants.PreGenesisHeight, constants.MaxTarget) def testApplicable(modifier: PersistentModifier): Either[ValidationError, PersistentModifier] = (modifier match { @@ -52,7 +52,7 @@ trait HistoryModifiersValidator extends HistoryApi with Settings { GenesisBlockFatalValidationError(s"Genesis block with header ${h.encodedId} should has genesis parent id")) _ <- Either.cond(getBestHeaderId.isEmpty, (), GenesisBlockFatalValidationError(s"Genesis block with header ${h.encodedId} appended to non-empty history")) - _ <- Either.cond(h.height == settings.constants.GenesisHeight, (), + _ <- Either.cond(h.height == constants.GenesisHeight, (), GenesisBlockFatalValidationError(s"Height of genesis block with header ${h.encodedId} is incorrect")) } yield h @@ -69,7 +69,7 @@ trait HistoryModifiersValidator extends HistoryApi with Settings { HeaderFatalValidationError(s"Incorrect real difficulty in header ${h.encodedId}")) _ <- Either.cond(requiredDifficultyAfter(parent).exists(_ <= h.difficulty), (), HeaderFatalValidationError(s"Incorrect required difficulty in header ${h.encodedId}")) - _ <- Either.cond(heightOf(h.parentId).exists(h => getBestHeaderHeight - h < settings.constants.MaxRollbackDepth), (), + _ <- Either.cond(heightOf(h.parentId).exists(h => getBestHeaderHeight - h < constants.MaxRollbackDepth), (), HeaderFatalValidationError(s"Header ${h.encodedId} has height greater than max roll back depth")) powSchemeValidationResult = powScheme.verify(h) _ <- Either.cond(powSchemeValidationResult.isRight, (), @@ -77,7 +77,7 @@ trait HistoryModifiersValidator extends HistoryApi with Settings { s" caused: $powSchemeValidationResult")) _ <- Either.cond(isSemanticallyValid(h.parentId) != ModifierSemanticValidity.Invalid, (), HeaderFatalValidationError(s"Header ${h.encodedId} is semantically invalid")) - _ <- Either.cond(h.timestamp - timeProvider.estimatedTime <= settings.constants.MaxTimeDrift, (), + _ <- Either.cond(h.timestamp - timeProvider.estimatedTime <= constants.MaxTimeDrift, (), HeaderNonFatalValidationError(s"Header ${h.encodedId} with timestamp ${h.timestamp}" + s" is too far in future from now ${timeProvider.estimatedTime}")) } yield h diff --git a/src/test/scala/encry/modifiers/InstanceFactory.scala b/src/test/scala/encry/modifiers/InstanceFactory.scala index 0b795ad507..0c3e74e63f 100755 --- a/src/test/scala/encry/modifiers/InstanceFactory.scala +++ b/src/test/scala/encry/modifiers/InstanceFactory.scala @@ -213,18 +213,17 @@ trait InstanceFactory extends Keys with EncryGenerator { }._2 } - def generateDummyHistory(settingsEncry: EncryAppSettings): History = { + def generateDummyHistory(settings: EncryAppSettings): History = { val indexStore: LSMStore = new LSMStore(FileHelper.getRandomTempDir, keepVersions = 0) val objectsStore: LSMStore = new LSMStore(FileHelper.getRandomTempDir, keepVersions = 0) val levelDBInit = LevelDbFactory.factory.open(FileHelper.getRandomTempDir, new Options) - val vldbInit = VLDBWrapper(VersionalLevelDBCompanion(levelDBInit, settingsEncry.levelDB)) + val vldbInit = VLDBWrapper(VersionalLevelDBCompanion(levelDBInit, settings.levelDB)) val storage: HistoryStorage = new HistoryStorage(vldbInit) - val ntp: NetworkTimeProvider = new NetworkTimeProvider(settingsEncry.ntp) + val ntp: NetworkTimeProvider = new NetworkTimeProvider(settings.ntp) new History { - override val settings: EncryAppSettings = settingsEncry override val historyStorage: HistoryStorage = storage override val timeProvider: NetworkTimeProvider = ntp } diff --git a/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerReRequestModifiesSpec.scala b/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerReRequestModifiesSpec.scala index 6eb708f6ad..ab6675d714 100644 --- a/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerReRequestModifiesSpec.scala +++ b/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerReRequestModifiesSpec.scala @@ -15,7 +15,7 @@ import encry.network.PeerConnectionHandler.{ConnectedPeer, Incoming} import encry.network.PeersKeeper.UpdatedPeersCollection import encry.network.PrioritiesCalculator.PeersPriorityStatus.PeersPriorityStatus.InitialPriority import encry.network.PrioritiesCalculator.PeersPriorityStatus.PeersPriorityStatus -import encry.settings.{EncryAppSettings, Settings} +import encry.settings.Settings import encry.view.history.History import org.encryfoundation.common.modifiers.history.{Block, Header, HeaderProtoSerializer} import org.encryfoundation.common.modifiers.mempool.transaction.Transaction From d16cca13fcca212c52b769196020e570a3a710d0 Mon Sep 17 00:00:00 2001 From: capdev Date: Tue, 10 Sep 2019 11:19:34 +0500 Subject: [PATCH 37/51] replace val settings with Settings trait --- it/src/main/scala/encry/it/docker/Node.scala | 5 ++--- .../BasicNetworkMessagesProtoTest.scala | 5 ++--- src/test/scala/encry/view/wallet/WalletSpec.scala | 6 ++---- 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/it/src/main/scala/encry/it/docker/Node.scala b/it/src/main/scala/encry/it/docker/Node.scala index 9b5f7df99b..7a14a30b77 100644 --- a/it/src/main/scala/encry/it/docker/Node.scala +++ b/it/src/main/scala/encry/it/docker/Node.scala @@ -6,7 +6,7 @@ import com.typesafe.config.Config import com.typesafe.scalalogging.StrictLogging import encry.it.api.HttpApi import encry.it.util.KeyHelper.createPrivKey -import encry.settings.EncryAppSettings +import encry.settings.{EncryAppSettings, Settings} import org.asynchttpclient._ import org.encryfoundation.common.crypto.{PrivateKey25519, PublicKey25519} @@ -17,9 +17,8 @@ case class Node(config: Config, containerId: String, nodeIp: String, nodePort: Int, - client: AsyncHttpClient) extends AutoCloseable with StrictLogging with HttpApi { + client: AsyncHttpClient) extends AutoCloseable with StrictLogging with HttpApi with Settings { - val settings: EncryAppSettings = EncryAppSettings.fromConfig(config) val privKey: PrivateKey25519 = createPrivKey(Some(settings.wallet.flatMap(_.seed).getOrElse(""))) val publicKey: PublicKey25519 = privKey.publicImage val address: String = publicKey.address.address diff --git a/src/test/scala/encry/network/NetworkMessagesProtoTest/BasicNetworkMessagesProtoTest.scala b/src/test/scala/encry/network/NetworkMessagesProtoTest/BasicNetworkMessagesProtoTest.scala index 233c7b879d..c765470e9d 100644 --- a/src/test/scala/encry/network/NetworkMessagesProtoTest/BasicNetworkMessagesProtoTest.scala +++ b/src/test/scala/encry/network/NetworkMessagesProtoTest/BasicNetworkMessagesProtoTest.scala @@ -6,7 +6,7 @@ import NetworkMessagesProto.GeneralizedNetworkProtoMessage import NetworkMessagesProto.GeneralizedNetworkProtoMessage.InnerMessage import encry.EncryApp import encry.modifiers.InstanceFactory -import encry.settings.EncryAppSettings +import encry.settings.{EncryAppSettings, Settings} import org.encryfoundation.common.modifiers.history.{Block, Header, Payload} import org.encryfoundation.common.modifiers.mempool.transaction.Transaction import org.encryfoundation.common.network.BasicMessagesRepo._ @@ -16,9 +16,8 @@ import org.scalatest.{Matchers, PropSpec} import scala.util.Try -class BasicNetworkMessagesProtoTest extends PropSpec with Matchers with InstanceFactory { +class BasicNetworkMessagesProtoTest extends PropSpec with Matchers with InstanceFactory with Settings { - val settings: EncryAppSettings = EncryApp.settings val testedBlocks: Vector[Block] = (0 until 10).foldLeft(generateDummyHistory(settings), Vector.empty[Block]) { case ((prevHistory, blocks), _) => val block: Block = generateNextBlock(prevHistory) diff --git a/src/test/scala/encry/view/wallet/WalletSpec.scala b/src/test/scala/encry/view/wallet/WalletSpec.scala index 90924feaae..c039060746 100644 --- a/src/test/scala/encry/view/wallet/WalletSpec.scala +++ b/src/test/scala/encry/view/wallet/WalletSpec.scala @@ -3,7 +3,7 @@ package encry.view.wallet import com.typesafe.scalalogging.StrictLogging import encry.EncryApp import encry.modifiers.InstanceFactory -import encry.settings.{EncryAppSettings, LevelDBSettings} +import encry.settings.{EncryAppSettings, LevelDBSettings, Settings} import encry.utils.TestHelper.Props import encry.utils.{EncryGenerator, FileHelper} import org.encryfoundation.common.modifiers.history.{Block, Header, Payload} @@ -12,9 +12,7 @@ import org.encryfoundation.common.modifiers.state.box.{AssetBox, MonetaryBox} import org.encryfoundation.common.utils.TaggedTypes.ModifierId import org.scalatest.{Matchers, PropSpec} -class WalletSpec extends PropSpec with Matchers with InstanceFactory with EncryGenerator with StrictLogging { - - lazy val settings: EncryAppSettings = EncryApp.settings +class WalletSpec extends PropSpec with Matchers with InstanceFactory with EncryGenerator with StrictLogging with Settings { val dummyLevelDBSettings = LevelDBSettings(5) From d0b477a705edebb2b99ec3e41ecfddb63d874f9f Mon Sep 17 00:00:00 2001 From: capdev Date: Tue, 10 Sep 2019 12:05:27 +0500 Subject: [PATCH 38/51] replace DummyEncryAppSettingsReader with TestSettings trait --- src/main/scala/encry/modifiers/history/HeaderUtils.scala | 7 ++++--- src/main/scala/encry/settings/EncryAppSettings.scala | 9 +++++++-- src/main/scala/encry/settings/Settings.scala | 2 +- src/main/scala/encry/settings/TestSettings.scala | 5 +++++ .../DeliveryManagerPriorityTests.scala | 4 ++-- .../DeliveryManagerReRequestModifiesSpec.scala | 4 ++-- .../DeliveryManagerRequestModifiesSpec.scala | 4 ++-- .../view/history/HistoryComparisionResultTest.scala | 4 ++-- .../encry/view/history/ModifiersValidationTest.scala | 4 ++-- src/test/scala/encry/view/mempool/MemoryPoolTests.scala | 4 ++-- src/test/scala/encry/view/nvh/NodeViewHolderTest.scala | 4 ++-- 11 files changed, 31 insertions(+), 20 deletions(-) create mode 100644 src/main/scala/encry/settings/TestSettings.scala diff --git a/src/main/scala/encry/modifiers/history/HeaderUtils.scala b/src/main/scala/encry/modifiers/history/HeaderUtils.scala index a14f278a76..0682a0de45 100644 --- a/src/main/scala/encry/modifiers/history/HeaderUtils.scala +++ b/src/main/scala/encry/modifiers/history/HeaderUtils.scala @@ -1,11 +1,12 @@ package encry.modifiers.history -import encry.settings.TestConstants import org.encryfoundation.common.modifiers.history.Header import org.encryfoundation.common.validation.{ModifierValidator, ValidationResult} object HeaderUtils { + val TransactionsRootSize: Int = 32 + def syntacticallyValidity(header: Header, modifierIdSize: Int): ValidationResult = ModifierValidator.accumulateErrors .demand(header.modifierTypeId == Header.modifierTypeId, s"Modifier's type id should be ${Header.modifierTypeId}") @@ -13,7 +14,7 @@ object HeaderUtils { s"Modifier's id should be $modifierIdSize bytes") .demand(header.parentId.size == modifierIdSize, s"Parent's id should be $modifierIdSize bytes") - .demand(header.transactionsRoot.size == TestConstants.TransactionsRootSize, - s"TransactionsRoot's size should be ${TestConstants.TransactionsRootSize} bytes") + .demand(header.transactionsRoot.size == TransactionsRootSize, + s"TransactionsRoot's size should be $TransactionsRootSize bytes") .result } \ No newline at end of file diff --git a/src/main/scala/encry/settings/EncryAppSettings.scala b/src/main/scala/encry/settings/EncryAppSettings.scala index 49101301e3..bd09fbc355 100644 --- a/src/main/scala/encry/settings/EncryAppSettings.scala +++ b/src/main/scala/encry/settings/EncryAppSettings.scala @@ -36,8 +36,13 @@ object EncryAppSettings extends SettingsReaders with NodeSettingsReader with Str if (args.nonEmpty) fromConfig(readConfigFromPath(args)) else - ConfigFactory.load("local.conf") - .withFallback(ConfigFactory.load()).as[EncryAppSettings](configPath) + loadConfig("local.conf") + + def loadConfig(configName: String): EncryAppSettings = { + ConfigFactory.load(configName) + .withFallback(ConfigFactory.load()) + .as[EncryAppSettings](configPath) + } private def readConfigFromPath(userConfigPath: Option[String]): Config = { val maybeConfigFile: Option[File] = for { diff --git a/src/main/scala/encry/settings/Settings.scala b/src/main/scala/encry/settings/Settings.scala index ac7e7cc9d5..188ce92d0b 100644 --- a/src/main/scala/encry/settings/Settings.scala +++ b/src/main/scala/encry/settings/Settings.scala @@ -2,4 +2,4 @@ package encry.settings trait Settings { lazy val settings: EncryAppSettings = EncryAppSettings.read() -} +} \ No newline at end of file diff --git a/src/main/scala/encry/settings/TestSettings.scala b/src/main/scala/encry/settings/TestSettings.scala new file mode 100644 index 0000000000..a9a77447c2 --- /dev/null +++ b/src/main/scala/encry/settings/TestSettings.scala @@ -0,0 +1,5 @@ +package encry.settings + +trait TestSettings { + lazy val settings: EncryAppSettings = EncryAppSettings.loadConfig("MainTestSettings.conf") +} diff --git a/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerPriorityTests.scala b/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerPriorityTests.scala index abcaec5b49..ceddf9cedb 100644 --- a/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerPriorityTests.scala +++ b/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerPriorityTests.scala @@ -15,7 +15,7 @@ import encry.network.PeerConnectionHandler.ConnectedPeer import encry.network.PrioritiesCalculator.PeersPriorityStatus.PeersPriorityStatus import encry.network.PeersKeeper.UpdatedPeersCollection import encry.network.PrioritiesCalculator.PeersPriorityStatus.PeersPriorityStatus._ -import encry.settings.{EncryAppSettings, Settings} +import encry.settings.{EncryAppSettings, TestSettings} import org.encryfoundation.common.modifiers.history.{Block, Header, HeaderProtoSerializer} import org.encryfoundation.common.network.BasicMessagesRepo.ModifiersNetworkMessage import org.encryfoundation.common.utils.TaggedTypes.ModifierId @@ -26,7 +26,7 @@ class DeliveryManagerPriorityTests extends WordSpecLike with Matchers with InstanceFactory with OneInstancePerTest - with Settings { + with TestSettings { implicit val system: ActorSystem = ActorSystem("SynchronousTestingSpec") diff --git a/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerReRequestModifiesSpec.scala b/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerReRequestModifiesSpec.scala index ab6675d714..a9149bb489 100644 --- a/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerReRequestModifiesSpec.scala +++ b/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerReRequestModifiesSpec.scala @@ -15,7 +15,7 @@ import encry.network.PeerConnectionHandler.{ConnectedPeer, Incoming} import encry.network.PeersKeeper.UpdatedPeersCollection import encry.network.PrioritiesCalculator.PeersPriorityStatus.PeersPriorityStatus.InitialPriority import encry.network.PrioritiesCalculator.PeersPriorityStatus.PeersPriorityStatus -import encry.settings.Settings +import encry.settings.{EncryAppSettings, Settings, TestSettings} import encry.view.history.History import org.encryfoundation.common.modifiers.history.{Block, Header, HeaderProtoSerializer} import org.encryfoundation.common.modifiers.mempool.transaction.Transaction @@ -31,7 +31,7 @@ class DeliveryManagerReRequestModifiesSpec extends WordSpecLike with Matchers with InstanceFactory with OneInstancePerTest - with Settings { + with TestSettings { implicit val system: ActorSystem = ActorSystem("SynchronousTestingSpec") diff --git a/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerRequestModifiesSpec.scala b/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerRequestModifiesSpec.scala index a35793c9c1..231b64c76b 100644 --- a/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerRequestModifiesSpec.scala +++ b/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerRequestModifiesSpec.scala @@ -11,7 +11,7 @@ import encry.network.DeliveryManager import encry.network.NetworkController.ReceivableMessages.DataFromPeer import encry.network.NodeViewSynchronizer.ReceivableMessages.RequestFromLocal import encry.network.PeerConnectionHandler.{ConnectedPeer, Incoming} -import encry.settings.{EncryAppSettings, Settings} +import encry.settings.{EncryAppSettings, TestSettings} import encry.view.NodeViewHolder.DownloadRequest import org.scalatest.{BeforeAndAfterAll, Matchers, OneInstancePerTest, WordSpecLike} import encry.network.DeliveryManagerTests.DMUtils._ @@ -30,7 +30,7 @@ class DeliveryManagerRequestModifiesSpec extends WordSpecLike with BeforeAndAfte with Matchers with InstanceFactory with OneInstancePerTest - with Settings { + with TestSettings { implicit val system: ActorSystem = ActorSystem("SynchronousTestingSpec") diff --git a/src/test/scala/encry/view/history/HistoryComparisionResultTest.scala b/src/test/scala/encry/view/history/HistoryComparisionResultTest.scala index 7da0ad00b6..f8bd25a283 100644 --- a/src/test/scala/encry/view/history/HistoryComparisionResultTest.scala +++ b/src/test/scala/encry/view/history/HistoryComparisionResultTest.scala @@ -3,7 +3,7 @@ package encry.view.history import encry.consensus.HistoryConsensus._ import encry.modifiers.InstanceFactory import encry.network.DeliveryManagerTests.DMUtils.generateBlocks -import encry.settings.Settings +import encry.settings.{EncryAppSettings, TestSettings} import org.encryfoundation.common.modifiers.history.Block import org.encryfoundation.common.network.SyncInfo import org.scalatest.{Matchers, OneInstancePerTest, WordSpecLike} @@ -12,7 +12,7 @@ class HistoryComparisionResultTest extends WordSpecLike with Matchers with InstanceFactory with OneInstancePerTest - with Settings { + with TestSettings { "History Reader" should { "mark history as Equal where our best header is the same as other history best header" in { diff --git a/src/test/scala/encry/view/history/ModifiersValidationTest.scala b/src/test/scala/encry/view/history/ModifiersValidationTest.scala index be26264f6a..875391df35 100644 --- a/src/test/scala/encry/view/history/ModifiersValidationTest.scala +++ b/src/test/scala/encry/view/history/ModifiersValidationTest.scala @@ -2,7 +2,7 @@ package encry.view.history import encry.modifiers.InstanceFactory import encry.network.DeliveryManagerTests.DMUtils.generateBlocks -import encry.settings.{EncryAppSettings, Settings} +import encry.settings.{EncryAppSettings, TestSettings} import org.encryfoundation.common.modifiers.history.Block import org.scalatest.{Matchers, OneInstancePerTest, WordSpecLike} @@ -10,7 +10,7 @@ class ModifiersValidationTest extends WordSpecLike with Matchers with InstanceFactory with OneInstancePerTest - with Settings { + with TestSettings { "Modifiers validator" should { "validate genesis block" in { diff --git a/src/test/scala/encry/view/mempool/MemoryPoolTests.scala b/src/test/scala/encry/view/mempool/MemoryPoolTests.scala index 331b390e1b..6db0407bb5 100644 --- a/src/test/scala/encry/view/mempool/MemoryPoolTests.scala +++ b/src/test/scala/encry/view/mempool/MemoryPoolTests.scala @@ -4,7 +4,7 @@ import akka.actor.ActorSystem import akka.testkit.{TestActorRef, TestProbe} import com.typesafe.scalalogging.StrictLogging import encry.modifiers.InstanceFactory -import encry.settings.{EncryAppSettings, Settings} +import encry.settings.{EncryAppSettings, TestSettings} import encry.utils.NetworkTimeProvider import encry.view.mempool.MemoryPool.{NewTransaction, TransactionsForMiner} import org.scalatest.{BeforeAndAfterAll, Matchers, OneInstancePerTest, WordSpecLike} @@ -16,7 +16,7 @@ class MemoryPoolTests extends WordSpecLike with InstanceFactory with BeforeAndAfterAll with OneInstancePerTest - with Settings + with TestSettings with StrictLogging { implicit val system: ActorSystem = ActorSystem() diff --git a/src/test/scala/encry/view/nvh/NodeViewHolderTest.scala b/src/test/scala/encry/view/nvh/NodeViewHolderTest.scala index f7cc4fb738..443153bffa 100644 --- a/src/test/scala/encry/view/nvh/NodeViewHolderTest.scala +++ b/src/test/scala/encry/view/nvh/NodeViewHolderTest.scala @@ -4,10 +4,10 @@ package encry.view.nvh // with BeforeAndAfterAll // with Matchers // with InstanceFactory -// with OneInstancePerTest { +// with OneInstancePerTest +// with TestSettings { // // implicit val system: ActorSystem = ActorSystem("NodeViewHolderSpec") -// val settings: EncryAppSettings = DummyEncryAppSettingsReader.read // // override def afterAll: Unit = TestKit.shutdownActorSystem(system) // From 97b4040855d77687b1f56316fef3227298c0c433 Mon Sep 17 00:00:00 2001 From: capdev Date: Tue, 10 Sep 2019 12:23:30 +0500 Subject: [PATCH 39/51] replace MainTestSettings.conf with MainTestSettings trait replace AdditionalTestSettings.conf with AdditionalTestSettings trait --- .../scala/encry/settings/TestSettings.scala | 5 - .../scala/encry/network/BlackListTests.scala | 25 +++-- .../network/ConnectWithNewPeerTests.scala | 106 +++++++++--------- .../ConnectedPeersCollectionsTests.scala | 28 ++--- .../DeliveryManagerPriorityTests.scala | 26 ++--- ...DeliveryManagerReRequestModifiesSpec.scala | 32 +++--- .../DeliveryManagerRequestModifiesSpec.scala | 34 +++--- .../DownloadedModifiersValidatorTests.scala | 25 +++-- .../scala/encry/network/NetworkUtils.scala | 14 --- .../settings/AdditionalTestSettings.scala | 6 + .../encry/settings/MainTestSettings.scala | 6 + .../HistoryComparisionResultTest.scala | 30 ++--- .../history/ModifiersValidationTest.scala | 10 +- .../encry/view/mempool/MemoryPoolTests.scala | 16 +-- 14 files changed, 179 insertions(+), 184 deletions(-) delete mode 100644 src/main/scala/encry/settings/TestSettings.scala delete mode 100644 src/test/scala/encry/network/NetworkUtils.scala create mode 100644 src/test/scala/encry/settings/AdditionalTestSettings.scala create mode 100644 src/test/scala/encry/settings/MainTestSettings.scala diff --git a/src/main/scala/encry/settings/TestSettings.scala b/src/main/scala/encry/settings/TestSettings.scala deleted file mode 100644 index a9a77447c2..0000000000 --- a/src/main/scala/encry/settings/TestSettings.scala +++ /dev/null @@ -1,5 +0,0 @@ -package encry.settings - -trait TestSettings { - lazy val settings: EncryAppSettings = EncryAppSettings.loadConfig("MainTestSettings.conf") -} diff --git a/src/test/scala/encry/network/BlackListTests.scala b/src/test/scala/encry/network/BlackListTests.scala index fdf0eb33c8..90eac45585 100644 --- a/src/test/scala/encry/network/BlackListTests.scala +++ b/src/test/scala/encry/network/BlackListTests.scala @@ -1,6 +1,7 @@ package encry.network import java.net.{InetAddress, InetSocketAddress} + import akka.actor.ActorSystem import akka.testkit.{TestActorRef, TestProbe} import encry.modifiers.InstanceFactory @@ -8,7 +9,7 @@ import encry.network.BlackList.BanReason._ import encry.network.PeerConnectionHandler.{ConnectedPeer, Outgoing} import encry.network.PeerConnectionHandler.ReceivableMessages.CloseConnection import encry.network.PeersKeeper.BanPeer -import encry.settings.EncryAppSettings +import encry.settings.{EncryAppSettings, AdditionalTestSettings} import org.encryfoundation.common.network.BasicMessagesRepo.Handshake import org.scalatest.{BeforeAndAfterAll, Matchers, OneInstancePerTest, WordSpecLike} @@ -16,9 +17,9 @@ class BlackListTests extends WordSpecLike with Matchers with BeforeAndAfterAll with InstanceFactory - with OneInstancePerTest { + with OneInstancePerTest + with AdditionalTestSettings { - val settingsWithKnownPeers: EncryAppSettings = NetworkUtils.TestNetworkSettings.read("AdditionalTestSettings.conf") implicit val system: ActorSystem = ActorSystem() override def afterAll(): Unit = system.terminate() @@ -28,13 +29,13 @@ class BlackListTests extends WordSpecLike */ "Black list" should { "temporary ban requested peer correctly" in { - val blackList: BlackList = BlackList(settingsWithKnownPeers) + val blackList: BlackList = BlackList(additionalTestSettings) val peer: InetAddress = new InetSocketAddress("0.0.0.0", 9000).getAddress val newBL = blackList.banPeer(SemanticallyInvalidPersistentModifier, peer) newBL.contains(peer) shouldBe true } "clean black list from peers with expired ban time which were banned by temporary ban" in { - val blackList: BlackList = BlackList(settingsWithKnownPeers) + val blackList: BlackList = BlackList(additionalTestSettings) val peer: InetAddress = new InetSocketAddress("0.0.0.0", 9000).getAddress val newBL = blackList.banPeer(SyntacticallyInvalidPersistentModifier, peer) Thread.sleep(2000) @@ -42,7 +43,7 @@ class BlackListTests extends WordSpecLike newBL1.contains(peer) shouldBe false } "don't remove peer from black list before ban time expired" in { - val blackList: BlackList = BlackList(settingsWithKnownPeers) + val blackList: BlackList = BlackList(additionalTestSettings) val peer: InetAddress = new InetSocketAddress("0.0.0.0", 9000).getAddress val newBL = blackList.banPeer(SentInvForPayload, peer) val newBL1 = newBL.cleanupBlackList @@ -55,42 +56,42 @@ class BlackListTests extends WordSpecLike */ "Peers keeper" should { "handle ban peer message correctly" in { - val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(settingsWithKnownPeers, TestProbe().ref, TestProbe().ref)) + val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(additionalTestSettings, TestProbe().ref, TestProbe().ref)) val address: InetSocketAddress = new InetSocketAddress("0.0.0.0", 9000) val peerHandler: TestProbe = TestProbe() val connectedPeer: ConnectedPeer = ConnectedPeer( address, peerHandler.ref, Outgoing, - Handshake(protocolToBytes(settingsWithKnownPeers.network.appVersion), "test node", Some(address), System.currentTimeMillis()) + Handshake(protocolToBytes(additionalTestSettings.network.appVersion), "test node", Some(address), System.currentTimeMillis()) ) peersKeeper ! BanPeer(connectedPeer, SpamSender) peerHandler.expectMsg(CloseConnection) peersKeeper.underlyingActor.blackList.contains(address.getAddress) shouldBe true } "cleanup black list by scheduler correctly" in { - val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(settingsWithKnownPeers, TestProbe().ref, TestProbe().ref)) + val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(additionalTestSettings, TestProbe().ref, TestProbe().ref)) val address: InetSocketAddress = new InetSocketAddress("0.0.0.0", 9000) val peerHandler: TestProbe = TestProbe() val connectedPeer: ConnectedPeer = ConnectedPeer( address, peerHandler.ref, Outgoing, - Handshake(protocolToBytes(settingsWithKnownPeers.network.appVersion), "test node", Some(address), System.currentTimeMillis()) + Handshake(protocolToBytes(additionalTestSettings.network.appVersion), "test node", Some(address), System.currentTimeMillis()) ) peersKeeper ! BanPeer(connectedPeer, SentPeersMessageWithoutRequest) Thread.sleep(6000) peersKeeper.underlyingActor.blackList.contains(address.getAddress) shouldBe false } "don't remove peer from black list before ban time expired" in { - val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(settingsWithKnownPeers, TestProbe().ref, TestProbe().ref)) + val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(additionalTestSettings, TestProbe().ref, TestProbe().ref)) val address: InetSocketAddress = new InetSocketAddress("0.0.0.0", 9000) val peerHandler: TestProbe = TestProbe() val connectedPeer: ConnectedPeer = ConnectedPeer( address, peerHandler.ref, Outgoing, - Handshake(protocolToBytes(settingsWithKnownPeers.network.appVersion), "test node", Some(address), System.currentTimeMillis()) + Handshake(protocolToBytes(additionalTestSettings.network.appVersion), "test node", Some(address), System.currentTimeMillis()) ) Thread.sleep(4000) peersKeeper ! BanPeer(connectedPeer, CorruptedSerializedBytes) diff --git a/src/test/scala/encry/network/ConnectWithNewPeerTests.scala b/src/test/scala/encry/network/ConnectWithNewPeerTests.scala index 0ab616786a..bac50b5430 100644 --- a/src/test/scala/encry/network/ConnectWithNewPeerTests.scala +++ b/src/test/scala/encry/network/ConnectWithNewPeerTests.scala @@ -9,7 +9,7 @@ import encry.network.BlackList.BanReason._ import encry.network.NetworkController.ReceivableMessages.DataFromPeer import encry.network.PeerConnectionHandler.{ConnectedPeer, Incoming, Outgoing} import encry.network.PeersKeeper._ -import encry.settings.EncryAppSettings +import encry.settings.{AdditionalTestSettings, EncryAppSettings, MainTestSettings} import org.encryfoundation.common.network.BasicMessagesRepo.{Handshake, PeersNetworkMessage} import org.scalatest.{BeforeAndAfterAll, Matchers, OneInstancePerTest, WordSpecLike} @@ -17,11 +17,11 @@ class ConnectWithNewPeerTests extends WordSpecLike with Matchers with BeforeAndAfterAll with InstanceFactory - with OneInstancePerTest { + with OneInstancePerTest + with MainTestSettings + with AdditionalTestSettings { implicit val system: ActorSystem = ActorSystem() - val settingsWithKnownPeers: EncryAppSettings = NetworkUtils.TestNetworkSettings.read("AdditionalTestSettings.conf") - val settingsWithAllPeers: EncryAppSettings = NetworkUtils.TestNetworkSettings.read("MainTestSettings.conf") override def afterAll(): Unit = system.terminate() @@ -153,13 +153,13 @@ class ConnectWithNewPeerTests extends WordSpecLike "remove peer from available if it has been banned" in { val networkController = TestProbe() val nodeViewSync = TestProbe() - val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(settingsWithAllPeers, nodeViewSync.ref, TestProbe().ref)) + val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(mainTestSettings, nodeViewSync.ref, TestProbe().ref)) val availablePeers: Map[InetSocketAddress, Int] = peersKeeper.underlyingActor.knownPeers val peerHandler = TestProbe() val connectedPeer: ConnectedPeer = ConnectedPeer(availablePeers.head._1, peerHandler.ref, Outgoing, - Handshake(protocolToBytes(settingsWithAllPeers.network.appVersion), + Handshake(protocolToBytes(mainTestSettings.network.appVersion), "test-peer", Some(availablePeers.head._1), System.currentTimeMillis())) networkController.send(peersKeeper, BanPeer(connectedPeer, ExpiredNumberOfConnections)) @@ -170,18 +170,18 @@ class ConnectWithNewPeerTests extends WordSpecLike "filter peers from network message" in { val networkController = TestProbe() val nodeViewSync = TestProbe() - val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(settingsWithAllPeers, nodeViewSync.ref, TestProbe().ref)) + val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(mainTestSettings, nodeViewSync.ref, TestProbe().ref)) val availablePeers: Map[InetSocketAddress, Int] = peersKeeper.underlyingActor.knownPeers val peerHandler = TestProbe() val connectedPeer: ConnectedPeer = ConnectedPeer(availablePeers.head._1, peerHandler.ref, Outgoing, - Handshake(protocolToBytes(settingsWithAllPeers.network.appVersion), + Handshake(protocolToBytes(mainTestSettings.network.appVersion), "test-peer", Some(availablePeers.head._1), System.currentTimeMillis())) val newPeerHandler = TestProbe() val newConnectedPeer: ConnectedPeer = ConnectedPeer(availablePeers.last._1, newPeerHandler.ref, Outgoing, - Handshake(protocolToBytes(settingsWithAllPeers.network.appVersion), + Handshake(protocolToBytes(mainTestSettings.network.appVersion), "test-peer", Some(availablePeers.last._1), System.currentTimeMillis())) networkController.send(peersKeeper, BanPeer(connectedPeer, ExpiredNumberOfConnections)) @@ -199,71 +199,71 @@ class ConnectWithNewPeerTests extends WordSpecLike "handle successful connection process" in { val networkController = TestProbe() val peersSenderProbe = TestProbe() - val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(settingsWithKnownPeers, TestProbe().ref, TestProbe().ref)) - val connectedPeer: ConnectedPeer = ConnectedPeer(settingsWithAllPeers.network.knownPeers.head, peersSenderProbe.ref, Outgoing, - Handshake(protocolToBytes(settingsWithAllPeers.network.appVersion), - "test-peer", Some(settingsWithAllPeers.network.knownPeers.head), System.currentTimeMillis())) + val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(additionalTestSettings, TestProbe().ref, TestProbe().ref)) + val connectedPeer: ConnectedPeer = ConnectedPeer(mainTestSettings.network.knownPeers.head, peersSenderProbe.ref, Outgoing, + Handshake(protocolToBytes(mainTestSettings.network.appVersion), + "test-peer", Some(mainTestSettings.network.knownPeers.head), System.currentTimeMillis())) networkController.send(peersKeeper, RequestPeerForConnection) - networkController.expectMsg(PeerForConnection(settingsWithAllPeers.network.knownPeers.head)) - peersKeeper.underlyingActor.outgoingConnections.contains(settingsWithAllPeers.network.knownPeers.head) shouldBe true - peersKeeper.underlyingActor.knownPeers.contains(settingsWithAllPeers.network.knownPeers.head) shouldBe true + networkController.expectMsg(PeerForConnection(mainTestSettings.network.knownPeers.head)) + peersKeeper.underlyingActor.outgoingConnections.contains(mainTestSettings.network.knownPeers.head) shouldBe true + peersKeeper.underlyingActor.knownPeers.contains(mainTestSettings.network.knownPeers.head) shouldBe true - networkController.send(peersKeeper, VerifyConnection(settingsWithAllPeers.network.knownPeers.head, peersSenderProbe.ref)) + networkController.send(peersKeeper, VerifyConnection(mainTestSettings.network.knownPeers.head, peersSenderProbe.ref)) networkController.expectMsg( - ConnectionVerified(settingsWithAllPeers.network.knownPeers.head, peersSenderProbe.ref, Outgoing)) + ConnectionVerified(mainTestSettings.network.knownPeers.head, peersSenderProbe.ref, Outgoing)) networkController.send(peersKeeper, HandshakedDone(connectedPeer)) - peersKeeper.underlyingActor.connectedPeers.contains(settingsWithAllPeers.network.knownPeers.head) shouldBe true + peersKeeper.underlyingActor.connectedPeers.contains(mainTestSettings.network.knownPeers.head) shouldBe true } "handle stop connection process" in { val networkController = TestProbe() val peersSenderProbe = TestProbe() - val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(settingsWithKnownPeers, TestProbe().ref, TestProbe().ref)) - val connectedPeer: ConnectedPeer = ConnectedPeer(settingsWithAllPeers.network.knownPeers.head, peersSenderProbe.ref, Outgoing, - Handshake(protocolToBytes(settingsWithAllPeers.network.appVersion), - "test-peer", Some(settingsWithAllPeers.network.knownPeers.head), System.currentTimeMillis())) + val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(additionalTestSettings, TestProbe().ref, TestProbe().ref)) + val connectedPeer: ConnectedPeer = ConnectedPeer(mainTestSettings.network.knownPeers.head, peersSenderProbe.ref, Outgoing, + Handshake(protocolToBytes(mainTestSettings.network.appVersion), + "test-peer", Some(mainTestSettings.network.knownPeers.head), System.currentTimeMillis())) networkController.send(peersKeeper, RequestPeerForConnection) - networkController.expectMsg(PeerForConnection(settingsWithAllPeers.network.knownPeers.head)) - peersKeeper.underlyingActor.outgoingConnections.contains(settingsWithAllPeers.network.knownPeers.head) shouldBe true - peersKeeper.underlyingActor.knownPeers.contains(settingsWithAllPeers.network.knownPeers.head) shouldBe true + networkController.expectMsg(PeerForConnection(mainTestSettings.network.knownPeers.head)) + peersKeeper.underlyingActor.outgoingConnections.contains(mainTestSettings.network.knownPeers.head) shouldBe true + peersKeeper.underlyingActor.knownPeers.contains(mainTestSettings.network.knownPeers.head) shouldBe true - networkController.send(peersKeeper, VerifyConnection(settingsWithAllPeers.network.knownPeers.head, peersSenderProbe.ref)) + networkController.send(peersKeeper, VerifyConnection(mainTestSettings.network.knownPeers.head, peersSenderProbe.ref)) networkController.expectMsg( - ConnectionVerified(settingsWithAllPeers.network.knownPeers.head, peersSenderProbe.ref, Outgoing)) + ConnectionVerified(mainTestSettings.network.knownPeers.head, peersSenderProbe.ref, Outgoing)) networkController.send(peersKeeper, HandshakedDone(connectedPeer)) - peersKeeper.underlyingActor.connectedPeers.contains(settingsWithAllPeers.network.knownPeers.head) shouldBe true + peersKeeper.underlyingActor.connectedPeers.contains(mainTestSettings.network.knownPeers.head) shouldBe true - peersKeeper ! ConnectionStopped(settingsWithAllPeers.network.knownPeers.head) - peersKeeper.underlyingActor.connectedPeers.contains(settingsWithAllPeers.network.knownPeers.head) shouldBe false - peersKeeper.underlyingActor.knownPeers.contains(settingsWithAllPeers.network.knownPeers.head) shouldBe true + peersKeeper ! ConnectionStopped(mainTestSettings.network.knownPeers.head) + peersKeeper.underlyingActor.connectedPeers.contains(mainTestSettings.network.knownPeers.head) shouldBe false + peersKeeper.underlyingActor.knownPeers.contains(mainTestSettings.network.knownPeers.head) shouldBe true } "handle failed connection process" in { val networkController = TestProbe() val peersSenderProbe = TestProbe() - val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(settingsWithKnownPeers, TestProbe().ref, TestProbe().ref)) + val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(additionalTestSettings, TestProbe().ref, TestProbe().ref)) networkController.send(peersKeeper, RequestPeerForConnection) - networkController.expectMsg(PeerForConnection(settingsWithAllPeers.network.knownPeers.head)) - peersKeeper.underlyingActor.outgoingConnections.contains(settingsWithAllPeers.network.knownPeers.head) shouldBe true - peersKeeper.underlyingActor.knownPeers.contains(settingsWithAllPeers.network.knownPeers.head) shouldBe true + networkController.expectMsg(PeerForConnection(mainTestSettings.network.knownPeers.head)) + peersKeeper.underlyingActor.outgoingConnections.contains(mainTestSettings.network.knownPeers.head) shouldBe true + peersKeeper.underlyingActor.knownPeers.contains(mainTestSettings.network.knownPeers.head) shouldBe true - networkController.send(peersKeeper, VerifyConnection(settingsWithAllPeers.network.knownPeers.head, peersSenderProbe.ref)) + networkController.send(peersKeeper, VerifyConnection(mainTestSettings.network.knownPeers.head, peersSenderProbe.ref)) networkController.expectMsg( - ConnectionVerified(settingsWithAllPeers.network.knownPeers.head, peersSenderProbe.ref, Outgoing)) + ConnectionVerified(mainTestSettings.network.knownPeers.head, peersSenderProbe.ref, Outgoing)) - peersKeeper ! OutgoingConnectionFailed(settingsWithAllPeers.network.knownPeers.head) - peersKeeper.underlyingActor.outgoingConnections.contains(settingsWithAllPeers.network.knownPeers.head) shouldBe false - peersKeeper.underlyingActor.knownPeers.contains(settingsWithAllPeers.network.knownPeers.head) shouldBe true + peersKeeper ! OutgoingConnectionFailed(mainTestSettings.network.knownPeers.head) + peersKeeper.underlyingActor.outgoingConnections.contains(mainTestSettings.network.knownPeers.head) shouldBe false + peersKeeper.underlyingActor.knownPeers.contains(mainTestSettings.network.knownPeers.head) shouldBe true } "handle incoming connections correctly while connection with only known peers false " + "and incoming peer doesn't contains in black list and connected peers collection" in { val networkController = TestProbe() val remoteConnectionTestProbe: TestProbe = TestProbe() - val remoteAddress: InetSocketAddress = settingsWithAllPeers.network.knownPeers.head - val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(settingsWithAllPeers, TestProbe().ref, TestProbe().ref)) + val remoteAddress: InetSocketAddress = mainTestSettings.network.knownPeers.head + val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(mainTestSettings, TestProbe().ref, TestProbe().ref)) networkController.send(peersKeeper, VerifyConnection(remoteAddress, remoteConnectionTestProbe.ref)) networkController.expectMsg(ConnectionVerified(remoteAddress, remoteConnectionTestProbe.ref, Incoming)) @@ -274,9 +274,9 @@ class ConnectWithNewPeerTests extends WordSpecLike val networkController = TestProbe() val remoteConnectionTestProbe: TestProbe = TestProbe() val remoteAddress: InetSocketAddress = new InetSocketAddress("172.16.11.11", 9001) - val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(settingsWithAllPeers, TestProbe().ref, TestProbe().ref)) + val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(mainTestSettings, TestProbe().ref, TestProbe().ref)) val connectedPeer: ConnectedPeer = ConnectedPeer(remoteAddress, remoteConnectionTestProbe.ref, Incoming, - Handshake(protocolToBytes(settingsWithAllPeers.network.appVersion), + Handshake(protocolToBytes(mainTestSettings.network.appVersion), "test-peer", Some(remoteAddress), System.currentTimeMillis())) peersKeeper ! BanPeer(connectedPeer, SyntacticallyInvalidPersistentModifier) @@ -289,9 +289,9 @@ class ConnectWithNewPeerTests extends WordSpecLike val networkController = TestProbe() val remoteConnectionTestProbe: TestProbe = TestProbe() val remoteAddress: InetSocketAddress = new InetSocketAddress("172.16.11.11", 9001) - val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(settingsWithAllPeers, TestProbe().ref, TestProbe().ref)) + val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(mainTestSettings, TestProbe().ref, TestProbe().ref)) val connectedPeer: ConnectedPeer = ConnectedPeer(remoteAddress, remoteConnectionTestProbe.ref, Incoming, - Handshake(protocolToBytes(settingsWithAllPeers.network.appVersion), + Handshake(protocolToBytes(mainTestSettings.network.appVersion), "test-peer", Some(remoteAddress), System.currentTimeMillis())) peersKeeper ! HandshakedDone(connectedPeer) @@ -303,7 +303,7 @@ class ConnectWithNewPeerTests extends WordSpecLike val networkController = TestProbe() val remoteConnectionTestProbe: TestProbe = TestProbe() val remoteAddress: InetSocketAddress = new InetSocketAddress("172.16.11.11", 9001) - val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(settingsWithKnownPeers, TestProbe().ref, TestProbe().ref)) + val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(additionalTestSettings, TestProbe().ref, TestProbe().ref)) networkController.send(peersKeeper, VerifyConnection(remoteAddress, remoteConnectionTestProbe.ref)) networkController.expectNoMsg() @@ -312,7 +312,7 @@ class ConnectWithNewPeerTests extends WordSpecLike "handle incoming connections correctly while peer is equal to local address" in { val networkController = TestProbe() val remoteConnectionTestProbe: TestProbe = TestProbe() - val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(settingsWithAllPeers, TestProbe().ref, TestProbe().ref)) + val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(mainTestSettings, TestProbe().ref, TestProbe().ref)) networkController.send(peersKeeper, VerifyConnection( new InetSocketAddress("0.0.0.0", 9001), remoteConnectionTestProbe.ref)) @@ -322,13 +322,13 @@ class ConnectWithNewPeerTests extends WordSpecLike "handle outgoing connection" in { val networkController = TestProbe() val remoteConnectionTestProbe: TestProbe = TestProbe() - val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(settingsWithKnownPeers, TestProbe().ref, TestProbe().ref)) + val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(additionalTestSettings, TestProbe().ref, TestProbe().ref)) peersKeeper ! RequestPeerForConnection - peersKeeper.underlyingActor.outgoingConnections.contains(settingsWithKnownPeers.network.knownPeers.head) shouldBe true - networkController.send(peersKeeper, VerifyConnection(settingsWithKnownPeers.network.knownPeers.head, remoteConnectionTestProbe.ref)) + peersKeeper.underlyingActor.outgoingConnections.contains(additionalTestSettings.network.knownPeers.head) shouldBe true + networkController.send(peersKeeper, VerifyConnection(additionalTestSettings.network.knownPeers.head, remoteConnectionTestProbe.ref)) networkController.expectMsg( - ConnectionVerified(settingsWithKnownPeers.network.knownPeers.head, remoteConnectionTestProbe.ref, Outgoing)) + ConnectionVerified(additionalTestSettings.network.knownPeers.head, remoteConnectionTestProbe.ref, Outgoing)) } } } \ No newline at end of file diff --git a/src/test/scala/encry/network/ConnectedPeersCollectionsTests.scala b/src/test/scala/encry/network/ConnectedPeersCollectionsTests.scala index 52357ec8bc..2df94bfd22 100644 --- a/src/test/scala/encry/network/ConnectedPeersCollectionsTests.scala +++ b/src/test/scala/encry/network/ConnectedPeersCollectionsTests.scala @@ -1,6 +1,7 @@ package encry.network import java.net.InetSocketAddress + import akka.actor.ActorSystem import akka.testkit.TestProbe import encry.consensus.HistoryConsensus.{Fork, Older, Unknown, Younger} @@ -8,19 +9,18 @@ import encry.modifiers.InstanceFactory import encry.network.ConnectedPeersCollection.PeerInfo import encry.network.PeerConnectionHandler.{ConnectedPeer, Outgoing} import encry.network.PrioritiesCalculator.PeersPriorityStatus.PeersPriorityStatus._ -import encry.settings.EncryAppSettings +import encry.settings.{EncryAppSettings, AdditionalTestSettings} import org.encryfoundation.common.network.BasicMessagesRepo.Handshake import org.scalatest.{Matchers, OneInstancePerTest, WordSpecLike} class ConnectedPeersCollectionsTests extends WordSpecLike with Matchers with InstanceFactory - with OneInstancePerTest { + with OneInstancePerTest + with AdditionalTestSettings { - val settingsWithKnownPeers: EncryAppSettings = NetworkUtils.TestNetworkSettings.read("AdditionalTestSettings.conf") implicit val system: ActorSystem = ActorSystem() - "ConnectedPeersCollection" should { "initialize new peer" in { val connectedPeersCollection = ConnectedPeersCollection() @@ -31,7 +31,7 @@ class ConnectedPeersCollectionsTests extends WordSpecLike address, peerHandler.ref, Outgoing, - Handshake(protocolToBytes(settingsWithKnownPeers.network.appVersion), "test node", Some(address), System.currentTimeMillis()) + Handshake(protocolToBytes(additionalTestSettings.network.appVersion), "test node", Some(address), System.currentTimeMillis()) ) val address1: InetSocketAddress = new InetSocketAddress("0.0.0.1", 9000) @@ -40,7 +40,7 @@ class ConnectedPeersCollectionsTests extends WordSpecLike address1, peerHandler1.ref, Outgoing, - Handshake(protocolToBytes(settingsWithKnownPeers.network.appVersion), "test node 1", Some(address1), System.currentTimeMillis()) + Handshake(protocolToBytes(additionalTestSettings.network.appVersion), "test node 1", Some(address1), System.currentTimeMillis()) ) val peersSeq = Seq(connectedPeer, connectedPeer1) @@ -60,7 +60,7 @@ class ConnectedPeersCollectionsTests extends WordSpecLike address, peerHandler.ref, Outgoing, - Handshake(protocolToBytes(settingsWithKnownPeers.network.appVersion), "test node", Some(address), System.currentTimeMillis()) + Handshake(protocolToBytes(additionalTestSettings.network.appVersion), "test node", Some(address), System.currentTimeMillis()) ) val address1: InetSocketAddress = new InetSocketAddress("0.0.0.1", 9000) @@ -69,7 +69,7 @@ class ConnectedPeersCollectionsTests extends WordSpecLike address1, peerHandler1.ref, Outgoing, - Handshake(protocolToBytes(settingsWithKnownPeers.network.appVersion), "test node 1", Some(address1), System.currentTimeMillis()) + Handshake(protocolToBytes(additionalTestSettings.network.appVersion), "test node 1", Some(address1), System.currentTimeMillis()) ) val peersSeq = Seq(connectedPeer, connectedPeer1) @@ -99,7 +99,7 @@ class ConnectedPeersCollectionsTests extends WordSpecLike address, peerHandler.ref, Outgoing, - Handshake(protocolToBytes(settingsWithKnownPeers.network.appVersion), "test node", Some(address), System.currentTimeMillis()) + Handshake(protocolToBytes(additionalTestSettings.network.appVersion), "test node", Some(address), System.currentTimeMillis()) ) val address1: InetSocketAddress = new InetSocketAddress("0.0.0.1", 9000) @@ -108,7 +108,7 @@ class ConnectedPeersCollectionsTests extends WordSpecLike address1, peerHandler1.ref, Outgoing, - Handshake(protocolToBytes(settingsWithKnownPeers.network.appVersion), "test node 1", Some(address1), System.currentTimeMillis()) + Handshake(protocolToBytes(additionalTestSettings.network.appVersion), "test node 1", Some(address1), System.currentTimeMillis()) ) val address3: InetSocketAddress = new InetSocketAddress("0.3.0.0", 9000) @@ -117,7 +117,7 @@ class ConnectedPeersCollectionsTests extends WordSpecLike address3, peerHandler3.ref, Outgoing, - Handshake(protocolToBytes(settingsWithKnownPeers.network.appVersion), "test node3", Some(address3), System.currentTimeMillis()) + Handshake(protocolToBytes(additionalTestSettings.network.appVersion), "test node3", Some(address3), System.currentTimeMillis()) ) val peersSeq = Seq(connectedPeer, connectedPeer1, connectedPeer3) @@ -150,7 +150,7 @@ class ConnectedPeersCollectionsTests extends WordSpecLike address, peerHandler.ref, Outgoing, - Handshake(protocolToBytes(settingsWithKnownPeers.network.appVersion), "test node", Some(address), System.currentTimeMillis()) + Handshake(protocolToBytes(additionalTestSettings.network.appVersion), "test node", Some(address), System.currentTimeMillis()) ) val address1: InetSocketAddress = new InetSocketAddress("0.0.0.1", 9000) @@ -159,7 +159,7 @@ class ConnectedPeersCollectionsTests extends WordSpecLike address1, peerHandler1.ref, Outgoing, - Handshake(protocolToBytes(settingsWithKnownPeers.network.appVersion), "test node 1", Some(address1), System.currentTimeMillis()) + Handshake(protocolToBytes(additionalTestSettings.network.appVersion), "test node 1", Some(address1), System.currentTimeMillis()) ) val address3: InetSocketAddress = new InetSocketAddress("0.3.0.0", 9000) @@ -168,7 +168,7 @@ class ConnectedPeersCollectionsTests extends WordSpecLike address3, peerHandler3.ref, Outgoing, - Handshake(protocolToBytes(settingsWithKnownPeers.network.appVersion), "test node3", Some(address3), System.currentTimeMillis()) + Handshake(protocolToBytes(additionalTestSettings.network.appVersion), "test node3", Some(address3), System.currentTimeMillis()) ) val peersSeq = Seq(connectedPeer, connectedPeer1, connectedPeer3) diff --git a/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerPriorityTests.scala b/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerPriorityTests.scala index ceddf9cedb..799670d2ca 100644 --- a/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerPriorityTests.scala +++ b/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerPriorityTests.scala @@ -15,7 +15,7 @@ import encry.network.PeerConnectionHandler.ConnectedPeer import encry.network.PrioritiesCalculator.PeersPriorityStatus.PeersPriorityStatus import encry.network.PeersKeeper.UpdatedPeersCollection import encry.network.PrioritiesCalculator.PeersPriorityStatus.PeersPriorityStatus._ -import encry.settings.{EncryAppSettings, TestSettings} +import encry.settings.{EncryAppSettings, MainTestSettings} import org.encryfoundation.common.modifiers.history.{Block, Header, HeaderProtoSerializer} import org.encryfoundation.common.network.BasicMessagesRepo.ModifiersNetworkMessage import org.encryfoundation.common.utils.TaggedTypes.ModifierId @@ -26,7 +26,7 @@ class DeliveryManagerPriorityTests extends WordSpecLike with Matchers with InstanceFactory with OneInstancePerTest - with TestSettings { + with MainTestSettings { implicit val system: ActorSystem = ActorSystem("SynchronousTestingSpec") @@ -35,17 +35,17 @@ class DeliveryManagerPriorityTests extends WordSpecLike def initialiseState: (TestActorRef[DeliveryManager], ConnectedPeer, ConnectedPeer, ConnectedPeer, ConnectedPeer, ConnectedPeer, ConnectedPeer, ConnectedPeer, ConnectedPeer, ConnectedPeer, List[Block], List[ModifierId]) = { - val (deliveryManager, _) = initialiseDeliveryManager(isBlockChainSynced = true, isMining = true, settings) - val (_: InetSocketAddress, cp1: ConnectedPeer) = createPeer(9001, "172.16.13.10", settings) - val (_: InetSocketAddress, cp2: ConnectedPeer) = createPeer(9002, "172.16.13.11", settings) - val (_: InetSocketAddress, cp3: ConnectedPeer) = createPeer(9003, "172.16.13.12", settings) - val (_: InetSocketAddress, cp4: ConnectedPeer) = createPeer(9004, "172.16.13.13", settings) - val (_: InetSocketAddress, cp5: ConnectedPeer) = createPeer(9005, "172.16.13.14", settings) - val (_: InetSocketAddress, cp6: ConnectedPeer) = createPeer(9006, "172.16.13.15", settings) - val (_: InetSocketAddress, cp7: ConnectedPeer) = createPeer(9007, "172.16.13.16", settings) - val (_: InetSocketAddress, cp8: ConnectedPeer) = createPeer(9008, "172.16.13.17", settings) - val (_: InetSocketAddress, cp9: ConnectedPeer) = createPeer(9009, "172.16.13.18", settings) - val blocks: List[Block] = generateBlocks(10, generateDummyHistory(settings))._2 + val (deliveryManager, _) = initialiseDeliveryManager(isBlockChainSynced = true, isMining = true, mainTestSettings) + val (_: InetSocketAddress, cp1: ConnectedPeer) = createPeer(9001, "172.16.13.10", mainTestSettings) + val (_: InetSocketAddress, cp2: ConnectedPeer) = createPeer(9002, "172.16.13.11", mainTestSettings) + val (_: InetSocketAddress, cp3: ConnectedPeer) = createPeer(9003, "172.16.13.12", mainTestSettings) + val (_: InetSocketAddress, cp4: ConnectedPeer) = createPeer(9004, "172.16.13.13", mainTestSettings) + val (_: InetSocketAddress, cp5: ConnectedPeer) = createPeer(9005, "172.16.13.14", mainTestSettings) + val (_: InetSocketAddress, cp6: ConnectedPeer) = createPeer(9006, "172.16.13.15", mainTestSettings) + val (_: InetSocketAddress, cp7: ConnectedPeer) = createPeer(9007, "172.16.13.16", mainTestSettings) + val (_: InetSocketAddress, cp8: ConnectedPeer) = createPeer(9008, "172.16.13.17", mainTestSettings) + val (_: InetSocketAddress, cp9: ConnectedPeer) = createPeer(9009, "172.16.13.18", mainTestSettings) + val blocks: List[Block] = generateBlocks(10, generateDummyHistory(mainTestSettings))._2 val headersIds: List[ModifierId] = blocks.map(_.header.id) (deliveryManager, cp1, cp2, cp3, cp4, cp5, cp6,cp7, cp8, cp9, blocks, headersIds) } diff --git a/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerReRequestModifiesSpec.scala b/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerReRequestModifiesSpec.scala index a9149bb489..608fb12124 100644 --- a/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerReRequestModifiesSpec.scala +++ b/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerReRequestModifiesSpec.scala @@ -13,9 +13,9 @@ import encry.network.NetworkController.ReceivableMessages.DataFromPeer import encry.network.NodeViewSynchronizer.ReceivableMessages._ import encry.network.PeerConnectionHandler.{ConnectedPeer, Incoming} import encry.network.PeersKeeper.UpdatedPeersCollection -import encry.network.PrioritiesCalculator.PeersPriorityStatus.PeersPriorityStatus.InitialPriority import encry.network.PrioritiesCalculator.PeersPriorityStatus.PeersPriorityStatus -import encry.settings.{EncryAppSettings, Settings, TestSettings} +import encry.network.PrioritiesCalculator.PeersPriorityStatus.PeersPriorityStatus.InitialPriority +import encry.settings.MainTestSettings import encry.view.history.History import org.encryfoundation.common.modifiers.history.{Block, Header, HeaderProtoSerializer} import org.encryfoundation.common.modifiers.mempool.transaction.Transaction @@ -23,15 +23,15 @@ import org.encryfoundation.common.network.BasicMessagesRepo.{Handshake, Modifier import org.encryfoundation.common.utils.TaggedTypes.ModifierId import org.scalatest.{BeforeAndAfterAll, Matchers, OneInstancePerTest, WordSpecLike} -import scala.concurrent.duration._ import scala.collection.mutable.WrappedArray +import scala.concurrent.duration._ class DeliveryManagerReRequestModifiesSpec extends WordSpecLike with BeforeAndAfterAll with Matchers with InstanceFactory with OneInstancePerTest - with TestSettings { + with MainTestSettings { implicit val system: ActorSystem = ActorSystem("SynchronousTestingSpec") @@ -40,11 +40,11 @@ class DeliveryManagerReRequestModifiesSpec extends WordSpecLike def initialiseState(isChainSynced: Boolean = true, isMining: Boolean = true): (TestActorRef[DeliveryManager], ConnectedPeer, ConnectedPeer, ConnectedPeer, List[Block], List[ModifierId], List[WrappedArray.ofByte], History) = { val (deliveryManager, history) = - initialiseDeliveryManager(isBlockChainSynced = isChainSynced, isMining = isMining, settings) - val (_: InetSocketAddress, cp1: ConnectedPeer) = createPeer(9001, "172.16.13.10", settings) - val (_: InetSocketAddress, cp2: ConnectedPeer) = createPeer(9002, "172.16.13.11", settings) - val (_: InetSocketAddress, cp3: ConnectedPeer) = createPeer(9003, "172.16.13.12", settings) - val blocks: List[Block] = generateBlocks(10, generateDummyHistory(settings))._2 + initialiseDeliveryManager(isBlockChainSynced = isChainSynced, isMining = isMining, mainTestSettings) + val (_: InetSocketAddress, cp1: ConnectedPeer) = createPeer(9001, "172.16.13.10", mainTestSettings) + val (_: InetSocketAddress, cp2: ConnectedPeer) = createPeer(9002, "172.16.13.11", mainTestSettings) + val (_: InetSocketAddress, cp3: ConnectedPeer) = createPeer(9003, "172.16.13.12", mainTestSettings) + val blocks: List[Block] = generateBlocks(10, generateDummyHistory(mainTestSettings))._2 val headersIds: List[ModifierId] = blocks.map(_.header.id) val headersAsKey = headersIds.map(toKey) (deliveryManager, cp1, cp2, cp3, blocks, headersIds, headersAsKey, history) @@ -58,7 +58,7 @@ class DeliveryManagerReRequestModifiesSpec extends WordSpecLike val address1 = new InetSocketAddress("123.123.123.123", 9001) val handler1: TestProbe = TestProbe() val cp1: ConnectedPeer = ConnectedPeer(address1, handler1.ref, Incoming, - Handshake(protocolToBytes(settings.network.appVersion), + Handshake(protocolToBytes(mainTestSettings.network.appVersion), "123.123.123.123", Some(address1), System.currentTimeMillis())) val updatedPeersCollection: Map[InetSocketAddress, (ConnectedPeer, HistoryConsensus.Older.type, PeersPriorityStatus)] = @@ -70,7 +70,7 @@ class DeliveryManagerReRequestModifiesSpec extends WordSpecLike deliveryManager ! RequestFromLocal(cp1, Header.modifierTypeId, Seq(header)) handler1.expectMsgAllOf( - settings.network.deliveryTimeout * (settings.network.maxDeliveryChecks + 2), + mainTestSettings.network.deliveryTimeout * (mainTestSettings.network.maxDeliveryChecks + 2), RequestModifiersNetworkMessage(Header.modifierTypeId -> Seq(header)), RequestModifiersNetworkMessage(Header.modifierTypeId -> Seq(header)), RequestModifiersNetworkMessage(Header.modifierTypeId -> Seq(header)) @@ -87,7 +87,7 @@ class DeliveryManagerReRequestModifiesSpec extends WordSpecLike val address1 = new InetSocketAddress("123.123.123.123", 9001) val handler1: TestProbe = TestProbe() val cp1: ConnectedPeer = ConnectedPeer(address1, handler1.ref, Incoming, - Handshake(protocolToBytes(settings.network.appVersion), + Handshake(protocolToBytes(mainTestSettings.network.appVersion), "123.123.123.123", Some(address1), System.currentTimeMillis())) val updatedPeersCollection: Map[InetSocketAddress, (ConnectedPeer, HistoryConsensus.Older.type, PeersPriorityStatus)] = @@ -101,7 +101,7 @@ class DeliveryManagerReRequestModifiesSpec extends WordSpecLike //await one re-ask handler1.expectMsgAllOf( - settings.network.deliveryTimeout * (settings.network.maxDeliveryChecks + 2), + mainTestSettings.network.deliveryTimeout * (mainTestSettings.network.maxDeliveryChecks + 2), RequestModifiersNetworkMessage(Header.modifierTypeId -> Seq(header)), RequestModifiersNetworkMessage(Header.modifierTypeId -> Seq(header)) ) @@ -118,7 +118,7 @@ class DeliveryManagerReRequestModifiesSpec extends WordSpecLike val address1 = new InetSocketAddress("123.123.123.123", 9001) val handler1: TestProbe = TestProbe() val cp1: ConnectedPeer = ConnectedPeer(address1, handler1.ref, Incoming, - Handshake(protocolToBytes(settings.network.appVersion), + Handshake(protocolToBytes(mainTestSettings.network.appVersion), "123.123.123.123", Some(address1), System.currentTimeMillis())) val updatedPeersCollection: Map[InetSocketAddress, (ConnectedPeer, HistoryConsensus.Older.type, PeersPriorityStatus)] = @@ -152,7 +152,7 @@ class DeliveryManagerReRequestModifiesSpec extends WordSpecLike deliveryManager ! RequestFromLocal(cp1, Header.modifierTypeId, Seq(headerIds.head)) //this thread sleep is using for expecting modifier removal - Thread.sleep((settings.network.maxDeliveryChecks * settings.network.deliveryTimeout._1) * 1000) + Thread.sleep((mainTestSettings.network.maxDeliveryChecks * mainTestSettings.network.deliveryTimeout._1) * 1000) assert(deliveryManager.underlyingActor.expectedModifiers.getOrElse(cp1.socketAddress, Map.empty).isEmpty) assert(deliveryManager.underlyingActor.expectedModifiers .getOrElse(cp1.socketAddress, Map.empty) == Map.empty) @@ -164,7 +164,7 @@ class DeliveryManagerReRequestModifiesSpec extends WordSpecLike val address1 = new InetSocketAddress("123.123.123.123", 9001) val handler1: TestProbe = TestProbe() val cp1: ConnectedPeer = ConnectedPeer(address1, handler1.ref, Incoming, - Handshake(protocolToBytes(settings.network.appVersion), + Handshake(protocolToBytes(mainTestSettings.network.appVersion), "123.123.123.123", Some(address1), System.currentTimeMillis())) val updatedPeersCollection: Map[InetSocketAddress, (ConnectedPeer, HistoryConsensus.Older.type, PeersPriorityStatus)] = diff --git a/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerRequestModifiesSpec.scala b/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerRequestModifiesSpec.scala index 231b64c76b..70ab69437d 100644 --- a/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerRequestModifiesSpec.scala +++ b/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerRequestModifiesSpec.scala @@ -11,7 +11,7 @@ import encry.network.DeliveryManager import encry.network.NetworkController.ReceivableMessages.DataFromPeer import encry.network.NodeViewSynchronizer.ReceivableMessages.RequestFromLocal import encry.network.PeerConnectionHandler.{ConnectedPeer, Incoming} -import encry.settings.{EncryAppSettings, TestSettings} +import encry.settings.{EncryAppSettings, MainTestSettings} import encry.view.NodeViewHolder.DownloadRequest import org.scalatest.{BeforeAndAfterAll, Matchers, OneInstancePerTest, WordSpecLike} import encry.network.DeliveryManagerTests.DMUtils._ @@ -30,7 +30,7 @@ class DeliveryManagerRequestModifiesSpec extends WordSpecLike with BeforeAndAfte with Matchers with InstanceFactory with OneInstancePerTest - with TestSettings { + with MainTestSettings { implicit val system: ActorSystem = ActorSystem("SynchronousTestingSpec") @@ -38,11 +38,11 @@ class DeliveryManagerRequestModifiesSpec extends WordSpecLike with BeforeAndAfte def initialiseState(isChainSynced: Boolean = true, isMining: Boolean = true): (TestActorRef[DeliveryManager], ConnectedPeer, ConnectedPeer, ConnectedPeer, List[Block], List[ModifierId], List[WrappedArray.ofByte]) = { - val (deliveryManager, _) = initialiseDeliveryManager(isBlockChainSynced = isChainSynced, isMining = isMining, settings) - val (_: InetSocketAddress, cp1: ConnectedPeer) = createPeer(9001, "172.16.13.10", settings) - val (_: InetSocketAddress, cp2: ConnectedPeer) = createPeer(9002, "172.16.13.11", settings) - val (_: InetSocketAddress, cp3: ConnectedPeer) = createPeer(9003, "172.16.13.12", settings) - val blocks: List[Block] = generateBlocks(10, generateDummyHistory(settings))._2 + val (deliveryManager, _) = initialiseDeliveryManager(isBlockChainSynced = isChainSynced, isMining = isMining, mainTestSettings) + val (_: InetSocketAddress, cp1: ConnectedPeer) = createPeer(9001, "172.16.13.10", mainTestSettings) + val (_: InetSocketAddress, cp2: ConnectedPeer) = createPeer(9002, "172.16.13.11", mainTestSettings) + val (_: InetSocketAddress, cp3: ConnectedPeer) = createPeer(9003, "172.16.13.12", mainTestSettings) + val blocks: List[Block] = generateBlocks(10, generateDummyHistory(mainTestSettings))._2 val headersIds: List[ModifierId] = blocks.map(_.header.id) val headersAsKey = headersIds.map(toKey) (deliveryManager, cp1, cp2, cp3, blocks, headersIds, headersAsKey) @@ -131,19 +131,19 @@ class DeliveryManagerRequestModifiesSpec extends WordSpecLike with BeforeAndAfte val address1 = new InetSocketAddress("123.123.123.123", 9001) val handler1: TestProbe = TestProbe() val cp1: ConnectedPeer = ConnectedPeer(address1, handler1.ref, Incoming, - Handshake(protocolToBytes(settings.network.appVersion), + Handshake(protocolToBytes(mainTestSettings.network.appVersion), "123.123.123.123", Some(address1), System.currentTimeMillis())) val address2 = new InetSocketAddress("123.123.123.124", 9001) val handler2: TestProbe = TestProbe() val cp2: ConnectedPeer = ConnectedPeer(address2, handler2.ref, Incoming, - Handshake(protocolToBytes(settings.network.appVersion), + Handshake(protocolToBytes(mainTestSettings.network.appVersion), "123.123.123.124", Some(address2), System.currentTimeMillis())) val address3 = new InetSocketAddress("123.123.123.125", 9001) val handler3: TestProbe = TestProbe() val cp3: ConnectedPeer = ConnectedPeer(address3, handler3.ref, Incoming, - Handshake(protocolToBytes(settings.network.appVersion), + Handshake(protocolToBytes(mainTestSettings.network.appVersion), "123.123.123.125", Some(address3), System.currentTimeMillis())) val updatedPeersCollection: Map[InetSocketAddress, (ConnectedPeer, HistoryConsensus.Older.type, PeersPriorityStatus)] = @@ -183,13 +183,13 @@ class DeliveryManagerRequestModifiesSpec extends WordSpecLike with BeforeAndAfte val address2 = new InetSocketAddress("123.123.123.124", 9001) val handler2: TestProbe = TestProbe() val cp2: ConnectedPeer = ConnectedPeer(address2, handler2.ref, Incoming, - Handshake(protocolToBytes(settings.network.appVersion), + Handshake(protocolToBytes(mainTestSettings.network.appVersion), "123.123.123.124", Some(address2), System.currentTimeMillis())) val address3 = new InetSocketAddress("123.123.123.125", 9001) val handler3: TestProbe = TestProbe() val cp3: ConnectedPeer = ConnectedPeer(address3, handler3.ref, Incoming, - Handshake(protocolToBytes(settings.network.appVersion), + Handshake(protocolToBytes(mainTestSettings.network.appVersion), "123.123.123.125", Some(address3), System.currentTimeMillis())) val updatedPeersCollection = @@ -216,13 +216,13 @@ class DeliveryManagerRequestModifiesSpec extends WordSpecLike with BeforeAndAfte val address1 = new InetSocketAddress("123.123.123.123", 9001) val handler1: TestProbe = TestProbe() val cp1: ConnectedPeer = ConnectedPeer(address1, handler1.ref, Incoming, - Handshake(protocolToBytes(settings.network.appVersion), + Handshake(protocolToBytes(mainTestSettings.network.appVersion), "123.123.123.123", Some(address1), System.currentTimeMillis())) val address2 = new InetSocketAddress("123.123.123.124", 9001) val handler2: TestProbe = TestProbe() val cp2: ConnectedPeer = ConnectedPeer(address2, handler2.ref, Incoming, - Handshake(protocolToBytes(settings.network.appVersion), + Handshake(protocolToBytes(mainTestSettings.network.appVersion), "123.123.123.124", Some(address2), System.currentTimeMillis())) val updatedPeersCollection: Map[InetSocketAddress, (ConnectedPeer, HistoryConsensus.Older.type, PeersPriorityStatus)] = @@ -246,7 +246,7 @@ class DeliveryManagerRequestModifiesSpec extends WordSpecLike with BeforeAndAfte val address1 = new InetSocketAddress("123.123.123.123", 9001) val handler1: TestProbe = TestProbe() val cp1: ConnectedPeer = ConnectedPeer(address1, handler1.ref, Incoming, - Handshake(protocolToBytes(settings.network.appVersion), + Handshake(protocolToBytes(mainTestSettings.network.appVersion), "123.123.123.123", Some(address1), System.currentTimeMillis())) val updatedPeersCollection: Map[InetSocketAddress, (ConnectedPeer, HistoryConsensus.Older.type, PeersPriorityStatus)] = @@ -266,7 +266,7 @@ class DeliveryManagerRequestModifiesSpec extends WordSpecLike with BeforeAndAfte val address1 = new InetSocketAddress("123.123.123.123", 9001) val handler1: TestProbe = TestProbe() val cp1: ConnectedPeer = ConnectedPeer(address1, handler1.ref, Incoming, - Handshake(protocolToBytes(settings.network.appVersion), + Handshake(protocolToBytes(mainTestSettings.network.appVersion), "123.123.123.123", Some(address1), System.currentTimeMillis())) val updatedPeersCollection: Map[InetSocketAddress, (ConnectedPeer, HistoryConsensus.Older.type, PeersPriorityStatus)] = @@ -285,7 +285,7 @@ class DeliveryManagerRequestModifiesSpec extends WordSpecLike with BeforeAndAfte val address1 = new InetSocketAddress("123.123.123.123", 9001) val handler1: TestProbe = TestProbe() val cp1: ConnectedPeer = ConnectedPeer(address1, handler1.ref, Incoming, - Handshake(protocolToBytes(settings.network.appVersion), + Handshake(protocolToBytes(mainTestSettings.network.appVersion), "123.123.123.123", Some(address1), System.currentTimeMillis())) val updatedPeersCollection: Map[InetSocketAddress, (ConnectedPeer, HistoryConsensus.Older.type, PeersPriorityStatus)] = diff --git a/src/test/scala/encry/network/DownloadedModifiersValidatorTests.scala b/src/test/scala/encry/network/DownloadedModifiersValidatorTests.scala index efdc507d59..ce4a2fdb1a 100644 --- a/src/test/scala/encry/network/DownloadedModifiersValidatorTests.scala +++ b/src/test/scala/encry/network/DownloadedModifiersValidatorTests.scala @@ -1,6 +1,7 @@ package encry.network import java.net.InetSocketAddress + import akka.actor.ActorSystem import akka.testkit.{TestActorRef, TestProbe} import encry.modifiers.InstanceFactory @@ -9,7 +10,7 @@ import encry.network.DownloadedModifiersValidator.{InvalidModifier, ModifiersFor import encry.network.NodeViewSynchronizer.ReceivableMessages.UpdatedHistory import encry.network.PeerConnectionHandler.{ConnectedPeer, Outgoing} import encry.network.PeersKeeper.BanPeer -import encry.settings.EncryAppSettings +import encry.settings.{AdditionalTestSettings, EncryAppSettings, MainTestSettings} import encry.view.NodeViewHolder.ReceivableMessages.ModifierFromRemote import encry.view.history.History import org.encryfoundation.common.crypto.equihash.EquihashSolution @@ -24,11 +25,11 @@ class DownloadedModifiersValidatorTests extends WordSpecLike with Matchers with BeforeAndAfterAll with InstanceFactory - with OneInstancePerTest { + with OneInstancePerTest + with MainTestSettings + with AdditionalTestSettings { implicit val system: ActorSystem = ActorSystem() - val settingsWithKnownPeers: EncryAppSettings = NetworkUtils.TestNetworkSettings.read("AdditionalTestSettings.conf") - val settingsWithAllPeers: EncryAppSettings = NetworkUtils.TestNetworkSettings.read("MainTestSettings.conf") override def afterAll(): Unit = system.terminate() @@ -41,9 +42,9 @@ class DownloadedModifiersValidatorTests extends WordSpecLike val mempool = TestProbe() val downloadedModifiersValidator = TestActorRef[DownloadedModifiersValidator](DownloadedModifiersValidator.props( - settingsWithAllPeers.constants.ModifierIdSize, nodeViewHolder.ref, peersKeeper.ref, nodeViewSync.ref, mempool.ref, None) + mainTestSettings.constants.ModifierIdSize, nodeViewHolder.ref, peersKeeper.ref, nodeViewSync.ref, mempool.ref, None) ) - val history: History = generateDummyHistory(settingsWithAllPeers) + val history: History = generateDummyHistory(mainTestSettings) val address: InetSocketAddress = new InetSocketAddress("0.0.0.0", 9000) val peerHandler: TestProbe = TestProbe() @@ -51,7 +52,7 @@ class DownloadedModifiersValidatorTests extends WordSpecLike address, peerHandler.ref, Outgoing, - Handshake(protocolToBytes(settingsWithAllPeers.network.appVersion), "test node", Some(address), System.currentTimeMillis()) + Handshake(protocolToBytes(mainTestSettings.network.appVersion), "test node", Some(address), System.currentTimeMillis()) ) val timestamp1 = System.currentTimeMillis() @@ -65,7 +66,7 @@ class DownloadedModifiersValidatorTests extends WordSpecLike timestamp2, 2, scala.util.Random.nextLong(), - settingsWithAllPeers.constants.InitialDifficulty, + mainTestSettings.constants.InitialDifficulty, EquihashSolution(Seq(1, 3)) ) val header_second: Header = Header( @@ -75,7 +76,7 @@ class DownloadedModifiersValidatorTests extends WordSpecLike timestamp1, 1, scala.util.Random.nextLong(), - settingsWithAllPeers.constants.InitialDifficulty, + mainTestSettings.constants.InitialDifficulty, EquihashSolution(Seq(1, 3)) ) @@ -105,13 +106,13 @@ class DownloadedModifiersValidatorTests extends WordSpecLike address, peerHandler.ref, Outgoing, - Handshake(protocolToBytes(settingsWithAllPeers.network.appVersion), "test node", Some(address), System.currentTimeMillis()) + Handshake(protocolToBytes(mainTestSettings.network.appVersion), "test node", Some(address), System.currentTimeMillis()) ) val downloadedModifiersValidator = TestActorRef[DownloadedModifiersValidator](DownloadedModifiersValidator.props( - settingsWithAllPeers.constants.ModifierIdSize, nodeViewHolder.ref, peersKeeper.ref, nodeViewSync.ref, mempool.ref, None) + mainTestSettings.constants.ModifierIdSize, nodeViewHolder.ref, peersKeeper.ref, nodeViewSync.ref, mempool.ref, None) ) - val history: History = generateDummyHistory(settingsWithAllPeers) + val history: History = generateDummyHistory(mainTestSettings) val historyWith10Blocks = (0 until 10).foldLeft(history, Seq.empty[Block]) { case ((prevHistory, blocks), _) => diff --git a/src/test/scala/encry/network/NetworkUtils.scala b/src/test/scala/encry/network/NetworkUtils.scala deleted file mode 100644 index 30417c1117..0000000000 --- a/src/test/scala/encry/network/NetworkUtils.scala +++ /dev/null @@ -1,14 +0,0 @@ -package encry.network - -import com.typesafe.config.ConfigFactory -import encry.settings.{EncryAppSettings, NodeSettingsReader, SettingsReaders} -import net.ceedubs.ficus.Ficus._ -import net.ceedubs.ficus.readers.ArbitraryTypeReader._ - -object NetworkUtils { - - object TestNetworkSettings extends SettingsReaders with NodeSettingsReader { - - def read(file: String): EncryAppSettings = ConfigFactory.load(file).as[EncryAppSettings]("encry") - } -} \ No newline at end of file diff --git a/src/test/scala/encry/settings/AdditionalTestSettings.scala b/src/test/scala/encry/settings/AdditionalTestSettings.scala new file mode 100644 index 0000000000..922047a2c4 --- /dev/null +++ b/src/test/scala/encry/settings/AdditionalTestSettings.scala @@ -0,0 +1,6 @@ +package encry.settings + +trait AdditionalTestSettings { + //settings with known peers + lazy val additionalTestSettings: EncryAppSettings = EncryAppSettings.loadConfig("AdditionalTestSettings.conf") +} diff --git a/src/test/scala/encry/settings/MainTestSettings.scala b/src/test/scala/encry/settings/MainTestSettings.scala new file mode 100644 index 0000000000..2a001fe9b6 --- /dev/null +++ b/src/test/scala/encry/settings/MainTestSettings.scala @@ -0,0 +1,6 @@ +package encry.settings + +trait MainTestSettings { + //settings with all peers + lazy val mainTestSettings: EncryAppSettings = EncryAppSettings.loadConfig("MainTestSettings.conf") +} diff --git a/src/test/scala/encry/view/history/HistoryComparisionResultTest.scala b/src/test/scala/encry/view/history/HistoryComparisionResultTest.scala index f8bd25a283..b16499cecc 100644 --- a/src/test/scala/encry/view/history/HistoryComparisionResultTest.scala +++ b/src/test/scala/encry/view/history/HistoryComparisionResultTest.scala @@ -3,7 +3,7 @@ package encry.view.history import encry.consensus.HistoryConsensus._ import encry.modifiers.InstanceFactory import encry.network.DeliveryManagerTests.DMUtils.generateBlocks -import encry.settings.{EncryAppSettings, TestSettings} +import encry.settings.{EncryAppSettings, MainTestSettings} import org.encryfoundation.common.modifiers.history.Block import org.encryfoundation.common.network.SyncInfo import org.scalatest.{Matchers, OneInstancePerTest, WordSpecLike} @@ -12,12 +12,12 @@ class HistoryComparisionResultTest extends WordSpecLike with Matchers with InstanceFactory with OneInstancePerTest - with TestSettings { + with MainTestSettings { "History Reader" should { "mark history as Equal where our best header is the same as other history best header" in { - val history: History = generateDummyHistory(settings) - val blocks: List[Block] = generateBlocks(100, generateDummyHistory(settings))._2 + val history: History = generateDummyHistory(mainTestSettings) + val blocks: List[Block] = generateBlocks(100, generateDummyHistory(mainTestSettings))._2 val syncInfo: SyncInfo = SyncInfo(blocks.map(_.header.id)) val updatedHistory: History = blocks.foldLeft(history) { case (hst, block) => @@ -29,8 +29,8 @@ class HistoryComparisionResultTest extends WordSpecLike } "mark history as Older where our best header is in other history best chain, but not at the last position" in { - val history: History = generateDummyHistory(settings) - val blocks: List[Block] = generateBlocks(100, generateDummyHistory(settings))._2 + val history: History = generateDummyHistory(mainTestSettings) + val blocks: List[Block] = generateBlocks(100, generateDummyHistory(mainTestSettings))._2 val syncInfo: SyncInfo = SyncInfo(blocks.map(_.header.id)) val updatedHistory: History = blocks.take(50).foldLeft(history) { case (hst, block) => @@ -42,8 +42,8 @@ class HistoryComparisionResultTest extends WordSpecLike } "mark history as Younger when comparing history is empty" in { - val history: History = generateDummyHistory(settings) - val blocks: List[Block] = generateBlocks(100, generateDummyHistory(settings))._2 + val history: History = generateDummyHistory(mainTestSettings) + val blocks: List[Block] = generateBlocks(100, generateDummyHistory(mainTestSettings))._2 val syncInfo: SyncInfo = SyncInfo(Seq.empty) val updatedHistory: History = blocks.foldLeft(history) { case (hst, block) => @@ -56,8 +56,8 @@ class HistoryComparisionResultTest extends WordSpecLike "mark history as Younger when our history contains all other history but other history " + "doesn't contain our last 70 headers" in { - val history: History = generateDummyHistory(settings) - val blocks: List[Block] = generateBlocks(100, generateDummyHistory(settings))._2 + val history: History = generateDummyHistory(mainTestSettings) + val blocks: List[Block] = generateBlocks(100, generateDummyHistory(mainTestSettings))._2 val syncInfo: SyncInfo = SyncInfo(blocks.take(30).map(_.header.id)) val updatedHistory: History = blocks.foldLeft(history) { case (hst, block) => @@ -69,9 +69,9 @@ class HistoryComparisionResultTest extends WordSpecLike } "mark history as Fork when we have same point in histories" in { - val history: History = generateDummyHistory(settings) + val history: History = generateDummyHistory(mainTestSettings) - val fork = genForkOn(100, 1000, 25, 30, settings) + val fork = genForkOn(100, 1000, 25, 30, mainTestSettings) val syncInfo: SyncInfo = SyncInfo( fork._1.take(25).map(_.header.id) ++: fork._2.map(_.header.id) @@ -86,7 +86,7 @@ class HistoryComparisionResultTest extends WordSpecLike } "mark history as Equal where both nodes do not keep any blocks" in { - val history: History = generateDummyHistory(settings) + val history: History = generateDummyHistory(mainTestSettings) val syncInfo: SyncInfo = SyncInfo(Seq.empty) val comparisonResult = history.compare(syncInfo) @@ -94,9 +94,9 @@ class HistoryComparisionResultTest extends WordSpecLike } "mark history as Older " in { - val history: History = generateDummyHistory(settings) + val history: History = generateDummyHistory(mainTestSettings) val syncInfo: SyncInfo = SyncInfo( - generateBlocks(30, generateDummyHistory(settings))._2.map(_.header.id)) + generateBlocks(30, generateDummyHistory(mainTestSettings))._2.map(_.header.id)) val comparisonResult = history.compare(syncInfo) assert(comparisonResult == Older) diff --git a/src/test/scala/encry/view/history/ModifiersValidationTest.scala b/src/test/scala/encry/view/history/ModifiersValidationTest.scala index 875391df35..3f24b8b191 100644 --- a/src/test/scala/encry/view/history/ModifiersValidationTest.scala +++ b/src/test/scala/encry/view/history/ModifiersValidationTest.scala @@ -2,7 +2,7 @@ package encry.view.history import encry.modifiers.InstanceFactory import encry.network.DeliveryManagerTests.DMUtils.generateBlocks -import encry.settings.{EncryAppSettings, TestSettings} +import encry.settings.{EncryAppSettings, MainTestSettings} import org.encryfoundation.common.modifiers.history.Block import org.scalatest.{Matchers, OneInstancePerTest, WordSpecLike} @@ -10,11 +10,11 @@ class ModifiersValidationTest extends WordSpecLike with Matchers with InstanceFactory with OneInstancePerTest - with TestSettings { + with MainTestSettings { "Modifiers validator" should { "validate genesis block" in { - val newHistory: History = generateDummyHistory(settings) + val newHistory: History = generateDummyHistory(mainTestSettings) val genesisBlock: Block = generateGenesisBlock newHistory.testApplicable(genesisBlock.header).isRight shouldBe true val updatedHistory: History = @@ -22,8 +22,8 @@ class ModifiersValidationTest extends WordSpecLike updatedHistory.testApplicable(genesisBlock.payload).isRight shouldBe true } "reject incorrect modifiers" in { - val blocks: List[Block] = generateBlocks(2, generateDummyHistory(settings))._2 - val newHistory: History = generateDummyHistory(settings) + val blocks: List[Block] = generateBlocks(2, generateDummyHistory(mainTestSettings))._2 + val newHistory: History = generateDummyHistory(mainTestSettings) blocks.take(1).foldLeft(newHistory) { case (history, block) => history.testApplicable(block.header).isRight shouldBe true history.append(block.header).right.get._1.reportModifierIsValid(block.header) diff --git a/src/test/scala/encry/view/mempool/MemoryPoolTests.scala b/src/test/scala/encry/view/mempool/MemoryPoolTests.scala index 6db0407bb5..ba079c65a3 100644 --- a/src/test/scala/encry/view/mempool/MemoryPoolTests.scala +++ b/src/test/scala/encry/view/mempool/MemoryPoolTests.scala @@ -4,7 +4,7 @@ import akka.actor.ActorSystem import akka.testkit.{TestActorRef, TestProbe} import com.typesafe.scalalogging.StrictLogging import encry.modifiers.InstanceFactory -import encry.settings.{EncryAppSettings, TestSettings} +import encry.settings.{EncryAppSettings, MainTestSettings} import encry.utils.NetworkTimeProvider import encry.view.mempool.MemoryPool.{NewTransaction, TransactionsForMiner} import org.scalatest.{BeforeAndAfterAll, Matchers, OneInstancePerTest, WordSpecLike} @@ -16,25 +16,25 @@ class MemoryPoolTests extends WordSpecLike with InstanceFactory with BeforeAndAfterAll with OneInstancePerTest - with TestSettings + with MainTestSettings with StrictLogging { implicit val system: ActorSystem = ActorSystem() override def afterAll(): Unit = system.terminate() - val timeProvider: NetworkTimeProvider = new NetworkTimeProvider(settings.ntp) + val timeProvider: NetworkTimeProvider = new NetworkTimeProvider(mainTestSettings.ntp) "MemoryPool" should { "add new unique transactions" in { - val mempool = MemoryPoolStorage.empty(settings, timeProvider) + val mempool = MemoryPoolStorage.empty(mainTestSettings, timeProvider) val transactions = genValidPaymentTxs(10) val (newMempool, validTxs) = mempool.validateTransactions(transactions) newMempool.size shouldBe 10 validTxs.map(_.encodedId).forall(transactions.map(_.encodedId).contains) shouldBe true } "reject not unique transactions" in { - val mempool = MemoryPoolStorage.empty(settings, timeProvider) + val mempool = MemoryPoolStorage.empty(mainTestSettings, timeProvider) val transactions = genValidPaymentTxs(10) val (newMempool, validTxs) = mempool.validateTransactions(transactions) val (newMempoolAgain, validTxsAgain) = newMempool.validateTransactions(validTxs) @@ -42,14 +42,14 @@ class MemoryPoolTests extends WordSpecLike validTxsAgain.size shouldBe 0 } "mempoolMaxCapacity works correct" in { - val mempool = MemoryPoolStorage.empty(settings, timeProvider) + val mempool = MemoryPoolStorage.empty(mainTestSettings, timeProvider) val transactions = genValidPaymentTxs(11) val (newMempool, validTxs) = mempool.validateTransactions(transactions) newMempool.size shouldBe 10 validTxs.size shouldBe 10 } "getTransactionsForMiner works fine" in { - val mempool = MemoryPoolStorage.empty(settings, timeProvider) + val mempool = MemoryPoolStorage.empty(mainTestSettings, timeProvider) val transactions = genValidPaymentTxs(10) val (newMempool, validTxs) = mempool.validateTransactions(transactions) val (uPool, txs) = newMempool.getTransactionsForMiner @@ -62,7 +62,7 @@ class MemoryPoolTests extends WordSpecLike "send transactions to miner" in { val miner = TestProbe() val mempool: TestActorRef[MemoryPool] = TestActorRef[MemoryPool]( - MemoryPool.props(settings, timeProvider, miner.ref, Some(TestProbe().ref))) + MemoryPool.props(mainTestSettings, timeProvider, miner.ref, Some(TestProbe().ref))) val transactions = genValidPaymentTxs(4) transactions.foreach(mempool ! NewTransaction(_)) mempool.underlyingActor.memoryPool.size shouldBe 4 From b27c8562b0accf7b3413e0e46716aa5b435e35e9 Mon Sep 17 00:00:00 2001 From: capdev Date: Tue, 10 Sep 2019 12:27:49 +0500 Subject: [PATCH 40/51] remove unused constants --- src/main/scala/encry/settings/TestConstants.scala | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/main/scala/encry/settings/TestConstants.scala b/src/main/scala/encry/settings/TestConstants.scala index a0b7481cfa..d70415aa37 100644 --- a/src/main/scala/encry/settings/TestConstants.scala +++ b/src/main/scala/encry/settings/TestConstants.scala @@ -7,10 +7,6 @@ import scala.concurrent.duration._ case object TestConstants extends Constants { - val StateRootSize: Int = 33 - - val TransactionsRootSize: Int = 32 - val DigestLength: Int = 32 val ModifierIdSize: Int = DigestLength From eeeb2d2e8024d8b1cdaf3305d3ca6e4a6c20d9cf Mon Sep 17 00:00:00 2001 From: capdev Date: Tue, 10 Sep 2019 13:20:50 +0500 Subject: [PATCH 41/51] more refactoring cleanup --- it/src/main/scala/encry/it/docker/Node.scala | 2 +- .../test/scala/encry/it/MinerWalletBalanceTest.scala | 5 +++-- .../it/transactions/AssetTokenTransactionTest.scala | 5 +++-- ...cessingTransferTransactionWithEncryCoinsTest.scala | 8 +++++--- src/main/scala/encry/view/history/HistoryApi.scala | 4 ++-- .../view/history/HistoryModifiersValidator.scala | 2 +- .../encry/consensus/PowLinearControllerSpec.scala | 6 +++--- .../emission/EncrySupplyControllerTest.scala | 4 ++-- src/test/scala/encry/modifiers/InstanceFactory.scala | 11 +++++------ .../encry/modifiers/history/BlockSerializerTest.scala | 7 +++---- src/test/scala/encry/utils/EncryGenerator.scala | 4 ++-- .../encry/view/history/ModifiersValidationTest.scala | 2 +- src/test/scala/encry/view/nvh/NVHUtils.scala | 1 - 13 files changed, 31 insertions(+), 30 deletions(-) diff --git a/it/src/main/scala/encry/it/docker/Node.scala b/it/src/main/scala/encry/it/docker/Node.scala index 7a14a30b77..02d8402a43 100644 --- a/it/src/main/scala/encry/it/docker/Node.scala +++ b/it/src/main/scala/encry/it/docker/Node.scala @@ -6,7 +6,7 @@ import com.typesafe.config.Config import com.typesafe.scalalogging.StrictLogging import encry.it.api.HttpApi import encry.it.util.KeyHelper.createPrivKey -import encry.settings.{EncryAppSettings, Settings} +import encry.settings.Settings import org.asynchttpclient._ import org.encryfoundation.common.crypto.{PrivateKey25519, PublicKey25519} diff --git a/it/src/test/scala/encry/it/MinerWalletBalanceTest.scala b/it/src/test/scala/encry/it/MinerWalletBalanceTest.scala index 5e558ec444..78a34c000e 100644 --- a/it/src/test/scala/encry/it/MinerWalletBalanceTest.scala +++ b/it/src/test/scala/encry/it/MinerWalletBalanceTest.scala @@ -4,14 +4,15 @@ import com.typesafe.config.Config import encry.consensus.EncrySupplyController import encry.it.configs.Configs import encry.it.docker.NodesFromDocker +import encry.settings.ConstantsSettings import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.Height import org.scalatest.{AsyncFunSuite, Matchers} -import encry.EncryApp.settings.constants + import scala.concurrent.Await import scala.concurrent.duration._ -class MinerWalletBalanceTest extends AsyncFunSuite with Matchers with NodesFromDocker { +class MinerWalletBalanceTest extends AsyncFunSuite with Matchers with NodesFromDocker with ConstantsSettings { override protected def nodeConfigs: Seq[Config] = Seq(Configs.mining(true) .withFallback(Configs.offlineGeneration(true)) diff --git a/it/src/test/scala/encry/it/transactions/AssetTokenTransactionTest.scala b/it/src/test/scala/encry/it/transactions/AssetTokenTransactionTest.scala index 13d9750e90..ae8172c1c7 100644 --- a/it/src/test/scala/encry/it/transactions/AssetTokenTransactionTest.scala +++ b/it/src/test/scala/encry/it/transactions/AssetTokenTransactionTest.scala @@ -7,6 +7,7 @@ import encry.consensus.EncrySupplyController import encry.it.configs.Configs import encry.it.docker.NodesFromDocker import encry.it.util.KeyHelper._ +import encry.settings.ConstantsSettings import org.encryfoundation.common.crypto.{PrivateKey25519, PublicKey25519} import org.encryfoundation.common.modifiers.history.Block import org.encryfoundation.common.modifiers.mempool.transaction.EncryAddress.Address @@ -15,7 +16,6 @@ import org.encryfoundation.common.modifiers.state.box.TokenIssuingBox.TokenId import org.encryfoundation.common.modifiers.state.box.{AssetBox, EncryBaseBox, TokenIssuingBox} import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.Height -import encry.EncryApp.settings.constants import org.scalatest.concurrent.ScalaFutures import org.scalatest.{AsyncFunSuite, Matchers} import scorex.crypto.signatures.Curve25519 @@ -28,7 +28,8 @@ class AssetTokenTransactionTest extends AsyncFunSuite with Matchers with ScalaFutures with StrictLogging - with NodesFromDocker { + with NodesFromDocker + with ConstantsSettings { override protected def nodeConfigs: Seq[Config] = Seq(Configs.mining(true) .withFallback(Configs.offlineGeneration(true)) diff --git a/it/src/test/scala/encry/it/transactions/ProcessingTransferTransactionWithEncryCoinsTest.scala b/it/src/test/scala/encry/it/transactions/ProcessingTransferTransactionWithEncryCoinsTest.scala index a3fbe04a7f..e4ac6b0675 100644 --- a/it/src/test/scala/encry/it/transactions/ProcessingTransferTransactionWithEncryCoinsTest.scala +++ b/it/src/test/scala/encry/it/transactions/ProcessingTransferTransactionWithEncryCoinsTest.scala @@ -7,6 +7,7 @@ import encry.consensus.EncrySupplyController import encry.it.configs.Configs import encry.it.docker.NodesFromDocker import encry.it.util.KeyHelper._ +import encry.settings.ConstantsSettings import org.encryfoundation.common.crypto.{PrivateKey25519, PublicKey25519} import org.encryfoundation.common.modifiers.history.Block import org.encryfoundation.common.modifiers.mempool.transaction.EncryAddress.Address @@ -18,15 +19,16 @@ import org.scalatest.concurrent.ScalaFutures import org.scalatest.{AsyncFunSuite, Matchers} import scorex.crypto.signatures.Curve25519 import scorex.utils.Random -import encry.EncryApp.settings.constants -import scala.concurrent.{Await, Future} + import scala.concurrent.duration._ +import scala.concurrent.{Await, Future} class ProcessingTransferTransactionWithEncryCoinsTest extends AsyncFunSuite with Matchers with ScalaFutures with StrictLogging - with NodesFromDocker { + with NodesFromDocker + with ConstantsSettings { override protected def nodeConfigs: Seq[Config] = Seq(Configs.mining(true) .withFallback(Configs.offlineGeneration(true)) diff --git a/src/main/scala/encry/view/history/HistoryApi.scala b/src/main/scala/encry/view/history/HistoryApi.scala index c13bf06400..f0d40ed715 100644 --- a/src/main/scala/encry/view/history/HistoryApi.scala +++ b/src/main/scala/encry/view/history/HistoryApi.scala @@ -4,11 +4,11 @@ import cats.syntax.option._ import encry.consensus.HistoryConsensus._ import encry.consensus._ import encry.modifiers.history._ -import encry.settings.{ConstantsSettings, EncryAppSettings, Settings} +import encry.settings.Settings import encry.utils.NetworkTimeProvider import encry.view.history.ValidationError.HistoryApiError import io.iohk.iodb.ByteArrayWrapper -import org.encryfoundation.common.modifiers.history.{Block, BlockProtoSerializer, Header, HeaderProtoSerializer, Payload} +import org.encryfoundation.common.modifiers.history._ import org.encryfoundation.common.network.SyncInfo import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.{Difficulty, Height, ModifierId, ModifierTypeId} diff --git a/src/main/scala/encry/view/history/HistoryModifiersValidator.scala b/src/main/scala/encry/view/history/HistoryModifiersValidator.scala index 1183feed3e..de320f9863 100644 --- a/src/main/scala/encry/view/history/HistoryModifiersValidator.scala +++ b/src/main/scala/encry/view/history/HistoryModifiersValidator.scala @@ -7,7 +7,7 @@ import org.encryfoundation.common.modifiers.history.{Header, Payload} import org.encryfoundation.common.validation.ModifierSemanticValidity import cats.syntax.either._ import encry.consensus.EquihashPowScheme -import encry.settings.{ConstantsSettings} +import encry.settings.ConstantsSettings import org.encryfoundation.common.utils.TaggedTypes.{Difficulty, ModifierId} trait HistoryModifiersValidator extends HistoryApi with ConstantsSettings { diff --git a/src/test/scala/encry/consensus/PowLinearControllerSpec.scala b/src/test/scala/encry/consensus/PowLinearControllerSpec.scala index 5dd0ac90d7..58d0054e16 100644 --- a/src/test/scala/encry/consensus/PowLinearControllerSpec.scala +++ b/src/test/scala/encry/consensus/PowLinearControllerSpec.scala @@ -1,12 +1,12 @@ package encry.consensus -import encry.EncryApp.settings.constants +import encry.settings.ConstantsSettings import org.encryfoundation.common.utils.TaggedTypes.Height import org.scalatest.{Matchers, PropSpec} -import encry.EncryApp.settings.constants + import scala.collection.immutable -class PowLinearControllerSpec extends PropSpec with Matchers { +class PowLinearControllerSpec extends PropSpec with Matchers with ConstantsSettings { property("getHeightsForRetargetingAt()") { diff --git a/src/test/scala/encry/consensus/emission/EncrySupplyControllerTest.scala b/src/test/scala/encry/consensus/emission/EncrySupplyControllerTest.scala index 152611c30d..aa69e4ac87 100644 --- a/src/test/scala/encry/consensus/emission/EncrySupplyControllerTest.scala +++ b/src/test/scala/encry/consensus/emission/EncrySupplyControllerTest.scala @@ -1,14 +1,14 @@ package encry.consensus.emission import encry.consensus.EncrySupplyController +import encry.settings.ConstantsSettings import encry.utils.EncryGenerator import org.encryfoundation.common.utils.TaggedTypes.Height import org.scalatest.{Matchers, PropSpec} -import encry.EncryApp.settings.constants import scala.concurrent.duration._ -class EncrySupplyControllerTest extends PropSpec with Matchers with EncryGenerator { +class EncrySupplyControllerTest extends PropSpec with Matchers with EncryGenerator with ConstantsSettings { val epochLen = 10 diff --git a/src/test/scala/encry/modifiers/InstanceFactory.scala b/src/test/scala/encry/modifiers/InstanceFactory.scala index 0c3e74e63f..de18a1d642 100755 --- a/src/test/scala/encry/modifiers/InstanceFactory.scala +++ b/src/test/scala/encry/modifiers/InstanceFactory.scala @@ -21,7 +21,6 @@ import org.encryfoundation.prismlang.core.{Ast, Types} import org.iq80.leveldb.Options import scorex.crypto.hash.Digest32 import scorex.utils.Random -import encry.EncryApp.settings.constants import scala.util.{Random => Scarand} @@ -47,12 +46,12 @@ trait InstanceFactory extends Keys with EncryGenerator { publicKey.address.address, genHelper.Props.txAmount) } - def generateGenesisBlock: Block = { + def generateGenesisBlock(genesisHeight: Height): Block = { val txs: Seq[Transaction] = Seq(coinbaseTransaction) val txsRoot: Digest32 = Payload.rootHash(txs.map(_.id)) val header = genHeader.copy( parentId = Header.GenesisParentId, - height = constants.GenesisHeight, + height = genesisHeight, transactionsRoot = txsRoot ) Block(header, Payload(header.id, Seq(coinbaseTransaction))) @@ -124,11 +123,11 @@ trait InstanceFactory extends Keys with EncryGenerator { lazy val UnsignedInput: Input = Input(ADKey @@ Random.randomBytes(), Left(Contract), List.empty) - def generateFakeChain(blocksQty: Int): Seq[Block] = { + def generateFakeChain(blocksQty: Int, genesisHeight: Height): Seq[Block] = { val srand = new Scarand() (0 until blocksQty).foldLeft(Seq.empty[Block], Seq.empty[AssetBox]) { case ((fakeBlockchain, utxo), blockHeight) => - val block = if (fakeBlockchain.isEmpty) generateGenesisBlock else { + val block = if (fakeBlockchain.isEmpty) generateGenesisBlock(genesisHeight) else { val addr = randomAddress val txs = utxo.map(box => genValidPaymentTxToAddrWithSpentBoxes(IndexedSeq(box), addr)) ++ @@ -152,7 +151,7 @@ trait InstanceFactory extends Keys with EncryGenerator { prevId.getOrElse(history.getBestHeader.map(_.id).getOrElse(Header.GenesisParentId)) val requiredDifficulty: Difficulty = history.getBestHeader.map(parent => history.requiredDifficultyAfter(parent).getOrElse(Difficulty @@ BigInt(0))) - .getOrElse(constants.InitialDifficulty) + .getOrElse(history.settings.constants.InitialDifficulty) val txs = (if (txsQty != 0) genValidPaymentTxs(Scarand.nextInt(txsQty)) else Seq.empty) ++ Seq(coinbaseTransaction) val header = genHeader.copy( diff --git a/src/test/scala/encry/modifiers/history/BlockSerializerTest.scala b/src/test/scala/encry/modifiers/history/BlockSerializerTest.scala index cbbe9e5db3..834d52eede 100755 --- a/src/test/scala/encry/modifiers/history/BlockSerializerTest.scala +++ b/src/test/scala/encry/modifiers/history/BlockSerializerTest.scala @@ -1,18 +1,17 @@ package encry.modifiers.history import encry.modifiers.mempool.TransactionFactory +import encry.settings.ConstantsSettings import encry.utils.{EncryGenerator, TestHelper} import org.encryfoundation.common.crypto.equihash.EquihashSolution import org.encryfoundation.common.modifiers.history._ import org.encryfoundation.common.utils.Algos -import org.encryfoundation.common.utils.TaggedTypes.{ADDigest, ModifierId} -import encry.EncryApp.settings.constants +import org.encryfoundation.common.utils.TaggedTypes.ModifierId import org.scalatest.FunSuite import scorex.crypto.hash.Digest32 import scorex.utils.Random -import encry.EncryApp.settings.constants -class BlockSerializerTest extends FunSuite with EncryGenerator { +class BlockSerializerTest extends FunSuite with EncryGenerator with ConstantsSettings { test("testToBytes $ testFromBytes") { diff --git a/src/test/scala/encry/utils/EncryGenerator.scala b/src/test/scala/encry/utils/EncryGenerator.scala index 173787d459..abb16d904f 100644 --- a/src/test/scala/encry/utils/EncryGenerator.scala +++ b/src/test/scala/encry/utils/EncryGenerator.scala @@ -1,7 +1,7 @@ package encry.utils import encry.modifiers.mempool.TransactionFactory -import encry.EncryApp.settings.constants +import encry.settings.ConstantsSettings import encry.utils.TestHelper.Props import org.encryfoundation.common.crypto.equihash.EquihashSolution import org.encryfoundation.common.crypto.{PrivateKey25519, PublicKey25519, Signature25519} @@ -19,7 +19,7 @@ import scorex.utils.Random import scala.util.{Random => ScRand} -trait EncryGenerator { +trait EncryGenerator extends ConstantsSettings { val mnemonicKey: String = "index another island accuse valid aerobic little absurd bunker keep insect scissors" val privKey: PrivateKey25519 = createPrivKey(Some(mnemonicKey)) diff --git a/src/test/scala/encry/view/history/ModifiersValidationTest.scala b/src/test/scala/encry/view/history/ModifiersValidationTest.scala index 3f24b8b191..20cd15d53d 100644 --- a/src/test/scala/encry/view/history/ModifiersValidationTest.scala +++ b/src/test/scala/encry/view/history/ModifiersValidationTest.scala @@ -15,7 +15,7 @@ class ModifiersValidationTest extends WordSpecLike "Modifiers validator" should { "validate genesis block" in { val newHistory: History = generateDummyHistory(mainTestSettings) - val genesisBlock: Block = generateGenesisBlock + val genesisBlock: Block = generateGenesisBlock(mainTestSettings.constants.GenesisHeight) newHistory.testApplicable(genesisBlock.header).isRight shouldBe true val updatedHistory: History = newHistory.append(genesisBlock.header).right.get._1.reportModifierIsValid(genesisBlock.header) diff --git a/src/test/scala/encry/view/nvh/NVHUtils.scala b/src/test/scala/encry/view/nvh/NVHUtils.scala index 97204e38d9..b32063c261 100644 --- a/src/test/scala/encry/view/nvh/NVHUtils.scala +++ b/src/test/scala/encry/view/nvh/NVHUtils.scala @@ -2,7 +2,6 @@ package encry.view.nvh import akka.actor.ActorSystem import akka.testkit.{TestActor, TestActorRef, TestProbe} -import encry.EncryApp.settings import encry.settings.EncryAppSettings import encry.utils.NetworkTimeProvider From 71bcca3c75e6d1d1e83dd190a7d30c8ce7419898 Mon Sep 17 00:00:00 2001 From: capdev Date: Tue, 10 Sep 2019 15:32:49 +0500 Subject: [PATCH 42/51] fix args --- src/main/scala/encry/EncryApp.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/scala/encry/EncryApp.scala b/src/main/scala/encry/EncryApp.scala index 529712dc39..20b67d3856 100644 --- a/src/main/scala/encry/EncryApp.scala +++ b/src/main/scala/encry/EncryApp.scala @@ -37,7 +37,7 @@ object EncryApp extends App with StrictLogging { implicit val ec: ExecutionContextExecutor = system.dispatcher implicit val materializer: ActorMaterializer = ActorMaterializer() - lazy val settings: EncryAppSettings = EncryAppSettings.read(if(Option(args).nonEmpty) Option(args).get.headOption else None) + lazy val settings: EncryAppSettings = EncryAppSettings.read(args.headOption) val timeProvider: NetworkTimeProvider = new NetworkTimeProvider(settings.ntp) val swaggerConfig: String = Source.fromResource("api/openapi.yaml").getLines.mkString("\n") From 25e41b04ade0a72f856dbdaf66b160771069e119 Mon Sep 17 00:00:00 2001 From: capdev Date: Tue, 10 Sep 2019 15:57:07 +0500 Subject: [PATCH 43/51] benchmark mix settings --- .../src/main/scala/encryBenchmark/Settings.scala | 4 ++++ .../test/scala/benches/BloomFilterBenchmark.scala | 4 +--- .../src/test/scala/benches/HistoryBenches.scala | 9 +++------ .../SerializedAssetTransactionBenchmark.scala | 6 ++---- .../scala/benches/SerializedDataTxBenchmark.scala | 6 ++---- .../benches/SerializedMonetaryTxBenchmark.scala | 6 ++---- benchmarks/src/test/scala/benches/StateBenches.scala | 9 +++------ .../src/test/scala/benches/StateRollbackBench.scala | 11 +++-------- benchmarks/src/test/scala/benches/Utils.scala | 12 +++++------- 9 files changed, 25 insertions(+), 42 deletions(-) diff --git a/benchmarks/src/main/scala/encryBenchmark/Settings.scala b/benchmarks/src/main/scala/encryBenchmark/Settings.scala index 5051c406c6..f8bd066eb7 100644 --- a/benchmarks/src/main/scala/encryBenchmark/Settings.scala +++ b/benchmarks/src/main/scala/encryBenchmark/Settings.scala @@ -11,6 +11,10 @@ case class Settings(serializedAssetBenchSettings: SerializedAssetBenchSettings, stateBenchSettings: StateBenchSettings, historyBenchSettings: HistoryBenchSettings) +trait BenchSettings { + lazy val benchSettings: Settings = Settings.read +} + object Settings { val configPath = "encry.benchmark" val read: Settings = ConfigFactory.load("application.conf").as[Settings](configPath) diff --git a/benchmarks/src/test/scala/benches/BloomFilterBenchmark.scala b/benchmarks/src/test/scala/benches/BloomFilterBenchmark.scala index 32ce6318c2..63ee346499 100644 --- a/benchmarks/src/test/scala/benches/BloomFilterBenchmark.scala +++ b/benchmarks/src/test/scala/benches/BloomFilterBenchmark.scala @@ -43,9 +43,7 @@ // } //} // -//object BloomFilterBenchmark { -// -// val benchSettings: Settings = Settings.read +//object BloomFilterBenchmark extends BenchSettings { // // @throws[RunnerException] // def main(args: Array[String]): Unit = { diff --git a/benchmarks/src/test/scala/benches/HistoryBenches.scala b/benchmarks/src/test/scala/benches/HistoryBenches.scala index 3e96cdcd41..2a37321d45 100644 --- a/benchmarks/src/test/scala/benches/HistoryBenches.scala +++ b/benchmarks/src/test/scala/benches/HistoryBenches.scala @@ -8,7 +8,7 @@ import benches.Utils.{generateHistory, generateNextBlockValidForHistory, getRand import encry.EncryApp import encry.settings.EncryAppSettings import encry.view.history.History -import encryBenchmark.Settings +import encryBenchmark.{BenchSettings, Settings} import org.encryfoundation.common.modifiers.history.Block import org.encryfoundation.common.modifiers.mempool.transaction.Transaction import org.openjdk.jmh.annotations._ @@ -39,9 +39,7 @@ class HistoryBenches { } } -object HistoryBenches { - - val benchSettings: Settings = Settings.read +object HistoryBenches extends BenchSettings { @throws[RunnerException] def main(args: Array[String]): Unit = { @@ -62,9 +60,8 @@ object HistoryBenches { } @State(Scope.Benchmark) - class HistoryBenchState { + class HistoryBenchState extends encry.settings.Settings { - val settings: EncryAppSettings = EncryApp.settings val tmpDir: File = getRandomTempDir val initialHistory: History = generateHistory(settings, tmpDir) diff --git a/benchmarks/src/test/scala/benches/SerializedAssetTransactionBenchmark.scala b/benchmarks/src/test/scala/benches/SerializedAssetTransactionBenchmark.scala index 9f5111100b..df3e1047db 100644 --- a/benchmarks/src/test/scala/benches/SerializedAssetTransactionBenchmark.scala +++ b/benchmarks/src/test/scala/benches/SerializedAssetTransactionBenchmark.scala @@ -4,7 +4,7 @@ import java.util.concurrent.TimeUnit import benches.SerializedAssetTransactionBenchmark.SerializedAssetBenchState import benches.Utils._ -import encryBenchmark.Settings +import encryBenchmark.{BenchSettings, Settings} import org.encryfoundation.common.modifiers.mempool.transaction.{Transaction, TransactionSerializer} import org.encryfoundation.common.modifiers.state.box.AssetBox import org.openjdk.jmh.annotations._ @@ -24,9 +24,7 @@ class SerializedAssetTransactionBenchmark { bh.consume(stateBench.initialTransactions.map(tx => tx.bytes)) } -object SerializedAssetTransactionBenchmark { - - val benchSettings: Settings = Settings.read +object SerializedAssetTransactionBenchmark extends BenchSettings { @throws[RunnerException] def main(args: Array[String]): Unit = { diff --git a/benchmarks/src/test/scala/benches/SerializedDataTxBenchmark.scala b/benchmarks/src/test/scala/benches/SerializedDataTxBenchmark.scala index 8d5ddc253f..8ab3ef0621 100644 --- a/benchmarks/src/test/scala/benches/SerializedDataTxBenchmark.scala +++ b/benchmarks/src/test/scala/benches/SerializedDataTxBenchmark.scala @@ -4,7 +4,7 @@ import java.util.concurrent.TimeUnit import benches.SerializedDataTxBenchmark.SerializedDataBenchState import benches.Utils._ -import encryBenchmark.Settings +import encryBenchmark.{BenchSettings, Settings} import org.encryfoundation.common.modifiers.mempool.transaction.{Transaction, TransactionSerializer} import org.encryfoundation.common.modifiers.state.box.AssetBox import org.openjdk.jmh.annotations._ @@ -24,9 +24,7 @@ class SerializedDataTxBenchmark { bh.consume(stateBench.initialTransactions.map(tx => tx.bytes)) } -object SerializedDataTxBenchmark { - - val benchSettings: Settings = Settings.read +object SerializedDataTxBenchmark extends BenchSettings { @throws[RunnerException] def main(args: Array[String]): Unit = { diff --git a/benchmarks/src/test/scala/benches/SerializedMonetaryTxBenchmark.scala b/benchmarks/src/test/scala/benches/SerializedMonetaryTxBenchmark.scala index 31dfcba640..404c5a9f8c 100644 --- a/benchmarks/src/test/scala/benches/SerializedMonetaryTxBenchmark.scala +++ b/benchmarks/src/test/scala/benches/SerializedMonetaryTxBenchmark.scala @@ -4,7 +4,7 @@ import java.util.concurrent.TimeUnit import benches.SerializedMonetaryTxBenchmark.SerializedMonetaryBenchState import benches.Utils._ -import encryBenchmark.Settings +import encryBenchmark.{BenchSettings, Settings} import org.encryfoundation.common.modifiers.mempool.transaction.{Transaction, TransactionSerializer} import org.encryfoundation.common.modifiers.state.box.AssetBox import org.openjdk.jmh.annotations._ @@ -24,9 +24,7 @@ class SerializedMonetaryTxBenchmark { bh.consume(stateBench.initialTransactions.map(tx => tx.bytes)) } -object SerializedMonetaryTxBenchmark { - - val benchSettings: Settings = Settings.read +object SerializedMonetaryTxBenchmark extends BenchSettings { @throws[RunnerException] def main(args: Array[String]): Unit = { diff --git a/benchmarks/src/test/scala/benches/StateBenches.scala b/benchmarks/src/test/scala/benches/StateBenches.scala index 0cbabbc78e..9aa45760b2 100644 --- a/benchmarks/src/test/scala/benches/StateBenches.scala +++ b/benchmarks/src/test/scala/benches/StateBenches.scala @@ -11,7 +11,7 @@ import encry.settings.EncryAppSettings import encry.storage.VersionalStorage import encry.storage.VersionalStorage.IODB import encry.view.state.{BoxHolder, UtxoState} -import encryBenchmark.Settings +import encryBenchmark.{BenchSettings, Settings} import org.encryfoundation.common.modifiers.history.Block import org.encryfoundation.common.modifiers.state.box.AssetBox import org.openjdk.jmh.infra.Blackhole @@ -43,9 +43,7 @@ class StateBenches { } } -object StateBenches { - - val benchSettings: Settings = Settings.read +object StateBenches extends BenchSettings { @throws[RunnerException] def main(args: Array[String]): Unit = { @@ -66,9 +64,8 @@ object StateBenches { } @State(Scope.Benchmark) - class StateBenchState { + class StateBenchState extends encry.settings.Settings { - val settings: EncryAppSettings = EncryApp.settings val tmpDir: File = getRandomTempDir val initialBoxes: IndexedSeq[AssetBox] = (0 until benchSettings.stateBenchSettings.totalBoxesNumber).map(nonce => diff --git a/benchmarks/src/test/scala/benches/StateRollbackBench.scala b/benchmarks/src/test/scala/benches/StateRollbackBench.scala index 613bac6e3d..e88fde5b3f 100644 --- a/benchmarks/src/test/scala/benches/StateRollbackBench.scala +++ b/benchmarks/src/test/scala/benches/StateRollbackBench.scala @@ -5,12 +5,10 @@ import java.util.concurrent.TimeUnit import benches.StateRollbackBench.StateRollbackState import benches.Utils._ -import encry.EncryApp -import encry.settings.EncryAppSettings import encry.storage.VersionalStorage import encry.utils.CoreTaggedTypes.VersionTag import encry.view.state.{BoxHolder, UtxoState} -import encryBenchmark.Settings +import encryBenchmark.{BenchSettings, Settings} import org.encryfoundation.common.modifiers.history.Block import org.encryfoundation.common.modifiers.state.box.AssetBox import org.encryfoundation.common.utils.TaggedTypes.{ADKey, Difficulty} @@ -38,9 +36,7 @@ class StateRollbackBench { } } -object StateRollbackBench { - - val benchSettings: Settings = Settings.read +object StateRollbackBench extends BenchSettings { @throws[RunnerException] def main(args: Array[String]): Unit = { @@ -61,9 +57,8 @@ object StateRollbackBench { } @State(Scope.Benchmark) - class StateRollbackState { + class StateRollbackState extends encry.settings.Settings { - val settings: EncryAppSettings = EncryApp.settings val tmpDir: File = getRandomTempDir val initialBoxes: IndexedSeq[AssetBox] = (0 until benchSettings.stateBenchSettings.totalBoxesNumber).map(nonce => diff --git a/benchmarks/src/test/scala/benches/Utils.scala b/benchmarks/src/test/scala/benches/Utils.scala index c8fbd6d096..f6045f97f5 100644 --- a/benchmarks/src/test/scala/benches/Utils.scala +++ b/benchmarks/src/test/scala/benches/Utils.scala @@ -5,7 +5,7 @@ import java.io.File import akka.actor.ActorRef import com.typesafe.scalalogging.StrictLogging import encry.modifiers.mempool.TransactionFactory -import encry.settings.EncryAppSettings +import encry.settings.{ConstantsSettings, EncryAppSettings} import encry.storage.VersionalStorage import encry.storage.VersionalStorage.{StorageKey, StorageType, StorageValue, StorageVersion} import encry.storage.iodb.versionalIODB.IODBWrapper @@ -25,8 +25,6 @@ import org.encryfoundation.common.modifiers.mempool.transaction._ import org.encryfoundation.common.modifiers.state.box.Box.Amount import org.encryfoundation.common.modifiers.state.box.{AssetBox, EncryProposition, MonetaryBox} import org.encryfoundation.common.utils.TaggedTypes._ -import encry.EncryApp.settings.constants -import org.encryfoundation.common.modifiers.state.box.TokenIssuingBox.TokenId import org.encryfoundation.prismlang.core.wrapped.BoxedValue import org.iq80.leveldb.Options import scorex.crypto.hash.{Blake2b256, Digest32} @@ -36,7 +34,7 @@ import scorex.utils.Random import scala.collection.immutable import scala.util.{Random => R} -object Utils extends StrictLogging { +object Utils extends ConstantsSettings with StrictLogging { val mnemonicKey: String = "index another island accuse valid aerobic little absurd bunker keep insect scissors" val privKey: PrivateKey25519 = createPrivKey(Some(mnemonicKey)) @@ -407,15 +405,15 @@ object Utils extends StrictLogging { uTransaction.toSigned(IndexedSeq.empty, Some(Proof(BoxedValue.Signature25519Value(signature.bytes.toList)))) } - def generateHistory(settingsEncry: EncryAppSettings, file: File): History = { + def generateHistory(settings: EncryAppSettings, file: File): History = { val indexStore: LSMStore = new LSMStore(FileHelper.getRandomTempDir, keepVersions = 0) val objectsStore: LSMStore = new LSMStore(FileHelper.getRandomTempDir, keepVersions = 0) val levelDBInit = LevelDbFactory.factory.open(FileHelper.getRandomTempDir, new Options) - val vldbInit = VLDBWrapper(VersionalLevelDBCompanion(levelDBInit, settingsEncry.levelDB)) + val vldbInit = VLDBWrapper(VersionalLevelDBCompanion(levelDBInit, settings.levelDB)) val storage: HistoryStorage = new HistoryStorage(vldbInit) - val ntp: NetworkTimeProvider = new NetworkTimeProvider(settingsEncry.ntp) + val ntp: NetworkTimeProvider = new NetworkTimeProvider(settings.ntp) new History { override val historyStorage: HistoryStorage = storage From 17f9543f960d1427e892d5f95a62d2e8f1bd7bba Mon Sep 17 00:00:00 2001 From: capdev Date: Fri, 13 Sep 2019 19:54:22 +0500 Subject: [PATCH 44/51] PR fixes --- .../scala/benches/StateRollbackBench.scala | 4 +- benchmarks/src/test/scala/benches/Utils.scala | 17 ++++----- .../encry/it/MinerWalletBalanceTest.scala | 10 ++--- .../AssetTokenTransactionTest.scala | 10 ++--- ...ransferTransactionWithEncryCoinsTest.scala | 10 ++--- .../consensus/ConsensusSchemeReaders.scala | 11 +++--- .../encry/settings/ConstantsSettings.scala | 7 ---- .../encry/settings/EncryAppSettings.scala | 38 +++++++------------ .../encry/settings/SettingsReaders.scala | 2 +- .../scala/encry/settings/TestConstants.scala | 2 +- .../encry/view/history/HistoryDBApi.scala | 12 +++--- .../history/HistoryModifiersValidator.scala | 14 +++---- .../consensus/PowLinearControllerSpec.scala | 10 ++--- .../emission/EncrySupplyControllerTest.scala | 10 ++--- .../history/BlockSerializerTest.scala | 6 +-- .../scala/encry/utils/EncryGenerator.scala | 8 ++-- 16 files changed, 75 insertions(+), 96 deletions(-) delete mode 100644 src/main/scala/encry/settings/ConstantsSettings.scala diff --git a/benchmarks/src/test/scala/benches/StateRollbackBench.scala b/benchmarks/src/test/scala/benches/StateRollbackBench.scala index e88fde5b3f..812fc160f9 100644 --- a/benchmarks/src/test/scala/benches/StateRollbackBench.scala +++ b/benchmarks/src/test/scala/benches/StateRollbackBench.scala @@ -76,13 +76,11 @@ object StateRollbackBench extends BenchSettings { val nextBlockMainChain: Block = generateNextBlockForStateWithSpendingAllPreviousBoxes( block, stateL, - block.payload.txs.flatMap(_.newBoxes.map(_.asInstanceOf[AssetBox])).toIndexedSeq, - settings.constants.IntrinsicTokenId) + block.payload.txs.flatMap(_.newBoxes.map(_.asInstanceOf[AssetBox])).toIndexedSeq) val nextBlockFork: Block = generateNextBlockForStateWithSpendingAllPreviousBoxes( block, stateL, block.payload.txs.flatMap(_.newBoxes.map(_.asInstanceOf[AssetBox])).toIndexedSeq, - settings.constants.IntrinsicTokenId, addDiff = Difficulty @@ BigInt(100) ) val stateN: UtxoState = stateL.applyModifier(nextBlockMainChain).right.get diff --git a/benchmarks/src/test/scala/benches/Utils.scala b/benchmarks/src/test/scala/benches/Utils.scala index f6045f97f5..79473860e3 100644 --- a/benchmarks/src/test/scala/benches/Utils.scala +++ b/benchmarks/src/test/scala/benches/Utils.scala @@ -5,7 +5,7 @@ import java.io.File import akka.actor.ActorRef import com.typesafe.scalalogging.StrictLogging import encry.modifiers.mempool.TransactionFactory -import encry.settings.{ConstantsSettings, EncryAppSettings} +import encry.settings.{Settings, EncryAppSettings} import encry.storage.VersionalStorage import encry.storage.VersionalStorage.{StorageKey, StorageType, StorageValue, StorageVersion} import encry.storage.iodb.versionalIODB.IODBWrapper @@ -34,7 +34,7 @@ import scorex.utils.Random import scala.collection.immutable import scala.util.{Random => R} -object Utils extends ConstantsSettings with StrictLogging { +object Utils extends Settings with StrictLogging { val mnemonicKey: String = "index another island accuse valid aerobic little absurd bunker keep insect scissors" val privKey: PrivateKey25519 = createPrivKey(Some(mnemonicKey)) @@ -65,13 +65,13 @@ object Utils extends ConstantsSettings with StrictLogging { val txs = Seq(coinbaseTransaction(0)) val header = genHeader.copy( parentId = Header.GenesisParentId, - height = constants.GenesisHeight + height = settings.constants.GenesisHeight ) Block(header, Payload(header.id, txs)) } def generateGenesisBlockValidForHistory: Block = { - val header = genHeader.copy(parentId = Header.GenesisParentId, height = constants.GenesisHeight) + val header = genHeader.copy(parentId = Header.GenesisParentId, height = settings.constants.GenesisHeight) Block(header, Payload(header.id, Seq(coinbaseTransaction))) } @@ -112,7 +112,6 @@ object Utils extends ConstantsSettings with StrictLogging { def generateNextBlockForStateWithSpendingAllPreviousBoxes(prevBlock: Block, state: UtxoState, box: Seq[AssetBox], - intrinsicTokenId: ADKey, splitCoef: Int = 2, addDiff: Difficulty = Difficulty @@ BigInt(0) ): Block = { @@ -151,7 +150,7 @@ object Utils extends ConstantsSettings with StrictLogging { val previousHeaderId: ModifierId = prevBlock.map(_.id).getOrElse(Header.GenesisParentId) val requiredDifficulty: Difficulty = prevBlock.map(b => history.requiredDifficultyAfter(b.header).getOrElse(Difficulty @@ BigInt(0))) - .getOrElse(constants.InitialDifficulty) + .getOrElse(settings.constants.InitialDifficulty) val header = genHeader.copy( parentId = previousHeaderId, height = history.getBestHeaderHeight + 1, @@ -181,7 +180,7 @@ object Utils extends ConstantsSettings with StrictLogging { val storage = settings.storage.state match { case VersionalStorage.IODB => logger.info("Init state with iodb storage") - IODBWrapper(new LSMStore(dir, keepVersions = constants.DefaultKeepVersions)) + IODBWrapper(new LSMStore(dir, keepVersions = settings.constants.DefaultKeepVersions)) case VersionalStorage.LevelDB => logger.info("Init state with levelDB storage") val levelDBInit = LevelDbFactory.factory.open(dir, new Options) @@ -195,7 +194,7 @@ object Utils extends ConstantsSettings with StrictLogging { new UtxoState( storage, - constants.PreGenesisHeight, + settings.constants.PreGenesisHeight, 0L, settings.constants ) @@ -216,7 +215,7 @@ object Utils extends ConstantsSettings with StrictLogging { Math.abs(random.nextLong()), Math.abs(random.nextInt(10000)), random.nextLong(), - constants.InitialDifficulty, + settings.constants.InitialDifficulty, EquihashSolution(Seq(1, 3)) ) } diff --git a/it/src/test/scala/encry/it/MinerWalletBalanceTest.scala b/it/src/test/scala/encry/it/MinerWalletBalanceTest.scala index 78a34c000e..42be4ddfdd 100644 --- a/it/src/test/scala/encry/it/MinerWalletBalanceTest.scala +++ b/it/src/test/scala/encry/it/MinerWalletBalanceTest.scala @@ -4,7 +4,7 @@ import com.typesafe.config.Config import encry.consensus.EncrySupplyController import encry.it.configs.Configs import encry.it.docker.NodesFromDocker -import encry.settings.ConstantsSettings +import encry.settings.Settings import org.encryfoundation.common.utils.Algos import org.encryfoundation.common.utils.TaggedTypes.Height import org.scalatest.{AsyncFunSuite, Matchers} @@ -12,7 +12,7 @@ import org.scalatest.{AsyncFunSuite, Matchers} import scala.concurrent.Await import scala.concurrent.duration._ -class MinerWalletBalanceTest extends AsyncFunSuite with Matchers with NodesFromDocker with ConstantsSettings { +class MinerWalletBalanceTest extends AsyncFunSuite with Matchers with NodesFromDocker with Settings { override protected def nodeConfigs: Seq[Config] = Seq(Configs.mining(true) .withFallback(Configs.offlineGeneration(true)) @@ -22,15 +22,15 @@ class MinerWalletBalanceTest extends AsyncFunSuite with Matchers with NodesFromD val heightToCheck = 5 val supplyAtHeight = (0 to heightToCheck).foldLeft(0: Long) { - case (supply, i) => supply + EncrySupplyController.supplyAt(Height @@ i, constants.InitialEmissionAmount, - constants.EmissionEpochLength, constants.EmissionDecay) + case (supply, i) => supply + EncrySupplyController.supplyAt(Height @@ i, settings.constants.InitialEmissionAmount, + settings.constants.EmissionEpochLength, settings.constants.EmissionDecay) } val height = dockerNodes().head.waitForHeadersHeight(heightToCheck) Await.result(height, 30.minutes) height map { _ => val res = Await.result(dockerNodes().head.balances, 30.minutes) - .find(_._1 == Algos.encode(constants.IntrinsicTokenId)) + .find(_._1 == Algos.encode(settings.constants.IntrinsicTokenId)) .map(_._2 == supplyAtHeight) .get docker.close() diff --git a/it/src/test/scala/encry/it/transactions/AssetTokenTransactionTest.scala b/it/src/test/scala/encry/it/transactions/AssetTokenTransactionTest.scala index ae8172c1c7..0544b6a181 100644 --- a/it/src/test/scala/encry/it/transactions/AssetTokenTransactionTest.scala +++ b/it/src/test/scala/encry/it/transactions/AssetTokenTransactionTest.scala @@ -7,7 +7,7 @@ import encry.consensus.EncrySupplyController import encry.it.configs.Configs import encry.it.docker.NodesFromDocker import encry.it.util.KeyHelper._ -import encry.settings.ConstantsSettings +import encry.settings.Settings import org.encryfoundation.common.crypto.{PrivateKey25519, PublicKey25519} import org.encryfoundation.common.modifiers.history.Block import org.encryfoundation.common.modifiers.mempool.transaction.EncryAddress.Address @@ -29,7 +29,7 @@ class AssetTokenTransactionTest extends AsyncFunSuite with ScalaFutures with StrictLogging with NodesFromDocker - with ConstantsSettings { + with Settings { override protected def nodeConfigs: Seq[Config] = Seq(Configs.mining(true) .withFallback(Configs.offlineGeneration(true)) @@ -132,12 +132,12 @@ class AssetTokenTransactionTest extends AsyncFunSuite .get val supplyAtHeight: Long = (0 to thirdHeightToWait).foldLeft(0: Long) { - case (supply, i) => supply + EncrySupplyController.supplyAt(Height @@ i, constants.InitialEmissionAmount, - constants.EmissionEpochLength, constants.EmissionDecay) + case (supply, i) => supply + EncrySupplyController.supplyAt(Height @@ i, settings.constants.InitialEmissionAmount, + settings.constants.EmissionEpochLength, settings.constants.EmissionDecay) } val ckeckEncryBalanceNew: Boolean = Await.result(dockerNodes().head.balances, waitTime) - .find(_._1 == Algos.encode(constants.IntrinsicTokenId)) + .find(_._1 == Algos.encode(settings.constants.IntrinsicTokenId)) .map(_._2 == supplyAtHeight - amount) .get diff --git a/it/src/test/scala/encry/it/transactions/ProcessingTransferTransactionWithEncryCoinsTest.scala b/it/src/test/scala/encry/it/transactions/ProcessingTransferTransactionWithEncryCoinsTest.scala index e4ac6b0675..d8ee6981e4 100644 --- a/it/src/test/scala/encry/it/transactions/ProcessingTransferTransactionWithEncryCoinsTest.scala +++ b/it/src/test/scala/encry/it/transactions/ProcessingTransferTransactionWithEncryCoinsTest.scala @@ -7,7 +7,7 @@ import encry.consensus.EncrySupplyController import encry.it.configs.Configs import encry.it.docker.NodesFromDocker import encry.it.util.KeyHelper._ -import encry.settings.ConstantsSettings +import encry.settings.Settings import org.encryfoundation.common.crypto.{PrivateKey25519, PublicKey25519} import org.encryfoundation.common.modifiers.history.Block import org.encryfoundation.common.modifiers.mempool.transaction.EncryAddress.Address @@ -28,7 +28,7 @@ class ProcessingTransferTransactionWithEncryCoinsTest extends AsyncFunSuite with ScalaFutures with StrictLogging with NodesFromDocker - with ConstantsSettings { + with Settings { override protected def nodeConfigs: Seq[Config] = Seq(Configs.mining(true) .withFallback(Configs.offlineGeneration(true)) @@ -46,8 +46,8 @@ class ProcessingTransferTransactionWithEncryCoinsTest extends AsyncFunSuite val waitTime: FiniteDuration = 30.minutes val supplyAtHeight: Long = (0 to secondHeightToWait).foldLeft(0: Long) { - case (supply, i) => supply + EncrySupplyController.supplyAt(Height @@ i, constants.InitialEmissionAmount, - constants.EmissionEpochLength, constants.EmissionDecay) + case (supply, i) => supply + EncrySupplyController.supplyAt(Height @@ i, settings.constants.InitialEmissionAmount, + settings.constants.EmissionEpochLength, settings.constants.EmissionDecay) } Await.result(dockerNodes().head.waitForHeadersHeight(firstHeightToWait), waitTime) @@ -67,7 +67,7 @@ class ProcessingTransferTransactionWithEncryCoinsTest extends AsyncFunSuite Await.result(dockerNodes().head.waitForHeadersHeight(secondHeightToWait), waitTime) val checkBalance: Boolean = Await.result(dockerNodes().head.balances, waitTime) - .find(_._1 == Algos.encode(constants.IntrinsicTokenId)) + .find(_._1 == Algos.encode(settings.constants.IntrinsicTokenId)) .map(_._2 == supplyAtHeight - amount) .get diff --git a/src/main/scala/encry/consensus/ConsensusSchemeReaders.scala b/src/main/scala/encry/consensus/ConsensusSchemeReaders.scala index fc3e0f172a..b42c23cd04 100644 --- a/src/main/scala/encry/consensus/ConsensusSchemeReaders.scala +++ b/src/main/scala/encry/consensus/ConsensusSchemeReaders.scala @@ -1,11 +1,11 @@ package encry.consensus -import encry.settings.ConstantsSettings +import encry.settings.Settings -object ConsensusSchemeReaders extends ConstantsSettings { +object ConsensusSchemeReaders extends Settings { val consensusScheme: ConsensusScheme = { - val schemeName = constants.ConsensusScheme + val schemeName = settings.constants.ConsensusScheme Seq(EquihashPowSchemeReader).find(_.schemeName == schemeName) .getOrElse(EquihashPowSchemeReader) .read @@ -17,11 +17,12 @@ sealed trait ConsensusSchemeReader[T <: ConsensusScheme] { def read: T } -object EquihashPowSchemeReader extends ConsensusSchemeReader[EquihashPowScheme] with ConstantsSettings { +object EquihashPowSchemeReader extends ConsensusSchemeReader[EquihashPowScheme] with Settings { val schemeName = "equihash" def read: EquihashPowScheme = { - EquihashPowScheme(constants.n, constants.k, constants.Version, constants.PreGenesisHeight, constants.MaxTarget) + EquihashPowScheme(settings.constants.n, settings.constants.k, settings.constants.Version, settings.constants.PreGenesisHeight, + settings.constants.MaxTarget) } } diff --git a/src/main/scala/encry/settings/ConstantsSettings.scala b/src/main/scala/encry/settings/ConstantsSettings.scala deleted file mode 100644 index f7662872c8..0000000000 --- a/src/main/scala/encry/settings/ConstantsSettings.scala +++ /dev/null @@ -1,7 +0,0 @@ -package encry.settings - -import org.encryfoundation.common.utils.constants.Constants - -trait ConstantsSettings { - lazy val constants: Constants = EncryAppSettings.read().constants -} diff --git a/src/main/scala/encry/settings/EncryAppSettings.scala b/src/main/scala/encry/settings/EncryAppSettings.scala index bd09fbc355..0b98b9dd10 100644 --- a/src/main/scala/encry/settings/EncryAppSettings.scala +++ b/src/main/scala/encry/settings/EncryAppSettings.scala @@ -2,7 +2,6 @@ package encry.settings import java.io.File import java.net.InetSocketAddress - import com.typesafe.scalalogging.StrictLogging import com.typesafe.config.{Config, ConfigFactory} import encry.EncryApp @@ -10,9 +9,8 @@ import encry.storage.VersionalStorage.StorageType import encry.utils.NetworkTimeProviderSettings import net.ceedubs.ficus.Ficus._ import net.ceedubs.ficus.readers.ArbitraryTypeReader._ -import org.encryfoundation.common.utils.constants.Constants - import scala.concurrent.duration.FiniteDuration +import org.encryfoundation.common.utils.constants.Constants final case class EncryAppSettings(directory: String, node: NodeSettings, @@ -73,19 +71,19 @@ object EncryAppSettings extends SettingsReaders with NodeSettingsReader with Str def fromConfig(config: Config): EncryAppSettings = { - val directory = config.as[String](s"$configPath.directory") - val nodeSettings = config.as[NodeSettings](s"$configPath.node") - val mempool = config.as[MemoryPoolSettings](s"$configPath.mempool") - val walletSettings = config.as[Option[WalletSettings]](s"$configPath.wallet") - val networkSettings = config.as[NetworkSettings](s"$configPath.network") - val restApiSettings = config.as[RESTApiSettings](s"$configPath.restApi") - val storageSettings = config.as[StorageSettings](s"$configPath.storage") - val ntpSettings = config.as[NetworkTimeProviderSettings](s"$configPath.ntp") - val influxSettings = config.as[Option[InfluxDBSettings]](s"$configPath.influxDB") - val levelDb = config.as[LevelDBSettings](s"$configPath.levelDB") + val directory = config.as[String](s"$configPath.directory") + val nodeSettings = config.as[NodeSettings](s"$configPath.node") + val mempool = config.as[MemoryPoolSettings](s"$configPath.mempool") + val walletSettings = config.as[Option[WalletSettings]](s"$configPath.wallet") + val networkSettings = config.as[NetworkSettings](s"$configPath.network") + val restApiSettings = config.as[RESTApiSettings](s"$configPath.restApi") + val storageSettings = config.as[StorageSettings](s"$configPath.storage") + val ntpSettings = config.as[NetworkTimeProviderSettings](s"$configPath.ntp") + val influxSettings = config.as[Option[InfluxDBSettings]](s"$configPath.influxDB") + val levelDb = config.as[LevelDBSettings](s"$configPath.levelDB") val monitoringSettings = config.as[Option[MonitoringSettings]](s"$configPath.monitoringSettings") - val blackList = config.as[BlackListSettings](s"$configPath.blackList") - val constants = config.as[Constants](s"$configPath.constantsClass") + val blackList = config.as[BlackListSettings](s"$configPath.blackList") + val constants = config.as[Constants](s"$configPath.constantsClass") EncryAppSettings( directory, @@ -106,26 +104,18 @@ object EncryAppSettings extends SettingsReaders with NodeSettingsReader with Str private def failWithError(msg: String): Nothing = EncryApp.forceStopApplication(errorMessage = s"Stop application due to malformed configuration file: $msg") - } final case class StorageSettings(history: StorageType, state: StorageType) - final case class WalletSettings(password: String, seed: Option[String]) - final case class InfluxDBSettings(url: String, login: String, password: String, udpPort: Int) - final case class BlackListSettings(banTime: FiniteDuration, cleanupTime: FiniteDuration) - final case class LevelDBSettings(maxVersions: Int, versionKeySize: Int = 32) - final case class MonitoringSettings(kamonEnabled: Boolean) - final case class RESTApiSettings(enabled: Option[Boolean], bindAddress: InetSocketAddress, corsAllowedOrigin: Option[String], timeout: FiniteDuration) - final case class NetworkSettings(nodeName: Option[String], addedMaxDelay: Option[FiniteDuration], networkChunkSize: Int, @@ -146,7 +136,6 @@ final case class NetworkSettings(nodeName: Option[String], syncTimeout: Option[FiniteDuration], syncPacketLength: Int, maxNumberOfReConnections: Int) - final case class MemoryPoolSettings(utxMaxAge: FiniteDuration, cleanupInterval: FiniteDuration, maxCapacity: Int, @@ -155,7 +144,6 @@ final case class MemoryPoolSettings(utxMaxAge: FiniteDuration, bloomFilterCleanupInterval: FiniteDuration, bloomFilterCapacity: Long, bloomFilterFailureProbability: Double) - final case class NodeSettings(blocksToKeep: Int, modifiersCacheSize: Int, mining: Boolean, diff --git a/src/main/scala/encry/settings/SettingsReaders.scala b/src/main/scala/encry/settings/SettingsReaders.scala index 49a89d51c7..1fcb837ac8 100644 --- a/src/main/scala/encry/settings/SettingsReaders.scala +++ b/src/main/scala/encry/settings/SettingsReaders.scala @@ -23,7 +23,7 @@ trait SettingsReaders { new InetSocketAddress(split(0), split(1).toInt) } - implicit val constantsSettingsReader: ValueReader[Constants] = (cfg, path) => { + implicit val ConstantsSettingsReader: ValueReader[Constants] = (cfg, path) => { def getConstants(constantsClass: String): Constants = { constantsClass match { case "TestConstants" => TestConstants diff --git a/src/main/scala/encry/settings/TestConstants.scala b/src/main/scala/encry/settings/TestConstants.scala index d70415aa37..1c69063a26 100644 --- a/src/main/scala/encry/settings/TestConstants.scala +++ b/src/main/scala/encry/settings/TestConstants.scala @@ -49,7 +49,7 @@ case object TestConstants extends Constants { val NewHeaderTimeMultiplier: Int = 5 - val RetargetingEpochsQty: Int = 2 + val RetargetingEpochsQty: Int = 4 val EpochLength: Int = 100 diff --git a/src/main/scala/encry/view/history/HistoryDBApi.scala b/src/main/scala/encry/view/history/HistoryDBApi.scala index 76bad74ea0..508f88d948 100644 --- a/src/main/scala/encry/view/history/HistoryDBApi.scala +++ b/src/main/scala/encry/view/history/HistoryDBApi.scala @@ -2,7 +2,7 @@ package encry.view.history import com.google.common.primitives.Ints import com.typesafe.scalalogging.StrictLogging -import encry.settings.ConstantsSettings +import encry.settings.Settings import encry.storage.VersionalStorage.StorageKey import encry.view.history.storage.HistoryStorage import org.encryfoundation.common.modifiers.history.{Block, Header, Payload} @@ -12,14 +12,14 @@ import scorex.crypto.hash.Digest32 import scala.reflect.ClassTag -trait HistoryDBApi extends ConstantsSettings with StrictLogging { +trait HistoryDBApi extends Settings with StrictLogging { val historyStorage: HistoryStorage val BestHeaderKey: StorageKey = - StorageKey @@ Array.fill(constants.DigestLength)(Header.modifierTypeId.untag(ModifierTypeId)) + StorageKey @@ Array.fill(settings.constants.DigestLength)(Header.modifierTypeId.untag(ModifierTypeId)) val BestBlockKey: StorageKey = - StorageKey @@ Array.fill(constants.DigestLength)(-1: Byte) + StorageKey @@ Array.fill(settings.constants.DigestLength)(-1: Byte) private def getModifierById[T: ClassTag](id: ModifierId): Option[T] = historyStorage .modifierById(id) @@ -40,13 +40,13 @@ trait HistoryDBApi extends ConstantsSettings with StrictLogging { def getBestHeaderDB: Option[Header] = getBestHeaderId.flatMap(getHeaderByIdDB) def getBestHeaderHeightDB: Int = getBestHeaderId .flatMap(getHeightByHeaderIdDB) - .getOrElse(constants.PreGenesisHeight) + .getOrElse(settings.constants.PreGenesisHeight) def getBestBlockId: Option[ModifierId] = historyStorage.get(BestBlockKey).map(ModifierId @@ _) def getBestBlockDB: Option[Block] = getBestBlockId.flatMap(getBlockByHeaderIdDB) def getBestBlockHeightDB: Int = getBestBlockId .flatMap(getHeightByHeaderIdDB) - .getOrElse(constants.PreGenesisHeight) + .getOrElse(settings.constants.PreGenesisHeight) def modifierBytesByIdDB(id: ModifierId): Option[Array[Byte]] = historyStorage.modifiersBytesById(id) diff --git a/src/main/scala/encry/view/history/HistoryModifiersValidator.scala b/src/main/scala/encry/view/history/HistoryModifiersValidator.scala index de320f9863..8951496ab6 100644 --- a/src/main/scala/encry/view/history/HistoryModifiersValidator.scala +++ b/src/main/scala/encry/view/history/HistoryModifiersValidator.scala @@ -7,13 +7,13 @@ import org.encryfoundation.common.modifiers.history.{Header, Payload} import org.encryfoundation.common.validation.ModifierSemanticValidity import cats.syntax.either._ import encry.consensus.EquihashPowScheme -import encry.settings.ConstantsSettings +import encry.settings.Settings import org.encryfoundation.common.utils.TaggedTypes.{Difficulty, ModifierId} -trait HistoryModifiersValidator extends HistoryApi with ConstantsSettings { +trait HistoryModifiersValidator extends HistoryApi with Settings { - val powScheme: EquihashPowScheme = EquihashPowScheme(constants.n, constants.k - , constants.Version, constants.PreGenesisHeight, constants.MaxTarget) + val powScheme: EquihashPowScheme = EquihashPowScheme(settings.constants.n, settings.constants.k, settings.constants.Version, + settings.constants.PreGenesisHeight, settings.constants.MaxTarget) def testApplicable(modifier: PersistentModifier): Either[ValidationError, PersistentModifier] = (modifier match { @@ -52,7 +52,7 @@ trait HistoryModifiersValidator extends HistoryApi with ConstantsSettings { GenesisBlockFatalValidationError(s"Genesis block with header ${h.encodedId} should has genesis parent id")) _ <- Either.cond(getBestHeaderId.isEmpty, (), GenesisBlockFatalValidationError(s"Genesis block with header ${h.encodedId} appended to non-empty history")) - _ <- Either.cond(h.height == constants.GenesisHeight, (), + _ <- Either.cond(h.height == settings.constants.GenesisHeight, (), GenesisBlockFatalValidationError(s"Height of genesis block with header ${h.encodedId} is incorrect")) } yield h @@ -69,7 +69,7 @@ trait HistoryModifiersValidator extends HistoryApi with ConstantsSettings { HeaderFatalValidationError(s"Incorrect real difficulty in header ${h.encodedId}")) _ <- Either.cond(requiredDifficultyAfter(parent).exists(_ <= h.difficulty), (), HeaderFatalValidationError(s"Incorrect required difficulty in header ${h.encodedId}")) - _ <- Either.cond(heightOf(h.parentId).exists(h => getBestHeaderHeight - h < constants.MaxRollbackDepth), (), + _ <- Either.cond(heightOf(h.parentId).exists(h => getBestHeaderHeight - h < settings.constants.MaxRollbackDepth), (), HeaderFatalValidationError(s"Header ${h.encodedId} has height greater than max roll back depth")) powSchemeValidationResult = powScheme.verify(h) _ <- Either.cond(powSchemeValidationResult.isRight, (), @@ -77,7 +77,7 @@ trait HistoryModifiersValidator extends HistoryApi with ConstantsSettings { s" caused: $powSchemeValidationResult")) _ <- Either.cond(isSemanticallyValid(h.parentId) != ModifierSemanticValidity.Invalid, (), HeaderFatalValidationError(s"Header ${h.encodedId} is semantically invalid")) - _ <- Either.cond(h.timestamp - timeProvider.estimatedTime <= constants.MaxTimeDrift, (), + _ <- Either.cond(h.timestamp - timeProvider.estimatedTime <= settings.constants.MaxTimeDrift, (), HeaderNonFatalValidationError(s"Header ${h.encodedId} with timestamp ${h.timestamp}" + s" is too far in future from now ${timeProvider.estimatedTime}")) } yield h diff --git a/src/test/scala/encry/consensus/PowLinearControllerSpec.scala b/src/test/scala/encry/consensus/PowLinearControllerSpec.scala index 58d0054e16..51c260f34e 100644 --- a/src/test/scala/encry/consensus/PowLinearControllerSpec.scala +++ b/src/test/scala/encry/consensus/PowLinearControllerSpec.scala @@ -1,22 +1,22 @@ package encry.consensus -import encry.settings.ConstantsSettings +import encry.settings.Settings import org.encryfoundation.common.utils.TaggedTypes.Height import org.scalatest.{Matchers, PropSpec} import scala.collection.immutable -class PowLinearControllerSpec extends PropSpec with Matchers with ConstantsSettings { +class PowLinearControllerSpec extends PropSpec with Matchers with Settings { property("getHeightsForRetargetingAt()") { val retargetingAtHeight: Int = 1001 - val expected: immutable.Seq[Int] = (0 to constants.RetargetingEpochsQty).reverse - .map(i => (retargetingAtHeight - 1) - i * constants.EpochLength).filter(_ >= constants.GenesisHeight) + val expected: immutable.Seq[Int] = (0 to settings.constants.RetargetingEpochsQty).reverse + .map(i => (retargetingAtHeight - 1) - i * settings.constants.EpochLength).filter(_ >= settings.constants.GenesisHeight) val heights: Seq[Height] = PowLinearController.getHeightsForRetargetingAt(Height @@ retargetingAtHeight, - constants.EpochLength, constants.RetargetingEpochsQty) + settings.constants.EpochLength, settings.constants.RetargetingEpochsQty) heights sameElements expected shouldBe true } diff --git a/src/test/scala/encry/consensus/emission/EncrySupplyControllerTest.scala b/src/test/scala/encry/consensus/emission/EncrySupplyControllerTest.scala index aa69e4ac87..655da749b5 100644 --- a/src/test/scala/encry/consensus/emission/EncrySupplyControllerTest.scala +++ b/src/test/scala/encry/consensus/emission/EncrySupplyControllerTest.scala @@ -1,25 +1,25 @@ package encry.consensus.emission import encry.consensus.EncrySupplyController -import encry.settings.ConstantsSettings +import encry.settings.Settings import encry.utils.EncryGenerator import org.encryfoundation.common.utils.TaggedTypes.Height import org.scalatest.{Matchers, PropSpec} import scala.concurrent.duration._ -class EncrySupplyControllerTest extends PropSpec with Matchers with EncryGenerator with ConstantsSettings { +class EncrySupplyControllerTest extends PropSpec with Matchers with EncryGenerator with Settings { val epochLen = 10 - val blocksPerHour: Int = ((60 * 60).seconds / constants.DesiredBlockInterval).toInt + val blocksPerHour: Int = ((60 * 60).seconds / settings.constants.DesiredBlockInterval).toInt val blocksPerYear: Int = blocksPerHour * 24 * 365 property("testSupplyAt") { val epochSupply = (0 until blocksPerYear * epochLen).map(h => EncrySupplyController.supplyAt(Height @@ h, - constants.InitialEmissionAmount, constants.EmissionEpochLength, constants.EmissionDecay)) + settings.constants.InitialEmissionAmount, settings.constants.EmissionEpochLength, settings.constants.EmissionDecay)) val atEndEpochSupply = epochSupply.last @@ -29,7 +29,7 @@ class EncrySupplyControllerTest extends PropSpec with Matchers with EncryGenerat val firstYearSupply = epochSupply.zipWithIndex.filter(i => i._2 <= blocksPerYear).map(_._1).sum - atEndEpochSupply < constants.InitialEmissionAmount shouldBe true + atEndEpochSupply < settings.constants.InitialEmissionAmount shouldBe true } } diff --git a/src/test/scala/encry/modifiers/history/BlockSerializerTest.scala b/src/test/scala/encry/modifiers/history/BlockSerializerTest.scala index 834d52eede..5c799b1a3b 100755 --- a/src/test/scala/encry/modifiers/history/BlockSerializerTest.scala +++ b/src/test/scala/encry/modifiers/history/BlockSerializerTest.scala @@ -1,7 +1,7 @@ package encry.modifiers.history import encry.modifiers.mempool.TransactionFactory -import encry.settings.ConstantsSettings +import encry.settings.Settings import encry.utils.{EncryGenerator, TestHelper} import org.encryfoundation.common.crypto.equihash.EquihashSolution import org.encryfoundation.common.modifiers.history._ @@ -11,7 +11,7 @@ import org.scalatest.FunSuite import scorex.crypto.hash.Digest32 import scorex.utils.Random -class BlockSerializerTest extends FunSuite with EncryGenerator with ConstantsSettings { +class BlockSerializerTest extends FunSuite with EncryGenerator with Settings { test("testToBytes $ testFromBytes") { @@ -22,7 +22,7 @@ class BlockSerializerTest extends FunSuite with EncryGenerator with ConstantsSet 99999L, 199, 999L, - constants.InitialDifficulty, + settings.constants.InitialDifficulty, EquihashSolution(Seq(1, 2, 3)) ) diff --git a/src/test/scala/encry/utils/EncryGenerator.scala b/src/test/scala/encry/utils/EncryGenerator.scala index abb16d904f..d102e45619 100644 --- a/src/test/scala/encry/utils/EncryGenerator.scala +++ b/src/test/scala/encry/utils/EncryGenerator.scala @@ -1,7 +1,7 @@ package encry.utils import encry.modifiers.mempool.TransactionFactory -import encry.settings.ConstantsSettings +import encry.settings.Settings import encry.utils.TestHelper.Props import org.encryfoundation.common.crypto.equihash.EquihashSolution import org.encryfoundation.common.crypto.{PrivateKey25519, PublicKey25519, Signature25519} @@ -19,7 +19,7 @@ import scorex.utils.Random import scala.util.{Random => ScRand} -trait EncryGenerator extends ConstantsSettings { +trait EncryGenerator extends Settings { val mnemonicKey: String = "index another island accuse valid aerobic little absurd bunker keep insect scissors" val privKey: PrivateKey25519 = createPrivKey(Some(mnemonicKey)) @@ -138,7 +138,7 @@ trait EncryGenerator extends ConstantsSettings { Math.abs(random.nextLong()), Math.abs(random.nextInt(10000)), random.nextLong(), - constants.InitialDifficulty, + settings.constants.InitialDifficulty, EquihashSolution(Seq(1, 3)) ) } @@ -152,7 +152,7 @@ trait EncryGenerator extends ConstantsSettings { Math.abs(random.nextLong()), height, random.nextLong(), - constants.InitialDifficulty, + settings.constants.InitialDifficulty, EquihashSolution(Seq(1, 3)) ) } From dd0e82c3c9d9fcf3859c5d4405e633d775e9b812 Mon Sep 17 00:00:00 2001 From: capdev Date: Mon, 16 Sep 2019 09:12:13 +0500 Subject: [PATCH 45/51] rename MainTestSettings --- ...TestSettings.conf => TestNetSettings.conf} | 0 .../scala/encry/network/BlackListTests.scala | 2 +- .../network/ConnectWithNewPeerTests.scala | 86 +++++++++---------- .../DeliveryManagerPriorityTests.scala | 26 +++--- ...DeliveryManagerReRequestModifiesSpec.scala | 28 +++--- .../DeliveryManagerRequestModifiesSpec.scala | 34 ++++---- .../DownloadedModifiersValidatorTests.scala | 20 ++--- .../encry/settings/MainTestSettings.scala | 6 -- .../encry/settings/TestNetSettings.scala | 6 ++ .../HistoryComparisionResultTest.scala | 30 +++---- .../history/ModifiersValidationTest.scala | 12 +-- .../encry/view/mempool/MemoryPoolTests.scala | 16 ++-- 12 files changed, 133 insertions(+), 133 deletions(-) rename src/main/resources/{MainTestSettings.conf => TestNetSettings.conf} (100%) delete mode 100644 src/test/scala/encry/settings/MainTestSettings.scala create mode 100644 src/test/scala/encry/settings/TestNetSettings.scala diff --git a/src/main/resources/MainTestSettings.conf b/src/main/resources/TestNetSettings.conf similarity index 100% rename from src/main/resources/MainTestSettings.conf rename to src/main/resources/TestNetSettings.conf diff --git a/src/test/scala/encry/network/BlackListTests.scala b/src/test/scala/encry/network/BlackListTests.scala index 90eac45585..fd3b931079 100644 --- a/src/test/scala/encry/network/BlackListTests.scala +++ b/src/test/scala/encry/network/BlackListTests.scala @@ -9,7 +9,7 @@ import encry.network.BlackList.BanReason._ import encry.network.PeerConnectionHandler.{ConnectedPeer, Outgoing} import encry.network.PeerConnectionHandler.ReceivableMessages.CloseConnection import encry.network.PeersKeeper.BanPeer -import encry.settings.{EncryAppSettings, AdditionalTestSettings} +import encry.settings.AdditionalTestSettings import org.encryfoundation.common.network.BasicMessagesRepo.Handshake import org.scalatest.{BeforeAndAfterAll, Matchers, OneInstancePerTest, WordSpecLike} diff --git a/src/test/scala/encry/network/ConnectWithNewPeerTests.scala b/src/test/scala/encry/network/ConnectWithNewPeerTests.scala index bac50b5430..21eb44ab1d 100644 --- a/src/test/scala/encry/network/ConnectWithNewPeerTests.scala +++ b/src/test/scala/encry/network/ConnectWithNewPeerTests.scala @@ -9,7 +9,7 @@ import encry.network.BlackList.BanReason._ import encry.network.NetworkController.ReceivableMessages.DataFromPeer import encry.network.PeerConnectionHandler.{ConnectedPeer, Incoming, Outgoing} import encry.network.PeersKeeper._ -import encry.settings.{AdditionalTestSettings, EncryAppSettings, MainTestSettings} +import encry.settings.{AdditionalTestSettings, EncryAppSettings, TestNetSettings} import org.encryfoundation.common.network.BasicMessagesRepo.{Handshake, PeersNetworkMessage} import org.scalatest.{BeforeAndAfterAll, Matchers, OneInstancePerTest, WordSpecLike} @@ -18,7 +18,7 @@ class ConnectWithNewPeerTests extends WordSpecLike with BeforeAndAfterAll with InstanceFactory with OneInstancePerTest - with MainTestSettings + with TestNetSettings with AdditionalTestSettings { implicit val system: ActorSystem = ActorSystem() @@ -153,13 +153,13 @@ class ConnectWithNewPeerTests extends WordSpecLike "remove peer from available if it has been banned" in { val networkController = TestProbe() val nodeViewSync = TestProbe() - val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(mainTestSettings, nodeViewSync.ref, TestProbe().ref)) + val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(settings, nodeViewSync.ref, TestProbe().ref)) val availablePeers: Map[InetSocketAddress, Int] = peersKeeper.underlyingActor.knownPeers val peerHandler = TestProbe() val connectedPeer: ConnectedPeer = ConnectedPeer(availablePeers.head._1, peerHandler.ref, Outgoing, - Handshake(protocolToBytes(mainTestSettings.network.appVersion), + Handshake(protocolToBytes(settings.network.appVersion), "test-peer", Some(availablePeers.head._1), System.currentTimeMillis())) networkController.send(peersKeeper, BanPeer(connectedPeer, ExpiredNumberOfConnections)) @@ -170,18 +170,18 @@ class ConnectWithNewPeerTests extends WordSpecLike "filter peers from network message" in { val networkController = TestProbe() val nodeViewSync = TestProbe() - val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(mainTestSettings, nodeViewSync.ref, TestProbe().ref)) + val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(settings, nodeViewSync.ref, TestProbe().ref)) val availablePeers: Map[InetSocketAddress, Int] = peersKeeper.underlyingActor.knownPeers val peerHandler = TestProbe() val connectedPeer: ConnectedPeer = ConnectedPeer(availablePeers.head._1, peerHandler.ref, Outgoing, - Handshake(protocolToBytes(mainTestSettings.network.appVersion), + Handshake(protocolToBytes(settings.network.appVersion), "test-peer", Some(availablePeers.head._1), System.currentTimeMillis())) val newPeerHandler = TestProbe() val newConnectedPeer: ConnectedPeer = ConnectedPeer(availablePeers.last._1, newPeerHandler.ref, Outgoing, - Handshake(protocolToBytes(mainTestSettings.network.appVersion), + Handshake(protocolToBytes(settings.network.appVersion), "test-peer", Some(availablePeers.last._1), System.currentTimeMillis())) networkController.send(peersKeeper, BanPeer(connectedPeer, ExpiredNumberOfConnections)) @@ -200,45 +200,45 @@ class ConnectWithNewPeerTests extends WordSpecLike val networkController = TestProbe() val peersSenderProbe = TestProbe() val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(additionalTestSettings, TestProbe().ref, TestProbe().ref)) - val connectedPeer: ConnectedPeer = ConnectedPeer(mainTestSettings.network.knownPeers.head, peersSenderProbe.ref, Outgoing, - Handshake(protocolToBytes(mainTestSettings.network.appVersion), - "test-peer", Some(mainTestSettings.network.knownPeers.head), System.currentTimeMillis())) + val connectedPeer: ConnectedPeer = ConnectedPeer(settings.network.knownPeers.head, peersSenderProbe.ref, Outgoing, + Handshake(protocolToBytes(settings.network.appVersion), + "test-peer", Some(settings.network.knownPeers.head), System.currentTimeMillis())) networkController.send(peersKeeper, RequestPeerForConnection) - networkController.expectMsg(PeerForConnection(mainTestSettings.network.knownPeers.head)) - peersKeeper.underlyingActor.outgoingConnections.contains(mainTestSettings.network.knownPeers.head) shouldBe true - peersKeeper.underlyingActor.knownPeers.contains(mainTestSettings.network.knownPeers.head) shouldBe true + networkController.expectMsg(PeerForConnection(settings.network.knownPeers.head)) + peersKeeper.underlyingActor.outgoingConnections.contains(settings.network.knownPeers.head) shouldBe true + peersKeeper.underlyingActor.knownPeers.contains(settings.network.knownPeers.head) shouldBe true - networkController.send(peersKeeper, VerifyConnection(mainTestSettings.network.knownPeers.head, peersSenderProbe.ref)) + networkController.send(peersKeeper, VerifyConnection(settings.network.knownPeers.head, peersSenderProbe.ref)) networkController.expectMsg( - ConnectionVerified(mainTestSettings.network.knownPeers.head, peersSenderProbe.ref, Outgoing)) + ConnectionVerified(settings.network.knownPeers.head, peersSenderProbe.ref, Outgoing)) networkController.send(peersKeeper, HandshakedDone(connectedPeer)) - peersKeeper.underlyingActor.connectedPeers.contains(mainTestSettings.network.knownPeers.head) shouldBe true + peersKeeper.underlyingActor.connectedPeers.contains(settings.network.knownPeers.head) shouldBe true } "handle stop connection process" in { val networkController = TestProbe() val peersSenderProbe = TestProbe() val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(additionalTestSettings, TestProbe().ref, TestProbe().ref)) - val connectedPeer: ConnectedPeer = ConnectedPeer(mainTestSettings.network.knownPeers.head, peersSenderProbe.ref, Outgoing, - Handshake(protocolToBytes(mainTestSettings.network.appVersion), - "test-peer", Some(mainTestSettings.network.knownPeers.head), System.currentTimeMillis())) + val connectedPeer: ConnectedPeer = ConnectedPeer(settings.network.knownPeers.head, peersSenderProbe.ref, Outgoing, + Handshake(protocolToBytes(settings.network.appVersion), + "test-peer", Some(settings.network.knownPeers.head), System.currentTimeMillis())) networkController.send(peersKeeper, RequestPeerForConnection) - networkController.expectMsg(PeerForConnection(mainTestSettings.network.knownPeers.head)) - peersKeeper.underlyingActor.outgoingConnections.contains(mainTestSettings.network.knownPeers.head) shouldBe true - peersKeeper.underlyingActor.knownPeers.contains(mainTestSettings.network.knownPeers.head) shouldBe true + networkController.expectMsg(PeerForConnection(settings.network.knownPeers.head)) + peersKeeper.underlyingActor.outgoingConnections.contains(settings.network.knownPeers.head) shouldBe true + peersKeeper.underlyingActor.knownPeers.contains(settings.network.knownPeers.head) shouldBe true - networkController.send(peersKeeper, VerifyConnection(mainTestSettings.network.knownPeers.head, peersSenderProbe.ref)) + networkController.send(peersKeeper, VerifyConnection(settings.network.knownPeers.head, peersSenderProbe.ref)) networkController.expectMsg( - ConnectionVerified(mainTestSettings.network.knownPeers.head, peersSenderProbe.ref, Outgoing)) + ConnectionVerified(settings.network.knownPeers.head, peersSenderProbe.ref, Outgoing)) networkController.send(peersKeeper, HandshakedDone(connectedPeer)) - peersKeeper.underlyingActor.connectedPeers.contains(mainTestSettings.network.knownPeers.head) shouldBe true + peersKeeper.underlyingActor.connectedPeers.contains(settings.network.knownPeers.head) shouldBe true - peersKeeper ! ConnectionStopped(mainTestSettings.network.knownPeers.head) - peersKeeper.underlyingActor.connectedPeers.contains(mainTestSettings.network.knownPeers.head) shouldBe false - peersKeeper.underlyingActor.knownPeers.contains(mainTestSettings.network.knownPeers.head) shouldBe true + peersKeeper ! ConnectionStopped(settings.network.knownPeers.head) + peersKeeper.underlyingActor.connectedPeers.contains(settings.network.knownPeers.head) shouldBe false + peersKeeper.underlyingActor.knownPeers.contains(settings.network.knownPeers.head) shouldBe true } "handle failed connection process" in { val networkController = TestProbe() @@ -246,24 +246,24 @@ class ConnectWithNewPeerTests extends WordSpecLike val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(additionalTestSettings, TestProbe().ref, TestProbe().ref)) networkController.send(peersKeeper, RequestPeerForConnection) - networkController.expectMsg(PeerForConnection(mainTestSettings.network.knownPeers.head)) - peersKeeper.underlyingActor.outgoingConnections.contains(mainTestSettings.network.knownPeers.head) shouldBe true - peersKeeper.underlyingActor.knownPeers.contains(mainTestSettings.network.knownPeers.head) shouldBe true + networkController.expectMsg(PeerForConnection(settings.network.knownPeers.head)) + peersKeeper.underlyingActor.outgoingConnections.contains(settings.network.knownPeers.head) shouldBe true + peersKeeper.underlyingActor.knownPeers.contains(settings.network.knownPeers.head) shouldBe true - networkController.send(peersKeeper, VerifyConnection(mainTestSettings.network.knownPeers.head, peersSenderProbe.ref)) + networkController.send(peersKeeper, VerifyConnection(settings.network.knownPeers.head, peersSenderProbe.ref)) networkController.expectMsg( - ConnectionVerified(mainTestSettings.network.knownPeers.head, peersSenderProbe.ref, Outgoing)) + ConnectionVerified(settings.network.knownPeers.head, peersSenderProbe.ref, Outgoing)) - peersKeeper ! OutgoingConnectionFailed(mainTestSettings.network.knownPeers.head) - peersKeeper.underlyingActor.outgoingConnections.contains(mainTestSettings.network.knownPeers.head) shouldBe false - peersKeeper.underlyingActor.knownPeers.contains(mainTestSettings.network.knownPeers.head) shouldBe true + peersKeeper ! OutgoingConnectionFailed(settings.network.knownPeers.head) + peersKeeper.underlyingActor.outgoingConnections.contains(settings.network.knownPeers.head) shouldBe false + peersKeeper.underlyingActor.knownPeers.contains(settings.network.knownPeers.head) shouldBe true } "handle incoming connections correctly while connection with only known peers false " + "and incoming peer doesn't contains in black list and connected peers collection" in { val networkController = TestProbe() val remoteConnectionTestProbe: TestProbe = TestProbe() - val remoteAddress: InetSocketAddress = mainTestSettings.network.knownPeers.head - val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(mainTestSettings, TestProbe().ref, TestProbe().ref)) + val remoteAddress: InetSocketAddress = settings.network.knownPeers.head + val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(settings, TestProbe().ref, TestProbe().ref)) networkController.send(peersKeeper, VerifyConnection(remoteAddress, remoteConnectionTestProbe.ref)) networkController.expectMsg(ConnectionVerified(remoteAddress, remoteConnectionTestProbe.ref, Incoming)) @@ -274,9 +274,9 @@ class ConnectWithNewPeerTests extends WordSpecLike val networkController = TestProbe() val remoteConnectionTestProbe: TestProbe = TestProbe() val remoteAddress: InetSocketAddress = new InetSocketAddress("172.16.11.11", 9001) - val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(mainTestSettings, TestProbe().ref, TestProbe().ref)) + val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(settings, TestProbe().ref, TestProbe().ref)) val connectedPeer: ConnectedPeer = ConnectedPeer(remoteAddress, remoteConnectionTestProbe.ref, Incoming, - Handshake(protocolToBytes(mainTestSettings.network.appVersion), + Handshake(protocolToBytes(settings.network.appVersion), "test-peer", Some(remoteAddress), System.currentTimeMillis())) peersKeeper ! BanPeer(connectedPeer, SyntacticallyInvalidPersistentModifier) @@ -289,9 +289,9 @@ class ConnectWithNewPeerTests extends WordSpecLike val networkController = TestProbe() val remoteConnectionTestProbe: TestProbe = TestProbe() val remoteAddress: InetSocketAddress = new InetSocketAddress("172.16.11.11", 9001) - val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(mainTestSettings, TestProbe().ref, TestProbe().ref)) + val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(settings, TestProbe().ref, TestProbe().ref)) val connectedPeer: ConnectedPeer = ConnectedPeer(remoteAddress, remoteConnectionTestProbe.ref, Incoming, - Handshake(protocolToBytes(mainTestSettings.network.appVersion), + Handshake(protocolToBytes(settings.network.appVersion), "test-peer", Some(remoteAddress), System.currentTimeMillis())) peersKeeper ! HandshakedDone(connectedPeer) @@ -312,7 +312,7 @@ class ConnectWithNewPeerTests extends WordSpecLike "handle incoming connections correctly while peer is equal to local address" in { val networkController = TestProbe() val remoteConnectionTestProbe: TestProbe = TestProbe() - val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(mainTestSettings, TestProbe().ref, TestProbe().ref)) + val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(settings, TestProbe().ref, TestProbe().ref)) networkController.send(peersKeeper, VerifyConnection( new InetSocketAddress("0.0.0.0", 9001), remoteConnectionTestProbe.ref)) diff --git a/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerPriorityTests.scala b/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerPriorityTests.scala index 799670d2ca..86e98b17d5 100644 --- a/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerPriorityTests.scala +++ b/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerPriorityTests.scala @@ -15,7 +15,7 @@ import encry.network.PeerConnectionHandler.ConnectedPeer import encry.network.PrioritiesCalculator.PeersPriorityStatus.PeersPriorityStatus import encry.network.PeersKeeper.UpdatedPeersCollection import encry.network.PrioritiesCalculator.PeersPriorityStatus.PeersPriorityStatus._ -import encry.settings.{EncryAppSettings, MainTestSettings} +import encry.settings.{EncryAppSettings, TestNetSettings} import org.encryfoundation.common.modifiers.history.{Block, Header, HeaderProtoSerializer} import org.encryfoundation.common.network.BasicMessagesRepo.ModifiersNetworkMessage import org.encryfoundation.common.utils.TaggedTypes.ModifierId @@ -26,7 +26,7 @@ class DeliveryManagerPriorityTests extends WordSpecLike with Matchers with InstanceFactory with OneInstancePerTest - with MainTestSettings { + with TestNetSettings { implicit val system: ActorSystem = ActorSystem("SynchronousTestingSpec") @@ -35,17 +35,17 @@ class DeliveryManagerPriorityTests extends WordSpecLike def initialiseState: (TestActorRef[DeliveryManager], ConnectedPeer, ConnectedPeer, ConnectedPeer, ConnectedPeer, ConnectedPeer, ConnectedPeer, ConnectedPeer, ConnectedPeer, ConnectedPeer, List[Block], List[ModifierId]) = { - val (deliveryManager, _) = initialiseDeliveryManager(isBlockChainSynced = true, isMining = true, mainTestSettings) - val (_: InetSocketAddress, cp1: ConnectedPeer) = createPeer(9001, "172.16.13.10", mainTestSettings) - val (_: InetSocketAddress, cp2: ConnectedPeer) = createPeer(9002, "172.16.13.11", mainTestSettings) - val (_: InetSocketAddress, cp3: ConnectedPeer) = createPeer(9003, "172.16.13.12", mainTestSettings) - val (_: InetSocketAddress, cp4: ConnectedPeer) = createPeer(9004, "172.16.13.13", mainTestSettings) - val (_: InetSocketAddress, cp5: ConnectedPeer) = createPeer(9005, "172.16.13.14", mainTestSettings) - val (_: InetSocketAddress, cp6: ConnectedPeer) = createPeer(9006, "172.16.13.15", mainTestSettings) - val (_: InetSocketAddress, cp7: ConnectedPeer) = createPeer(9007, "172.16.13.16", mainTestSettings) - val (_: InetSocketAddress, cp8: ConnectedPeer) = createPeer(9008, "172.16.13.17", mainTestSettings) - val (_: InetSocketAddress, cp9: ConnectedPeer) = createPeer(9009, "172.16.13.18", mainTestSettings) - val blocks: List[Block] = generateBlocks(10, generateDummyHistory(mainTestSettings))._2 + val (deliveryManager, _) = initialiseDeliveryManager(isBlockChainSynced = true, isMining = true, settings) + val (_: InetSocketAddress, cp1: ConnectedPeer) = createPeer(9001, "172.16.13.10", settings) + val (_: InetSocketAddress, cp2: ConnectedPeer) = createPeer(9002, "172.16.13.11", settings) + val (_: InetSocketAddress, cp3: ConnectedPeer) = createPeer(9003, "172.16.13.12", settings) + val (_: InetSocketAddress, cp4: ConnectedPeer) = createPeer(9004, "172.16.13.13", settings) + val (_: InetSocketAddress, cp5: ConnectedPeer) = createPeer(9005, "172.16.13.14", settings) + val (_: InetSocketAddress, cp6: ConnectedPeer) = createPeer(9006, "172.16.13.15", settings) + val (_: InetSocketAddress, cp7: ConnectedPeer) = createPeer(9007, "172.16.13.16", settings) + val (_: InetSocketAddress, cp8: ConnectedPeer) = createPeer(9008, "172.16.13.17", settings) + val (_: InetSocketAddress, cp9: ConnectedPeer) = createPeer(9009, "172.16.13.18", settings) + val blocks: List[Block] = generateBlocks(10, generateDummyHistory(settings))._2 val headersIds: List[ModifierId] = blocks.map(_.header.id) (deliveryManager, cp1, cp2, cp3, cp4, cp5, cp6,cp7, cp8, cp9, blocks, headersIds) } diff --git a/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerReRequestModifiesSpec.scala b/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerReRequestModifiesSpec.scala index 608fb12124..4fdd5d4e30 100644 --- a/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerReRequestModifiesSpec.scala +++ b/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerReRequestModifiesSpec.scala @@ -15,7 +15,7 @@ import encry.network.PeerConnectionHandler.{ConnectedPeer, Incoming} import encry.network.PeersKeeper.UpdatedPeersCollection import encry.network.PrioritiesCalculator.PeersPriorityStatus.PeersPriorityStatus import encry.network.PrioritiesCalculator.PeersPriorityStatus.PeersPriorityStatus.InitialPriority -import encry.settings.MainTestSettings +import encry.settings.TestNetSettings import encry.view.history.History import org.encryfoundation.common.modifiers.history.{Block, Header, HeaderProtoSerializer} import org.encryfoundation.common.modifiers.mempool.transaction.Transaction @@ -31,7 +31,7 @@ class DeliveryManagerReRequestModifiesSpec extends WordSpecLike with Matchers with InstanceFactory with OneInstancePerTest - with MainTestSettings { + with TestNetSettings { implicit val system: ActorSystem = ActorSystem("SynchronousTestingSpec") @@ -40,11 +40,11 @@ class DeliveryManagerReRequestModifiesSpec extends WordSpecLike def initialiseState(isChainSynced: Boolean = true, isMining: Boolean = true): (TestActorRef[DeliveryManager], ConnectedPeer, ConnectedPeer, ConnectedPeer, List[Block], List[ModifierId], List[WrappedArray.ofByte], History) = { val (deliveryManager, history) = - initialiseDeliveryManager(isBlockChainSynced = isChainSynced, isMining = isMining, mainTestSettings) - val (_: InetSocketAddress, cp1: ConnectedPeer) = createPeer(9001, "172.16.13.10", mainTestSettings) - val (_: InetSocketAddress, cp2: ConnectedPeer) = createPeer(9002, "172.16.13.11", mainTestSettings) - val (_: InetSocketAddress, cp3: ConnectedPeer) = createPeer(9003, "172.16.13.12", mainTestSettings) - val blocks: List[Block] = generateBlocks(10, generateDummyHistory(mainTestSettings))._2 + initialiseDeliveryManager(isBlockChainSynced = isChainSynced, isMining = isMining, settings) + val (_: InetSocketAddress, cp1: ConnectedPeer) = createPeer(9001, "172.16.13.10", settings) + val (_: InetSocketAddress, cp2: ConnectedPeer) = createPeer(9002, "172.16.13.11", settings) + val (_: InetSocketAddress, cp3: ConnectedPeer) = createPeer(9003, "172.16.13.12", settings) + val blocks: List[Block] = generateBlocks(10, generateDummyHistory(settings))._2 val headersIds: List[ModifierId] = blocks.map(_.header.id) val headersAsKey = headersIds.map(toKey) (deliveryManager, cp1, cp2, cp3, blocks, headersIds, headersAsKey, history) @@ -58,7 +58,7 @@ class DeliveryManagerReRequestModifiesSpec extends WordSpecLike val address1 = new InetSocketAddress("123.123.123.123", 9001) val handler1: TestProbe = TestProbe() val cp1: ConnectedPeer = ConnectedPeer(address1, handler1.ref, Incoming, - Handshake(protocolToBytes(mainTestSettings.network.appVersion), + Handshake(protocolToBytes(settings.network.appVersion), "123.123.123.123", Some(address1), System.currentTimeMillis())) val updatedPeersCollection: Map[InetSocketAddress, (ConnectedPeer, HistoryConsensus.Older.type, PeersPriorityStatus)] = @@ -70,7 +70,7 @@ class DeliveryManagerReRequestModifiesSpec extends WordSpecLike deliveryManager ! RequestFromLocal(cp1, Header.modifierTypeId, Seq(header)) handler1.expectMsgAllOf( - mainTestSettings.network.deliveryTimeout * (mainTestSettings.network.maxDeliveryChecks + 2), + settings.network.deliveryTimeout * (settings.network.maxDeliveryChecks + 2), RequestModifiersNetworkMessage(Header.modifierTypeId -> Seq(header)), RequestModifiersNetworkMessage(Header.modifierTypeId -> Seq(header)), RequestModifiersNetworkMessage(Header.modifierTypeId -> Seq(header)) @@ -87,7 +87,7 @@ class DeliveryManagerReRequestModifiesSpec extends WordSpecLike val address1 = new InetSocketAddress("123.123.123.123", 9001) val handler1: TestProbe = TestProbe() val cp1: ConnectedPeer = ConnectedPeer(address1, handler1.ref, Incoming, - Handshake(protocolToBytes(mainTestSettings.network.appVersion), + Handshake(protocolToBytes(settings.network.appVersion), "123.123.123.123", Some(address1), System.currentTimeMillis())) val updatedPeersCollection: Map[InetSocketAddress, (ConnectedPeer, HistoryConsensus.Older.type, PeersPriorityStatus)] = @@ -101,7 +101,7 @@ class DeliveryManagerReRequestModifiesSpec extends WordSpecLike //await one re-ask handler1.expectMsgAllOf( - mainTestSettings.network.deliveryTimeout * (mainTestSettings.network.maxDeliveryChecks + 2), + settings.network.deliveryTimeout * (settings.network.maxDeliveryChecks + 2), RequestModifiersNetworkMessage(Header.modifierTypeId -> Seq(header)), RequestModifiersNetworkMessage(Header.modifierTypeId -> Seq(header)) ) @@ -118,7 +118,7 @@ class DeliveryManagerReRequestModifiesSpec extends WordSpecLike val address1 = new InetSocketAddress("123.123.123.123", 9001) val handler1: TestProbe = TestProbe() val cp1: ConnectedPeer = ConnectedPeer(address1, handler1.ref, Incoming, - Handshake(protocolToBytes(mainTestSettings.network.appVersion), + Handshake(protocolToBytes(settings.network.appVersion), "123.123.123.123", Some(address1), System.currentTimeMillis())) val updatedPeersCollection: Map[InetSocketAddress, (ConnectedPeer, HistoryConsensus.Older.type, PeersPriorityStatus)] = @@ -152,7 +152,7 @@ class DeliveryManagerReRequestModifiesSpec extends WordSpecLike deliveryManager ! RequestFromLocal(cp1, Header.modifierTypeId, Seq(headerIds.head)) //this thread sleep is using for expecting modifier removal - Thread.sleep((mainTestSettings.network.maxDeliveryChecks * mainTestSettings.network.deliveryTimeout._1) * 1000) + Thread.sleep((settings.network.maxDeliveryChecks * settings.network.deliveryTimeout._1) * 1000) assert(deliveryManager.underlyingActor.expectedModifiers.getOrElse(cp1.socketAddress, Map.empty).isEmpty) assert(deliveryManager.underlyingActor.expectedModifiers .getOrElse(cp1.socketAddress, Map.empty) == Map.empty) @@ -164,7 +164,7 @@ class DeliveryManagerReRequestModifiesSpec extends WordSpecLike val address1 = new InetSocketAddress("123.123.123.123", 9001) val handler1: TestProbe = TestProbe() val cp1: ConnectedPeer = ConnectedPeer(address1, handler1.ref, Incoming, - Handshake(protocolToBytes(mainTestSettings.network.appVersion), + Handshake(protocolToBytes(settings.network.appVersion), "123.123.123.123", Some(address1), System.currentTimeMillis())) val updatedPeersCollection: Map[InetSocketAddress, (ConnectedPeer, HistoryConsensus.Older.type, PeersPriorityStatus)] = diff --git a/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerRequestModifiesSpec.scala b/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerRequestModifiesSpec.scala index 70ab69437d..7f3668933a 100644 --- a/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerRequestModifiesSpec.scala +++ b/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerRequestModifiesSpec.scala @@ -11,7 +11,7 @@ import encry.network.DeliveryManager import encry.network.NetworkController.ReceivableMessages.DataFromPeer import encry.network.NodeViewSynchronizer.ReceivableMessages.RequestFromLocal import encry.network.PeerConnectionHandler.{ConnectedPeer, Incoming} -import encry.settings.{EncryAppSettings, MainTestSettings} +import encry.settings.{EncryAppSettings, TestNetSettings} import encry.view.NodeViewHolder.DownloadRequest import org.scalatest.{BeforeAndAfterAll, Matchers, OneInstancePerTest, WordSpecLike} import encry.network.DeliveryManagerTests.DMUtils._ @@ -30,7 +30,7 @@ class DeliveryManagerRequestModifiesSpec extends WordSpecLike with BeforeAndAfte with Matchers with InstanceFactory with OneInstancePerTest - with MainTestSettings { + with TestNetSettings { implicit val system: ActorSystem = ActorSystem("SynchronousTestingSpec") @@ -38,11 +38,11 @@ class DeliveryManagerRequestModifiesSpec extends WordSpecLike with BeforeAndAfte def initialiseState(isChainSynced: Boolean = true, isMining: Boolean = true): (TestActorRef[DeliveryManager], ConnectedPeer, ConnectedPeer, ConnectedPeer, List[Block], List[ModifierId], List[WrappedArray.ofByte]) = { - val (deliveryManager, _) = initialiseDeliveryManager(isBlockChainSynced = isChainSynced, isMining = isMining, mainTestSettings) - val (_: InetSocketAddress, cp1: ConnectedPeer) = createPeer(9001, "172.16.13.10", mainTestSettings) - val (_: InetSocketAddress, cp2: ConnectedPeer) = createPeer(9002, "172.16.13.11", mainTestSettings) - val (_: InetSocketAddress, cp3: ConnectedPeer) = createPeer(9003, "172.16.13.12", mainTestSettings) - val blocks: List[Block] = generateBlocks(10, generateDummyHistory(mainTestSettings))._2 + val (deliveryManager, _) = initialiseDeliveryManager(isBlockChainSynced = isChainSynced, isMining = isMining, settings) + val (_: InetSocketAddress, cp1: ConnectedPeer) = createPeer(9001, "172.16.13.10", settings) + val (_: InetSocketAddress, cp2: ConnectedPeer) = createPeer(9002, "172.16.13.11", settings) + val (_: InetSocketAddress, cp3: ConnectedPeer) = createPeer(9003, "172.16.13.12", settings) + val blocks: List[Block] = generateBlocks(10, generateDummyHistory(settings))._2 val headersIds: List[ModifierId] = blocks.map(_.header.id) val headersAsKey = headersIds.map(toKey) (deliveryManager, cp1, cp2, cp3, blocks, headersIds, headersAsKey) @@ -131,19 +131,19 @@ class DeliveryManagerRequestModifiesSpec extends WordSpecLike with BeforeAndAfte val address1 = new InetSocketAddress("123.123.123.123", 9001) val handler1: TestProbe = TestProbe() val cp1: ConnectedPeer = ConnectedPeer(address1, handler1.ref, Incoming, - Handshake(protocolToBytes(mainTestSettings.network.appVersion), + Handshake(protocolToBytes(settings.network.appVersion), "123.123.123.123", Some(address1), System.currentTimeMillis())) val address2 = new InetSocketAddress("123.123.123.124", 9001) val handler2: TestProbe = TestProbe() val cp2: ConnectedPeer = ConnectedPeer(address2, handler2.ref, Incoming, - Handshake(protocolToBytes(mainTestSettings.network.appVersion), + Handshake(protocolToBytes(settings.network.appVersion), "123.123.123.124", Some(address2), System.currentTimeMillis())) val address3 = new InetSocketAddress("123.123.123.125", 9001) val handler3: TestProbe = TestProbe() val cp3: ConnectedPeer = ConnectedPeer(address3, handler3.ref, Incoming, - Handshake(protocolToBytes(mainTestSettings.network.appVersion), + Handshake(protocolToBytes(settings.network.appVersion), "123.123.123.125", Some(address3), System.currentTimeMillis())) val updatedPeersCollection: Map[InetSocketAddress, (ConnectedPeer, HistoryConsensus.Older.type, PeersPriorityStatus)] = @@ -183,13 +183,13 @@ class DeliveryManagerRequestModifiesSpec extends WordSpecLike with BeforeAndAfte val address2 = new InetSocketAddress("123.123.123.124", 9001) val handler2: TestProbe = TestProbe() val cp2: ConnectedPeer = ConnectedPeer(address2, handler2.ref, Incoming, - Handshake(protocolToBytes(mainTestSettings.network.appVersion), + Handshake(protocolToBytes(settings.network.appVersion), "123.123.123.124", Some(address2), System.currentTimeMillis())) val address3 = new InetSocketAddress("123.123.123.125", 9001) val handler3: TestProbe = TestProbe() val cp3: ConnectedPeer = ConnectedPeer(address3, handler3.ref, Incoming, - Handshake(protocolToBytes(mainTestSettings.network.appVersion), + Handshake(protocolToBytes(settings.network.appVersion), "123.123.123.125", Some(address3), System.currentTimeMillis())) val updatedPeersCollection = @@ -216,13 +216,13 @@ class DeliveryManagerRequestModifiesSpec extends WordSpecLike with BeforeAndAfte val address1 = new InetSocketAddress("123.123.123.123", 9001) val handler1: TestProbe = TestProbe() val cp1: ConnectedPeer = ConnectedPeer(address1, handler1.ref, Incoming, - Handshake(protocolToBytes(mainTestSettings.network.appVersion), + Handshake(protocolToBytes(settings.network.appVersion), "123.123.123.123", Some(address1), System.currentTimeMillis())) val address2 = new InetSocketAddress("123.123.123.124", 9001) val handler2: TestProbe = TestProbe() val cp2: ConnectedPeer = ConnectedPeer(address2, handler2.ref, Incoming, - Handshake(protocolToBytes(mainTestSettings.network.appVersion), + Handshake(protocolToBytes(settings.network.appVersion), "123.123.123.124", Some(address2), System.currentTimeMillis())) val updatedPeersCollection: Map[InetSocketAddress, (ConnectedPeer, HistoryConsensus.Older.type, PeersPriorityStatus)] = @@ -246,7 +246,7 @@ class DeliveryManagerRequestModifiesSpec extends WordSpecLike with BeforeAndAfte val address1 = new InetSocketAddress("123.123.123.123", 9001) val handler1: TestProbe = TestProbe() val cp1: ConnectedPeer = ConnectedPeer(address1, handler1.ref, Incoming, - Handshake(protocolToBytes(mainTestSettings.network.appVersion), + Handshake(protocolToBytes(settings.network.appVersion), "123.123.123.123", Some(address1), System.currentTimeMillis())) val updatedPeersCollection: Map[InetSocketAddress, (ConnectedPeer, HistoryConsensus.Older.type, PeersPriorityStatus)] = @@ -266,7 +266,7 @@ class DeliveryManagerRequestModifiesSpec extends WordSpecLike with BeforeAndAfte val address1 = new InetSocketAddress("123.123.123.123", 9001) val handler1: TestProbe = TestProbe() val cp1: ConnectedPeer = ConnectedPeer(address1, handler1.ref, Incoming, - Handshake(protocolToBytes(mainTestSettings.network.appVersion), + Handshake(protocolToBytes(settings.network.appVersion), "123.123.123.123", Some(address1), System.currentTimeMillis())) val updatedPeersCollection: Map[InetSocketAddress, (ConnectedPeer, HistoryConsensus.Older.type, PeersPriorityStatus)] = @@ -285,7 +285,7 @@ class DeliveryManagerRequestModifiesSpec extends WordSpecLike with BeforeAndAfte val address1 = new InetSocketAddress("123.123.123.123", 9001) val handler1: TestProbe = TestProbe() val cp1: ConnectedPeer = ConnectedPeer(address1, handler1.ref, Incoming, - Handshake(protocolToBytes(mainTestSettings.network.appVersion), + Handshake(protocolToBytes(settings.network.appVersion), "123.123.123.123", Some(address1), System.currentTimeMillis())) val updatedPeersCollection: Map[InetSocketAddress, (ConnectedPeer, HistoryConsensus.Older.type, PeersPriorityStatus)] = diff --git a/src/test/scala/encry/network/DownloadedModifiersValidatorTests.scala b/src/test/scala/encry/network/DownloadedModifiersValidatorTests.scala index ce4a2fdb1a..e182b9971c 100644 --- a/src/test/scala/encry/network/DownloadedModifiersValidatorTests.scala +++ b/src/test/scala/encry/network/DownloadedModifiersValidatorTests.scala @@ -10,7 +10,7 @@ import encry.network.DownloadedModifiersValidator.{InvalidModifier, ModifiersFor import encry.network.NodeViewSynchronizer.ReceivableMessages.UpdatedHistory import encry.network.PeerConnectionHandler.{ConnectedPeer, Outgoing} import encry.network.PeersKeeper.BanPeer -import encry.settings.{AdditionalTestSettings, EncryAppSettings, MainTestSettings} +import encry.settings.{AdditionalTestSettings, EncryAppSettings, TestNetSettings} import encry.view.NodeViewHolder.ReceivableMessages.ModifierFromRemote import encry.view.history.History import org.encryfoundation.common.crypto.equihash.EquihashSolution @@ -26,7 +26,7 @@ class DownloadedModifiersValidatorTests extends WordSpecLike with BeforeAndAfterAll with InstanceFactory with OneInstancePerTest - with MainTestSettings + with TestNetSettings with AdditionalTestSettings { implicit val system: ActorSystem = ActorSystem() @@ -42,9 +42,9 @@ class DownloadedModifiersValidatorTests extends WordSpecLike val mempool = TestProbe() val downloadedModifiersValidator = TestActorRef[DownloadedModifiersValidator](DownloadedModifiersValidator.props( - mainTestSettings.constants.ModifierIdSize, nodeViewHolder.ref, peersKeeper.ref, nodeViewSync.ref, mempool.ref, None) + settings.constants.ModifierIdSize, nodeViewHolder.ref, peersKeeper.ref, nodeViewSync.ref, mempool.ref, None) ) - val history: History = generateDummyHistory(mainTestSettings) + val history: History = generateDummyHistory(settings) val address: InetSocketAddress = new InetSocketAddress("0.0.0.0", 9000) val peerHandler: TestProbe = TestProbe() @@ -52,7 +52,7 @@ class DownloadedModifiersValidatorTests extends WordSpecLike address, peerHandler.ref, Outgoing, - Handshake(protocolToBytes(mainTestSettings.network.appVersion), "test node", Some(address), System.currentTimeMillis()) + Handshake(protocolToBytes(settings.network.appVersion), "test node", Some(address), System.currentTimeMillis()) ) val timestamp1 = System.currentTimeMillis() @@ -66,7 +66,7 @@ class DownloadedModifiersValidatorTests extends WordSpecLike timestamp2, 2, scala.util.Random.nextLong(), - mainTestSettings.constants.InitialDifficulty, + settings.constants.InitialDifficulty, EquihashSolution(Seq(1, 3)) ) val header_second: Header = Header( @@ -76,7 +76,7 @@ class DownloadedModifiersValidatorTests extends WordSpecLike timestamp1, 1, scala.util.Random.nextLong(), - mainTestSettings.constants.InitialDifficulty, + settings.constants.InitialDifficulty, EquihashSolution(Seq(1, 3)) ) @@ -106,13 +106,13 @@ class DownloadedModifiersValidatorTests extends WordSpecLike address, peerHandler.ref, Outgoing, - Handshake(protocolToBytes(mainTestSettings.network.appVersion), "test node", Some(address), System.currentTimeMillis()) + Handshake(protocolToBytes(settings.network.appVersion), "test node", Some(address), System.currentTimeMillis()) ) val downloadedModifiersValidator = TestActorRef[DownloadedModifiersValidator](DownloadedModifiersValidator.props( - mainTestSettings.constants.ModifierIdSize, nodeViewHolder.ref, peersKeeper.ref, nodeViewSync.ref, mempool.ref, None) + settings.constants.ModifierIdSize, nodeViewHolder.ref, peersKeeper.ref, nodeViewSync.ref, mempool.ref, None) ) - val history: History = generateDummyHistory(mainTestSettings) + val history: History = generateDummyHistory(settings) val historyWith10Blocks = (0 until 10).foldLeft(history, Seq.empty[Block]) { case ((prevHistory, blocks), _) => diff --git a/src/test/scala/encry/settings/MainTestSettings.scala b/src/test/scala/encry/settings/MainTestSettings.scala deleted file mode 100644 index 2a001fe9b6..0000000000 --- a/src/test/scala/encry/settings/MainTestSettings.scala +++ /dev/null @@ -1,6 +0,0 @@ -package encry.settings - -trait MainTestSettings { - //settings with all peers - lazy val mainTestSettings: EncryAppSettings = EncryAppSettings.loadConfig("MainTestSettings.conf") -} diff --git a/src/test/scala/encry/settings/TestNetSettings.scala b/src/test/scala/encry/settings/TestNetSettings.scala new file mode 100644 index 0000000000..7ea4702e9c --- /dev/null +++ b/src/test/scala/encry/settings/TestNetSettings.scala @@ -0,0 +1,6 @@ +package encry.settings + +trait TestNetSettings { + //settings with all peers + lazy val settings: EncryAppSettings = EncryAppSettings.loadConfig("TestNetSettings.conf") +} diff --git a/src/test/scala/encry/view/history/HistoryComparisionResultTest.scala b/src/test/scala/encry/view/history/HistoryComparisionResultTest.scala index b16499cecc..a29dbce4d6 100644 --- a/src/test/scala/encry/view/history/HistoryComparisionResultTest.scala +++ b/src/test/scala/encry/view/history/HistoryComparisionResultTest.scala @@ -3,7 +3,7 @@ package encry.view.history import encry.consensus.HistoryConsensus._ import encry.modifiers.InstanceFactory import encry.network.DeliveryManagerTests.DMUtils.generateBlocks -import encry.settings.{EncryAppSettings, MainTestSettings} +import encry.settings.{EncryAppSettings, TestNetSettings} import org.encryfoundation.common.modifiers.history.Block import org.encryfoundation.common.network.SyncInfo import org.scalatest.{Matchers, OneInstancePerTest, WordSpecLike} @@ -12,12 +12,12 @@ class HistoryComparisionResultTest extends WordSpecLike with Matchers with InstanceFactory with OneInstancePerTest - with MainTestSettings { + with TestNetSettings { "History Reader" should { "mark history as Equal where our best header is the same as other history best header" in { - val history: History = generateDummyHistory(mainTestSettings) - val blocks: List[Block] = generateBlocks(100, generateDummyHistory(mainTestSettings))._2 + val history: History = generateDummyHistory(settings) + val blocks: List[Block] = generateBlocks(100, generateDummyHistory(settings))._2 val syncInfo: SyncInfo = SyncInfo(blocks.map(_.header.id)) val updatedHistory: History = blocks.foldLeft(history) { case (hst, block) => @@ -29,8 +29,8 @@ class HistoryComparisionResultTest extends WordSpecLike } "mark history as Older where our best header is in other history best chain, but not at the last position" in { - val history: History = generateDummyHistory(mainTestSettings) - val blocks: List[Block] = generateBlocks(100, generateDummyHistory(mainTestSettings))._2 + val history: History = generateDummyHistory(settings) + val blocks: List[Block] = generateBlocks(100, generateDummyHistory(settings))._2 val syncInfo: SyncInfo = SyncInfo(blocks.map(_.header.id)) val updatedHistory: History = blocks.take(50).foldLeft(history) { case (hst, block) => @@ -42,8 +42,8 @@ class HistoryComparisionResultTest extends WordSpecLike } "mark history as Younger when comparing history is empty" in { - val history: History = generateDummyHistory(mainTestSettings) - val blocks: List[Block] = generateBlocks(100, generateDummyHistory(mainTestSettings))._2 + val history: History = generateDummyHistory(settings) + val blocks: List[Block] = generateBlocks(100, generateDummyHistory(settings))._2 val syncInfo: SyncInfo = SyncInfo(Seq.empty) val updatedHistory: History = blocks.foldLeft(history) { case (hst, block) => @@ -56,8 +56,8 @@ class HistoryComparisionResultTest extends WordSpecLike "mark history as Younger when our history contains all other history but other history " + "doesn't contain our last 70 headers" in { - val history: History = generateDummyHistory(mainTestSettings) - val blocks: List[Block] = generateBlocks(100, generateDummyHistory(mainTestSettings))._2 + val history: History = generateDummyHistory(settings) + val blocks: List[Block] = generateBlocks(100, generateDummyHistory(settings))._2 val syncInfo: SyncInfo = SyncInfo(blocks.take(30).map(_.header.id)) val updatedHistory: History = blocks.foldLeft(history) { case (hst, block) => @@ -69,9 +69,9 @@ class HistoryComparisionResultTest extends WordSpecLike } "mark history as Fork when we have same point in histories" in { - val history: History = generateDummyHistory(mainTestSettings) + val history: History = generateDummyHistory(settings) - val fork = genForkOn(100, 1000, 25, 30, mainTestSettings) + val fork = genForkOn(100, 1000, 25, 30, settings) val syncInfo: SyncInfo = SyncInfo( fork._1.take(25).map(_.header.id) ++: fork._2.map(_.header.id) @@ -86,7 +86,7 @@ class HistoryComparisionResultTest extends WordSpecLike } "mark history as Equal where both nodes do not keep any blocks" in { - val history: History = generateDummyHistory(mainTestSettings) + val history: History = generateDummyHistory(settings) val syncInfo: SyncInfo = SyncInfo(Seq.empty) val comparisonResult = history.compare(syncInfo) @@ -94,9 +94,9 @@ class HistoryComparisionResultTest extends WordSpecLike } "mark history as Older " in { - val history: History = generateDummyHistory(mainTestSettings) + val history: History = generateDummyHistory(settings) val syncInfo: SyncInfo = SyncInfo( - generateBlocks(30, generateDummyHistory(mainTestSettings))._2.map(_.header.id)) + generateBlocks(30, generateDummyHistory(settings))._2.map(_.header.id)) val comparisonResult = history.compare(syncInfo) assert(comparisonResult == Older) diff --git a/src/test/scala/encry/view/history/ModifiersValidationTest.scala b/src/test/scala/encry/view/history/ModifiersValidationTest.scala index 20cd15d53d..c99ddeeae0 100644 --- a/src/test/scala/encry/view/history/ModifiersValidationTest.scala +++ b/src/test/scala/encry/view/history/ModifiersValidationTest.scala @@ -2,7 +2,7 @@ package encry.view.history import encry.modifiers.InstanceFactory import encry.network.DeliveryManagerTests.DMUtils.generateBlocks -import encry.settings.{EncryAppSettings, MainTestSettings} +import encry.settings.{EncryAppSettings, TestNetSettings} import org.encryfoundation.common.modifiers.history.Block import org.scalatest.{Matchers, OneInstancePerTest, WordSpecLike} @@ -10,20 +10,20 @@ class ModifiersValidationTest extends WordSpecLike with Matchers with InstanceFactory with OneInstancePerTest - with MainTestSettings { + with TestNetSettings { "Modifiers validator" should { "validate genesis block" in { - val newHistory: History = generateDummyHistory(mainTestSettings) - val genesisBlock: Block = generateGenesisBlock(mainTestSettings.constants.GenesisHeight) + val newHistory: History = generateDummyHistory(settings) + val genesisBlock: Block = generateGenesisBlock(settings.constants.GenesisHeight) newHistory.testApplicable(genesisBlock.header).isRight shouldBe true val updatedHistory: History = newHistory.append(genesisBlock.header).right.get._1.reportModifierIsValid(genesisBlock.header) updatedHistory.testApplicable(genesisBlock.payload).isRight shouldBe true } "reject incorrect modifiers" in { - val blocks: List[Block] = generateBlocks(2, generateDummyHistory(mainTestSettings))._2 - val newHistory: History = generateDummyHistory(mainTestSettings) + val blocks: List[Block] = generateBlocks(2, generateDummyHistory(settings))._2 + val newHistory: History = generateDummyHistory(settings) blocks.take(1).foldLeft(newHistory) { case (history, block) => history.testApplicable(block.header).isRight shouldBe true history.append(block.header).right.get._1.reportModifierIsValid(block.header) diff --git a/src/test/scala/encry/view/mempool/MemoryPoolTests.scala b/src/test/scala/encry/view/mempool/MemoryPoolTests.scala index ba079c65a3..b766b9ecef 100644 --- a/src/test/scala/encry/view/mempool/MemoryPoolTests.scala +++ b/src/test/scala/encry/view/mempool/MemoryPoolTests.scala @@ -4,7 +4,7 @@ import akka.actor.ActorSystem import akka.testkit.{TestActorRef, TestProbe} import com.typesafe.scalalogging.StrictLogging import encry.modifiers.InstanceFactory -import encry.settings.{EncryAppSettings, MainTestSettings} +import encry.settings.{EncryAppSettings, TestNetSettings} import encry.utils.NetworkTimeProvider import encry.view.mempool.MemoryPool.{NewTransaction, TransactionsForMiner} import org.scalatest.{BeforeAndAfterAll, Matchers, OneInstancePerTest, WordSpecLike} @@ -16,25 +16,25 @@ class MemoryPoolTests extends WordSpecLike with InstanceFactory with BeforeAndAfterAll with OneInstancePerTest - with MainTestSettings + with TestNetSettings with StrictLogging { implicit val system: ActorSystem = ActorSystem() override def afterAll(): Unit = system.terminate() - val timeProvider: NetworkTimeProvider = new NetworkTimeProvider(mainTestSettings.ntp) + val timeProvider: NetworkTimeProvider = new NetworkTimeProvider(settings.ntp) "MemoryPool" should { "add new unique transactions" in { - val mempool = MemoryPoolStorage.empty(mainTestSettings, timeProvider) + val mempool = MemoryPoolStorage.empty(settings, timeProvider) val transactions = genValidPaymentTxs(10) val (newMempool, validTxs) = mempool.validateTransactions(transactions) newMempool.size shouldBe 10 validTxs.map(_.encodedId).forall(transactions.map(_.encodedId).contains) shouldBe true } "reject not unique transactions" in { - val mempool = MemoryPoolStorage.empty(mainTestSettings, timeProvider) + val mempool = MemoryPoolStorage.empty(settings, timeProvider) val transactions = genValidPaymentTxs(10) val (newMempool, validTxs) = mempool.validateTransactions(transactions) val (newMempoolAgain, validTxsAgain) = newMempool.validateTransactions(validTxs) @@ -42,14 +42,14 @@ class MemoryPoolTests extends WordSpecLike validTxsAgain.size shouldBe 0 } "mempoolMaxCapacity works correct" in { - val mempool = MemoryPoolStorage.empty(mainTestSettings, timeProvider) + val mempool = MemoryPoolStorage.empty(settings, timeProvider) val transactions = genValidPaymentTxs(11) val (newMempool, validTxs) = mempool.validateTransactions(transactions) newMempool.size shouldBe 10 validTxs.size shouldBe 10 } "getTransactionsForMiner works fine" in { - val mempool = MemoryPoolStorage.empty(mainTestSettings, timeProvider) + val mempool = MemoryPoolStorage.empty(settings, timeProvider) val transactions = genValidPaymentTxs(10) val (newMempool, validTxs) = mempool.validateTransactions(transactions) val (uPool, txs) = newMempool.getTransactionsForMiner @@ -62,7 +62,7 @@ class MemoryPoolTests extends WordSpecLike "send transactions to miner" in { val miner = TestProbe() val mempool: TestActorRef[MemoryPool] = TestActorRef[MemoryPool]( - MemoryPool.props(mainTestSettings, timeProvider, miner.ref, Some(TestProbe().ref))) + MemoryPool.props(settings, timeProvider, miner.ref, Some(TestProbe().ref))) val transactions = genValidPaymentTxs(4) transactions.foreach(mempool ! NewTransaction(_)) mempool.underlyingActor.memoryPool.size shouldBe 4 From 53f316407c63f3c3d9d7b5589dc450df4dd5af92 Mon Sep 17 00:00:00 2001 From: capdev Date: Mon, 16 Sep 2019 11:14:08 +0500 Subject: [PATCH 46/51] fix AdditionalTestSettings --- .../resources/AdditionalTestSettings.conf | 148 ------------------ ...DeliveryManagerReRequestModifiesSpec.scala | 2 +- .../DeliveryManagerRequestModifiesSpec.scala | 30 ++-- .../settings/AdditionalTestSettings.scala | 6 - .../encry/settings/TestNetSettings.scala | 3 +- .../HistoryComparisionResultTest.scala | 26 +-- .../history/ModifiersValidationTest.scala | 8 +- .../encry/view/mempool/MemoryPoolTests.scala | 12 +- 8 files changed, 40 insertions(+), 195 deletions(-) delete mode 100644 src/main/resources/AdditionalTestSettings.conf delete mode 100644 src/test/scala/encry/settings/AdditionalTestSettings.scala diff --git a/src/main/resources/AdditionalTestSettings.conf b/src/main/resources/AdditionalTestSettings.conf deleted file mode 100644 index c3f3a7e30f..0000000000 --- a/src/main/resources/AdditionalTestSettings.conf +++ /dev/null @@ -1,148 +0,0 @@ -encry { - # Directory to keep data - directory = ${user.dir}"/encry/data" - node { - # Number of last blocks to keep with transactions and ADproofs, for all other blocks only header will be stored. - # Keep all blocks from genesis if negative - blocksToKeep = -1 - modifiersCacheSize = 3000 - # Is the node is doing mining - mining = true - # Number of threads should be used for mining - numberOfMiningWorkers = 3 - # If true, a node generates blocks being offline. The only really useful case for it probably is to start a new - # blockchain - offlineGeneration = false - # Delay for miner after succesful block creation - miningDelay = 5s - useCli = true - } - mempool { - utxMaxAge = 1000m - cleanupInterval = 180m - maxCapacity = 10000 - txSendingInterval = 10s - bloomFilterCleanupInterval = 60m - bloomFilterCapacity = 10000 - bloomFilterFailureProbability = 0.01 - transactionsLimit = 7000 - } - // Set main db to node componet. Now avaliable iodb or LevelDb - storage { - state = "iodb" - history = "iodb" - } - wallet { - password = "encry" - } - levelDB { - maxVersions = 100 - } - network { - bindAddress = "0.0.0.0:9001" - networkChunkSize = 1000 - localOnly = false - knownPeers = ["172.16.11.11:9001"] - maxConnections = 2 - connectionTimeout = 1s - handshakeTimeout = 30s - connectOnlyWithKnownPeers = true - syncInterval = 15s - syncTimeout = 5s - syncPacketLength = 1000 - //Used in pritority test && reRequest test - deliveryTimeout = 5s - //Used in reRequest test - maxDeliveryChecks = 2 - appVersion = 0.9.3 - maxInvObjects = 1000 - modifierDeliverTimeCheck = 5s - maxNumberOfReConnections = 2 - } - blackList { - # Time which peer will contains in black list - banTime = 2s - # Time of cleaning period - cleanupTime = 3s - } - restApi { - enabled = true - bindAddress = "0.0.0.0:9051" - corsAllowed = true - timeout = 5s - } - ntp { - server = "pool.ntp.org" - updateEvery = 30m - timeout = 30s - } - monitoringSettings { - kamonEnabled = false - } -} -akka { - log-dead-letters = 0 - log-dead-letters-during-shutdown = off - persistence.journal.plugin = akka.persistence.journal.leveldb - //loggers = ["akka.event.slf4j.Slf4jLogger"] - logger-startup-timeout = 60s - actor.warn-about-java-serializer-usage = false -} -mining-dispatcher { - type = Dispatcher - executor = "thread-pool-executor" - thread-pool-executor.fixed-pool-size = 4 - throughput = 4 -} -mining-mailbox { - mailbox-type = "akka.dispatch.NonBlockingBoundedMailbox" - mailbox-capacity = 5 -} -nvsh-mailbox { - mailbox-type = "akka.dispatch.NonBlockingBoundedMailbox" - mailbox-capacity = 3000 -} -network-dispatcher { - type = Dispatcher - executor = "thread-pool-executor" - thread-pool-executor.fixed-pool-size = 4 - throughput = 4 -} -nvh-dispatcher { - type = Dispatcher - executor = "thread-pool-executor" - thread-pool-executor.fixed-pool-size = 1 - throughput = 1 -} -kafka-dispatcher { - type = Dispatcher - executor = "thread-pool-executor" - thread-pool-executor.fixed-pool-size = 1 - throughput = 1 -} -aux-history-dispatcher { - type = Dispatcher - executor = "thread-pool-executor" - thread-pool-executor.fixed-pool-size = 2 - throughput = 1 -} -block-listener-dispatcher { - type = Dispatcher - executor = "thread-pool-executor" - thread-pool-executor.fixed-pool-size = 2 - throughput = 1 -} -delivery-manager-dispatcher { - mailbox-type = "encry.network.DeliveryManager$DeliveryManagerPriorityQueue" - type = Dispatcher - executor = "thread-pool-executor" - thread-pool-executor.fixed-pool-size = 1 - throughput = 1 -} -mempool-dispatcher { - mailbox-type = "encry.view.mempool.MemoryPool$MemoryPoolPriorityQueue" - type = Dispatcher - executor = "thread-pool-executor" - thread-pool-executor.fixed-pool-size = 2 - throughput = 1 -} \ No newline at end of file diff --git a/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerReRequestModifiesSpec.scala b/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerReRequestModifiesSpec.scala index 4fdd5d4e30..4c32e0e30b 100644 --- a/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerReRequestModifiesSpec.scala +++ b/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerReRequestModifiesSpec.scala @@ -13,6 +13,7 @@ import encry.network.NetworkController.ReceivableMessages.DataFromPeer import encry.network.NodeViewSynchronizer.ReceivableMessages._ import encry.network.PeerConnectionHandler.{ConnectedPeer, Incoming} import encry.network.PeersKeeper.UpdatedPeersCollection +import encry.network.PrioritiesCalculator.PeersPriorityStatus.PeersPriorityStatus.InitialPriority import encry.network.PrioritiesCalculator.PeersPriorityStatus.PeersPriorityStatus import encry.network.PrioritiesCalculator.PeersPriorityStatus.PeersPriorityStatus.InitialPriority import encry.settings.TestNetSettings @@ -24,7 +25,6 @@ import org.encryfoundation.common.utils.TaggedTypes.ModifierId import org.scalatest.{BeforeAndAfterAll, Matchers, OneInstancePerTest, WordSpecLike} import scala.collection.mutable.WrappedArray -import scala.concurrent.duration._ class DeliveryManagerReRequestModifiesSpec extends WordSpecLike with BeforeAndAfterAll diff --git a/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerRequestModifiesSpec.scala b/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerRequestModifiesSpec.scala index 7f3668933a..c96fb39591 100644 --- a/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerRequestModifiesSpec.scala +++ b/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerRequestModifiesSpec.scala @@ -38,11 +38,11 @@ class DeliveryManagerRequestModifiesSpec extends WordSpecLike with BeforeAndAfte def initialiseState(isChainSynced: Boolean = true, isMining: Boolean = true): (TestActorRef[DeliveryManager], ConnectedPeer, ConnectedPeer, ConnectedPeer, List[Block], List[ModifierId], List[WrappedArray.ofByte]) = { - val (deliveryManager, _) = initialiseDeliveryManager(isBlockChainSynced = isChainSynced, isMining = isMining, settings) - val (_: InetSocketAddress, cp1: ConnectedPeer) = createPeer(9001, "172.16.13.10", settings) - val (_: InetSocketAddress, cp2: ConnectedPeer) = createPeer(9002, "172.16.13.11", settings) - val (_: InetSocketAddress, cp3: ConnectedPeer) = createPeer(9003, "172.16.13.12", settings) - val blocks: List[Block] = generateBlocks(10, generateDummyHistory(settings))._2 + val (deliveryManager, _) = initialiseDeliveryManager(isBlockChainSynced = isChainSynced, isMining = isMining, testNetSettings) + val (_: InetSocketAddress, cp1: ConnectedPeer) = createPeer(9001, "172.16.13.10", testNetSettings) + val (_: InetSocketAddress, cp2: ConnectedPeer) = createPeer(9002, "172.16.13.11", testNetSettings) + val (_: InetSocketAddress, cp3: ConnectedPeer) = createPeer(9003, "172.16.13.12", testNetSettings) + val blocks: List[Block] = generateBlocks(10, generateDummyHistory(testNetSettings))._2 val headersIds: List[ModifierId] = blocks.map(_.header.id) val headersAsKey = headersIds.map(toKey) (deliveryManager, cp1, cp2, cp3, blocks, headersIds, headersAsKey) @@ -131,19 +131,19 @@ class DeliveryManagerRequestModifiesSpec extends WordSpecLike with BeforeAndAfte val address1 = new InetSocketAddress("123.123.123.123", 9001) val handler1: TestProbe = TestProbe() val cp1: ConnectedPeer = ConnectedPeer(address1, handler1.ref, Incoming, - Handshake(protocolToBytes(settings.network.appVersion), + Handshake(protocolToBytes(testNetSettings.network.appVersion), "123.123.123.123", Some(address1), System.currentTimeMillis())) val address2 = new InetSocketAddress("123.123.123.124", 9001) val handler2: TestProbe = TestProbe() val cp2: ConnectedPeer = ConnectedPeer(address2, handler2.ref, Incoming, - Handshake(protocolToBytes(settings.network.appVersion), + Handshake(protocolToBytes(testNetSettings.network.appVersion), "123.123.123.124", Some(address2), System.currentTimeMillis())) val address3 = new InetSocketAddress("123.123.123.125", 9001) val handler3: TestProbe = TestProbe() val cp3: ConnectedPeer = ConnectedPeer(address3, handler3.ref, Incoming, - Handshake(protocolToBytes(settings.network.appVersion), + Handshake(protocolToBytes(testNetSettings.network.appVersion), "123.123.123.125", Some(address3), System.currentTimeMillis())) val updatedPeersCollection: Map[InetSocketAddress, (ConnectedPeer, HistoryConsensus.Older.type, PeersPriorityStatus)] = @@ -183,13 +183,13 @@ class DeliveryManagerRequestModifiesSpec extends WordSpecLike with BeforeAndAfte val address2 = new InetSocketAddress("123.123.123.124", 9001) val handler2: TestProbe = TestProbe() val cp2: ConnectedPeer = ConnectedPeer(address2, handler2.ref, Incoming, - Handshake(protocolToBytes(settings.network.appVersion), + Handshake(protocolToBytes(testNetSettings.network.appVersion), "123.123.123.124", Some(address2), System.currentTimeMillis())) val address3 = new InetSocketAddress("123.123.123.125", 9001) val handler3: TestProbe = TestProbe() val cp3: ConnectedPeer = ConnectedPeer(address3, handler3.ref, Incoming, - Handshake(protocolToBytes(settings.network.appVersion), + Handshake(protocolToBytes(testNetSettings.network.appVersion), "123.123.123.125", Some(address3), System.currentTimeMillis())) val updatedPeersCollection = @@ -216,13 +216,13 @@ class DeliveryManagerRequestModifiesSpec extends WordSpecLike with BeforeAndAfte val address1 = new InetSocketAddress("123.123.123.123", 9001) val handler1: TestProbe = TestProbe() val cp1: ConnectedPeer = ConnectedPeer(address1, handler1.ref, Incoming, - Handshake(protocolToBytes(settings.network.appVersion), + Handshake(protocolToBytes(testNetSettings.network.appVersion), "123.123.123.123", Some(address1), System.currentTimeMillis())) val address2 = new InetSocketAddress("123.123.123.124", 9001) val handler2: TestProbe = TestProbe() val cp2: ConnectedPeer = ConnectedPeer(address2, handler2.ref, Incoming, - Handshake(protocolToBytes(settings.network.appVersion), + Handshake(protocolToBytes(testNetSettings.network.appVersion), "123.123.123.124", Some(address2), System.currentTimeMillis())) val updatedPeersCollection: Map[InetSocketAddress, (ConnectedPeer, HistoryConsensus.Older.type, PeersPriorityStatus)] = @@ -246,7 +246,7 @@ class DeliveryManagerRequestModifiesSpec extends WordSpecLike with BeforeAndAfte val address1 = new InetSocketAddress("123.123.123.123", 9001) val handler1: TestProbe = TestProbe() val cp1: ConnectedPeer = ConnectedPeer(address1, handler1.ref, Incoming, - Handshake(protocolToBytes(settings.network.appVersion), + Handshake(protocolToBytes(testNetSettings.network.appVersion), "123.123.123.123", Some(address1), System.currentTimeMillis())) val updatedPeersCollection: Map[InetSocketAddress, (ConnectedPeer, HistoryConsensus.Older.type, PeersPriorityStatus)] = @@ -266,7 +266,7 @@ class DeliveryManagerRequestModifiesSpec extends WordSpecLike with BeforeAndAfte val address1 = new InetSocketAddress("123.123.123.123", 9001) val handler1: TestProbe = TestProbe() val cp1: ConnectedPeer = ConnectedPeer(address1, handler1.ref, Incoming, - Handshake(protocolToBytes(settings.network.appVersion), + Handshake(protocolToBytes(testNetSettings.network.appVersion), "123.123.123.123", Some(address1), System.currentTimeMillis())) val updatedPeersCollection: Map[InetSocketAddress, (ConnectedPeer, HistoryConsensus.Older.type, PeersPriorityStatus)] = @@ -285,7 +285,7 @@ class DeliveryManagerRequestModifiesSpec extends WordSpecLike with BeforeAndAfte val address1 = new InetSocketAddress("123.123.123.123", 9001) val handler1: TestProbe = TestProbe() val cp1: ConnectedPeer = ConnectedPeer(address1, handler1.ref, Incoming, - Handshake(protocolToBytes(settings.network.appVersion), + Handshake(protocolToBytes(testNetSettings.network.appVersion), "123.123.123.123", Some(address1), System.currentTimeMillis())) val updatedPeersCollection: Map[InetSocketAddress, (ConnectedPeer, HistoryConsensus.Older.type, PeersPriorityStatus)] = diff --git a/src/test/scala/encry/settings/AdditionalTestSettings.scala b/src/test/scala/encry/settings/AdditionalTestSettings.scala deleted file mode 100644 index 922047a2c4..0000000000 --- a/src/test/scala/encry/settings/AdditionalTestSettings.scala +++ /dev/null @@ -1,6 +0,0 @@ -package encry.settings - -trait AdditionalTestSettings { - //settings with known peers - lazy val additionalTestSettings: EncryAppSettings = EncryAppSettings.loadConfig("AdditionalTestSettings.conf") -} diff --git a/src/test/scala/encry/settings/TestNetSettings.scala b/src/test/scala/encry/settings/TestNetSettings.scala index 7ea4702e9c..213b50ac60 100644 --- a/src/test/scala/encry/settings/TestNetSettings.scala +++ b/src/test/scala/encry/settings/TestNetSettings.scala @@ -1,6 +1,5 @@ package encry.settings trait TestNetSettings { - //settings with all peers - lazy val settings: EncryAppSettings = EncryAppSettings.loadConfig("TestNetSettings.conf") + lazy val testNetSettings: EncryAppSettings = EncryAppSettings.loadConfig("TestNetSettings.conf") } diff --git a/src/test/scala/encry/view/history/HistoryComparisionResultTest.scala b/src/test/scala/encry/view/history/HistoryComparisionResultTest.scala index a29dbce4d6..184d74ee54 100644 --- a/src/test/scala/encry/view/history/HistoryComparisionResultTest.scala +++ b/src/test/scala/encry/view/history/HistoryComparisionResultTest.scala @@ -16,8 +16,8 @@ class HistoryComparisionResultTest extends WordSpecLike "History Reader" should { "mark history as Equal where our best header is the same as other history best header" in { - val history: History = generateDummyHistory(settings) - val blocks: List[Block] = generateBlocks(100, generateDummyHistory(settings))._2 + val history: History = generateDummyHistory(testNetSettings) + val blocks: List[Block] = generateBlocks(100, generateDummyHistory(testNetSettings))._2 val syncInfo: SyncInfo = SyncInfo(blocks.map(_.header.id)) val updatedHistory: History = blocks.foldLeft(history) { case (hst, block) => @@ -29,8 +29,8 @@ class HistoryComparisionResultTest extends WordSpecLike } "mark history as Older where our best header is in other history best chain, but not at the last position" in { - val history: History = generateDummyHistory(settings) - val blocks: List[Block] = generateBlocks(100, generateDummyHistory(settings))._2 + val history: History = generateDummyHistory(testNetSettings) + val blocks: List[Block] = generateBlocks(100, generateDummyHistory(testNetSettings))._2 val syncInfo: SyncInfo = SyncInfo(blocks.map(_.header.id)) val updatedHistory: History = blocks.take(50).foldLeft(history) { case (hst, block) => @@ -42,8 +42,8 @@ class HistoryComparisionResultTest extends WordSpecLike } "mark history as Younger when comparing history is empty" in { - val history: History = generateDummyHistory(settings) - val blocks: List[Block] = generateBlocks(100, generateDummyHistory(settings))._2 + val history: History = generateDummyHistory(testNetSettings) + val blocks: List[Block] = generateBlocks(100, generateDummyHistory(testNetSettings))._2 val syncInfo: SyncInfo = SyncInfo(Seq.empty) val updatedHistory: History = blocks.foldLeft(history) { case (hst, block) => @@ -56,8 +56,8 @@ class HistoryComparisionResultTest extends WordSpecLike "mark history as Younger when our history contains all other history but other history " + "doesn't contain our last 70 headers" in { - val history: History = generateDummyHistory(settings) - val blocks: List[Block] = generateBlocks(100, generateDummyHistory(settings))._2 + val history: History = generateDummyHistory(testNetSettings) + val blocks: List[Block] = generateBlocks(100, generateDummyHistory(testNetSettings))._2 val syncInfo: SyncInfo = SyncInfo(blocks.take(30).map(_.header.id)) val updatedHistory: History = blocks.foldLeft(history) { case (hst, block) => @@ -69,9 +69,9 @@ class HistoryComparisionResultTest extends WordSpecLike } "mark history as Fork when we have same point in histories" in { - val history: History = generateDummyHistory(settings) + val history: History = generateDummyHistory(testNetSettings) - val fork = genForkOn(100, 1000, 25, 30, settings) + val fork = genForkOn(100, 1000, 25, 30, testNetSettings) val syncInfo: SyncInfo = SyncInfo( fork._1.take(25).map(_.header.id) ++: fork._2.map(_.header.id) @@ -86,7 +86,7 @@ class HistoryComparisionResultTest extends WordSpecLike } "mark history as Equal where both nodes do not keep any blocks" in { - val history: History = generateDummyHistory(settings) + val history: History = generateDummyHistory(testNetSettings) val syncInfo: SyncInfo = SyncInfo(Seq.empty) val comparisonResult = history.compare(syncInfo) @@ -94,9 +94,9 @@ class HistoryComparisionResultTest extends WordSpecLike } "mark history as Older " in { - val history: History = generateDummyHistory(settings) + val history: History = generateDummyHistory(testNetSettings) val syncInfo: SyncInfo = SyncInfo( - generateBlocks(30, generateDummyHistory(settings))._2.map(_.header.id)) + generateBlocks(30, generateDummyHistory(testNetSettings))._2.map(_.header.id)) val comparisonResult = history.compare(syncInfo) assert(comparisonResult == Older) diff --git a/src/test/scala/encry/view/history/ModifiersValidationTest.scala b/src/test/scala/encry/view/history/ModifiersValidationTest.scala index c99ddeeae0..5e38b9b4eb 100644 --- a/src/test/scala/encry/view/history/ModifiersValidationTest.scala +++ b/src/test/scala/encry/view/history/ModifiersValidationTest.scala @@ -14,16 +14,16 @@ class ModifiersValidationTest extends WordSpecLike "Modifiers validator" should { "validate genesis block" in { - val newHistory: History = generateDummyHistory(settings) - val genesisBlock: Block = generateGenesisBlock(settings.constants.GenesisHeight) + val newHistory: History = generateDummyHistory(testNetSettings) + val genesisBlock: Block = generateGenesisBlock(testNetSettings.constants.GenesisHeight) newHistory.testApplicable(genesisBlock.header).isRight shouldBe true val updatedHistory: History = newHistory.append(genesisBlock.header).right.get._1.reportModifierIsValid(genesisBlock.header) updatedHistory.testApplicable(genesisBlock.payload).isRight shouldBe true } "reject incorrect modifiers" in { - val blocks: List[Block] = generateBlocks(2, generateDummyHistory(settings))._2 - val newHistory: History = generateDummyHistory(settings) + val blocks: List[Block] = generateBlocks(2, generateDummyHistory(testNetSettings))._2 + val newHistory: History = generateDummyHistory(testNetSettings) blocks.take(1).foldLeft(newHistory) { case (history, block) => history.testApplicable(block.header).isRight shouldBe true history.append(block.header).right.get._1.reportModifierIsValid(block.header) diff --git a/src/test/scala/encry/view/mempool/MemoryPoolTests.scala b/src/test/scala/encry/view/mempool/MemoryPoolTests.scala index b766b9ecef..fae9457a7b 100644 --- a/src/test/scala/encry/view/mempool/MemoryPoolTests.scala +++ b/src/test/scala/encry/view/mempool/MemoryPoolTests.scala @@ -23,18 +23,18 @@ class MemoryPoolTests extends WordSpecLike override def afterAll(): Unit = system.terminate() - val timeProvider: NetworkTimeProvider = new NetworkTimeProvider(settings.ntp) + val timeProvider: NetworkTimeProvider = new NetworkTimeProvider(testNetSettings.ntp) "MemoryPool" should { "add new unique transactions" in { - val mempool = MemoryPoolStorage.empty(settings, timeProvider) + val mempool = MemoryPoolStorage.empty(testNetSettings, timeProvider) val transactions = genValidPaymentTxs(10) val (newMempool, validTxs) = mempool.validateTransactions(transactions) newMempool.size shouldBe 10 validTxs.map(_.encodedId).forall(transactions.map(_.encodedId).contains) shouldBe true } "reject not unique transactions" in { - val mempool = MemoryPoolStorage.empty(settings, timeProvider) + val mempool = MemoryPoolStorage.empty(testNetSettings, timeProvider) val transactions = genValidPaymentTxs(10) val (newMempool, validTxs) = mempool.validateTransactions(transactions) val (newMempoolAgain, validTxsAgain) = newMempool.validateTransactions(validTxs) @@ -42,14 +42,14 @@ class MemoryPoolTests extends WordSpecLike validTxsAgain.size shouldBe 0 } "mempoolMaxCapacity works correct" in { - val mempool = MemoryPoolStorage.empty(settings, timeProvider) + val mempool = MemoryPoolStorage.empty(testNetSettings, timeProvider) val transactions = genValidPaymentTxs(11) val (newMempool, validTxs) = mempool.validateTransactions(transactions) newMempool.size shouldBe 10 validTxs.size shouldBe 10 } "getTransactionsForMiner works fine" in { - val mempool = MemoryPoolStorage.empty(settings, timeProvider) + val mempool = MemoryPoolStorage.empty(testNetSettings, timeProvider) val transactions = genValidPaymentTxs(10) val (newMempool, validTxs) = mempool.validateTransactions(transactions) val (uPool, txs) = newMempool.getTransactionsForMiner @@ -62,7 +62,7 @@ class MemoryPoolTests extends WordSpecLike "send transactions to miner" in { val miner = TestProbe() val mempool: TestActorRef[MemoryPool] = TestActorRef[MemoryPool]( - MemoryPool.props(settings, timeProvider, miner.ref, Some(TestProbe().ref))) + MemoryPool.props(testNetSettings, timeProvider, miner.ref, Some(TestProbe().ref))) val transactions = genValidPaymentTxs(4) transactions.foreach(mempool ! NewTransaction(_)) mempool.underlyingActor.memoryPool.size shouldBe 4 From 34a47411243f11953c62984fea93b84370f29dac Mon Sep 17 00:00:00 2001 From: capdev Date: Mon, 16 Sep 2019 12:12:47 +0500 Subject: [PATCH 47/51] fix settings --- src/main/resources/application.conf | 1 - .../scala/encry/network/BlackListTests.scala | 33 +- .../network/ConnectWithNewPeerTests.scala | 362 +++++++++--------- .../ConnectedPeersCollectionsTests.scala | 24 +- .../DeliveryManagerPriorityTests.scala | 24 +- ...DeliveryManagerReRequestModifiesSpec.scala | 30 +- .../DownloadedModifiersValidatorTests.scala | 23 +- 7 files changed, 257 insertions(+), 240 deletions(-) diff --git a/src/main/resources/application.conf b/src/main/resources/application.conf index 3c9ee454c1..9b0ec65ff2 100644 --- a/src/main/resources/application.conf +++ b/src/main/resources/application.conf @@ -19,7 +19,6 @@ encry { # Is CLI available useCli = true } - mempool { # The time during which the transaction is considered valid utxMaxAge = 9m diff --git a/src/test/scala/encry/network/BlackListTests.scala b/src/test/scala/encry/network/BlackListTests.scala index fd3b931079..b90463a9ca 100644 --- a/src/test/scala/encry/network/BlackListTests.scala +++ b/src/test/scala/encry/network/BlackListTests.scala @@ -9,33 +9,44 @@ import encry.network.BlackList.BanReason._ import encry.network.PeerConnectionHandler.{ConnectedPeer, Outgoing} import encry.network.PeerConnectionHandler.ReceivableMessages.CloseConnection import encry.network.PeersKeeper.BanPeer -import encry.settings.AdditionalTestSettings +import encry.settings.TestNetSettings import org.encryfoundation.common.network.BasicMessagesRepo.Handshake import org.scalatest.{BeforeAndAfterAll, Matchers, OneInstancePerTest, WordSpecLike} +import scala.concurrent.duration._ class BlackListTests extends WordSpecLike with Matchers with BeforeAndAfterAll with InstanceFactory with OneInstancePerTest - with AdditionalTestSettings { + with TestNetSettings { implicit val system: ActorSystem = ActorSystem() override def afterAll(): Unit = system.terminate() + val knowPeersSettings = testNetSettings.copy( + network = settings.network.copy( + knownPeers = Seq(new InetSocketAddress("172.16.11.11", 9001)), + connectOnlyWithKnownPeers = Some(true) + ), + blackList = settings.blackList.copy( + banTime = 2 seconds, + cleanupTime = 3 seconds + )) + /* Unit tests */ "Black list" should { "temporary ban requested peer correctly" in { - val blackList: BlackList = BlackList(additionalTestSettings) + val blackList: BlackList = BlackList(knowPeersSettings) val peer: InetAddress = new InetSocketAddress("0.0.0.0", 9000).getAddress val newBL = blackList.banPeer(SemanticallyInvalidPersistentModifier, peer) newBL.contains(peer) shouldBe true } "clean black list from peers with expired ban time which were banned by temporary ban" in { - val blackList: BlackList = BlackList(additionalTestSettings) + val blackList: BlackList = BlackList(knowPeersSettings) val peer: InetAddress = new InetSocketAddress("0.0.0.0", 9000).getAddress val newBL = blackList.banPeer(SyntacticallyInvalidPersistentModifier, peer) Thread.sleep(2000) @@ -43,7 +54,7 @@ class BlackListTests extends WordSpecLike newBL1.contains(peer) shouldBe false } "don't remove peer from black list before ban time expired" in { - val blackList: BlackList = BlackList(additionalTestSettings) + val blackList: BlackList = BlackList(knowPeersSettings) val peer: InetAddress = new InetSocketAddress("0.0.0.0", 9000).getAddress val newBL = blackList.banPeer(SentInvForPayload, peer) val newBL1 = newBL.cleanupBlackList @@ -56,42 +67,42 @@ class BlackListTests extends WordSpecLike */ "Peers keeper" should { "handle ban peer message correctly" in { - val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(additionalTestSettings, TestProbe().ref, TestProbe().ref)) + val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(knowPeersSettings, TestProbe().ref, TestProbe().ref)) val address: InetSocketAddress = new InetSocketAddress("0.0.0.0", 9000) val peerHandler: TestProbe = TestProbe() val connectedPeer: ConnectedPeer = ConnectedPeer( address, peerHandler.ref, Outgoing, - Handshake(protocolToBytes(additionalTestSettings.network.appVersion), "test node", Some(address), System.currentTimeMillis()) + Handshake(protocolToBytes(knowPeersSettings.network.appVersion), "test node", Some(address), System.currentTimeMillis()) ) peersKeeper ! BanPeer(connectedPeer, SpamSender) peerHandler.expectMsg(CloseConnection) peersKeeper.underlyingActor.blackList.contains(address.getAddress) shouldBe true } "cleanup black list by scheduler correctly" in { - val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(additionalTestSettings, TestProbe().ref, TestProbe().ref)) + val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(knowPeersSettings, TestProbe().ref, TestProbe().ref)) val address: InetSocketAddress = new InetSocketAddress("0.0.0.0", 9000) val peerHandler: TestProbe = TestProbe() val connectedPeer: ConnectedPeer = ConnectedPeer( address, peerHandler.ref, Outgoing, - Handshake(protocolToBytes(additionalTestSettings.network.appVersion), "test node", Some(address), System.currentTimeMillis()) + Handshake(protocolToBytes(knowPeersSettings.network.appVersion), "test node", Some(address), System.currentTimeMillis()) ) peersKeeper ! BanPeer(connectedPeer, SentPeersMessageWithoutRequest) Thread.sleep(6000) peersKeeper.underlyingActor.blackList.contains(address.getAddress) shouldBe false } "don't remove peer from black list before ban time expired" in { - val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(additionalTestSettings, TestProbe().ref, TestProbe().ref)) + val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(knowPeersSettings, TestProbe().ref, TestProbe().ref)) val address: InetSocketAddress = new InetSocketAddress("0.0.0.0", 9000) val peerHandler: TestProbe = TestProbe() val connectedPeer: ConnectedPeer = ConnectedPeer( address, peerHandler.ref, Outgoing, - Handshake(protocolToBytes(additionalTestSettings.network.appVersion), "test node", Some(address), System.currentTimeMillis()) + Handshake(protocolToBytes(knowPeersSettings.network.appVersion), "test node", Some(address), System.currentTimeMillis()) ) Thread.sleep(4000) peersKeeper ! BanPeer(connectedPeer, CorruptedSerializedBytes) diff --git a/src/test/scala/encry/network/ConnectWithNewPeerTests.scala b/src/test/scala/encry/network/ConnectWithNewPeerTests.scala index 21eb44ab1d..d64de7aa11 100644 --- a/src/test/scala/encry/network/ConnectWithNewPeerTests.scala +++ b/src/test/scala/encry/network/ConnectWithNewPeerTests.scala @@ -9,157 +9,167 @@ import encry.network.BlackList.BanReason._ import encry.network.NetworkController.ReceivableMessages.DataFromPeer import encry.network.PeerConnectionHandler.{ConnectedPeer, Incoming, Outgoing} import encry.network.PeersKeeper._ -import encry.settings.{AdditionalTestSettings, EncryAppSettings, TestNetSettings} +import encry.settings.TestNetSettings import org.encryfoundation.common.network.BasicMessagesRepo.{Handshake, PeersNetworkMessage} import org.scalatest.{BeforeAndAfterAll, Matchers, OneInstancePerTest, WordSpecLike} +import scala.concurrent.duration._ class ConnectWithNewPeerTests extends WordSpecLike with Matchers with BeforeAndAfterAll with InstanceFactory with OneInstancePerTest - with TestNetSettings - with AdditionalTestSettings { + with TestNetSettings { implicit val system: ActorSystem = ActorSystem() override def afterAll(): Unit = system.terminate() + val knowPeersSettings = testNetSettings.copy( + network = testNetSettings.network.copy( + knownPeers = Seq(new InetSocketAddress("172.16.11.11", 9001)), + connectOnlyWithKnownPeers = Some(true) + ), + blackList = testNetSettings.blackList.copy( + banTime = 2 seconds, + cleanupTime = 3 seconds + )) + "Peers keeper" should { -// "maintain outgoing connection process correctly" in { -// /* Request first peer while current number of connections is 0 */ -// val networkController = TestProbe() -// val nodeViewSync = TestProbe() -// val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(settingsWithAllPeers, nodeViewSync.ref, TestProbe().ref)) -// -// val availablePeers: Map[InetSocketAddress, Int] = peersKeeper.underlyingActor.knownPeers -// -// networkController.send(peersKeeper, RequestPeerForConnection) -// networkController.expectMsg(PeerForConnection(availablePeers.head._1)) -// peersKeeper.underlyingActor.outgoingConnections.contains(availablePeers.head._1) shouldBe true -// peersKeeper.underlyingActor.awaitingHandshakeConnections.contains(availablePeers.head._1) shouldBe true -// -// val remoteAkkaConnectionHandler = TestProbe() -// -// networkController.send(peersKeeper, VerifyConnection(availablePeers.head._1, remoteAkkaConnectionHandler.ref)) -// networkController.expectMsg(ConnectionVerified(availablePeers.head._1, remoteAkkaConnectionHandler.ref, Outgoing)) -// peersKeeper.underlyingActor.outgoingConnections.contains(availablePeers.head._1) shouldBe false -// peersKeeper.underlyingActor.awaitingHandshakeConnections.contains(availablePeers.head._1) shouldBe true -// -// val peerHandler = TestProbe() -// val connectedPeer: ConnectedPeer = ConnectedPeer(availablePeers.head._1, peerHandler.ref, Outgoing, -// Handshake(protocolToBytes(settingsWithAllPeers.network.appVersion), -// "test-peer", Some(availablePeers.head._1), System.currentTimeMillis())) -// -// networkController.send(peersKeeper, HandshakedDone(connectedPeer)) -// peersKeeper.underlyingActor.awaitingHandshakeConnections.contains(availablePeers.head._1) shouldBe false -// peersKeeper.underlyingActor.knownPeers.contains(availablePeers.head._1) shouldBe true -// peersKeeper.underlyingActor.knownPeers.get(availablePeers.head._1) shouldBe Some(0) -// -// /* Request next peer after first connection setup */ -// -// val newAvailablePeers: Map[InetSocketAddress, Int] = peersKeeper.underlyingActor.knownPeers.drop(1) -// -// networkController.send(peersKeeper, RequestPeerForConnection) -// networkController.expectMsg(PeerForConnection(newAvailablePeers.head._1)) -// peersKeeper.underlyingActor.outgoingConnections.contains(newAvailablePeers.head._1) shouldBe true -// peersKeeper.underlyingActor.awaitingHandshakeConnections.contains(newAvailablePeers.head._1) shouldBe true -// -// networkController.send(peersKeeper, VerifyConnection(newAvailablePeers.head._1, remoteAkkaConnectionHandler.ref)) -// networkController.expectMsg(ConnectionVerified(newAvailablePeers.head._1, remoteAkkaConnectionHandler.ref, Outgoing)) -// peersKeeper.underlyingActor.outgoingConnections.contains(newAvailablePeers.head._1) shouldBe false -// peersKeeper.underlyingActor.awaitingHandshakeConnections.contains(newAvailablePeers.head._1) shouldBe true -// -// val newPeerHandler = TestProbe() -// val newConnectedPeer: ConnectedPeer = ConnectedPeer(newAvailablePeers.head._1, newPeerHandler.ref, Outgoing, -// Handshake(protocolToBytes(settingsWithAllPeers.network.appVersion), -// "test-peer_new", Some(newAvailablePeers.head._1), System.currentTimeMillis())) -// -// networkController.send(peersKeeper, HandshakedDone(newConnectedPeer)) -// peersKeeper.underlyingActor.awaitingHandshakeConnections.contains(newAvailablePeers.head._1) shouldBe false -// peersKeeper.underlyingActor.knownPeers.contains(newAvailablePeers.head._1) shouldBe true -// peersKeeper.underlyingActor.knownPeers.get(newAvailablePeers.head._1) shouldBe Some(0) -// -// /* Try to ask one more peer while max number of connections has been expired */ -// -// networkController.send(peersKeeper, RequestPeerForConnection) -// networkController.expectNoMsg() -// -// /* Now we will ban one peer */ -// -// val actorWhichSendBanMessage = TestProbe() -// -// actorWhichSendBanMessage.send(peersKeeper, BanPeer(newConnectedPeer, ExpiredNumberOfConnections)) -// newPeerHandler.expectMsgAnyOf(CloseConnection, GetPeersNetworkMessage) -// peersKeeper.underlyingActor.blackList.contains(newConnectedPeer.socketAddress.getAddress) shouldBe true -// networkController.send(peersKeeper, ConnectionStopped(newConnectedPeer.socketAddress)) -// peersKeeper.underlyingActor.knownPeers.contains(newConnectedPeer.socketAddress) shouldBe false -// peersKeeper.underlyingActor.connectedPeers.contains(newConnectedPeer.socketAddress) shouldBe false -// -// /* Try to setup Incoming connection from banned peer */ -// -// networkController.send(peersKeeper, VerifyConnection(newConnectedPeer.socketAddress, remoteAkkaConnectionHandler.ref)) -// networkController.expectNoMsg() -// -// /* Try to request new connection */ -// -// val updatedAvailablePeers: Map[InetSocketAddress, Int] = peersKeeper.underlyingActor.knownPeers.takeRight(1) -// -// networkController.send(peersKeeper, RequestPeerForConnection) -// networkController.expectMsg(PeerForConnection(updatedAvailablePeers.head._1)) -// peersKeeper.underlyingActor.outgoingConnections.contains(updatedAvailablePeers.head._1) shouldBe true -// peersKeeper.underlyingActor.awaitingHandshakeConnections.contains(updatedAvailablePeers.head._1) shouldBe true -// -// val updatedRemoteAkkaConnectionHandler = TestProbe() -// -// networkController.send(peersKeeper, VerifyConnection(updatedAvailablePeers.head._1, updatedRemoteAkkaConnectionHandler.ref)) -// networkController.expectMsg(ConnectionVerified(updatedAvailablePeers.head._1, updatedRemoteAkkaConnectionHandler.ref, Outgoing)) -// peersKeeper.underlyingActor.outgoingConnections.contains(updatedAvailablePeers.head._1) shouldBe false -// peersKeeper.underlyingActor.awaitingHandshakeConnections.contains(updatedAvailablePeers.head._1) shouldBe true -// -// val updatedConnectedPeer: ConnectedPeer = ConnectedPeer(updatedAvailablePeers.head._1, updatedRemoteAkkaConnectionHandler.ref, Outgoing, -// Handshake(protocolToBytes(settingsWithAllPeers.network.appVersion), -// "test-peer", Some(updatedAvailablePeers.head._1), System.currentTimeMillis())) -// -// networkController.send(peersKeeper, HandshakedDone(updatedConnectedPeer)) -// peersKeeper.underlyingActor.awaitingHandshakeConnections.contains(updatedAvailablePeers.head._1) shouldBe false -// peersKeeper.underlyingActor.knownPeers.contains(updatedAvailablePeers.head._1) shouldBe true -// peersKeeper.underlyingActor.knownPeers.get(updatedAvailablePeers.head._1) shouldBe Some(0) -// } -// "remove peer from available we can't connect to" in { -// val networkController = TestProbe() -// val nodeViewSync = TestProbe() -// val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(settingsWithAllPeers, nodeViewSync.ref, TestProbe().ref)) -// -// val availablePeers: Map[InetSocketAddress, Int] = peersKeeper.underlyingActor.knownPeers -// -// networkController.send(peersKeeper, RequestPeerForConnection) -// networkController.expectMsg(PeerForConnection(availablePeers.head._1)) -// -// networkController.send(peersKeeper, OutgoingConnectionFailed(availablePeers.head._1)) -// peersKeeper.underlyingActor.outgoingConnections.contains(availablePeers.head._1) shouldBe false -// peersKeeper.underlyingActor.awaitingHandshakeConnections.contains(availablePeers.head._1) shouldBe false -// peersKeeper.underlyingActor.knownPeers.get(availablePeers.head._1) shouldBe Some(1) -// -// networkController.send(peersKeeper, RequestPeerForConnection) -// networkController.expectMsg(PeerForConnection(availablePeers.head._1)) -// -// networkController.send(peersKeeper, OutgoingConnectionFailed(availablePeers.head._1)) -// peersKeeper.underlyingActor.outgoingConnections.contains(availablePeers.head._1) shouldBe false -// peersKeeper.underlyingActor.awaitingHandshakeConnections.contains(availablePeers.head._1) shouldBe false -// peersKeeper.underlyingActor.knownPeers.contains(availablePeers.head._1) shouldBe false -// peersKeeper.underlyingActor.blackList.contains(availablePeers.head._1.getAddress) shouldBe true -// } + // "maintain outgoing connection process correctly" in { + // /* Request first peer while current number of connections is 0 */ + // val networkController = TestProbe() + // val nodeViewSync = TestProbe() + // val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(testNetSettingsWithAllPeers, nodeViewSync.ref, TestProbe().ref)) + // + // val availablePeers: Map[InetSocketAddress, Int] = peersKeeper.underlyingActor.knownPeers + // + // networkController.send(peersKeeper, RequestPeerForConnection) + // networkController.expectMsg(PeerForConnection(availablePeers.head._1)) + // peersKeeper.underlyingActor.outgoingConnections.contains(availablePeers.head._1) shouldBe true + // peersKeeper.underlyingActor.awaitingHandshakeConnections.contains(availablePeers.head._1) shouldBe true + // + // val remoteAkkaConnectionHandler = TestProbe() + // + // networkController.send(peersKeeper, VerifyConnection(availablePeers.head._1, remoteAkkaConnectionHandler.ref)) + // networkController.expectMsg(ConnectionVerified(availablePeers.head._1, remoteAkkaConnectionHandler.ref, Outgoing)) + // peersKeeper.underlyingActor.outgoingConnections.contains(availablePeers.head._1) shouldBe false + // peersKeeper.underlyingActor.awaitingHandshakeConnections.contains(availablePeers.head._1) shouldBe true + // + // val peerHandler = TestProbe() + // val connectedPeer: ConnectedPeer = ConnectedPeer(availablePeers.head._1, peerHandler.ref, Outgoing, + // Handshake(protocolToBytes(testNetSettingsWithAllPeers.network.appVersion), + // "test-peer", Some(availablePeers.head._1), System.currentTimeMillis())) + // + // networkController.send(peersKeeper, HandshakedDone(connectedPeer)) + // peersKeeper.underlyingActor.awaitingHandshakeConnections.contains(availablePeers.head._1) shouldBe false + // peersKeeper.underlyingActor.knownPeers.contains(availablePeers.head._1) shouldBe true + // peersKeeper.underlyingActor.knownPeers.get(availablePeers.head._1) shouldBe Some(0) + // + // /* Request next peer after first connection setup */ + // + // val newAvailablePeers: Map[InetSocketAddress, Int] = peersKeeper.underlyingActor.knownPeers.drop(1) + // + // networkController.send(peersKeeper, RequestPeerForConnection) + // networkController.expectMsg(PeerForConnection(newAvailablePeers.head._1)) + // peersKeeper.underlyingActor.outgoingConnections.contains(newAvailablePeers.head._1) shouldBe true + // peersKeeper.underlyingActor.awaitingHandshakeConnections.contains(newAvailablePeers.head._1) shouldBe true + // + // networkController.send(peersKeeper, VerifyConnection(newAvailablePeers.head._1, remoteAkkaConnectionHandler.ref)) + // networkController.expectMsg(ConnectionVerified(newAvailablePeers.head._1, remoteAkkaConnectionHandler.ref, Outgoing)) + // peersKeeper.underlyingActor.outgoingConnections.contains(newAvailablePeers.head._1) shouldBe false + // peersKeeper.underlyingActor.awaitingHandshakeConnections.contains(newAvailablePeers.head._1) shouldBe true + // + // val newPeerHandler = TestProbe() + // val newConnectedPeer: ConnectedPeer = ConnectedPeer(newAvailablePeers.head._1, newPeerHandler.ref, Outgoing, + // Handshake(protocolToBytes(testNetSettingsWithAllPeers.network.appVersion), + // "test-peer_new", Some(newAvailablePeers.head._1), System.currentTimeMillis())) + // + // networkController.send(peersKeeper, HandshakedDone(newConnectedPeer)) + // peersKeeper.underlyingActor.awaitingHandshakeConnections.contains(newAvailablePeers.head._1) shouldBe false + // peersKeeper.underlyingActor.knownPeers.contains(newAvailablePeers.head._1) shouldBe true + // peersKeeper.underlyingActor.knownPeers.get(newAvailablePeers.head._1) shouldBe Some(0) + // + // /* Try to ask one more peer while max number of connections has been expired */ + // + // networkController.send(peersKeeper, RequestPeerForConnection) + // networkController.expectNoMsg() + // + // /* Now we will ban one peer */ + // + // val actorWhichSendBanMessage = TestProbe() + // + // actorWhichSendBanMessage.send(peersKeeper, BanPeer(newConnectedPeer, ExpiredNumberOfConnections)) + // newPeerHandler.expectMsgAnyOf(CloseConnection, GetPeersNetworkMessage) + // peersKeeper.underlyingActor.blackList.contains(newConnectedPeer.socketAddress.getAddress) shouldBe true + // networkController.send(peersKeeper, ConnectionStopped(newConnectedPeer.socketAddress)) + // peersKeeper.underlyingActor.knownPeers.contains(newConnectedPeer.socketAddress) shouldBe false + // peersKeeper.underlyingActor.connectedPeers.contains(newConnectedPeer.socketAddress) shouldBe false + // + // /* Try to setup Incoming connection from banned peer */ + // + // networkController.send(peersKeeper, VerifyConnection(newConnectedPeer.socketAddress, remoteAkkaConnectionHandler.ref)) + // networkController.expectNoMsg() + // + // /* Try to request new connection */ + // + // val updatedAvailablePeers: Map[InetSocketAddress, Int] = peersKeeper.underlyingActor.knownPeers.takeRight(1) + // + // networkController.send(peersKeeper, RequestPeerForConnection) + // networkController.expectMsg(PeerForConnection(updatedAvailablePeers.head._1)) + // peersKeeper.underlyingActor.outgoingConnections.contains(updatedAvailablePeers.head._1) shouldBe true + // peersKeeper.underlyingActor.awaitingHandshakeConnections.contains(updatedAvailablePeers.head._1) shouldBe true + // + // val updatedRemoteAkkaConnectionHandler = TestProbe() + // + // networkController.send(peersKeeper, VerifyConnection(updatedAvailablePeers.head._1, updatedRemoteAkkaConnectionHandler.ref)) + // networkController.expectMsg(ConnectionVerified(updatedAvailablePeers.head._1, updatedRemoteAkkaConnectionHandler.ref, Outgoing)) + // peersKeeper.underlyingActor.outgoingConnections.contains(updatedAvailablePeers.head._1) shouldBe false + // peersKeeper.underlyingActor.awaitingHandshakeConnections.contains(updatedAvailablePeers.head._1) shouldBe true + // + // val updatedConnectedPeer: ConnectedPeer = ConnectedPeer(updatedAvailablePeers.head._1, updatedRemoteAkkaConnectionHandler.ref, Outgoing, + // Handshake(protocolToBytes(testNetSettingsWithAllPeers.network.appVersion), + // "test-peer", Some(updatedAvailablePeers.head._1), System.currentTimeMillis())) + // + // networkController.send(peersKeeper, HandshakedDone(updatedConnectedPeer)) + // peersKeeper.underlyingActor.awaitingHandshakeConnections.contains(updatedAvailablePeers.head._1) shouldBe false + // peersKeeper.underlyingActor.knownPeers.contains(updatedAvailablePeers.head._1) shouldBe true + // peersKeeper.underlyingActor.knownPeers.get(updatedAvailablePeers.head._1) shouldBe Some(0) + // } + // "remove peer from available we can't connect to" in { + // val networkController = TestProbe() + // val nodeViewSync = TestProbe() + // val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(testNetSettingsWithAllPeers, nodeViewSync.ref, TestProbe().ref)) + // + // val availablePeers: Map[InetSocketAddress, Int] = peersKeeper.underlyingActor.knownPeers + // + // networkController.send(peersKeeper, RequestPeerForConnection) + // networkController.expectMsg(PeerForConnection(availablePeers.head._1)) + // + // networkController.send(peersKeeper, OutgoingConnectionFailed(availablePeers.head._1)) + // peersKeeper.underlyingActor.outgoingConnections.contains(availablePeers.head._1) shouldBe false + // peersKeeper.underlyingActor.awaitingHandshakeConnections.contains(availablePeers.head._1) shouldBe false + // peersKeeper.underlyingActor.knownPeers.get(availablePeers.head._1) shouldBe Some(1) + // + // networkController.send(peersKeeper, RequestPeerForConnection) + // networkController.expectMsg(PeerForConnection(availablePeers.head._1)) + // + // networkController.send(peersKeeper, OutgoingConnectionFailed(availablePeers.head._1)) + // peersKeeper.underlyingActor.outgoingConnections.contains(availablePeers.head._1) shouldBe false + // peersKeeper.underlyingActor.awaitingHandshakeConnections.contains(availablePeers.head._1) shouldBe false + // peersKeeper.underlyingActor.knownPeers.contains(availablePeers.head._1) shouldBe false + // peersKeeper.underlyingActor.blackList.contains(availablePeers.head._1.getAddress) shouldBe true + // } "remove peer from available if it has been banned" in { val networkController = TestProbe() val nodeViewSync = TestProbe() - val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(settings, nodeViewSync.ref, TestProbe().ref)) + val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(testNetSettings, nodeViewSync.ref, TestProbe().ref)) val availablePeers: Map[InetSocketAddress, Int] = peersKeeper.underlyingActor.knownPeers val peerHandler = TestProbe() val connectedPeer: ConnectedPeer = ConnectedPeer(availablePeers.head._1, peerHandler.ref, Outgoing, - Handshake(protocolToBytes(settings.network.appVersion), + Handshake(protocolToBytes(testNetSettings.network.appVersion), "test-peer", Some(availablePeers.head._1), System.currentTimeMillis())) networkController.send(peersKeeper, BanPeer(connectedPeer, ExpiredNumberOfConnections)) @@ -170,18 +180,18 @@ class ConnectWithNewPeerTests extends WordSpecLike "filter peers from network message" in { val networkController = TestProbe() val nodeViewSync = TestProbe() - val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(settings, nodeViewSync.ref, TestProbe().ref)) + val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(testNetSettings, nodeViewSync.ref, TestProbe().ref)) val availablePeers: Map[InetSocketAddress, Int] = peersKeeper.underlyingActor.knownPeers val peerHandler = TestProbe() val connectedPeer: ConnectedPeer = ConnectedPeer(availablePeers.head._1, peerHandler.ref, Outgoing, - Handshake(protocolToBytes(settings.network.appVersion), + Handshake(protocolToBytes(testNetSettings.network.appVersion), "test-peer", Some(availablePeers.head._1), System.currentTimeMillis())) val newPeerHandler = TestProbe() val newConnectedPeer: ConnectedPeer = ConnectedPeer(availablePeers.last._1, newPeerHandler.ref, Outgoing, - Handshake(protocolToBytes(settings.network.appVersion), + Handshake(protocolToBytes(testNetSettings.network.appVersion), "test-peer", Some(availablePeers.last._1), System.currentTimeMillis())) networkController.send(peersKeeper, BanPeer(connectedPeer, ExpiredNumberOfConnections)) @@ -199,71 +209,71 @@ class ConnectWithNewPeerTests extends WordSpecLike "handle successful connection process" in { val networkController = TestProbe() val peersSenderProbe = TestProbe() - val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(additionalTestSettings, TestProbe().ref, TestProbe().ref)) - val connectedPeer: ConnectedPeer = ConnectedPeer(settings.network.knownPeers.head, peersSenderProbe.ref, Outgoing, - Handshake(protocolToBytes(settings.network.appVersion), - "test-peer", Some(settings.network.knownPeers.head), System.currentTimeMillis())) + val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(knowPeersSettings, TestProbe().ref, TestProbe().ref)) + val connectedPeer: ConnectedPeer = ConnectedPeer(testNetSettings.network.knownPeers.head, peersSenderProbe.ref, Outgoing, + Handshake(protocolToBytes(testNetSettings.network.appVersion), + "test-peer", Some(testNetSettings.network.knownPeers.head), System.currentTimeMillis())) networkController.send(peersKeeper, RequestPeerForConnection) - networkController.expectMsg(PeerForConnection(settings.network.knownPeers.head)) - peersKeeper.underlyingActor.outgoingConnections.contains(settings.network.knownPeers.head) shouldBe true - peersKeeper.underlyingActor.knownPeers.contains(settings.network.knownPeers.head) shouldBe true + networkController.expectMsg(PeerForConnection(testNetSettings.network.knownPeers.head)) + peersKeeper.underlyingActor.outgoingConnections.contains(testNetSettings.network.knownPeers.head) shouldBe true + peersKeeper.underlyingActor.knownPeers.contains(testNetSettings.network.knownPeers.head) shouldBe true - networkController.send(peersKeeper, VerifyConnection(settings.network.knownPeers.head, peersSenderProbe.ref)) + networkController.send(peersKeeper, VerifyConnection(testNetSettings.network.knownPeers.head, peersSenderProbe.ref)) networkController.expectMsg( - ConnectionVerified(settings.network.knownPeers.head, peersSenderProbe.ref, Outgoing)) + ConnectionVerified(testNetSettings.network.knownPeers.head, peersSenderProbe.ref, Outgoing)) networkController.send(peersKeeper, HandshakedDone(connectedPeer)) - peersKeeper.underlyingActor.connectedPeers.contains(settings.network.knownPeers.head) shouldBe true + peersKeeper.underlyingActor.connectedPeers.contains(testNetSettings.network.knownPeers.head) shouldBe true } "handle stop connection process" in { val networkController = TestProbe() val peersSenderProbe = TestProbe() - val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(additionalTestSettings, TestProbe().ref, TestProbe().ref)) - val connectedPeer: ConnectedPeer = ConnectedPeer(settings.network.knownPeers.head, peersSenderProbe.ref, Outgoing, - Handshake(protocolToBytes(settings.network.appVersion), - "test-peer", Some(settings.network.knownPeers.head), System.currentTimeMillis())) + val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(knowPeersSettings, TestProbe().ref, TestProbe().ref)) + val connectedPeer: ConnectedPeer = ConnectedPeer(testNetSettings.network.knownPeers.head, peersSenderProbe.ref, Outgoing, + Handshake(protocolToBytes(testNetSettings.network.appVersion), + "test-peer", Some(testNetSettings.network.knownPeers.head), System.currentTimeMillis())) networkController.send(peersKeeper, RequestPeerForConnection) - networkController.expectMsg(PeerForConnection(settings.network.knownPeers.head)) - peersKeeper.underlyingActor.outgoingConnections.contains(settings.network.knownPeers.head) shouldBe true - peersKeeper.underlyingActor.knownPeers.contains(settings.network.knownPeers.head) shouldBe true + networkController.expectMsg(PeerForConnection(testNetSettings.network.knownPeers.head)) + peersKeeper.underlyingActor.outgoingConnections.contains(testNetSettings.network.knownPeers.head) shouldBe true + peersKeeper.underlyingActor.knownPeers.contains(testNetSettings.network.knownPeers.head) shouldBe true - networkController.send(peersKeeper, VerifyConnection(settings.network.knownPeers.head, peersSenderProbe.ref)) + networkController.send(peersKeeper, VerifyConnection(testNetSettings.network.knownPeers.head, peersSenderProbe.ref)) networkController.expectMsg( - ConnectionVerified(settings.network.knownPeers.head, peersSenderProbe.ref, Outgoing)) + ConnectionVerified(testNetSettings.network.knownPeers.head, peersSenderProbe.ref, Outgoing)) networkController.send(peersKeeper, HandshakedDone(connectedPeer)) - peersKeeper.underlyingActor.connectedPeers.contains(settings.network.knownPeers.head) shouldBe true + peersKeeper.underlyingActor.connectedPeers.contains(testNetSettings.network.knownPeers.head) shouldBe true - peersKeeper ! ConnectionStopped(settings.network.knownPeers.head) - peersKeeper.underlyingActor.connectedPeers.contains(settings.network.knownPeers.head) shouldBe false - peersKeeper.underlyingActor.knownPeers.contains(settings.network.knownPeers.head) shouldBe true + peersKeeper ! ConnectionStopped(testNetSettings.network.knownPeers.head) + peersKeeper.underlyingActor.connectedPeers.contains(testNetSettings.network.knownPeers.head) shouldBe false + peersKeeper.underlyingActor.knownPeers.contains(testNetSettings.network.knownPeers.head) shouldBe true } "handle failed connection process" in { val networkController = TestProbe() val peersSenderProbe = TestProbe() - val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(additionalTestSettings, TestProbe().ref, TestProbe().ref)) + val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(knowPeersSettings, TestProbe().ref, TestProbe().ref)) networkController.send(peersKeeper, RequestPeerForConnection) - networkController.expectMsg(PeerForConnection(settings.network.knownPeers.head)) - peersKeeper.underlyingActor.outgoingConnections.contains(settings.network.knownPeers.head) shouldBe true - peersKeeper.underlyingActor.knownPeers.contains(settings.network.knownPeers.head) shouldBe true + networkController.expectMsg(PeerForConnection(testNetSettings.network.knownPeers.head)) + peersKeeper.underlyingActor.outgoingConnections.contains(testNetSettings.network.knownPeers.head) shouldBe true + peersKeeper.underlyingActor.knownPeers.contains(testNetSettings.network.knownPeers.head) shouldBe true - networkController.send(peersKeeper, VerifyConnection(settings.network.knownPeers.head, peersSenderProbe.ref)) + networkController.send(peersKeeper, VerifyConnection(testNetSettings.network.knownPeers.head, peersSenderProbe.ref)) networkController.expectMsg( - ConnectionVerified(settings.network.knownPeers.head, peersSenderProbe.ref, Outgoing)) + ConnectionVerified(testNetSettings.network.knownPeers.head, peersSenderProbe.ref, Outgoing)) - peersKeeper ! OutgoingConnectionFailed(settings.network.knownPeers.head) - peersKeeper.underlyingActor.outgoingConnections.contains(settings.network.knownPeers.head) shouldBe false - peersKeeper.underlyingActor.knownPeers.contains(settings.network.knownPeers.head) shouldBe true + peersKeeper ! OutgoingConnectionFailed(testNetSettings.network.knownPeers.head) + peersKeeper.underlyingActor.outgoingConnections.contains(testNetSettings.network.knownPeers.head) shouldBe false + peersKeeper.underlyingActor.knownPeers.contains(testNetSettings.network.knownPeers.head) shouldBe true } "handle incoming connections correctly while connection with only known peers false " + "and incoming peer doesn't contains in black list and connected peers collection" in { val networkController = TestProbe() val remoteConnectionTestProbe: TestProbe = TestProbe() - val remoteAddress: InetSocketAddress = settings.network.knownPeers.head - val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(settings, TestProbe().ref, TestProbe().ref)) + val remoteAddress: InetSocketAddress = testNetSettings.network.knownPeers.head + val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(testNetSettings, TestProbe().ref, TestProbe().ref)) networkController.send(peersKeeper, VerifyConnection(remoteAddress, remoteConnectionTestProbe.ref)) networkController.expectMsg(ConnectionVerified(remoteAddress, remoteConnectionTestProbe.ref, Incoming)) @@ -274,9 +284,9 @@ class ConnectWithNewPeerTests extends WordSpecLike val networkController = TestProbe() val remoteConnectionTestProbe: TestProbe = TestProbe() val remoteAddress: InetSocketAddress = new InetSocketAddress("172.16.11.11", 9001) - val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(settings, TestProbe().ref, TestProbe().ref)) + val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(testNetSettings, TestProbe().ref, TestProbe().ref)) val connectedPeer: ConnectedPeer = ConnectedPeer(remoteAddress, remoteConnectionTestProbe.ref, Incoming, - Handshake(protocolToBytes(settings.network.appVersion), + Handshake(protocolToBytes(testNetSettings.network.appVersion), "test-peer", Some(remoteAddress), System.currentTimeMillis())) peersKeeper ! BanPeer(connectedPeer, SyntacticallyInvalidPersistentModifier) @@ -289,9 +299,9 @@ class ConnectWithNewPeerTests extends WordSpecLike val networkController = TestProbe() val remoteConnectionTestProbe: TestProbe = TestProbe() val remoteAddress: InetSocketAddress = new InetSocketAddress("172.16.11.11", 9001) - val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(settings, TestProbe().ref, TestProbe().ref)) + val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(testNetSettings, TestProbe().ref, TestProbe().ref)) val connectedPeer: ConnectedPeer = ConnectedPeer(remoteAddress, remoteConnectionTestProbe.ref, Incoming, - Handshake(protocolToBytes(settings.network.appVersion), + Handshake(protocolToBytes(testNetSettings.network.appVersion), "test-peer", Some(remoteAddress), System.currentTimeMillis())) peersKeeper ! HandshakedDone(connectedPeer) @@ -303,7 +313,7 @@ class ConnectWithNewPeerTests extends WordSpecLike val networkController = TestProbe() val remoteConnectionTestProbe: TestProbe = TestProbe() val remoteAddress: InetSocketAddress = new InetSocketAddress("172.16.11.11", 9001) - val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(additionalTestSettings, TestProbe().ref, TestProbe().ref)) + val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(knowPeersSettings, TestProbe().ref, TestProbe().ref)) networkController.send(peersKeeper, VerifyConnection(remoteAddress, remoteConnectionTestProbe.ref)) networkController.expectNoMsg() @@ -312,7 +322,7 @@ class ConnectWithNewPeerTests extends WordSpecLike "handle incoming connections correctly while peer is equal to local address" in { val networkController = TestProbe() val remoteConnectionTestProbe: TestProbe = TestProbe() - val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(settings, TestProbe().ref, TestProbe().ref)) + val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(testNetSettings, TestProbe().ref, TestProbe().ref)) networkController.send(peersKeeper, VerifyConnection( new InetSocketAddress("0.0.0.0", 9001), remoteConnectionTestProbe.ref)) @@ -322,13 +332,13 @@ class ConnectWithNewPeerTests extends WordSpecLike "handle outgoing connection" in { val networkController = TestProbe() val remoteConnectionTestProbe: TestProbe = TestProbe() - val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(additionalTestSettings, TestProbe().ref, TestProbe().ref)) + val peersKeeper: TestActorRef[PeersKeeper] = TestActorRef[PeersKeeper](PeersKeeper.props(knowPeersSettings, TestProbe().ref, TestProbe().ref)) peersKeeper ! RequestPeerForConnection - peersKeeper.underlyingActor.outgoingConnections.contains(additionalTestSettings.network.knownPeers.head) shouldBe true - networkController.send(peersKeeper, VerifyConnection(additionalTestSettings.network.knownPeers.head, remoteConnectionTestProbe.ref)) + peersKeeper.underlyingActor.outgoingConnections.contains(knowPeersSettings.network.knownPeers.head) shouldBe true + networkController.send(peersKeeper, VerifyConnection(knowPeersSettings.network.knownPeers.head, remoteConnectionTestProbe.ref)) networkController.expectMsg( - ConnectionVerified(additionalTestSettings.network.knownPeers.head, remoteConnectionTestProbe.ref, Outgoing)) + ConnectionVerified(knowPeersSettings.network.knownPeers.head, remoteConnectionTestProbe.ref, Outgoing)) } } } \ No newline at end of file diff --git a/src/test/scala/encry/network/ConnectedPeersCollectionsTests.scala b/src/test/scala/encry/network/ConnectedPeersCollectionsTests.scala index 2df94bfd22..76abcb9bf6 100644 --- a/src/test/scala/encry/network/ConnectedPeersCollectionsTests.scala +++ b/src/test/scala/encry/network/ConnectedPeersCollectionsTests.scala @@ -9,7 +9,7 @@ import encry.modifiers.InstanceFactory import encry.network.ConnectedPeersCollection.PeerInfo import encry.network.PeerConnectionHandler.{ConnectedPeer, Outgoing} import encry.network.PrioritiesCalculator.PeersPriorityStatus.PeersPriorityStatus._ -import encry.settings.{EncryAppSettings, AdditionalTestSettings} +import encry.settings.TestNetSettings import org.encryfoundation.common.network.BasicMessagesRepo.Handshake import org.scalatest.{Matchers, OneInstancePerTest, WordSpecLike} @@ -17,7 +17,7 @@ class ConnectedPeersCollectionsTests extends WordSpecLike with Matchers with InstanceFactory with OneInstancePerTest - with AdditionalTestSettings { + with TestNetSettings { implicit val system: ActorSystem = ActorSystem() @@ -31,7 +31,7 @@ class ConnectedPeersCollectionsTests extends WordSpecLike address, peerHandler.ref, Outgoing, - Handshake(protocolToBytes(additionalTestSettings.network.appVersion), "test node", Some(address), System.currentTimeMillis()) + Handshake(protocolToBytes(testNetSettings.network.appVersion), "test node", Some(address), System.currentTimeMillis()) ) val address1: InetSocketAddress = new InetSocketAddress("0.0.0.1", 9000) @@ -40,7 +40,7 @@ class ConnectedPeersCollectionsTests extends WordSpecLike address1, peerHandler1.ref, Outgoing, - Handshake(protocolToBytes(additionalTestSettings.network.appVersion), "test node 1", Some(address1), System.currentTimeMillis()) + Handshake(protocolToBytes(testNetSettings.network.appVersion), "test node 1", Some(address1), System.currentTimeMillis()) ) val peersSeq = Seq(connectedPeer, connectedPeer1) @@ -60,7 +60,7 @@ class ConnectedPeersCollectionsTests extends WordSpecLike address, peerHandler.ref, Outgoing, - Handshake(protocolToBytes(additionalTestSettings.network.appVersion), "test node", Some(address), System.currentTimeMillis()) + Handshake(protocolToBytes(testNetSettings.network.appVersion), "test node", Some(address), System.currentTimeMillis()) ) val address1: InetSocketAddress = new InetSocketAddress("0.0.0.1", 9000) @@ -69,7 +69,7 @@ class ConnectedPeersCollectionsTests extends WordSpecLike address1, peerHandler1.ref, Outgoing, - Handshake(protocolToBytes(additionalTestSettings.network.appVersion), "test node 1", Some(address1), System.currentTimeMillis()) + Handshake(protocolToBytes(testNetSettings.network.appVersion), "test node 1", Some(address1), System.currentTimeMillis()) ) val peersSeq = Seq(connectedPeer, connectedPeer1) @@ -99,7 +99,7 @@ class ConnectedPeersCollectionsTests extends WordSpecLike address, peerHandler.ref, Outgoing, - Handshake(protocolToBytes(additionalTestSettings.network.appVersion), "test node", Some(address), System.currentTimeMillis()) + Handshake(protocolToBytes(testNetSettings.network.appVersion), "test node", Some(address), System.currentTimeMillis()) ) val address1: InetSocketAddress = new InetSocketAddress("0.0.0.1", 9000) @@ -108,7 +108,7 @@ class ConnectedPeersCollectionsTests extends WordSpecLike address1, peerHandler1.ref, Outgoing, - Handshake(protocolToBytes(additionalTestSettings.network.appVersion), "test node 1", Some(address1), System.currentTimeMillis()) + Handshake(protocolToBytes(testNetSettings.network.appVersion), "test node 1", Some(address1), System.currentTimeMillis()) ) val address3: InetSocketAddress = new InetSocketAddress("0.3.0.0", 9000) @@ -117,7 +117,7 @@ class ConnectedPeersCollectionsTests extends WordSpecLike address3, peerHandler3.ref, Outgoing, - Handshake(protocolToBytes(additionalTestSettings.network.appVersion), "test node3", Some(address3), System.currentTimeMillis()) + Handshake(protocolToBytes(testNetSettings.network.appVersion), "test node3", Some(address3), System.currentTimeMillis()) ) val peersSeq = Seq(connectedPeer, connectedPeer1, connectedPeer3) @@ -150,7 +150,7 @@ class ConnectedPeersCollectionsTests extends WordSpecLike address, peerHandler.ref, Outgoing, - Handshake(protocolToBytes(additionalTestSettings.network.appVersion), "test node", Some(address), System.currentTimeMillis()) + Handshake(protocolToBytes(testNetSettings.network.appVersion), "test node", Some(address), System.currentTimeMillis()) ) val address1: InetSocketAddress = new InetSocketAddress("0.0.0.1", 9000) @@ -159,7 +159,7 @@ class ConnectedPeersCollectionsTests extends WordSpecLike address1, peerHandler1.ref, Outgoing, - Handshake(protocolToBytes(additionalTestSettings.network.appVersion), "test node 1", Some(address1), System.currentTimeMillis()) + Handshake(protocolToBytes(testNetSettings.network.appVersion), "test node 1", Some(address1), System.currentTimeMillis()) ) val address3: InetSocketAddress = new InetSocketAddress("0.3.0.0", 9000) @@ -168,7 +168,7 @@ class ConnectedPeersCollectionsTests extends WordSpecLike address3, peerHandler3.ref, Outgoing, - Handshake(protocolToBytes(additionalTestSettings.network.appVersion), "test node3", Some(address3), System.currentTimeMillis()) + Handshake(protocolToBytes(testNetSettings.network.appVersion), "test node3", Some(address3), System.currentTimeMillis()) ) val peersSeq = Seq(connectedPeer, connectedPeer1, connectedPeer3) diff --git a/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerPriorityTests.scala b/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerPriorityTests.scala index 86e98b17d5..410373e2b3 100644 --- a/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerPriorityTests.scala +++ b/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerPriorityTests.scala @@ -15,7 +15,7 @@ import encry.network.PeerConnectionHandler.ConnectedPeer import encry.network.PrioritiesCalculator.PeersPriorityStatus.PeersPriorityStatus import encry.network.PeersKeeper.UpdatedPeersCollection import encry.network.PrioritiesCalculator.PeersPriorityStatus.PeersPriorityStatus._ -import encry.settings.{EncryAppSettings, TestNetSettings} +import encry.settings.TestNetSettings import org.encryfoundation.common.modifiers.history.{Block, Header, HeaderProtoSerializer} import org.encryfoundation.common.network.BasicMessagesRepo.ModifiersNetworkMessage import org.encryfoundation.common.utils.TaggedTypes.ModifierId @@ -35,17 +35,17 @@ class DeliveryManagerPriorityTests extends WordSpecLike def initialiseState: (TestActorRef[DeliveryManager], ConnectedPeer, ConnectedPeer, ConnectedPeer, ConnectedPeer, ConnectedPeer, ConnectedPeer, ConnectedPeer, ConnectedPeer, ConnectedPeer, List[Block], List[ModifierId]) = { - val (deliveryManager, _) = initialiseDeliveryManager(isBlockChainSynced = true, isMining = true, settings) - val (_: InetSocketAddress, cp1: ConnectedPeer) = createPeer(9001, "172.16.13.10", settings) - val (_: InetSocketAddress, cp2: ConnectedPeer) = createPeer(9002, "172.16.13.11", settings) - val (_: InetSocketAddress, cp3: ConnectedPeer) = createPeer(9003, "172.16.13.12", settings) - val (_: InetSocketAddress, cp4: ConnectedPeer) = createPeer(9004, "172.16.13.13", settings) - val (_: InetSocketAddress, cp5: ConnectedPeer) = createPeer(9005, "172.16.13.14", settings) - val (_: InetSocketAddress, cp6: ConnectedPeer) = createPeer(9006, "172.16.13.15", settings) - val (_: InetSocketAddress, cp7: ConnectedPeer) = createPeer(9007, "172.16.13.16", settings) - val (_: InetSocketAddress, cp8: ConnectedPeer) = createPeer(9008, "172.16.13.17", settings) - val (_: InetSocketAddress, cp9: ConnectedPeer) = createPeer(9009, "172.16.13.18", settings) - val blocks: List[Block] = generateBlocks(10, generateDummyHistory(settings))._2 + val (deliveryManager, _) = initialiseDeliveryManager(isBlockChainSynced = true, isMining = true, testNetSettings) + val (_: InetSocketAddress, cp1: ConnectedPeer) = createPeer(9001, "172.16.13.10", testNetSettings) + val (_: InetSocketAddress, cp2: ConnectedPeer) = createPeer(9002, "172.16.13.11", testNetSettings) + val (_: InetSocketAddress, cp3: ConnectedPeer) = createPeer(9003, "172.16.13.12", testNetSettings) + val (_: InetSocketAddress, cp4: ConnectedPeer) = createPeer(9004, "172.16.13.13", testNetSettings) + val (_: InetSocketAddress, cp5: ConnectedPeer) = createPeer(9005, "172.16.13.14", testNetSettings) + val (_: InetSocketAddress, cp6: ConnectedPeer) = createPeer(9006, "172.16.13.15", testNetSettings) + val (_: InetSocketAddress, cp7: ConnectedPeer) = createPeer(9007, "172.16.13.16", testNetSettings) + val (_: InetSocketAddress, cp8: ConnectedPeer) = createPeer(9008, "172.16.13.17", testNetSettings) + val (_: InetSocketAddress, cp9: ConnectedPeer) = createPeer(9009, "172.16.13.18", testNetSettings) + val blocks: List[Block] = generateBlocks(10, generateDummyHistory(testNetSettings))._2 val headersIds: List[ModifierId] = blocks.map(_.header.id) (deliveryManager, cp1, cp2, cp3, cp4, cp5, cp6,cp7, cp8, cp9, blocks, headersIds) } diff --git a/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerReRequestModifiesSpec.scala b/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerReRequestModifiesSpec.scala index 4c32e0e30b..dbcbfde196 100644 --- a/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerReRequestModifiesSpec.scala +++ b/src/test/scala/encry/network/DeliveryManagerTests/DeliveryManagerReRequestModifiesSpec.scala @@ -1,7 +1,6 @@ package encry.network.DeliveryManagerTests import java.net.InetSocketAddress - import akka.actor.ActorSystem import akka.testkit.{TestActorRef, TestProbe} import encry.consensus.HistoryConsensus @@ -15,7 +14,6 @@ import encry.network.PeerConnectionHandler.{ConnectedPeer, Incoming} import encry.network.PeersKeeper.UpdatedPeersCollection import encry.network.PrioritiesCalculator.PeersPriorityStatus.PeersPriorityStatus.InitialPriority import encry.network.PrioritiesCalculator.PeersPriorityStatus.PeersPriorityStatus -import encry.network.PrioritiesCalculator.PeersPriorityStatus.PeersPriorityStatus.InitialPriority import encry.settings.TestNetSettings import encry.view.history.History import org.encryfoundation.common.modifiers.history.{Block, Header, HeaderProtoSerializer} @@ -23,7 +21,7 @@ import org.encryfoundation.common.modifiers.mempool.transaction.Transaction import org.encryfoundation.common.network.BasicMessagesRepo.{Handshake, ModifiersNetworkMessage, RequestModifiersNetworkMessage} import org.encryfoundation.common.utils.TaggedTypes.ModifierId import org.scalatest.{BeforeAndAfterAll, Matchers, OneInstancePerTest, WordSpecLike} - +import scala.concurrent.duration._ import scala.collection.mutable.WrappedArray class DeliveryManagerReRequestModifiesSpec extends WordSpecLike @@ -40,25 +38,25 @@ class DeliveryManagerReRequestModifiesSpec extends WordSpecLike def initialiseState(isChainSynced: Boolean = true, isMining: Boolean = true): (TestActorRef[DeliveryManager], ConnectedPeer, ConnectedPeer, ConnectedPeer, List[Block], List[ModifierId], List[WrappedArray.ofByte], History) = { val (deliveryManager, history) = - initialiseDeliveryManager(isBlockChainSynced = isChainSynced, isMining = isMining, settings) - val (_: InetSocketAddress, cp1: ConnectedPeer) = createPeer(9001, "172.16.13.10", settings) - val (_: InetSocketAddress, cp2: ConnectedPeer) = createPeer(9002, "172.16.13.11", settings) - val (_: InetSocketAddress, cp3: ConnectedPeer) = createPeer(9003, "172.16.13.12", settings) - val blocks: List[Block] = generateBlocks(10, generateDummyHistory(settings))._2 + initialiseDeliveryManager(isBlockChainSynced = isChainSynced, isMining = isMining, testNetSettings) + val (_: InetSocketAddress, cp1: ConnectedPeer) = createPeer(9001, "172.16.13.10", testNetSettings) + val (_: InetSocketAddress, cp2: ConnectedPeer) = createPeer(9002, "172.16.13.11", testNetSettings) + val (_: InetSocketAddress, cp3: ConnectedPeer) = createPeer(9003, "172.16.13.12", testNetSettings) + val blocks: List[Block] = generateBlocks(10, generateDummyHistory(testNetSettings))._2 val headersIds: List[ModifierId] = blocks.map(_.header.id) val headersAsKey = headersIds.map(toKey) (deliveryManager, cp1, cp2, cp3, blocks, headersIds, headersAsKey, history) } "ReRequestModifies" should { - "re-ask necessary modifier several times (number of attempts from settings) and remove modifier from " + + "re-ask necessary modifier several times (number of attempts from testNetSettings) and remove modifier from " + "expectedModifiers collection after all attempts will expire" in { val (deliveryManager, _, _, _, _, headersIds, _, _) = initialiseState() val address1 = new InetSocketAddress("123.123.123.123", 9001) val handler1: TestProbe = TestProbe() val cp1: ConnectedPeer = ConnectedPeer(address1, handler1.ref, Incoming, - Handshake(protocolToBytes(settings.network.appVersion), + Handshake(protocolToBytes(testNetSettings.network.appVersion), "123.123.123.123", Some(address1), System.currentTimeMillis())) val updatedPeersCollection: Map[InetSocketAddress, (ConnectedPeer, HistoryConsensus.Older.type, PeersPriorityStatus)] = @@ -70,7 +68,7 @@ class DeliveryManagerReRequestModifiesSpec extends WordSpecLike deliveryManager ! RequestFromLocal(cp1, Header.modifierTypeId, Seq(header)) handler1.expectMsgAllOf( - settings.network.deliveryTimeout * (settings.network.maxDeliveryChecks + 2), + testNetSettings.network.deliveryTimeout * (testNetSettings.network.maxDeliveryChecks + 2), RequestModifiersNetworkMessage(Header.modifierTypeId -> Seq(header)), RequestModifiersNetworkMessage(Header.modifierTypeId -> Seq(header)), RequestModifiersNetworkMessage(Header.modifierTypeId -> Seq(header)) @@ -87,7 +85,7 @@ class DeliveryManagerReRequestModifiesSpec extends WordSpecLike val address1 = new InetSocketAddress("123.123.123.123", 9001) val handler1: TestProbe = TestProbe() val cp1: ConnectedPeer = ConnectedPeer(address1, handler1.ref, Incoming, - Handshake(protocolToBytes(settings.network.appVersion), + Handshake(protocolToBytes(testNetSettings.network.appVersion), "123.123.123.123", Some(address1), System.currentTimeMillis())) val updatedPeersCollection: Map[InetSocketAddress, (ConnectedPeer, HistoryConsensus.Older.type, PeersPriorityStatus)] = @@ -101,7 +99,7 @@ class DeliveryManagerReRequestModifiesSpec extends WordSpecLike //await one re-ask handler1.expectMsgAllOf( - settings.network.deliveryTimeout * (settings.network.maxDeliveryChecks + 2), + testNetSettings.network.deliveryTimeout * (testNetSettings.network.maxDeliveryChecks + 2), RequestModifiersNetworkMessage(Header.modifierTypeId -> Seq(header)), RequestModifiersNetworkMessage(Header.modifierTypeId -> Seq(header)) ) @@ -118,7 +116,7 @@ class DeliveryManagerReRequestModifiesSpec extends WordSpecLike val address1 = new InetSocketAddress("123.123.123.123", 9001) val handler1: TestProbe = TestProbe() val cp1: ConnectedPeer = ConnectedPeer(address1, handler1.ref, Incoming, - Handshake(protocolToBytes(settings.network.appVersion), + Handshake(protocolToBytes(testNetSettings.network.appVersion), "123.123.123.123", Some(address1), System.currentTimeMillis())) val updatedPeersCollection: Map[InetSocketAddress, (ConnectedPeer, HistoryConsensus.Older.type, PeersPriorityStatus)] = @@ -152,7 +150,7 @@ class DeliveryManagerReRequestModifiesSpec extends WordSpecLike deliveryManager ! RequestFromLocal(cp1, Header.modifierTypeId, Seq(headerIds.head)) //this thread sleep is using for expecting modifier removal - Thread.sleep((settings.network.maxDeliveryChecks * settings.network.deliveryTimeout._1) * 1000) + Thread.sleep((testNetSettings.network.maxDeliveryChecks * testNetSettings.network.deliveryTimeout._1) * 1000) assert(deliveryManager.underlyingActor.expectedModifiers.getOrElse(cp1.socketAddress, Map.empty).isEmpty) assert(deliveryManager.underlyingActor.expectedModifiers .getOrElse(cp1.socketAddress, Map.empty) == Map.empty) @@ -164,7 +162,7 @@ class DeliveryManagerReRequestModifiesSpec extends WordSpecLike val address1 = new InetSocketAddress("123.123.123.123", 9001) val handler1: TestProbe = TestProbe() val cp1: ConnectedPeer = ConnectedPeer(address1, handler1.ref, Incoming, - Handshake(protocolToBytes(settings.network.appVersion), + Handshake(protocolToBytes(testNetSettings.network.appVersion), "123.123.123.123", Some(address1), System.currentTimeMillis())) val updatedPeersCollection: Map[InetSocketAddress, (ConnectedPeer, HistoryConsensus.Older.type, PeersPriorityStatus)] = diff --git a/src/test/scala/encry/network/DownloadedModifiersValidatorTests.scala b/src/test/scala/encry/network/DownloadedModifiersValidatorTests.scala index e182b9971c..bc9dc26b05 100644 --- a/src/test/scala/encry/network/DownloadedModifiersValidatorTests.scala +++ b/src/test/scala/encry/network/DownloadedModifiersValidatorTests.scala @@ -10,7 +10,7 @@ import encry.network.DownloadedModifiersValidator.{InvalidModifier, ModifiersFor import encry.network.NodeViewSynchronizer.ReceivableMessages.UpdatedHistory import encry.network.PeerConnectionHandler.{ConnectedPeer, Outgoing} import encry.network.PeersKeeper.BanPeer -import encry.settings.{AdditionalTestSettings, EncryAppSettings, TestNetSettings} +import encry.settings.TestNetSettings import encry.view.NodeViewHolder.ReceivableMessages.ModifierFromRemote import encry.view.history.History import org.encryfoundation.common.crypto.equihash.EquihashSolution @@ -26,8 +26,7 @@ class DownloadedModifiersValidatorTests extends WordSpecLike with BeforeAndAfterAll with InstanceFactory with OneInstancePerTest - with TestNetSettings - with AdditionalTestSettings { + with TestNetSettings { implicit val system: ActorSystem = ActorSystem() @@ -42,9 +41,9 @@ class DownloadedModifiersValidatorTests extends WordSpecLike val mempool = TestProbe() val downloadedModifiersValidator = TestActorRef[DownloadedModifiersValidator](DownloadedModifiersValidator.props( - settings.constants.ModifierIdSize, nodeViewHolder.ref, peersKeeper.ref, nodeViewSync.ref, mempool.ref, None) + testNetSettings.constants.ModifierIdSize, nodeViewHolder.ref, peersKeeper.ref, nodeViewSync.ref, mempool.ref, None) ) - val history: History = generateDummyHistory(settings) + val history: History = generateDummyHistory(testNetSettings) val address: InetSocketAddress = new InetSocketAddress("0.0.0.0", 9000) val peerHandler: TestProbe = TestProbe() @@ -52,7 +51,7 @@ class DownloadedModifiersValidatorTests extends WordSpecLike address, peerHandler.ref, Outgoing, - Handshake(protocolToBytes(settings.network.appVersion), "test node", Some(address), System.currentTimeMillis()) + Handshake(protocolToBytes(testNetSettings.network.appVersion), "test node", Some(address), System.currentTimeMillis()) ) val timestamp1 = System.currentTimeMillis() @@ -66,7 +65,7 @@ class DownloadedModifiersValidatorTests extends WordSpecLike timestamp2, 2, scala.util.Random.nextLong(), - settings.constants.InitialDifficulty, + testNetSettings.constants.InitialDifficulty, EquihashSolution(Seq(1, 3)) ) val header_second: Header = Header( @@ -76,7 +75,7 @@ class DownloadedModifiersValidatorTests extends WordSpecLike timestamp1, 1, scala.util.Random.nextLong(), - settings.constants.InitialDifficulty, + testNetSettings.constants.InitialDifficulty, EquihashSolution(Seq(1, 3)) ) @@ -106,13 +105,13 @@ class DownloadedModifiersValidatorTests extends WordSpecLike address, peerHandler.ref, Outgoing, - Handshake(protocolToBytes(settings.network.appVersion), "test node", Some(address), System.currentTimeMillis()) + Handshake(protocolToBytes(testNetSettings.network.appVersion), "test node", Some(address), System.currentTimeMillis()) ) val downloadedModifiersValidator = TestActorRef[DownloadedModifiersValidator](DownloadedModifiersValidator.props( - settings.constants.ModifierIdSize, nodeViewHolder.ref, peersKeeper.ref, nodeViewSync.ref, mempool.ref, None) + testNetSettings.constants.ModifierIdSize, nodeViewHolder.ref, peersKeeper.ref, nodeViewSync.ref, mempool.ref, None) ) - val history: History = generateDummyHistory(settings) + val history: History = generateDummyHistory(testNetSettings) val historyWith10Blocks = (0 until 10).foldLeft(history, Seq.empty[Block]) { case ((prevHistory, blocks), _) => @@ -136,4 +135,4 @@ class DownloadedModifiersValidatorTests extends WordSpecLike nodeViewHolder.expectMsg(ModifierFromRemote(payload)) } } -} +} \ No newline at end of file From 6214ce3f9c0e2c5f36676274844b28c5cd8fc0aa Mon Sep 17 00:00:00 2001 From: capdev Date: Tue, 17 Sep 2019 12:51:15 +0500 Subject: [PATCH 48/51] merge branch conflict resolve --- src/main/scala/encry/view/NodeViewHolder.scala | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/main/scala/encry/view/NodeViewHolder.scala diff --git a/src/main/scala/encry/view/NodeViewHolder.scala b/src/main/scala/encry/view/NodeViewHolder.scala deleted file mode 100644 index e69de29bb2..0000000000 From 14f5438e8b18f89f6702eee1345b426979504fa2 Mon Sep 17 00:00:00 2001 From: capdev Date: Tue, 17 Sep 2019 13:11:15 +0500 Subject: [PATCH 49/51] merge branch conflict resolve --- src/test/scala/encry/modifiers/history/ModifiersProtoTest.scala | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/test/scala/encry/modifiers/history/ModifiersProtoTest.scala b/src/test/scala/encry/modifiers/history/ModifiersProtoTest.scala index 1bf85182f5..ef8b9812e8 100644 --- a/src/test/scala/encry/modifiers/history/ModifiersProtoTest.scala +++ b/src/test/scala/encry/modifiers/history/ModifiersProtoTest.scala @@ -6,8 +6,6 @@ import HeaderProto.HeaderProtoMessage import PayloadProto.PayloadProtoMessage import TransactionProto.TransactionProtoMessage import encry.modifiers.InstanceFactory -import encry.modifiers.mempool.directive._ -import encry.modifiers.state.box._ import org.encryfoundation.common.modifiers.history._ import org.encryfoundation.common.modifiers.mempool.directive._ import org.encryfoundation.common.modifiers.mempool.transaction.{Pay2PubKeyAddress, PubKeyLockedContract, Transaction, TransactionProtoSerializer} From fc460f7503191182b9d43502062b86a2c8cad51a Mon Sep 17 00:00:00 2001 From: capdev Date: Tue, 1 Oct 2019 10:25:24 +0500 Subject: [PATCH 50/51] PR fixes --- it/src/main/scala/encry/it/api/HttpApi.scala | 8 ++++++-- .../src/test/scala/encry/it/net/NodeRestartTest.scala | 2 +- .../encry/it/net/ThreeNodesKnowAboutEachOtherTest.scala | 2 +- .../src/test/scala/encry/it/net/TwoNodesTest.scala | 2 +- .../it/net/TwoNodes\320\241onnectedThroughOneTest.scala" | 2 +- .../test/scala/encry/it/net/TwoOfflinegenDelayTest.scala | 9 +++------ .../src/test/scala/encry/it/net/TwoOfflinegenTest.scala | 2 +- src/main/scala/encry/EncryApp.scala | 2 +- src/main/scala/encry/api/http/routes/PeersApiRoute.scala | 5 ++--- 9 files changed, 17 insertions(+), 17 deletions(-) rename "it/src/test/scala/encry/it/various\320\241ompound/NodeRestartTest.scala" => it/src/test/scala/encry/it/net/NodeRestartTest.scala (98%) rename "it/src/test/scala/encry/it/various\320\241ompound/ThreeNodesKnowAboutEachOtherTest.scala" => it/src/test/scala/encry/it/net/ThreeNodesKnowAboutEachOtherTest.scala (98%) rename "it/src/test/scala/encry/it/various\320\241ompound/TwoNodesTest.scala" => it/src/test/scala/encry/it/net/TwoNodesTest.scala (97%) rename "it/src/test/scala/encry/it/various\320\241ompound/TwoNodes\320\241onnectedThroughOneTest.scala" => "it/src/test/scala/encry/it/net/TwoNodes\320\241onnectedThroughOneTest.scala" (98%) rename "it/src/test/scala/encry/it/various\320\241ompound/TwoOfflinegenDelayTest.scala" => it/src/test/scala/encry/it/net/TwoOfflinegenDelayTest.scala (89%) rename "it/src/test/scala/encry/it/various\320\241ompound/TwoOfflinegenTest.scala" => it/src/test/scala/encry/it/net/TwoOfflinegenTest.scala (97%) diff --git a/it/src/main/scala/encry/it/api/HttpApi.scala b/it/src/main/scala/encry/it/api/HttpApi.scala index f1d3d0128a..52b2553876 100644 --- a/it/src/main/scala/encry/it/api/HttpApi.scala +++ b/it/src/main/scala/encry/it/api/HttpApi.scala @@ -92,8 +92,8 @@ trait HttpApi { // scalastyle:ignore def bestFullHeaderId: Future[String] = get("/info") flatMap { r => val response = jsonAnswerAs[Json](r.getResponseBody) - val eitherHeight = response.hcursor.downField("bestFullHeaderId").as[Option[String]] - eitherHeight.fold[Future[String]]( + val eitherId = response.hcursor.downField("bestFullHeaderId").as[Option[String]] + eitherId.fold[Future[String]]( e => Future.failed(new Exception(s"Error getting `bestFullHeaderId` from /info response: $e\n$response", e)), maybeId => Future.successful(maybeId.getOrElse("")) ) @@ -172,4 +172,8 @@ trait HttpApi { // scalastyle:ignore def postJson[A: Encoder](path: String, body: A): Future[Response] = post(path, body.asJson.toString()) + def error(): Unit = { + + } + } \ No newline at end of file diff --git "a/it/src/test/scala/encry/it/various\320\241ompound/NodeRestartTest.scala" b/it/src/test/scala/encry/it/net/NodeRestartTest.scala similarity index 98% rename from "it/src/test/scala/encry/it/various\320\241ompound/NodeRestartTest.scala" rename to it/src/test/scala/encry/it/net/NodeRestartTest.scala index 43712daa53..60eda7dedc 100644 --- "a/it/src/test/scala/encry/it/various\320\241ompound/NodeRestartTest.scala" +++ b/it/src/test/scala/encry/it/net/NodeRestartTest.scala @@ -1,4 +1,4 @@ -package encry.it.variousСompound +package encry.it.net import java.nio.file.Paths diff --git "a/it/src/test/scala/encry/it/various\320\241ompound/ThreeNodesKnowAboutEachOtherTest.scala" b/it/src/test/scala/encry/it/net/ThreeNodesKnowAboutEachOtherTest.scala similarity index 98% rename from "it/src/test/scala/encry/it/various\320\241ompound/ThreeNodesKnowAboutEachOtherTest.scala" rename to it/src/test/scala/encry/it/net/ThreeNodesKnowAboutEachOtherTest.scala index 7a9f5150e2..d0aaf787b2 100644 --- "a/it/src/test/scala/encry/it/various\320\241ompound/ThreeNodesKnowAboutEachOtherTest.scala" +++ b/it/src/test/scala/encry/it/net/ThreeNodesKnowAboutEachOtherTest.scala @@ -1,4 +1,4 @@ -package encry.it.variousСompound +package encry.it.net import encry.it.configs.Configs import encry.it.docker.Docker.defaultConf diff --git "a/it/src/test/scala/encry/it/various\320\241ompound/TwoNodesTest.scala" b/it/src/test/scala/encry/it/net/TwoNodesTest.scala similarity index 97% rename from "it/src/test/scala/encry/it/various\320\241ompound/TwoNodesTest.scala" rename to it/src/test/scala/encry/it/net/TwoNodesTest.scala index 3c3b85af47..c19ce24483 100644 --- "a/it/src/test/scala/encry/it/various\320\241ompound/TwoNodesTest.scala" +++ b/it/src/test/scala/encry/it/net/TwoNodesTest.scala @@ -1,4 +1,4 @@ -package encry.it.variousСompound +package encry.it.net import encry.it.configs.Configs import encry.it.docker.Docker.defaultConf diff --git "a/it/src/test/scala/encry/it/various\320\241ompound/TwoNodes\320\241onnectedThroughOneTest.scala" "b/it/src/test/scala/encry/it/net/TwoNodes\320\241onnectedThroughOneTest.scala" similarity index 98% rename from "it/src/test/scala/encry/it/various\320\241ompound/TwoNodes\320\241onnectedThroughOneTest.scala" rename to "it/src/test/scala/encry/it/net/TwoNodes\320\241onnectedThroughOneTest.scala" index f7130ec422..81b9b375d5 100644 --- "a/it/src/test/scala/encry/it/various\320\241ompound/TwoNodes\320\241onnectedThroughOneTest.scala" +++ "b/it/src/test/scala/encry/it/net/TwoNodes\320\241onnectedThroughOneTest.scala" @@ -1,4 +1,4 @@ -package encry.it.variousСompound +package encry.it.net import encry.it.configs.Configs import encry.it.docker.Docker.defaultConf diff --git "a/it/src/test/scala/encry/it/various\320\241ompound/TwoOfflinegenDelayTest.scala" b/it/src/test/scala/encry/it/net/TwoOfflinegenDelayTest.scala similarity index 89% rename from "it/src/test/scala/encry/it/various\320\241ompound/TwoOfflinegenDelayTest.scala" rename to it/src/test/scala/encry/it/net/TwoOfflinegenDelayTest.scala index 0dd4ed36e6..4e858e0004 100644 --- "a/it/src/test/scala/encry/it/various\320\241ompound/TwoOfflinegenDelayTest.scala" +++ b/it/src/test/scala/encry/it/net/TwoOfflinegenDelayTest.scala @@ -1,19 +1,16 @@ -package encry.it.variousСompound +package encry.it.net import encry.it.configs.Configs import encry.it.docker.Docker.defaultConf import encry.it.docker.DockerAfterAll import encry.it.util.WaitUtils._ import org.scalatest.{FunSuite, Matchers} +import encry.it.utils.FutureBlockedRun._ import scala.concurrent.duration._ -import scala.concurrent.{Await, Future} -class TwoOfflinegenDelayTest extends FunSuite with Matchers with DockerAfterAll { - implicit class FutureBlockedRun[T](future: Future[T]) { - def run(implicit duration: Duration): T = Await.result(future, duration) - } +class TwoOfflinegenDelayTest extends FunSuite with Matchers with DockerAfterAll { implicit val futureDuration: FiniteDuration = 20 minutes val heightSeparation = 10 //blocks diff --git "a/it/src/test/scala/encry/it/various\320\241ompound/TwoOfflinegenTest.scala" b/it/src/test/scala/encry/it/net/TwoOfflinegenTest.scala similarity index 97% rename from "it/src/test/scala/encry/it/various\320\241ompound/TwoOfflinegenTest.scala" rename to it/src/test/scala/encry/it/net/TwoOfflinegenTest.scala index a0075160b5..2613891d84 100644 --- "a/it/src/test/scala/encry/it/various\320\241ompound/TwoOfflinegenTest.scala" +++ b/it/src/test/scala/encry/it/net/TwoOfflinegenTest.scala @@ -1,4 +1,4 @@ -package encry.it.variousСompound +package encry.it.net import encry.it.configs.Configs import encry.it.docker.Docker.defaultConf diff --git a/src/main/scala/encry/EncryApp.scala b/src/main/scala/encry/EncryApp.scala index 0c1c6ec89b..df9478e61a 100644 --- a/src/main/scala/encry/EncryApp.scala +++ b/src/main/scala/encry/EncryApp.scala @@ -82,7 +82,7 @@ object EncryApp extends App with StrictLogging { } val apiRoutes: Seq[ApiRoute] = Seq( - PeersApiRoute(settings.restApi, dataHolderForApi), + PeersApiRoute(settings.restApi, dataHolderForApi, nodeViewSynchronizer), InfoApiRoute(dataHolderForApi, settings, nodeId, timeProvider), HistoryApiRoute(dataHolderForApi, settings, nodeId), TransactionsApiRoute(dataHolderForApi, memoryPool, settings.restApi), diff --git a/src/main/scala/encry/api/http/routes/PeersApiRoute.scala b/src/main/scala/encry/api/http/routes/PeersApiRoute.scala index f5f3a1a504..f71860475c 100755 --- a/src/main/scala/encry/api/http/routes/PeersApiRoute.scala +++ b/src/main/scala/encry/api/http/routes/PeersApiRoute.scala @@ -6,7 +6,6 @@ import akka.actor.{ActorRef, ActorRefFactory} import akka.http.scaladsl.model.StatusCodes import akka.http.scaladsl.server.Route import akka.pattern.ask -import encry.EncryApp.nodeViewSynchronizer import encry.api.http.DataHolderForApi.{GetAllPeers, GetBannedPeers, GetConnectedPeers} import encry.api.http.routes.PeersApiRoute.PeerInfoResponse import encry.cli.commands.AddPeer.PeerFromCli @@ -20,8 +19,8 @@ import io.circe.generic.semiauto._ import scala.concurrent.Future import scala.util.{Failure, Success, Try} -case class PeersApiRoute(override val settings: RESTApiSettings, - dataHolder: ActorRef)(implicit val context: ActorRefFactory) extends EncryBaseApiRoute { +case class PeersApiRoute(override val settings: RESTApiSettings, dataHolder: ActorRef, nodeViewSynchronizer: ActorRef) + (implicit val context: ActorRefFactory) extends EncryBaseApiRoute { override lazy val route: Route = pathPrefix("peers") { connectedPeers ~ connectPeer ~ allPeers ~ bannedList From f98e344a8384789dfcb6ee49735ea74871a72584 Mon Sep 17 00:00:00 2001 From: capdev Date: Wed, 2 Oct 2019 10:42:09 +0500 Subject: [PATCH 51/51] rename --- .../scala/encry/it/net/NodeRestartTest.scala | 20 +++++++++---------- .../ThreeNodesKnowAboutEachOtherTest.scala | 12 +++++------ .../scala/encry/it/net/TwoNodesTest.scala | 6 +++--- ...Nodes\320\241onnectedThroughOneTest.scala" | 10 +++++----- .../encry/it/net/TwoOfflinegenDelayTest.scala | 10 +++++----- .../encry/it/net/TwoOfflinegenTest.scala | 6 +++--- .../scala/encry/it/utils/FutureAwait.scala | 12 +++++++++++ .../encry/it/utils/FutureBlockedRun.scala | 12 ----------- 8 files changed, 44 insertions(+), 44 deletions(-) create mode 100644 it/src/test/scala/encry/it/utils/FutureAwait.scala delete mode 100644 it/src/test/scala/encry/it/utils/FutureBlockedRun.scala diff --git a/it/src/test/scala/encry/it/net/NodeRestartTest.scala b/it/src/test/scala/encry/it/net/NodeRestartTest.scala index 60eda7dedc..c7611d4ebf 100644 --- a/it/src/test/scala/encry/it/net/NodeRestartTest.scala +++ b/it/src/test/scala/encry/it/net/NodeRestartTest.scala @@ -6,7 +6,7 @@ import encry.it.configs.Configs import encry.it.docker.Docker.defaultConf import encry.it.docker.DockerAfterAll import encry.it.util.WaitUtils._ -import encry.it.utils.FutureBlockedRun._ +import encry.it.utils.FutureAwait._ import org.encryfoundation.common.utils.Algos import org.scalatest.{AsyncFunSuite, Matchers} import scorex.utils.Random @@ -39,17 +39,17 @@ class NodeRestartTest extends AsyncFunSuite with Matchers with DockerAfterAll { Some(volumeName, containerMountPath) ) - node1.connect(s"${node21.nodeIp}:9001").run - node21.connect(s"${node1.nodeIp}:9001").run + node1.connect(s"${node21.nodeIp}:9001").await + node21.connect(s"${node1.nodeIp}:9001").await - node1.waitForFullHeight(5).run + node1.waitForFullHeight(5).await node21.shutdown Thread.sleep(5000) docker.stopNode(node21, 5) Thread.sleep(7000) - node1.waitForFullHeight(10).run + node1.waitForFullHeight(10).await val node22 = docker .startNodeInternal(Configs.mining(true) @@ -62,15 +62,15 @@ class NodeRestartTest extends AsyncFunSuite with Matchers with DockerAfterAll { Some(volumeName, containerMountPath) ) - node1.waitForFullHeight(15).run + node1.waitForFullHeight(15).await - node1.connect(s"${node22.nodeIp}:9002").run - node22.connect(s"${node1.nodeIp}:9001").run + node1.connect(s"${node22.nodeIp}:9002").await + node22.connect(s"${node1.nodeIp}:9001").await - node1.waitForFullHeight(20).run + node1.waitForFullHeight(20).await val (bestFullHeaderId1, bestFullHeaderId2) = - waitForEqualsId(node1.bestFullHeaderId.run, node22.bestFullHeaderId.run) + waitForEqualsId(node1.bestFullHeaderId.await, node22.bestFullHeaderId.await) bestFullHeaderId2 shouldEqual bestFullHeaderId1 } diff --git a/it/src/test/scala/encry/it/net/ThreeNodesKnowAboutEachOtherTest.scala b/it/src/test/scala/encry/it/net/ThreeNodesKnowAboutEachOtherTest.scala index d0aaf787b2..e8b0471341 100644 --- a/it/src/test/scala/encry/it/net/ThreeNodesKnowAboutEachOtherTest.scala +++ b/it/src/test/scala/encry/it/net/ThreeNodesKnowAboutEachOtherTest.scala @@ -4,7 +4,7 @@ import encry.it.configs.Configs import encry.it.docker.Docker.defaultConf import encry.it.docker.DockerAfterAll import encry.it.util.WaitUtils._ -import encry.it.utils.FutureBlockedRun._ +import encry.it.utils.FutureAwait._ import org.scalatest.{FunSuite, Matchers} import scala.concurrent.duration._ @@ -25,7 +25,7 @@ class ThreeNodesKnowAboutEachOtherTest extends FunSuite with Matchers with Docke .withFallback(defaultConf) ) - node1.waitForFullHeight(heightSeparation).run + node1.waitForFullHeight(heightSeparation).await val node2 = docker .startNodeInternal(Configs.nodeName("node2") @@ -36,9 +36,9 @@ class ThreeNodesKnowAboutEachOtherTest extends FunSuite with Matchers with Docke .withFallback(defaultConf) ) - node1.connect(s"${node2.nodeIp}:9001").run + node1.connect(s"${node2.nodeIp}:9001").await - node1.waitForFullHeight(heightSeparation * 2).run + node1.waitForFullHeight(heightSeparation * 2).await val node3 = docker .startNodeInternal(Configs.nodeName("node3") @@ -49,10 +49,10 @@ class ThreeNodesKnowAboutEachOtherTest extends FunSuite with Matchers with Docke .withFallback(defaultConf) ) - waitForEqualsId(node1.bestFullHeaderId.run, node3.bestFullHeaderId.run) + waitForEqualsId(node1.bestFullHeaderId.await, node3.bestFullHeaderId.await) val (bestFullHeaderId2, bestFullHeaderId3) = - waitForEqualsId(node2.bestFullHeaderId.run, node3.bestFullHeaderId.run) + waitForEqualsId(node2.bestFullHeaderId.await, node3.bestFullHeaderId.await) bestFullHeaderId2 shouldEqual bestFullHeaderId3 } diff --git a/it/src/test/scala/encry/it/net/TwoNodesTest.scala b/it/src/test/scala/encry/it/net/TwoNodesTest.scala index c19ce24483..196ee9d7c4 100644 --- a/it/src/test/scala/encry/it/net/TwoNodesTest.scala +++ b/it/src/test/scala/encry/it/net/TwoNodesTest.scala @@ -4,7 +4,7 @@ import encry.it.configs.Configs import encry.it.docker.Docker.defaultConf import encry.it.docker.{Docker, DockerAfterAll} import encry.it.util.WaitUtils._ -import encry.it.utils.FutureBlockedRun._ +import encry.it.utils.FutureAwait._ import org.scalatest.{FunSuite, Matchers} import scala.concurrent.duration._ @@ -25,7 +25,7 @@ class TwoNodesTest extends FunSuite with Matchers with DockerAfterAll { val node1 = docker .startNodeInternal(miningNodeConfig.withFallback(Configs.nodeName("node1"))) - node1.waitForFullHeight(heightSeparation).run + node1.waitForFullHeight(heightSeparation).await val node2 = docker .startNodeInternal( @@ -36,7 +36,7 @@ class TwoNodesTest extends FunSuite with Matchers with DockerAfterAll { ) val (bestFullHeaderId1, bestFullHeaderId2) = - waitForEqualsId(node1.bestFullHeaderId.run, node2.bestFullHeaderId.run) + waitForEqualsId(node1.bestFullHeaderId.await, node2.bestFullHeaderId.await) bestFullHeaderId2 shouldEqual bestFullHeaderId1 } diff --git "a/it/src/test/scala/encry/it/net/TwoNodes\320\241onnectedThroughOneTest.scala" "b/it/src/test/scala/encry/it/net/TwoNodes\320\241onnectedThroughOneTest.scala" index 81b9b375d5..ecd600073b 100644 --- "a/it/src/test/scala/encry/it/net/TwoNodes\320\241onnectedThroughOneTest.scala" +++ "b/it/src/test/scala/encry/it/net/TwoNodes\320\241onnectedThroughOneTest.scala" @@ -4,7 +4,7 @@ import encry.it.configs.Configs import encry.it.docker.Docker.defaultConf import encry.it.docker.DockerAfterAll import encry.it.util.WaitUtils._ -import encry.it.utils.FutureBlockedRun._ +import encry.it.utils.FutureAwait._ import org.scalatest.{FunSuite, Matchers} import scala.concurrent.duration._ @@ -25,7 +25,7 @@ class TwoNodesСonnectedThroughOneTest extends FunSuite with Matchers with Docke .withFallback(defaultConf) ) - node1.waitForFullHeight(heightSeparation).run + node1.waitForFullHeight(heightSeparation).await val node2 = docker .startNodeInternal(Configs.nodeName("node2") @@ -36,7 +36,7 @@ class TwoNodesСonnectedThroughOneTest extends FunSuite with Matchers with Docke .withFallback(defaultConf) ) - node1.waitForFullHeight(heightSeparation * 2).run + node1.waitForFullHeight(heightSeparation * 2).await val node3 = docker .startNodeInternal(Configs.nodeName("node3") @@ -47,10 +47,10 @@ class TwoNodesСonnectedThroughOneTest extends FunSuite with Matchers with Docke .withFallback(defaultConf) ) - waitForEqualsId(node1.bestFullHeaderId.run, node3.bestFullHeaderId.run) + waitForEqualsId(node1.bestFullHeaderId.await, node3.bestFullHeaderId.await) val (bestFullHeaderId2, bestFullHeaderId3) = - waitForEqualsId(node2.bestFullHeaderId.run, node3.bestFullHeaderId.run) + waitForEqualsId(node2.bestFullHeaderId.await, node3.bestFullHeaderId.await) bestFullHeaderId2 shouldEqual bestFullHeaderId3 } diff --git a/it/src/test/scala/encry/it/net/TwoOfflinegenDelayTest.scala b/it/src/test/scala/encry/it/net/TwoOfflinegenDelayTest.scala index 4e858e0004..c354cef911 100644 --- a/it/src/test/scala/encry/it/net/TwoOfflinegenDelayTest.scala +++ b/it/src/test/scala/encry/it/net/TwoOfflinegenDelayTest.scala @@ -5,7 +5,7 @@ import encry.it.docker.Docker.defaultConf import encry.it.docker.DockerAfterAll import encry.it.util.WaitUtils._ import org.scalatest.{FunSuite, Matchers} -import encry.it.utils.FutureBlockedRun._ +import encry.it.utils.FutureAwait._ import scala.concurrent.duration._ @@ -27,12 +27,12 @@ class TwoOfflinegenDelayTest extends FunSuite with Matchers with DockerAfterAll val node1 = docker .startNodeInternal(miningNodeConfig.withFallback(Configs.nodeName("node1"))) - node1.waitForFullHeight(heightSeparation).run + node1.waitForFullHeight(heightSeparation).await val node2 = docker .startNodeInternal(miningNodeConfig.withFallback(Configs.nodeName("node2"))) - node1.waitForFullHeight(heightSeparation * 2).run + node1.waitForFullHeight(heightSeparation * 2).await val node3 = docker .startNodeInternal( @@ -44,10 +44,10 @@ class TwoOfflinegenDelayTest extends FunSuite with Matchers with DockerAfterAll ) val (bestFullHeaderId13, bestFullHeaderId3) = - waitForEqualsId(node1.bestFullHeaderId.run, node3.bestFullHeaderId.run) + waitForEqualsId(node1.bestFullHeaderId.await, node3.bestFullHeaderId.await) val (bestFullHeaderId12, bestFullHeaderId2) = - waitForEqualsId(node1.bestFullHeaderId.run, node2.bestFullHeaderId.run) + waitForEqualsId(node1.bestFullHeaderId.await, node2.bestFullHeaderId.await) bestFullHeaderId3 shouldEqual bestFullHeaderId13 bestFullHeaderId2 shouldEqual bestFullHeaderId12 diff --git a/it/src/test/scala/encry/it/net/TwoOfflinegenTest.scala b/it/src/test/scala/encry/it/net/TwoOfflinegenTest.scala index 2613891d84..54eed94b8c 100644 --- a/it/src/test/scala/encry/it/net/TwoOfflinegenTest.scala +++ b/it/src/test/scala/encry/it/net/TwoOfflinegenTest.scala @@ -4,7 +4,7 @@ import encry.it.configs.Configs import encry.it.docker.Docker.defaultConf import encry.it.docker.DockerAfterAll import encry.it.util.WaitUtils._ -import encry.it.utils.FutureBlockedRun._ +import encry.it.utils.FutureAwait._ import org.scalatest.{FunSuite, Matchers} import scala.concurrent.duration._ @@ -29,7 +29,7 @@ class TwoOfflinegenTest extends FunSuite with Matchers with DockerAfterAll { val node2 = docker .startNodeInternal(miningNodeConfig.withFallback(Configs.nodeName("node2"))) - node1.waitForFullHeight(heightSeparation).run + node1.waitForFullHeight(heightSeparation).await val node3 = docker .startNodeInternal( @@ -41,7 +41,7 @@ class TwoOfflinegenTest extends FunSuite with Matchers with DockerAfterAll { ) val (bestFullHeaderId1, bestFullHeaderId3) = - waitForEqualsId(node1.bestFullHeaderId.run, node3.bestFullHeaderId.run) + waitForEqualsId(node1.bestFullHeaderId.await, node3.bestFullHeaderId.await) bestFullHeaderId3 shouldEqual bestFullHeaderId1 } diff --git a/it/src/test/scala/encry/it/utils/FutureAwait.scala b/it/src/test/scala/encry/it/utils/FutureAwait.scala new file mode 100644 index 0000000000..a76e1baa80 --- /dev/null +++ b/it/src/test/scala/encry/it/utils/FutureAwait.scala @@ -0,0 +1,12 @@ +package encry.it.utils + +import scala.concurrent.{Await, Future} +import scala.concurrent.duration.Duration + +object FutureAwait { + + implicit class FutureAwait[T](future: Future[T]) { + def await(implicit duration: Duration): T = Await.result(future, duration) + } + +} diff --git a/it/src/test/scala/encry/it/utils/FutureBlockedRun.scala b/it/src/test/scala/encry/it/utils/FutureBlockedRun.scala deleted file mode 100644 index d5f81fb452..0000000000 --- a/it/src/test/scala/encry/it/utils/FutureBlockedRun.scala +++ /dev/null @@ -1,12 +0,0 @@ -package encry.it.utils - -import scala.concurrent.{Await, Future} -import scala.concurrent.duration.Duration - -object FutureBlockedRun { - - implicit class FutureBlockedRun[T](future: Future[T]) { - def run(implicit duration: Duration): T = Await.result(future, duration) - } - -}