Skip to content

Commit d53d8c7

Browse files
committed
add test
1 parent 5feef0a commit d53d8c7

File tree

4 files changed

+113
-3
lines changed

4 files changed

+113
-3
lines changed

README.md

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,90 @@
4545
* 4、通过`client`获取通道对象(`channel`),客户端设置发起交易需要使用的`Orderer`以及`Peer`对象
4646
* 5、通过`channel`对象设置调用链码的名称参数等等信息发起调用链码
4747

48+
```java
49+
package ijarvis.intelliq.Fabric;
50+
// 省略相关的包导入
51+
public class SampleUser implements User {
52+
private final String certFolder;
53+
private final String userName;
54+
public SampleUser(String certFolder, String userName) {
55+
this.certFolder = certFolder;
56+
this.userName = userName;
57+
}
58+
//省略相关Set和Get方法
59+
60+
/**
61+
*
62+
* 重要实现方法,不使用CA需要自己实现如何加载私钥以及证书信息
63+
*/
64+
@Override
65+
public Enrollment getEnrollment() {
66+
return new Enrollment() {
67+
68+
@Override
69+
public PrivateKey getKey() {
70+
try {
71+
return loadPrivateKey(Paths.get(certFolder, "/keystore/ea2db84973c9c54436c47d7e10b9b63420f654ecd7c541fab14646e976294393_sk"));
72+
} catch (Exception e) {
73+
return null;
74+
}
75+
}
76+
@Override
77+
public String getCert() {
78+
try {
79+
return new String(Files.readAllBytes(Paths.get(certFolder, "/signcerts/Admin@org1.example.com-cert.pem")));
80+
} catch (Exception e) {
81+
return "";
82+
}
83+
}
84+
};
85+
}
86+
87+
//测试代码所以固定写死相关的MSPID
88+
@Override
89+
public String getMspId() {
90+
return "Org1MSP";
91+
}
92+
/***
93+
* 实现加载证书服务
94+
*/
95+
public static PrivateKey loadPrivateKey(Path fileName) throws IOException, GeneralSecurityException {
96+
PrivateKey key = null;
97+
InputStream is = null;
98+
try {
99+
is = new FileInputStream(fileName.toString());
100+
BufferedReader br = new BufferedReader(new InputStreamReader(is));
101+
StringBuilder builder = new StringBuilder();
102+
boolean inKey = false;
103+
for (String line = br.readLine(); line != null; line = br.readLine()) {
104+
if (!inKey) {
105+
if (line.startsWith("-----BEGIN ") && line.endsWith(" PRIVATE KEY-----")) {
106+
inKey = true;
107+
}
108+
continue;
109+
} else {
110+
if (line.startsWith("-----END ") && line.endsWith(" PRIVATE KEY-----")) {
111+
inKey = false;
112+
break;
113+
}
114+
builder.append(line);
115+
}
116+
}
117+
//
118+
byte[] encoded = DatatypeConverter.parseBase64Binary(builder.toString());
119+
PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(encoded);
120+
KeyFactory kf = KeyFactory.getInstance("ECDSA");
121+
key = kf.generatePrivate(keySpec);
122+
} finally {
123+
is.close();
124+
}
125+
return key;
126+
}
127+
}
128+
129+
130+
```
131+
48132

49133
### 1.3、其他说明
50134
如果觉得所给测试用例代码不够明确,可以参考[官方网站此处的代码示例](https://github.com/hyperledger/fabric-sdk-java/blob/master/src/test/java/org/hyperledger/fabric/sdkintegration/End2endAndBackAgainIT.java)

src/main/java/ijarvis/intelliq/Fabric/FabricApp.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import ijarvis.intelliq.FabricCA.SampleUserCA;
44
import ijarvis.intelliq.LedgerRecord;
5-
import ijarvis.intelliq.SampleUser;
65
import org.apache.log4j.Logger;
76
import org.hyperledger.fabric.sdk.*;
87
import org.hyperledger.fabric.sdk.exception.CryptoException;

src/main/java/ijarvis/intelliq/SampleUser.java renamed to src/main/java/ijarvis/intelliq/Fabric/SampleUser.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package ijarvis.intelliq;
1+
package ijarvis.intelliq.Fabric;
22

33
import org.hyperledger.fabric.sdk.Enrollment;
44
import org.hyperledger.fabric.sdk.User;

src/test/java/ijarvis/intelliq/Fabric/AppTest.java

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
import org.junit.Before;
1010
import org.junit.Test;
1111

12+
import java.util.UUID;
13+
1214
/**
1315
* Unit test for simple App.
1416
*/
@@ -27,6 +29,11 @@ public void Setup() throws CryptoException, InvalidArgumentException {
2729
FabricApp fabricApp=new FabricApp();
2830
FabricApp.init();
2931
}
32+
33+
/**
34+
*
35+
* 测试链码插入操作
36+
*/
3037
@Test
3138
public void TestEpointChainCodeInstert() throws Exception {
3239
logger.debug("测试Fabric 插入功能");
@@ -37,7 +44,9 @@ public void TestEpointChainCodeInstert() throws Exception {
3744
FabricApp.instertFabcar(channel,PERSONINFO);
3845
}
3946

40-
47+
/**
48+
* 测试链码查询操作
49+
*/
4150
@Test
4251
public void TestEpointChainCodeQuery() throws Exception {
4352
logger.debug("测试Fabric 查询功能");
@@ -48,5 +57,23 @@ public void TestEpointChainCodeQuery() throws Exception {
4857
FabricApp.queryFabcar(channel, PERSONINFO.getPerid());
4958
}
5059

60+
/**
61+
*
62+
*/
63+
@Test
64+
public void TestEpointChainCodeMutilInstert() throws Exception{
65+
logger.debug("测试Fabric 循环插入1000个值测试监控值是否包含变化");
66+
Channel channel = FabricApp.client.newChannel(CHANNELID);
67+
channel.addPeer(FabricApp.client.newPeer("peer", CONNFIG_Peer0Org1));
68+
channel.addOrderer(FabricApp.client.newOrderer("orderer", CONNFIG_Orderer));
69+
channel.initialize();
70+
for (int i =0 ;i<10000;i++){
71+
String perid=UUID.randomUUID().toString();
72+
LedgerRecord tmp=new LedgerRecord(perid,"测试","2017-12-13","江苏张家港","3000","苏州");
73+
FabricApp.instertFabcar(channel, tmp);
74+
}
75+
logger.debug("测试完成");
76+
}
77+
5178

5279
}

0 commit comments

Comments
 (0)