sing-box/test/v2ray_api_test.go

61 lines
1.5 KiB
Go
Raw Normal View History

2022-10-26 19:20:34 +08:00
package main
2024-11-18 18:59:19 +08:00
/*
2022-10-26 19:20:34 +08:00
import (
"context"
"net/netip"
"testing"
C "github.com/sagernet/sing-box/constant"
"github.com/sagernet/sing-box/experimental/v2rayapi"
"github.com/sagernet/sing-box/option"
2024-11-18 18:59:19 +08:00
"github.com/sagernet/sing/common"
"github.com/sagernet/sing/common/json/badoption"
2022-10-26 19:20:34 +08:00
"github.com/stretchr/testify/require"
)
func TestV2RayAPI(t *testing.T) {
i := startInstance(t, option.Options{
2024-11-18 18:59:19 +08:00
Inbounds: []option.Inbound{
2022-10-26 19:20:34 +08:00
{
Type: C.TypeMixed,
Tag: "in",
2024-11-18 18:59:19 +08:00
Options: &option.HTTPMixedInboundOptions{
2022-10-26 19:20:34 +08:00
ListenOptions: option.ListenOptions{
2024-11-18 18:59:19 +08:00
Listen: common.Ptr(badoption.Addr(netip.IPv4Unspecified())),
2022-10-26 19:20:34 +08:00
ListenPort: clientPort,
},
},
},
},
2024-11-18 18:59:19 +08:00
Outbounds: []option.Outbound{
2022-10-26 19:20:34 +08:00
{
Type: C.TypeDirect,
Tag: "out",
},
},
Experimental: &option.ExperimentalOptions{
V2RayAPI: &option.V2RayAPIOptions{
Listen: "127.0.0.1:8080",
Stats: &option.V2RayStatsServiceOptions{
Enabled: true,
Inbounds: []string{"in"},
Outbounds: []string{"out"},
},
},
},
})
testSuit(t, clientPort, testPort)
statsService := i.Router().V2RayServer().StatsService()
require.NotNil(t, statsService)
response, err := statsService.(v2rayapi.StatsServiceServer).QueryStats(context.Background(), &v2rayapi.QueryStatsRequest{Regexp: true, Patterns: []string{".*"}})
require.NoError(t, err)
count := response.Stat[0].Value
require.Equal(t, len(response.Stat), 4)
for _, stat := range response.Stat {
require.Equal(t, count, stat.Value)
}
}
2024-11-18 18:59:19 +08:00
*/