初始化
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
package worker
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"juhe-factory/api/internal/model"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
func TestSelectFairCandidatesHonorsTotalCapacity(t *testing.T) {
|
||||
users := make([]uuid.UUID, 50)
|
||||
for index := range users {
|
||||
users[index] = uuid.New()
|
||||
}
|
||||
candidates := make([]model.GenerationTask, 0, 501)
|
||||
for index := 0; index < 501; index++ {
|
||||
candidates = append(candidates, model.GenerationTask{ID: uuid.New(), UserID: users[index%len(users)]})
|
||||
}
|
||||
selected := selectFairCandidates(candidates, map[uuid.UUID]int{}, 500, 10)
|
||||
if len(selected) != 500 {
|
||||
t.Fatalf("selected %d tasks, want 500", len(selected))
|
||||
}
|
||||
}
|
||||
|
||||
func TestSelectFairCandidatesHonorsUserCapacity(t *testing.T) {
|
||||
userID := uuid.New()
|
||||
candidates := make([]model.GenerationTask, 11)
|
||||
for index := range candidates {
|
||||
candidates[index] = model.GenerationTask{ID: uuid.New(), UserID: userID}
|
||||
}
|
||||
selected := selectFairCandidates(candidates, map[uuid.UUID]int{}, 500, 10)
|
||||
if len(selected) != 10 {
|
||||
t.Fatalf("selected %d tasks, want 10", len(selected))
|
||||
}
|
||||
}
|
||||
|
||||
func TestSelectFairCandidatesRoundRobin(t *testing.T) {
|
||||
first, second := uuid.New(), uuid.New()
|
||||
candidates := []model.GenerationTask{
|
||||
{ID: uuid.New(), UserID: first}, {ID: uuid.New(), UserID: first},
|
||||
{ID: uuid.New(), UserID: second}, {ID: uuid.New(), UserID: second},
|
||||
}
|
||||
selected := selectFairCandidates(candidates, map[uuid.UUID]int{}, 4, 10)
|
||||
want := []uuid.UUID{first, second, first, second}
|
||||
for index := range want {
|
||||
if selected[index].UserID != want[index] {
|
||||
t.Fatalf("position %d user %s, want %s", index, selected[index].UserID, want[index])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// TestCanRetrySubmission 验证提交超时会自动重试,并在第五次失败后停止。
|
||||
func TestCanRetrySubmission(t *testing.T) {
|
||||
for attempt := 1; attempt < maxSubmitAttempts; attempt++ {
|
||||
if !canRetrySubmission(attempt) {
|
||||
t.Fatalf("attempt %d should be retryable", attempt)
|
||||
}
|
||||
}
|
||||
if canRetrySubmission(maxSubmitAttempts) {
|
||||
t.Fatalf("attempt %d should reach retry limit", maxSubmitAttempts)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user