summaryrefslogtreecommitdiffstats
path: root/extras/hs-test/linux_iperf_test.go
blob: e323f7fb7217cf8417fa461af5220cf3e3df3697 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package main

import (
	"fmt"

	. "github.com/onsi/ginkgo/v2"
)

func init() {
	registerTapTests(LinuxIperfTest)
}

func LinuxIperfTest(s *TapSuite) {
	clnCh := make(chan error)
	stopServerCh := make(chan struct{})
	srvCh := make(chan error, 1)
	clnRes := make(chan string, 1)
	defer func() {
		stopServerCh <- struct{}{}
	}()

	go func() {
		defer GinkgoRecover()
		s.startServerApp(srvCh, stopServerCh, nil)
	}()
	err := <-srvCh
	s.assertNil(err, fmt.Sprint(err))
	s.log("server running")

	ipAddress := s.getInterfaceByName(tapInterfaceName).ip4AddressString()
	go func() {
		defer GinkgoRecover()
		s.startClientApp(ipAddress, nil, clnCh, clnRes)
	}()
	s.log("client running")
	s.log(<-clnRes)
	err = <-clnCh
	s.assertNil(err, "err: '%s', ip: '%s'", err, ipAddress)
	s.log("Test completed")
}