>>> frp: Building community/frp 0.69.1-r0 (using abuild 3.18.0_rc1-r0) started Mon, 22 Jun 2026 19:16:46 +0000 >>> frp: Validating /home/buildozer/aports/community/frp/APKBUILD... >>> frp: Analyzing dependencies... >>> frp: Installing for build: build-base go (1/2) Installing go (1.26.3-r0) (2/2) Installing .makedepends-frp (20260622.191647) Executing busybox-1.38.0-r0.trigger OK: 506.9 MiB in 107 packages >>> frp: Cleaning up srcdir >>> frp: Cleaning up pkgdir >>> frp: Cleaning up tmpdir >>> frp: Fetching https://distfiles.alpinelinux.org/distfiles/edge/frp-0.69.1.tar.gz /var/cache/distfiles/edge/frp-0.69.1.tar.gz: OK /home/buildozer/aports/community/frp/enable-cgo.patch: OK /home/buildozer/aports/community/frp/frpc.initd: OK /home/buildozer/aports/community/frp/frpc.confd: OK /home/buildozer/aports/community/frp/frps.initd: OK /home/buildozer/aports/community/frp/frps.confd: OK >>> frp: Fetching https://distfiles.alpinelinux.org/distfiles/edge/frp-0.69.1.tar.gz /var/cache/distfiles/edge/frp-0.69.1.tar.gz: OK /home/buildozer/aports/community/frp/enable-cgo.patch: OK /home/buildozer/aports/community/frp/frpc.initd: OK /home/buildozer/aports/community/frp/frpc.confd: OK /home/buildozer/aports/community/frp/frps.initd: OK /home/buildozer/aports/community/frp/frps.confd: OK >>> frp: Unpacking /var/cache/distfiles/edge/frp-0.69.1.tar.gz... >>> frp: enable-cgo.patch patching file Makefile Hunk #1 succeeded at 38 (offset 3 lines). Hunk #2 succeeded at 41 (offset 3 lines). env go build -trimpath -ldflags "-s -w" -tags "frps,noweb" -o bin/frps ./cmd/frps env go build -trimpath -ldflags "-s -w" -tags "frpc,noweb" -o bin/frpc ./cmd/frpc go: downloading github.com/samber/lo v1.47.0 go: downloading k8s.io/apimachinery v0.28.8 go: downloading k8s.io/apimachinery v0.28.8 go: downloading github.com/rodaine/table v1.2.0 go: downloading github.com/spf13/pflag v1.0.5 go: downloading github.com/pelletier/go-toml/v2 v2.2.0 go: downloading github.com/spf13/cobra v1.8.0 go: downloading gopkg.in/ini.v1 v1.67.0 go: downloading github.com/fatedier/golib v0.7.0 go: downloading github.com/fatedier/golib v0.7.0 go: downloading github.com/spf13/cobra v1.8.0 go: downloading github.com/quic-go/quic-go v0.55.0 go: downloading github.com/samber/lo v1.47.0 go: downloading github.com/fatedier/yamux v0.0.0-20250825093530-d0154be01cd6 go: downloading github.com/prometheus/client_golang v1.19.1 go: downloading github.com/quic-go/quic-go v0.55.0 go: downloading k8s.io/utils v0.0.0-20230406110748-d93618cff8a2 go: downloading golang.zx2c4.com/wireguard v0.0.0-20231211153847-12269c276173 go: downloading github.com/fatedier/yamux v0.0.0-20250825093530-d0154be01cd6 go: downloading k8s.io/utils v0.0.0-20230406110748-d93618cff8a2 go: downloading github.com/pelletier/go-toml/v2 v2.2.0 go: downloading gopkg.in/ini.v1 v1.67.0 go: downloading golang.org/x/net v0.52.0 go: downloading github.com/coreos/go-oidc/v3 v3.14.1 go: downloading golang.org/x/oauth2 v0.28.0 go: downloading golang.org/x/sys v0.42.0 go: downloading github.com/vishvananda/netlink v1.3.0 go: downloading golang.org/x/oauth2 v0.28.0 go: downloading golang.org/x/sys v0.42.0 go: downloading github.com/gorilla/mux v1.8.1 go: downloading golang.org/x/time v0.10.0 go: downloading golang.org/x/time v0.10.0 go: downloading github.com/pires/go-proxyproto v0.7.0 go: downloading golang.org/x/crypto v0.49.0 go: downloading github.com/xtaci/kcp-go/v5 v5.6.13 go: downloading github.com/gorilla/mux v1.8.1 go: downloading github.com/pion/stun/v3 v3.1.1 go: downloading golang.org/x/net v0.52.0 go: downloading golang.org/x/sync v0.20.0 go: downloading github.com/songgao/water v0.0.0-20200317203138-2b4b6d7c09d8 go: downloading github.com/spf13/pflag v1.0.5 go: downloading github.com/vishvananda/netlink v1.3.0 go: downloading golang.zx2c4.com/wireguard v0.0.0-20231211153847-12269c276173 go: downloading github.com/coreos/go-oidc/v3 v3.14.1 go: downloading golang.org/x/crypto v0.49.0 go: downloading github.com/pion/stun/v3 v3.1.1 go: downloading golang.org/x/sync v0.20.0 go: downloading github.com/songgao/water v0.0.0-20200317203138-2b4b6d7c09d8 go: downloading github.com/pires/go-proxyproto v0.7.0 go: downloading github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 go: downloading github.com/xtaci/kcp-go/v5 v5.6.13 go: downloading golang.org/x/text v0.35.0 go: downloading golang.org/x/text v0.35.0 go: downloading github.com/golang/snappy v0.0.4 go: downloading github.com/Azure/go-ntlmssp v0.1.0 go: downloading github.com/pion/transport/v4 v4.0.1 go: downloading github.com/pion/dtls/v3 v3.0.10 go: downloading github.com/klauspost/reedsolomon v1.12.0 go: downloading github.com/tjfoc/gmsm v1.4.1 go: downloading github.com/templexxx/xorsimd v0.4.3 go: downloading github.com/pkg/errors v0.9.1 go: downloading github.com/go-jose/go-jose/v4 v4.0.5 go: downloading github.com/go-jose/go-jose/v4 v4.0.5 go: downloading github.com/prometheus/client_model v0.5.0 go: downloading google.golang.org/protobuf v1.36.5 go: downloading github.com/prometheus/common v0.48.0 go: downloading github.com/prometheus/procfs v0.12.0 go: downloading github.com/beorn7/perks v1.0.1 go: downloading github.com/cespare/xxhash/v2 v2.2.0 go: downloading github.com/pkg/errors v0.9.1 go: downloading github.com/tjfoc/gmsm v1.4.1 go: downloading github.com/templexxx/xorsimd v0.4.3 go: downloading github.com/pion/transport/v4 v4.0.1 go: downloading github.com/pion/dtls/v3 v3.0.10 go: downloading github.com/klauspost/reedsolomon v1.12.0 go: downloading github.com/Azure/go-ntlmssp v0.1.0 go: downloading github.com/golang/snappy v0.0.4 go: downloading github.com/vishvananda/netns v0.0.4 go: downloading github.com/vishvananda/netns v0.0.4 go: downloading github.com/templexxx/cpu v0.1.1 go: downloading sigs.k8s.io/yaml v1.3.0 go: downloading sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd go: downloading sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd go: downloading github.com/wlynxg/anet v0.0.5 go: downloading gopkg.in/yaml.v2 v2.4.0 go: downloading github.com/wlynxg/anet v0.0.5 go: downloading github.com/pion/logging v0.2.4 go: downloading github.com/klauspost/cpuid/v2 v2.2.6 go test -tags ",noweb" -v --cover ./assets/... github.com/fatedier/frp/assets coverage: 0.0% of statements go test -tags ",noweb" -v --cover ./cmd/... github.com/fatedier/frp/cmd/frpc coverage: 0.0% of statements github.com/fatedier/frp/cmd/frpc/sub coverage: 0.0% of statements github.com/fatedier/frp/cmd/frps coverage: 0.0% of statements go test -tags ",noweb" -v --cover ./client/... go: downloading github.com/stretchr/testify v1.11.1 go: downloading github.com/davecgh/go-spew v1.1.1 go: downloading github.com/pmezard/go-difflib v1.0.0 go: downloading gopkg.in/yaml.v3 v3.0.1 === RUN TestServiceConfigManagerCreateStoreProxyConflict --- PASS: TestServiceConfigManagerCreateStoreProxyConflict (0.05s) === RUN TestServiceConfigManagerCreateStoreProxyKeepsStoreOnReloadFailure --- PASS: TestServiceConfigManagerCreateStoreProxyKeepsStoreOnReloadFailure (0.02s) === RUN TestServiceConfigManagerCreateStoreProxyStoreDisabled --- PASS: TestServiceConfigManagerCreateStoreProxyStoreDisabled (0.00s) === RUN TestServiceConfigManagerCreateStoreProxyDoesNotPersistRuntimeDefaults 2026-06-22 19:17:16.707 [I] [client/config_manager.go:196] store: created proxy "raw-proxy" --- PASS: TestServiceConfigManagerCreateStoreProxyDoesNotPersistRuntimeDefaults (0.00s) === RUN TestControlSessionDialerDialV1 --- PASS: TestControlSessionDialerDialV1 (0.00s) === RUN TestControlSessionDialerDialV2 --- PASS: TestControlSessionDialerDialV2 (0.00s) === RUN TestControlSessionDialerDialLoginErrorClosesResources --- PASS: TestControlSessionDialerDialLoginErrorClosesResources (0.00s) === RUN TestControlSessionDialerDialSSHTunnelSkipsControlEncryption --- PASS: TestControlSessionDialerDialSSHTunnelSkipsControlEncryption (0.00s) === RUN TestRunStopsStartedComponentsOnInitialLoginFailure 2026-06-22 19:17:16.709 [I] [client/service.go:308] try to connect to server... 2026-06-22 19:17:16.709 [W] [client/service.go:319] connect to server error: login boom --- PASS: TestRunStopsStartedComponentsOnInitialLoginFailure (0.00s) 2026-06-22 19:17:16.709 [I] [client/service.go:250] admin server listen on 127.0.0.1:39815 === RUN TestNewServiceDoesNotLeakAdminListenerOnAuthBuildFailure --- PASS: TestNewServiceDoesNotLeakAdminListenerOnAuthBuildFailure (0.00s) === RUN TestUpdateConfigSourceRollsBackReloadCommonOnReplaceAllFailure --- PASS: TestUpdateConfigSourceRollsBackReloadCommonOnReplaceAllFailure (0.00s) === RUN TestUpdateConfigSourceKeepsReloadCommonOnReloadFailure --- PASS: TestUpdateConfigSourceKeepsReloadCommonOnReloadFailure (0.00s) === RUN TestReloadConfigFromSourcesDoesNotMutateStoreConfigs --- PASS: TestReloadConfigFromSourcesDoesNotMutateStoreConfigs (0.00s) PASS coverage: 30.4% of statements ok github.com/fatedier/frp/client 0.105s coverage: 30.4% of statements ? github.com/fatedier/frp/client/configmgmt [no test files] ? github.com/fatedier/frp/client/event [no test files] github.com/fatedier/frp/client/health coverage: 0.0% of statements === RUN TestBuildProxyStatusRespStoreSourceEnabled --- PASS: TestBuildProxyStatusRespStoreSourceEnabled (0.00s) === RUN TestReloadErrorMapping === RUN TestReloadErrorMapping/invalid_arg === RUN TestReloadErrorMapping/apply_fail --- PASS: TestReloadErrorMapping (0.00s) --- PASS: TestReloadErrorMapping/invalid_arg (0.00s) --- PASS: TestReloadErrorMapping/apply_fail (0.00s) === RUN TestStoreProxyErrorMapping === RUN TestStoreProxyErrorMapping/not_found === RUN TestStoreProxyErrorMapping/conflict === RUN TestStoreProxyErrorMapping/internal --- PASS: TestStoreProxyErrorMapping (0.00s) --- PASS: TestStoreProxyErrorMapping/not_found (0.00s) --- PASS: TestStoreProxyErrorMapping/conflict (0.00s) --- PASS: TestStoreProxyErrorMapping/internal (0.00s) === RUN TestStoreVisitorErrorMapping --- PASS: TestStoreVisitorErrorMapping (0.00s) === RUN TestCreateStoreProxyIgnoresUnknownFields --- PASS: TestCreateStoreProxyIgnoresUnknownFields (0.00s) === RUN TestCreateStoreVisitorIgnoresUnknownFields --- PASS: TestCreateStoreVisitorIgnoresUnknownFields (0.00s) === RUN TestCreateStoreProxyPluginUnknownFieldsAreIgnored --- PASS: TestCreateStoreProxyPluginUnknownFieldsAreIgnored (0.00s) === RUN TestCreateStoreVisitorPluginUnknownFieldsAreIgnored --- PASS: TestCreateStoreVisitorPluginUnknownFieldsAreIgnored (0.00s) === RUN TestUpdateStoreProxyRejectsMismatchedTypeBlock --- PASS: TestUpdateStoreProxyRejectsMismatchedTypeBlock (0.00s) === RUN TestUpdateStoreProxyRejectsNameMismatch --- PASS: TestUpdateStoreProxyRejectsNameMismatch (0.00s) === RUN TestListStoreProxiesReturnsSortedPayload --- PASS: TestListStoreProxiesReturnsSortedPayload (0.00s) === RUN TestUpdateStoreProxyReturnsTypedPayload --- PASS: TestUpdateStoreProxyReturnsTypedPayload (0.00s) === RUN TestGetProxyConfigFromManager --- PASS: TestGetProxyConfigFromManager (0.00s) === RUN TestGetProxyConfigNotFound --- PASS: TestGetProxyConfigNotFound (0.00s) === RUN TestGetVisitorConfigFromManager --- PASS: TestGetVisitorConfigFromManager (0.00s) === RUN TestGetVisitorConfigNotFound --- PASS: TestGetVisitorConfigNotFound (0.00s) PASS coverage: 45.2% of statements ok github.com/fatedier/frp/client/http 0.025s coverage: 45.2% of statements github.com/fatedier/frp/client/http/model coverage: 0.0% of statements === RUN TestReadNatHoleSidUsesSelectedWireProtocol === RUN TestReadNatHoleSidUsesSelectedWireProtocol/v2 === RUN TestReadNatHoleSidUsesSelectedWireProtocol/v1 === RUN TestReadNatHoleSidUsesSelectedWireProtocol/default --- PASS: TestReadNatHoleSidUsesSelectedWireProtocol (0.00s) --- PASS: TestReadNatHoleSidUsesSelectedWireProtocol/v2 (0.00s) --- PASS: TestReadNatHoleSidUsesSelectedWireProtocol/v1 (0.00s) --- PASS: TestReadNatHoleSidUsesSelectedWireProtocol/default (0.00s) PASS coverage: 2.3% of statements ok github.com/fatedier/frp/client/proxy 0.024s coverage: 2.3% of statements github.com/fatedier/frp/client/visitor coverage: 0.0% of statements go test -tags ",noweb" -v --cover ./server/... === RUN TestWriteWithDeadlineTimesOutAndClearsDeadline --- PASS: TestWriteWithDeadlineTimesOutAndClearsDeadline (0.05s) PASS coverage: 1.2% of statements ok github.com/fatedier/frp/server 0.095s coverage: 1.2% of statements github.com/fatedier/frp/server/controller coverage: 0.0% of statements === RUN TestBaseGroup_WorkerFanOut --- PASS: TestBaseGroup_WorkerFanOut (0.00s) === RUN TestBaseGroup_WorkerStopsOnListenerClose --- PASS: TestBaseGroup_WorkerStopsOnListenerClose (0.00s) === RUN TestBaseGroup_WorkerClosesConnOnClosedChannel --- PASS: TestBaseGroup_WorkerClosesConnOnClosedChannel (0.00s) === RUN TestBaseGroup_CloseLastListenerTriggersCleanup --- PASS: TestBaseGroup_CloseLastListenerTriggersCleanup (0.00s) === RUN TestBaseGroup_CloseOneOfTwoListeners --- PASS: TestBaseGroup_CloseOneOfTwoListeners (0.00s) === RUN TestListener_Accept --- PASS: TestListener_Accept (0.00s) === RUN TestListener_AcceptAfterChannelClose --- PASS: TestListener_AcceptAfterChannelClose (0.00s) === RUN TestListener_AcceptAfterListenerClose --- PASS: TestListener_AcceptAfterListenerClose (0.00s) === RUN TestListener_DoubleClose --- PASS: TestListener_DoubleClose (0.00s) === RUN TestListener_Addr --- PASS: TestListener_Addr (0.00s) === RUN TestGetOrCreate_New --- PASS: TestGetOrCreate_New (0.00s) === RUN TestGetOrCreate_Existing --- PASS: TestGetOrCreate_Existing (0.00s) === RUN TestGet_ExistingAndMissing --- PASS: TestGet_ExistingAndMissing (0.00s) === RUN TestIsCurrent --- PASS: TestIsCurrent (0.00s) === RUN TestRemoveIf === RUN TestRemoveIf/removes_when_fn_returns_true === RUN TestRemoveIf/keeps_when_fn_returns_false === RUN TestRemoveIf/noop_on_missing_key --- PASS: TestRemoveIf (0.00s) --- PASS: TestRemoveIf/removes_when_fn_returns_true (0.00s) --- PASS: TestRemoveIf/keeps_when_fn_returns_false (0.00s) --- PASS: TestRemoveIf/noop_on_missing_key (0.00s) === RUN TestConcurrentGetOrCreateAndRemoveIf --- PASS: TestConcurrentGetOrCreateAndRemoveIf (0.00s) PASS coverage: 23.6% of statements ok github.com/fatedier/frp/server/group 0.035s coverage: 23.6% of statements === RUN TestGetConfFromConfigurerKeepsPluginFields --- PASS: TestGetConfFromConfigurerKeepsPluginFields (0.00s) === RUN TestBuildClientInfoRespIncludesWireProtocol --- PASS: TestBuildClientInfoRespIncludesWireProtocol (0.00s) PASS coverage: 6.1% of statements ok github.com/fatedier/frp/server/http 0.035s coverage: 6.1% of statements ? github.com/fatedier/frp/server/http/model [no test files] github.com/fatedier/frp/server/metrics coverage: 0.0% of statements === RUN TestManagerUsesClockForPortTimestamps --- PASS: TestManagerUsesClockForPortTimestamps (0.00s) === RUN TestManagerCleanReservedPortsWorkerUsesClockTicker --- PASS: TestManagerCleanReservedPortsWorkerUsesClockTicker (0.00s) PASS coverage: 56.5% of statements ok github.com/fatedier/frp/server/ports 0.023s coverage: 56.5% of statements === RUN TestWorkConnStartWritesStartWorkConn --- PASS: TestWorkConnStartWritesStartWorkConn (0.00s) === RUN TestGetWorkConnFromPoolStartWorkConnUnchangedForUDPWireV2 --- PASS: TestGetWorkConnFromPoolStartWorkConnUnchangedForUDPWireV2 (0.00s) === RUN TestGetWorkConnFromPoolLeavesRawTCPPayloadUnframed --- PASS: TestGetWorkConnFromPoolLeavesRawTCPPayloadUnframed (0.00s) === RUN TestSUDPBridgeTranscodesProxyV1ToVisitorV2 --- PASS: TestSUDPBridgeTranscodesProxyV1ToVisitorV2 (0.00s) === RUN TestSUDPBridgeTranscodesVisitorV2ToProxyV1 --- PASS: TestSUDPBridgeTranscodesVisitorV2ToProxyV1 (0.00s) === RUN TestSUDPBridgeForwardsProxyPing --- PASS: TestSUDPBridgeForwardsProxyPing (0.00s) === RUN TestSUDPBridgeDropsVisitorPing --- PASS: TestSUDPBridgeDropsVisitorPing (0.00s) === RUN TestSUDPBridgeRejectsUnknownVisitorMessage --- PASS: TestSUDPBridgeRejectsUnknownVisitorMessage (0.00s) === RUN TestSUDPBridgeDetectsMixedWireProtocol --- PASS: TestSUDPBridgeDetectsMixedWireProtocol (0.00s) === RUN TestWriteNatHoleSidUsesWireV2MessageFrame --- PASS: TestWriteNatHoleSidUsesWireV2MessageFrame (0.00s) === RUN TestWriteNatHoleSidUsesLegacyCodecForWireV1AndDefault === RUN TestWriteNatHoleSidUsesLegacyCodecForWireV1AndDefault/default === RUN TestWriteNatHoleSidUsesLegacyCodecForWireV1AndDefault/v1 --- PASS: TestWriteNatHoleSidUsesLegacyCodecForWireV1AndDefault (0.00s) --- PASS: TestWriteNatHoleSidUsesLegacyCodecForWireV1AndDefault/default (0.00s) --- PASS: TestWriteNatHoleSidUsesLegacyCodecForWireV1AndDefault/v1 (0.00s) PASS coverage: 10.4% of statements ok github.com/fatedier/frp/server/proxy 0.035s coverage: 10.4% of statements === RUN TestClientRegistryRegisterStoresWireProtocol --- PASS: TestClientRegistryRegisterStoresWireProtocol (0.00s) === RUN TestClientRegistryUsesClockForTimestamps --- PASS: TestClientRegistryUsesClockForTimestamps (0.00s) PASS coverage: 68.7% of statements ok github.com/fatedier/frp/server/registry 0.029s coverage: 68.7% of statements === RUN TestManagerNewConnCarriesWireProtocol --- PASS: TestManagerNewConnCarriesWireProtocol (0.00s) PASS coverage: 57.6% of statements ok github.com/fatedier/frp/server/visitor 0.032s coverage: 57.6% of statements go test -tags ",noweb" -v --cover ./pkg/... === RUN TestPingWithEmptySubjectFromLoginFails --- PASS: TestPingWithEmptySubjectFromLoginFails (0.00s) === RUN TestPingAfterLoginWithNewSubjectSucceeds --- PASS: TestPingAfterLoginWithNewSubjectSucceeds (0.00s) === RUN TestPingAfterLoginWithDifferentSubjectFails --- PASS: TestPingAfterLoginWithDifferentSubjectFails (0.00s) === RUN TestOidcAuthProviderFallsBackWhenNoExpiry --- PASS: TestOidcAuthProviderFallsBackWhenNoExpiry (0.00s) === RUN TestOidcAuthProviderCachesToken --- PASS: TestOidcAuthProviderCachesToken (0.00s) === RUN TestOidcAuthProviderRetriesOnInitialFailure --- PASS: TestOidcAuthProviderRetriesOnInitialFailure (0.00s) === RUN TestNewOidcAuthSetterRejectsInvalidStaticConfig --- PASS: TestNewOidcAuthSetterRejectsInvalidStaticConfig (0.00s) PASS coverage: 29.3% of statements ok github.com/fatedier/frp/pkg/auth 0.014s coverage: 29.3% of statements github.com/fatedier/frp/pkg/auth/legacy coverage: 0.0% of statements === RUN TestLoadServerConfig === RUN TestLoadServerConfig/toml === RUN TestLoadServerConfig/yaml === RUN TestLoadServerConfig/json --- PASS: TestLoadServerConfig (0.00s) --- PASS: TestLoadServerConfig/toml (0.00s) --- PASS: TestLoadServerConfig/yaml (0.00s) --- PASS: TestLoadServerConfig/json (0.00s) === RUN TestLoadServerConfigStrictMode === RUN TestLoadServerConfigStrictMode/toml-strict-false === RUN TestLoadServerConfigStrictMode/yaml-strict-false === RUN TestLoadServerConfigStrictMode/json-strict-false === RUN TestLoadServerConfigStrictMode/toml-strict-true === RUN TestLoadServerConfigStrictMode/yaml-strict-true === RUN TestLoadServerConfigStrictMode/json-strict-true --- PASS: TestLoadServerConfigStrictMode (0.00s) --- PASS: TestLoadServerConfigStrictMode/toml-strict-false (0.00s) --- PASS: TestLoadServerConfigStrictMode/yaml-strict-false (0.00s) --- PASS: TestLoadServerConfigStrictMode/json-strict-false (0.00s) --- PASS: TestLoadServerConfigStrictMode/toml-strict-true (0.00s) --- PASS: TestLoadServerConfigStrictMode/yaml-strict-true (0.00s) --- PASS: TestLoadServerConfigStrictMode/json-strict-true (0.00s) === RUN TestRenderWithTemplate === RUN TestRenderWithTemplate/toml === RUN TestRenderWithTemplate/yaml === RUN TestRenderWithTemplate/json === RUN TestRenderWithTemplate/template_numeric === RUN TestRenderWithTemplate/template_string === RUN TestRenderWithTemplate/template_quote --- PASS: TestRenderWithTemplate (0.00s) --- PASS: TestRenderWithTemplate/toml (0.00s) --- PASS: TestRenderWithTemplate/yaml (0.00s) --- PASS: TestRenderWithTemplate/json (0.00s) --- PASS: TestRenderWithTemplate/template_numeric (0.00s) --- PASS: TestRenderWithTemplate/template_string (0.00s) --- PASS: TestRenderWithTemplate/template_quote (0.00s) === RUN TestCustomStructStrictMode --- PASS: TestCustomStructStrictMode (0.00s) === RUN TestLoadClientConfigStrictMode_UnknownPluginField --- PASS: TestLoadClientConfigStrictMode_UnknownPluginField (0.00s) === RUN TestYAMLMergeInStrictMode --- PASS: TestYAMLMergeInStrictMode (0.00s) === RUN TestOptimizedYAMLProcessing --- PASS: TestOptimizedYAMLProcessing (0.00s) === RUN TestFilterClientConfigurers_PreserveRawNamesAndNoMutation --- PASS: TestFilterClientConfigurers_PreserveRawNamesAndNoMutation (0.00s) === RUN TestCompleteProxyConfigurers_PreserveRawNames --- PASS: TestCompleteProxyConfigurers_PreserveRawNames (0.00s) === RUN TestCompleteVisitorConfigurers_PreserveRawNames --- PASS: TestCompleteVisitorConfigurers_PreserveRawNames (0.00s) === RUN TestCompleteProxyConfigurers_Idempotent --- PASS: TestCompleteProxyConfigurers_Idempotent (0.00s) === RUN TestCompleteVisitorConfigurers_Idempotent --- PASS: TestCompleteVisitorConfigurers_Idempotent (0.00s) === RUN TestFilterClientConfigurers_FilterByStartAndEnabled --- PASS: TestFilterClientConfigurers_FilterByStartAndEnabled (0.00s) === RUN TestYAMLEdgeCases --- PASS: TestYAMLEdgeCases (0.00s) === RUN TestTOMLSyntaxErrorWithPosition --- PASS: TestTOMLSyntaxErrorWithPosition (0.00s) === RUN TestTOMLTypeMismatchErrorWithFieldInfo --- PASS: TestTOMLTypeMismatchErrorWithFieldInfo (0.00s) === RUN TestFindFieldLineInContent === RUN TestFindFieldLineInContent/serverAddr === RUN TestFindFieldLineInContent/serverPort === RUN TestFindFieldLineInContent/name === RUN TestFindFieldLineInContent/type === RUN TestFindFieldLineInContent/remotePort === RUN TestFindFieldLineInContent/nonexistent --- PASS: TestFindFieldLineInContent (0.00s) --- PASS: TestFindFieldLineInContent/serverAddr (0.00s) --- PASS: TestFindFieldLineInContent/serverPort (0.00s) --- PASS: TestFindFieldLineInContent/name (0.00s) --- PASS: TestFindFieldLineInContent/type (0.00s) --- PASS: TestFindFieldLineInContent/remotePort (0.00s) --- PASS: TestFindFieldLineInContent/nonexistent (0.00s) === RUN TestFormatDetection === RUN TestFormatDetection/config.toml === RUN TestFormatDetection/config.TOML === RUN TestFormatDetection/config.yaml === RUN TestFormatDetection/config.yml === RUN TestFormatDetection/config.json === RUN TestFormatDetection/config.ini === RUN TestFormatDetection/config --- PASS: TestFormatDetection (0.00s) --- PASS: TestFormatDetection/config.toml (0.00s) --- PASS: TestFormatDetection/config.TOML (0.00s) --- PASS: TestFormatDetection/config.yaml (0.00s) --- PASS: TestFormatDetection/config.yml (0.00s) --- PASS: TestFormatDetection/config.json (0.00s) --- PASS: TestFormatDetection/config.ini (0.00s) --- PASS: TestFormatDetection/config (0.00s) === RUN TestValidTOMLStillWorks --- PASS: TestValidTOMLStillWorks (0.00s) PASS coverage: 27.7% of statements ok github.com/fatedier/frp/pkg/config 0.069s coverage: 27.7% of statements github.com/fatedier/frp/pkg/config/legacy coverage: 0.0% of statements === RUN TestNewAggregator_CreatesConfigSourceWhenNil --- PASS: TestNewAggregator_CreatesConfigSourceWhenNil (0.00s) === RUN TestNewAggregator_WithoutStore --- PASS: TestNewAggregator_WithoutStore (0.00s) === RUN TestNewAggregator_WithStore --- PASS: TestNewAggregator_WithStore (0.00s) === RUN TestAggregator_SetStoreSource_Overwrite --- PASS: TestAggregator_SetStoreSource_Overwrite (0.00s) === RUN TestAggregator_MergeBySourceOrder --- PASS: TestAggregator_MergeBySourceOrder (0.02s) === RUN TestAggregator_DisabledEntryIsSourceLocalFilter --- PASS: TestAggregator_DisabledEntryIsSourceLocalFilter (0.00s) === RUN TestAggregator_VisitorMerge --- PASS: TestAggregator_VisitorMerge (0.00s) === RUN TestAggregator_Load_ReturnsSortedByName --- PASS: TestAggregator_Load_ReturnsSortedByName (0.00s) === RUN TestAggregator_Load_ReturnsDefensiveCopies --- PASS: TestAggregator_Load_ReturnsDefensiveCopies (0.00s) === RUN TestBaseSourceLoadReturnsClonedConfigurers --- PASS: TestBaseSourceLoadReturnsClonedConfigurers (0.00s) === RUN TestNewConfigSource --- PASS: TestNewConfigSource (0.00s) === RUN TestConfigSource_ReplaceAll --- PASS: TestConfigSource_ReplaceAll (0.00s) === RUN TestConfigSource_Load --- PASS: TestConfigSource_Load (0.00s) === RUN TestConfigSource_Load_FiltersDisabled --- PASS: TestConfigSource_Load_FiltersDisabled (0.00s) === RUN TestConfigSource_ReplaceAll_DoesNotApplyRuntimeDefaults --- PASS: TestConfigSource_ReplaceAll_DoesNotApplyRuntimeDefaults (0.00s) === RUN TestStoreSource_AddProxyAndVisitor_DoesNotApplyRuntimeDefaults --- PASS: TestStoreSource_AddProxyAndVisitor_DoesNotApplyRuntimeDefaults (0.00s) === RUN TestStoreSource_UpdateAndRemoveProxyAndVisitor --- PASS: TestStoreSource_UpdateAndRemoveProxyAndVisitor (0.01s) === RUN TestStoreSource_MutationRollsBackOnPersistFailure --- PASS: TestStoreSource_MutationRollsBackOnPersistFailure (0.00s) === RUN TestStoreSource_LoadFromFile_DoesNotApplyRuntimeDefaults --- PASS: TestStoreSource_LoadFromFile_DoesNotApplyRuntimeDefaults (0.00s) === RUN TestStoreSource_LoadFromFile_UnknownFieldsAreIgnored --- PASS: TestStoreSource_LoadFromFile_UnknownFieldsAreIgnored (0.00s) PASS coverage: 82.0% of statements ok github.com/fatedier/frp/pkg/config/source 0.105s coverage: 82.0% of statements === RUN TestBandwidthQuantity --- PASS: TestBandwidthQuantity (0.00s) === RUN TestBandwidthQuantity_MB --- PASS: TestBandwidthQuantity_MB (0.00s) === RUN TestBandwidthQuantity_InvalidUnit --- PASS: TestBandwidthQuantity_InvalidUnit (0.00s) === RUN TestBandwidthQuantity_InvalidNumber --- PASS: TestBandwidthQuantity_InvalidNumber (0.00s) === RUN TestPortsRangeSlice2String --- PASS: TestPortsRangeSlice2String (0.00s) === RUN TestNewPortsRangeSliceFromString --- PASS: TestNewPortsRangeSliceFromString (0.00s) PASS coverage: 69.7% of statements ok github.com/fatedier/frp/pkg/config/types 0.050s coverage: 69.7% of statements === RUN TestClientConfigComplete --- PASS: TestClientConfigComplete (0.00s) === RUN TestAuthClientConfig_Complete --- PASS: TestAuthClientConfig_Complete (0.00s) === RUN TestProxyCloneDeepCopy --- PASS: TestProxyCloneDeepCopy (0.00s) === RUN TestVisitorCloneDeepCopy --- PASS: TestVisitorCloneDeepCopy (0.00s) === RUN TestDecodeProxyConfigurerJSON_StrictPluginUnknownFields --- PASS: TestDecodeProxyConfigurerJSON_StrictPluginUnknownFields (0.00s) === RUN TestDecodeVisitorConfigurerJSON_StrictPluginUnknownFields --- PASS: TestDecodeVisitorConfigurerJSON_StrictPluginUnknownFields (0.00s) === RUN TestDecodeClientConfigJSON_StrictUnknownProxyField --- PASS: TestDecodeClientConfigJSON_StrictUnknownProxyField (0.00s) === RUN TestUnmarshalTypedProxyConfig --- PASS: TestUnmarshalTypedProxyConfig (0.00s) === RUN TestServerConfigComplete --- PASS: TestServerConfigComplete (0.00s) === RUN TestAuthServerConfig_Complete --- PASS: TestAuthServerConfig_Complete (0.00s) === RUN TestValueSource_Validate === RUN TestValueSource_Validate/nil_valueSource === RUN TestValueSource_Validate/unsupported_type === RUN TestValueSource_Validate/file_type_without_file_config === RUN TestValueSource_Validate/valid_file_type_with_absolute_path === RUN TestValueSource_Validate/valid_file_type_with_relative_path --- PASS: TestValueSource_Validate (0.00s) --- PASS: TestValueSource_Validate/nil_valueSource (0.00s) --- PASS: TestValueSource_Validate/unsupported_type (0.00s) --- PASS: TestValueSource_Validate/file_type_without_file_config (0.00s) --- PASS: TestValueSource_Validate/valid_file_type_with_absolute_path (0.00s) --- PASS: TestValueSource_Validate/valid_file_type_with_relative_path (0.00s) === RUN TestFileSource_Validate === RUN TestFileSource_Validate/nil_fileSource === RUN TestFileSource_Validate/empty_path === RUN TestFileSource_Validate/relative_path_(allowed) === RUN TestFileSource_Validate/absolute_path --- PASS: TestFileSource_Validate (0.00s) --- PASS: TestFileSource_Validate/nil_fileSource (0.00s) --- PASS: TestFileSource_Validate/empty_path (0.00s) --- PASS: TestFileSource_Validate/relative_path_(allowed) (0.00s) --- PASS: TestFileSource_Validate/absolute_path (0.00s) === RUN TestFileSource_Resolve === RUN TestFileSource_Resolve/valid_file_path === RUN TestFileSource_Resolve/non-existent_file === RUN TestFileSource_Resolve/path_traversal_attempt_(should_fail_validation) --- PASS: TestFileSource_Resolve (0.00s) --- PASS: TestFileSource_Resolve/valid_file_path (0.00s) --- PASS: TestFileSource_Resolve/non-existent_file (0.00s) --- PASS: TestFileSource_Resolve/path_traversal_attempt_(should_fail_validation) (0.00s) === RUN TestValueSource_Resolve === RUN TestValueSource_Resolve/valid_file_type === RUN TestValueSource_Resolve/unsupported_type === RUN TestValueSource_Resolve/file_type_with_path_traversal --- PASS: TestValueSource_Resolve (0.00s) --- PASS: TestValueSource_Resolve/valid_file_type (0.00s) --- PASS: TestValueSource_Resolve/unsupported_type (0.00s) --- PASS: TestValueSource_Resolve/file_type_with_path_traversal (0.00s) PASS coverage: 46.6% of statements ok github.com/fatedier/frp/pkg/config/v1 0.056s coverage: 46.6% of statements === RUN TestValidateAuthTokenSource === RUN TestValidateAuthTokenSource/empty_token_config === RUN TestValidateAuthTokenSource/valid_file_tokenSource === RUN TestValidateAuthTokenSource/literal_token_without_tokenSource === RUN TestValidateAuthTokenSource/literal_token_conflicts_with_file_tokenSource === RUN TestValidateAuthTokenSource/exec_tokenSource_requires_unsafe_feature === RUN TestValidateAuthTokenSource/exec_tokenSource_with_unsafe_feature_allowed === RUN TestValidateAuthTokenSource/literal_token_conflicts_with_exec_tokenSource_and_unsafe_feature_disabled === RUN TestValidateAuthTokenSource/literal_token_conflicts_with_exec_tokenSource_and_unsafe_feature_allowed === RUN TestValidateAuthTokenSource/invalid_file_tokenSource_is_wrapped === RUN TestValidateAuthTokenSource/unsupported_tokenSource_type_is_wrapped --- PASS: TestValidateAuthTokenSource (0.00s) --- PASS: TestValidateAuthTokenSource/empty_token_config (0.00s) --- PASS: TestValidateAuthTokenSource/valid_file_tokenSource (0.00s) --- PASS: TestValidateAuthTokenSource/literal_token_without_tokenSource (0.00s) --- PASS: TestValidateAuthTokenSource/literal_token_conflicts_with_file_tokenSource (0.00s) --- PASS: TestValidateAuthTokenSource/exec_tokenSource_requires_unsafe_feature (0.00s) --- PASS: TestValidateAuthTokenSource/exec_tokenSource_with_unsafe_feature_allowed (0.00s) --- PASS: TestValidateAuthTokenSource/literal_token_conflicts_with_exec_tokenSource_and_unsafe_feature_disabled (0.00s) --- PASS: TestValidateAuthTokenSource/literal_token_conflicts_with_exec_tokenSource_and_unsafe_feature_allowed (0.00s) --- PASS: TestValidateAuthTokenSource/invalid_file_tokenSource_is_wrapped (0.00s) --- PASS: TestValidateAuthTokenSource/unsupported_tokenSource_type_is_wrapped (0.00s) === RUN TestValidateClientAuthTokenSource === RUN TestValidateClientAuthTokenSource/empty_token_config === RUN TestValidateClientAuthTokenSource/valid_file_tokenSource === RUN TestValidateClientAuthTokenSource/literal_token_without_tokenSource === RUN TestValidateClientAuthTokenSource/literal_token_conflicts_with_file_tokenSource === RUN TestValidateClientAuthTokenSource/exec_tokenSource_requires_unsafe_feature === RUN TestValidateClientAuthTokenSource/exec_tokenSource_with_unsafe_feature_allowed === RUN TestValidateClientAuthTokenSource/literal_token_conflicts_with_exec_tokenSource_and_unsafe_feature_disabled === RUN TestValidateClientAuthTokenSource/literal_token_conflicts_with_exec_tokenSource_and_unsafe_feature_allowed === RUN TestValidateClientAuthTokenSource/invalid_file_tokenSource_is_wrapped === RUN TestValidateClientAuthTokenSource/unsupported_tokenSource_type_is_wrapped --- PASS: TestValidateClientAuthTokenSource (0.00s) --- PASS: TestValidateClientAuthTokenSource/empty_token_config (0.00s) --- PASS: TestValidateClientAuthTokenSource/valid_file_tokenSource (0.00s) --- PASS: TestValidateClientAuthTokenSource/literal_token_without_tokenSource (0.00s) --- PASS: TestValidateClientAuthTokenSource/literal_token_conflicts_with_file_tokenSource (0.00s) --- PASS: TestValidateClientAuthTokenSource/exec_tokenSource_requires_unsafe_feature (0.00s) --- PASS: TestValidateClientAuthTokenSource/exec_tokenSource_with_unsafe_feature_allowed (0.00s) --- PASS: TestValidateClientAuthTokenSource/literal_token_conflicts_with_exec_tokenSource_and_unsafe_feature_disabled (0.00s) --- PASS: TestValidateClientAuthTokenSource/literal_token_conflicts_with_exec_tokenSource_and_unsafe_feature_allowed (0.00s) --- PASS: TestValidateClientAuthTokenSource/invalid_file_tokenSource_is_wrapped (0.00s) --- PASS: TestValidateClientAuthTokenSource/unsupported_tokenSource_type_is_wrapped (0.00s) === RUN TestValidateServerAuthTokenSource === RUN TestValidateServerAuthTokenSource/empty_token_config === RUN TestValidateServerAuthTokenSource/valid_file_tokenSource === RUN TestValidateServerAuthTokenSource/literal_token_without_tokenSource === RUN TestValidateServerAuthTokenSource/literal_token_conflicts_with_file_tokenSource === RUN TestValidateServerAuthTokenSource/exec_tokenSource_requires_unsafe_feature === RUN TestValidateServerAuthTokenSource/exec_tokenSource_with_unsafe_feature_allowed === RUN TestValidateServerAuthTokenSource/literal_token_conflicts_with_exec_tokenSource_and_unsafe_feature_disabled === RUN TestValidateServerAuthTokenSource/literal_token_conflicts_with_exec_tokenSource_and_unsafe_feature_allowed === RUN TestValidateServerAuthTokenSource/invalid_file_tokenSource_is_wrapped === RUN TestValidateServerAuthTokenSource/unsupported_tokenSource_type_is_wrapped --- PASS: TestValidateServerAuthTokenSource (0.00s) --- PASS: TestValidateServerAuthTokenSource/empty_token_config (0.00s) --- PASS: TestValidateServerAuthTokenSource/valid_file_tokenSource (0.00s) --- PASS: TestValidateServerAuthTokenSource/literal_token_without_tokenSource (0.00s) --- PASS: TestValidateServerAuthTokenSource/literal_token_conflicts_with_file_tokenSource (0.00s) --- PASS: TestValidateServerAuthTokenSource/exec_tokenSource_requires_unsafe_feature (0.00s) --- PASS: TestValidateServerAuthTokenSource/exec_tokenSource_with_unsafe_feature_allowed (0.00s) --- PASS: TestValidateServerAuthTokenSource/literal_token_conflicts_with_exec_tokenSource_and_unsafe_feature_disabled (0.00s) --- PASS: TestValidateServerAuthTokenSource/literal_token_conflicts_with_exec_tokenSource_and_unsafe_feature_allowed (0.00s) --- PASS: TestValidateServerAuthTokenSource/invalid_file_tokenSource_is_wrapped (0.00s) --- PASS: TestValidateServerAuthTokenSource/unsupported_tokenSource_type_is_wrapped (0.00s) === RUN TestValidateOIDCClientCredentialsConfig === RUN TestValidateOIDCClientCredentialsConfig/valid === RUN TestValidateOIDCClientCredentialsConfig/invalid_token_endpoint_url === RUN TestValidateOIDCClientCredentialsConfig/missing_client_id === RUN TestValidateOIDCClientCredentialsConfig/scope_endpoint_param_is_not_allowed === RUN TestValidateOIDCClientCredentialsConfig/audience_conflict --- PASS: TestValidateOIDCClientCredentialsConfig (0.00s) --- PASS: TestValidateOIDCClientCredentialsConfig/valid (0.00s) --- PASS: TestValidateOIDCClientCredentialsConfig/invalid_token_endpoint_url (0.00s) --- PASS: TestValidateOIDCClientCredentialsConfig/missing_client_id (0.00s) --- PASS: TestValidateOIDCClientCredentialsConfig/scope_endpoint_param_is_not_allowed (0.00s) --- PASS: TestValidateOIDCClientCredentialsConfig/audience_conflict (0.00s) PASS coverage: 31.3% of statements ok github.com/fatedier/frp/pkg/config/v1/validation 0.062s coverage: 31.3% of statements ? github.com/fatedier/frp/pkg/errors [no test files] ? github.com/fatedier/frp/pkg/metrics [no test files] github.com/fatedier/frp/pkg/metrics/aggregate coverage: 0.0% of statements === RUN TestServerMetricsUsesClockForProxyTimestamps --- PASS: TestServerMetricsUsesClockForProxyTimestamps (0.00s) === RUN TestServerMetricsClearUselessInfoUsesClock --- PASS: TestServerMetricsClearUselessInfoUsesClock (0.00s) === RUN TestServerMetricsRunUsesClockTicker --- PASS: TestServerMetricsRunUsesClockTicker (0.00s) PASS coverage: 40.4% of statements ok github.com/fatedier/frp/pkg/metrics/mem 0.053s coverage: 40.4% of statements github.com/fatedier/frp/pkg/metrics/prometheus coverage: 0.0% of statements === RUN TestConnReadWriteMsg === RUN TestConnReadWriteMsg/v1 === RUN TestConnReadWriteMsg/v2 --- PASS: TestConnReadWriteMsg (0.00s) --- PASS: TestConnReadWriteMsg/v1 (0.00s) --- PASS: TestConnReadWriteMsg/v2 (0.00s) === RUN TestV1MessageTypeIDsAreStable --- PASS: TestV1MessageTypeIDsAreStable (0.00s) === RUN TestMessageTypeMapIsCompleteAndUnique --- PASS: TestMessageTypeMapIsCompleteAndUnique (0.00s) === RUN TestV2ReadWriterRoundTrip --- PASS: TestV2ReadWriterRoundTrip (0.00s) === RUN TestNewReadWriter --- PASS: TestNewReadWriter (0.00s) === RUN TestNewReadWriterEncoding --- PASS: TestNewReadWriterEncoding (0.00s) === RUN TestV2MessageTypeIDsAreStable --- PASS: TestV2MessageTypeIDsAreStable (0.00s) === RUN TestV2MessageFrameEncoding --- PASS: TestV2MessageFrameEncoding (0.00s) === RUN TestDecodeV2MessageFrameInto --- PASS: TestDecodeV2MessageFrameInto (0.00s) === RUN TestDecodeV2MessageFrameRejectsInvalidFrame --- PASS: TestDecodeV2MessageFrameRejectsInvalidFrame (0.00s) === RUN TestDecodeV2MessageFrameIntoRejectsWrongTarget --- PASS: TestDecodeV2MessageFrameIntoRejectsWrongTarget (0.00s) === RUN TestEncodeV2MessageFrameRejectsUnknownMessage --- PASS: TestEncodeV2MessageFrameRejectsUnknownMessage (0.00s) PASS coverage: 61.3% of statements ok github.com/fatedier/frp/pkg/msg 0.052s coverage: 61.3% of statements === RUN TestAddUserPrefix --- PASS: TestAddUserPrefix (0.00s) === RUN TestStripUserPrefix --- PASS: TestStripUserPrefix (0.00s) === RUN TestBuildTargetServerProxyName --- PASS: TestBuildTargetServerProxyName (0.00s) PASS coverage: 100.0% of statements ok github.com/fatedier/frp/pkg/naming 0.049s coverage: 100.0% of statements === RUN TestAnalyzerUsesClockForRecordTimestamps --- PASS: TestAnalyzerUsesClockForRecordTimestamps (0.00s) PASS coverage: 12.1% of statements ok github.com/fatedier/frp/pkg/nathole 0.054s coverage: 12.1% of statements === RUN TestHTTPProxyHandleFragmentedConnectMethod --- PASS: TestHTTPProxyHandleFragmentedConnectMethod (0.00s) PASS coverage: 11.3% of statements ok github.com/fatedier/frp/pkg/plugin/client 0.064s coverage: 11.3% of statements github.com/fatedier/frp/pkg/plugin/client/internal/httpsserver coverage: 0.0% of statements === RUN TestManagerMutableContentAcrossOps === RUN TestManagerMutableContentAcrossOps/login === RUN TestManagerMutableContentAcrossOps/new_proxy === RUN TestManagerMutableContentAcrossOps/ping === RUN TestManagerMutableContentAcrossOps/new_work_conn === RUN TestManagerMutableContentAcrossOps/new_user_conn --- PASS: TestManagerMutableContentAcrossOps (0.00s) --- PASS: TestManagerMutableContentAcrossOps/login (0.00s) --- PASS: TestManagerMutableContentAcrossOps/new_proxy (0.00s) --- PASS: TestManagerMutableContentAcrossOps/ping (0.00s) --- PASS: TestManagerMutableContentAcrossOps/new_work_conn (0.00s) --- PASS: TestManagerMutableContentAcrossOps/new_user_conn (0.00s) === RUN TestManagerMutableContentRejectStopsChain --- PASS: TestManagerMutableContentRejectStopsChain (0.00s) === RUN TestManagerMutableContentPluginErrorLogLevel === RUN TestManagerMutableContentPluginErrorLogLevel/default_warning === RUN TestManagerMutableContentPluginErrorLogLevel/new_user_conn_info --- PASS: TestManagerMutableContentPluginErrorLogLevel (0.00s) --- PASS: TestManagerMutableContentPluginErrorLogLevel/default_warning (0.00s) --- PASS: TestManagerMutableContentPluginErrorLogLevel/new_user_conn_info (0.00s) === RUN TestManagerCloseProxyAggregatesErrors --- PASS: TestManagerCloseProxyAggregatesErrors (0.00s) PASS coverage: 55.3% of statements ok github.com/fatedier/frp/pkg/plugin/server 0.055s coverage: 55.3% of statements github.com/fatedier/frp/pkg/plugin/visitor coverage: 0.0% of statements github.com/fatedier/frp/pkg/policy/featuregate coverage: 0.0% of statements github.com/fatedier/frp/pkg/policy/security coverage: 0.0% of statements === RUN TestUdpPacket --- PASS: TestUdpPacket (0.00s) PASS coverage: 6.2% of statements ok github.com/fatedier/frp/pkg/proto/udp 0.052s coverage: 6.2% of statements === RUN TestFrameRoundTrip --- PASS: TestFrameRoundTrip (0.00s) === RUN TestReadFrameRejectsUnsupportedFlags --- PASS: TestReadFrameRejectsUnsupportedFlags (0.00s) === RUN TestReadFrameRejectsOversizedPayload --- PASS: TestReadFrameRejectsOversizedPayload (0.00s) === RUN TestCheckMagicV2ConsumesMagic --- PASS: TestCheckMagicV2ConsumesMagic (0.00s) === RUN TestWriteMagicIfV2 --- PASS: TestWriteMagicIfV2 (0.00s) === RUN TestCheckMagicV1PreservesReadBytes --- PASS: TestCheckMagicV1PreservesReadBytes (0.00s) === RUN TestValidateClientHello --- PASS: TestValidateClientHello (0.00s) === RUN TestValidateClientHelloRejectsInvalidCrypto --- PASS: TestValidateClientHelloRejectsInvalidCrypto (0.00s) === RUN TestPreferredAEADAlgorithms --- PASS: TestPreferredAEADAlgorithms (0.00s) === RUN TestNewServerHelloSelectsFirstSupportedAEADAlgorithm --- PASS: TestNewServerHelloSelectsFirstSupportedAEADAlgorithm (0.00s) === RUN TestNewClientCryptoContextValidatesServerHello --- PASS: TestNewClientCryptoContextValidatesServerHello (0.00s) === RUN TestNewCryptoContextBindsFullClientHelloPayload --- PASS: TestNewCryptoContextBindsFullClientHelloPayload (0.00s) === RUN TestNewClientCryptoContextRejectsUnknownServerSelection --- PASS: TestNewClientCryptoContextRejectsUnknownServerSelection (0.00s) === RUN TestNewClientCryptoContextRejectsUnadvertisedServerSelection --- PASS: TestNewClientCryptoContextRejectsUnadvertisedServerSelection (0.00s) PASS coverage: 80.6% of statements ok github.com/fatedier/frp/pkg/proto/wire 0.053s coverage: 80.6% of statements github.com/fatedier/frp/pkg/sdk/client coverage: 0.0% of statements github.com/fatedier/frp/pkg/ssh coverage: 0.0% of statements github.com/fatedier/frp/pkg/transport coverage: 0.0% of statements github.com/fatedier/frp/pkg/util/http coverage: 0.0% of statements github.com/fatedier/frp/pkg/util/jsonx coverage: 0.0% of statements github.com/fatedier/frp/pkg/util/limit coverage: 0.0% of statements github.com/fatedier/frp/pkg/util/log coverage: 0.0% of statements === RUN TestCounter --- PASS: TestCounter (0.00s) === RUN TestDateCounter --- PASS: TestDateCounter (0.00s) === RUN TestDateCounterRotate === RUN TestDateCounterRotate/same_day === RUN TestDateCounterRotate/clock_skew === RUN TestDateCounterRotate/one_day === RUN TestDateCounterRotate/two_days === RUN TestDateCounterRotate/all_reserved_days_elapsed --- PASS: TestDateCounterRotate (0.00s) --- PASS: TestDateCounterRotate/same_day (0.00s) --- PASS: TestDateCounterRotate/clock_skew (0.00s) --- PASS: TestDateCounterRotate/one_day (0.00s) --- PASS: TestDateCounterRotate/two_days (0.00s) --- PASS: TestDateCounterRotate/all_reserved_days_elapsed (0.00s) === RUN TestDateCounterGetLastDaysCountReturnsCopy --- PASS: TestDateCounterGetLastDaysCountReturnsCopy (0.00s) === RUN TestDateCounterClear --- PASS: TestDateCounterClear (0.00s) === RUN TestDateCounterConcurrentAccess --- PASS: TestDateCounterConcurrentAccess (0.00s) PASS coverage: 94.6% of statements ok github.com/fatedier/frp/pkg/util/metric 0.041s coverage: 94.6% of statements === RUN TestNewAEADCryptoReadWriterRoundTrip --- PASS: TestNewAEADCryptoReadWriterRoundTrip (0.00s) === RUN TestNewAEADCryptoReadWriterRejectsDifferentTranscript --- PASS: TestNewAEADCryptoReadWriterRejectsDifferentTranscript (0.00s) === RUN TestDeriveAEADControlKeysUsesDistinctDirections --- PASS: TestDeriveAEADControlKeysUsesDistinctDirections (0.00s) === RUN TestBuildProxyProtocolHeader --- PASS: TestBuildProxyProtocolHeader (0.00s) === RUN TestBuildProxyProtocolHeaderStruct --- PASS: TestBuildProxyProtocolHeaderStruct (0.00s) PASS coverage: 9.2% of statements ok github.com/fatedier/frp/pkg/util/net 0.039s coverage: 9.2% of statements github.com/fatedier/frp/pkg/util/system github.com/fatedier/frp/pkg/util/tcpmux coverage: 0.0% of statements === RUN TestRandId util_test.go:13: da76c75a7bd2bc7e --- PASS: TestRandId (0.00s) === RUN TestGetAuthKey --- PASS: TestGetAuthKey (0.00s) === RUN TestParseRangeNumbers --- PASS: TestParseRangeNumbers (0.00s) === RUN TestClonePtr --- PASS: TestClonePtr (0.00s) PASS coverage: 53.7% of statements ok github.com/fatedier/frp/pkg/util/util 0.035s coverage: 53.7% of statements github.com/fatedier/frp/pkg/util/version coverage: 0.0% of statements === RUN TestCheckRouteAuthByRequest === RUN TestCheckRouteAuthByRequest/accepts_nil_route_config === RUN TestCheckRouteAuthByRequest/accepts_route_without_credentials === RUN TestCheckRouteAuthByRequest/accepts_authorization_header === RUN TestCheckRouteAuthByRequest/accepts_proxy_authorization_header === RUN TestCheckRouteAuthByRequest/rejects_authorization_fallback_for_proxy_request === RUN TestCheckRouteAuthByRequest/rejects_wrong_proxy_authorization_even_when_authorization_matches === RUN TestCheckRouteAuthByRequest/rejects_when_neither_header_matches === RUN TestCheckRouteAuthByRequest/rejects_proxy_authorization_on_direct_request --- PASS: TestCheckRouteAuthByRequest (0.00s) --- PASS: TestCheckRouteAuthByRequest/accepts_nil_route_config (0.00s) --- PASS: TestCheckRouteAuthByRequest/accepts_route_without_credentials (0.00s) --- PASS: TestCheckRouteAuthByRequest/accepts_authorization_header (0.00s) --- PASS: TestCheckRouteAuthByRequest/accepts_proxy_authorization_header (0.00s) --- PASS: TestCheckRouteAuthByRequest/rejects_authorization_fallback_for_proxy_request (0.00s) --- PASS: TestCheckRouteAuthByRequest/rejects_wrong_proxy_authorization_even_when_authorization_matches (0.00s) --- PASS: TestCheckRouteAuthByRequest/rejects_when_neither_header_matches (0.00s) --- PASS: TestCheckRouteAuthByRequest/rejects_proxy_authorization_on_direct_request (0.00s) === RUN TestGetRequestRouteUser === RUN TestGetRequestRouteUser/proxy_request_uses_proxy_authorization_username === RUN TestGetRequestRouteUser/connect_request_keeps_proxy_authorization_routing === RUN TestGetRequestRouteUser/direct_request_uses_authorization_username === RUN TestGetRequestRouteUser/proxy_request_does_not_fall_back_when_proxy_authorization_is_invalid --- PASS: TestGetRequestRouteUser (0.00s) --- PASS: TestGetRequestRouteUser/proxy_request_uses_proxy_authorization_username (0.00s) --- PASS: TestGetRequestRouteUser/connect_request_keeps_proxy_authorization_routing (0.00s) --- PASS: TestGetRequestRouteUser/direct_request_uses_authorization_username (0.00s) --- PASS: TestGetRequestRouteUser/proxy_request_does_not_fall_back_when_proxy_authorization_is_invalid (0.00s) === RUN TestGetHTTPSHostname --- PASS: TestGetHTTPSHostname (0.10s) === RUN TestRoutersGet === RUN TestRoutersGet/exact_host_and_user_match_with_normalized_domain === RUN TestRoutersGet/exact_host_and_empty_user_match === RUN TestRoutersGet/does_not_fall_back_from_named_user_to_empty_user === RUN TestRoutersGet/does_not_fall_back_to_wildcard_domains === RUN TestRoutersGet/does_not_fall_back_to_catch-all_domain --- PASS: TestRoutersGet (0.00s) --- PASS: TestRoutersGet/exact_host_and_user_match_with_normalized_domain (0.00s) --- PASS: TestRoutersGet/exact_host_and_empty_user_match (0.00s) --- PASS: TestRoutersGet/does_not_fall_back_from_named_user_to_empty_user (0.00s) --- PASS: TestRoutersGet/does_not_fall_back_to_wildcard_domains (0.00s) --- PASS: TestRoutersGet/does_not_fall_back_to_catch-all_domain (0.00s) === RUN TestRoutersGetByRoute === RUN TestRoutersGetByRoute/exact_domain_and_http_user === RUN TestRoutersGetByRoute/exact_domain_falls_back_to_all_users === RUN TestRoutersGetByRoute/wildcard_domain_uses_all_users_fallback === RUN TestRoutersGetByRoute/mixed-case_domain_is_normalized === RUN TestRoutersGetByRoute/exact_domain_wins_over_wildcard_domain === RUN TestRoutersGetByRoute/more_specific_wildcard_wins_over_broader_wildcard === RUN TestRoutersGetByRoute/wildcard_walk_checks_parent_domains === RUN TestRoutersGetByRoute/catch-all_domain_fallback === RUN TestRoutersGetByRoute/catch-all_domain_honors_http_user --- PASS: TestRoutersGetByRoute (0.00s) --- PASS: TestRoutersGetByRoute/exact_domain_and_http_user (0.00s) --- PASS: TestRoutersGetByRoute/exact_domain_falls_back_to_all_users (0.00s) --- PASS: TestRoutersGetByRoute/wildcard_domain_uses_all_users_fallback (0.00s) --- PASS: TestRoutersGetByRoute/mixed-case_domain_is_normalized (0.00s) --- PASS: TestRoutersGetByRoute/exact_domain_wins_over_wildcard_domain (0.00s) --- PASS: TestRoutersGetByRoute/more_specific_wildcard_wins_over_broader_wildcard (0.00s) --- PASS: TestRoutersGetByRoute/wildcard_walk_checks_parent_domains (0.00s) --- PASS: TestRoutersGetByRoute/catch-all_domain_fallback (0.00s) --- PASS: TestRoutersGetByRoute/catch-all_domain_honors_http_user (0.00s) === RUN TestRoutersGetByRouteNoMatch === RUN TestRoutersGetByRouteNoMatch/two-label_domain_does_not_enter_wildcard_walk === RUN TestRoutersGetByRouteNoMatch/missing_catch-all_remains_no_match === RUN TestRoutersGetByRouteNoMatch/wrong_path_remains_no_match --- PASS: TestRoutersGetByRouteNoMatch (0.00s) --- PASS: TestRoutersGetByRouteNoMatch/two-label_domain_does_not_enter_wildcard_walk (0.00s) --- PASS: TestRoutersGetByRouteNoMatch/missing_catch-all_remains_no_match (0.00s) --- PASS: TestRoutersGetByRouteNoMatch/wrong_path_remains_no_match (0.00s) === RUN TestRoutersConcurrentGetByRouteAndAdd --- PASS: TestRoutersConcurrentGetByRouteAndAdd (0.00s) PASS coverage: 29.1% of statements ok github.com/fatedier/frp/pkg/util/vhost 0.148s coverage: 29.1% of statements === RUN TestFastBackoffManagerUsesClock --- PASS: TestFastBackoffManagerUsesClock (0.00s) PASS coverage: 19.4% of statements ok github.com/fatedier/frp/pkg/util/wait 0.037s coverage: 19.4% of statements github.com/fatedier/frp/pkg/util/xlog coverage: 0.0% of statements github.com/fatedier/frp/pkg/virtual coverage: 0.0% of statements github.com/fatedier/frp/pkg/vnet coverage: 0.0% of statements >>> frp: Entering fakeroot... >>> frp-openrc*: Running split function openrc... 'etc/conf.d' -> '/home/buildozer/aports/community/frp/pkg/frp-openrc/etc/conf.d' 'etc/init.d' -> '/home/buildozer/aports/community/frp/pkg/frp-openrc/etc/init.d' >>> frp-openrc*: Preparing subpackage frp-openrc... >>> frp-openrc*: Running postcheck for frp-openrc >>> frp*: Running postcheck for frp >>> frp*: Preparing package frp... >>> frp*: Stripping binaries >>> frp*: Scanning shared objects >>> frp*: Tracing dependencies... so:libc.musl-armhf.so.1 >>> frp*: Package size: 34.2 MB >>> frp*: Compressing data... >>> frp*: Create checksum... >>> frp*: Create frp-0.69.1-r0.apk >>> frp-openrc*: Tracing dependencies... >>> frp-openrc*: Package size: 717.0 B >>> frp-openrc*: Compressing data... >>> frp-openrc*: Create checksum... >>> frp-openrc*: Create frp-openrc-0.69.1-r0.apk >>> frp: Build complete at Mon, 22 Jun 2026 19:17:22 +0000 elapsed time 0h 0m 36s >>> frp: Cleaning up srcdir >>> frp: Cleaning up pkgdir >>> frp: Cleaning up tmpdir >>> frp: Uninstalling dependencies... (1/2) Purging .makedepends-frp (20260622.191647) (2/2) Purging go (1.26.3-r0) Executing busybox-1.38.0-r0.trigger OK: 342.6 MiB in 105 packages >>> frp: Updating the community/armhf repository index... >>> frp: Signing the index...