From 2c52d18e8aa1af7ba82c8c47a7ded1f69185130f Mon Sep 17 00:00:00 2001 From: Sean Robbins Date: Fri, 12 Jan 2018 19:02:40 +0000 Subject: [PATCH 1/5] Add basic unit test suite for UTXOSet --- src/test/java/org/tron/core/UTXOSetTest.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 src/test/java/org/tron/core/UTXOSetTest.java diff --git a/src/test/java/org/tron/core/UTXOSetTest.java b/src/test/java/org/tron/core/UTXOSetTest.java new file mode 100644 index 00000000000..36f0ae52bed --- /dev/null +++ b/src/test/java/org/tron/core/UTXOSetTest.java @@ -0,0 +1,17 @@ +package org.tron.core; + +import org.junit.Test; +import org.mockito.Mockito; +import org.tron.storage.leveldb.LevelDbDataSourceImpl; + +public class UTXOSetTest { + @Test + public void testReindex() { + Blockchain mockBlockchain = Mockito.mock(Blockchain.class); + LevelDbDataSourceImpl mockTransactionDb = Mockito.mock(LevelDbDataSourceImpl.class); + UTXOSet utxoSet = new UTXOSet(mockTransactionDb); + utxoSet.setBlockchain(mockBlockchain); + + utxoSet.reindex(); + } +} From 22e58cbe91df583ca00fff3fa2238ca0327c58f6 Mon Sep 17 00:00:00 2001 From: Sean Robbins Date: Sat, 13 Jan 2018 14:06:13 +0000 Subject: [PATCH 2/5] Rename txOutput to ignore as not used by the for loop --- src/main/java/org/tron/core/UTXOSet.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/tron/core/UTXOSet.java b/src/main/java/org/tron/core/UTXOSet.java index 69ad56126b4..f37b9e620c2 100644 --- a/src/main/java/org/tron/core/UTXOSet.java +++ b/src/main/java/org/tron/core/UTXOSet.java @@ -62,7 +62,7 @@ public void reindex() { String key = entry.getKey(); TXOutputs value = entry.getValue(); - for (TronTXOutput.TXOutput txOutput : value.getOutputsList()) { + for (TronTXOutput.TXOutput ignored : value.getOutputsList()) { txDB.putData(ByteArray.fromHexString(key), value.toByteArray()); } } From 38d619235da981126f5ffe3415bf51de65401063 Mon Sep 17 00:00:00 2001 From: Sean Robbins Date: Sat, 13 Jan 2018 15:12:30 +0000 Subject: [PATCH 3/5] Basic unit test for UTXOSet.reindex --- src/test/java/org/tron/core/UTXOSetTest.java | 26 ++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/test/java/org/tron/core/UTXOSetTest.java b/src/test/java/org/tron/core/UTXOSetTest.java index 36f0ae52bed..2a1b8b888f8 100644 --- a/src/test/java/org/tron/core/UTXOSetTest.java +++ b/src/test/java/org/tron/core/UTXOSetTest.java @@ -2,16 +2,42 @@ import org.junit.Test; import org.mockito.Mockito; +import org.tron.protos.core.TronTXOutput; +import org.tron.protos.core.TronTXOutputs; import org.tron.storage.leveldb.LevelDbDataSourceImpl; +import org.tron.utils.ByteArray; + +import java.util.HashMap; +import java.util.UUID; + +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.eq; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.when; public class UTXOSetTest { @Test public void testReindex() { + String key = "15f3988aa8d56eab3bfca45144bad77fc60acce50437a0a9d794a03a83c15c5e"; + TronTXOutput.TXOutput testOutput = TronTXOutput.TXOutput.newBuilder().build(); + TronTXOutputs.TXOutputs testOutputs = TronTXOutputs.TXOutputs.newBuilder() + .addOutputs(testOutput) + .build(); + + HashMap testUTXO = new HashMap<>(); + testUTXO.put(key, testOutputs); + Blockchain mockBlockchain = Mockito.mock(Blockchain.class); + when(mockBlockchain.findUTXO()).thenReturn(testUTXO); + LevelDbDataSourceImpl mockTransactionDb = Mockito.mock(LevelDbDataSourceImpl.class); + UTXOSet utxoSet = new UTXOSet(mockTransactionDb); utxoSet.setBlockchain(mockBlockchain); utxoSet.reindex(); + Mockito.verify(mockTransactionDb, times(1)).resetDB(); + Mockito.verify(mockTransactionDb, times(1)) + .putData(eq(ByteArray.fromHexString(key)), eq(testOutputs.toByteArray())); } } From 1b66d41cf336532562c866ccf798159d6ca3c245 Mon Sep 17 00:00:00 2001 From: Sean Robbins Date: Sat, 13 Jan 2018 16:56:50 +0000 Subject: [PATCH 4/5] Optimize imports --- src/main/java/org/tron/core/UTXOSet.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/java/org/tron/core/UTXOSet.java b/src/main/java/org/tron/core/UTXOSet.java index f37b9e620c2..572b1a898ae 100644 --- a/src/main/java/org/tron/core/UTXOSet.java +++ b/src/main/java/org/tron/core/UTXOSet.java @@ -18,18 +18,16 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.tron.crypto.ECKey; -import org.tron.storage.leveldb.LevelDbDataSourceImpl; import org.tron.protos.core.TronTXOutput; import org.tron.protos.core.TronTXOutputs; import org.tron.protos.core.TronTXOutputs.TXOutputs; +import org.tron.storage.leveldb.LevelDbDataSourceImpl; import org.tron.utils.ByteArray; import javax.inject.Inject; import javax.inject.Named; import java.util.*; -import static org.tron.core.Constant.TRANSACTION_DB_NAME; - public class UTXOSet { private static final Logger logger = LoggerFactory.getLogger("UTXOSet"); From 75230c9e64ed5b5c4e8fc4b1533a53991f52fe72 Mon Sep 17 00:00:00 2001 From: Sean Robbins Date: Sat, 13 Jan 2018 16:57:46 +0000 Subject: [PATCH 5/5] Remove unecessary null declration --- src/main/java/org/tron/core/UTXOSet.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/tron/core/UTXOSet.java b/src/main/java/org/tron/core/UTXOSet.java index 572b1a898ae..057a8d732c4 100644 --- a/src/main/java/org/tron/core/UTXOSet.java +++ b/src/main/java/org/tron/core/UTXOSet.java @@ -32,7 +32,7 @@ public class UTXOSet { private static final Logger logger = LoggerFactory.getLogger("UTXOSet"); private Blockchain blockchain; - private LevelDbDataSourceImpl txDB = null; + private LevelDbDataSourceImpl txDB; @Inject public UTXOSet(@Named("transaction") LevelDbDataSourceImpl txDb) {