Skip to content

Commit 6a55e69

Browse files
committed
fixing integration test
1 parent ed28bf1 commit 6a55e69

File tree

2 files changed

+117
-3
lines changed

2 files changed

+117
-3
lines changed

internal/datasource/proto/instance.go

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,17 @@ import (
1515
func NginxPlusRuntimeInfoEqual(nginxPlusRuntimeInfo *mpi.NGINXPlusRuntimeInfo,
1616
nginxConfigContext *model.NginxConfigContext, accessLogs, errorLogs []string,
1717
) bool {
18+
convertedPlusAPIs := convertToMpiAPIDetailsSlice(nginxConfigContext.PlusAPIs)
19+
20+
if !reflect.DeepEqual(nginxPlusRuntimeInfo.GetPlusApis(), convertedPlusAPIs) {
21+
return false
22+
}
23+
24+
if nginxPlusRuntimeInfo.GetPlusApi().GetWriteEnabled() != nginxConfigContext.PlusAPI.WriteEnabled ||
25+
nginxPlusRuntimeInfo.GetPlusApi().GetCa() != nginxConfigContext.PlusAPI.Ca {
26+
return false
27+
}
28+
1829
if !reflect.DeepEqual(nginxPlusRuntimeInfo.GetAccessLogs(), accessLogs) ||
1930
!reflect.DeepEqual(nginxPlusRuntimeInfo.GetErrorLogs(), errorLogs) ||
2031
nginxPlusRuntimeInfo.GetStubStatus().GetListen() != nginxConfigContext.StubStatus.Listen ||
@@ -59,6 +70,11 @@ func UpdateNginxInstanceRuntime(
5970
nginxPlusRuntimeInfo.PlusApi.Listen = nginxConfigContext.PlusAPI.Listen
6071
nginxPlusRuntimeInfo.StubStatus.Location = nginxConfigContext.StubStatus.Location
6172
nginxPlusRuntimeInfo.PlusApi.Location = nginxConfigContext.PlusAPI.Location
73+
74+
nginxPlusRuntimeInfo.PlusApi.WriteEnabled = nginxConfigContext.PlusAPI.WriteEnabled
75+
nginxPlusRuntimeInfo.PlusApi.Ca = nginxConfigContext.PlusAPI.Ca
76+
77+
nginxPlusRuntimeInfo.PlusApis = convertToMpiAPIDetailsSlice(nginxConfigContext.PlusAPIs)
6278
updatesRequired = true
6379
}
6480
} else {
@@ -75,3 +91,28 @@ func UpdateNginxInstanceRuntime(
7591

7692
return updatesRequired
7793
}
94+
95+
func convertToMpiAPIDetails(modelAPI *model.APIDetails) *mpi.APIDetails {
96+
if modelAPI == nil {
97+
return nil
98+
}
99+
100+
return &mpi.APIDetails{
101+
Listen: modelAPI.Listen,
102+
Location: modelAPI.Location,
103+
Ca: modelAPI.Ca,
104+
WriteEnabled: modelAPI.WriteEnabled,
105+
}
106+
}
107+
108+
func convertToMpiAPIDetailsSlice(modelAPIs []*model.APIDetails) []*mpi.APIDetails {
109+
if modelAPIs == nil {
110+
return nil
111+
}
112+
mpiAPIs := make([]*mpi.APIDetails, 0, len(modelAPIs))
113+
for _, api := range modelAPIs {
114+
mpiAPIs = append(mpiAPIs, convertToMpiAPIDetails(api))
115+
}
116+
117+
return mpiAPIs
118+
}

internal/datasource/proto/instance_test.go

Lines changed: 76 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,54 @@ import (
1414
"github.com/stretchr/testify/assert"
1515
)
1616

17+
var plusAPIs = []*model.APIDetails{
18+
{
19+
URL: "http://127.0.0.1:8081/api",
20+
Listen: "127.0.0.1:8081",
21+
Location: "/api",
22+
WriteEnabled: false,
23+
Ca: "",
24+
},
25+
{
26+
URL: "unix:/var/run/nginx/api.sock",
27+
Listen: "unix:/var/run/nginx/api.sock",
28+
Location: "/api",
29+
WriteEnabled: true, // Crucial for selection logic
30+
Ca: "/etc/certs/my_ca.pem",
31+
},
32+
}
33+
34+
var nginxPlusConfigContextForUpdate = &model.NginxConfigContext{
35+
AccessLogs: []*model.AccessLog{
36+
{
37+
Name: "/usr/local/var/log/nginx/access.log",
38+
},
39+
},
40+
ErrorLogs: []*model.ErrorLog{
41+
{
42+
Name: "/usr/local/var/log/nginx/error.log",
43+
},
44+
},
45+
PlusAPI: plusAPIs[1],
46+
StubStatus: &model.APIDetails{
47+
URL: "http://127.0.0.1:8081/status",
48+
Listen: "127.0.0.1:8081",
49+
},
50+
PlusAPIs: plusAPIs,
51+
}
52+
53+
func convertAPIDetailsSliceForTest(modelAPIs []*model.APIDetails) []*mpi.APIDetails {
54+
if modelAPIs == nil {
55+
return nil
56+
}
57+
mpiAPIs := make([]*mpi.APIDetails, 0, len(modelAPIs))
58+
for _, api := range modelAPIs {
59+
mpiAPIs = append(mpiAPIs, convertToMpiAPIDetails(api))
60+
}
61+
62+
return mpiAPIs
63+
}
64+
1765
func TestInstanceWatcherService_updateNginxInstanceRuntime(t *testing.T) {
1866
nginxOSSConfigContext := &model.NginxConfigContext{
1967
AccessLogs: []*model.AccessLog{
@@ -68,12 +116,32 @@ func TestInstanceWatcherService_updateNginxInstanceRuntime(t *testing.T) {
68116
nginxConfigContext: nginxPlusConfigContext,
69117
instance: protos.NginxPlusInstance([]string{}),
70118
},
119+
{
120+
name: "Test 3: Plus Instance - PlusAPIs Update",
121+
nginxConfigContext: nginxPlusConfigContextForUpdate,
122+
instance: protos.NginxPlusInstance([]string{}),
123+
},
71124
}
72125

73126
for _, test := range tests {
74-
t.Run(test.name, func(tt *testing.T) {
127+
t.Run(test.name, func(t *testing.T) {
128+
updatesRequired := UpdateNginxInstanceRuntime(test.instance, test.nginxConfigContext)
75129
UpdateNginxInstanceRuntime(test.instance, test.nginxConfigContext)
76-
if test.name == "Test 2: Plus Instance" {
130+
switch test.name {
131+
case "Test 3: Plus Instance - PlusAPIs Update":
132+
assert.True(t, updatesRequired,
133+
"UpdateNginxInstanceRuntime should return true when PlusAPIs are updated")
134+
expectedAPIs := convertAPIDetailsSliceForTest(test.nginxConfigContext.PlusAPIs)
135+
assert.ElementsMatch(t, expectedAPIs,
136+
test.instance.GetInstanceRuntime().GetNginxPlusRuntimeInfo().GetPlusApis())
137+
assert.Equal(t, test.nginxConfigContext.PlusAPI.WriteEnabled, test.instance.GetInstanceRuntime().
138+
GetNginxPlusRuntimeInfo().GetPlusApi().GetWriteEnabled())
139+
assert.Equal(t, test.nginxConfigContext.PlusAPI.Ca, test.instance.GetInstanceRuntime().
140+
GetNginxPlusRuntimeInfo().GetPlusApi().GetCa())
141+
assert.Equal(t, test.nginxConfigContext.PlusAPI.Listen, test.instance.GetInstanceRuntime().
142+
GetNginxPlusRuntimeInfo().GetPlusApi().GetListen())
143+
144+
case "Test 2: Plus Instance":
77145
assert.Equal(t, test.nginxConfigContext.AccessLogs[0].Name, test.instance.GetInstanceRuntime().
78146
GetNginxPlusRuntimeInfo().GetAccessLogs()[0])
79147
assert.Equal(t, test.nginxConfigContext.ErrorLogs[0].Name, test.instance.GetInstanceRuntime().
@@ -86,7 +154,12 @@ func TestInstanceWatcherService_updateNginxInstanceRuntime(t *testing.T) {
86154
GetNginxPlusRuntimeInfo().GetStubStatus().GetListen())
87155
assert.Equal(t, test.nginxConfigContext.PlusAPI.Listen, test.instance.GetInstanceRuntime().
88156
GetNginxPlusRuntimeInfo().GetPlusApi().GetListen())
89-
} else {
157+
assert.Equal(t, test.nginxConfigContext.PlusAPI.WriteEnabled, test.instance.GetInstanceRuntime().
158+
GetNginxPlusRuntimeInfo().GetPlusApi().GetWriteEnabled())
159+
assert.Equal(t, test.nginxConfigContext.PlusAPI.Ca, test.instance.GetInstanceRuntime().
160+
GetNginxPlusRuntimeInfo().GetPlusApi().GetCa())
161+
162+
default:
90163
assert.Equal(t, test.nginxConfigContext.AccessLogs[0].Name, test.instance.GetInstanceRuntime().
91164
GetNginxRuntimeInfo().GetAccessLogs()[0])
92165
assert.Equal(t, test.nginxConfigContext.ErrorLogs[0].Name, test.instance.GetInstanceRuntime().

0 commit comments

Comments
 (0)