Skip to content

Commit

Permalink
fix conflicts
Browse files Browse the repository at this point in the history
  • Loading branch information
KonradStaniec committed Sep 17, 2018
2 parents fe16bbf + 5cdfa40 commit 5b9647d
Show file tree
Hide file tree
Showing 192 changed files with 5,489 additions and 1,743 deletions.
41 changes: 23 additions & 18 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -11,42 +11,44 @@ val commonSettings = Seq(
resolvers += "stepsoft" at "http://nexus.mcsherrylabs.com/repository/releases/"

val dep = {
val akkaVersion = "2.4.17"
val akkaHttpVersion = "10.0.6"
val circeVersion = "0.7.0"
val akkaVersion = "2.5.12"
val akkaHttpVersion = "10.1.1"
val circeVersion = "0.9.3"
val levelDb = "0.12"
val rocksDb = "5.14.2"


Seq(
"com.typesafe.akka" %% "akka-actor" % akkaVersion,
"com.typesafe.akka" %% "akka-agent" % akkaVersion,
"com.typesafe.akka" %% "akka-slf4j" % akkaVersion,
"com.typesafe.akka" %% "akka-testkit" % akkaVersion,
"com.typesafe.akka" %% "akka-http" % akkaHttpVersion,
"ch.megard" %% "akka-http-cors" % "0.2.1",
"org.json4s" %% "json4s-native" % "3.5.1",
"de.heikoseeberger" %% "akka-http-json4s" % "1.11.0",
"ch.megard" %% "akka-http-cors" % "0.3.0",
"org.json4s" %% "json4s-native" % "3.5.4",
"de.heikoseeberger" %% "akka-http-json4s" % "1.21.0",
"com.typesafe.akka" %% "akka-http-testkit" % akkaHttpVersion % "it,test",
"io.suzaku" %% "boopickle" % "1.2.6",
"org.iq80.leveldb" % "leveldb" % "0.12",
"org.iq80.leveldb" % "leveldb-api" % "0.12",
"io.suzaku" %% "boopickle" % "1.3.0",
"org.iq80.leveldb" % "leveldb-api" % levelDb,
"org.iq80.leveldb" % "leveldb" % levelDb,
"org.rocksdb" % "rocksdbjni" % rocksDb,
"org.scorexfoundation" %% "iodb" % "0.3.0",
"org.scalatest" %% "scalatest" % "3.0.1" % "it,test",
"org.scalamock" %% "scalamock-scalatest-support" % "3.5.0" % "test",
"org.scalacheck" %% "scalacheck" % "1.13.4" % "it,test",
"org.scalacheck" %% "scalacheck" % "1.13.4" % "it,test",
"ch.qos.logback" % "logback-classic" % "1.1.9",
"org.scalatest" %% "scalatest" % "3.0.5" % "it,test",
"org.scalamock" %% "scalamock-scalatest-support" % "3.6.0" % "test",
"org.scalacheck" %% "scalacheck" % "1.14.0" % "it,test",
"ch.qos.logback" % "logback-classic" % "1.2.3",
"org.jline" % "jline" % "3.1.2",
"org.scala-lang.modules" %% "scala-parser-combinators" % "1.0.5",
"org.scala-lang.modules" %% "scala-parser-combinators" % "1.1.0",
"io.circe" %% "circe-core" % circeVersion,
"io.circe" %% "circe-generic" % circeVersion,
"io.circe" %% "circe-parser" % circeVersion,
"io.circe" %% "circe-generic-extras" % circeVersion,
"com.miguno.akka" %% "akka-mock-scheduler" % "0.5.1" % "it,test",
"commons-io" % "commons-io" % "2.5",
"commons-io" % "commons-io" % "2.6",
"com.typesafe.akka" %% "akka-stream" % akkaVersion,
"org.scala-sbt.ipcsocket" % "ipcsocket" % "1.0.0",
"org.bouncycastle" % "bcprov-jdk15on" % "1.59",

"com.twitter" %% "util-collection" % "18.4.0",
"com.twitter" %% "util-collection" % "18.5.0",

// Pluggable Consensus: AtomixRaft
"io.atomix" % "atomix" % "2.1.0-beta1",
Expand All @@ -61,6 +63,7 @@ val dep = {

// Metrics (https://github.com/DataDog/java-dogstatsd-client)
"com.datadoghq" % "java-dogstatsd-client" % "2.5",
"org.xerial.snappy" % "snappy-java" % "1.1.7.2",
"org.web3j" % "core" % "3.4.0" % "test"
)
}
Expand Down Expand Up @@ -147,3 +150,5 @@ jdkPackagerJVMArgs := Seq(
"-Dlogback.configurationFile=." + sep + "conf" + sep + "logback.xml",
"-Xss10M"
)

coverageExcludedPackages := "io\\.iohk\\.ethereum\\.extvm\\.msg.*"
2 changes: 1 addition & 1 deletion scalastyle-test-config.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<check level="error" class="org.scalastyle.file.FileTabChecker" enabled="true"></check>
<check level="error" class="org.scalastyle.file.FileLengthChecker" enabled="true">
<parameters>
<parameter name="maxFileLength"><![CDATA[800]]></parameter>
<parameter name="maxFileLength"><![CDATA[1000]]></parameter>
</parameters>
</check>
<check level="error" class="org.scalastyle.scalariform.SpacesAfterPlusChecker" enabled="true"></check>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,26 +42,36 @@ class MerklePatriciaTreeSpeedSpec extends FunSuite
else assert(rootHash.take(4) == "da8a" && rootHash.drop(rootHash.length - 4) == "0ca4")
}

test("MPT benchmark") {
withNodeStorage { ns =>
val hashFn = crypto.kec256(_: Array[Byte])
test("MPT benchmark with RocksDb") {
withRocksDbNodeStorage { ns =>
mptBenchmarkTest(ns)
}
}

test("MPT benchmark with LevelDb") {
withLevelDbNodeStorage { ns =>
mptBenchmarkTest(ns)
}
}

def mptBenchmarkTest(ns: NodesKeyValueStorage): MerklePatriciaTrie[Array[Byte], Array[Byte]] = {
val hashFn = crypto.kec256(_: Array[Byte])

val defaultByteArraySer = MerklePatriciaTrie.defaultByteArraySerializable
val EmptyTrie = MerklePatriciaTrie[Array[Byte], Array[Byte]](ns)(defaultByteArraySer, defaultByteArraySer)
val defaultByteArraySer = MerklePatriciaTrie.defaultByteArraySerializable
val EmptyTrie = MerklePatriciaTrie[Array[Byte], Array[Byte]](ns)(defaultByteArraySer, defaultByteArraySer)

var t = System.currentTimeMillis()
(1 to 20000000).foldLeft(EmptyTrie){case (trie, i) =>
val k = hashFn(("hello" + i).getBytes)
val v = hashFn(("world" + i).getBytes)
var t = System.currentTimeMillis()
(1 to 20000000).foldLeft(EmptyTrie){ case (trie, i) =>
val k = hashFn(("hello" + i).getBytes)
val v = hashFn(("world" + i).getBytes)

if (i % 100000 == 0) {
val newT = System.currentTimeMillis()
val delta = (newT - t) / 1000.0
t = newT
log.debug(s"=== $i elements put, time for batch is: $delta sec")
}
trie.put(k, v)
if (i % 100000 == 0) {
val newT = System.currentTimeMillis()
val delta = (newT - t) / 1000.0
t = newT
log.debug(s"=== $i elements put, time for batch is: $delta sec")
}
trie.put(k, v)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ class RLPSpeedSuite extends FunSuite
signatureRandom = ByteString(Hex.decode("cfe3ad31d6612f8d787c45f115cc5b43fb22bcc210b62ae71dc7cbf0a6bea8df")),
signature = ByteString(Hex.decode("57db8998114fae3c337e99dbd8573d4085691880f4576c6c1f6c5bbfe67d6cf0")),
chainId = 0x3d.toByte
).get
)

lazy val blockGen: Gen[Block] = for {
header <- blockHeaderGen
Expand Down
2 changes: 1 addition & 1 deletion src/ets/resources/ets
Submodule ets updated 43 files
+216 −0 BlockchainTests/GeneralStateTests/stCreateTest/CreateOOGafterInitCodeReturndata2_d0g0v0.json
+232 −0 BlockchainTests/GeneralStateTests/stCreateTest/CreateOOGafterInitCodeReturndata2_d0g1v0.json
+244 −0 BlockchainTests/GeneralStateTests/stCreateTest/CreateOOGafterInitCodeReturndata3_d0g0v0.json
+216 −0 BlockchainTests/GeneralStateTests/stCreateTest/CreateOOGafterInitCodeReturndataSize_d0g0v0.json
+216 −0 BlockchainTests/GeneralStateTests/stCreateTest/CreateOOGafterInitCodeReturndata_d0g0v0.json
+216 −0 BlockchainTests/GeneralStateTests/stCreateTest/CreateOOGafterInitCodeReturndata_d0g1v0.json
+246 −0 BlockchainTests/GeneralStateTests/stCreateTest/CreateOOGafterInitCodeRevert2_d0g0v0.json
+246 −0 BlockchainTests/GeneralStateTests/stCreateTest/CreateOOGafterInitCodeRevert_d0g0v0.json
+216 −0 BlockchainTests/GeneralStateTests/stCreateTest/CreateOOGafterInitCode_d0g0v0.json
+230 −0 BlockchainTests/GeneralStateTests/stCreateTest/CreateOOGafterInitCode_d0g1v0.json
+219 −0 BlockchainTests/GeneralStateTests/stShift/sar00_d0g0v0.json
+220 −0 BlockchainTests/GeneralStateTests/stShift/sar_0_256-1_d0g0v0.json
+93 −0 GeneralStateTests/stCreateTest/CreateOOGafterInitCode.json
+93 −0 GeneralStateTests/stCreateTest/CreateOOGafterInitCodeReturndata.json
+93 −0 GeneralStateTests/stCreateTest/CreateOOGafterInitCodeReturndata2.json
+81 −0 GeneralStateTests/stCreateTest/CreateOOGafterInitCodeReturndata3.json
+74 −0 GeneralStateTests/stCreateTest/CreateOOGafterInitCodeReturndataSize.json
+81 −0 GeneralStateTests/stCreateTest/CreateOOGafterInitCodeRevert.json
+81 −0 GeneralStateTests/stCreateTest/CreateOOGafterInitCodeRevert2.json
+75 −0 GeneralStateTests/stShift/sar00.json
+75 −0 GeneralStateTests/stShift/sar_0_256-1.json
+1 −1 RLPTests/rlptest.json
+86 −0 src/BlockchainTestsFiller/GeneralStateTests/stCreateTest/CreateOOGafterInitCodeReturndata2_d0g0v0Filler.json
+90 −0 src/BlockchainTestsFiller/GeneralStateTests/stCreateTest/CreateOOGafterInitCodeReturndata2_d0g1v0Filler.json
+93 −0 src/BlockchainTestsFiller/GeneralStateTests/stCreateTest/CreateOOGafterInitCodeReturndata3_d0g0v0Filler.json
+84 −0 ...BlockchainTestsFiller/GeneralStateTests/stCreateTest/CreateOOGafterInitCodeReturndataSize_d0g0v0Filler.json
+86 −0 src/BlockchainTestsFiller/GeneralStateTests/stCreateTest/CreateOOGafterInitCodeReturndata_d0g0v0Filler.json
+86 −0 src/BlockchainTestsFiller/GeneralStateTests/stCreateTest/CreateOOGafterInitCodeReturndata_d0g1v0Filler.json
+95 −0 src/BlockchainTestsFiller/GeneralStateTests/stCreateTest/CreateOOGafterInitCodeRevert2_d0g0v0Filler.json
+95 −0 src/BlockchainTestsFiller/GeneralStateTests/stCreateTest/CreateOOGafterInitCodeRevert_d0g0v0Filler.json
+86 −0 src/BlockchainTestsFiller/GeneralStateTests/stCreateTest/CreateOOGafterInitCode_d0g0v0Filler.json
+88 −0 src/BlockchainTestsFiller/GeneralStateTests/stCreateTest/CreateOOGafterInitCode_d0g1v0Filler.json
+112 −0 src/BlockchainTestsFiller/GeneralStateTests/stShift/sar00_d0g0v0Filler.json
+114 −0 src/BlockchainTestsFiller/GeneralStateTests/stShift/sar_0_256-1_d0g0v0Filler.json
+83 −0 src/GeneralStateTestsFiller/stCreateTest/CreateOOGafterInitCodeFiller.json
+87 −0 src/GeneralStateTestsFiller/stCreateTest/CreateOOGafterInitCodeReturndata2Filler.json
+75 −0 src/GeneralStateTestsFiller/stCreateTest/CreateOOGafterInitCodeReturndata3Filler.json
+68 −0 src/GeneralStateTestsFiller/stCreateTest/CreateOOGafterInitCodeReturndataFiller.json
+67 −0 src/GeneralStateTestsFiller/stCreateTest/CreateOOGafterInitCodeReturndataSizeFiller.json
+75 −0 src/GeneralStateTestsFiller/stCreateTest/CreateOOGafterInitCodeRevert2Filler.json
+75 −0 src/GeneralStateTestsFiller/stCreateTest/CreateOOGafterInitCodeRevertFiller.json
+105 −0 src/GeneralStateTestsFiller/stShift/sar00Filler.json
+106 −0 src/GeneralStateTestsFiller/stShift/sar_0_256-1Filler.json
52 changes: 32 additions & 20 deletions src/ets/scala/io/iohk/ethereum/ets/blockchain/BlockchainSuite.scala
Original file line number Diff line number Diff line change
@@ -1,27 +1,37 @@
package io.iohk.ethereum.ets.blockchain

import java.util.concurrent.Executors

import akka.actor.ActorSystem
import io.iohk.ethereum.domain.Block
import io.iohk.ethereum.ets.common.TestOptions
import io.iohk.ethereum.extvm.ExtVMInterface
import io.iohk.ethereum.ledger.Ledger.VMImpl
import io.iohk.ethereum.nodebuilder.VmSetup
import io.iohk.ethereum.utils.{BlockchainConfig, Config, Logger, VmConfig}
import org.scalatest._

import scala.concurrent.duration.Duration
import scala.concurrent.{Await, ExecutionContext, Future}


object BlockchainSuite {
implicit lazy val actorSystem = ActorSystem("mantis_system")

implicit val testContext: ExecutionContext = ExecutionContext.fromExecutor(Executors.newFixedThreadPool(4))
lazy val extvm = VmSetup.vm(VmConfig(Config.config), BlockchainConfig(Config.config), testMode = true)
}

class BlockchainSuite extends FreeSpec with Matchers with BeforeAndAfterAll with Logger {

val unsupportedNetworks = Set("Byzantium","Constantinople", "EIP158ToByzantiumAt5")
val supportedNetworks = Set("EIP150", "Frontier", "FrontierToHomesteadAt5", "Homestead", "HomesteadToEIP150At5", "HomesteadToDaoAt5", "EIP158")

import BlockchainSuite.testContext
val unsupportedNetworks = Set("Constantinople")
val supportedNetworks =
Set("EIP150", "Frontier", "FrontierToHomesteadAt5", "Homestead", "HomesteadToEIP150At5", "HomesteadToDaoAt5", "EIP158", "Byzantium", "EIP158ToByzantiumAt5")
//Map of ignored tests, empty set of ignored names means cancellation of whole group
val ignoredTests: Map[String, Set[String]] = Map()

val ignoredTests: Map[String, Set[String]] = Map(
// Tests are failing because block reward is not correctly paid to the miner
"GeneralStateTests/stShift/sar00_d0g0v0" -> Set.empty,
"GeneralStateTests/stShift/sar_0_256-1_d0g0v0" -> Set.empty
)
var vm: VMImpl = _

override def run(testName: Option[String], args: Args): Status = {
Expand All @@ -45,7 +55,7 @@ class BlockchainSuite extends FreeSpec with Matchers with BeforeAndAfterAll with
cancel(s"Test: $name in group: ${group.name} not yet supported")
} else {
log.info(s"Running test: ${group.name}#$name")
runScenario(scenario, this)
runScenario(scenario, this, name)
}
}
}
Expand All @@ -65,26 +75,28 @@ class BlockchainSuite extends FreeSpec with Matchers with BeforeAndAfterAll with
private def isCanceled(groupName: String, testName: String): Boolean =
ignoredTests.get(groupName).isDefined && (ignoredTests(groupName).contains(testName) || ignoredTests(groupName).isEmpty)

private def runScenario(scenario: BlockchainScenario, setup: ScenarioSetup): Unit = {
private def runScenario(scenario: BlockchainScenario, setup: ScenarioSetup, name: String): Unit = {

import setup._

def importBlocks(blocks: List[Block], importedBlocks: List[Block] = Nil): Future[List[Block]] = {
if (blocks.isEmpty) {
Future.successful(importedBlocks)
} else {
val blockToImport = blocks.head
ledger.importBlock(blockToImport).flatMap {result =>
importBlocks(blocks.tail, blockToImport :: importedBlocks)
}
}
}

loadGenesis()

val blocksToProcess = getBlocks(scenario.blocks)

val invalidBlocks = getBlocks(getInvalid)

blocksToProcess.foreach { b =>
try {
val r = ledger.importBlock(b)
log.debug(s"Block (${b.idTag}) import result: $r")
} catch {
case ex: Throwable =>
ex.printStackTrace()
println(s"WHAT A TERRIBLE FAILURE")
sys.exit(1)
}
}
val ready = Await.result(importBlocks(blocksToProcess), Duration.Inf)

val lastBlock = getBestBlock()

Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
package io.iohk.ethereum.ets.blockchain

import akka.util.ByteString
import io.iohk.ethereum.consensus.ethash.validators.EthashValidators
import io.iohk.ethereum.domain.{Address, UInt256}
import io.iohk.ethereum.utils.{BlockchainConfig, DaoForkConfig, MonetaryPolicyConfig}
import org.bouncycastle.util.encoders.Hex

// scalastyle:off magic.number
trait BlockchainTestConfig extends BlockchainConfig {

val frontierBlockNumber: BigInt = Long.MaxValue
Expand All @@ -15,14 +17,16 @@ trait BlockchainTestConfig extends BlockchainConfig {
val eip155BlockNumber: BigInt = Long.MaxValue
val eip160BlockNumber: BigInt = Long.MaxValue
val eip161BlockNumber: BigInt = Long.MaxValue
val byzantiumBlockNumber: BigInt = Long.MaxValue
// unused
override val maxCodeSize: Option[BigInt] = None
override val difficultyBombPauseBlockNumber: BigInt = 3000000
override val difficultyBombContinueBlockNumber: BigInt = 5000000
override val difficultyBombRemovalBlockNumber: BigInt = 5900000
override val chainId: Byte = 0x3d.toByte
override val customGenesisFileOpt: Option[String] = Some("test-genesis.json")
override val monetaryPolicyConfig: MonetaryPolicyConfig = MonetaryPolicyConfig(5000000, 0.2, BigInt("5000000000000000000"))
override val monetaryPolicyConfig: MonetaryPolicyConfig =
MonetaryPolicyConfig(5000000, 0.2, BigInt("5000000000000000000"), BigInt("3000000000000000000"))
override val daoForkConfig: Option[DaoForkConfig] = None
override val accountStartNonce: UInt256 = UInt256.Zero

Expand All @@ -31,28 +35,28 @@ trait BlockchainTestConfig extends BlockchainConfig {
val ethCompatibleStorage: Boolean = true
}

class FrontierConfig extends BlockchainTestConfig {
object FrontierConfig extends BlockchainTestConfig {
override val frontierBlockNumber = 0
}
class HomesteadConfig extends BlockchainTestConfig {
object HomesteadConfig extends BlockchainTestConfig {
override val frontierBlockNumber = -1
override val homesteadBlockNumber = 0
}
class Eip150Config extends BlockchainTestConfig {
object Eip150Config extends BlockchainTestConfig {
override val frontierBlockNumber = -1
override val homesteadBlockNumber = -1
override val eip150BlockNumber = 0
}
class FrontierToHomesteadAt5 extends BlockchainTestConfig {
object FrontierToHomesteadAt5 extends BlockchainTestConfig {
override val frontierBlockNumber = 0
override val homesteadBlockNumber = 5
}
class HomesteadToEIP150At5 extends BlockchainTestConfig {
object HomesteadToEIP150At5 extends BlockchainTestConfig {
override val frontierBlockNumber = -1
override val homesteadBlockNumber = 0
override val eip150BlockNumber = 5
}
class HomesteadToDaoAt5 extends BlockchainTestConfig {
object HomesteadToDaoAt5 extends BlockchainTestConfig {
override val frontierBlockNumber = -1
override val homesteadBlockNumber = 0
override val daoForkConfig: Option[DaoForkConfig] = Some(
Expand Down Expand Up @@ -183,14 +187,48 @@ class HomesteadToDaoAt5 extends BlockchainTestConfig {
}
)
}

class Eip158Config extends BlockchainTestConfig {
override val frontierBlockNumber = -1
override val homesteadBlockNumber = -1
override val eip150BlockNumber = -1
override val eip155BlockNumber = -1
override val eip160BlockNumber = -1
object Eip158Config extends BlockchainTestConfig {
override val frontierBlockNumber: BigInt = -1
override val homesteadBlockNumber: BigInt = -1
override val eip150BlockNumber: BigInt = -1
override val eip155BlockNumber: BigInt = -1
override val eip160BlockNumber: BigInt = -1
override val eip161BlockNumber: BigInt = 0
override val maxCodeSize: Option[BigInt] = Some(24576)
}
object ByzantiumConfig extends BlockchainTestConfig {
override val frontierBlockNumber: BigInt = -1
override val homesteadBlockNumber: BigInt = -1
override val eip150BlockNumber: BigInt = -1
override val eip155BlockNumber: BigInt = -1
override val eip160BlockNumber: BigInt = -1
override val eip161BlockNumber: BigInt = -1
override val maxCodeSize: Option[BigInt] = Some(24576)
override val byzantiumBlockNumber: BigInt = 0
override val monetaryPolicyConfig: MonetaryPolicyConfig =
MonetaryPolicyConfig(5000000, 0.2, BigInt("5000000000000000000"), BigInt("3000000000000000000"))
}
object Eip158ToByzantiumAt5Config extends BlockchainTestConfig {
override val frontierBlockNumber: BigInt = -1
override val homesteadBlockNumber: BigInt = -1
override val eip150BlockNumber: BigInt = -1
override val eip155BlockNumber: BigInt = -1
override val eip160BlockNumber: BigInt = -1
override val eip161BlockNumber: BigInt = 0
override val maxCodeSize: Option[BigInt] = Some(24576)
override val byzantiumBlockNumber: BigInt = 5
override val monetaryPolicyConfig: MonetaryPolicyConfig =
MonetaryPolicyConfig(5000000, 0.2, BigInt("5000000000000000000"), BigInt("3000000000000000000"))
}

object Validators {
val frontierValidators = EthashValidators(FrontierConfig)
val homesteadValidators = EthashValidators(HomesteadConfig)
val eip150Validators = EthashValidators(Eip150Config)
val frontierToHomesteadValidators = EthashValidators(FrontierToHomesteadAt5)
val homesteadToEipValidators = EthashValidators(HomesteadToEIP150At5)
val homeSteadtoDaoValidators = EthashValidators(HomesteadToDaoAt5)
val eip158Validators = EthashValidators(Eip158Config)
val byzantiumValidators = EthashValidators(ByzantiumConfig)
val eip158ToByzantiumValidators = EthashValidators(Eip158ToByzantiumAt5Config)
}
Loading

0 comments on commit 5b9647d

Please sign in to comment.