1
// This Source Code Form is subject to the terms of the Mozilla Public
2
// License, v. 2.0. If a copy of the MPL was not distributed with this
3
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
12
"github.com/siderolabs/grpc-proxy/proxy"
13
"github.com/stretchr/testify/suite"
15
"github.com/siderolabs/talos/internal/app/apid/pkg/backend"
18
type APIDFactorySuite struct {
21
f *backend.APIDFactory
24
type fakeTLSConfigProvider struct{}
26
func (fakeTLSConfigProvider) ClientConfig() (*tls.Config, error) {
27
return &tls.Config{}, nil
30
func (suite *APIDFactorySuite) SetupSuite() {
31
suite.f = backend.NewAPIDFactory(fakeTLSConfigProvider{})
34
func (suite *APIDFactorySuite) TestGet() {
35
b1, err := suite.f.Get("127.0.0.1")
36
suite.Require().NoError(err)
37
suite.Require().NotNil(b1)
39
b2, err := suite.f.Get("127.0.0.1")
40
suite.Require().NoError(err)
41
suite.Require().Equal(b1, b2)
43
b3, err := suite.f.Get("127.0.0.2")
44
suite.Require().NoError(err)
45
suite.Require().NotEqual(b1, b3)
47
_, err = suite.f.Get("127.0.0.2:50000")
48
suite.Require().Error(err)
51
func (suite *APIDFactorySuite) TestGetConcurrent() {
55
backendCh := make(chan proxy.Backend, 10)
63
b, _ := suite.f.Get("10.0.0.1") //nolint:errcheck
73
for anotherB := range backendCh {
74
suite.Assert().Equal(b, anotherB)
78
func TestAPIDFactorySuite(t *testing.T) {
79
suite.Run(t, new(APIDFactorySuite))