You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuweni.apache.org by to...@apache.org on 2020/06/02 07:03:21 UTC

[incubator-tuweni] branch master updated: Add test for transaction receipts

This is an automated email from the ASF dual-hosted git repository.

toulmean pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-tuweni.git


The following commit(s) were added to refs/heads/master by this push:
     new cd7fb27  Add test for transaction receipts
cd7fb27 is described below

commit cd7fb27642dac07f8f97ee44b4677dcae0809144
Author: Antoine Toulme <an...@lunar-ocean.com>
AuthorDate: Tue Jun 2 00:03:04 2020 -0700

    Add test for transaction receipts
---
 .../org/apache/tuweni/devp2p/eth/EthHandlerTest.kt | 49 +++++++++++++++++++---
 1 file changed, 44 insertions(+), 5 deletions(-)

diff --git a/devp2p-eth/src/test/kotlin/org/apache/tuweni/devp2p/eth/EthHandlerTest.kt b/devp2p-eth/src/test/kotlin/org/apache/tuweni/devp2p/eth/EthHandlerTest.kt
index d56c398..870515a 100644
--- a/devp2p-eth/src/test/kotlin/org/apache/tuweni/devp2p/eth/EthHandlerTest.kt
+++ b/devp2p-eth/src/test/kotlin/org/apache/tuweni/devp2p/eth/EthHandlerTest.kt
@@ -28,7 +28,9 @@ import org.apache.tuweni.eth.Block
 import org.apache.tuweni.eth.BlockBody
 import org.apache.tuweni.eth.BlockHeader
 import org.apache.tuweni.eth.Hash
+import org.apache.tuweni.eth.LogsBloomFilter
 import org.apache.tuweni.eth.Transaction
+import org.apache.tuweni.eth.TransactionReceipt
 import org.apache.tuweni.eth.repository.BlockchainIndex
 import org.apache.tuweni.eth.repository.BlockchainRepository
 import org.apache.tuweni.junit.BouncyCastleExtension
@@ -120,16 +122,22 @@ class EthHandlerTest {
       )
 
       for (i in 1..10) {
-        val newHeader = createChildBlockHeader(header)
-        repository.storeBlockHeader(newHeader)
-        header = newHeader
+        val newBlock = createChildBlock(header)
+        repository.storeBlock(newBlock)
+        var txIndex = 0
+        for (tx in newBlock.body.transactions) {
+          repository.storeTransactionReceipt(TransactionReceipt(Bytes32.random(),
+            32L, LogsBloomFilter(), emptyList()), txIndex, tx.hash, newBlock.header.hash)
+          txIndex++
+        }
+        header = newBlock.header
       }
     }
 
-    private fun createChildBlockHeader(parentBlock: BlockHeader): BlockHeader {
+    private fun createChildBlock(parentBlock: BlockHeader): Block {
       val emptyListHash = Hash.hash(RLP.encodeList { })
       val emptyHash = Hash.hash(RLP.encode { writer -> writer.writeValue(Bytes.EMPTY) })
-      return BlockHeader(
+      val header = BlockHeader(
         parentBlock.hash,
         emptyListHash,
         Address.fromBytes(Bytes.random(20)),
@@ -146,6 +154,17 @@ class EthHandlerTest {
         Hash.fromBytes(Bytes32.random()),
         UInt64.ZERO
       )
+      val block = Block(
+        header, BlockBody(
+          listOf(
+            Transaction(
+              UInt256.ONE, Wei.valueOf(20L), Gas.valueOf(3000),
+              Address.fromBytes(Bytes.random(20)), Wei.valueOf(1000), Bytes.EMPTY, SECP256K1.KeyPair.random()
+            )
+          ), emptyList()
+        )
+      )
+      return block
     }
   }
 
@@ -216,4 +235,24 @@ class EthHandlerTest {
     assertEquals(1, messageRead.bodies.size)
     assertEquals(genesisBlock.body, messageRead.bodies[0])
   }
+
+  @Test
+  fun testGetReceipts() = runBlocking {
+
+    val hashes = repository.findBlockByHashOrNumber(UInt256.valueOf(7).toBytes())
+    val block7 = repository.retrieveBlock(hashes[0])
+    val txReceipt = repository.retrieveTransactionReceipt(hashes[0], 0)
+    handler.handle(
+      "foo234",
+      MessageType.GetReceipts.code,
+      GetReceipts(listOf(block7!!.header.hash)).toBytes()
+    ).await()
+
+    val messageCapture = ArgumentCaptor.forClass(Bytes::class.java)
+    verify(service).send(eq(ETH64), eq(MessageType.Receipts.code), eq("foo234"), messageCapture.capture())
+
+    val messageRead = Receipts.read(messageCapture.value)
+    assertEquals(1, messageRead.transactionReceipts.size)
+    assertEquals(txReceipt, messageRead.transactionReceipts[0][0])
+  }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@tuweni.apache.org
For additional commands, e-mail: commits-help@tuweni.apache.org