diff --git a/src/test/java/blockchain/query/ChaincodeTransactionTest.java b/src/test/java/blockchain/query/ChaincodeTransactionTest.java new file mode 100644 index 0000000..f6776b7 --- /dev/null +++ b/src/test/java/blockchain/query/ChaincodeTransactionTest.java @@ -0,0 +1,119 @@ +package blockchain.query; + +import blockchain.client.ChannelClientWrapper; +import blockchain.client.FabricClientWrapper; +import blockchain.configuration.Config; +import blockchain.user.UserContext; +import blockchain.utility.Util; +import org.apache.log4j.BasicConfigurator; +import org.apache.log4j.Logger; +import org.hyperledger.fabric.sdk.*; +import org.junit.Test; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +public class ChaincodeTransactionTest { + private static Logger logger = Logger.getLogger(ChaincodeTransactionTest.class); + @Test + public void TestATransaction(){ + BasicConfigurator.configure(); + + //UserContext user = Util.readUserContext(Config.ORG1,"User-org1"); + UserContext user = Util.readUserContext(Config.ORG1,Config.ADMIN); + + try{ + + String chaincode = Config.CHAINCODE_NAME; + FabricClientWrapper fabricClientWrapper = new FabricClientWrapper(user); + ChannelClientWrapper channelClientWrapper = fabricClientWrapper.createChannelClient(Config.CHANNEL_NAME); + + Channel channel = channelClientWrapper.getChannel(); + Peer peer = fabricClientWrapper.getClient().newPeer(Config.ORG_PEER,Config.ORG_PEER_URL); + EventHub eventHub = fabricClientWrapper.getClient().newEventHub("eventhub01", Config.ORG_PEER_EVENT_URL); + Orderer orderer = fabricClientWrapper.getClient().newOrderer(Config.ORDERER_NAME,Config.ORDERER_URL); + channel.addPeer(peer); + channel.addEventHub(eventHub); + channel.addOrderer(orderer); + channel.initialize(); + + /* + List args = new ArrayList<>(); + args.add("b"); + args.add("a"); + args.add("5"); + + String accountFromKey = args.get(0); + String accountToKey = args.get(1); + int amount = Integer.parseInt(args.get(2)); + + System.out.println("args0 = "+accountFromKey+" -- args1 = "+accountToKey+" -- args2 = "+amount); + */ + + + /* + String[] args = {"b","a","5"}; + + Collection responseQuery = channelClientWrapper.queryByChainCode(chaincode,"invoke",args); + for(ProposalResponse presp : responseQuery){ + ChaincodeResponse.Status status = presp.getStatus(); + if(status.getStatus()!=200){ + throw new Exception(presp.getMessage()); + } + String stringResponse = new String(presp.getChaincodeActionResponsePayload()); + logger.info("RESPONSE : "+stringResponse); + } + */ + + + + TransactionProposalRequest tpr = fabricClientWrapper.getClient().newTransactionProposalRequest(); + ChaincodeID cid = ChaincodeID.newBuilder().setName(Config.CHAINCODE_NAME).build(); + tpr.setChaincodeID(cid); + tpr.setFcn("invoke"); + tpr.setArgs(new String[]{"b","a","20"}); + + Collection responses = channel.sendTransactionProposal(tpr); + List invalid = responses.stream().filter(r -> r.isInvalid()).collect(Collectors.toList()); + if (!invalid.isEmpty()) { + invalid.forEach(response -> { + logger.error(response.getMessage()); + }); + } + + + BlockEvent.TransactionEvent event = channel.sendTransaction(responses).get(); + + event.getTransactionID(); + /* + BlockEvent.TransactionEvent event = sendTransaction(fabricClientWrapper.getClient(), channel).get(60, TimeUnit.SECONDS); + if (event.isValid()) { + logger.info("Transacion tx: " + event.getTransactionID() + " is completed."); + } else { + logger.error("Transaction tx: " + event.getTransactionID() + " is invalid."); + } + */ + + + + + //String[] args = {"a","b","5"}; + //logger.info("LENGHT : "+args.length); + //Collection responseQuery = channelClientWrapper.queryByChainCode(chaincode,"invoke",args); + //for(ProposalResponse presp : responseQuery){ + //ChaincodeResponse.Status status = presp.getStatus(); + //if(status.getStatus()!=200){ + // throw new Exception(presp.getMessage()); + //} + //String stringResponse = new String(presp.getChaincodeActionResponsePayload()); + //logger.info("RESPONSE : "+stringResponse); + //} + }catch (Exception e){ + e.printStackTrace(); + } + } +} diff --git a/src/test/java/blockchain/query/QueryTest.java b/src/test/java/blockchain/query/QueryTest.java index 98db2da..da92875 100644 --- a/src/test/java/blockchain/query/QueryTest.java +++ b/src/test/java/blockchain/query/QueryTest.java @@ -21,8 +21,8 @@ public class QueryTest { public void TestAQueryChannels() { BasicConfigurator.configure(); - //UserContext admin = Util.readUserContext(Config.ORG1,Config.ADMIN); - UserContext user = Util.readUserContext(Config.ORG1,"User-org1"); + UserContext user = Util.readUserContext(Config.ORG1,Config.ADMIN); + //UserContext user = Util.readUserContext(Config.ORG1,"User-org1"); try{ diff --git a/target/test-classes/blockchain/query/ChaincodeTransactionTest.class b/target/test-classes/blockchain/query/ChaincodeTransactionTest.class new file mode 100644 index 0000000..3d75b9c Binary files /dev/null and b/target/test-classes/blockchain/query/ChaincodeTransactionTest.class differ diff --git a/target/test-classes/blockchain/query/QueryTest.class b/target/test-classes/blockchain/query/QueryTest.class index bb3dde5..f0e4fdd 100644 Binary files a/target/test-classes/blockchain/query/QueryTest.class and b/target/test-classes/blockchain/query/QueryTest.class differ