runner

package
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 17, 2026 License: GPL-3.0 Imports: 30 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// DefaultReadyTimeout is the default timeout for waiting for RPC to be ready.
	DefaultReadyTimeout = 120 * time.Second

	// DefaultHealthCheckInterval is the interval between health checks.
	DefaultHealthCheckInterval = 1 * time.Second
)
View Source
const (
	RunStatusCompleted     = "completed"
	RunStatusFailed        = "failed"
	RunStatusContainerDied = "container_died"
	RunStatusCancelled     = "cancelled"
)

Run status constants.

Variables

This section is empty.

Functions

This section is empty.

Types

type Config

type Config struct {
	ResultsDir         string
	ResultsOwner       *fsutil.OwnerConfig // Optional file ownership for results directory
	ClientLogsToStdout bool
	DockerNetwork      string
	JWT                string
	GenesisURLs        map[string]string
	DataDirs           map[string]*config.DataDirConfig
	TmpDataDir         string // Directory for temporary datadir copies (empty = system default)
	TmpCacheDir        string // Directory for temporary cache files (empty = system default)
	ReadyTimeout       time.Duration
	TestFilter         string
	FullConfig         *config.Config // Full config for resolving per-instance settings
}

Config for the runner.

type ResolvedBlkioConfig

type ResolvedBlkioConfig struct {
	DeviceReadBps   []ResolvedThrottleDevice `json:"device_read_bps,omitempty"`
	DeviceReadIOps  []ResolvedThrottleDevice `json:"device_read_iops,omitempty"`
	DeviceWriteBps  []ResolvedThrottleDevice `json:"device_write_bps,omitempty"`
	DeviceWriteIOps []ResolvedThrottleDevice `json:"device_write_iops,omitempty"`
}

ResolvedBlkioConfig contains the resolved blkio configuration for config.json output.

type ResolvedInstance

type ResolvedInstance struct {
	ID                           string                                `json:"id"`
	Client                       string                                `json:"client"`
	Image                        string                                `json:"image"`
	ImageSHA256                  string                                `json:"image_sha256,omitempty"`
	Entrypoint                   []string                              `json:"entrypoint,omitempty"`
	Command                      []string                              `json:"command,omitempty"`
	ExtraArgs                    []string                              `json:"extra_args,omitempty"`
	PullPolicy                   string                                `json:"pull_policy"`
	Restart                      string                                `json:"restart,omitempty"`
	Environment                  map[string]string                     `json:"environment,omitempty"`
	Genesis                      string                                `json:"genesis,omitempty"`
	GenesisGroups                map[string]string                     `json:"genesis_groups,omitempty"`
	DataDir                      *config.DataDirConfig                 `json:"datadir,omitempty"`
	ClientVersion                string                                `json:"client_version,omitempty"`
	RollbackStrategy             string                                `json:"rollback_strategy,omitempty"`
	DropMemoryCaches             string                                `json:"drop_memory_caches,omitempty"`
	WaitAfterRPCReady            string                                `json:"wait_after_rpc_ready,omitempty"`
	RetryNewPayloadsSyncingState *config.RetryNewPayloadsSyncingConfig `json:"retry_new_payloads_syncing_state,omitempty"`
	ResourceLimits               *ResolvedResourceLimits               `json:"resource_limits,omitempty"`
	PostTestRPCCalls             []config.PostTestRPCCall              `json:"post_test_rpc_calls,omitempty"`
	BootstrapFCU                 *config.BootstrapFCUConfig            `json:"bootstrap_fcu,omitempty"`
}

ResolvedInstance contains the resolved configuration for a client instance.

type ResolvedResourceLimits

type ResolvedResourceLimits struct {
	CpusetCpus    string               `json:"cpuset_cpus,omitempty"`
	Memory        string               `json:"memory,omitempty"`
	MemoryBytes   int64                `json:"memory_bytes,omitempty"`
	SwapDisabled  bool                 `json:"swap_disabled,omitempty"`
	BlkioConfig   *ResolvedBlkioConfig `json:"blkio_config,omitempty"`
	CPUFreqKHz    *uint64              `json:"cpu_freq_khz,omitempty"`
	CPUTurboBoost *bool                `json:"cpu_turboboost,omitempty"`
	CPUGovernor   string               `json:"cpu_freq_governor,omitempty"`
}

ResolvedResourceLimits contains the resolved resource limits for config.json output.

type ResolvedThrottleDevice

type ResolvedThrottleDevice struct {
	Path string `json:"path"`
	Rate uint64 `json:"rate"`
}

ResolvedThrottleDevice contains a resolved throttle device for config.json output.

type RunConfig

type RunConfig struct {
	Timestamp                      int64                  `json:"timestamp"`
	TimestampEnd                   int64                  `json:"timestamp_end,omitempty"`
	SuiteHash                      string                 `json:"suite_hash,omitempty"`
	SystemResourceCollectionMethod string                 `json:"system_resource_collection_method,omitempty"`
	System                         *SystemInfo            `json:"system"`
	Instance                       *ResolvedInstance      `json:"instance"`
	Metadata                       *config.MetadataConfig `json:"metadata,omitempty"`
	StartBlock                     *StartBlock            `json:"start_block,omitempty"`
	TestCounts                     *TestCounts            `json:"test_counts,omitempty"`
	Status                         string                 `json:"status,omitempty"`
	TerminationReason              string                 `json:"termination_reason,omitempty"`
	ContainerExitCode              *int64                 `json:"container_exit_code,omitempty"`
	ContainerOOMKilled             *bool                  `json:"container_oom_killed,omitempty"`
}

RunConfig contains configuration for a single test run.

type Runner

type Runner interface {
	Start(ctx context.Context) error
	Stop() error

	// RunInstance runs a single client instance through its lifecycle.
	RunInstance(ctx context.Context, instance *config.ClientInstance) error

	// RunAll runs all configured instances sequentially.
	RunAll(ctx context.Context) error
}

Runner orchestrates client container lifecycle.

func NewRunner

func NewRunner(
	log *logrus.Logger,
	cfg *Config,
	dockerMgr docker.Manager,
	registry client.Registry,
	exec executor.Executor,
	cpufreqMgr cpufreq.Manager,
	uploader upload.Uploader,
) Runner

NewRunner creates a new runner instance.

type StartBlock

type StartBlock struct {
	Number    uint64 `json:"number"`
	Hash      string `json:"hash"`
	StateRoot string `json:"state_root"`
}

StartBlock contains block information captured at the start of a run.

type SystemInfo

type SystemInfo struct {
	Hostname           string  `json:"hostname"`
	OS                 string  `json:"os"`
	Platform           string  `json:"platform"`
	PlatformVersion    string  `json:"platform_version"`
	KernelVersion      string  `json:"kernel_version"`
	Arch               string  `json:"arch"`
	Virtualization     string  `json:"virtualization,omitempty"`
	VirtualizationRole string  `json:"virtualization_role,omitempty"`
	CPUVendor          string  `json:"cpu_vendor"`
	CPUModel           string  `json:"cpu_model"`
	CPUCores           int     `json:"cpu_cores"`
	CPUMhz             float64 `json:"cpu_mhz"`
	CPUCacheKB         int     `json:"cpu_cache_kb"`
	MemoryTotalGB      float64 `json:"memory_total_gb"`
}

SystemInfo contains system hardware and OS information.

type TestCounts

type TestCounts struct {
	Total  int `json:"total"`
	Passed int `json:"passed"`
	Failed int `json:"failed"`
}

TestCounts contains test count statistics for a run.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL