Skip to content

Commit 338a02e

Browse files
committed
improve unit test TransactionStoreTest
1 parent e5bc074 commit 338a02e

File tree

1 file changed

+154
-55
lines changed

1 file changed

+154
-55
lines changed

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

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

3+
import com.google.protobuf.ByteString;
34
import java.io.File;
45
import java.util.Random;
56
import org.junit.AfterClass;
7+
import org.junit.Assert;
68
import org.junit.BeforeClass;
7-
import org.junit.Ignore;
89
import org.junit.Test;
910
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
11+
import org.tron.common.utils.ByteArray;
1012
import org.tron.common.utils.FileUtil;
1113
import org.tron.core.Constant;
14+
import org.tron.core.Wallet;
15+
import org.tron.core.capsule.AccountCapsule;
1216
import org.tron.core.capsule.TransactionCapsule;
1317
import org.tron.core.config.DefaultConfig;
1418
import org.tron.core.config.args.Args;
19+
import org.tron.protos.Contract.AccountCreateContract;
20+
import org.tron.protos.Contract.TransferContract;
21+
import org.tron.protos.Contract.VoteWitnessContract;
22+
import org.tron.protos.Contract.VoteWitnessContract.Vote;
23+
import org.tron.protos.Contract.WitnessCreateContract;
24+
import org.tron.protos.Protocol.AccountType;
1525

1626
public class TransactionStoreTest {
1727

1828
private static String dbPath = "output_TransactionStore_test";
1929
private static TransactionStore transactionStore;
2030
private static AnnotationConfigApplicationContext context;
2131
private static final byte[] data = TransactionStoreTest.randomBytes(21);
22-
private static final byte[] key = TransactionStoreTest.randomBytes(21);
23-
private static final long value = 111L;
32+
private static Manager dbManager;
33+
34+
35+
private static final String URL = "https://tron.network";
36+
37+
private static final String ACCOUNT_NAME = "ownerF";
38+
private static final String OWNER_ADDRESS =
39+
Wallet.getAddressPreFixString() + "abd4b9367799eaa3197fecb144eb71de1e049abc";
40+
private static final String TO_ADDRESS =
41+
Wallet.getAddressPreFixString() + "abd4b9367799eaa3197fecb144eb71de1e049abc";
42+
private static final long AMOUNT = 100;
43+
private static final String WITNESS_ADDRESS =
44+
Wallet.getAddressPreFixString() + "548794500882809695a8a687866e76d4271a1abc";
2445

2546
static {
2647
Args.setParam(new String[]{"-d", dbPath, "-w"}, Constant.TEST_CONF);
2748
context = new AnnotationConfigApplicationContext(DefaultConfig.class);
2849
}
2950

30-
@AfterClass
31-
public static void destroy() {
32-
Args.clearParam();
33-
FileUtil.deleteDir(new File(dbPath));
34-
context.destroy();
35-
}
36-
51+
/**
52+
* Init data.
53+
*/
3754
@BeforeClass
3855
public static void init() {
39-
transactionStore = context.getBean(TransactionStore.class);
40-
/* TransactionCapsule transactionCapsule = new TransactionCapsule(key, value);*/
41-
TransactionCapsule transactionCapsule = null;
56+
dbManager = context.getBean(Manager.class);
57+
transactionStore = dbManager.getTransactionStore();
58+
59+
}
60+
61+
/**
62+
* get AccountCreateContract.
63+
*/
64+
private AccountCreateContract getContract(String name, String address) {
65+
return AccountCreateContract.newBuilder()
66+
.setAccountName(ByteString.copyFromUtf8(name))
67+
.setOwnerAddress(ByteString.copyFrom(ByteArray.fromHexString(address)))
68+
.build();
69+
}
70+
71+
/**
72+
* get TransferContract.
73+
*/
74+
private TransferContract getContract(long count, String owneraddress, String toaddress) {
75+
return TransferContract.newBuilder()
76+
.setOwnerAddress(ByteString.copyFrom(ByteArray.fromHexString(owneraddress)))
77+
.setToAddress(ByteString.copyFrom(ByteArray.fromHexString(toaddress)))
78+
.setAmount(count)
79+
.build();
80+
}
81+
82+
/**
83+
* get WitnessCreateContract.
84+
*/
85+
private WitnessCreateContract getWitnessContract(String address, String url) {
86+
return WitnessCreateContract.newBuilder()
87+
.setOwnerAddress(ByteString.copyFrom(ByteArray.fromHexString(address)))
88+
.setUrl(ByteString.copyFrom(ByteArray.fromString(url)))
89+
.build();
90+
}
91+
92+
/**
93+
* get VoteWitnessContract.
94+
*/
95+
private VoteWitnessContract getVoteWitnessContract(String address, String voteaddress,
96+
Long value) {
97+
return
98+
VoteWitnessContract.newBuilder()
99+
.setOwnerAddress(ByteString.copyFrom(ByteArray.fromHexString(address)))
100+
.addVotes(Vote.newBuilder()
101+
.setVoteAddress(ByteString.copyFrom(ByteArray.fromHexString(voteaddress)))
102+
.setVoteCount(value).build())
103+
.build();
104+
}
105+
106+
107+
/**
108+
* put and get CreateAccountTransaction.
109+
*/
110+
@Test
111+
public void CreateAccountTransactionStoreTest() {
112+
AccountCreateContract accountCreateContract = getContract(ACCOUNT_NAME,
113+
OWNER_ADDRESS);
114+
TransactionCapsule ret = new TransactionCapsule(accountCreateContract,
115+
dbManager.getAccountStore());
116+
transactionStore.put(data, ret);
117+
Assert.assertEquals("Store CreateAccountTransaction is error",
118+
transactionStore.get(data).getInstance(),
119+
ret.getInstance());
120+
Assert.assertTrue(transactionStore.has(data));
121+
}
122+
123+
/**
124+
* put and get CreateWitnessTransaction.
125+
*/
126+
@Test
127+
public void CreateWitnessTransactionStoreTest() {
128+
WitnessCreateContract witnessContract = getWitnessContract(OWNER_ADDRESS, URL);
129+
TransactionCapsule transactionCapsule = new TransactionCapsule(witnessContract);
42130
transactionStore.put(data, transactionCapsule);
131+
Assert.assertEquals("Store CreateWitnessTransaction is error",
132+
transactionStore.get(data).getInstance(),
133+
transactionCapsule.getInstance());
43134
}
44135

45-
@Ignore
136+
/**
137+
* put and get TransferTransaction.
138+
*/
46139
@Test
47-
public void testGet() {
48-
// test get and has method
49-
/* try {
50-
Assert.assertTrue(transactionStore.has(data));
51-
Assert.assertArrayEquals(
52-
key,
53-
transactionStore
54-
.get(data)
55-
.getInstance()
56-
.getRawData()
57-
.getContractList()
58-
.get(0)
59-
.getParameter()
60-
.unpack(TransferContract.class)
61-
.getToAddress()
62-
.toByteArray());
63-
Assert.assertEquals(
64-
value,
65-
transactionStore
66-
.get(data)
67-
.getInstance()
68-
.getRawData()
69-
.getContractList()
70-
.get(0)
71-
.getParameter()
72-
.unpack(TransferContract.class)
73-
.getAmount());
74-
} catch (InvalidProtocolBufferException e) {
75-
e.printStackTrace();
76-
} */
140+
public void TransferTransactionStorenTest() {
141+
AccountCapsule ownerCapsule =
142+
new AccountCapsule(
143+
ByteString.copyFromUtf8(ACCOUNT_NAME),
144+
ByteString.copyFrom(ByteArray.fromHexString(OWNER_ADDRESS)),
145+
AccountType.AssetIssue,
146+
1000000L
147+
);
148+
dbManager.getAccountStore().put(ownerCapsule.getAddress().toByteArray(), ownerCapsule);
149+
TransferContract transferContract = getContract(AMOUNT, OWNER_ADDRESS, TO_ADDRESS);
150+
TransactionCapsule transactionCapsule = new TransactionCapsule(transferContract,
151+
dbManager.getAccountStore());
152+
transactionStore.put(data, transactionCapsule);
153+
Assert.assertEquals("Store TransferTransaction is error",
154+
transactionStore.get(data).getInstance(),
155+
transactionCapsule.getInstance());
77156
}
78157

79-
/*@Test
80-
public void findTransactionByHash() {
81-
//test findTransactionByHash method
82-
TransactionCapsule transactionCapsuleByHash = new TransactionCapsule(
83-
transactionStore.findTransactionByHash(data));
158+
/**
159+
* put and get VoteWitnessTransaction.
160+
*/
161+
162+
@Test
163+
public void voteWitnessTransactionTest() {
84164

85-
Assert.assertEquals(key, ByteArray.toHexString(
86-
transactionCapsuleByHash.getInstance().getRawData().getVoutList().get(0).getPubKeyHash()
87-
.toByteArray()));
88-
Assert.assertEquals(value,
89-
transactionCapsuleByHash.getInstance().getRawData().getVoutList().get(0).getValue());
165+
AccountCapsule ownerAccountFirstCapsule =
166+
new AccountCapsule(
167+
ByteString.copyFromUtf8(ACCOUNT_NAME),
168+
ByteString.copyFrom(ByteArray.fromHexString(OWNER_ADDRESS)),
169+
AccountType.Normal,
170+
1_000_000_000_000L);
171+
long frozenBalance = 1_000_000_000_000L;
172+
long duration = 3;
173+
ownerAccountFirstCapsule.setFrozen(frozenBalance, duration);
174+
dbManager.getAccountStore()
175+
.put(ownerAccountFirstCapsule.getAddress().toByteArray(), ownerAccountFirstCapsule);
176+
VoteWitnessContract actuator = getVoteWitnessContract(OWNER_ADDRESS, WITNESS_ADDRESS, 1L);
177+
TransactionCapsule transactionCapsule = new TransactionCapsule(actuator);
178+
transactionStore.put(data, transactionCapsule);
179+
Assert.assertEquals("Store VoteWitnessTransaction is error",
180+
transactionStore.get(data).getInstance(),
181+
transactionCapsule.getInstance());
182+
}
183+
184+
@AfterClass
185+
public static void destroy() {
186+
Args.clearParam();
187+
FileUtil.deleteDir(new File(dbPath));
188+
context.destroy();
189+
}
90190

91-
} */
92191

93192
public static byte[] randomBytes(int length) {
94193
// generate the random number

0 commit comments

Comments
 (0)