cbba227c32828212dfd51606a7e7d6d0415be079
[vpp.git] / extras / hs-test / ldp_test.go
1 package main
2
3 import (
4         "fmt"
5         "os"
6         "time"
7 )
8
9 func (s *VethsSuite) TestLDPreloadIperfVpp() {
10         var clnVclConf, srvVclConf Stanza
11
12         serverContainer := s.getContainerByName("server-vpp")
13         srvVcl := serverContainer.GetHostWorkDir() + "/vcl_srv.conf"
14
15         clientContainer := s.getContainerByName("client-vpp")
16         clnVcl := clientContainer.GetHostWorkDir() + "/vcl_cln.conf"
17
18         ldpreload := os.Getenv("HST_LDPRELOAD")
19         s.assertNotEqual("", ldpreload)
20
21         ldpreload = "LD_PRELOAD=" + ldpreload
22
23         stopServerCh := make(chan struct{}, 1)
24         srvCh := make(chan error, 1)
25         clnCh := make(chan error)
26
27         s.log("starting VPPs")
28
29         _, err := serverContainer.execAction("Configure2Veths srv")
30         s.assertNil(err)
31
32         _, err = clientContainer.execAction("Configure2Veths cln")
33         s.assertNil(err)
34
35         clientAppSocketApi := fmt.Sprintf("app-socket-api %s/var/run/app_ns_sockets/2",
36                 clientContainer.GetContainerWorkDir())
37         err = clnVclConf.
38                 NewStanza("vcl").
39                 Append("rx-fifo-size 4000000").
40                 Append("tx-fifo-size 4000000").
41                 Append("app-scope-local").
42                 Append("app-scope-global").
43                 Append("use-mq-eventfd").
44                 Append(clientAppSocketApi).Close().
45                 SaveToFile(clnVcl)
46         s.assertNil(err)
47
48         serverAppSocketApi := fmt.Sprintf("app-socket-api %s/var/run/app_ns_sockets/1",
49                 serverContainer.GetContainerWorkDir())
50         err = srvVclConf.
51                 NewStanza("vcl").
52                 Append("rx-fifo-size 4000000").
53                 Append("tx-fifo-size 4000000").
54                 Append("app-scope-local").
55                 Append("app-scope-global").
56                 Append("use-mq-eventfd").
57                 Append(serverAppSocketApi).Close().
58                 SaveToFile(srvVcl)
59         s.assertNil(err)
60
61         s.log("attaching server to vpp")
62
63         // FIXME
64         time.Sleep(5 * time.Second)
65
66         srvEnv := append(os.Environ(), ldpreload, "VCL_CONFIG="+srvVcl)
67         go StartServerApp(srvCh, stopServerCh, srvEnv)
68
69         err = <-srvCh
70         s.assertNil(err)
71
72         s.log("attaching client to vpp")
73         var clnRes = make(chan string, 1)
74         clnEnv := append(os.Environ(), ldpreload, "VCL_CONFIG="+clnVcl)
75         go StartClientApp(clnEnv, clnCh, clnRes)
76         s.log(<-clnRes)
77
78         // wait for client's result
79         err = <-clnCh
80         s.assertNil(err)
81
82         // stop server
83         stopServerCh <- struct{}{}
84 }