private void handleCreated(ChaincodeMessage message) { if (message.getType() == REGISTERED) { this.state = CCState.ESTABLISHED; if (logger.isLoggable(Level.FINE)) { logger.fine(format("[%-8.8s] Received REGISTERED: moving to established state", message.getTxid())); } } else { if (logger.isLoggable(Level.WARNING)) { logger.warning(format("[%-8.8s] Received %s: cannot handle", message.getTxid(), message.getType())); } } }
private void handleEstablished(ChaincodeMessage message) { if (message.getType() == READY) { this.state = CCState.READY; if (logger.isLoggable(Level.FINE)) { logger.fine(format("[%-8.8s] Received READY: ready for invocations", message.getTxid())); } } else { if (logger.isLoggable(Level.WARNING)) { logger.warning(format("[%-8.8s] Received %s: cannot handle", message.getTxid(), message.getType())); } } }
logger.fine(format("[%-8.8s] %s response received.", txId, response.getType())); switch (response.getType()) { case RESPONSE: if (logger.isLoggable(Level.FINE)) { throw new RuntimeException(format("[%-8.8s]Unsuccessful response received.", txId)); default: logger.severe(format("[%-8.8s] Unexpected %s response received. Expected %s or %s.", txId, response.getType(), RESPONSE, ERROR)); throw new RuntimeException(format("[%-8.8s]Unexpected %s response received. Expected %s or %s.", txId, response.getType(), RESPONSE, ERROR));
private synchronized void handleChaincodeMessage(ChaincodeMessage message) { if (logger.isLoggable(Level.FINE)) { logger.fine(format("[%-8.8s] Handling ChaincodeMessage of type: %s, handler state %s", message.getTxid(), message.getType(), this.state)); } if (message.getType() == KEEPALIVE) { if (logger.isLoggable(Level.FINE)) { logger.fine(format("[%-8.8s] Received KEEPALIVE: nothing to do", message.getTxid())); } return; } switch (this.state) { case CREATED: handleCreated(message); break; case ESTABLISHED: handleEstablished(message); break; case READY: handleReady(message); break; default: if (logger.isLoggable(Level.WARNING)) { logger.warning(format("[%-8.8s] Received %s: cannot handle", message.getTxid(), message.getType())); } break; } }
@Test public void testRegisterAndEmptyInit() throws Exception { ChaincodeBase cb = new ChaincodeBase() { @Override public Response init(ChaincodeStub stub) { return newSuccessResponse(); } @Override public Response invoke(ChaincodeStub stub) { return newSuccessResponse(); } }; ByteString payload = org.hyperledger.fabric.protos.peer.Chaincode.ChaincodeInput.newBuilder().addArgs(ByteString.copyFromUtf8("")).build().toByteString(); ChaincodeShim.ChaincodeMessage initMsg = MessageUtil.newEventMessage(INIT, "testChannel", "0", payload, null); List<ScenarioStep> scenario = new ArrayList<>(); scenario.add(new RegisterStep()); scenario.add(new CompleteStep()); server = ChaincodeMockPeer.startServer(scenario); cb.start(new String[]{"-a", "127.0.0.1:7052", "-i", "testId"}); checkScenarioStepEnded(server, 1, 5000, TimeUnit.MILLISECONDS); server.send(initMsg); checkScenarioStepEnded(server, 2, 5000, TimeUnit.MILLISECONDS); assertThat(server.getLastMessageSend().getType(), is(INIT)); assertThat(server.getLastMessageRcvd().getType(), is(COMPLETED)); }
/** * Check incoming message * If message type is PUT_STATE and payload equal to passed in constructor * @param msg message from chaincode * @return */ @Override public boolean expected(ChaincodeShim.ChaincodeMessage msg) { orgMsg = msg; ChaincodeShim.PutState putMsg = null; try { putMsg = ChaincodeShim.PutState.parseFrom(msg.getPayload()); } catch (InvalidProtocolBufferException e) { return false; } return val.equals(new String(putMsg.getValue().toByteArray(), StandardCharsets.UTF_8)) && msg.getType() == ChaincodeShim.ChaincodeMessage.Type.PUT_STATE; }
private static String toJsonString(ChaincodeMessage message) { try { return JsonFormat.printer().print(message); } catch (InvalidProtocolBufferException e) { return String.format("{ Type: %s, TxId: %s }", message.getType(), message.getTxid()); } }
@Override public boolean expected(ChaincodeShim.ChaincodeMessage msg) { orgMsg = msg; return msg.getType() == ChaincodeShim.ChaincodeMessage.Type.INVOKE_CHAINCODE; }
@Override public boolean expected(ChaincodeShim.ChaincodeMessage msg) { orgMsg = msg; return msg.getType() == ChaincodeShim.ChaincodeMessage.Type.QUERY_STATE_CLOSE; }
@Override public boolean expected(ChaincodeShim.ChaincodeMessage msg) { return msg.getType() == ChaincodeShim.ChaincodeMessage.Type.ERROR; }
@Override public boolean expected(ChaincodeShim.ChaincodeMessage msg) { return msg.getType() == ChaincodeShim.ChaincodeMessage.Type.COMPLETED; }
@Test public void testRegisterChaincodeWithoutPackage() throws Exception { ChaincodeBase cb = new EmptyChaincodeWithoutPackage(); List<ScenarioStep> scenario = new ArrayList<>(); scenario.add(new RegisterStep()); server = ChaincodeMockPeer.startServer(scenario); cb.start(new String[]{"-a", "127.0.0.1:7052", "-i", "testId"}); ChaincodeFVTest.checkScenarioStepEnded(server, 1, 5000, TimeUnit.MILLISECONDS); assertThat(server.getLastMessageSend().getType(), is(READY)); assertThat(server.getLastMessageRcvd().getType(), is(REGISTER)); }
@Override public boolean expected(ChaincodeShim.ChaincodeMessage msg) { orgMsg = msg; return msg.getType() == ChaincodeShim.ChaincodeMessage.Type.REGISTER; }
@Override public boolean expected(ChaincodeShim.ChaincodeMessage msg) { orgMsg = msg; return msg.getType() == ChaincodeShim.ChaincodeMessage.Type.GET_HISTORY_FOR_KEY; }
@Override public boolean expected(ChaincodeShim.ChaincodeMessage msg) { orgMsg = msg; return msg.getType() == ChaincodeShim.ChaincodeMessage.Type.GET_STATE; }
@Test public void testRegister() throws Exception { ChaincodeBase cb = new EmptyChaincode(); List<ScenarioStep> scenario = new ArrayList<>(); scenario.add(new RegisterStep()); server = ChaincodeMockPeer.startServer(scenario); cb.start(new String[]{"-a", "127.0.0.1:7052", "-i", "testId"}); checkScenarioStepEnded(server, 1, 5000, TimeUnit.MILLISECONDS); assertThat(server.getLastMessageSend().getType(), is(READY)); assertThat(server.getLastMessageRcvd().getType(), is(REGISTER)); }
@Override public boolean expected(ChaincodeShim.ChaincodeMessage msg) { super.orgMsg = msg; return msg.getType() == ChaincodeShim.ChaincodeMessage.Type.QUERY_STATE_NEXT; } }
@Override public boolean expected(ChaincodeShim.ChaincodeMessage msg) { orgMsg = msg; return msg.getType() == ChaincodeShim.ChaincodeMessage.Type.DEL_STATE; }
@Override public boolean expected(ChaincodeShim.ChaincodeMessage msg) { super.orgMsg = msg; return msg.getType() == ChaincodeShim.ChaincodeMessage.Type.GET_STATE_BY_RANGE; } }
@Override public boolean expected(ChaincodeShim.ChaincodeMessage msg) { super.orgMsg = msg; return msg.getType() == ChaincodeShim.ChaincodeMessage.Type.GET_QUERY_RESULT; }