diff options
Diffstat (limited to 'extras/hs-test/nginx_test.go')
-rw-r--r-- | extras/hs-test/nginx_test.go | 80 |
1 files changed, 40 insertions, 40 deletions
diff --git a/extras/hs-test/nginx_test.go b/extras/hs-test/nginx_test.go index 45358435546..7a6f5b3c182 100644 --- a/extras/hs-test/nginx_test.go +++ b/extras/hs-test/nginx_test.go @@ -1,69 +1,59 @@ package main import ( - . "fd.io/hs-test/infra" "fmt" - "github.com/edwarnicke/exechelper" - . "github.com/onsi/ginkgo/v2" "os" "strings" + + . "fd.io/hs-test/infra" + . "github.com/onsi/ginkgo/v2" ) func init() { - RegisterNginxTests(MirroringTest) RegisterNoTopoTests(NginxHttp3Test, NginxAsServerTest, NginxPerfCpsTest, NginxPerfRpsTest, NginxPerfWrkTest, NginxPerfCpsInterruptModeTest, NginxPerfRpsInterruptModeTest, NginxPerfWrkInterruptModeTest) -} - -// broken when CPUS > 1 -func MirroringTest(s *NginxSuite) { - s.SkipIfMultiWorker() - proxyAddress := s.GetInterfaceByName(MirroringClientInterfaceName).Peer.Ip4AddressString() - - path := "/64B.json" - - testCommand := "wrk -c 20 -t 10 -d 10 http://" + proxyAddress + ":80" + path - s.Log(testCommand) - o, _ := exechelper.Output(testCommand) - s.Log(string(o)) - s.AssertNotEmpty(o) - - vppProxyContainer := s.GetContainerByName(VppProxyContainerName) - s.AssertEqual(0, vppProxyContainer.VppInstance.GetSessionStat("no lcl port")) + RegisterNoTopoSoloTests(NginxPerfRpsMultiThreadTest, NginxPerfCpsMultiThreadTest) } func NginxHttp3Test(s *NoTopoSuite) { - s.SkipUnlessExtendedTestsBuilt() - query := "index.html" - nginxCont := s.GetContainerByName("nginx-http3") - nginxCont.Run() + nginxCont := s.GetContainerByName(NginxHttp3ContainerName) + + nginxCont.Create() + s.CreateNginxHttp3Config(nginxCont) + nginxCont.Start() vpp := s.GetContainerByName("vpp").VppInstance vpp.WaitForApp("nginx-", 5) - serverAddress := s.GetInterfaceByName(TapInterfaceName).Peer.Ip4AddressString() + serverAddress := s.VppAddr() defer func() { os.Remove(query) }() curlCont := s.GetContainerByName("curl") args := fmt.Sprintf("curl --noproxy '*' --local-port 55444 --http3-only -k https://%s:8443/%s", serverAddress, query) curlCont.ExtraRunningArgs = args curlCont.Run() - o, err := curlCont.GetOutput() - s.Log(o) - s.AssertEmpty(err) - s.AssertContains(o, "<http>", "<http> not found in the result!") + body, stats := curlCont.GetOutput() + s.Log(body) + s.Log(stats) + s.AssertNotContains(stats, "refused") + s.AssertContains(stats, "100") + s.AssertContains(body, "<http>", "<http> not found in the result!") } + func NginxAsServerTest(s *NoTopoSuite) { query := "return_ok" finished := make(chan error, 1) nginxCont := s.GetContainerByName("nginx") - nginxCont.Run() + nginxCont.Create() + s.CreateNginxConfig(nginxCont, false) + s.AddNginxVclConfig(false) + nginxCont.Start() vpp := s.GetContainerByName("vpp").VppInstance vpp.WaitForApp("nginx-", 5) - serverAddress := s.GetInterfaceByName(TapInterfaceName).Peer.Ip4AddressString() + serverAddress := s.VppAddr() defer func() { os.Remove(query) }() go func() { @@ -83,16 +73,19 @@ func parseString(s, pattern string) string { return "" } -func runNginxPerf(s *NoTopoSuite, mode, ab_or_wrk string) error { +func runNginxPerf(s *NoTopoSuite, mode, ab_or_wrk string, multiThreadWorkers bool) error { nRequests := 1000000 nClients := 1000 - serverAddress := s.GetInterfaceByName(TapInterfaceName).Peer.Ip4AddressString() + serverAddress := s.VppAddr() vpp := s.GetContainerByName("vpp").VppInstance nginxCont := s.GetContainerByName(SingleTopoContainerNginx) - nginxCont.Run() + nginxCont.Create() + s.AddNginxVclConfig(multiThreadWorkers) + s.CreateNginxConfig(nginxCont, multiThreadWorkers) + nginxCont.Start() vpp.WaitForApp("nginx-", 5) if ab_or_wrk == "ab" { @@ -107,6 +100,7 @@ func runNginxPerf(s *NoTopoSuite, mode, ab_or_wrk string) error { args += " -r" args += " http://" + serverAddress + ":80/64B.json" abCont.ExtraRunningArgs = args + s.Log("Test might take up to 2 minutes to finish. Please wait") abCont.Run() o, err := abCont.GetOutput() rps := parseString(o, "Requests per second:") @@ -132,18 +126,24 @@ func NginxPerfCpsInterruptModeTest(s *NoTopoSuite) { NginxPerfCpsTest(s) } -// unstable with multiple workers +func NginxPerfCpsMultiThreadTest(s *NoTopoSuite) { + s.AssertNil(runNginxPerf(s, "cps", "ab", true)) +} + func NginxPerfCpsTest(s *NoTopoSuite) { - s.SkipIfMultiWorker() - s.AssertNil(runNginxPerf(s, "cps", "ab")) + s.AssertNil(runNginxPerf(s, "cps", "ab", false)) } func NginxPerfRpsInterruptModeTest(s *NoTopoSuite) { NginxPerfRpsTest(s) } +func NginxPerfRpsMultiThreadTest(s *NoTopoSuite) { + s.AssertNil(runNginxPerf(s, "rps", "ab", true)) +} + func NginxPerfRpsTest(s *NoTopoSuite) { - s.AssertNil(runNginxPerf(s, "rps", "ab")) + s.AssertNil(runNginxPerf(s, "rps", "ab", false)) } func NginxPerfWrkInterruptModeTest(s *NoTopoSuite) { @@ -151,5 +151,5 @@ func NginxPerfWrkInterruptModeTest(s *NoTopoSuite) { } func NginxPerfWrkTest(s *NoTopoSuite) { - s.AssertNil(runNginxPerf(s, "", "wrk")) + s.AssertNil(runNginxPerf(s, "", "wrk", false)) } |