| package main |
| |
| import ( |
| "fmt" |
| "time" |
| |
| . "fd.io/hs-test/infra" |
| . "github.com/onsi/ginkgo/v2" |
| ) |
| |
| func init() { |
| RegisterIperfTests(IperfUdpLinuxTest) |
| } |
| |
| func IperfUdpLinuxTest(s *IperfSuite) { |
| serverContainer := s.GetContainerByName(ServerIperfContainerName) |
| serverIpAddress := s.GetInterfaceByName(ServerIperfInterfaceName).Ip4AddressString() |
| clientContainer := s.GetContainerByName(ClientIperfContainerName) |
| clientIpAddress := s.GetInterfaceByName(ClientIperfInterfaceName).Ip4AddressString() |
| |
| clnCh := make(chan error) |
| stopServerCh := make(chan struct{}) |
| srvCh := make(chan error, 1) |
| clnRes := make(chan []byte, 1) |
| |
| defer func() { |
| stopServerCh <- struct{}{} |
| }() |
| |
| go func() { |
| defer GinkgoRecover() |
| cmd := "iperf3 -4 -s -B " + serverIpAddress + " -p " + s.GetPortFromPpid() |
| s.StartServerApp(serverContainer, "iperf3", cmd, srvCh, stopServerCh) |
| }() |
| err := <-srvCh |
| s.AssertNil(err, fmt.Sprint(err)) |
| s.Log("server running") |
| |
| go func() { |
| defer GinkgoRecover() |
| cmd := "iperf3 -c " + serverIpAddress + " -B " + clientIpAddress + |
| " -u -l 1460 -b 10g -J -p " + s.GetPortFromPpid() |
| s.StartClientApp(clientContainer, cmd, clnCh, clnRes) |
| }() |
| s.AssertChannelClosed(time.Minute*3, clnCh) |
| output := <-clnRes |
| result := s.ParseJsonIperfOutput(output) |
| s.LogJsonIperfOutput(result) |
| s.AssertIperfMinTransfer(result, 800) |
| } |