mirror of
https://github.com/Buriburizaem0n/nezha_domains.git
synced 2026-09-19 09:40:12 +00:00
feat(agentcompat): add scoped IO stream capabilities
Co-authored-by: naiba/CloudCode <hi+cloudcode@nai.ba>
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
//go:build !agentcompat
|
||||
|
||||
package rpc
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestAgentCompatCapabilityDefaultBuildHasNoRegistryState(t *testing.T) {
|
||||
handler := NewNezhaHandler()
|
||||
state := reflect.ValueOf(handler.agentCompatCapabilities)
|
||||
|
||||
require.Equal(t, 0, state.NumField())
|
||||
}
|
||||
|
||||
func TestAgentCompatCapabilityDefaultBuildUsesStableUnavailableAndNoopContracts(t *testing.T) {
|
||||
handler := NewNezhaHandler()
|
||||
registration := AgentCompatCapabilityRegistration{}
|
||||
capability, err := handler.RegisterAgentCompatIOStreamCapability(context.Background(), registration)
|
||||
require.Empty(t, capability.String())
|
||||
require.ErrorIs(t, err, ErrAgentCompatCapabilityUnavailable)
|
||||
access := AgentCompatCapabilityAccess{}
|
||||
require.ErrorIs(t, handler.BindAgentCompatIOStreamCapability(AgentCompatCapabilityBinding{}), ErrAgentCompatCapabilityUnavailable)
|
||||
_, err = handler.ConsumeAgentCompatNATCapability(access)
|
||||
require.ErrorIs(t, err, ErrAgentCompatCapabilityUnavailable)
|
||||
require.ErrorIs(t, handler.PublishAgentCompatNATStream(AgentCompatNATPublishHandle{}, AgentCompatNATPublication{}), ErrAgentCompatCapabilityUnavailable)
|
||||
_, err = handler.WaitAgentCompatIOStreamCapability(context.Background(), access)
|
||||
require.True(t, errors.Is(err, ErrAgentCompatCapabilityUnavailable))
|
||||
require.NoError(t, handler.CancelAgentCompatIOStreamCapability(access))
|
||||
require.NoError(t, handler.UnregisterAgentCompatIOStreamCapability(access))
|
||||
}
|
||||
|
||||
func TestAgentCompatNATCapabilityForProfileDefaultBuildIsUnavailableAndNoOp(t *testing.T) {
|
||||
handler := NewNezhaHandler()
|
||||
access, handle, err := handler.ConsumeAgentCompatNATCapabilityForProfile("not-a-capability", 1, 2)
|
||||
|
||||
require.Equal(t, AgentCompatCapabilityAccess{}, access)
|
||||
require.Equal(t, AgentCompatNATPublishHandle{}, handle)
|
||||
require.ErrorIs(t, err, ErrAgentCompatCapabilityUnavailable)
|
||||
}
|
||||
|
||||
func TestAgentCompatNATAtomicStartDefaultBuildIsUnavailableAndStateless(t *testing.T) {
|
||||
handler := NewNezhaHandler()
|
||||
publicationOwned, err := handler.StartAgentCompatNATStream(AgentCompatNATPublishHandle{}, 0)
|
||||
|
||||
require.False(t, publicationOwned)
|
||||
require.ErrorIs(t, err, ErrAgentCompatCapabilityUnavailable)
|
||||
require.Equal(t, 0, handler.StreamCount())
|
||||
}
|
||||
|
||||
func TestAgentCompatNATLeaseDefaultBuildIsUnavailableAndStateless(t *testing.T) {
|
||||
handler := NewNezhaHandler()
|
||||
lease, err := handler.CreateAgentCompatNATStream(AgentCompatNATPublishHandle{}, "known")
|
||||
|
||||
require.Nil(t, lease)
|
||||
require.ErrorIs(t, err, ErrAgentCompatCapabilityUnavailable)
|
||||
require.NoError(t, handler.CloseAgentCompatNATStreamLease(nil))
|
||||
require.Equal(t, 0, handler.StreamCount())
|
||||
}
|
||||
Reference in New Issue
Block a user