Skip to content

Commit

Permalink
fixup! test(a3p-integration): Try to get more insight into the failin…
Browse files Browse the repository at this point in the history
…g test
  • Loading branch information
gibson042 committed Nov 5, 2024
1 parent c625260 commit b78fad8
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 1 deletion.
4 changes: 4 additions & 0 deletions golang/cosmos/x/swingset/keeper/keeper.go
Original file line number Diff line number Diff line change
Expand Up @@ -328,9 +328,12 @@ func (k Keeper) ChargeBeans(ctx sdk.Context, addr sdk.AccAddress, beans sdkmath.
// Charge the account immediately if they owe more than BeansPerMinFeeDebit.
// NOTE: We assume that BeansPerMinFeeDebit is a multiple of BeansPerFeeUnit.
feeCoins, _ := feeDecCoins.TruncateDecimal()
stdlog.Printf("xxx gibson ChargeBeans %v, owing %v + %v = %v => %v [transfer %v %v]\n", addr,
wasOwing, beans, nowOwing, remainderOwing, beansToDebit, feeCoins)
if !feeCoins.IsZero() {
err := k.bankKeeper.SendCoinsFromAccountToModule(ctx, addr, k.feeCollectorName, feeCoins)
if err != nil {
stdlog.Println("xxx gibson ChargeBeans error", addr, err.Error())
return err
}
}
Expand All @@ -346,6 +349,7 @@ func (k Keeper) ChargeForSmartWallet(ctx sdk.Context, addr sdk.AccAddress) error
beansPerUnit := k.GetBeansPerUnit(ctx)
beans := beansPerUnit[types.BeansPerSmartWalletProvision]
err := k.ChargeBeans(ctx, addr, beans)
stdlog.Println("xxx gibson ChargeForSmartWallet", addr, beans, err)
if err != nil {
return err
}
Expand Down
5 changes: 5 additions & 0 deletions golang/cosmos/x/swingset/keeper/msg_server.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package keeper

import (
"context"
stdlog "log"

"github.com/Agoric/agoric-sdk/golang/cosmos/vm"
"github.com/Agoric/agoric-sdk/golang/cosmos/x/swingset/types"
Expand Down Expand Up @@ -100,6 +101,7 @@ func (keeper msgServer) WalletSpendAction(goCtx context.Context, msg *types.MsgW
ctx := sdk.UnwrapSDKContext(goCtx)

err := keeper.provisionIfNeeded(ctx, msg.Owner)
stdlog.Println("xxx gibson WalletSpendAction", msg.Owner, err)
if err != nil {
return nil, err
}
Expand All @@ -111,6 +113,7 @@ func (keeper msgServer) WalletSpendAction(goCtx context.Context, msg *types.MsgW
// fmt.Fprintf(os.Stderr, "Context is %+v\n", ctx)
err = keeper.routeAction(ctx, msg, action)
if err != nil {
stdlog.Println("xxx gibson WalletSpendAction routeAction error", msg.Owner, err.Error())
return nil, err
}
return &types.MsgWalletSpendActionResponse{}, nil
Expand All @@ -132,6 +135,7 @@ func (keeper msgServer) provisionIfNeeded(ctx sdk.Context, owner sdk.AccAddress)
// not guaranteed to succeed (e.g. lack of provision pool funds)
walletState := keeper.GetSmartWalletState(ctx, owner)
if walletState == types.SmartWalletStateProvisioned {
stdlog.Println("xxx gibson provisionIfNeeded", owner, "already provisioned")
return nil
}

Expand All @@ -147,6 +151,7 @@ func (keeper msgServer) provisionIfNeeded(ctx sdk.Context, owner sdk.AccAddress)
}

err := keeper.routeAction(ctx, msg, action)
stdlog.Println("xxx gibson provisionIfNeeded routeAction error", owner, err)
// fmt.Fprintln(os.Stderr, "Returned from SwingSet", out, err)
if err != nil {
return err
Expand Down
13 changes: 12 additions & 1 deletion golang/cosmos/x/swingset/types/msgs.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"compress/gzip"
"encoding/json"
"io"
stdlog "log"
"strings"

sdkioerrors "cosmossdk.io/errors"
Expand Down Expand Up @@ -60,11 +61,17 @@ func chargeAdmission(ctx sdk.Context, keeper SwingSetKeeper, addr sdk.AccAddress
beansPerUnit := keeper.GetBeansPerUnit(ctx)
beans := beansPerUnit[BeansPerInboundTx]
beans = beans.Add(beansPerUnit[BeansPerMessage].MulUint64((uint64(len(msgs)))))
size := uint64(0)
for _, msg := range msgs {
beans = beans.Add(beansPerUnit[BeansPerMessageByte].MulUint64(uint64(len(msg))))
msgLen := uint64(len(msg))
size += msgLen
beans = beans.Add(beansPerUnit[BeansPerMessageByte].MulUint64(msgLen))
}
beans = beans.Add(beansPerUnit[BeansPerStorageByte].MulUint64(storageLen))

stdlog.Printf("xxx gibson chargeAdmission %v, %v + %v/msg * %v + %v/byte * %v = %v\n", addr,
beansPerUnit[BeansPerInboundTx], beansPerUnit[BeansPerMessage], len(msgs), beansPerUnit[BeansPerMessageByte], size,
beans)
return keeper.ChargeBeans(ctx, addr, beans)
}

Expand All @@ -80,17 +87,20 @@ func checkSmartWalletProvisioned(ctx sdk.Context, keeper SwingSetKeeper, addr sd
switch walletState {
case SmartWalletStateProvisioned:
// The address already has a smart wallet
stdlog.Println("xxx gibson checkSmartWalletProvisioned", addr, "provisioned")
return nil
case SmartWalletStatePending:
// A provision (either explicit or automatic) may be pending execution in
// the controller, or if we ever allow multiple swingset messages per
// transaction, a previous message may have provisioned the wallet.
stdlog.Println("xxx gibson checkSmartWalletProvisioned", addr, "pending")
return nil
default:
// Charge for the smart wallet.
// This is a separate charge from the smart wallet action which triggered the check
// TODO: Currently this call does not mark the smart wallet provisioning as
// pending, resulting in multiple provisioning charges for the owner.
stdlog.Println("xxx gibson checkSmartWalletProvisioned", addr, "none")
return keeper.ChargeForSmartWallet(ctx, addr)
}
}
Expand Down Expand Up @@ -251,6 +261,7 @@ func NewMsgWalletSpendAction(owner sdk.AccAddress, spendAction string) *MsgWalle

// CheckAdmissibility implements the vm.ControllerAdmissionMsg interface.
func (msg MsgWalletSpendAction) CheckAdmissibility(ctx sdk.Context, data interface{}) error {
stdlog.Println("xxx gibson WalletSpendAction.CheckAdmissibility", msg.Owner)
keeper, ok := data.(SwingSetKeeper)
if !ok {
return sdkioerrors.Wrapf(sdkerrors.ErrInvalidRequest, "data must be a SwingSetKeeper, not a %T", data)
Expand Down

0 comments on commit b78fad8

Please sign in to comment.