server

package
v0.0.0-...-fb1bc51 Latest Latest
Warning

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

Go to latest
Published: Jun 26, 2026 License: MIT Imports: 21 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ModeStateKeyLevels           = "levels"
	ModeStateKeyCurrentLevel     = "current_level"
	ModeStateKeyCases            = "cases"
	ModeStateKeyCurrentCaseID    = "current_case_id"
	ModeStateKeyAssertionResults = "assertion_results"
	ModeStateKeySuite            = "suite"
	ModeStateKeySuiteStatus      = "suite_status"
	ModeStateKeyConfig           = "config"
	ModeStateKeyRulesStatus      = "rules_status"
	ModeStateKeyState            = "state"
)

ModeState 的标准键名常量,避免字符串字面量散落各处。

Variables

This section is empty.

Functions

func RunRequestBatch

func RunRequestBatch(ctx context.Context, jobs []RequestJob, concurrency int, executor *RequestExecutor, hooks RequestQueueHooks) int

Types

type CancelFunc

type CancelFunc func()

CancelFunc 取消订阅用的函数,调用后关闭对应的事件通道。

type Event

type Event struct {
	RunID   RunID
	Kind    EventKind
	Payload any
}

Event 是推送给 TUI 层的通知。Payload 类型随 Kind 不同:

  • EventRequestQueued → *RunState(含请求队列状态)
  • EventRequestStarted → *RunState(含请求运行状态)
  • EventRequestSkipped → *RunState(含请求跳过状态)
  • EventRequestDone → *RunState(含最新请求结果的完整快照)
  • EventProgressTick → *RunState(定时聚合快照)
  • EventLevelDone → *RunState
  • EventIntegrityRulesStatus → *RunState
  • EventIntegritySuiteLoading → *RunState
  • EventIntegritySuiteLoaded → *RunState
  • EventIntegrityCaseStarted → *RunState
  • EventIntegrityCaseDone → *RunState
  • EventAssertionResult → []types.AssertionResult
  • EventRunComplete → *RunState(最终快照)
  • EventRunFailed → *RunState

type EventKind

type EventKind string

EventKind 事件类型枚举。

const (
	// EventRunQueued 运行已进入队列,等待调度。
	EventRunQueued EventKind = "run_queued"
	// EventRunStarted 运行已被调度并开始执行。
	EventRunStarted EventKind = "run_started"
	// EventRunStopped 运行已停止。
	EventRunStopped EventKind = "run_stopped"
	// EventRequestQueued 单个请求已进入请求队列。
	EventRequestQueued EventKind = "request_queued"
	// EventRequestStarted 单个请求已开始执行。
	EventRequestStarted EventKind = "request_started"
	// EventRequestSkipped 单个请求因停止等原因被跳过。
	EventRequestSkipped EventKind = "request_skipped"
	// EventRequestDone 单个请求完成(含成功/失败)。
	EventRequestDone EventKind = "request_done"
	// EventProgressTick 定时聚合快照(约 500ms 发一次)。
	EventProgressTick EventKind = "progress_tick"
	// EventLevelDone Turbo 模式下一个并发级别探测完成。
	EventLevelDone EventKind = "level_done"
	// EventIntegrityRulesStatus Integrity 规则加载、检查或更新状态变化。
	EventIntegrityRulesStatus EventKind = "integrity_rules_status"
	// EventIntegritySuiteLoading Integrity 测试集开始加载。
	EventIntegritySuiteLoading EventKind = "integrity_suite_loading"
	// EventIntegritySuiteLoaded Integrity 测试集加载完成。
	EventIntegritySuiteLoaded EventKind = "integrity_suite_loaded"
	// EventIntegrityCaseStarted Integrity 模式下一个测试用例开始。
	EventIntegrityCaseStarted EventKind = "integrity_case_started"
	// EventIntegrityCaseDone Integrity 模式下一个测试用例完成。
	EventIntegrityCaseDone EventKind = "integrity_case_done"
	// EventAssertionResult Integrity 模式下断言完成。
	EventAssertionResult EventKind = "assertion_result"
	// EventRunComplete 运行正常结束。
	EventRunComplete EventKind = "run_complete"
	// EventRunFailed 运行异常中止。
	EventRunFailed EventKind = "run_failed"
)

type ProtocolMeta

type ProtocolMeta struct {
	ID                 string `json:"id"`
	Name               string `json:"name"`
	DefaultEndpointURL string `json:"default_endpoint_url"`
}

ProtocolMeta describes a model API protocol supported by AIT.

type ReportFormat

type ReportFormat string

ReportFormat 报告文件格式。

const (
	ReportFormatJSON ReportFormat = "json"
	ReportFormatCSV  ReportFormat = "csv"
)

type RequestExecutor

type RequestExecutor struct {
	// contains filtered or unexported fields
}

RequestExecutor 执行单个 RequestJob。

func NewRequestExecutor

func NewRequestExecutor(c client.ModelClient) *RequestExecutor

func (*RequestExecutor) Execute

type RequestJob

type RequestJob struct {
	RunID  RunID
	Index  int
	Input  types.Input
	Level  int
	CaseID string
}

RequestJob 描述一次可由统一请求队列执行的模型请求。

type RequestQueue

type RequestQueue struct {
	// contains filtered or unexported fields
}

RequestQueue 使用公共 FIFO queue 和 worker pool 执行一批请求。

func NewRequestQueue

func NewRequestQueue(capacity int) *RequestQueue

type RequestQueueHooks

type RequestQueueHooks struct {
	OnQueued  func(RequestJob)
	OnStarted func(RequestJob)
	OnSkipped func(RequestJob)
	OnDone    func(RequestResult)
}

type RequestResult

type RequestResult struct {
	Job     RequestJob
	Metrics *client.ResponseMetrics
	Err     error
}

RequestResult 是 RequestJob 的执行结果。

type RequestState

type RequestState struct {
	Index      int
	Status     RequestStatus
	Level      int
	CaseID     string
	QueuedAt   time.Time
	StartedAt  *time.Time
	FinishedAt *time.Time
	ErrorMsg   string
}

RequestState 是请求队列中的单个请求快照。

type RequestStatus

type RequestStatus string

RequestStatus 单个请求的生命周期状态。

const (
	RequestStatusQueued    RequestStatus = "queued"
	RequestStatusRunning   RequestStatus = "running"
	RequestStatusSucceeded RequestStatus = "succeeded"
	RequestStatusFailed    RequestStatus = "failed"
	RequestStatusSkipped   RequestStatus = "skipped"
)

type RunAggregator

type RunAggregator struct {
	// contains filtered or unexported fields
}

RunAggregator 是运行状态、请求持久化和请求事件发布的统一入口。

func (*RunAggregator) Complete

func (a *RunAggregator) Complete(result RequestResult) *types.RequestMetrics

func (*RunAggregator) MarkQueued

func (a *RunAggregator) MarkQueued(job RequestJob)

func (*RunAggregator) MarkSkipped

func (a *RunAggregator) MarkSkipped(job RequestJob)

func (*RunAggregator) MarkStarted

func (a *RunAggregator) MarkStarted(job RequestJob)

type RunID

type RunID string

RunID 唯一标识一次运行(全局唯一,格式 run_<unix_nano>)。

type RunMode

type RunMode string

RunMode 运行模式类型。

const (
	ModeTurbo     RunMode = "turbo"
	ModeStandard  RunMode = "standard"
	ModeIntegrity RunMode = "integrity"
)

type RunScheduler

type RunScheduler struct {
	// contains filtered or unexported fields
}

RunScheduler 负责按 FIFO 调度运行,并限制全局同时运行数量。

func (*RunScheduler) Enqueue

func (s *RunScheduler) Enqueue(item runQueueItem) error

func (*RunScheduler) Shutdown

func (s *RunScheduler) Shutdown(ctx context.Context) error

Shutdown 优雅关闭调度器,等待所有运行完成。

type RunState

type RunState struct {
	Mode       RunMode
	RunID      RunID
	TaskID     string
	Status     RunStatus
	StartedAt  time.Time
	FinishedAt *time.Time

	// 进度计数
	TotalReqs   int
	QueuedReqs  int
	RunningReqs int
	DoneReqs    int
	SuccessReqs int
	FailedReqs  int
	SkippedReqs int

	// 聚合指标(实时更新)
	AvgTPS       float64
	AvgTTFT      time.Duration
	SuccessRate  float64
	CacheHitRate float64

	// 吞吐量指标(基于整体运行时长,最终稳定值)
	RPM float64
	TPM float64

	// 详细请求列表(按 index 排序)
	Requests []*types.RequestMetrics

	// 请求队列状态(按 index 记录)
	RequestStates map[int]RequestState

	// 模式特定状态(运行时动态更新),key 使用 ModeStateKey* 常量
	ModeState map[string]any

	// 最终结果(运行结束后填充)
	// - standard: *types.ReportData
	// - turbo:    *types.TurboResult
	// - integrity: *types.IntegrityResult
	ModeResult any

	ErrorMsg string
}

RunState 一次运行的完整快照,由 GetRunState 返回。 字段为只读快照,不持有锁,TUI 层可安全读取。

type RunStatus

type RunStatus string

RunStatus 运行的生命周期状态。

const (
	RunStatusQueued    RunStatus = "queued"
	RunStatusRunning   RunStatus = "running"
	RunStatusCompleted RunStatus = "completed"
	RunStatusFailed    RunStatus = "failed"
	RunStatusStopped   RunStatus = "stopped"
)

type Server

type Server interface {
	// --- 任务管理 ---
	ListTasks() ([]types.TaskOverview, error)
	GetTask(id string) (types.TaskDefinition, error)
	ValidateTaskConfig(cfg TaskConfig) (TaskConfig, error)
	CreateTask(cfg TaskConfig) (types.TaskDefinition, error)
	UpdateTask(id string, cfg TaskConfig) (types.TaskDefinition, error)
	DeleteTask(id string) error
	DuplicateTask(id string) (types.TaskDefinition, error)

	// StartRun 根据任务配置启动一次运行,立即返回 RunID。
	// 运行在后台 goroutine 中执行,进度通过 SubscribeRunEvents 获取。
	StartRun(taskID string) (RunID, error)

	// StopRun 请求停止指定运行(软停止,等待当前批次完成)。
	StopRun(runID RunID) error

	// GetRunState 返回指定运行的当前状态快照(线程安全的深度拷贝)。
	GetRunState(runID RunID) (*RunState, bool)

	// SubscribeRunEvents 订阅指定运行的事件流。返回只读通道和取消函数。
	// 通道在运行结束后自动关闭,调用方可 range 消费。
	SubscribeRunEvents(runID RunID) (<-chan Event, CancelFunc)

	// ListTaskRunHistory 返回任务的运行历史,最新在前。limit<=0 表示不限条数。
	ListTaskRunHistory(taskID string, limit int) ([]types.TaskRunSummary, error)

	// GenerateRunReport 为已完成的运行生成报告文件,返回文件路径。
	GenerateRunReport(runID RunID, format ReportFormat) (string, error)

	// GetAppConfig 返回当前全局配置。
	GetAppConfig() (*config.Config, error)

	// UpdateProxyURL 更新并持久化全局代理 URL。
	UpdateProxyURL(proxyURL string) error

	// --- 元数据 ---
	ListProtocols() []ProtocolMeta
	ListIntegritySuites(protocol string) ([]types.IntegritySuite, error)
	GetIntegritySuite(protocol, suiteID string) (types.IntegritySuite, error)

	// Context 返回 Server 的生命周期 Context,用于子操作。
	// 当 Server 关闭时,此 Context 会被取消。
	Context() context.Context

	// Shutdown 优雅关闭 Server,等待正在运行的请求完成。
	Shutdown(timeout time.Duration) error
}

Server 是业务逻辑层的统一入口,TUI 层通过此接口与业务交互。 所有方法均为线程安全。

func New

func New() (Server, error)

New 创建并初始化 Server 实例。 会自动加载 ~/.ait/tasks/ 与 ~/.ait/runs/ 下的业务数据。

func NewWithVersion

func NewWithVersion(version string) (Server, error)

NewWithVersion 创建并初始化 Server 实例,指定版本号。

type TaskConfig

type TaskConfig struct {
	Name  string
	Input types.Input
}

TaskConfig 新建/更新任务时提交的可变配置。 ID、时间戳等元数据由 Server 自动管理。

Jump to

Keyboard shortcuts

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