mirror of
https://github.com/Buriburizaem0n/nezha_domains.git
synced 2026-09-19 09:40:12 +00:00
44 lines
1.8 KiB
Go
44 lines
1.8 KiB
Go
//go:build linux
|
|
|
|
package scenario
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/nezhahq/nezha/integration/agentcompat/internal/contract"
|
|
)
|
|
|
|
func TestStressExactOnceRegistryRejectsInvalidReceipts(t *testing.T) {
|
|
profile, err := contract.ProfileByName(string(contract.ProfilePRFull))
|
|
require.NoError(t, err)
|
|
plan, err := GenerateStressPlan(profile, contract.DefaultSeed)
|
|
require.NoError(t, err)
|
|
registry, err := newStressExactOnceRegistry(plan)
|
|
require.NoError(t, err)
|
|
operation := plan.Rounds[0].Operations[0]
|
|
receipt := StressOperationReceipt{Operation: operation, SuccessProof: "ok"}
|
|
require.NoError(t, registry.Start(operation))
|
|
require.ErrorIs(t, registry.Start(operation), ErrStressOperationDuplicateStart)
|
|
require.NoError(t, registry.Complete(receipt))
|
|
require.ErrorIs(t, registry.Complete(receipt), ErrStressOperationDuplicateCompletion)
|
|
require.ErrorIs(t, registry.Start(StressOperationPlan{ID: operation.ID}), ErrStressOperationOwnerMismatch)
|
|
require.ErrorIs(t, registry.Complete(StressOperationReceipt{Operation: StressOperationPlan{ID: operation.ID, Round: 2, Agent: operation.Agent, PAT: operation.PAT, Kind: operation.Kind}, SuccessProof: "ok"}), ErrStressOperationOwnerMismatch)
|
|
}
|
|
|
|
func TestStressExactOnceRegistryRequiresCanonicalCompletion(t *testing.T) {
|
|
profile, err := contract.ProfileByName(string(contract.ProfilePRFull))
|
|
require.NoError(t, err)
|
|
plan, err := GenerateStressPlan(profile, contract.DefaultSeed)
|
|
require.NoError(t, err)
|
|
registry, err := newStressExactOnceRegistry(plan)
|
|
require.NoError(t, err)
|
|
for _, round := range plan.Rounds {
|
|
for _, operation := range round.Operations {
|
|
require.NoError(t, registry.Start(operation))
|
|
}
|
|
}
|
|
require.ErrorIs(t, registry.ValidateComplete(), ErrStressOperationMissingCompletion)
|
|
}
|