Skip to content

Commit

Permalink
Resolve SetLoadBalancerAffinityTimeout not being effective
Browse files Browse the repository at this point in the history
  • Loading branch information
jizhixiang committed Apr 13, 2023
1 parent 0b5fc5d commit 9374b66
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 0 deletions.
1 change: 1 addition & 0 deletions pkg/ovs/ovn-nb-load_balancer.go
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,7 @@ func (c *ovnClient) SetLoadBalancerAffinityTimeout(lbName string, timeout int) e
options[k] = v
}
options["affinity_timeout"] = value
lb.Options = options
if err := c.UpdateLoadBalancer(lb, &lb.Options); err != nil {
return fmt.Errorf("failed to set affinity timeout of lb %s to %d: %v", lbName, timeout, err)
}
Expand Down
42 changes: 42 additions & 0 deletions pkg/ovs/ovn-nb-load_balancer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package ovs

import (
"fmt"
"strconv"
"strings"
"testing"

Expand Down Expand Up @@ -370,3 +371,44 @@ func (suite *OvnClientTestSuite) testDeleteLoadBalancerOp() {
require.Len(t, ops, 0)
})
}

func (suite *OvnClientTestSuite) testSetLoadBalancerAffinityTimeout() {
t := suite.T()
t.Parallel()

ovnClient := suite.ovnClient
lbName := "test-set-lb-affinity-timeout"

err := ovnClient.CreateLoadBalancer(lbName, "tcp", "")
require.NoError(t, err)

lb, err := ovnClient.GetLoadBalancer(lbName, false)
require.NoError(t, err)

oldOptions := make(map[string]string, 1)
oldOptions["stateless"] = "true"
lb.Options = oldOptions
err = ovnClient.UpdateLoadBalancer(lb, &lb.Options)
require.NoError(t, err)

expectedTimeout := 30
t.Run("add new affinity timeout to load balancer options", func(t *testing.T) {
err := ovnClient.SetLoadBalancerAffinityTimeout(lbName, expectedTimeout)
require.NoError(t, err)

lb, err := ovnClient.GetLoadBalancer(lbName, false)
require.NoError(t, err)

require.Equal(t, lb.Options["affinity_timeout"], strconv.Itoa(expectedTimeout))
})

t.Run("add new affinityTimeout to load balancer options repeatedly", func(t *testing.T) {
err := ovnClient.SetLoadBalancerAffinityTimeout(lbName, expectedTimeout)
require.NoError(t, err)

lb, err := ovnClient.GetLoadBalancer(lbName, false)
require.NoError(t, err)

require.Equal(t, lb.Options["affinity_timeout"], strconv.Itoa(expectedTimeout))
})
}
4 changes: 4 additions & 0 deletions pkg/ovs/ovn-nb-suite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -330,6 +330,10 @@ func (suite *OvnClientTestSuite) Test_DeleteLoadBalancerOp() {
suite.testDeleteLoadBalancerOp()
}

func (suite *OvnClientTestSuite) Test_SetLoadBalancerAffinityTimeout() {
suite.testSetLoadBalancerAffinityTimeout()
}

/* port_group unit test */
func (suite *OvnClientTestSuite) Test_CreatePortGroup() {
suite.testCreatePortGroup()
Expand Down

0 comments on commit 9374b66

Please sign in to comment.