diff --git a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/impl/LedgerInitializer.java b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/impl/LedgerInitializer.java
deleted file mode 100644
index 78fec379..00000000
--- a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/impl/LedgerInitializer.java
+++ /dev/null
@@ -1,85 +0,0 @@
-//package com.jd.blockchain.ledger.core.impl;
-//
-//import com.jd.blockchain.crypto.hash.HashDigest;
-//import com.jd.blockchain.ledger.TransactionState;
-//import com.jd.blockchain.ledger.LedgerBlock;
-//import com.jd.blockchain.ledger.LedgerTransaction;
-//import com.jd.blockchain.ledger.TransactionRequest;
-//import com.jd.blockchain.ledger.core.LedgerDataSet;
-//import com.jd.blockchain.ledger.core.LedgerEditor;
-//import com.jd.blockchain.ledger.core.LedgerManage;
-//import com.jd.blockchain.ledger.core.LedgerTransactionContext;
-//import com.jd.blockchain.ledger.core.PrefixAppender;
-//import com.jd.blockchain.storage.service.ExPolicyKVStorage;
-//import com.jd.blockchain.storage.service.KVStorageService;
-//import com.jd.blockchain.storage.service.VersioningKVStorage;
-//import com.jd.blockchain.storage.service.utils.BufferedKVStorage;
-//
-///**
-// * 账本初始化;
-// *
-// * 初始生成账本时,所有的KV数据先缓冲写入到内存中,待计算得到账本 hash 之后,再重写入到与账本hash相关的持久化存储;
-// *
-// * @author huanghaiquan
-// *
-// */
-//class LedgerInitializer implements LedgerEditor {
-//
-// private KVStorageService baseStorage;
-//
-// private GenesisLedgerStorageProxy ledgerStorageProxy;
-//
-// private BufferedKVStorage genesisBufferedStorage;
-//
-// private LedgerEditor genesisBlockEditor;
-//
-// private LedgerBlock genesisBlock;
-//
-// private LedgerManage ledgerManager;
-//
-// LedgerInitializer(LedgerEditor genesisBlockEditor, BufferedKVStorage bufferedStorage,
-// GenesisLedgerStorageProxy ledgerStorageProxy, KVStorageService kvStorage, LedgerManage ledgerManager) {
-// this.genesisBlockEditor = genesisBlockEditor;
-// this.genesisBufferedStorage = bufferedStorage;
-// this.ledgerStorageProxy = ledgerStorageProxy;
-// this.baseStorage = kvStorage;
-//
-// this.ledgerManager = ledgerManager;
-// }
-//
-// @Override
-// public LedgerTransactionContext newTransaction(TransactionRequest txRequest) {
-// return genesisBlockEditor.newTransaction(txRequest);
-// }
-//
-// @Override
-// public LedgerBlock prepare() {
-// // create genesis block;
-// genesisBlock = genesisBlockEditor.prepare();
-//
-// return genesisBlock;
-// }
-//
-// @Override
-// public void commit() {
-// // commit data of editor; it will flush data to genesisBufferedStorage;
-// genesisBlockEditor.commit();
-//
-// // redirect persistence to storage which created for this new ledger with ledger hash;
-// HashDigest ledgerHash = genesisBlock.getHash();
-// String ledgerPrefix =LedgerManager.getLedgerStoragePrefix(ledgerHash);
-// ExPolicyKVStorage ledgerExStorage = PrefixAppender.prefix(ledgerPrefix, baseStorage.getExPolicyKVStorage());
-// VersioningKVStorage ledgerVerStorage = PrefixAppender.prefix(ledgerPrefix, baseStorage.getVersioningKVStorage());
-//
-// // ready to persistent;
-// ledgerStorageProxy.setPersistentStorage(ledgerExStorage, ledgerVerStorage);
-//
-// // flush output;
-// genesisBufferedStorage.flush();
-// }
-//
-// @Override
-// public void cancel() {
-// genesisBlockEditor.cancel();
-// }
-//}
\ No newline at end of file
diff --git a/source/ledger/ledger-core/src/test/java/test/com/jd/blockchain/ledger/LedgerEditerTest.java b/source/ledger/ledger-core/src/test/java/test/com/jd/blockchain/ledger/LedgerEditerTest.java
index defed4b8..c7f3d6e6 100644
--- a/source/ledger/ledger-core/src/test/java/test/com/jd/blockchain/ledger/LedgerEditerTest.java
+++ b/source/ledger/ledger-core/src/test/java/test/com/jd/blockchain/ledger/LedgerEditerTest.java
@@ -68,17 +68,17 @@ public class LedgerEditerTest {
MemoryKVStorage storage = new MemoryKVStorage();
// 创建初始化配置;
- LedgerInitSetting initSetting = createLedgerInitSetting();
+ LedgerInitSetting initSetting = LedgerTestUtils.createLedgerInitSetting();
// 创建账本;
return LedgerTransactionalEditor.createEditor(initSetting, LEDGER_KEY_PREFIX, storage, storage);
}
private LedgerTransactionContext createGenisisTx(LedgerEditor ldgEdt) {
- TransactionRequest genesisTxReq = LedgerTestUtils.createTxRequest(null, signatureFunction);
+ TransactionRequest genesisTxReq = LedgerTestUtils.createTxRequest_UserReg(null);
LedgerTransactionContext txCtx = ldgEdt.newTransaction(genesisTxReq);
-
+
return txCtx;
}
@@ -88,8 +88,7 @@ public class LedgerEditerTest {
LedgerEditor ldgEdt = createLedgerInitEditor();
LedgerTransactionContext genisisTxCtx = createGenisisTx(ldgEdt);
LedgerDataSet ldgDS = genisisTxCtx.getDataSet();
-
-
+
AsymmetricKeypair cryptoKeyPair = signatureFunction.generateKeypair();
BlockchainKeypair dataKP = new BlockchainKeypair(cryptoKeyPair.getPubKey(), cryptoKeyPair.getPrivKey());
@@ -147,42 +146,5 @@ public class LedgerEditerTest {
ldgEdt.commit();
}
-
- private LedgerInitSetting createLedgerInitSetting() {
- SignatureFunction signFunc = Crypto.getSignatureFunction("ED25519");
-
- CryptoProvider[] supportedProviders = new CryptoProvider[SUPPORTED_PROVIDERS.length];
- for (int i = 0; i < SUPPORTED_PROVIDERS.length; i++) {
- supportedProviders[i] = Crypto.getProvider(SUPPORTED_PROVIDERS[i]);
- }
-
- CryptoConfig defCryptoSetting = new CryptoConfig();
- defCryptoSetting.setSupportedProviders(supportedProviders);
- defCryptoSetting.setAutoVerifyHash(true);
- defCryptoSetting.setHashAlgorithm(ClassicAlgorithm.SHA256);
-
- LedgerInitSettingData initSetting = new LedgerInitSettingData();
-
- initSetting.setLedgerSeed(BytesUtils.toBytes("A Test Ledger seed!", "UTF-8"));
- initSetting.setCryptoSetting(defCryptoSetting);
- ConsensusParticipantData[] parties = new ConsensusParticipantData[2];
- parties[0] = new ConsensusParticipantData();
- parties[0].setId(0);
- parties[0].setName("John");
- AsymmetricKeypair kp0 = signFunc.generateKeypair();
- parties[0].setPubKey(kp0.getPubKey());
- parties[0].setAddress(AddressEncoding.generateAddress(kp0.getPubKey()).toBase58());
- parties[0].setHostAddress(new NetworkAddress("192.168.1.6", 9000));
-
- parties[1] = new ConsensusParticipantData();
- parties[1].setId(1);
- parties[1].setName("John");
- AsymmetricKeypair kp1 = signFunc.generateKeypair();
- parties[1].setPubKey(kp1.getPubKey());
- parties[1].setAddress(AddressEncoding.generateAddress(kp1.getPubKey()).toBase58());
- parties[1].setHostAddress(new NetworkAddress("192.168.1.7", 9000));
- initSetting.setConsensusParticipants(parties);
-
- return initSetting;
- }
+
}
diff --git a/source/ledger/ledger-core/src/test/java/test/com/jd/blockchain/ledger/LedgerManagerTest.java b/source/ledger/ledger-core/src/test/java/test/com/jd/blockchain/ledger/LedgerManagerTest.java
index f8297824..9639602c 100644
--- a/source/ledger/ledger-core/src/test/java/test/com/jd/blockchain/ledger/LedgerManagerTest.java
+++ b/source/ledger/ledger-core/src/test/java/test/com/jd/blockchain/ledger/LedgerManagerTest.java
@@ -83,13 +83,13 @@ public class LedgerManagerTest {
LedgerEditor ldgEdt = ledgerManager.newLedger(initSetting, storage);
// 创建一个模拟的创世交易;
- TransactionRequest genesisTxReq = LedgerTestUtils.createTxRequest(null, signatureFunction);
+ TransactionRequest genesisTxReq = LedgerTestUtils.createTxRequest_UserReg(null);
// 记录交易,注册用户;
LedgerTransactionContext txCtx = ldgEdt.newTransaction(genesisTxReq);
LedgerDataSet ldgDS = txCtx.getDataSet();
BlockchainKeypair userKP = BlockchainKeyGenerator.getInstance().generate();
- ;
+
UserAccount userAccount = ldgDS.getUserAccountSet().register(userKP.getAddress(), userKP.getPubKey());
userAccount.setProperty("Name", "孙悟空", -1);
userAccount.setProperty("Age", "10000", -1);
@@ -97,7 +97,7 @@ public class LedgerManagerTest {
System.out.println("UserAddress=" + userAccount.getAddress());
// 提交交易结果;
- LedgerTransaction tx = txCtx.commit(TransactionState.SUCCESS, null);
+ LedgerTransaction tx = txCtx.commit(TransactionState.SUCCESS);
assertEquals(genesisTxReq.getTransactionContent().getHash(), tx.getTransactionContent().getHash());
assertEquals(0, tx.getBlockHeight());
@@ -137,7 +137,7 @@ public class LedgerManagerTest {
LedgerTransactionContext txCtx1 = editor1.newTransaction(txRequest);
txCtx1.getDataSet().getDataAccountSet().register(dataKey.getAddress(), dataKey.getPubKey(), null);
- txCtx1.commit(TransactionState.SUCCESS, null);
+ txCtx1.commit(TransactionState.SUCCESS);
LedgerBlock block1 = editor1.prepare();
editor1.commit();
diff --git a/source/ledger/ledger-core/src/test/java/test/com/jd/blockchain/ledger/LedgerTestUtils.java b/source/ledger/ledger-core/src/test/java/test/com/jd/blockchain/ledger/LedgerTestUtils.java
index 52f050c4..82369888 100644
--- a/source/ledger/ledger-core/src/test/java/test/com/jd/blockchain/ledger/LedgerTestUtils.java
+++ b/source/ledger/ledger-core/src/test/java/test/com/jd/blockchain/ledger/LedgerTestUtils.java
@@ -2,69 +2,102 @@ package test.com.jd.blockchain.ledger;
import java.util.Random;
-import com.jd.blockchain.crypto.AsymmetricKeypair;
+import com.jd.blockchain.crypto.AddressEncoding;
import com.jd.blockchain.crypto.Crypto;
+import com.jd.blockchain.crypto.CryptoAlgorithm;
import com.jd.blockchain.crypto.CryptoProvider;
import com.jd.blockchain.crypto.HashDigest;
-import com.jd.blockchain.crypto.PubKey;
import com.jd.blockchain.crypto.SignatureFunction;
import com.jd.blockchain.crypto.service.classic.ClassicAlgorithm;
import com.jd.blockchain.crypto.service.classic.ClassicCryptoService;
import com.jd.blockchain.crypto.service.sm.SMCryptoService;
-import com.jd.blockchain.ledger.BlockchainIdentityData;
+import com.jd.blockchain.ledger.BlockchainKeyGenerator;
+import com.jd.blockchain.ledger.BlockchainKeypair;
import com.jd.blockchain.ledger.CryptoSetting;
-import com.jd.blockchain.ledger.PreparedTransaction;
+import com.jd.blockchain.ledger.LedgerInitSetting;
import com.jd.blockchain.ledger.TransactionRequest;
+import com.jd.blockchain.ledger.TransactionRequestBuilder;
import com.jd.blockchain.ledger.TransactionResponse;
import com.jd.blockchain.ledger.core.CryptoConfig;
import com.jd.blockchain.ledger.core.impl.TransactionStagedSnapshot;
+import com.jd.blockchain.transaction.ConsensusParticipantData;
+import com.jd.blockchain.transaction.LedgerInitSettingData;
import com.jd.blockchain.transaction.TransactionService;
-import com.jd.blockchain.transaction.TxTemplate;
+import com.jd.blockchain.transaction.TxBuilder;
+import com.jd.blockchain.utils.io.BytesUtils;
+import com.jd.blockchain.utils.net.NetworkAddress;
public class LedgerTestUtils {
- // private static ThreadLocalRandom rand = ThreadLocalRandom.current();
+ public static final SignatureFunction ED25519_SIGN_FUNC = Crypto.getSignatureFunction("ED25519");
+
+ public static final CryptoAlgorithm ED25519 = ED25519_SIGN_FUNC.getAlgorithm();
private static final String[] SUPPORTED_PROVIDERS = { ClassicCryptoService.class.getName(),
SMCryptoService.class.getName() };
private static Random rand = new Random();
- public static TransactionRequest createTxRequest(HashDigest ledgerHash) {
- SignatureFunction signFunc = Crypto.getSignatureFunction("ED25519");
- return createTxRequest(ledgerHash, signFunc);
+ public static TransactionRequest createTxRequest_UserReg(HashDigest ledgerHash) {
+ BlockchainKeypair key = BlockchainKeyGenerator.getInstance().generate(ED25519);
+ return createTxRequest_UserReg(ledgerHash, key);
+ }
+
+ public static LedgerInitSetting createLedgerInitSetting() {
+ BlockchainKeypair[] partiKeys = new BlockchainKeypair[2];
+ partiKeys[0] = BlockchainKeyGenerator.getInstance().generate();
+ partiKeys[1] = BlockchainKeyGenerator.getInstance().generate();
+ return createLedgerInitSetting(partiKeys);
}
- public static TransactionRequest createTxRequest(HashDigest ledgerHash, SignatureFunction signatureFunction) {
- TxHandle txHandle = new TxHandle();
+ public static LedgerInitSetting createLedgerInitSetting(BlockchainKeypair[] partiKeys) {
+ CryptoProvider[] supportedProviders = new CryptoProvider[SUPPORTED_PROVIDERS.length];
+ for (int i = 0; i < SUPPORTED_PROVIDERS.length; i++) {
+ supportedProviders[i] = Crypto.getProvider(SUPPORTED_PROVIDERS[i]);
+ }
+
+ CryptoConfig defCryptoSetting = new CryptoConfig();
+ defCryptoSetting.setSupportedProviders(supportedProviders);
+ defCryptoSetting.setAutoVerifyHash(true);
+ defCryptoSetting.setHashAlgorithm(ClassicAlgorithm.SHA256);
+
+ LedgerInitSettingData initSetting = new LedgerInitSettingData();
- TxTemplate txTemp = new TxTemplate(ledgerHash, txHandle);
+ initSetting.setLedgerSeed(BytesUtils.toBytes("A Test Ledger seed!", "UTF-8"));
+ initSetting.setCryptoSetting(defCryptoSetting);
+ ConsensusParticipantData[] parties = new ConsensusParticipantData[partiKeys.length];
+ for (int i = 0; i < parties.length; i++) {
+ parties[i] = new ConsensusParticipantData();
+ parties[i].setId(0);
+ parties[i].setName("Parti-" + i);
+ parties[i].setPubKey(partiKeys[i].getPubKey());
+ parties[i].setAddress(AddressEncoding.generateAddress(partiKeys[i].getPubKey()).toBase58());
+ parties[i].setHostAddress(new NetworkAddress("192.168.1." + (10 + i), 9000));
- AsymmetricKeypair cryptoKeyPair = signatureFunction.generateKeypair();
- PubKey pubKey = cryptoKeyPair.getPubKey();
- txTemp.users().register(new BlockchainIdentityData(pubKey));
- PreparedTransaction ptx = txTemp.prepare();
- ptx.sign(cryptoKeyPair);
- ptx.commit();
- return txHandle.txRequest;
+ }
+
+ initSetting.setConsensusParticipants(parties);
+
+ return initSetting;
+ }
+
+ public static TransactionRequest createTxRequest_UserReg(HashDigest ledgerHash, BlockchainKeypair userKeypair) {
+ return createTxRequest_UserReg(ledgerHash, userKeypair, null);
}
-// public static TransactionRequest createContractEventTxRequest(HashDigest ledgerHash,
-// SignatureFunction signatureFunction, String contractAddress, String event, byte[] args) {
-// TxHandle txHandle = new TxHandle();
-//
-// TxTemplate txTemp = new TxTemplate(ledgerHash, txHandle);
-//
-// txTemp.contractEvents().send(contractAddress, event, args);
-//
-// AsymmetricKeypair cryptoKeyPair = signatureFunction.generateKeypair();
-// PubKey pubKey = cryptoKeyPair.getPubKey();
-// txTemp.users().register(new BlockchainIdentityData(pubKey));
-// PreparedTransaction ptx = txTemp.prepare();
-// ptx.sign(cryptoKeyPair);
-// ptx.commit();
-// return txHandle.txRequest;
-// }
+ public static TransactionRequest createTxRequest_UserReg(HashDigest ledgerHash, BlockchainKeypair userKeypair,
+ BlockchainKeypair gatewayKeypair) {
+ TxBuilder txBuilder = new TxBuilder(ledgerHash);
+
+ txBuilder.users().register(userKeypair.getIdentity());
+
+ TransactionRequestBuilder txReqBuilder = txBuilder.prepareRequest();
+ txReqBuilder.signAsEndpoint(userKeypair);
+ if (gatewayKeypair != null) {
+ txReqBuilder.signAsNode(gatewayKeypair);
+ }
+ return txReqBuilder.buildRequest();
+ }
public static TransactionStagedSnapshot generateRandomSnapshot() {
TransactionStagedSnapshot txDataSnapshot = new TransactionStagedSnapshot();
diff --git a/source/ledger/ledger-core/src/test/java/test/com/jd/blockchain/ledger/TransactionBatchProcessorTest.java b/source/ledger/ledger-core/src/test/java/test/com/jd/blockchain/ledger/TransactionBatchProcessorTest.java
index 7b28c41e..e18ca2a0 100644
--- a/source/ledger/ledger-core/src/test/java/test/com/jd/blockchain/ledger/TransactionBatchProcessorTest.java
+++ b/source/ledger/ledger-core/src/test/java/test/com/jd/blockchain/ledger/TransactionBatchProcessorTest.java
@@ -1,392 +1,140 @@
-//package test.com.jd.blockchain.ledger;
-//
-//import static org.junit.Assert.assertArrayEquals;
-//import static org.junit.Assert.assertEquals;
-//import static org.junit.Assert.assertNotNull;
-//import static org.junit.Assert.assertTrue;
-//
-//import java.io.File;
-//import java.io.FileInputStream;
-//import java.io.IOException;
-//import java.io.InputStream;
-//import java.net.URISyntaxException;
-//import java.net.URL;
-//import java.nio.file.Paths;
-//
-//import org.junit.Before;
-//import org.junit.Test;
-//
-//import com.jd.blockchain.binaryproto.DataContractRegistry;
-//import com.jd.blockchain.contract.model.ContractPath;
-//import com.jd.blockchain.crypto.CryptoAlgorithm;
-//import com.jd.blockchain.crypto.CryptoUtils;
-//import com.jd.blockchain.crypto.asymmetric.CryptoKeyPair;
-//import com.jd.blockchain.crypto.asymmetric.PubKey;
-//import com.jd.blockchain.crypto.hash.HashDigest;
-//import com.jd.blockchain.ledger.BlockchainKeyGenerator;
-//import com.jd.blockchain.ledger.BlockchainKeyPair;
-//import com.jd.blockchain.ledger.ContractCodeDeployOperation;
-//import com.jd.blockchain.ledger.ContractEventSendOperation;
-//import com.jd.blockchain.ledger.DataAccountKVSetOperation;
-//import com.jd.blockchain.ledger.DataAccountRegisterOperation;
-//import com.jd.blockchain.ledger.EndpointRequest;
-//import com.jd.blockchain.ledger.LedgerBlock;
-//import com.jd.blockchain.ledger.LedgerInitSetting;
-//import com.jd.blockchain.ledger.LedgerTransaction;
-//import com.jd.blockchain.ledger.NodeRequest;
-//import com.jd.blockchain.ledger.TransactionBuilder;
-//import com.jd.blockchain.ledger.TransactionContent;
-//import com.jd.blockchain.ledger.TransactionContentBody;
-//import com.jd.blockchain.ledger.TransactionRequest;
-//import com.jd.blockchain.ledger.TransactionRequestBuilder;
-//import com.jd.blockchain.ledger.TransactionResponse;
-//import com.jd.blockchain.ledger.TransactionState;
-//import com.jd.blockchain.ledger.UserRegisterOperation;
-//import com.jd.blockchain.ledger.core.CryptoConfig;
-//import com.jd.blockchain.ledger.core.DataAccountSet;
-//import com.jd.blockchain.ledger.core.LedgerDataSet;
-//import com.jd.blockchain.ledger.core.LedgerEditor;
-//import com.jd.blockchain.ledger.core.LedgerRepository;
-//import com.jd.blockchain.ledger.core.LedgerTransactionContext;
-//import com.jd.blockchain.ledger.core.TransactionSet;
-//import com.jd.blockchain.ledger.core.UserAccount;
-//import com.jd.blockchain.ledger.core.impl.DefaultOperationHandleRegisteration;
-//import com.jd.blockchain.ledger.core.impl.LedgerManager;
-//import com.jd.blockchain.ledger.core.impl.OperationHandleRegisteration;
-//import com.jd.blockchain.ledger.core.impl.TransactionBatchProcessor;
-//import com.jd.blockchain.ledger.data.AddressEncoding;
-//import com.jd.blockchain.ledger.data.ConsensusParticipantData;
-//import com.jd.blockchain.ledger.data.LedgerInitSettingData;
-//import com.jd.blockchain.ledger.data.TxBuilder;
-//import com.jd.blockchain.storage.service.utils.MemoryKVStorage;
-//
-//import my.utils.Bytes;
-//import my.utils.io.BytesUtils;
-//import my.utils.net.NetworkAddress;
-//
-//public class TransactionBatchProcessorTest {
-// private HashDigest ledgerHash = null;
-// BlockchainKeyPair userKey = BlockchainKeyGenerator.getInstance().generate();
-// BlockchainKeyPair dataKey = BlockchainKeyGenerator.getInstance().generate();
-// BlockchainKeyPair sponsorKey = BlockchainKeyGenerator.getInstance().generate();
-// BlockchainKeyPair gatewayKey = BlockchainKeyGenerator.getInstance().generate();
-// BlockchainKeyPair contractKey = BlockchainKeyGenerator.getInstance().generate();
-// TransactionRequest transactionRequest;
-// String pubKeyVal = "jd.com"+Thread.currentThread();
-//// String userPubKeyVal = "this is user's pubKey";
-// byte[] chainCode;
-// // 保存资产总数的键;
-// private static final String KEY_TOTAL = "TOTAL";
-// //第二个参数;
-// private static final String KEY_ABC = "abc";
-// // 采用基于内存的 Storage;
-// MemoryKVStorage storage = new MemoryKVStorage();
-//
-// @Before
-// public void setUp(){
-// DataContractRegistry.register(TransactionContent.class);
-// DataContractRegistry.register(TransactionContentBody.class);
-// DataContractRegistry.register(TransactionRequest.class);
-// DataContractRegistry.register(NodeRequest.class);
-// DataContractRegistry.register(EndpointRequest.class);
-// DataContractRegistry.register(TransactionResponse.class);
-// DataContractRegistry.register(UserRegisterOperation.class);
-// }
-//
-//// @After
-// public void after() {
-// //清理所有使用的临时文件;
-// String outputPath = null;
-// try {
-// outputPath = ContractPath.getOutputPath();
-// }finally {
-// deleteDir(new File(outputPath));
-// }
-// }
-//
-// /**
-// * 递归删除目录下的所有文件及子目录下所有文件
-// * @param dir 将要删除的文件目录
-// * @return boolean Returns "true" if all deletions were successful.
-// * If a deletion fails, the method stops attempting to
-// * delete and returns "false".
-// */
-// private static boolean deleteDir(File dir) {
-// if (dir.isDirectory()) {
-// String[] children = dir.list();
-// //递归删除目录中的子目录下
-// for (int i=0; i, ContractType> contractTypes = new ConcurrentHashMap<>();
diff --git a/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/IntegrationBase.java b/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/IntegrationBase.java
index 5c6339a2..aaa67038 100644
--- a/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/IntegrationBase.java
+++ b/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/IntegrationBase.java
@@ -477,40 +477,40 @@ public class IntegrationBase {
assertArrayEquals(contractCode, contractCodeInDb);
// execute the contract;
- testContractExe(adminKey, ledgerHash, keyPairResponse.keyPair, blockchainService, ledgerRepository);
+// testContractExe(adminKey, ledgerHash, keyPairResponse.keyPair, blockchainService, ledgerRepository);
// testContractExe1(adminKey, ledgerHash, keyPairResponse.keyPair, blockchainService, ledgerRepository);
return block;
}
- private static void testContractExe(AsymmetricKeypair adminKey, HashDigest ledgerHash, BlockchainKeypair dataKey,
- BlockchainService blockchainService, LedgerRepository ledgerRepository) {
- LedgerInfo ledgerInfo = blockchainService.getLedger(ledgerHash);
- LedgerBlock previousBlock = blockchainService.getBlock(ledgerHash, ledgerInfo.getLatestBlockHeight() - 1);
-
- // 定义交易;
- TransactionTemplate txTpl = blockchainService.newTransaction(ledgerHash);
-
- Byte byteObj = Byte.parseByte("123");
+// private static void testContractExe(AsymmetricKeypair adminKey, HashDigest ledgerHash, BlockchainKeypair dataKey,
+// BlockchainService blockchainService, LedgerRepository ledgerRepository) {
+// LedgerInfo ledgerInfo = blockchainService.getLedger(ledgerHash);
+// LedgerBlock previousBlock = blockchainService.getBlock(ledgerHash, ledgerInfo.getLatestBlockHeight() - 1);
+//
+// // 定义交易;
+// TransactionTemplate txTpl = blockchainService.newTransaction(ledgerHash);
+//
+// Byte byteObj = Byte.parseByte("123");
+//// txTpl.contract(contractDeployKey.getAddress(),AssetContract2.class).issue(byteObj,
+//// contractDeployKey.getAddress().toBase58(),321123);
// txTpl.contract(contractDeployKey.getAddress(),AssetContract2.class).issue(byteObj,
-// contractDeployKey.getAddress().toBase58(),321123);
- txTpl.contract(contractDeployKey.getAddress(),AssetContract2.class).issue(byteObj,
- dataKey.getAddress().toBase58(),Bytes.fromString("123321"));
-
- // 签名;
- PreparedTransaction ptx = txTpl.prepare();
- ptx.sign(adminKey);
-
- // 提交并等待共识返回;
- TransactionResponse txResp = ptx.commit();
-
- // 验证结果;
- Assert.assertTrue(txResp.isSuccess());
- assertEquals(ptx.getHash(),txResp.getContentHash());
- LedgerBlock block = ledgerRepository.getBlock(txResp.getBlockHeight());
- KVDataEntry[] kvDataEntries = ledgerRepository.getDataAccountSet(block).getDataAccount(dataKey.getAddress()).getDataEntries(0,1);
- assertEquals("100",kvDataEntries[0].getValue().toString());
- }
+// dataKey.getAddress().toBase58(),Bytes.fromString("123321"));
+//
+// // 签名;
+// PreparedTransaction ptx = txTpl.prepare();
+// ptx.sign(adminKey);
+//
+// // 提交并等待共识返回;
+// TransactionResponse txResp = ptx.commit();
+//
+// // 验证结果;
+// Assert.assertTrue(txResp.isSuccess());
+// assertEquals(ptx.getHash(),txResp.getContentHash());
+// LedgerBlock block = ledgerRepository.getBlock(txResp.getBlockHeight());
+// KVDataEntry[] kvDataEntries = ledgerRepository.getDataAccountSet(block).getDataAccount(dataKey.getAddress()).getDataEntries(0,1);
+// assertEquals("100",kvDataEntries[0].getValue().toString());
+// }
// private static void testContractExe1(AsymmetricKeypair adminKey, HashDigest ledgerHash, BlockchainKeypair dataKey,
// BlockchainService blockchainService,LedgerRepository ledgerRepository) {
diff --git a/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/contract/AssetContract2.java b/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/contract/AssetContract2.java
deleted file mode 100644
index 9586630a..00000000
--- a/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/contract/AssetContract2.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package test.com.jd.blockchain.intgr.contract;
-
-import com.jd.blockchain.contract.Contract;
-import com.jd.blockchain.contract.ContractEvent;
-import com.jd.blockchain.utils.Bytes;
-
-/**
- * 示例:一个“资产管理”智能合约;
- *
- * @author zhaogw
- */
-@Contract
-public interface AssetContract2 {
-
-// /**
-// * 发行资产;
-// * 新发行的资产数量;
-// * @param assetHolderAddress
-// * 新发行的资产的持有账户;
-// */
-// @ContractEvent(name = "issue-asset-0")
-// void issue(ContractBizContent contractBizContent, String assetHolderAddress);
-//
-// /**
-// * 发行资产;
-// * 新发行的资产数量;
-// * @param assetHolderAddress
-// * 新发行的资产的持有账户;
-// */
-// @ContractEvent(name = "issue-asset")
-// void issue(ContractBizContent contractBizContent, String assetHolderAddress, long cashNumber);
-
- @ContractEvent(name = "issue-asset-2")
- void issue(Bytes bytes, String assetHolderAddress, long cashNumber);
-
- @ContractEvent(name = "issue-asset-3")
- void issue(Byte byteObj, String assetHolderAddress, long cashNumber);
-
- @ContractEvent(name = "issue-asset-4")
- void issue(Byte byteObj, String assetHolderAddress, Bytes cashNumber);
-}
\ No newline at end of file
diff --git a/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/contract/AssetContractImpl.java b/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/contract/AssetContractImpl.java
new file mode 100644
index 00000000..9c1ec6e1
--- /dev/null
+++ b/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/contract/AssetContractImpl.java
@@ -0,0 +1,5 @@
+package test.com.jd.blockchain.intgr.contract;
+
+public class AssetContractImpl {
+
+}
diff --git a/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/contract/ContractInvocationTest.java b/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/contract/ContractInvocationTest.java
new file mode 100644
index 00000000..46698426
--- /dev/null
+++ b/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/contract/ContractInvocationTest.java
@@ -0,0 +1,14 @@
+package test.com.jd.blockchain.intgr.contract;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+public class ContractInvocationTest {
+
+ @Test
+ public void test() {
+
+ }
+
+}
diff --git a/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/ledger/LedgerBlockGeneratingTest.java b/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/ledger/LedgerBlockGeneratingTest.java
index a97a26c4..77bdef66 100644
--- a/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/ledger/LedgerBlockGeneratingTest.java
+++ b/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/ledger/LedgerBlockGeneratingTest.java
@@ -58,8 +58,6 @@ public class LedgerBlockGeneratingTest {
DefaultOperationHandleRegisteration opHandler = new DefaultOperationHandleRegisteration();
- System.gc();
-
test(ledgerHash, node.getPartiKey(), ledgerManager, opHandler, 1000, 5);
}
diff --git a/source/utils/utils-common/src/main/java/com/jd/blockchain/utils/io/FileUtils.java b/source/utils/utils-common/src/main/java/com/jd/blockchain/utils/io/FileUtils.java
index 77cfca01..0d4d86e1 100644
--- a/source/utils/utils-common/src/main/java/com/jd/blockchain/utils/io/FileUtils.java
+++ b/source/utils/utils-common/src/main/java/com/jd/blockchain/utils/io/FileUtils.java
@@ -442,37 +442,44 @@ public class FileUtils {
}
public static void deleteFile(File file) {
- deleteFile(file, false);
+ deletePath(file, false);
}
public static void deleteFile(String dir, boolean silent) {
File directory = new File(dir);
- deleteFile(directory, silent);
+ deletePath(directory, silent);
}
/**
- * 删除文件;
+ * 删除文件;
*
- * @param file
- * @param silent 是否静默删除;如果为 true ,则吞噬删除过程中的异常,意味着方法即便正常返回时也有可能删除不完全;
+ * @param path 如果指定的路径是单个文件,则删除该文件;如果指定路径是目录,则删除该目录及其下的全部文件;
+ * @param silent 是否静默删除;如果为 true ,则吞噬删除过程中的异常, 意味着方法即便正常返回时也有可能删除不完全;
+ * @return 如果删除成功,则返回 true; 否则返回 false,或者抛出 {@link RuntimeIOException};
*/
- public static void deleteFile(File file, boolean silent) {
- if (file.isFile()) {
+ public static boolean deletePath(File path, boolean silent) {
+ if (path.isFile()) {
try {
- file.delete();
- return;
+ path.delete();
+ return true;
} catch (Exception e) {
if (!silent) {
throw new RuntimeIOException(e.getMessage(), e);
}
}
+
+ return false;
}
- File[] files = file.listFiles();
+
+ // delete dir;
+ File[] files = path.listFiles();
if (files == null) {
- return;
+ return false;
}
+
for (File f : files) {
- deleteFile(f, silent);
+ deletePath(f, silent);
}
+ return path.delete();
}
}