diff --git a/src/main/java/org/tron/core/UTXOSet.java b/src/main/java/org/tron/core/UTXOSet.java index 69ad56126b4..057a8d732c4 100644 --- a/src/main/java/org/tron/core/UTXOSet.java +++ b/src/main/java/org/tron/core/UTXOSet.java @@ -18,23 +18,21 @@ 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"); private Blockchain blockchain; - private LevelDbDataSourceImpl txDB = null; + private LevelDbDataSourceImpl txDB; @Inject public UTXOSet(@Named("transaction") LevelDbDataSourceImpl txDb) { @@ -62,7 +60,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()); } } 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..2a1b8b888f8 --- /dev/null +++ b/src/test/java/org/tron/core/UTXOSetTest.java @@ -0,0 +1,43 @@ +package org.tron.core; + +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())); + } +}