mirror of
https://github.com/Buriburizaem0n/nezha_domains.git
synced 2026-09-19 09:40:12 +00:00
79 lines
2.6 KiB
Go
79 lines
2.6 KiB
Go
//go:build linux && agentcompat
|
|
|
|
package scenario
|
|
|
|
import (
|
|
"encoding/json"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/nezhahq/nezha/integration/agentcompat/internal/client"
|
|
)
|
|
|
|
func TestStressFilesystemUsesAgentPAT(t *testing.T) {
|
|
fixture := &heldSessionSetRealFixture{
|
|
agentPATs: []heldRealPATIdentity{{TokenID: 1}},
|
|
}
|
|
operation := StressOperationPlan{Agent: mustStressAgentOrdinal(t, 1), PAT: mustStressPATID(t, "pat-1"), Kind: StressOperationFilesystem}
|
|
|
|
fixture.plan = StressPlan{Rounds: []StressRoundPlan{{Operations: []StressOperationPlan{operation}}}}
|
|
selected, err := stressOperationPATIdentity(fixture, operation)
|
|
require.NoError(t, err)
|
|
require.Equal(t, uint64(1), selected.TokenID)
|
|
}
|
|
|
|
func TestStressExecUsesAgentPAT(t *testing.T) {
|
|
fixture := &heldSessionSetRealFixture{
|
|
agentPATs: []heldRealPATIdentity{{TokenID: 1}},
|
|
}
|
|
operation := StressOperationPlan{Agent: mustStressAgentOrdinal(t, 1), PAT: mustStressPATID(t, "pat-1"), Kind: StressOperationExec}
|
|
|
|
fixture.plan = StressPlan{Rounds: []StressRoundPlan{{Operations: []StressOperationPlan{operation}}}}
|
|
selected, err := stressOperationPATIdentity(fixture, operation)
|
|
require.NoError(t, err)
|
|
require.Equal(t, uint64(1), selected.TokenID)
|
|
}
|
|
|
|
func TestStressFilesystemProofDispatchesOneWrite(t *testing.T) {
|
|
requests := make([]string, 0, 1)
|
|
server := httptest.NewServer(http.HandlerFunc(func(writer http.ResponseWriter, request *http.Request) {
|
|
var envelope struct {
|
|
Params struct {
|
|
Name string `json:"name"`
|
|
} `json:"params"`
|
|
}
|
|
require.NoError(t, json.NewDecoder(request.Body).Decode(&envelope))
|
|
requests = append(requests, envelope.Params.Name)
|
|
writer.Header().Set("Content-Type", "application/json")
|
|
_, err := writer.Write([]byte(`{"jsonrpc":"2.0","id":1,"result":{"content":[],"structuredContent":{"size":35,"sha256":"6ececdd71257073948afc9c699d12d3075d05d3dc339c4511496c3fbc27a2081"}}}`))
|
|
require.NoError(t, err)
|
|
}))
|
|
t.Cleanup(server.Close)
|
|
mcpClient, err := client.New(client.Config{BaseURL: server.URL})
|
|
require.NoError(t, err)
|
|
parent := t.TempDir()
|
|
|
|
proof, err := executeStressFilesystemProof(t.Context(), mcpClient, 17, parent, "operation", 1)
|
|
|
|
require.NoError(t, err)
|
|
require.Equal(t, stressProof("agentcompat-stress-filesystem-proof"), proof)
|
|
require.Equal(t, []string{"fs.write"}, requests)
|
|
}
|
|
|
|
func mustStressAgentOrdinal(t *testing.T, value int) StressAgentOrdinal {
|
|
t.Helper()
|
|
ordinal, err := NewStressAgentOrdinal(value)
|
|
require.NoError(t, err)
|
|
return ordinal
|
|
}
|
|
|
|
func mustStressPATID(t *testing.T, value string) StressPATID {
|
|
t.Helper()
|
|
pat, err := NewStressPATID(value)
|
|
require.NoError(t, err)
|
|
return pat
|
|
}
|