예제 #1
0
				ledgerPtr.TxBegin("txUuid" + strconv.Itoa(i))
				Expect(ledgerPtr.SetState("chaincode"+strconv.Itoa(i), "key"+strconv.Itoa(i), []byte("value"+strconv.Itoa(i)))).To(BeNil())
				ledgerPtr.TxFinished("txUuid"+strconv.Itoa(i), true)
				uuid := util.GenerateUUID()
				tx, err := protos.NewTransaction(protos.ChaincodeID{Path: "testUrl"}, uuid, "anyfunction", []string{"param1, param2"})
				Expect(err).To(BeNil())
				err = ledgerPtr.CommitTxBatch(i, []*protos.Transaction{tx}, nil, []byte("proof"))
				Expect(err).To(BeNil())
			}
		})
		It("forces some ErrOutOfBounds conditions", func() {
			ledgerPtr.GetBlockByNumber(9)
			_, err := ledgerPtr.GetBlockByNumber(10)
			Expect(err).To(Equal(ledger.ErrOutOfBounds))

			ledgerPtr.GetStateDelta(9)
			_, err = ledgerPtr.GetStateDelta(10)
			Expect(err).To(Equal(ledger.ErrOutOfBounds))
		})
	})

	Describe("Ledger RollBackwardsAndForwards", func() {
		ledgerPtr := InitSpec()

		// Block 0
		It("creates, populates, finishes, commits and validates a batch", func() {
			Expect(ledgerPtr.BeginTxBatch(0)).To(BeNil())
			ledgerPtr.TxBegin("txUuid1")
			Expect(ledgerPtr.SetState("chaincode1", "key1", []byte("value1A"))).To(BeNil())
			Expect(ledgerPtr.SetState("chaincode2", "key2", []byte("value2A"))).To(BeNil())
			Expect(ledgerPtr.SetState("chaincode3", "key3", []byte("value3A"))).To(BeNil())