mirror of
https://github.com/Buriburizaem0n/nezha_domains.git
synced 2026-09-22 11:10:12 +00:00
test(agentcompat): add exact stress scenario
Co-authored-by: naiba/CloudCode <hi+cloudcode@nai.ba>
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
//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
|
||||
}
|
||||
Reference in New Issue
Block a user