Browse Source

add IntegrationTest4Contract;

tags/1.0.0
zhaoguangwei 5 years ago
parent
commit
845e7a4537
1 changed files with 106 additions and 0 deletions
  1. +106
    -0
      source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/IntegrationTest4Contract.java

+ 106
- 0
source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/IntegrationTest4Contract.java View File

@@ -0,0 +1,106 @@
package test.com.jd.blockchain.intgr;

import com.jd.blockchain.crypto.AsymmetricKeypair;
import com.jd.blockchain.crypto.HashDigest;
import com.jd.blockchain.crypto.PrivKey;
import com.jd.blockchain.crypto.PubKey;
import com.jd.blockchain.gateway.GatewayConfigProperties;
import com.jd.blockchain.ledger.BlockchainKeypair;
import com.jd.blockchain.ledger.core.LedgerRepository;
import com.jd.blockchain.sdk.BlockchainService;
import com.jd.blockchain.sdk.client.GatewayServiceFactory;
import com.jd.blockchain.storage.service.DbConnectionFactory;
import com.jd.blockchain.tools.initializer.LedgerBindingConfig;
import com.jd.blockchain.tools.keygen.KeyGenCommand;
import com.jd.blockchain.utils.concurrent.ThreadInvoker;

import org.junit.Test;
import test.com.jd.blockchain.intgr.initializer.LedgerInitializeTest;
import test.com.jd.blockchain.intgr.initializer.LedgerInitializeWeb4Nodes;

import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

import static test.com.jd.blockchain.intgr.IntegrationBase.*;

public class IntegrationTest4Contract {
private static final boolean isContractDeployAndExe = true;
private static final String DB_TYPE_MEM = "mem";

@Test
public void test4Memory() {
test(LedgerInitConsensusConfig.bftsmartProvider, DB_TYPE_MEM, LedgerInitConsensusConfig.memConnectionStrings);
}

public void test(String[] providers, String dbType, String[] dbConnections) {
final ExecutorService sendReqExecutors = Executors.newFixedThreadPool(10);
// 内存账本初始化
HashDigest ledgerHash = initLedger(dbConnections);
// 启动Peer节点
PeerTestRunner[] peerNodes = peerNodeStart(ledgerHash, dbType);
DbConnectionFactory dbConnectionFactory0 = peerNodes[0].getDBConnectionFactory();
DbConnectionFactory dbConnectionFactory1 = peerNodes[1].getDBConnectionFactory();
DbConnectionFactory dbConnectionFactory2 = peerNodes[2].getDBConnectionFactory();
DbConnectionFactory dbConnectionFactory3 = peerNodes[3].getDBConnectionFactory();

String encodedBase58Pwd = KeyGenCommand.encodePasswordAsBase58(LedgerInitializeTest.PASSWORD);

GatewayConfigProperties.KeyPairConfig gwkey0 = new GatewayConfigProperties.KeyPairConfig();
gwkey0.setPubKeyValue(IntegrationBase.PUB_KEYS[0]);
gwkey0.setPrivKeyValue(IntegrationBase.PRIV_KEYS[0]);
gwkey0.setPrivKeyPassword(encodedBase58Pwd);
GatewayTestRunner gateway = new GatewayTestRunner("127.0.0.1", 11000, gwkey0,
peerNodes[0].getServiceAddress(), providers,null);

ThreadInvoker.AsyncCallback<Object> gwStarting = gateway.start();

gwStarting.waitReturn();

// 执行测试用例之前,校验每个节点的一致性;
LedgerRepository[] ledgers = buildLedgers(new LedgerBindingConfig[]{
peerNodes[0].getLedgerBindingConfig(),
peerNodes[1].getLedgerBindingConfig(),
peerNodes[2].getLedgerBindingConfig(),
peerNodes[3].getLedgerBindingConfig(),
},
new DbConnectionFactory[]{
dbConnectionFactory0,
dbConnectionFactory1,
dbConnectionFactory2,
dbConnectionFactory3});

IntegrationBase.testConsistencyAmongNodes(ledgers);

LedgerRepository ledgerRepository = ledgers[0];

GatewayServiceFactory gwsrvFact = GatewayServiceFactory.connect(gateway.getServiceAddress());

PrivKey privkey0 = KeyGenCommand.decodePrivKeyWithRawPassword(IntegrationBase.PRIV_KEYS[0], IntegrationBase.PASSWORD);

PubKey pubKey0 = KeyGenCommand.decodePubKey(IntegrationBase.PUB_KEYS[0]);

AsymmetricKeypair adminKey = new AsymmetricKeypair(pubKey0, privkey0);

BlockchainService blockchainService = gwsrvFact.getBlockchainService();

if(isContractDeployAndExe){
IntegrationBase.testSDK_Contract(adminKey,ledgerHash,blockchainService,ledgerRepository);
}

try {
System.out.println("----------------- Init Completed -----------------");
Thread.sleep(Integer.MAX_VALUE);
} catch (InterruptedException e) {
e.printStackTrace();
}

IntegrationBase.testConsistencyAmongNodes(ledgers);
}
private HashDigest initLedger(String[] dbConnections) {
LedgerInitializeWeb4Nodes ledgerInit = new LedgerInitializeWeb4Nodes();
HashDigest ledgerHash = ledgerInit.testInitWith4Nodes(LedgerInitConsensusConfig.bftsmartConfig, dbConnections);
System.out.printf("LedgerHash = %s \r\n", ledgerHash.toBase58());
return ledgerHash;
}
}

Loading…
Cancel
Save