mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-09-13 12:59:36 +00:00
rate-limiter: add rate limiter unit test
add TestRxRateLimiter and TestTxRateLimiter unit tests Fixes: #250 Signed-off-by: Penny Zheng <penny.zheng@arm.com>
This commit is contained in:
@@ -12,6 +12,7 @@ import (
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
"github.com/containernetworking/plugins/pkg/ns"
|
||||
ktu "github.com/kata-containers/kata-containers/src/runtime/pkg/katatestutils"
|
||||
vcTypes "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/pkg/types"
|
||||
"github.com/stretchr/testify/assert"
|
||||
@@ -284,3 +285,101 @@ func TestTcRedirectNetwork(t *testing.T) {
|
||||
err = netHandle.LinkDel(link)
|
||||
assert.NoError(err)
|
||||
}
|
||||
|
||||
func TestRxRateLimiter(t *testing.T) {
|
||||
if tc.NotValid(ktu.NeedRoot()) {
|
||||
t.Skip(testDisabledAsNonRoot)
|
||||
}
|
||||
|
||||
assert := assert.New(t)
|
||||
|
||||
netHandle, err := netlink.NewHandle()
|
||||
assert.NoError(err)
|
||||
defer netHandle.Delete()
|
||||
|
||||
// Create a test veth interface.
|
||||
vethName := "foo"
|
||||
veth := &netlink.Veth{LinkAttrs: netlink.LinkAttrs{Name: vethName, TxQLen: 200, MTU: 1400}, PeerName: "bar"}
|
||||
|
||||
err = netlink.LinkAdd(veth)
|
||||
assert.NoError(err)
|
||||
|
||||
endpoint, err := createVethNetworkEndpoint(1, vethName, NetXConnectTCFilterModel)
|
||||
assert.NoError(err)
|
||||
|
||||
link, err := netlink.LinkByName(vethName)
|
||||
assert.NoError(err)
|
||||
|
||||
err = netHandle.LinkSetUp(link)
|
||||
assert.NoError(err)
|
||||
|
||||
err = setupTCFiltering(endpoint, 1, true)
|
||||
assert.NoError(err)
|
||||
|
||||
// 10Mb
|
||||
maxRate := uint64(10000000)
|
||||
err = addRxRateLimiter(endpoint, maxRate)
|
||||
assert.NoError(err)
|
||||
|
||||
currentNS, err := ns.GetCurrentNS()
|
||||
assert.NoError(err)
|
||||
|
||||
err = removeRxRateLimiter(endpoint, currentNS.Path())
|
||||
assert.NoError(err)
|
||||
|
||||
err = removeTCFiltering(endpoint)
|
||||
assert.NoError(err)
|
||||
|
||||
// Remove the veth created for testing.
|
||||
err = netHandle.LinkDel(link)
|
||||
assert.NoError(err)
|
||||
}
|
||||
|
||||
func TestTxRateLimiter(t *testing.T) {
|
||||
if tc.NotValid(ktu.NeedRoot()) {
|
||||
t.Skip(testDisabledAsNonRoot)
|
||||
}
|
||||
|
||||
assert := assert.New(t)
|
||||
|
||||
netHandle, err := netlink.NewHandle()
|
||||
assert.NoError(err)
|
||||
defer netHandle.Delete()
|
||||
|
||||
// Create a test veth interface.
|
||||
vethName := "foo"
|
||||
veth := &netlink.Veth{LinkAttrs: netlink.LinkAttrs{Name: vethName, TxQLen: 200, MTU: 1400}, PeerName: "bar"}
|
||||
|
||||
err = netlink.LinkAdd(veth)
|
||||
assert.NoError(err)
|
||||
|
||||
endpoint, err := createVethNetworkEndpoint(1, vethName, NetXConnectTCFilterModel)
|
||||
assert.NoError(err)
|
||||
|
||||
link, err := netlink.LinkByName(vethName)
|
||||
assert.NoError(err)
|
||||
|
||||
err = netHandle.LinkSetUp(link)
|
||||
assert.NoError(err)
|
||||
|
||||
err = setupTCFiltering(endpoint, 1, true)
|
||||
assert.NoError(err)
|
||||
|
||||
// 10Mb
|
||||
maxRate := uint64(10000000)
|
||||
err = addTxRateLimiter(endpoint, maxRate)
|
||||
assert.NoError(err)
|
||||
|
||||
currentNS, err := ns.GetCurrentNS()
|
||||
assert.NoError(err)
|
||||
|
||||
err = removeTxRateLimiter(endpoint, currentNS.Path())
|
||||
assert.NoError(err)
|
||||
|
||||
err = removeTCFiltering(endpoint)
|
||||
assert.NoError(err)
|
||||
|
||||
// Remove the veth created for testing.
|
||||
err = netHandle.LinkDel(link)
|
||||
assert.NoError(err)
|
||||
}
|
||||
|
Reference in New Issue
Block a user