Skip to content

Commit

Permalink
TEST/MINOR: add unit test for balance annotation
Browse files Browse the repository at this point in the history
  • Loading branch information
hdurand0710 authored and oktalz committed Feb 10, 2025
1 parent fee73d8 commit accf387
Show file tree
Hide file tree
Showing 2 changed files with 119 additions and 2 deletions.
4 changes: 2 additions & 2 deletions pkg/annotations/service/loadbalance.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ func (a *LoadBalance) Process(k store.K8s, annotations ...map[string]string) err
}
var params *models.Balance
var err error
params, err = getParamsFromInput(input)
params, err = GetParamsFromInput(input)
if err != nil {
return fmt.Errorf("load-balance: %w", err)
}
Expand All @@ -46,7 +46,7 @@ func (a *LoadBalance) Process(k store.K8s, annotations ...map[string]string) err
return nil
}

func getParamsFromInput(value string) (*models.Balance, error) {
func GetParamsFromInput(value string) (*models.Balance, error) {
balance := &models.Balance{}
tokens := strings.Split(value, " ")
if len(tokens) == 0 {
Expand Down
117 changes: 117 additions & 0 deletions test/annotations/loadbalance_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
package annotations_test

import (
"reflect"
"testing"

"github.com/haproxytech/client-native/v5/models"
"github.com/haproxytech/kubernetes-ingress/pkg/annotations/service"
"github.com/haproxytech/kubernetes-ingress/pkg/utils"
)

func TestGetParamsFromInput(t *testing.T) {
type args struct {
value string
}
tests := []struct {
name string
args args
want *models.Balance
wantErr bool
}{
{
name: "roundrobin",
args: args{
value: "roundrobin",
},
want: &models.Balance{
Algorithm: utils.PtrString("roundrobin"),
},
},
{
name: "hdr",
args: args{
value: "hdr(User-Agent)",
},
want: &models.Balance{
Algorithm: utils.PtrString("hdr"),
HdrName: "User-Agent",
},
},
{
name: "hdr-2",
args: args{
value: "hdr(Host) use_domain_only",
},
want: &models.Balance{
Algorithm: utils.PtrString("hdr"),
HdrName: "Host",
HdrUseDomainOnly: true,
},
},
{
name: "random ok",
args: args{
value: "random(10)",
},
want: &models.Balance{
Algorithm: utils.PtrString("random"),
RandomDraws: 10,
},
},
{
name: "random ko",
args: args{
value: "random(notok)",
},
want: &models.Balance{
Algorithm: utils.PtrString("random"),
},
wantErr: true,
},
{
name: "rdp cookie",
args: args{
value: "rdp-cookie(cookiename)",
},
want: &models.Balance{
Algorithm: utils.PtrString("rdp-cookie"),
RdpCookieName: "cookiename",
},
},
{
name: "url_param",
args: args{
value: "url_param session_id check_post 64",
},
want: &models.Balance{
Algorithm: utils.PtrString("url_param"),
URLParam: "session_id",
URLParamCheckPost: 64,
},
},
{
name: "uri",
args: args{
value: "uri len 2 depth 3",
},
want: &models.Balance{
Algorithm: utils.PtrString("uri"),
URILen: 2,
URIDepth: 3,
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, err := service.GetParamsFromInput(tt.args.value)
if (err != nil) != tt.wantErr {
t.Errorf("GetParamsFromInput() error = %v, wantErr %v", err, tt.wantErr)
return
}
if !reflect.DeepEqual(got, tt.want) {
t.Errorf("GetParamsFromInput() = %v, want %v", got, tt.want)
}
})
}
}

0 comments on commit accf387

Please sign in to comment.