197 lines
7.4 KiB
Java
197 lines
7.4 KiB
Java
package bdchain.api;
|
|
|
|
import bdchain.api.grpc.acchain.Block;
|
|
import bdchain.api.grpc.acchain.Transaction;
|
|
import bdchain.api.grpc.common.TransactionType;
|
|
import com.google.protobuf.ByteString;
|
|
import io.grpc.Status;
|
|
import org.junit.jupiter.api.AfterAll;
|
|
import org.junit.jupiter.api.BeforeAll;
|
|
import org.junit.jupiter.api.DisplayName;
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
import java.util.Arrays;
|
|
import java.util.List;
|
|
import java.util.concurrent.ExecutionException;
|
|
import java.util.stream.Collectors;
|
|
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
|
|
|
@DisplayName("Accounting Chain tests")
|
|
class AccountingChainClientTests {
|
|
|
|
private static final String ledger = "test";
|
|
private static final int blockNumber = 2018;
|
|
private static final String blockHashStr =
|
|
"deadc0dedeadc0dedeadc0dedeadc0dedeadc0dedeadc0dedeadc0dedeadc0de";
|
|
private static final ByteString blockHash =
|
|
ByteString.copyFrom(Utils.hexStringToByteArray(blockHashStr));
|
|
private static final ByteString parentHash =
|
|
ByteString.copyFrom(
|
|
Utils.hexStringToByteArray(
|
|
"babefacebabefacebabefacebabefacebabefacebabefacebabefacebabeface"));
|
|
private static final String[] witnessStrs = {
|
|
"0404040404040404040404040404040404040404",
|
|
"1313131313131313131313131313131313131313",
|
|
"5252525252525252525252525252525252525252"
|
|
};
|
|
private static final List<ByteString> witnesses =
|
|
Arrays.stream(witnessStrs)
|
|
.map(s -> ByteString.copyFrom(Utils.hexStringToByteArray(s)))
|
|
.collect(Collectors.toList());
|
|
private static final long timestamp = 2018050400000L;
|
|
private static final long size = 20180504L;
|
|
private static final ByteString transactionsRoot =
|
|
ByteString.copyFrom(
|
|
Utils.hexStringToByteArray(
|
|
"50bada5550bada5550bada5550bada5550bada5550bada5550bada5550bada55"));
|
|
|
|
private static final int index = 0;
|
|
private static final ByteString from =
|
|
ByteString.copyFrom(Utils.hexStringToByteArray("f00dcafef00dcafef00dcafef00dcafef00dcafe"));
|
|
private static final long nonce = 2018L;
|
|
private static final ByteString to =
|
|
ByteString.copyFrom(Utils.hexStringToByteArray("feedbabefeedbabefeedbabefeedbabefeedbabe"));
|
|
private static final ByteString data =
|
|
ByteString.copyFrom(Utils.hexStringToByteArray("deadbeef"));
|
|
private static final ByteString v = ByteString.copyFrom(Utils.hexStringToByteArray("25"));
|
|
private static final ByteString r =
|
|
ByteString.copyFrom(
|
|
Utils.hexStringToByteArray(
|
|
"1b5e176d927f8e9ab405058b2d2457392da3e20f328b16ddabcebc33eaac5fea"));
|
|
private static final ByteString s =
|
|
ByteString.copyFrom(
|
|
Utils.hexStringToByteArray(
|
|
"4ba69724e8f69de52f0125ad8b3c5c2cef33019bac3249e2c0a2192766d1721c"));
|
|
private static final String txHashStr =
|
|
"0404040404040404040404040404040404040404040404040404040404040404";
|
|
private static final ByteString txHash1 =
|
|
ByteString.copyFrom(Utils.hexStringToByteArray(txHashStr));
|
|
private static final ByteString txHash2 =
|
|
ByteString.copyFrom(
|
|
Utils.hexStringToByteArray(
|
|
"1313131313131313131313131313131313131313131313131313131313131313"));
|
|
private static final Block block =
|
|
Block.newBuilder()
|
|
.setNumber(blockNumber)
|
|
.setHash(blockHash)
|
|
.setParentHash(parentHash)
|
|
.addAllWitnesses(witnesses)
|
|
.setTimestamp(timestamp)
|
|
.setSize(size)
|
|
.setTransactionsRoot(transactionsRoot)
|
|
.addAllTransactionHashes(Arrays.asList(txHash1, txHash2))
|
|
.build();
|
|
private static final Transaction tx =
|
|
Transaction.newBuilder()
|
|
.setBlockNumber(blockNumber)
|
|
.setBlockHash(blockHash)
|
|
.setIndex(index)
|
|
.setHash(txHash1)
|
|
.setType(TransactionType.RECORD)
|
|
.setFrom(from)
|
|
.setNonce(nonce)
|
|
.setTo(from)
|
|
.setData(data)
|
|
.setV(v)
|
|
.setR(r)
|
|
.setS(s)
|
|
.build();
|
|
|
|
private static AccountingChainClient acClient;
|
|
|
|
@BeforeAll
|
|
static void initAll() {
|
|
acClient = new AccountingChainClient("47.92.69.234", 18080);
|
|
// acClient = new AccountingChainClient("localhost", 10001);
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("ClientVersion#1")
|
|
void clientVersion1() throws InterruptedException, ExecutionException {
|
|
assertEquals(
|
|
"AcChainGo/v0.0.1alpha/darwin/go1.11", acClient.clientVersion().get().getVersion());
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("BlockNumber#1")
|
|
void blockNumber1() throws InterruptedException, ExecutionException {
|
|
System.out.println(acClient.blockNumber(ledger).get().getBlockNumber());
|
|
// assertEquals(blockNumber, acClient.blockNumber(ledger).get().getBlockNumber());
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("BlockNumber#2")
|
|
void blockNumber2() {
|
|
Throwable e = assertThrows(Exception.class, () -> acClient.blockNumber("").get());
|
|
Status s = Status.fromThrowable(e);
|
|
assertEquals(Status.Code.INVALID_ARGUMENT, s.getCode());
|
|
assertEquals("ledger must not be empty", s.getDescription());
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("GetBlockByNumber#1")
|
|
void getBlockByNumber1() throws ExecutionException, InterruptedException {
|
|
// Block b = acClient.getBlockByNumber(ledger, blockNumber, true).get();
|
|
Block b = acClient.getBlockByNumber(ledger, 2595, false).get();
|
|
System.out.println(b.getNumber());
|
|
// Block blockFull =
|
|
// Block.newBuilder(block)
|
|
// .addAllTransactions(
|
|
// Arrays.asList(
|
|
// Transaction.newBuilder(tx).setIndex(0).build(),
|
|
// Transaction.newBuilder(tx)
|
|
// .setIndex(1)
|
|
// .setHash(txHash2)
|
|
// .setType(TransactionType.MESSAGE)
|
|
// .setNonce(2019L)
|
|
// .setTo(to)
|
|
// .clearData()
|
|
// .build()))
|
|
// .clearTransactionHashes()
|
|
// .build();
|
|
// assertEquals(blockFull, b);
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("GetBlockByNumber#2")
|
|
void GetBlockByNumber2() throws ExecutionException, InterruptedException {
|
|
Block b = acClient.getBlockByNumber(ledger, blockNumber, false).get();
|
|
assertEquals(block, b);
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("GetBlockByHash#1")
|
|
void getBlockByHash1() throws ExecutionException, InterruptedException {
|
|
Block b = acClient.getBlockByHash(ledger, blockHashStr, false).get();
|
|
assertEquals(block, b);
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("GetTransactionByHash#1")
|
|
void getTransactionByHash1() throws ExecutionException, InterruptedException {
|
|
Transaction t = acClient.getTransactionByHash(ledger, txHashStr).get();
|
|
assertEquals(tx, t);
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("GetTransactionByBlockNumberAndIndex#1")
|
|
void GetTransactionByBlockNumberAndIndex1() throws ExecutionException, InterruptedException {
|
|
Transaction t = acClient.getTransactionByBlockNumberAndIndex(ledger, blockNumber, index).get();
|
|
assertEquals(tx, t);
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("GetTransactionByBlockHashAndIndex#1")
|
|
void GetTransactionByBlockHashAndIndex1() throws ExecutionException, InterruptedException {
|
|
Transaction t = acClient.getTransactionByBlockHashAndIndex(ledger, blockHashStr, index).get();
|
|
assertEquals(tx, t);
|
|
}
|
|
|
|
@AfterAll
|
|
static void teadDwonAll() throws InterruptedException {
|
|
acClient.shutdown();
|
|
}
|
|
}
|