mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-20 10:52:25 +00:00
Add args to newSession
This commit is contained in:
parent
93ef61bfad
commit
7d72612dbb
6 changed files with 29 additions and 16 deletions
|
|
@ -16,8 +16,21 @@ type Bundle struct {
|
||||||
RefundPercent *int `json:"percent,omitempty"`
|
RefundPercent *int `json:"percent,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type BuildBlockArgs struct {
|
||||||
|
Slot uint64
|
||||||
|
ProposerPubkey []byte
|
||||||
|
Parent common.Hash
|
||||||
|
Timestamp uint64
|
||||||
|
FeeRecipient common.Address
|
||||||
|
GasLimit uint64
|
||||||
|
Random common.Hash
|
||||||
|
Withdrawals []*types.Withdrawal
|
||||||
|
Extra []byte
|
||||||
|
FillPending bool
|
||||||
|
}
|
||||||
|
|
||||||
type API interface {
|
type API interface {
|
||||||
NewSession(ctx context.Context) (string, error)
|
NewSession(ctx context.Context, args *BuildBlockArgs) (string, error)
|
||||||
AddTransaction(ctx context.Context, sessionId string, tx *types.Transaction) (*types.SimulateTransactionResult, error)
|
AddTransaction(ctx context.Context, sessionId string, tx *types.Transaction) (*types.SimulateTransactionResult, error)
|
||||||
AddBundle(ctx context.Context, sessionId string, bundle Bundle) error
|
AddBundle(ctx context.Context, sessionId string, bundle Bundle) error
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -29,9 +29,9 @@ func NewClientFromRPC(rpc rpcClient) *APIClient {
|
||||||
return &APIClient{rpc: rpc}
|
return &APIClient{rpc: rpc}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *APIClient) NewSession(ctx context.Context) (string, error) {
|
func (a *APIClient) NewSession(ctx context.Context, args *BuildBlockArgs) (string, error) {
|
||||||
var id string
|
var id string
|
||||||
err := a.rpc.CallContext(ctx, &id, "suavex_newSession")
|
err := a.rpc.CallContext(ctx, &id, "suavex_newSession", args)
|
||||||
return id, err
|
return id, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ import (
|
||||||
|
|
||||||
// SessionManager is the backend that manages the session state of the builder API.
|
// SessionManager is the backend that manages the session state of the builder API.
|
||||||
type SessionManager interface {
|
type SessionManager interface {
|
||||||
NewSession(context.Context) (string, error)
|
NewSession(context.Context, *BuildBlockArgs) (string, error)
|
||||||
AddTransaction(sessionId string, tx *types.Transaction) (*types.SimulateTransactionResult, error)
|
AddTransaction(sessionId string, tx *types.Transaction) (*types.SimulateTransactionResult, error)
|
||||||
AddBundle(sessionId string, bundle Bundle) error
|
AddBundle(sessionId string, bundle Bundle) error
|
||||||
}
|
}
|
||||||
|
|
@ -24,8 +24,8 @@ type Server struct {
|
||||||
sessionMngr SessionManager
|
sessionMngr SessionManager
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) NewSession(ctx context.Context) (string, error) {
|
func (s *Server) NewSession(ctx context.Context, args *BuildBlockArgs) (string, error) {
|
||||||
return s.sessionMngr.NewSession(ctx)
|
return s.sessionMngr.NewSession(ctx, args)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) AddTransaction(ctx context.Context, sessionId string, tx *types.Transaction) (*types.SimulateTransactionResult, error) {
|
func (s *Server) AddTransaction(ctx context.Context, sessionId string, tx *types.Transaction) (*types.SimulateTransactionResult, error) {
|
||||||
|
|
@ -39,7 +39,7 @@ func (s *Server) AddBundle(ctx context.Context, sessionId string, bundle Bundle)
|
||||||
type MockServer struct {
|
type MockServer struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *MockServer) NewSession(ctx context.Context) (string, error) {
|
func (s *MockServer) NewSession(ctx context.Context, args *BuildBlockArgs) (string, error) {
|
||||||
return "", nil
|
return "", nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ func TestAPI(t *testing.T) {
|
||||||
|
|
||||||
c := NewClientFromRPC(rpc.DialInProc(srv))
|
c := NewClientFromRPC(rpc.DialInProc(srv))
|
||||||
|
|
||||||
res0, err := c.NewSession(context.Background())
|
res0, err := c.NewSession(context.Background(), nil)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Equal(t, res0, "1")
|
require.Equal(t, res0, "1")
|
||||||
|
|
||||||
|
|
@ -30,7 +30,7 @@ func TestAPI(t *testing.T) {
|
||||||
|
|
||||||
type nullSessionManager struct{}
|
type nullSessionManager struct{}
|
||||||
|
|
||||||
func (nullSessionManager) NewSession(ctx context.Context) (string, error) {
|
func (nullSessionManager) NewSession(ctx context.Context, args *BuildBlockArgs) (string, error) {
|
||||||
return "1", ctx.Err()
|
return "1", ctx.Err()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -74,7 +74,7 @@ func NewSessionManager(blockchain blockchain, config *Config) *SessionManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewSession creates a new builder session and returns the session id
|
// NewSession creates a new builder session and returns the session id
|
||||||
func (s *SessionManager) NewSession(ctx context.Context) (string, error) {
|
func (s *SessionManager) NewSession(ctx context.Context, args *api.BuildBlockArgs) (string, error) {
|
||||||
// Wait for session to become available
|
// Wait for session to become available
|
||||||
select {
|
select {
|
||||||
case <-s.sem:
|
case <-s.sem:
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ func TestSessionManager_SessionTimeout(t *testing.T) {
|
||||||
SessionIdleTimeout: 500 * time.Millisecond,
|
SessionIdleTimeout: 500 * time.Millisecond,
|
||||||
})
|
})
|
||||||
|
|
||||||
id, err := mngr.NewSession(context.TODO())
|
id, err := mngr.NewSession(context.TODO(), nil)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
time.Sleep(1 * time.Second)
|
time.Sleep(1 * time.Second)
|
||||||
|
|
@ -42,7 +42,7 @@ func TestSessionManager_MaxConcurrentSessions(t *testing.T) {
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("SessionAvailable", func(t *testing.T) {
|
t.Run("SessionAvailable", func(t *testing.T) {
|
||||||
sess, err := mngr.NewSession(context.TODO())
|
sess, err := mngr.NewSession(context.TODO(), nil)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.NotZero(t, sess)
|
require.NotZero(t, sess)
|
||||||
})
|
})
|
||||||
|
|
@ -53,7 +53,7 @@ func TestSessionManager_MaxConcurrentSessions(t *testing.T) {
|
||||||
ctx, cancel := context.WithCancel(context.Background())
|
ctx, cancel := context.WithCancel(context.Background())
|
||||||
cancel()
|
cancel()
|
||||||
|
|
||||||
sess, err := mngr.NewSession(ctx)
|
sess, err := mngr.NewSession(ctx, nil)
|
||||||
require.Zero(t, sess)
|
require.Zero(t, sess)
|
||||||
require.ErrorIs(t, err, context.Canceled)
|
require.ErrorIs(t, err, context.Canceled)
|
||||||
})
|
})
|
||||||
|
|
@ -62,7 +62,7 @@ func TestSessionManager_MaxConcurrentSessions(t *testing.T) {
|
||||||
time.Sleep(d) // Wait for the session to expire.
|
time.Sleep(d) // Wait for the session to expire.
|
||||||
|
|
||||||
// We should be able to open a session again.
|
// We should be able to open a session again.
|
||||||
sess, err := mngr.NewSession(context.TODO())
|
sess, err := mngr.NewSession(context.TODO(), nil)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.NotZero(t, sess)
|
require.NotZero(t, sess)
|
||||||
})
|
})
|
||||||
|
|
@ -73,7 +73,7 @@ func TestSessionManager_SessionRefresh(t *testing.T) {
|
||||||
SessionIdleTimeout: 500 * time.Millisecond,
|
SessionIdleTimeout: 500 * time.Millisecond,
|
||||||
})
|
})
|
||||||
|
|
||||||
id, err := mngr.NewSession(context.TODO())
|
id, err := mngr.NewSession(context.TODO(), nil)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
// if we query the session under the idle timeout,
|
// if we query the session under the idle timeout,
|
||||||
|
|
@ -98,7 +98,7 @@ func TestSessionManager_StartSession(t *testing.T) {
|
||||||
// test that the session starts and it can simulate transactions
|
// test that the session starts and it can simulate transactions
|
||||||
mngr, bMock := newSessionManager(t, &Config{})
|
mngr, bMock := newSessionManager(t, &Config{})
|
||||||
|
|
||||||
id, err := mngr.NewSession(context.TODO())
|
id, err := mngr.NewSession(context.TODO(), nil)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
txn := bMock.state.newTransfer(t, common.Address{}, big.NewInt(1))
|
txn := bMock.state.newTransfer(t, common.Address{}, big.NewInt(1))
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue