Skip to content

Commit accf387

Browse files
hdurand0710oktalz
authored andcommitted
TEST/MINOR: add unit test for balance annotation
1 parent fee73d8 commit accf387

File tree

2 files changed

+119
-2
lines changed

2 files changed

+119
-2
lines changed

pkg/annotations/service/loadbalance.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ func (a *LoadBalance) Process(k store.K8s, annotations ...map[string]string) err
3434
}
3535
var params *models.Balance
3636
var err error
37-
params, err = getParamsFromInput(input)
37+
params, err = GetParamsFromInput(input)
3838
if err != nil {
3939
return fmt.Errorf("load-balance: %w", err)
4040
}
@@ -46,7 +46,7 @@ func (a *LoadBalance) Process(k store.K8s, annotations ...map[string]string) err
4646
return nil
4747
}
4848

49-
func getParamsFromInput(value string) (*models.Balance, error) {
49+
func GetParamsFromInput(value string) (*models.Balance, error) {
5050
balance := &models.Balance{}
5151
tokens := strings.Split(value, " ")
5252
if len(tokens) == 0 {
Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
package annotations_test
2+
3+
import (
4+
"reflect"
5+
"testing"
6+
7+
"github.com/haproxytech/client-native/v5/models"
8+
"github.com/haproxytech/kubernetes-ingress/pkg/annotations/service"
9+
"github.com/haproxytech/kubernetes-ingress/pkg/utils"
10+
)
11+
12+
func TestGetParamsFromInput(t *testing.T) {
13+
type args struct {
14+
value string
15+
}
16+
tests := []struct {
17+
name string
18+
args args
19+
want *models.Balance
20+
wantErr bool
21+
}{
22+
{
23+
name: "roundrobin",
24+
args: args{
25+
value: "roundrobin",
26+
},
27+
want: &models.Balance{
28+
Algorithm: utils.PtrString("roundrobin"),
29+
},
30+
},
31+
{
32+
name: "hdr",
33+
args: args{
34+
value: "hdr(User-Agent)",
35+
},
36+
want: &models.Balance{
37+
Algorithm: utils.PtrString("hdr"),
38+
HdrName: "User-Agent",
39+
},
40+
},
41+
{
42+
name: "hdr-2",
43+
args: args{
44+
value: "hdr(Host) use_domain_only",
45+
},
46+
want: &models.Balance{
47+
Algorithm: utils.PtrString("hdr"),
48+
HdrName: "Host",
49+
HdrUseDomainOnly: true,
50+
},
51+
},
52+
{
53+
name: "random ok",
54+
args: args{
55+
value: "random(10)",
56+
},
57+
want: &models.Balance{
58+
Algorithm: utils.PtrString("random"),
59+
RandomDraws: 10,
60+
},
61+
},
62+
{
63+
name: "random ko",
64+
args: args{
65+
value: "random(notok)",
66+
},
67+
want: &models.Balance{
68+
Algorithm: utils.PtrString("random"),
69+
},
70+
wantErr: true,
71+
},
72+
{
73+
name: "rdp cookie",
74+
args: args{
75+
value: "rdp-cookie(cookiename)",
76+
},
77+
want: &models.Balance{
78+
Algorithm: utils.PtrString("rdp-cookie"),
79+
RdpCookieName: "cookiename",
80+
},
81+
},
82+
{
83+
name: "url_param",
84+
args: args{
85+
value: "url_param session_id check_post 64",
86+
},
87+
want: &models.Balance{
88+
Algorithm: utils.PtrString("url_param"),
89+
URLParam: "session_id",
90+
URLParamCheckPost: 64,
91+
},
92+
},
93+
{
94+
name: "uri",
95+
args: args{
96+
value: "uri len 2 depth 3",
97+
},
98+
want: &models.Balance{
99+
Algorithm: utils.PtrString("uri"),
100+
URILen: 2,
101+
URIDepth: 3,
102+
},
103+
},
104+
}
105+
for _, tt := range tests {
106+
t.Run(tt.name, func(t *testing.T) {
107+
got, err := service.GetParamsFromInput(tt.args.value)
108+
if (err != nil) != tt.wantErr {
109+
t.Errorf("GetParamsFromInput() error = %v, wantErr %v", err, tt.wantErr)
110+
return
111+
}
112+
if !reflect.DeepEqual(got, tt.want) {
113+
t.Errorf("GetParamsFromInput() = %v, want %v", got, tt.want)
114+
}
115+
})
116+
}
117+
}

0 commit comments

Comments
 (0)