mirror of
https://github.com/Buriburizaem0n/nezha_domains.git
synced 2026-09-22 11:10:12 +00:00
test(agentcompat): add integration scenarios
Co-authored-by: naiba/CloudCode <hi+cloudcode@nai.ba>
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
//go:build linux
|
||||
|
||||
package scenario
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
"github.com/nezhahq/nezha/integration/agentcompat/internal/agent"
|
||||
)
|
||||
|
||||
var (
|
||||
ErrInvalidHeldReadiness = errors.New("held readiness is invalid")
|
||||
ErrHeldReadinessServerID = errors.New("held readiness server ID is missing")
|
||||
ErrHeldReadinessUUID = errors.New("held readiness UUID is missing")
|
||||
ErrHeldReadinessAgentMismatch = errors.New("held readiness does not match Agent")
|
||||
ErrHeldReadinessVersion = errors.New("held readiness version is missing")
|
||||
ErrHeldReadinessOnline = errors.New("held readiness is offline")
|
||||
ErrHeldReadinessVersionObserved = errors.New("held readiness version was not observed")
|
||||
ErrHeldReadinessRequestTaskEstablished = errors.New("held readiness RequestTask was not established")
|
||||
ErrHeldReadinessStateReceiptObserved = errors.New("held readiness state receipt was not observed")
|
||||
)
|
||||
|
||||
type HeldReadinessValidationError struct {
|
||||
Field string
|
||||
cause error
|
||||
}
|
||||
|
||||
func (validationError *HeldReadinessValidationError) Error() string {
|
||||
return fmt.Sprintf("held readiness field %q: %s", validationError.Field, validationError.cause)
|
||||
}
|
||||
|
||||
func (validationError *HeldReadinessValidationError) Is(target error) bool {
|
||||
return target == ErrInvalidHeldReadiness || target == validationError.cause
|
||||
}
|
||||
|
||||
func validateHeldReadiness(agentInstance *agent.Agent, readiness agent.Readiness) error {
|
||||
if agentInstance == nil {
|
||||
return ErrInvalidHeldReadiness
|
||||
}
|
||||
if readiness.ServerID == 0 {
|
||||
return newHeldReadinessValidationError("server_id", ErrHeldReadinessServerID)
|
||||
}
|
||||
if readiness.UUID == "" {
|
||||
return newHeldReadinessValidationError("uuid", ErrHeldReadinessUUID)
|
||||
}
|
||||
return validateHeldReadinessFacts(heldSessionAgentFacts{PID: agentInstance.PID(), UUID: agentInstance.UUID()}, readiness)
|
||||
}
|
||||
|
||||
func validateHeldReadinessFacts(agentFacts heldSessionAgentFacts, readiness agent.Readiness) error {
|
||||
if readiness.ServerID == 0 {
|
||||
return newHeldReadinessValidationError("server_id", ErrHeldReadinessServerID)
|
||||
}
|
||||
if readiness.UUID == "" {
|
||||
return newHeldReadinessValidationError("uuid", ErrHeldReadinessUUID)
|
||||
}
|
||||
if readiness.UUID != agentFacts.UUID {
|
||||
return newHeldReadinessValidationError("uuid", ErrHeldReadinessAgentMismatch)
|
||||
}
|
||||
if readiness.Version == "" {
|
||||
return newHeldReadinessValidationError("version", ErrHeldReadinessVersion)
|
||||
}
|
||||
if !readiness.Online {
|
||||
return newHeldReadinessValidationError("online", ErrHeldReadinessOnline)
|
||||
}
|
||||
if !readiness.VersionObserved {
|
||||
return newHeldReadinessValidationError("version_observed", ErrHeldReadinessVersionObserved)
|
||||
}
|
||||
if !readiness.RequestTaskEstablished {
|
||||
return newHeldReadinessValidationError("request_task_established", ErrHeldReadinessRequestTaskEstablished)
|
||||
}
|
||||
if !readiness.StateReceiptObserved {
|
||||
return newHeldReadinessValidationError("state_receipt_observed", ErrHeldReadinessStateReceiptObserved)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func newHeldReadinessValidationError(field string, cause error) error {
|
||||
return &HeldReadinessValidationError{Field: field, cause: cause}
|
||||
}
|
||||
Reference in New Issue
Block a user