diff --git a/extras/hs-test/container.go b/extras/hs-test/container.go
index 1f600f9..1dc49b7 100644
--- a/extras/hs-test/container.go
+++ b/extras/hs-test/container.go
@@ -27,6 +27,7 @@
 type Container struct {
 	suite            *HstSuite
 	isOptional       bool
+	runDetached      bool
 	name             string
 	image            string
 	extraRunningArgs string
@@ -65,6 +66,12 @@
 		container.isOptional = false
 	}
 
+	if runDetached, ok := yamlInput["run-detached"]; ok {
+		container.runDetached = runDetached.(bool)
+	} else {
+		container.runDetached = true
+	}
+
 	if _, ok := yamlInput["volumes"]; ok {
 		r := strings.NewReplacer("$HST_DIR", workDir)
 		for _, volu := range yamlInput["volumes"].([]interface{}) {
@@ -119,7 +126,7 @@
 }
 
 func (c *Container) getContainerArguments() string {
-	args := "--cap-add=all --privileged --network host --rm"
+	args := "--ulimit nofile=90000:90000 --cap-add=all --privileged --network host --rm"
 	args += c.getVolumesAsCliOption()
 	args += c.getEnvVarsAsCliOption()
 	args += " --name " + c.name + " " + c.image
@@ -139,19 +146,38 @@
 	return exechelper.Run(cmd)
 }
 
-func (c *Container) run() error {
+func (c *Container) prepareCommand() (string, error) {
 	if c.name == "" {
-		return fmt.Errorf("run container failed: name is blank")
+		return "", fmt.Errorf("run container failed: name is blank")
 	}
 
-	cmd := "docker run -d " + c.getContainerArguments()
+	cmd := "docker run "
+	if c.runDetached {
+		cmd += " -d"
+	}
+	cmd += " " + c.getContainerArguments()
+
 	c.suite.log(cmd)
-	err := exechelper.Run(cmd)
+	return cmd, nil
+}
+
+func (c *Container) combinedOutput() (string, error) {
+	cmd, err := c.prepareCommand()
 	if err != nil {
-		return fmt.Errorf("container run failed: %s", err)
+		return "", err
 	}
 
-	return nil
+	byteOutput, err := exechelper.CombinedOutput(cmd)
+	return string(byteOutput), err
+}
+
+func (c *Container) run() error {
+	cmd, err := c.prepareCommand()
+	if err != nil {
+		return err
+	}
+
+	return exechelper.Run(cmd)
 }
 
 func (c *Container) addVolume(hostDir string, containerDir string, isDefaultWorkDir bool) {
diff --git a/extras/hs-test/http_test.go b/extras/hs-test/http_test.go
index 310dc83..22f82c1 100644
--- a/extras/hs-test/http_test.go
+++ b/extras/hs-test/http_test.go
@@ -3,7 +3,6 @@
 import (
 	"fmt"
 	"os"
-	"os/exec"
 )
 
 func (s *NsSuite) TestHttpTps() {
@@ -60,39 +59,37 @@
 func runNginxPerf(s *NoTopoSuite, mode, ab_or_wrk string) error {
 	nRequests := 1000000
 	nClients := 2000
-	var args []string
-	var exeName string
 
 	serverAddress := s.netInterfaces[tapInterfaceName].peer.ip4AddressString()
 
-	if ab_or_wrk == "ab" {
-		args = []string{"-n", fmt.Sprintf("%d", nRequests), "-c",
-			fmt.Sprintf("%d", nClients)}
-		if mode == "rps" {
-			args = append(args, "-k")
-		} else if mode != "cps" {
-			return fmt.Errorf("invalid mode %s; expected cps/rps", mode)
-		}
-		args = append(args, "http://"+serverAddress+":80/64B.json")
-		exeName = "ab"
-	} else {
-		args = []string{"-c", fmt.Sprintf("%d", nClients), "-t", "2", "-d", "30",
-			"http://" + serverAddress + ":80/64B.json"}
-		exeName = "wrk"
-	}
-
 	vpp := s.getContainerByName("vpp").vppInstance
 
 	nginxCont := s.getContainerByName("nginx")
 	s.assertNil(nginxCont.run())
 	vpp.waitForApp("nginx-", 5)
 
-	cmd := exec.Command(exeName, args...)
-	s.log(cmd)
-	o, err := cmd.CombinedOutput()
-	s.log(string(o))
-	s.assertNil(err)
-	s.assertNotEmpty(o)
+	if ab_or_wrk == "ab" {
+		abCont := s.getContainerByName("ab")
+		args := fmt.Sprintf("-n %d -c %d", nRequests, nClients)
+		if mode == "rps" {
+			args += " -k"
+		} else if mode != "cps" {
+			return fmt.Errorf("invalid mode %s; expected cps/rps", mode)
+		}
+		args += " http://" + serverAddress + ":80/64B.json"
+		abCont.extraRunningArgs = args
+		o, err := abCont.combinedOutput()
+		s.log(o, err)
+		s.assertNil(err)
+	} else {
+		wrkCont := s.getContainerByName("wrk")
+		args := fmt.Sprintf("-c %d -t 2 -d 30 http://%s:80/64B.json", nClients,
+			serverAddress)
+		wrkCont.extraRunningArgs = args
+		o, err := wrkCont.combinedOutput()
+		s.log(o)
+		s.assertNil(err)
+	}
 	return nil
 }
 
diff --git a/extras/hs-test/resources/nginx/vcl.conf b/extras/hs-test/resources/nginx/vcl.conf
index 737b8a8..cfcd5d2 100644
--- a/extras/hs-test/resources/nginx/vcl.conf
+++ b/extras/hs-test/resources/nginx/vcl.conf
@@ -4,6 +4,7 @@
   add-segment-size 4000000000
   rx-fifo-size 4000000
   tx-fifo-size 4000000
+  event-queue-size 100000
 
   use-mq-eventfd
   app-socket-api /tmp/nginx/var/run/app_ns_sockets/default
diff --git a/extras/hs-test/topo-containers/single.yaml b/extras/hs-test/topo-containers/single.yaml
index a8ce489..83212c8 100644
--- a/extras/hs-test/topo-containers/single.yaml
+++ b/extras/hs-test/topo-containers/single.yaml
@@ -16,3 +16,11 @@
         is-default-work-dir: true
     image: "hs-test/nginx-ldp"
     is-optional: true
+  - name: "ab"
+    image: "jordi/ab"
+    is-optional: true
+    run-detached: false
+  - name: "wrk"
+    image: "skandyla/wrk"
+    is-optional: true
+    run-detached: false
\ No newline at end of file
diff --git a/extras/hs-test/vppinstance.go b/extras/hs-test/vppinstance.go
index d35cf45..c08514e 100644
--- a/extras/hs-test/vppinstance.go
+++ b/extras/hs-test/vppinstance.go
@@ -215,7 +215,7 @@
 	if err := vpp.apiChannel.SendRequest(createReq).ReceiveReply(createReply); err != nil {
 		return 0, err
 	}
-        veth.index = createReply.SwIfIndex
+	veth.index = createReply.SwIfIndex
 
 	// Set to up
 	upReq := &interfaces.SwInterfaceSetFlags{
