diff --git a/source/ledger/ledger-model/src/test/java/test/com/jd/blockchain/ledger/BytesEncodingTest.java b/source/ledger/ledger-model/src/test/java/test/com/jd/blockchain/ledger/BytesEncodingTest.java
index b2211f08..32d48aba 100644
--- a/source/ledger/ledger-model/src/test/java/test/com/jd/blockchain/ledger/BytesEncodingTest.java
+++ b/source/ledger/ledger-model/src/test/java/test/com/jd/blockchain/ledger/BytesEncodingTest.java
@@ -6,6 +6,7 @@ import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import org.junit.Test;
+import org.mockito.Mockito;
import com.jd.blockchain.utils.io.BytesEncoding;
import com.jd.blockchain.utils.io.NumberMask;
diff --git a/source/pom.xml b/source/pom.xml
index eaaad8c5..13ce9e10 100644
--- a/source/pom.xml
+++ b/source/pom.xml
@@ -130,7 +130,6 @@
org.mockito
mockito-core
${mockito.version}
- test
diff --git a/source/test/test-integration/src/main/java/test/com/jd/blockchain/intgr/perf/LedgerPerformanceTest.java b/source/test/test-integration/src/main/java/test/com/jd/blockchain/intgr/perf/LedgerPerformanceTest.java
index c227045f..07c05e08 100644
--- a/source/test/test-integration/src/main/java/test/com/jd/blockchain/intgr/perf/LedgerPerformanceTest.java
+++ b/source/test/test-integration/src/main/java/test/com/jd/blockchain/intgr/perf/LedgerPerformanceTest.java
@@ -7,19 +7,21 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Properties;
+import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.DoubleStream;
-import com.jd.blockchain.crypto.*;
-import com.jd.blockchain.ledger.core.CryptoConfig;
-import com.jd.blockchain.ledger.core.DefaultOperationHandleRegisteration;
-
import org.springframework.core.io.ClassPathResource;
import com.jd.blockchain.binaryproto.DataContractRegistry;
import com.jd.blockchain.consensus.ConsensusProvider;
import com.jd.blockchain.consensus.ConsensusProviders;
import com.jd.blockchain.consensus.ConsensusSettings;
+import com.jd.blockchain.crypto.AsymmetricKeypair;
+import com.jd.blockchain.crypto.Crypto;
+import com.jd.blockchain.crypto.CryptoAlgorithm;
+import com.jd.blockchain.crypto.HashDigest;
+import com.jd.blockchain.crypto.PrivKey;
import com.jd.blockchain.ledger.BlockchainIdentity;
import com.jd.blockchain.ledger.BlockchainKeyGenerator;
import com.jd.blockchain.ledger.BlockchainKeypair;
@@ -28,14 +30,21 @@ import com.jd.blockchain.ledger.DataAccountKVSetOperation;
import com.jd.blockchain.ledger.DataAccountRegisterOperation;
import com.jd.blockchain.ledger.LedgerBlock;
import com.jd.blockchain.ledger.LedgerInitOperation;
+import com.jd.blockchain.ledger.LedgerPermission;
+import com.jd.blockchain.ledger.LedgerSecurityException;
+import com.jd.blockchain.ledger.TransactionPermission;
import com.jd.blockchain.ledger.TransactionRequest;
import com.jd.blockchain.ledger.TransactionRequestBuilder;
import com.jd.blockchain.ledger.TransactionResponse;
import com.jd.blockchain.ledger.UserRegisterOperation;
+import com.jd.blockchain.ledger.core.DefaultOperationHandleRegisteration;
import com.jd.blockchain.ledger.core.LedgerDataset;
import com.jd.blockchain.ledger.core.LedgerEditor;
import com.jd.blockchain.ledger.core.LedgerManager;
import com.jd.blockchain.ledger.core.LedgerRepository;
+import com.jd.blockchain.ledger.core.LedgerSecurityManager;
+import com.jd.blockchain.ledger.core.MultiIdsPolicy;
+import com.jd.blockchain.ledger.core.SecurityPolicy;
import com.jd.blockchain.ledger.core.TransactionBatchProcessor;
import com.jd.blockchain.service.TransactionBatchResultHandle;
import com.jd.blockchain.storage.service.DbConnectionFactory;
@@ -51,6 +60,7 @@ import com.jd.blockchain.tools.initializer.web.LedgerInitConsensusService;
import com.jd.blockchain.tools.keygen.KeyGenCommand;
import com.jd.blockchain.transaction.TxBuilder;
import com.jd.blockchain.utils.ArgumentSet;
+import com.jd.blockchain.utils.Bytes;
import com.jd.blockchain.utils.ConsoleUtils;
import com.jd.blockchain.utils.concurrent.ThreadInvoker.AsyncCallback;
import com.jd.blockchain.utils.io.FileUtils;
@@ -90,6 +100,8 @@ public class LedgerPerformanceTest {
DataContractRegistry.register(DataAccountKVSetOperation.class);
}
+ public static final LedgerSecurityManager DEFAULT_SECURITY_MANAGER = new FreedomLedgerSecurityManager();
+
public static void test(String[] args) {
NodeContext[] nodes = null;
try {
@@ -281,8 +293,8 @@ public class LedgerPerformanceTest {
LedgerBlock latestBlock = ledger.getLatestBlock();
LedgerDataset previousDataSet = ledger.getDataSet(latestBlock);
LedgerEditor newEditor = ledger.createNextBlock();
- TransactionBatchProcessor txProc = new TransactionBatchProcessor(newEditor, previousDataSet, opHandler,
- ledgerManager);
+ TransactionBatchProcessor txProc = new TransactionBatchProcessor(DEFAULT_SECURITY_MANAGER, newEditor,
+ previousDataSet, opHandler, ledgerManager);
// 准备请求
int totalCount = batchSize * batchCount;
@@ -319,8 +331,8 @@ public class LedgerPerformanceTest {
long startTs = System.currentTimeMillis();
LedgerEditor newEditor = ledger.createNextBlock();
- TransactionBatchProcessor txProc = new TransactionBatchProcessor(newEditor, previousDataSet, opHandler,
- ledgerManager);
+ TransactionBatchProcessor txProc = new TransactionBatchProcessor(DEFAULT_SECURITY_MANAGER, newEditor,
+ previousDataSet, opHandler, ledgerManager);
testTxExec(txList, i * batchSize, batchSize, txProc);
@@ -496,9 +508,8 @@ public class LedgerPerformanceTest {
LedgerInitProperties initSetting = loadInitSetting();
Properties props = loadConsensusSetting(config);
ConsensusProvider csProvider = getConsensusProvider(provider);
- ConsensusSettings csProps = csProvider.getSettingsFactory()
- .getConsensusSettingsBuilder()
- .createSettings(props, Utils.loadParticipantNodes());
+ ConsensusSettings csProps = csProvider.getSettingsFactory().getConsensusSettingsBuilder().createSettings(props,
+ Utils.loadParticipantNodes());
DBSetting dbsetting0;
DBSetting dbsetting1;
@@ -632,4 +643,77 @@ public class LedgerPerformanceTest {
}
}
+
+ private static class FreedomLedgerSecurityManager implements LedgerSecurityManager {
+
+ public static final FreedomLedgerSecurityManager INSTANCE = new FreedomLedgerSecurityManager();
+
+ @Override
+ public SecurityPolicy createSecurityPolicy(Set endpoints, Set nodes) {
+ return new FreedomSecurityPolicy(endpoints, nodes);
+ }
+
+ }
+
+ private static class FreedomSecurityPolicy implements SecurityPolicy {
+
+ private Set endpoints;
+ private Set nodes;
+
+ public FreedomSecurityPolicy(Set endpoints, Set nodes) {
+ this.endpoints = endpoints;
+ this.nodes = nodes;
+ }
+
+ @Override
+ public Set getEndpoints() {
+ return endpoints;
+ }
+
+ @Override
+ public Set getNodes() {
+ return nodes;
+ }
+
+ @Override
+ public boolean isEnableToEndpoints(LedgerPermission permission, MultiIdsPolicy midPolicy) {
+ return true;
+ }
+
+ @Override
+ public boolean isEnableToEndpoints(TransactionPermission permission, MultiIdsPolicy midPolicy) {
+ return true;
+ }
+
+ @Override
+ public boolean isEnableToNodes(LedgerPermission permission, MultiIdsPolicy midPolicy) {
+ return true;
+ }
+
+ @Override
+ public boolean isEnableToNodes(TransactionPermission permission, MultiIdsPolicy midPolicy) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public void checkEndpoints(LedgerPermission permission, MultiIdsPolicy midPolicy)
+ throws LedgerSecurityException {
+ }
+
+ @Override
+ public void checkEndpoints(TransactionPermission permission, MultiIdsPolicy midPolicy)
+ throws LedgerSecurityException {
+ }
+
+ @Override
+ public void checkNodes(LedgerPermission permission, MultiIdsPolicy midPolicy) throws LedgerSecurityException {
+ }
+
+ @Override
+ public void checkNodes(TransactionPermission permission, MultiIdsPolicy midPolicy)
+ throws LedgerSecurityException {
+ }
+
+ }
}
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 233af7d1..c3d268fd 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
@@ -45,6 +45,7 @@ import com.jd.blockchain.utils.net.NetworkAddress;
import test.com.jd.blockchain.intgr.PresetAnswerPrompter;
import test.com.jd.blockchain.intgr.initializer.LedgerInitializeTest;
import test.com.jd.blockchain.intgr.initializer.LedgerInitializeTest.NodeContext;
+import test.com.jd.blockchain.intgr.perf.LedgerPerformanceTest;
import test.com.jd.blockchain.intgr.perf.Utils;
public class LedgerBlockGeneratingTest {
@@ -81,7 +82,8 @@ public class LedgerBlockGeneratingTest {
long startTs = System.currentTimeMillis();
LedgerEditor newEditor = ledger.createNextBlock();
- TransactionBatchProcessor txProc = new TransactionBatchProcessor(newEditor, previousDataSet, opHandler,
+ TransactionBatchProcessor txProc = new TransactionBatchProcessor(
+ LedgerPerformanceTest.DEFAULT_SECURITY_MANAGER, newEditor, previousDataSet, opHandler,
ledgerManager);
testTxExec(txList, i * batchSize, batchSize, txProc);
@@ -129,9 +131,8 @@ public class LedgerBlockGeneratingTest {
LedgerInitProperties initSetting = loadInitSetting();
Properties props = loadConsensusSetting();
ConsensusProvider csProvider = getConsensusProvider();
- ConsensusSettings csProps = csProvider.getSettingsFactory()
- .getConsensusSettingsBuilder()
- .createSettings(props, Utils.loadParticipantNodes());
+ ConsensusSettings csProps = csProvider.getSettingsFactory().getConsensusSettingsBuilder().createSettings(props,
+ Utils.loadParticipantNodes());
NodeContext node0 = new NodeContext(initSetting.getConsensusParticipant(0).getInitializerAddress(),
serviceRegisterMap);
diff --git a/source/tools/tools-mocker/pom.xml b/source/tools/tools-mocker/pom.xml
index 3b79b5b9..c78dcd31 100644
--- a/source/tools/tools-mocker/pom.xml
+++ b/source/tools/tools-mocker/pom.xml
@@ -39,7 +39,11 @@
crypto-classic
${project.version}
-
+
+ org.mockito
+ mockito-core
+ provided
+
diff --git a/source/tools/tools-mocker/src/main/java/com/jd/blockchain/mocker/MockerNodeContext.java b/source/tools/tools-mocker/src/main/java/com/jd/blockchain/mocker/MockerNodeContext.java
index f48e59c0..e29cd904 100644
--- a/source/tools/tools-mocker/src/main/java/com/jd/blockchain/mocker/MockerNodeContext.java
+++ b/source/tools/tools-mocker/src/main/java/com/jd/blockchain/mocker/MockerNodeContext.java
@@ -1,6 +1,8 @@
package com.jd.blockchain.mocker;
import static java.lang.reflect.Proxy.newProxyInstance;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.when;
import java.text.SimpleDateFormat;
import java.util.Date;
@@ -8,6 +10,8 @@ import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
+import org.mockito.Mockito;
+
import com.jd.blockchain.binaryproto.DataContractRegistry;
import com.jd.blockchain.consensus.ClientIdentification;
import com.jd.blockchain.consensus.ClientIdentifications;
@@ -443,11 +447,25 @@ public class MockerNodeContext implements BlockchainQueryService {
return reqBuilder.buildRequest();
}
+ private static LedgerSecurityManager getSecurityManager() {
+ LedgerSecurityManager securityManager = Mockito.mock(LedgerSecurityManager.class);
+
+ SecurityPolicy securityPolicy = Mockito.mock(SecurityPolicy.class);
+ when(securityPolicy.isEnableToEndpoints(any(LedgerPermission.class), any())).thenReturn(true);
+ when(securityPolicy.isEnableToEndpoints(any(TransactionPermission.class), any())).thenReturn(true);
+ when(securityPolicy.isEnableToNodes(any(LedgerPermission.class), any())).thenReturn(true);
+ when(securityPolicy.isEnableToNodes(any(TransactionPermission.class), any())).thenReturn(true);
+
+ when(securityManager.createSecurityPolicy(any(), any())).thenReturn(securityPolicy);
+
+ return securityManager;
+ }
+
public OperationResult[] txProcess(TransactionRequest txRequest) {
LedgerEditor newEditor = ledgerRepository.createNextBlock();
LedgerBlock latestBlock = ledgerRepository.getLatestBlock();
LedgerDataset previousDataSet = ledgerRepository.getDataSet(latestBlock);
- TransactionBatchProcessor txProc = new TransactionBatchProcessor(newEditor,
+ TransactionBatchProcessor txProc = new TransactionBatchProcessor(getSecurityManager(), newEditor,
previousDataSet, opHandler, ledgerManager);
TransactionResponse txResp = txProc.schedule(txRequest);
TransactionBatchResultHandle handle = txProc.prepare();
diff --git a/source/tools/tools-mocker/src/main/java/com/jd/blockchain/mocker/handler/MockerContractExeHandle.java b/source/tools/tools-mocker/src/main/java/com/jd/blockchain/mocker/handler/MockerContractExeHandle.java
index e4db1c39..7683c3db 100644
--- a/source/tools/tools-mocker/src/main/java/com/jd/blockchain/mocker/handler/MockerContractExeHandle.java
+++ b/source/tools/tools-mocker/src/main/java/com/jd/blockchain/mocker/handler/MockerContractExeHandle.java
@@ -29,11 +29,11 @@ public class MockerContractExeHandle implements OperationHandle {
private HashDigest ledgerHash;
@Override
- public BytesValue process(Operation op, LedgerDataset dataset, TransactionRequestExtension requestContext,
+ public BytesValue process(Operation op, LedgerDataset dataset, TransactionRequestExtension request,
LedgerDataset previousBlockDataset, OperationHandleContext opHandleContext, LedgerService ledgerService) {
ContractEventSendOperation contractOP = (ContractEventSendOperation) op;
- HashDigest txHash = requestContext.getRequest().getTransactionContent().getHash();
+ HashDigest txHash = request.getTransactionContent().getHash();
ExecutorProxy executorProxy = executorProxyMap.get(txHash);
@@ -43,7 +43,7 @@ public class MockerContractExeHandle implements OperationHandle {
ContractLedgerContext ledgerContext = new ContractLedgerContext(queryService, opHandleContext);
MockerContractEventContext contractEventContext = new MockerContractEventContext(ledgerHash,
- contractOP.getEvent(), requestContext.getRequest(), ledgerContext);
+ contractOP.getEvent(), request, ledgerContext);
Object instance = executorProxy.getInstance();
EventProcessingAware awire = null;