Ejemplo n.º 1
0
			ledgerPtr.TxFinished("txUuid", true)
			hash1, err = ledgerPtr.GetTempStateHash()
			Expect(err).To(BeNil())
			Expect(hash0).ToNot(Equal(hash1))
			Expect(ledgerPtr.RollbackTxBatch(2)).To(BeNil())
			hash1, err = ledgerPtr.GetTempStateHash()
			Expect(err).To(BeNil())
			Expect(hash0).To(Equal(hash1))
		})
		It("commits and validates a batch with a bad transaction result", func() {
			uuid := util.GenerateUUID()
			transactionResult := &protos.TransactionResult{Uuid: uuid, ErrorCode: 500, Error: "bad"}
			tx, err := protos.NewTransaction(protos.ChaincodeID{Path: "testUrl"}, uuid, "anyfunction", []string{"param1, param2"})
			ledgerPtr.CommitTxBatch(1, []*protos.Transaction{tx}, []*protos.TransactionResult{transactionResult}, []byte("proof"))

			block, err := ledgerPtr.GetBlockByNumber(0)
			Expect(err).To(BeNil())
			nonHashData := block.GetNonHashData()
			Expect(nonHashData).ToNot(BeNil())
		})
	})

	Context("Ledger with committed state", func() {

		BeforeEach(func() {
			ledgerPtr = InitSpec()

			Expect(ledgerPtr.BeginTxBatch(1)).To(BeNil())
			ledgerPtr.TxBegin("txUuid")
			Expect(ledgerPtr.SetState("chaincode1", "key1", []byte("value1"))).To(BeNil())
			Expect(ledgerPtr.SetState("chaincode2", "key2", []byte("value2"))).To(BeNil())