11 func (s *NsSuite) TestHttpTps() {
12 finished := make(chan error, 1)
13 server_ip := "10.0.0.2"
16 container := s.getContainerByName("vpp")
18 s.log("starting vpp..")
20 // start & configure vpp in the container
21 _, err := container.execAction("ConfigureHttpTps")
24 go startWget(finished, server_ip, port, "test_file_10M", "client")
30 func (s *VethsSuite) TestHttpCli() {
31 serverContainer := s.getContainerByName("server-vpp")
32 clientContainer := s.getContainerByName("client-vpp")
34 _, err := serverContainer.execAction("Configure2Veths srv")
37 _, err = clientContainer.execAction("Configure2Veths cln")
40 s.log("configured IPs...")
42 _, err = serverContainer.execAction("RunHttpCliSrv")
45 s.log("configured http server")
47 o, err := clientContainer.execAction("RunHttpCliCln /show/version")
50 s.assertContains(o, "<html>", "<html> not found in the result!")
53 func waitForApp(vppInst *VppInstance, appName string, timeout int) error {
54 for i := 0; i < timeout; i++ {
55 o, err := vppInst.vppctl("show app")
57 return fmt.Errorf("Error ocurred during 'show app'")
59 if strings.Contains(o, appName) {
62 time.Sleep(1 * time.Second)
64 return fmt.Errorf("Timeout while waiting for app '%s'", appName)
67 func (s *NoTopoSuite) TestNginx() {
69 finished := make(chan error, 1)
70 vppCont := s.getContainerByName("vpp")
71 vppInst := NewVppInstance(vppCont)
72 vppInst.actionFuncName = "ConfigureTap"
73 s.assertNil(vppInst.start(), "failed to start vpp")
75 nginxCont := s.getContainerByName("nginx")
76 s.assertNil(nginxCont.run())
78 err := waitForApp(vppInst, "-app", 5)
81 defer func() { os.Remove(query) }()
82 go startWget(finished, "10.10.10.1", "80", query, "")
83 s.assertNil(<-finished)
86 func runNginxPerf(s *NoTopoSuite, mode, ab_or_wrk string) error {
92 if ab_or_wrk == "ab" {
93 args = []string{"-n", fmt.Sprintf("%d", nRequests), "-c",
94 fmt.Sprintf("%d", nClients)}
96 args = append(args, "-k")
97 } else if mode != "cps" {
98 return fmt.Errorf("invalid mode %s; expected cps/rps", mode)
100 args = append(args, "http://10.10.10.1:80/64B.json")
103 args = []string{"-c", fmt.Sprintf("%d", nClients), "-t", "2", "-d", "30",
104 "http://10.10.10.1:80"}
108 vppCont := s.getContainerByName("vpp")
109 vppInst := NewVppInstance(vppCont)
110 vppInst.actionFuncName = "ConfigureTap"
111 s.assertNil(vppInst.start(), "failed to start vpp")
113 nginxCont := s.getContainerByName("nginx")
114 s.assertNil(nginxCont.run())
115 err := waitForApp(vppInst, "-app", 5)
118 cmd := exec.Command(exeName, args...)
120 o, _ := cmd.CombinedOutput()
125 func (s *NoTopoSuite) TestNginxPerfCps() {
126 s.assertNil(runNginxPerf(s, "cps", "ab"))
129 func (s *NoTopoSuite) TestNginxPerfRps() {
130 s.assertNil(runNginxPerf(s, "rps", "ab"))
133 func (s *NoTopoSuite) TestNginxPerfWrk() {
134 s.assertNil(runNginxPerf(s, "", "wrk"))