refactor: add default TestVector to TestDriver (#208)
This PR adds a `TestVector` to the `TestDriver` so that test driver methods that apply messages can be recorded in the test vector. refs #194
This commit is contained in:
parent
7d118e1b12
commit
81ea0ec5f3
@ -44,7 +44,7 @@ func MustNewActorAddr(data string) addr.Address {
|
|||||||
return address
|
return address
|
||||||
}
|
}
|
||||||
|
|
||||||
func MustIdFromAddress(a addr.Address) uint64 {
|
func MustIDFromAddress(a addr.Address) uint64 {
|
||||||
if a.Protocol() != addr.ID {
|
if a.Protocol() != addr.ID {
|
||||||
panic("must be ID protocol address")
|
panic("must be ID protocol address")
|
||||||
}
|
}
|
||||||
|
@ -120,7 +120,7 @@ func (d *StateDriver) newMinerAccountActor(sealProofType abi_spec.RegisteredSeal
|
|||||||
// creat a miner, owner, and its worker
|
// creat a miner, owner, and its worker
|
||||||
minerOwnerPk, minerOwnerID := d.NewAccountActor(address.SECP256K1, big_spec.NewInt(1_000_000_000))
|
minerOwnerPk, minerOwnerID := d.NewAccountActor(address.SECP256K1, big_spec.NewInt(1_000_000_000))
|
||||||
minerWorkerPk, minerWorkerID := d.NewAccountActor(address.BLS, big_spec.Zero())
|
minerWorkerPk, minerWorkerID := d.NewAccountActor(address.BLS, big_spec.Zero())
|
||||||
expectedMinerActorIDAddress := chain.MustNewIDAddr(chain.MustIdFromAddress(minerWorkerID) + 1)
|
expectedMinerActorIDAddress := chain.MustNewIDAddr(chain.MustIDFromAddress(minerWorkerID) + 1)
|
||||||
minerActorAddrs := computeInitActorExecReturn(minerWorkerPk, 0, 1, expectedMinerActorIDAddress)
|
minerActorAddrs := computeInitActorExecReturn(minerWorkerPk, 0, 1, expectedMinerActorIDAddress)
|
||||||
|
|
||||||
d.minerInfo = &MinerInfo{
|
d.minerInfo = &MinerInfo{
|
||||||
|
@ -44,6 +44,7 @@ import (
|
|||||||
"github.com/filecoin-project/lotus/chain/types"
|
"github.com/filecoin-project/lotus/chain/types"
|
||||||
"github.com/filecoin-project/oni/tvx/chain"
|
"github.com/filecoin-project/oni/tvx/chain"
|
||||||
vtypes "github.com/filecoin-project/oni/tvx/chain/types"
|
vtypes "github.com/filecoin-project/oni/tvx/chain/types"
|
||||||
|
"github.com/filecoin-project/oni/tvx/schema"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -235,6 +236,25 @@ func NewTestDriver() *TestDriver {
|
|||||||
checkRet := true
|
checkRet := true
|
||||||
config := NewConfig(checkExit, checkRet)
|
config := NewConfig(checkExit, checkRet)
|
||||||
|
|
||||||
|
vector := schema.TestVector{
|
||||||
|
Class: schema.ClassMessage,
|
||||||
|
Selector: "",
|
||||||
|
Meta: &schema.Metadata{
|
||||||
|
ID: "TK",
|
||||||
|
Version: "TK",
|
||||||
|
Gen: schema.GenerationData{
|
||||||
|
Source: "TK",
|
||||||
|
Version: "TK",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Pre: &schema.Preconditions{
|
||||||
|
StateTree: &schema.StateTree{},
|
||||||
|
},
|
||||||
|
Post: &schema.Postconditions{
|
||||||
|
StateTree: &schema.StateTree{},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
return &TestDriver{
|
return &TestDriver{
|
||||||
StateDriver: sd,
|
StateDriver: sd,
|
||||||
|
|
||||||
@ -244,6 +264,7 @@ func NewTestDriver() *TestDriver {
|
|||||||
SysCalls: syscalls,
|
SysCalls: syscalls,
|
||||||
|
|
||||||
applier: applier,
|
applier: applier,
|
||||||
|
Vector: &vector,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -265,6 +286,9 @@ type TestDriver struct {
|
|||||||
Config *Config
|
Config *Config
|
||||||
|
|
||||||
SysCalls *ChainValidationSysCalls
|
SysCalls *ChainValidationSysCalls
|
||||||
|
// Vector is the test vector that is used when methods are called on the
|
||||||
|
// driver that apply messages.
|
||||||
|
Vector *schema.TestVector
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -14,6 +14,7 @@ import (
|
|||||||
init_ "github.com/filecoin-project/specs-actors/actors/builtin/init"
|
init_ "github.com/filecoin-project/specs-actors/actors/builtin/init"
|
||||||
"github.com/filecoin-project/specs-actors/actors/util/adt"
|
"github.com/filecoin-project/specs-actors/actors/util/adt"
|
||||||
|
|
||||||
|
"github.com/filecoin-project/oni/tvx/schema"
|
||||||
"github.com/filecoin-project/oni/tvx/state"
|
"github.com/filecoin-project/oni/tvx/state"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -62,7 +63,7 @@ func runExamineCmd(_ *cli.Context) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
var tv TestVector
|
var tv schema.TestVector
|
||||||
if err := json.NewDecoder(file).Decode(&tv); err != nil {
|
if err := json.NewDecoder(file).Decode(&tv); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -15,6 +15,7 @@ import (
|
|||||||
"github.com/urfave/cli/v2"
|
"github.com/urfave/cli/v2"
|
||||||
|
|
||||||
"github.com/filecoin-project/oni/tvx/lotus"
|
"github.com/filecoin-project/oni/tvx/lotus"
|
||||||
|
"github.com/filecoin-project/oni/tvx/schema"
|
||||||
)
|
)
|
||||||
|
|
||||||
var execLotusFlags struct {
|
var execLotusFlags struct {
|
||||||
@ -44,7 +45,7 @@ func runExecLotus(_ *cli.Context) error {
|
|||||||
|
|
||||||
var (
|
var (
|
||||||
dec = json.NewDecoder(file)
|
dec = json.NewDecoder(file)
|
||||||
tv TestVector
|
tv schema.TestVector
|
||||||
)
|
)
|
||||||
|
|
||||||
if err = dec.Decode(&tv); err != nil {
|
if err = dec.Decode(&tv); err != nil {
|
||||||
@ -55,7 +56,7 @@ func runExecLotus(_ *cli.Context) error {
|
|||||||
default:
|
default:
|
||||||
dec := json.NewDecoder(os.Stdin)
|
dec := json.NewDecoder(os.Stdin)
|
||||||
for {
|
for {
|
||||||
var tv TestVector
|
var tv schema.TestVector
|
||||||
|
|
||||||
err := dec.Decode(&tv)
|
err := dec.Decode(&tv)
|
||||||
if err == io.EOF {
|
if err == io.EOF {
|
||||||
@ -73,7 +74,7 @@ func runExecLotus(_ *cli.Context) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func executeTestVector(tv TestVector) error {
|
func executeTestVector(tv schema.TestVector) error {
|
||||||
fmt.Println("executing test vector")
|
fmt.Println("executing test vector")
|
||||||
switch tv.Class {
|
switch tv.Class {
|
||||||
case "message":
|
case "message":
|
||||||
|
@ -14,6 +14,7 @@ import (
|
|||||||
"github.com/urfave/cli/v2"
|
"github.com/urfave/cli/v2"
|
||||||
|
|
||||||
"github.com/filecoin-project/oni/tvx/lotus"
|
"github.com/filecoin-project/oni/tvx/lotus"
|
||||||
|
"github.com/filecoin-project/oni/tvx/schema"
|
||||||
"github.com/filecoin-project/oni/tvx/state"
|
"github.com/filecoin-project/oni/tvx/state"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -178,27 +179,27 @@ func runExtractMsg(c *cli.Context) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Write out the test vector.
|
// Write out the test vector.
|
||||||
vector := TestVector{
|
vector := schema.TestVector{
|
||||||
Class: ClassMessage,
|
Class: schema.ClassMessage,
|
||||||
Selector: "",
|
Selector: "",
|
||||||
Meta: &Metadata{
|
Meta: &schema.Metadata{
|
||||||
ID: "TK",
|
ID: "TK",
|
||||||
Version: "TK",
|
Version: "TK",
|
||||||
Gen: GenerationData{
|
Gen: schema.GenerationData{
|
||||||
Source: "TK",
|
Source: "TK",
|
||||||
Version: version.String(),
|
Version: version.String(),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
CAR: out.Bytes(),
|
CAR: out.Bytes(),
|
||||||
Pre: &Preconditions{
|
Pre: &schema.Preconditions{
|
||||||
Epoch: execTs.Height(),
|
Epoch: execTs.Height(),
|
||||||
StateTree: &StateTree{
|
StateTree: &schema.StateTree{
|
||||||
RootCID: preroot,
|
RootCID: preroot,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
ApplyMessages: []Message{{Bytes: msgBytes}},
|
ApplyMessages: []schema.Message{{Bytes: msgBytes}},
|
||||||
Post: &Postconditions{
|
Post: &schema.Postconditions{
|
||||||
StateTree: &StateTree{
|
StateTree: &schema.StateTree{
|
||||||
RootCID: postroot,
|
RootCID: postroot,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package main
|
package schema
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/hex"
|
"encoding/hex"
|
@ -15,11 +15,12 @@ import (
|
|||||||
|
|
||||||
"github.com/filecoin-project/oni/tvx/chain"
|
"github.com/filecoin-project/oni/tvx/chain"
|
||||||
"github.com/filecoin-project/oni/tvx/drivers"
|
"github.com/filecoin-project/oni/tvx/drivers"
|
||||||
|
"github.com/filecoin-project/oni/tvx/schema"
|
||||||
)
|
)
|
||||||
|
|
||||||
var suiteMessagesCmd = &cli.Command{
|
var suiteMessagesCmd = &cli.Command{
|
||||||
Name: "suite-messages",
|
Name: "suite-messages",
|
||||||
Description: "",
|
Description: "generate test vectors from the messages test suite adapted from github.com/filecoin-project/chain-validation",
|
||||||
Action: suiteMessages,
|
Action: suiteMessages,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -90,8 +91,6 @@ func MessageTest_AccountActorCreation() error {
|
|||||||
err := func() error {
|
err := func() error {
|
||||||
td := drivers.NewTestDriver()
|
td := drivers.NewTestDriver()
|
||||||
|
|
||||||
v := newEmptyMessageVector()
|
|
||||||
|
|
||||||
existingAccountAddr, _ := td.NewAccountActor(tc.existingActorType, tc.existingActorBal)
|
existingAccountAddr, _ := td.NewAccountActor(tc.existingActorType, tc.existingActorBal)
|
||||||
|
|
||||||
preroot := td.GetStateRoot()
|
preroot := td.GetStateRoot()
|
||||||
@ -101,7 +100,7 @@ func MessageTest_AccountActorCreation() error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
v.ApplyMessages = []Message{{Bytes: b}}
|
td.Vector.ApplyMessages = []schema.Message{{Bytes: b}}
|
||||||
result := td.ApplyFailure(
|
result := td.ApplyFailure(
|
||||||
msg,
|
msg,
|
||||||
tc.expExitCode,
|
tc.expExitCode,
|
||||||
@ -115,13 +114,13 @@ func MessageTest_AccountActorCreation() error {
|
|||||||
|
|
||||||
postroot := td.GetStateRoot()
|
postroot := td.GetStateRoot()
|
||||||
|
|
||||||
v.CAR = td.MustMarshalGzippedCAR(preroot, postroot)
|
td.Vector.CAR = td.MustMarshalGzippedCAR(preroot, postroot)
|
||||||
v.Pre.StateTree.RootCID = preroot
|
td.Vector.Pre.StateTree.RootCID = preroot
|
||||||
v.Post.StateTree.RootCID = postroot
|
td.Vector.Post.StateTree.RootCID = postroot
|
||||||
|
|
||||||
// encode and output
|
// encode and output
|
||||||
enc := json.NewEncoder(os.Stdout)
|
enc := json.NewEncoder(os.Stdout)
|
||||||
if err := enc.Encode(&v); err != nil {
|
if err := enc.Encode(&td.Vector); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -139,8 +138,6 @@ func MessageTest_AccountActorCreation() error {
|
|||||||
func MessageTest_InitActorSequentialIDAddressCreate() error {
|
func MessageTest_InitActorSequentialIDAddressCreate() error {
|
||||||
td := drivers.NewTestDriver()
|
td := drivers.NewTestDriver()
|
||||||
|
|
||||||
v := newEmptyMessageVector()
|
|
||||||
|
|
||||||
var initialBal = abi_spec.NewTokenAmount(200_000_000_000)
|
var initialBal = abi_spec.NewTokenAmount(200_000_000_000)
|
||||||
var toSend = abi_spec.NewTokenAmount(10_000)
|
var toSend = abi_spec.NewTokenAmount(10_000)
|
||||||
|
|
||||||
@ -148,8 +145,8 @@ func MessageTest_InitActorSequentialIDAddressCreate() error {
|
|||||||
|
|
||||||
receiver, receiverID := td.NewAccountActor(drivers.SECP, initialBal)
|
receiver, receiverID := td.NewAccountActor(drivers.SECP, initialBal)
|
||||||
|
|
||||||
firstPaychAddr := chain.MustNewIDAddr(chain.MustIdFromAddress(receiverID) + 1)
|
firstPaychAddr := chain.MustNewIDAddr(chain.MustIDFromAddress(receiverID) + 1)
|
||||||
secondPaychAddr := chain.MustNewIDAddr(chain.MustIdFromAddress(receiverID) + 2)
|
secondPaychAddr := chain.MustNewIDAddr(chain.MustIDFromAddress(receiverID) + 2)
|
||||||
|
|
||||||
firstInitRet := td.ComputeInitActorExecReturn(sender, 0, 0, firstPaychAddr)
|
firstInitRet := td.ComputeInitActorExecReturn(sender, 0, 0, firstPaychAddr)
|
||||||
secondInitRet := td.ComputeInitActorExecReturn(sender, 1, 0, secondPaychAddr)
|
secondInitRet := td.ComputeInitActorExecReturn(sender, 1, 0, secondPaychAddr)
|
||||||
@ -166,7 +163,7 @@ func MessageTest_InitActorSequentialIDAddressCreate() error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
v.ApplyMessages = append(v.ApplyMessages, Message{Bytes: b1})
|
td.Vector.ApplyMessages = append(td.Vector.ApplyMessages, schema.Message{Bytes: b1})
|
||||||
|
|
||||||
msg2 := td.MessageProducer.CreatePaymentChannelActor(sender, receiver, chain.Value(toSend), chain.Nonce(1))
|
msg2 := td.MessageProducer.CreatePaymentChannelActor(sender, receiver, chain.Value(toSend), chain.Nonce(1))
|
||||||
td.ApplyExpect(
|
td.ApplyExpect(
|
||||||
@ -178,40 +175,19 @@ func MessageTest_InitActorSequentialIDAddressCreate() error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
v.ApplyMessages = append(v.ApplyMessages, Message{Bytes: b2})
|
td.Vector.ApplyMessages = append(td.Vector.ApplyMessages, schema.Message{Bytes: b2})
|
||||||
|
|
||||||
postroot := td.GetStateRoot()
|
postroot := td.GetStateRoot()
|
||||||
|
|
||||||
v.CAR = td.MustMarshalGzippedCAR(preroot, postroot)
|
td.Vector.CAR = td.MustMarshalGzippedCAR(preroot, postroot)
|
||||||
v.Pre.StateTree.RootCID = preroot
|
td.Vector.Pre.StateTree.RootCID = preroot
|
||||||
v.Post.StateTree.RootCID = postroot
|
td.Vector.Post.StateTree.RootCID = postroot
|
||||||
|
|
||||||
// encode and output
|
// encode and output
|
||||||
enc := json.NewEncoder(os.Stdout)
|
enc := json.NewEncoder(os.Stdout)
|
||||||
if err := enc.Encode(&v); err != nil {
|
if err := enc.Encode(&td.Vector); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func newEmptyMessageVector() TestVector {
|
|
||||||
return TestVector{
|
|
||||||
Class: ClassMessage,
|
|
||||||
Selector: "",
|
|
||||||
Meta: &Metadata{
|
|
||||||
ID: "TK",
|
|
||||||
Version: "TK",
|
|
||||||
Gen: GenerationData{
|
|
||||||
Source: "TK",
|
|
||||||
Version: "TK",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Pre: &Preconditions{
|
|
||||||
StateTree: &StateTree{},
|
|
||||||
},
|
|
||||||
Post: &Postconditions{
|
|
||||||
StateTree: &StateTree{},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -12,6 +12,7 @@ import (
|
|||||||
|
|
||||||
"github.com/filecoin-project/oni/tvx/chain"
|
"github.com/filecoin-project/oni/tvx/chain"
|
||||||
"github.com/filecoin-project/oni/tvx/drivers"
|
"github.com/filecoin-project/oni/tvx/drivers"
|
||||||
|
"github.com/filecoin-project/oni/tvx/schema"
|
||||||
)
|
)
|
||||||
|
|
||||||
func MessageTest_MessageApplicationEdgecases() error {
|
func MessageTest_MessageApplicationEdgecases() error {
|
||||||
@ -21,13 +22,12 @@ func MessageTest_MessageApplicationEdgecases() error {
|
|||||||
err := func(testname string) error {
|
err := func(testname string) error {
|
||||||
td := drivers.NewTestDriver()
|
td := drivers.NewTestDriver()
|
||||||
|
|
||||||
v := newEmptyMessageVector()
|
|
||||||
alice, _ := td.NewAccountActor(drivers.SECP, aliceBal)
|
alice, _ := td.NewAccountActor(drivers.SECP, aliceBal)
|
||||||
|
|
||||||
preroot := td.GetStateRoot()
|
preroot := td.GetStateRoot()
|
||||||
|
|
||||||
msg := td.MessageProducer.Transfer(alice, alice, chain.Value(transferAmnt), chain.Nonce(0), chain.GasPrice(1), chain.GasLimit(8))
|
msg := td.MessageProducer.Transfer(alice, alice, chain.Value(transferAmnt), chain.Nonce(0), chain.GasPrice(1), chain.GasLimit(8))
|
||||||
v.ApplyMessages = append(v.ApplyMessages, Message{Bytes: chain.MustSerialize(msg)})
|
td.Vector.ApplyMessages = append(td.Vector.ApplyMessages, schema.Message{Bytes: chain.MustSerialize(msg)})
|
||||||
|
|
||||||
td.ApplyFailure(
|
td.ApplyFailure(
|
||||||
msg,
|
msg,
|
||||||
@ -35,13 +35,13 @@ func MessageTest_MessageApplicationEdgecases() error {
|
|||||||
|
|
||||||
postroot := td.GetStateRoot()
|
postroot := td.GetStateRoot()
|
||||||
|
|
||||||
v.CAR = td.MustMarshalGzippedCAR(preroot, postroot)
|
td.Vector.CAR = td.MustMarshalGzippedCAR(preroot, postroot)
|
||||||
v.Pre.StateTree.RootCID = preroot
|
td.Vector.Pre.StateTree.RootCID = preroot
|
||||||
v.Post.StateTree.RootCID = postroot
|
td.Vector.Post.StateTree.RootCID = postroot
|
||||||
|
|
||||||
// encode and output
|
// encode and output
|
||||||
enc := json.NewEncoder(os.Stdout)
|
enc := json.NewEncoder(os.Stdout)
|
||||||
if err := enc.Encode(&v); err != nil {
|
if err := enc.Encode(&td.Vector); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -54,12 +54,11 @@ func MessageTest_MessageApplicationEdgecases() error {
|
|||||||
err = func(testname string) error {
|
err = func(testname string) error {
|
||||||
td := drivers.NewTestDriver()
|
td := drivers.NewTestDriver()
|
||||||
|
|
||||||
v := newEmptyMessageVector()
|
|
||||||
alice, _ := td.NewAccountActor(drivers.SECP, aliceBal)
|
alice, _ := td.NewAccountActor(drivers.SECP, aliceBal)
|
||||||
|
|
||||||
preroot := td.GetStateRoot()
|
preroot := td.GetStateRoot()
|
||||||
msg := td.MessageProducer.Transfer(alice, alice, chain.Value(transferAmnt), chain.Nonce(0), chain.GasPrice(10), chain.GasLimit(1))
|
msg := td.MessageProducer.Transfer(alice, alice, chain.Value(transferAmnt), chain.Nonce(0), chain.GasPrice(10), chain.GasLimit(1))
|
||||||
v.ApplyMessages = append(v.ApplyMessages, Message{Bytes: chain.MustSerialize(msg)})
|
td.Vector.ApplyMessages = append(td.Vector.ApplyMessages, schema.Message{Bytes: chain.MustSerialize(msg)})
|
||||||
|
|
||||||
// Expect Message application to fail due to lack of gas
|
// Expect Message application to fail due to lack of gas
|
||||||
td.ApplyFailure(
|
td.ApplyFailure(
|
||||||
@ -68,7 +67,7 @@ func MessageTest_MessageApplicationEdgecases() error {
|
|||||||
|
|
||||||
unknown := chain.MustNewIDAddr(10000000)
|
unknown := chain.MustNewIDAddr(10000000)
|
||||||
msg = td.MessageProducer.Transfer(unknown, alice, chain.Value(transferAmnt), chain.Nonce(0), chain.GasPrice(10), chain.GasLimit(1))
|
msg = td.MessageProducer.Transfer(unknown, alice, chain.Value(transferAmnt), chain.Nonce(0), chain.GasPrice(10), chain.GasLimit(1))
|
||||||
v.ApplyMessages = append(v.ApplyMessages, Message{Bytes: chain.MustSerialize(msg)})
|
td.Vector.ApplyMessages = append(td.Vector.ApplyMessages, schema.Message{Bytes: chain.MustSerialize(msg)})
|
||||||
|
|
||||||
// Expect Message application to fail due to lack of gas when sender is unknown
|
// Expect Message application to fail due to lack of gas when sender is unknown
|
||||||
td.ApplyFailure(
|
td.ApplyFailure(
|
||||||
@ -77,13 +76,13 @@ func MessageTest_MessageApplicationEdgecases() error {
|
|||||||
|
|
||||||
postroot := td.GetStateRoot()
|
postroot := td.GetStateRoot()
|
||||||
|
|
||||||
v.CAR = td.MustMarshalGzippedCAR(preroot, postroot)
|
td.Vector.CAR = td.MustMarshalGzippedCAR(preroot, postroot)
|
||||||
v.Pre.StateTree.RootCID = preroot
|
td.Vector.Pre.StateTree.RootCID = preroot
|
||||||
v.Post.StateTree.RootCID = postroot
|
td.Vector.Post.StateTree.RootCID = postroot
|
||||||
|
|
||||||
// encode and output
|
// encode and output
|
||||||
enc := json.NewEncoder(os.Stdout)
|
enc := json.NewEncoder(os.Stdout)
|
||||||
if err := enc.Encode(&v); err != nil {
|
if err := enc.Encode(&td.Vector); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -96,8 +95,6 @@ func MessageTest_MessageApplicationEdgecases() error {
|
|||||||
err = func(testname string) error {
|
err = func(testname string) error {
|
||||||
td := drivers.NewTestDriver()
|
td := drivers.NewTestDriver()
|
||||||
|
|
||||||
v := newEmptyMessageVector()
|
|
||||||
|
|
||||||
alice, _ := td.NewAccountActor(drivers.SECP, aliceBal)
|
alice, _ := td.NewAccountActor(drivers.SECP, aliceBal)
|
||||||
preroot := td.GetStateRoot()
|
preroot := td.GetStateRoot()
|
||||||
|
|
||||||
@ -109,7 +106,7 @@ func MessageTest_MessageApplicationEdgecases() error {
|
|||||||
newAccountA := chain.MustNewSECP256K1Addr("1")
|
newAccountA := chain.MustNewSECP256K1Addr("1")
|
||||||
|
|
||||||
msg := td.MessageProducer.Transfer(alice, newAccountA, chain.Value(transferAmnt), chain.Nonce(aliceNonceF()))
|
msg := td.MessageProducer.Transfer(alice, newAccountA, chain.Value(transferAmnt), chain.Nonce(aliceNonceF()))
|
||||||
v.ApplyMessages = append(v.ApplyMessages, Message{Bytes: chain.MustSerialize(msg)})
|
td.Vector.ApplyMessages = append(td.Vector.ApplyMessages, schema.Message{Bytes: chain.MustSerialize(msg)})
|
||||||
|
|
||||||
// get the "true" gas cost of applying the message
|
// get the "true" gas cost of applying the message
|
||||||
result := td.ApplyOk(msg)
|
result := td.ApplyOk(msg)
|
||||||
@ -120,7 +117,7 @@ func MessageTest_MessageApplicationEdgecases() error {
|
|||||||
newAccountB := chain.MustNewSECP256K1Addr("2")
|
newAccountB := chain.MustNewSECP256K1Addr("2")
|
||||||
for tryGas := trueGas - gasStep; tryGas > 0; tryGas -= gasStep {
|
for tryGas := trueGas - gasStep; tryGas > 0; tryGas -= gasStep {
|
||||||
msg := td.MessageProducer.Transfer(alice, newAccountB, chain.Value(transferAmnt), chain.Nonce(aliceNonceF()), chain.GasPrice(1), chain.GasLimit(tryGas))
|
msg := td.MessageProducer.Transfer(alice, newAccountB, chain.Value(transferAmnt), chain.Nonce(aliceNonceF()), chain.GasPrice(1), chain.GasLimit(tryGas))
|
||||||
v.ApplyMessages = append(v.ApplyMessages, Message{Bytes: chain.MustSerialize(msg)})
|
td.Vector.ApplyMessages = append(td.Vector.ApplyMessages, schema.Message{Bytes: chain.MustSerialize(msg)})
|
||||||
|
|
||||||
td.ApplyFailure(
|
td.ApplyFailure(
|
||||||
msg,
|
msg,
|
||||||
@ -130,13 +127,13 @@ func MessageTest_MessageApplicationEdgecases() error {
|
|||||||
|
|
||||||
postroot := td.GetStateRoot()
|
postroot := td.GetStateRoot()
|
||||||
|
|
||||||
v.CAR = td.MustMarshalGzippedCAR(preroot, postroot)
|
td.Vector.CAR = td.MustMarshalGzippedCAR(preroot, postroot)
|
||||||
v.Pre.StateTree.RootCID = preroot
|
td.Vector.Pre.StateTree.RootCID = preroot
|
||||||
v.Post.StateTree.RootCID = postroot
|
td.Vector.Post.StateTree.RootCID = postroot
|
||||||
|
|
||||||
// encode and output
|
// encode and output
|
||||||
enc := json.NewEncoder(os.Stdout)
|
enc := json.NewEncoder(os.Stdout)
|
||||||
if err := enc.Encode(&v); err != nil {
|
if err := enc.Encode(&td.Vector); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -149,14 +146,12 @@ func MessageTest_MessageApplicationEdgecases() error {
|
|||||||
err = func(testname string) error {
|
err = func(testname string) error {
|
||||||
td := drivers.NewTestDriver()
|
td := drivers.NewTestDriver()
|
||||||
|
|
||||||
v := newEmptyMessageVector()
|
|
||||||
|
|
||||||
alice, _ := td.NewAccountActor(drivers.SECP, aliceBal)
|
alice, _ := td.NewAccountActor(drivers.SECP, aliceBal)
|
||||||
|
|
||||||
preroot := td.GetStateRoot()
|
preroot := td.GetStateRoot()
|
||||||
|
|
||||||
msg := td.MessageProducer.Transfer(alice, alice, chain.Value(transferAmnt), chain.Nonce(1))
|
msg := td.MessageProducer.Transfer(alice, alice, chain.Value(transferAmnt), chain.Nonce(1))
|
||||||
v.ApplyMessages = append(v.ApplyMessages, Message{Bytes: chain.MustSerialize(msg)})
|
td.Vector.ApplyMessages = append(td.Vector.ApplyMessages, schema.Message{Bytes: chain.MustSerialize(msg)})
|
||||||
|
|
||||||
// Expect Message application to fail due to callseqnum being invalid: 1 instead of 0
|
// Expect Message application to fail due to callseqnum being invalid: 1 instead of 0
|
||||||
td.ApplyFailure(
|
td.ApplyFailure(
|
||||||
@ -165,7 +160,7 @@ func MessageTest_MessageApplicationEdgecases() error {
|
|||||||
|
|
||||||
unknown := chain.MustNewIDAddr(10000000)
|
unknown := chain.MustNewIDAddr(10000000)
|
||||||
msg = td.MessageProducer.Transfer(unknown, alice, chain.Value(transferAmnt), chain.Nonce(1))
|
msg = td.MessageProducer.Transfer(unknown, alice, chain.Value(transferAmnt), chain.Nonce(1))
|
||||||
v.ApplyMessages = append(v.ApplyMessages, Message{Bytes: chain.MustSerialize(msg)})
|
td.Vector.ApplyMessages = append(td.Vector.ApplyMessages, schema.Message{Bytes: chain.MustSerialize(msg)})
|
||||||
|
|
||||||
// Expect message application to fail due to unknow actor when call seq num is also incorrect
|
// Expect message application to fail due to unknow actor when call seq num is also incorrect
|
||||||
td.ApplyFailure(
|
td.ApplyFailure(
|
||||||
@ -174,13 +169,13 @@ func MessageTest_MessageApplicationEdgecases() error {
|
|||||||
|
|
||||||
postroot := td.GetStateRoot()
|
postroot := td.GetStateRoot()
|
||||||
|
|
||||||
v.CAR = td.MustMarshalGzippedCAR(preroot, postroot)
|
td.Vector.CAR = td.MustMarshalGzippedCAR(preroot, postroot)
|
||||||
v.Pre.StateTree.RootCID = preroot
|
td.Vector.Pre.StateTree.RootCID = preroot
|
||||||
v.Post.StateTree.RootCID = postroot
|
td.Vector.Post.StateTree.RootCID = postroot
|
||||||
|
|
||||||
// encode and output
|
// encode and output
|
||||||
enc := json.NewEncoder(os.Stdout)
|
enc := json.NewEncoder(os.Stdout)
|
||||||
if err := enc.Encode(&v); err != nil {
|
if err := enc.Encode(&td.Vector); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -193,8 +188,6 @@ func MessageTest_MessageApplicationEdgecases() error {
|
|||||||
err = func(testname string) error {
|
err = func(testname string) error {
|
||||||
td := drivers.NewTestDriver()
|
td := drivers.NewTestDriver()
|
||||||
|
|
||||||
v := newEmptyMessageVector()
|
|
||||||
|
|
||||||
const pcTimeLock = abi_spec.ChainEpoch(10)
|
const pcTimeLock = abi_spec.ChainEpoch(10)
|
||||||
const pcLane = uint64(123)
|
const pcLane = uint64(123)
|
||||||
const pcNonce = uint64(1)
|
const pcNonce = uint64(1)
|
||||||
@ -212,13 +205,13 @@ func MessageTest_MessageApplicationEdgecases() error {
|
|||||||
receiver, receiverID := td.NewAccountActor(drivers.SECP, initialBal)
|
receiver, receiverID := td.NewAccountActor(drivers.SECP, initialBal)
|
||||||
|
|
||||||
// the _expected_ address of the payment channel
|
// the _expected_ address of the payment channel
|
||||||
paychAddr := chain.MustNewIDAddr(chain.MustIdFromAddress(receiverID) + 1)
|
paychAddr := chain.MustNewIDAddr(chain.MustIDFromAddress(receiverID) + 1)
|
||||||
createRet := td.ComputeInitActorExecReturn(sender, 0, 0, paychAddr)
|
createRet := td.ComputeInitActorExecReturn(sender, 0, 0, paychAddr)
|
||||||
|
|
||||||
preroot := td.GetStateRoot()
|
preroot := td.GetStateRoot()
|
||||||
|
|
||||||
msg := td.MessageProducer.CreatePaymentChannelActor(sender, receiver, chain.Value(toSend), chain.Nonce(0))
|
msg := td.MessageProducer.CreatePaymentChannelActor(sender, receiver, chain.Value(toSend), chain.Nonce(0))
|
||||||
v.ApplyMessages = append(v.ApplyMessages, Message{Bytes: chain.MustSerialize(msg)})
|
td.Vector.ApplyMessages = append(td.Vector.ApplyMessages, schema.Message{Bytes: chain.MustSerialize(msg)})
|
||||||
|
|
||||||
td.ApplyExpect(
|
td.ApplyExpect(
|
||||||
msg,
|
msg,
|
||||||
@ -239,7 +232,7 @@ func MessageTest_MessageApplicationEdgecases() error {
|
|||||||
Signature: pcSig, // construct with invalid signature
|
Signature: pcSig, // construct with invalid signature
|
||||||
},
|
},
|
||||||
}, chain.Nonce(1), chain.Value(big_spec.Zero()))
|
}, chain.Nonce(1), chain.Value(big_spec.Zero()))
|
||||||
v.ApplyMessages = append(v.ApplyMessages, Message{Bytes: chain.MustSerialize(msg)})
|
td.Vector.ApplyMessages = append(td.Vector.ApplyMessages, schema.Message{Bytes: chain.MustSerialize(msg)})
|
||||||
|
|
||||||
// message application fails due to invalid argument (signature).
|
// message application fails due to invalid argument (signature).
|
||||||
td.ApplyFailure(
|
td.ApplyFailure(
|
||||||
@ -248,13 +241,13 @@ func MessageTest_MessageApplicationEdgecases() error {
|
|||||||
|
|
||||||
postroot := td.GetStateRoot()
|
postroot := td.GetStateRoot()
|
||||||
|
|
||||||
v.CAR = td.MustMarshalGzippedCAR(preroot, postroot)
|
td.Vector.CAR = td.MustMarshalGzippedCAR(preroot, postroot)
|
||||||
v.Pre.StateTree.RootCID = preroot
|
td.Vector.Pre.StateTree.RootCID = preroot
|
||||||
v.Post.StateTree.RootCID = postroot
|
td.Vector.Post.StateTree.RootCID = postroot
|
||||||
|
|
||||||
// encode and output
|
// encode and output
|
||||||
enc := json.NewEncoder(os.Stdout)
|
enc := json.NewEncoder(os.Stdout)
|
||||||
if err := enc.Encode(&v); err != nil {
|
if err := enc.Encode(&td.Vector); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -267,15 +260,13 @@ func MessageTest_MessageApplicationEdgecases() error {
|
|||||||
err = func(testname string) error {
|
err = func(testname string) error {
|
||||||
td := drivers.NewTestDriver()
|
td := drivers.NewTestDriver()
|
||||||
|
|
||||||
v := newEmptyMessageVector()
|
|
||||||
|
|
||||||
alice, _ := td.NewAccountActor(drivers.SECP, aliceBal)
|
alice, _ := td.NewAccountActor(drivers.SECP, aliceBal)
|
||||||
|
|
||||||
preroot := td.GetStateRoot()
|
preroot := td.GetStateRoot()
|
||||||
|
|
||||||
msg := td.MessageProducer.MarketComputeDataCommitment(alice, alice, nil, chain.Nonce(0))
|
msg := td.MessageProducer.MarketComputeDataCommitment(alice, alice, nil, chain.Nonce(0))
|
||||||
|
|
||||||
v.ApplyMessages = append(v.ApplyMessages, Message{Bytes: chain.MustSerialize(msg)})
|
td.Vector.ApplyMessages = append(td.Vector.ApplyMessages, schema.Message{Bytes: chain.MustSerialize(msg)})
|
||||||
|
|
||||||
// message application fails because ComputeDataCommitment isn't defined
|
// message application fails because ComputeDataCommitment isn't defined
|
||||||
// on the recipient actor
|
// on the recipient actor
|
||||||
@ -285,13 +276,13 @@ func MessageTest_MessageApplicationEdgecases() error {
|
|||||||
|
|
||||||
postroot := td.GetStateRoot()
|
postroot := td.GetStateRoot()
|
||||||
|
|
||||||
v.CAR = td.MustMarshalGzippedCAR(preroot, postroot)
|
td.Vector.CAR = td.MustMarshalGzippedCAR(preroot, postroot)
|
||||||
v.Pre.StateTree.RootCID = preroot
|
td.Vector.Pre.StateTree.RootCID = preroot
|
||||||
v.Post.StateTree.RootCID = postroot
|
td.Vector.Post.StateTree.RootCID = postroot
|
||||||
|
|
||||||
// encode and output
|
// encode and output
|
||||||
enc := json.NewEncoder(os.Stdout)
|
enc := json.NewEncoder(os.Stdout)
|
||||||
if err := enc.Encode(&v); err != nil {
|
if err := enc.Encode(&td.Vector); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -304,8 +295,6 @@ func MessageTest_MessageApplicationEdgecases() error {
|
|||||||
err = func(testname string) error {
|
err = func(testname string) error {
|
||||||
td := drivers.NewTestDriver()
|
td := drivers.NewTestDriver()
|
||||||
|
|
||||||
v := newEmptyMessageVector()
|
|
||||||
|
|
||||||
alice, _ := td.NewAccountActor(drivers.SECP, aliceBal)
|
alice, _ := td.NewAccountActor(drivers.SECP, aliceBal)
|
||||||
|
|
||||||
preroot := td.GetStateRoot()
|
preroot := td.GetStateRoot()
|
||||||
@ -314,7 +303,7 @@ func MessageTest_MessageApplicationEdgecases() error {
|
|||||||
unknownA := chain.MustNewIDAddr(10000000)
|
unknownA := chain.MustNewIDAddr(10000000)
|
||||||
msg := td.MessageProducer.Transfer(alice, unknownA, chain.Value(transferAmnt), chain.Nonce(0))
|
msg := td.MessageProducer.Transfer(alice, unknownA, chain.Value(transferAmnt), chain.Nonce(0))
|
||||||
|
|
||||||
v.ApplyMessages = append(v.ApplyMessages, Message{Bytes: chain.MustSerialize(msg)})
|
td.Vector.ApplyMessages = append(td.Vector.ApplyMessages, schema.Message{Bytes: chain.MustSerialize(msg)})
|
||||||
|
|
||||||
td.ApplyFailure(
|
td.ApplyFailure(
|
||||||
msg,
|
msg,
|
||||||
@ -323,7 +312,7 @@ func MessageTest_MessageApplicationEdgecases() error {
|
|||||||
// Sending a message to non-existing actor address must produce an error.
|
// Sending a message to non-existing actor address must produce an error.
|
||||||
unknownB := chain.MustNewActorAddr("1234")
|
unknownB := chain.MustNewActorAddr("1234")
|
||||||
msg = td.MessageProducer.Transfer(alice, unknownB, chain.Value(transferAmnt), chain.Nonce(1))
|
msg = td.MessageProducer.Transfer(alice, unknownB, chain.Value(transferAmnt), chain.Nonce(1))
|
||||||
v.ApplyMessages = append(v.ApplyMessages, Message{Bytes: chain.MustSerialize(msg)})
|
td.Vector.ApplyMessages = append(td.Vector.ApplyMessages, schema.Message{Bytes: chain.MustSerialize(msg)})
|
||||||
|
|
||||||
td.ApplyFailure(
|
td.ApplyFailure(
|
||||||
msg,
|
msg,
|
||||||
@ -331,13 +320,13 @@ func MessageTest_MessageApplicationEdgecases() error {
|
|||||||
|
|
||||||
postroot := td.GetStateRoot()
|
postroot := td.GetStateRoot()
|
||||||
|
|
||||||
v.CAR = td.MustMarshalGzippedCAR(preroot, postroot)
|
td.Vector.CAR = td.MustMarshalGzippedCAR(preroot, postroot)
|
||||||
v.Pre.StateTree.RootCID = preroot
|
td.Vector.Pre.StateTree.RootCID = preroot
|
||||||
v.Post.StateTree.RootCID = postroot
|
td.Vector.Post.StateTree.RootCID = postroot
|
||||||
|
|
||||||
// encode and output
|
// encode and output
|
||||||
enc := json.NewEncoder(os.Stdout)
|
enc := json.NewEncoder(os.Stdout)
|
||||||
if err := enc.Encode(&v); err != nil {
|
if err := enc.Encode(&td.Vector); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,6 +12,7 @@ import (
|
|||||||
|
|
||||||
"github.com/filecoin-project/oni/tvx/chain"
|
"github.com/filecoin-project/oni/tvx/chain"
|
||||||
"github.com/filecoin-project/oni/tvx/drivers"
|
"github.com/filecoin-project/oni/tvx/drivers"
|
||||||
|
"github.com/filecoin-project/oni/tvx/schema"
|
||||||
)
|
)
|
||||||
|
|
||||||
func MessageTest_Paych() error {
|
func MessageTest_Paych() error {
|
||||||
@ -21,8 +22,6 @@ func MessageTest_Paych() error {
|
|||||||
err := func(testname string) error {
|
err := func(testname string) error {
|
||||||
td := drivers.NewTestDriver()
|
td := drivers.NewTestDriver()
|
||||||
|
|
||||||
v := newEmptyMessageVector()
|
|
||||||
|
|
||||||
// will create and send on payment channel
|
// will create and send on payment channel
|
||||||
sender, senderID := td.NewAccountActor(drivers.SECP, initialBal)
|
sender, senderID := td.NewAccountActor(drivers.SECP, initialBal)
|
||||||
|
|
||||||
@ -32,11 +31,11 @@ func MessageTest_Paych() error {
|
|||||||
preroot := td.GetStateRoot()
|
preroot := td.GetStateRoot()
|
||||||
|
|
||||||
// the _expected_ address of the payment channel
|
// the _expected_ address of the payment channel
|
||||||
paychAddr := chain.MustNewIDAddr(chain.MustIdFromAddress(receiverID) + 1)
|
paychAddr := chain.MustNewIDAddr(chain.MustIDFromAddress(receiverID) + 1)
|
||||||
createRet := td.ComputeInitActorExecReturn(sender, 0, 0, paychAddr)
|
createRet := td.ComputeInitActorExecReturn(sender, 0, 0, paychAddr)
|
||||||
|
|
||||||
msg := td.MessageProducer.CreatePaymentChannelActor(sender, receiver, chain.Value(toSend), chain.Nonce(0))
|
msg := td.MessageProducer.CreatePaymentChannelActor(sender, receiver, chain.Value(toSend), chain.Nonce(0))
|
||||||
v.ApplyMessages = append(v.ApplyMessages, Message{Bytes: chain.MustSerialize(msg)})
|
td.Vector.ApplyMessages = append(td.Vector.ApplyMessages, schema.Message{Bytes: chain.MustSerialize(msg)})
|
||||||
|
|
||||||
// init actor creates the payment channel
|
// init actor creates the payment channel
|
||||||
td.ApplyExpect(
|
td.ApplyExpect(
|
||||||
@ -51,13 +50,13 @@ func MessageTest_Paych() error {
|
|||||||
|
|
||||||
postroot := td.GetStateRoot()
|
postroot := td.GetStateRoot()
|
||||||
|
|
||||||
v.CAR = td.MustMarshalGzippedCAR(preroot, postroot)
|
td.Vector.CAR = td.MustMarshalGzippedCAR(preroot, postroot)
|
||||||
v.Pre.StateTree.RootCID = preroot
|
td.Vector.Pre.StateTree.RootCID = preroot
|
||||||
v.Post.StateTree.RootCID = postroot
|
td.Vector.Post.StateTree.RootCID = postroot
|
||||||
|
|
||||||
// encode and output
|
// encode and output
|
||||||
enc := json.NewEncoder(os.Stdout)
|
enc := json.NewEncoder(os.Stdout)
|
||||||
if err := enc.Encode(&v); err != nil {
|
if err := enc.Encode(&td.Vector); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -70,8 +69,6 @@ func MessageTest_Paych() error {
|
|||||||
err = func(testname string) error {
|
err = func(testname string) error {
|
||||||
td := drivers.NewTestDriver()
|
td := drivers.NewTestDriver()
|
||||||
|
|
||||||
v := newEmptyMessageVector()
|
|
||||||
|
|
||||||
//const pcTimeLock = abi_spec.ChainEpoch(1)
|
//const pcTimeLock = abi_spec.ChainEpoch(1)
|
||||||
const pcTimeLock = abi_spec.ChainEpoch(0)
|
const pcTimeLock = abi_spec.ChainEpoch(0)
|
||||||
const pcLane = uint64(123)
|
const pcLane = uint64(123)
|
||||||
@ -91,11 +88,11 @@ func MessageTest_Paych() error {
|
|||||||
preroot := td.GetStateRoot()
|
preroot := td.GetStateRoot()
|
||||||
|
|
||||||
// the _expected_ address of the payment channel
|
// the _expected_ address of the payment channel
|
||||||
paychAddr := chain.MustNewIDAddr(chain.MustIdFromAddress(receiverID) + 1)
|
paychAddr := chain.MustNewIDAddr(chain.MustIDFromAddress(receiverID) + 1)
|
||||||
createRet := td.ComputeInitActorExecReturn(sender, 0, 0, paychAddr)
|
createRet := td.ComputeInitActorExecReturn(sender, 0, 0, paychAddr)
|
||||||
|
|
||||||
msg := td.MessageProducer.CreatePaymentChannelActor(sender, receiver, chain.Value(toSend), chain.Nonce(0))
|
msg := td.MessageProducer.CreatePaymentChannelActor(sender, receiver, chain.Value(toSend), chain.Nonce(0))
|
||||||
v.ApplyMessages = append(v.ApplyMessages, Message{Bytes: chain.MustSerialize(msg)})
|
td.Vector.ApplyMessages = append(td.Vector.ApplyMessages, schema.Message{Bytes: chain.MustSerialize(msg)})
|
||||||
td.ApplyExpect(
|
td.ApplyExpect(
|
||||||
msg,
|
msg,
|
||||||
chain.MustSerialize(&createRet))
|
chain.MustSerialize(&createRet))
|
||||||
@ -115,7 +112,7 @@ func MessageTest_Paych() error {
|
|||||||
Signature: pcSig,
|
Signature: pcSig,
|
||||||
},
|
},
|
||||||
}, chain.Nonce(1), chain.Value(big_spec.Zero()))
|
}, chain.Nonce(1), chain.Value(big_spec.Zero()))
|
||||||
v.ApplyMessages = append(v.ApplyMessages, Message{Bytes: chain.MustSerialize(msg)})
|
td.Vector.ApplyMessages = append(td.Vector.ApplyMessages, schema.Message{Bytes: chain.MustSerialize(msg)})
|
||||||
td.ApplyOk(msg)
|
td.ApplyOk(msg)
|
||||||
|
|
||||||
var pcState paych_spec.State
|
var pcState paych_spec.State
|
||||||
@ -128,13 +125,13 @@ func MessageTest_Paych() error {
|
|||||||
|
|
||||||
postroot := td.GetStateRoot()
|
postroot := td.GetStateRoot()
|
||||||
|
|
||||||
v.CAR = td.MustMarshalGzippedCAR(preroot, postroot)
|
td.Vector.CAR = td.MustMarshalGzippedCAR(preroot, postroot)
|
||||||
v.Pre.StateTree.RootCID = preroot
|
td.Vector.Pre.StateTree.RootCID = preroot
|
||||||
v.Post.StateTree.RootCID = postroot
|
td.Vector.Post.StateTree.RootCID = postroot
|
||||||
|
|
||||||
// encode and output
|
// encode and output
|
||||||
enc := json.NewEncoder(os.Stdout)
|
enc := json.NewEncoder(os.Stdout)
|
||||||
if err := enc.Encode(&v); err != nil {
|
if err := enc.Encode(&td.Vector); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -147,18 +144,16 @@ func MessageTest_Paych() error {
|
|||||||
err = func(testname string) error {
|
err = func(testname string) error {
|
||||||
td := drivers.NewTestDriver()
|
td := drivers.NewTestDriver()
|
||||||
|
|
||||||
v := newEmptyMessageVector()
|
|
||||||
|
|
||||||
// create the payment channel
|
// create the payment channel
|
||||||
sender, _ := td.NewAccountActor(drivers.SECP, initialBal)
|
sender, _ := td.NewAccountActor(drivers.SECP, initialBal)
|
||||||
receiver, receiverID := td.NewAccountActor(drivers.SECP, initialBal)
|
receiver, receiverID := td.NewAccountActor(drivers.SECP, initialBal)
|
||||||
paychAddr := chain.MustNewIDAddr(chain.MustIdFromAddress(receiverID) + 1)
|
paychAddr := chain.MustNewIDAddr(chain.MustIDFromAddress(receiverID) + 1)
|
||||||
initRet := td.ComputeInitActorExecReturn(sender, 0, 0, paychAddr)
|
initRet := td.ComputeInitActorExecReturn(sender, 0, 0, paychAddr)
|
||||||
|
|
||||||
preroot := td.GetStateRoot()
|
preroot := td.GetStateRoot()
|
||||||
|
|
||||||
msg := td.MessageProducer.CreatePaymentChannelActor(sender, receiver, chain.Value(toSend), chain.Nonce(0))
|
msg := td.MessageProducer.CreatePaymentChannelActor(sender, receiver, chain.Value(toSend), chain.Nonce(0))
|
||||||
v.ApplyMessages = append(v.ApplyMessages, Message{Bytes: chain.MustSerialize(msg)})
|
td.Vector.ApplyMessages = append(td.Vector.ApplyMessages, schema.Message{Bytes: chain.MustSerialize(msg)})
|
||||||
td.ApplyExpect(
|
td.ApplyExpect(
|
||||||
msg,
|
msg,
|
||||||
chain.MustSerialize(&initRet))
|
chain.MustSerialize(&initRet))
|
||||||
@ -183,21 +178,21 @@ func MessageTest_Paych() error {
|
|||||||
},
|
},
|
||||||
}, chain.Nonce(1), chain.Value(big_spec.Zero()))
|
}, chain.Nonce(1), chain.Value(big_spec.Zero()))
|
||||||
|
|
||||||
v.ApplyMessages = append(v.ApplyMessages, Message{Bytes: chain.MustSerialize(msg)})
|
td.Vector.ApplyMessages = append(td.Vector.ApplyMessages, schema.Message{Bytes: chain.MustSerialize(msg)})
|
||||||
|
|
||||||
td.ApplyOk(msg)
|
td.ApplyOk(msg)
|
||||||
|
|
||||||
// settle the payment channel so it may be collected
|
// settle the payment channel so it may be collected
|
||||||
|
|
||||||
msg = td.MessageProducer.PaychSettle(receiver, paychAddr, nil, chain.Value(big_spec.Zero()), chain.Nonce(0))
|
msg = td.MessageProducer.PaychSettle(receiver, paychAddr, nil, chain.Value(big_spec.Zero()), chain.Nonce(0))
|
||||||
v.ApplyMessages = append(v.ApplyMessages, Message{Bytes: chain.MustSerialize(msg)})
|
td.Vector.ApplyMessages = append(td.Vector.ApplyMessages, schema.Message{Bytes: chain.MustSerialize(msg)})
|
||||||
settleResult := td.ApplyOk(msg)
|
settleResult := td.ApplyOk(msg)
|
||||||
|
|
||||||
// advance the epoch so the funds may be redeemed.
|
// advance the epoch so the funds may be redeemed.
|
||||||
td.ExeCtx.Epoch += paych_spec.SettleDelay
|
td.ExeCtx.Epoch += paych_spec.SettleDelay
|
||||||
|
|
||||||
msg = td.MessageProducer.PaychCollect(receiver, paychAddr, nil, chain.Nonce(1), chain.Value(big_spec.Zero()))
|
msg = td.MessageProducer.PaychCollect(receiver, paychAddr, nil, chain.Nonce(1), chain.Value(big_spec.Zero()))
|
||||||
v.ApplyMessages = append(v.ApplyMessages, Message{Epoch: &td.ExeCtx.Epoch, Bytes: chain.MustSerialize(msg)})
|
td.Vector.ApplyMessages = append(td.Vector.ApplyMessages, schema.Message{Epoch: &td.ExeCtx.Epoch, Bytes: chain.MustSerialize(msg)})
|
||||||
|
|
||||||
collectResult := td.ApplyOk(msg)
|
collectResult := td.ApplyOk(msg)
|
||||||
|
|
||||||
@ -208,13 +203,13 @@ func MessageTest_Paych() error {
|
|||||||
|
|
||||||
postroot := td.GetStateRoot()
|
postroot := td.GetStateRoot()
|
||||||
|
|
||||||
v.CAR = td.MustMarshalGzippedCAR(preroot, postroot)
|
td.Vector.CAR = td.MustMarshalGzippedCAR(preroot, postroot)
|
||||||
v.Pre.StateTree.RootCID = preroot
|
td.Vector.Pre.StateTree.RootCID = preroot
|
||||||
v.Post.StateTree.RootCID = postroot
|
td.Vector.Post.StateTree.RootCID = postroot
|
||||||
|
|
||||||
// encode and output
|
// encode and output
|
||||||
enc := json.NewEncoder(os.Stdout)
|
enc := json.NewEncoder(os.Stdout)
|
||||||
if err := enc.Encode(&v); err != nil {
|
if err := enc.Encode(&td.Vector); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user