mirror of
https://github.com/MengMengCode/CLICD.git
synced 2026-08-06 05:52:19 +08:00
@@ -0,0 +1,56 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"clicd/internal/config"
|
||||
"clicd/internal/lxc"
|
||||
)
|
||||
|
||||
func TestRunnableTaskIndexSkipsActiveContainer(t *testing.T) {
|
||||
queue := []*Task{
|
||||
{ID: "task-1", Type: TaskStop, ContainerID: 1, ContainerName: "alpha"},
|
||||
{ID: "task-2", Type: TaskStart, ContainerID: 1, ContainerName: "alpha"},
|
||||
{ID: "task-3", Type: TaskStart, ContainerID: 2, ContainerName: "beta"},
|
||||
}
|
||||
active := map[string]bool{taskConcurrencyKey(queue[0]): true}
|
||||
|
||||
if got := runnableTaskIndex(queue[1:], active); got != 1 {
|
||||
t.Fatalf("runnableTaskIndex() = %d, want 1 for the other container", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestTaskConcurrencyKeyUsesContainerName(t *testing.T) {
|
||||
create := &Task{ID: "task-1", Type: TaskCreate, Config: lxcConfigWithName("Example")}
|
||||
operation := &Task{ID: "task-2", Type: TaskDelete, ContainerID: 9, ContainerName: "example"}
|
||||
if taskConcurrencyKey(create) != taskConcurrencyKey(operation) {
|
||||
t.Fatalf("same container received different concurrency keys: %q and %q", taskConcurrencyKey(create), taskConcurrencyKey(operation))
|
||||
}
|
||||
}
|
||||
|
||||
func TestTaskQueueSetConcurrencyNormalizesAndReports(t *testing.T) {
|
||||
q := newTaskQueue(config.DefaultTaskConcurrency)
|
||||
q.SetConcurrency(config.MaxTaskConcurrency + 10)
|
||||
if got := q.Settings().Concurrency; got != config.MaxTaskConcurrency {
|
||||
t.Fatalf("concurrency = %d, want %d", got, config.MaxTaskConcurrency)
|
||||
}
|
||||
q.SetConcurrency(0)
|
||||
if got := q.Settings().Concurrency; got != config.DefaultTaskConcurrency {
|
||||
t.Fatalf("concurrency = %d, want default %d", got, config.DefaultTaskConcurrency)
|
||||
}
|
||||
}
|
||||
|
||||
func TestTaskQueueUpdateTaskStage(t *testing.T) {
|
||||
q := newTaskQueue(config.DefaultTaskConcurrency)
|
||||
task := &Task{ID: "task-1", Type: TaskCreate, Status: "running"}
|
||||
|
||||
q.updateTaskStage(task, "rootfs", "下载模板并创建基础文件系统")
|
||||
|
||||
if task.Stage != "rootfs" || task.StageDetail != "下载模板并创建基础文件系统" {
|
||||
t.Fatalf("unexpected task stage: %q %q", task.Stage, task.StageDetail)
|
||||
}
|
||||
}
|
||||
|
||||
func lxcConfigWithName(name string) lxc.ContainerConfig {
|
||||
return lxc.ContainerConfig{Name: name}
|
||||
}
|
||||
Reference in New Issue
Block a user