Skip to content

Commit 0b42d66

Browse files
committed
test update for ManagerImpl
1 parent b36adc6 commit 0b42d66

File tree

4 files changed

+308
-70
lines changed

4 files changed

+308
-70
lines changed

internal/mode/static/nginx/runtime/manager.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,13 @@ type (
2929

3030
var childProcPathFmt = "/proc/%[1]v/task/%[1]v/children"
3131

32+
//go:generate go run github.com/maxbrunsfeld/counterfeiter/v6 . NginxPlusClient
33+
34+
type NginxPlusClient interface {
35+
UpdateHTTPServers(upstream string, servers []ngxclient.UpstreamServer) (added []ngxclient.UpstreamServer, deleted []ngxclient.UpstreamServer, updated []ngxclient.UpstreamServer, err error)
36+
GetUpstreams() (*ngxclient.Upstreams, error)
37+
}
38+
3239
//go:generate go run github.com/maxbrunsfeld/counterfeiter/v6 . Manager
3340

3441
// Manager manages the runtime of NGINX.
@@ -56,13 +63,13 @@ type MetricsCollector interface {
5663
type ManagerImpl struct {
5764
verifyClient *verifyClient
5865
metricsCollector MetricsCollector
59-
ngxPlusClient *ngxclient.NginxClient
66+
ngxPlusClient NginxPlusClient
6067
logger logr.Logger
6168
}
6269

6370
// NewManagerImpl creates a new ManagerImpl.
6471
func NewManagerImpl(
65-
ngxPlusClient *ngxclient.NginxClient,
72+
ngxPlusClient NginxPlusClient,
6673
collector MetricsCollector,
6774
logger logr.Logger,
6875
) *ManagerImpl {

internal/mode/static/nginx/runtime/manager_test.go

Lines changed: 0 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,10 @@ import (
44
"context"
55
"errors"
66
"io/fs"
7-
"net/http"
87
"testing"
98
"time"
109

1110
"github.com/go-logr/logr"
12-
"github.com/nginxinc/nginx-plus-go-client/client"
1311
ngxclient "github.com/nginxinc/nginx-plus-go-client/client"
1412
. "github.com/onsi/ginkgo/v2"
1513
. "github.com/onsi/gomega"
@@ -23,72 +21,6 @@ var _ = Describe("NGINX Runtime Manager", func() {
2321
mgr = NewManagerImpl(&ngxclient.NginxClient{}, nil, logr.New(GinkgoLogr.GetSink()))
2422
Expect(mgr.IsPlus()).To(BeTrue())
2523
})
26-
27-
Describe("ManagerImpl", Ordered, func() {
28-
var (
29-
mockedManager Manager
30-
serverMocks []ngxclient.UpstreamServer
31-
serversMock ngxclient.UpstreamServer
32-
33-
clientMock *ngxclient.NginxClient
34-
)
35-
36-
var (
37-
MaxConnsMock = 150
38-
MaxFailsMock = 20
39-
WeightMock = 10
40-
BackupMock = false
41-
DownMock = false
42-
)
43-
44-
BeforeAll(func() {
45-
46-
serversMock = ngxclient.UpstreamServer{
47-
ID: 1,
48-
Server: "unknown",
49-
MaxConns: &MaxConnsMock,
50-
MaxFails: &MaxFailsMock,
51-
FailTimeout: "test",
52-
SlowStart: "test",
53-
Route: "test",
54-
Backup: &BackupMock,
55-
Down: &DownMock,
56-
Drain: false,
57-
Weight: &WeightMock,
58-
Service: "",
59-
}
60-
61-
serverMocks = []ngxclient.UpstreamServer{
62-
serversMock,
63-
}
64-
65-
httpClient := &http.Client{
66-
Transport: http.DefaultTransport,
67-
CheckRedirect: http.DefaultClient.CheckRedirect,
68-
Jar: http.DefaultClient.Jar,
69-
Timeout: time.Second * 4,
70-
}
71-
72-
clientMock, _ = ngxclient.NewNginxClient("test", client.WithHTTPClient(httpClient))
73-
logrMock := logr.New(GinkgoLogr.GetSink())
74-
mockedManager = NewManagerImpl(clientMock, nil, logrMock)
75-
76-
})
77-
78-
It("UpdateHTTPServers fails upon unknown HTTP server upstream", func() {
79-
err := mockedManager.UpdateHTTPServers("unknown", serverMocks)
80-
Expect(err).ToNot(BeNil())
81-
})
82-
83-
Context("GetUpstreams returns empty map of upstreams", func() {
84-
It("returns no upstreams from NGINX Plus API", func() {
85-
86-
upstreams, err := mockedManager.GetUpstreams()
87-
Expect(err).To(HaveOccurred())
88-
Expect(upstreams).To(BeEmpty())
89-
})
90-
})
91-
})
9224
})
9325

9426
func TestEnsureNginxRunning(t *testing.T) {
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
package runtime_test
2+
3+
import (
4+
"github.com/go-logr/logr"
5+
"github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/nginx/runtime"
6+
"github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/nginx/runtime/runtimefakes"
7+
ngxclient "github.com/nginxinc/nginx-plus-go-client/client"
8+
9+
. "github.com/onsi/ginkgo/v2"
10+
. "github.com/onsi/gomega"
11+
)
12+
13+
var _ = Describe("NGINX Runtime Manager", Ordered, func() {
14+
var (
15+
manager runtime.Manager
16+
upstreamServers []ngxclient.UpstreamServer
17+
upstreamServer ngxclient.UpstreamServer
18+
logger logr.Logger
19+
ngxPlusClient *runtimefakes.FakeNginxPlusClient
20+
)
21+
22+
var (
23+
MaxConnsMock = 150
24+
MaxFailsMock = 20
25+
WeightMock = 10
26+
BackupMock = false
27+
DownMock = false
28+
)
29+
30+
BeforeAll(func() {
31+
upstreamServer = ngxclient.UpstreamServer{
32+
ID: 1,
33+
Server: "10.0.0.1:80",
34+
MaxConns: &MaxConnsMock,
35+
MaxFails: &MaxFailsMock,
36+
FailTimeout: "test",
37+
SlowStart: "test",
38+
Route: "test",
39+
Backup: &BackupMock,
40+
Down: &DownMock,
41+
Drain: false,
42+
Weight: &WeightMock,
43+
Service: "test",
44+
}
45+
46+
upstreamServers = []ngxclient.UpstreamServer{
47+
upstreamServer,
48+
}
49+
50+
logger = logr.New(GinkgoLogr.GetSink())
51+
})
52+
53+
When("running NGINX plus", func() {
54+
BeforeAll(func() {
55+
ngxPlusClient = &runtimefakes.FakeNginxPlusClient{}
56+
manager = runtime.NewManagerImpl(ngxPlusClient, nil, logger)
57+
})
58+
59+
It("sucessfully updates HTTP server upstream", func() {
60+
err := manager.UpdateHTTPServers("test", upstreamServers)
61+
62+
Expect(err).To(BeNil())
63+
})
64+
65+
It("returns no upstreams from NGINX Plus API", func() {
66+
upstreams, err := manager.GetUpstreams()
67+
68+
Expect(err).To(HaveOccurred())
69+
Expect(upstreams).To(BeEmpty())
70+
})
71+
})
72+
73+
When("not running NGINX plus", func() {
74+
BeforeAll(func() {
75+
ngxPlusClient = nil
76+
manager = runtime.NewManagerImpl(ngxPlusClient, nil, logger)
77+
})
78+
79+
It("should panic when updating HTTP upstream servers", func() {
80+
updateServers := func() {
81+
manager.UpdateHTTPServers("test", upstreamServers)
82+
}
83+
84+
Expect(updateServers).To(Panic())
85+
})
86+
87+
It("should panic when fetching HTTP upstream servers", func() {
88+
upstreams := func() {
89+
manager.GetUpstreams()
90+
}
91+
92+
Expect(upstreams).To(Panic())
93+
})
94+
})
95+
})

0 commit comments

Comments
 (0)