fix(lotus-sim): unembed Node from Simulation
I wanted to expose the node's _fields_, but this also exposed the methods. That got rather confusing. (probably could have used a new type, but eh) foo
This commit is contained in:
parent
b7c36bc02c
commit
0b06de2bd3
@ -42,7 +42,7 @@ func printInfo(ctx context.Context, sim *simulation.Simulation, out io.Writer) e
|
|||||||
if powerLookbackEpoch < start.Height() {
|
if powerLookbackEpoch < start.Height() {
|
||||||
powerLookbackEpoch = start.Height()
|
powerLookbackEpoch = start.Height()
|
||||||
}
|
}
|
||||||
lookbackTs, err := sim.Chainstore.GetTipsetByHeight(ctx, powerLookbackEpoch, head, false)
|
lookbackTs, err := sim.Node.Chainstore.GetTipsetByHeight(ctx, powerLookbackEpoch, head, false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -39,7 +39,7 @@ var infoCapacityGrowthSimCommand = &cli.Command{
|
|||||||
lastHeight := ts.Height()
|
lastHeight := ts.Height()
|
||||||
|
|
||||||
for ts.Height() > firstEpoch && cctx.Err() == nil {
|
for ts.Height() > firstEpoch && cctx.Err() == nil {
|
||||||
ts, err = sim.Chainstore.LoadTipSet(ts.Parents())
|
ts, err = sim.Node.Chainstore.LoadTipSet(ts.Parents())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -131,7 +131,7 @@ var infoStateGrowthSimCommand = &cli.Command{
|
|||||||
fmt.Fprintf(cctx.App.Writer, "%d: %s\n", ts.Height(), types.SizeStr(types.NewInt(parentStateSize)))
|
fmt.Fprintf(cctx.App.Writer, "%d: %s\n", ts.Height(), types.SizeStr(types.NewInt(parentStateSize)))
|
||||||
}
|
}
|
||||||
|
|
||||||
ts, err = sim.Chainstore.LoadTipSet(ts.Parents())
|
ts, err = sim.Node.Chainstore.LoadTipSet(ts.Parents())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -73,7 +73,7 @@ func (sim *Simulation) makeTipSet(ctx context.Context, messages []*types.Message
|
|||||||
Timestamp: uts,
|
Timestamp: uts,
|
||||||
ElectionProof: &types.ElectionProof{WinCount: 1},
|
ElectionProof: &types.ElectionProof{WinCount: 1},
|
||||||
}}
|
}}
|
||||||
err = sim.Chainstore.PersistBlockHeaders(blks...)
|
err = sim.Node.Chainstore.PersistBlockHeaders(blks...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, xerrors.Errorf("failed to persist block headers: %w", err)
|
return nil, xerrors.Errorf("failed to persist block headers: %w", err)
|
||||||
}
|
}
|
||||||
|
@ -25,19 +25,19 @@ func toArray(store blockadt.Store, cids []cid.Cid) (cid.Cid, error) {
|
|||||||
|
|
||||||
// storeMessages packs a set of messages into a types.MsgMeta and returns the resulting CID. The
|
// storeMessages packs a set of messages into a types.MsgMeta and returns the resulting CID. The
|
||||||
// resulting CID is valid for the BlocKHeader's Messages field.
|
// resulting CID is valid for the BlocKHeader's Messages field.
|
||||||
func (nd *Node) storeMessages(ctx context.Context, messages []*types.Message) (cid.Cid, error) {
|
func (sim *Simulation) storeMessages(ctx context.Context, messages []*types.Message) (cid.Cid, error) {
|
||||||
// We store all messages as "bls" messages so they're executed in-order. This ensures
|
// We store all messages as "bls" messages so they're executed in-order. This ensures
|
||||||
// accurate gas accounting. It also ensures we don't, e.g., try to fund a miner after we
|
// accurate gas accounting. It also ensures we don't, e.g., try to fund a miner after we
|
||||||
// fail a pre-commit...
|
// fail a pre-commit...
|
||||||
var msgCids []cid.Cid
|
var msgCids []cid.Cid
|
||||||
for _, msg := range messages {
|
for _, msg := range messages {
|
||||||
c, err := nd.Chainstore.PutMessage(msg)
|
c, err := sim.Node.Chainstore.PutMessage(msg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return cid.Undef, err
|
return cid.Undef, err
|
||||||
}
|
}
|
||||||
msgCids = append(msgCids, c)
|
msgCids = append(msgCids, c)
|
||||||
}
|
}
|
||||||
adtStore := nd.Chainstore.ActorStore(ctx)
|
adtStore := sim.Node.Chainstore.ActorStore(ctx)
|
||||||
blsMsgArr, err := toArray(adtStore, msgCids)
|
blsMsgArr, err := toArray(adtStore, msgCids)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return cid.Undef, err
|
return cid.Undef, err
|
||||||
|
@ -71,7 +71,7 @@ func (c *config) upgradeSchedule() (stmgr.UpgradeSchedule, error) {
|
|||||||
|
|
||||||
// Simulation specifies a lotus-sim simulation.
|
// Simulation specifies a lotus-sim simulation.
|
||||||
type Simulation struct {
|
type Simulation struct {
|
||||||
*Node
|
Node *Node
|
||||||
StateManager *stmgr.StateManager
|
StateManager *stmgr.StateManager
|
||||||
|
|
||||||
name string
|
name string
|
||||||
@ -87,7 +87,7 @@ type Simulation struct {
|
|||||||
// loadConfig loads a simulation's config from the datastore. This must be called on startup and may
|
// loadConfig loads a simulation's config from the datastore. This must be called on startup and may
|
||||||
// be called to restore the config from-disk.
|
// be called to restore the config from-disk.
|
||||||
func (sim *Simulation) loadConfig() error {
|
func (sim *Simulation) loadConfig() error {
|
||||||
configBytes, err := sim.MetadataDS.Get(sim.key("config"))
|
configBytes, err := sim.Node.MetadataDS.Get(sim.key("config"))
|
||||||
if err == nil {
|
if err == nil {
|
||||||
err = json.Unmarshal(configBytes, &sim.config)
|
err = json.Unmarshal(configBytes, &sim.config)
|
||||||
}
|
}
|
||||||
@ -108,7 +108,7 @@ func (sim *Simulation) saveConfig() error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return sim.MetadataDS.Put(sim.key("config"), buf)
|
return sim.Node.MetadataDS.Put(sim.key("config"), buf)
|
||||||
}
|
}
|
||||||
|
|
||||||
var simulationPrefix = datastore.NewKey("/simulation")
|
var simulationPrefix = datastore.NewKey("/simulation")
|
||||||
@ -121,7 +121,7 @@ func (sim *Simulation) key(subkey string) datastore.Key {
|
|||||||
|
|
||||||
// loadNamedTipSet the tipset with the given name (for this simulation)
|
// loadNamedTipSet the tipset with the given name (for this simulation)
|
||||||
func (sim *Simulation) loadNamedTipSet(name string) (*types.TipSet, error) {
|
func (sim *Simulation) loadNamedTipSet(name string) (*types.TipSet, error) {
|
||||||
tskBytes, err := sim.MetadataDS.Get(sim.key(name))
|
tskBytes, err := sim.Node.MetadataDS.Get(sim.key(name))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, xerrors.Errorf("failed to load tipset %s/%s: %w", sim.name, name, err)
|
return nil, xerrors.Errorf("failed to load tipset %s/%s: %w", sim.name, name, err)
|
||||||
}
|
}
|
||||||
@ -129,7 +129,7 @@ func (sim *Simulation) loadNamedTipSet(name string) (*types.TipSet, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, xerrors.Errorf("failed to parse tipste %v (%s/%s): %w", tskBytes, sim.name, name, err)
|
return nil, xerrors.Errorf("failed to parse tipste %v (%s/%s): %w", tskBytes, sim.name, name, err)
|
||||||
}
|
}
|
||||||
ts, err := sim.Chainstore.LoadTipSet(tsk)
|
ts, err := sim.Node.Chainstore.LoadTipSet(tsk)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, xerrors.Errorf("failed to load tipset %s (%s/%s): %w", tsk, sim.name, name, err)
|
return nil, xerrors.Errorf("failed to load tipset %s (%s/%s): %w", tsk, sim.name, name, err)
|
||||||
}
|
}
|
||||||
@ -138,7 +138,7 @@ func (sim *Simulation) loadNamedTipSet(name string) (*types.TipSet, error) {
|
|||||||
|
|
||||||
// storeNamedTipSet stores the tipset at name (relative to the simulation).
|
// storeNamedTipSet stores the tipset at name (relative to the simulation).
|
||||||
func (sim *Simulation) storeNamedTipSet(name string, ts *types.TipSet) error {
|
func (sim *Simulation) storeNamedTipSet(name string, ts *types.TipSet) error {
|
||||||
if err := sim.MetadataDS.Put(sim.key(name), ts.Key().Bytes()); err != nil {
|
if err := sim.Node.MetadataDS.Put(sim.key(name), ts.Key().Bytes()); err != nil {
|
||||||
return xerrors.Errorf("failed to store tipset (%s/%s): %w", sim.name, name, err)
|
return xerrors.Errorf("failed to store tipset (%s/%s): %w", sim.name, name, err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
@ -198,7 +198,7 @@ func (sim *Simulation) SetUpgradeHeight(nv network.Version, epoch abi.ChainEpoch
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
sm, err := stmgr.NewStateManagerWithUpgradeSchedule(sim.Chainstore, newUpgradeSchedule)
|
sm, err := stmgr.NewStateManagerWithUpgradeSchedule(sim.Node.Chainstore, newUpgradeSchedule)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -241,7 +241,7 @@ func (sim *Simulation) Walk(
|
|||||||
stCid cid.Cid,
|
stCid cid.Cid,
|
||||||
messages []*AppliedMessage) error,
|
messages []*AppliedMessage) error,
|
||||||
) error {
|
) error {
|
||||||
store := sim.Chainstore.ActorStore(ctx)
|
store := sim.Node.Chainstore.ActorStore(ctx)
|
||||||
minEpoch := sim.start.Height()
|
minEpoch := sim.start.Height()
|
||||||
if lookback != 0 {
|
if lookback != 0 {
|
||||||
minEpoch = sim.head.Height() - abi.ChainEpoch(lookback)
|
minEpoch = sim.head.Height() - abi.ChainEpoch(lookback)
|
||||||
@ -305,7 +305,7 @@ func (sim *Simulation) Walk(
|
|||||||
|
|
||||||
stCid = ts.MinTicketBlock().ParentStateRoot
|
stCid = ts.MinTicketBlock().ParentStateRoot
|
||||||
recCid = ts.MinTicketBlock().ParentMessageReceipts
|
recCid = ts.MinTicketBlock().ParentMessageReceipts
|
||||||
ts, err = sim.Chainstore.LoadTipSet(ts.Parents())
|
ts, err = sim.Node.Chainstore.LoadTipSet(ts.Parents())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return xerrors.Errorf("loading parent: %w", err)
|
return xerrors.Errorf("loading parent: %w", err)
|
||||||
}
|
}
|
||||||
@ -339,7 +339,7 @@ func (sim *Simulation) Walk(
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
msgs, err := sim.Chainstore.MessagesForTipset(job.ts)
|
msgs, err := sim.Node.Chainstore.MessagesForTipset(job.ts)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user