Skip to content

Commit 74dfb18

Browse files
authored
Merge pull request #424 from tronprotocol/fix_unittest_fork
Fix unittest fork
2 parents 3992722 + 64b316a commit 74dfb18

9 files changed

Lines changed: 96 additions & 74 deletions

src/test/java/org/tron/core/actuator/AssetIssueActuatorTest.java

100644100755
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,5 +149,6 @@ public static void destroy() {
149149
} else {
150150
logger.info("Release resources failure.");
151151
}
152+
dbManager.destory();
152153
}
153154
}

src/test/java/org/tron/core/actuator/CreateAccountActuatorTest.java

100644100755
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,5 +126,6 @@ public static void destroy() {
126126
} else {
127127
logger.info("Release resources failure.");
128128
}
129+
dbManager.destory();
129130
}
130131
}

src/test/java/org/tron/core/actuator/ParticipateAssetIssueActuatorTest.java

100644100755
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ public static void destroy() {
7676
} else {
7777
logger.info("Release resources failure.");
7878
}
79+
dbManager.destory();
7980
}
8081

8182
/**

src/test/java/org/tron/core/actuator/TransferActuatorTest.java

100644100755
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ public static void destroy() {
6262
} else {
6363
logger.info("Release resources failure.");
6464
}
65+
dbManager.destory();
6566
}
6667

6768
/**

src/test/java/org/tron/core/actuator/TransferAssetActuatorTest.java

100644100755
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,5 +209,6 @@ public static void destroy() {
209209
} else {
210210
logger.info("Release resources failure.");
211211
}
212+
dbManager.destory();
212213
}
213214
}

src/test/java/org/tron/core/db/AccountStoreTest.java

100644100755
File mode changed.

src/test/java/org/tron/core/db/ManagerTest.java

Lines changed: 84 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package org.tron.core.db;
22

3+
import com.google.common.collect.Maps;
34
import com.google.protobuf.ByteString;
45
import java.io.File;
6+
import java.util.Map;
57
import java.util.stream.Collectors;
68
import java.util.stream.IntStream;
79
import lombok.extern.slf4j.Slf4j;
@@ -13,7 +15,9 @@
1315
import org.tron.common.utils.ByteArray;
1416
import org.tron.common.utils.FileUtil;
1517
import org.tron.common.utils.Sha256Hash;
18+
import org.tron.common.utils.Utils;
1619
import org.tron.core.Constant;
20+
import org.tron.core.capsule.AccountCapsule;
1721
import org.tron.core.capsule.BlockCapsule;
1822
import org.tron.core.capsule.TransactionCapsule;
1923
import org.tron.core.capsule.WitnessCapsule;
@@ -25,7 +29,9 @@
2529
import org.tron.core.exception.UnLinkedBlockException;
2630
import org.tron.core.exception.ValidateScheduleException;
2731
import org.tron.core.exception.ValidateSignatureException;
32+
import org.tron.core.witness.WitnessController;
2833
import org.tron.protos.Contract.TransferContract;
34+
import org.tron.protos.Protocol.Account;
2935
import org.tron.protos.Protocol.Transaction.Contract.ContractType;
3036

3137
@Slf4j
@@ -149,7 +155,7 @@ public void pushBlock() {
149155
}
150156

151157

152-
// @Test
158+
// @Test
153159
public void updateWits() {
154160
int sizePrv = dbManager.getWitnesses().size();
155161
dbManager.getWitnesses().forEach(witnessCapsule -> {
@@ -185,69 +191,85 @@ public void updateWits() {
185191
}
186192

187193
@Test
188-
public void fork() {
194+
public void fork() throws ValidateSignatureException,
195+
ContractValidateException,
196+
ContractExeException,
197+
UnLinkedBlockException,
198+
ValidateScheduleException,
199+
BadItemException,
200+
ItemNotFoundException {
189201
Args.setParam(new String[]{"--witness"}, Constant.TEST_CONF);
190202
long size = dbManager.getBlockStore().dbSource.allKeys().size();
191-
String key = "f31db24bfbd1a2ef19beddca0a0fa37632eded9ac666a05d3bd925f01dde1f62";
192-
byte[] privateKey = ByteArray.fromHexString(key);
193-
final ECKey ecKey = ECKey.fromPrivate(privateKey);
194-
byte[] address = ecKey.getAddress();
195-
WitnessCapsule witnessCapsule = new WitnessCapsule(ByteString.copyFrom(address));
196-
dbManager.addWitness(witnessCapsule);
197-
dbManager.addWitness(witnessCapsule);
198-
dbManager.addWitness(witnessCapsule);
199-
IntStream.range(0, 1).forEach(i -> {
200-
try {
201-
dbManager.generateBlock(witnessCapsule, System.currentTimeMillis(), privateKey);
202-
} catch (Exception e) {
203-
logger.debug(e.getMessage(), e);
204-
}
205-
});
206203

207-
try {
208-
long num = dbManager.getDynamicPropertiesStore().getLatestBlockHeaderNumber();
209-
BlockCapsule blockCapsule1 = new BlockCapsule(num,
210-
dbManager.getHead().getParentHash().getByteString(),
211-
System.currentTimeMillis(),
212-
witnessCapsule.getAddress());
213-
blockCapsule1.generatedByMyself = true;
214-
215-
BlockCapsule blockCapsule2 = new BlockCapsule(num + 1,
216-
blockCapsule1.getBlockId().getByteString(),
217-
System.currentTimeMillis(),
218-
witnessCapsule.getAddress());
219-
blockCapsule2.generatedByMyself = true;
220-
221-
logger.error("******1*******" + "block1 id:" + blockCapsule1.getBlockId());
222-
logger.error("******2*******" + "block2 id:" + blockCapsule2.getBlockId());
223-
dbManager.pushBlock(blockCapsule1);
224-
dbManager.pushBlock(blockCapsule1);
225-
logger.error("******in blockStore block size:"
226-
+ dbManager.getBlockStore().dbSource.allKeys().size());
227-
logger.error("******in blockStore block:"
228-
+ dbManager.getBlockStore().dbSource.allKeys().stream().map(ByteArray::toHexString)
229-
.collect(Collectors.toList()));
230-
231-
Assert.assertNotNull(dbManager.getBlockStore().get(blockCapsule1.getBlockId().getBytes()));
232-
Assert.assertNotNull(dbManager.getBlockStore().get(blockCapsule2.getBlockId().getBytes()));
233-
234-
Assert.assertEquals(
235-
dbManager.getBlockStore().get(blockCapsule2.getBlockId().getBytes()).getParentHash(),
236-
blockCapsule1.getBlockId());
237-
238-
Assert.assertEquals(dbManager.getBlockStore().dbSource.allKeys().size(), size + 2);
239-
240-
Assert.assertEquals(dbManager.getBlockIdByNum(dbManager.getHead().getNum() - 1),
241-
blockCapsule1.getBlockId());
242-
Assert.assertEquals(dbManager.getBlockIdByNum(dbManager.getHead().getNum() - 2),
243-
blockCapsule1.getParentHash());
244-
245-
Assert.assertEquals(blockCapsule2.getBlockId().getByteString(),
246-
dbManager.getDynamicPropertiesStore().getLatestBlockHeaderHash());
247-
Assert.assertEquals(dbManager.getHead().getBlockId().getByteString(),
248-
dbManager.getDynamicPropertiesStore().getLatestBlockHeaderHash());
249-
} catch (Exception e) {
250-
logger.debug(e.getMessage(), e);
251-
}
204+
Map<ByteString, String> addressToProvateKeys = addTestWitnessAndAccount();
205+
206+
long num = dbManager.getDynamicPropertiesStore().getLatestBlockHeaderNumber();
207+
BlockCapsule blockCapsule0 = createTestBlockCapsule(num + 1,
208+
dbManager.getDynamicPropertiesStore().getLatestBlockHeaderHash().getByteString(),
209+
addressToProvateKeys);
210+
211+
BlockCapsule blockCapsule1 = createTestBlockCapsule(num + 1,
212+
dbManager.getDynamicPropertiesStore().getLatestBlockHeaderHash().getByteString(),
213+
addressToProvateKeys);
214+
215+
BlockCapsule blockCapsule2 = createTestBlockCapsule(num + 2,
216+
blockCapsule1.getBlockId().getByteString(), addressToProvateKeys);
217+
218+
dbManager.pushBlock(blockCapsule0);
219+
dbManager.pushBlock(blockCapsule1);
220+
dbManager.pushBlock(blockCapsule2);
221+
222+
Assert.assertNotNull(dbManager.getBlockStore().get(blockCapsule1.getBlockId().getBytes()));
223+
Assert.assertNotNull(dbManager.getBlockStore().get(blockCapsule2.getBlockId().getBytes()));
224+
225+
Assert.assertEquals(
226+
dbManager.getBlockStore().get(blockCapsule2.getBlockId().getBytes()).getParentHash(),
227+
blockCapsule1.getBlockId());
228+
229+
Assert.assertEquals(dbManager.getBlockStore().dbSource.allKeys().size(), size + 2);
230+
231+
Assert.assertEquals(dbManager.getBlockIdByNum(dbManager.getHead().getNum() - 1),
232+
blockCapsule1.getBlockId());
233+
Assert.assertEquals(dbManager.getBlockIdByNum(dbManager.getHead().getNum() - 2),
234+
blockCapsule1.getParentHash());
235+
236+
Assert.assertEquals(blockCapsule2.getBlockId(),
237+
dbManager.getDynamicPropertiesStore().getLatestBlockHeaderHash());
238+
Assert.assertEquals(dbManager.getHead().getBlockId(),
239+
dbManager.getDynamicPropertiesStore().getLatestBlockHeaderHash());
240+
}
241+
242+
private Map<ByteString, String> addTestWitnessAndAccount() {
243+
dbManager.getWitnesses().clear();
244+
return IntStream.range(0, 2).mapToObj(i -> {
245+
ECKey ecKey = new ECKey(Utils.getRandom());
246+
String privateKey = ByteArray.toHexString(ecKey.getPrivKey().toByteArray());
247+
ByteString address = ByteString.copyFrom(ecKey.getAddress());
248+
249+
WitnessCapsule witnessCapsule = new WitnessCapsule(address);
250+
dbManager.getWitnessStore().put(address.toByteArray(), witnessCapsule);
251+
dbManager.getWitnessController().addWitness(witnessCapsule);
252+
253+
AccountCapsule accountCapsule =
254+
new AccountCapsule(Account.newBuilder().setAddress(address).build());
255+
dbManager.getAccountStore().put(address.toByteArray(), accountCapsule);
256+
257+
return Maps.immutableEntry(address, privateKey);
258+
})
259+
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
260+
}
261+
262+
private BlockCapsule createTestBlockCapsule(long number, ByteString hash,
263+
Map<ByteString, String> addressToProvateKeys) {
264+
long time = System.currentTimeMillis();
265+
WitnessController witnessController = dbManager.getWitnessController();
266+
ByteString witnessAddress =
267+
witnessController.getScheduledWitness(witnessController.getSlotAtTime(time));
268+
BlockCapsule blockCapsule = new BlockCapsule(number, hash, time, witnessAddress);
269+
blockCapsule.generatedByMyself = true;
270+
blockCapsule.setMerkleRoot();
271+
blockCapsule.sign(ByteArray.fromHexString(addressToProvateKeys.get(witnessAddress)));
272+
return blockCapsule;
252273
}
274+
253275
}

src/test/java/org/tron/core/db/RevokingStoreTest.java

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package org.tron.core.db;
22

33
import java.io.File;
4-
import java.util.stream.IntStream;
54
import lombok.extern.slf4j.Slf4j;
65
import org.junit.After;
76
import org.junit.Assert;
@@ -35,24 +34,22 @@ public void removeDb() {
3534
}
3635

3736
@Test
38-
public synchronized void testUndo() {
37+
public synchronized void testUndo() throws RevokingStoreIllegalStateException {
3938
revokingDatabase.getStack().clear();
4039
TestRevokingTronStore tronDatabase = new TestRevokingTronStore(
4140
"testrevokingtronstore-testUndo", revokingDatabase);
4241
TestProtoCapsule testProtoCapsule = new TestProtoCapsule();
4342

4443
DialogOptional dialog = DialogOptional.of(revokingDatabase.buildDialog());
45-
IntStream.range(0, 10).forEach(i -> {
44+
for (int i = 0; i < 10; i++) {
4645
try (Dialog tmpDialog = revokingDatabase.buildDialog()) {
4746
tronDatabase.put(testProtoCapsule.getData(), testProtoCapsule);
4847
Assert.assertFalse(tronDatabase.getDbSource().allKeys().isEmpty());
4948
Assert.assertEquals(revokingDatabase.getStack().size(), 2);
5049
tmpDialog.merge();
5150
Assert.assertEquals(revokingDatabase.getStack().size(), 1);
52-
} catch (RevokingStoreIllegalStateException e) {
53-
logger.debug(e.getMessage(), e);
5451
}
55-
});
52+
}
5653

5754
Assert.assertEquals(revokingDatabase.getStack().size(), 1);
5855

@@ -65,24 +62,22 @@ public synchronized void testUndo() {
6562
}
6663

6764
@Test
68-
public synchronized void testPop() {
65+
public synchronized void testPop() throws RevokingStoreIllegalStateException {
6966
revokingDatabase.getStack().clear();
7067
TestRevokingTronStore tronDatabase = new TestRevokingTronStore(
7168
"testrevokingtronstore-testPop", revokingDatabase);
7269
TestProtoCapsule testProtoCapsule = new TestProtoCapsule();
7370

74-
IntStream.rangeClosed(1, 10).forEach(i -> {
71+
for (int i = 1; i < 11; i++) {
7572
try (Dialog tmpDialog = revokingDatabase.buildDialog()) {
7673
tronDatabase.put(testProtoCapsule.getData(), testProtoCapsule);
7774
Assert.assertFalse(tronDatabase.getDbSource().allKeys().isEmpty());
7875
Assert.assertEquals(revokingDatabase.getActiveDialog(), 1);
7976
tmpDialog.commit();
8077
Assert.assertEquals(revokingDatabase.getStack().size(), i);
8178
Assert.assertEquals(revokingDatabase.getActiveDialog(), 0);
82-
} catch (RevokingStoreIllegalStateException e) {
83-
logger.debug(e.getMessage(), e);
8479
}
85-
});
80+
}
8681

8782
try {
8883
revokingDatabase.pop();

src/test/java/org/tron/program/AccountVoteWitnessTest.java

100644100755
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public static void removeDb() {
4444
} else {
4545
logger.info("Release resources failure.");
4646
}
47-
47+
dbManager.destory();
4848
}
4949

5050
private static Boolean deleteFolder(File index) {

0 commit comments

Comments
 (0)