summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatus Fabian <matfabia@cisco.com>2024-09-06 15:30:59 +0200
committerFlorin Coras <florin.coras@gmail.com>2024-09-10 16:35:23 +0000
commit5b175eca2d6389bfb0c09839436df83cf8df334c (patch)
treedeccee366af3239f0d132f6a58aa8c88004b8ce9
parent6e129e3a4522f429fc6cee7f5bde2fde8082af83 (diff)
hs-test: upload via proxy tests
Type: test Change-Id: Id6b4e2348735081c827f814a814c976b601432ec Signed-off-by: Matus Fabian <matfabia@cisco.com>
-rw-r--r--extras/hs-test/docker/Dockerfile.curl1
-rw-r--r--extras/hs-test/docker/Dockerfile.nginx-server1
-rw-r--r--extras/hs-test/infra/suite_envoy_proxy.go6
-rw-r--r--extras/hs-test/infra/suite_vpp_proxy.go22
-rw-r--r--extras/hs-test/proxy_test.go29
-rw-r--r--extras/hs-test/resources/nginx/nginx_server.conf8
-rw-r--r--extras/hs-test/topo-containers/envoyProxy.yaml10
-rw-r--r--extras/hs-test/topo-containers/vppProxy.yaml9
8 files changed, 69 insertions, 17 deletions
diff --git a/extras/hs-test/docker/Dockerfile.curl b/extras/hs-test/docker/Dockerfile.curl
index 90f415f2990..fe9b4d917c7 100644
--- a/extras/hs-test/docker/Dockerfile.curl
+++ b/extras/hs-test/docker/Dockerfile.curl
@@ -7,6 +7,7 @@ RUN apt-get update \
&& rm -rf /var/lib/apt/lists/*
COPY script/build_curl.sh /build_curl.sh
+RUN fallocate -l 10MB /tmp/testFile
RUN apt-get update && apt-get install wget
RUN /build_curl.sh
diff --git a/extras/hs-test/docker/Dockerfile.nginx-server b/extras/hs-test/docker/Dockerfile.nginx-server
index 08f428d6a4b..ecb8f590f89 100644
--- a/extras/hs-test/docker/Dockerfile.nginx-server
+++ b/extras/hs-test/docker/Dockerfile.nginx-server
@@ -11,5 +11,6 @@ COPY script/nginx_server_entrypoint.sh /usr/bin/nginx_server_entrypoint.sh
COPY resources/nginx/html/index.html /usr/share/nginx/index.html
RUN fallocate -l 10MB /usr/share/nginx/httpTestFile
+RUN mkdir /usr/share/nginx/upload && chmod 777 /usr/share/nginx/upload
ENTRYPOINT ["nginx_server_entrypoint.sh"]
diff --git a/extras/hs-test/infra/suite_envoy_proxy.go b/extras/hs-test/infra/suite_envoy_proxy.go
index e1bfae293a2..52f94bc76aa 100644
--- a/extras/hs-test/infra/suite_envoy_proxy.go
+++ b/extras/hs-test/infra/suite_envoy_proxy.go
@@ -136,6 +136,12 @@ func (s *EnvoyProxySuite) CurlDownloadResource(uri string) {
s.AssertContains(log, "HTTP/1.1 200")
}
+func (s *EnvoyProxySuite) CurlUploadResource(uri, file string) {
+ args := fmt.Sprintf("--insecure --noproxy '*' -T %s %s", file, uri)
+ _, log := s.RunCurlContainer(args)
+ s.AssertContains(log, "HTTP/1.1 201")
+}
+
var _ = Describe("EnvoyProxySuite", Ordered, ContinueOnFailure, func() {
var s EnvoyProxySuite
BeforeAll(func() {
diff --git a/extras/hs-test/infra/suite_vpp_proxy.go b/extras/hs-test/infra/suite_vpp_proxy.go
index 94bd0f9aa4e..a13897eb8d0 100644
--- a/extras/hs-test/infra/suite_vpp_proxy.go
+++ b/extras/hs-test/infra/suite_vpp_proxy.go
@@ -18,6 +18,7 @@ const (
VppProxyContainerName = "vpp-proxy"
ClientTapInterfaceName = "hstcln"
ServerTapInterfaceName = "hstsrv"
+ CurlContainerTestFile = "/tmp/testFile"
)
type VppProxySuite struct {
@@ -102,7 +103,7 @@ func (s *VppProxySuite) CurlRequest(targetUri string) (string, string) {
}
func (s *VppProxySuite) CurlRequestViaTunnel(targetUri string, proxyUri string) (string, string) {
- args := fmt.Sprintf("--insecure -p -x %s %s", proxyUri, targetUri)
+ args := fmt.Sprintf("--max-time 60 --insecure -p -x %s %s", proxyUri, targetUri)
body, log := s.RunCurlContainer(args)
return body, log
}
@@ -114,11 +115,28 @@ func (s *VppProxySuite) CurlDownloadResource(uri string) {
s.AssertContains(log, "HTTP/1.1 200")
}
+func (s *VppProxySuite) CurlUploadResource(uri, file string) {
+ args := fmt.Sprintf("--insecure --noproxy '*' -T %s %s", file, uri)
+ _, log := s.RunCurlContainer(args)
+ s.AssertContains(log, "HTTP/1.1 201")
+}
+
func (s *VppProxySuite) CurlDownloadResourceViaTunnel(uri string, proxyUri string) {
- args := fmt.Sprintf("--insecure -p -x %s --remote-name --output-dir /tmp %s", proxyUri, uri)
+ args := fmt.Sprintf("--max-time 180 --insecure -p -x %s --remote-name --output-dir /tmp %s", proxyUri, uri)
_, log := s.RunCurlContainer(args)
s.AssertNotContains(log, "Recv failure")
+ s.AssertNotContains(log, "Operation timed out")
+ s.AssertContains(log, "CONNECT tunnel established")
s.AssertContains(log, "HTTP/1.1 200")
+ s.AssertNotContains(log, "bytes remaining to read")
+}
+
+func (s *VppProxySuite) CurlUploadResourceViaTunnel(uri, proxyUri, file string) {
+ args := fmt.Sprintf("--max-time 180 --insecure -p -x %s -T %s %s", proxyUri, file, uri)
+ _, log := s.RunCurlContainer(args)
+ s.AssertNotContains(log, "Operation timed out")
+ s.AssertContains(log, "CONNECT tunnel established")
+ s.AssertContains(log, "HTTP/1.1 201")
}
var _ = Describe("VppProxySuite", Ordered, ContinueOnFailure, func() {
diff --git a/extras/hs-test/proxy_test.go b/extras/hs-test/proxy_test.go
index 167cf25fa52..7ec97c76c02 100644
--- a/extras/hs-test/proxy_test.go
+++ b/extras/hs-test/proxy_test.go
@@ -6,8 +6,8 @@ import (
)
func init() {
- RegisterVppProxyTests(VppProxyHttpTcpTest, VppProxyHttpTlsTest)
- RegisterEnvoyProxyTests(EnvoyProxyHttpTcpTest)
+ RegisterVppProxyTests(VppProxyHttpGetTcpTest, VppProxyHttpGetTlsTest, VppProxyHttpPutTcpTest, VppProxyHttpPutTlsTest)
+ RegisterEnvoyProxyTests(EnvoyProxyHttpGetTcpTest, EnvoyProxyHttpPutTcpTest)
RegisterNginxProxyTests(NginxMirroringTest)
}
@@ -24,25 +24,44 @@ func configureVppProxy(s *VppProxySuite, proto string, proxyPort uint16) {
s.Log("proxy configured: " + output)
}
-func VppProxyHttpTcpTest(s *VppProxySuite) {
+func VppProxyHttpGetTcpTest(s *VppProxySuite) {
var proxyPort uint16 = 8080
configureVppProxy(s, "tcp", proxyPort)
uri := fmt.Sprintf("http://%s:%d/httpTestFile", s.VppProxyAddr(), proxyPort)
s.CurlDownloadResource(uri)
}
-func VppProxyHttpTlsTest(s *VppProxySuite) {
+func VppProxyHttpGetTlsTest(s *VppProxySuite) {
var proxyPort uint16 = 8080
configureVppProxy(s, "tls", proxyPort)
uri := fmt.Sprintf("https://%s:%d/httpTestFile", s.VppProxyAddr(), proxyPort)
s.CurlDownloadResource(uri)
}
-func EnvoyProxyHttpTcpTest(s *EnvoyProxySuite) {
+func VppProxyHttpPutTcpTest(s *VppProxySuite) {
+ var proxyPort uint16 = 8080
+ configureVppProxy(s, "tcp", proxyPort)
+ uri := fmt.Sprintf("http://%s:%d/upload/testFile", s.VppProxyAddr(), proxyPort)
+ s.CurlUploadResource(uri, CurlContainerTestFile)
+}
+
+func VppProxyHttpPutTlsTest(s *VppProxySuite) {
+ var proxyPort uint16 = 8080
+ configureVppProxy(s, "tls", proxyPort)
+ uri := fmt.Sprintf("https://%s:%d/upload/testFile", s.VppProxyAddr(), proxyPort)
+ s.CurlUploadResource(uri, CurlContainerTestFile)
+}
+
+func EnvoyProxyHttpGetTcpTest(s *EnvoyProxySuite) {
uri := fmt.Sprintf("http://%s:%d/httpTestFile", s.ProxyAddr(), s.ProxyPort())
s.CurlDownloadResource(uri)
}
+func EnvoyProxyHttpPutTcpTest(s *EnvoyProxySuite) {
+ uri := fmt.Sprintf("http://%s:%d/upload/testFile", s.ProxyAddr(), s.ProxyPort())
+ s.CurlUploadResource(uri, CurlContainerTestFile)
+}
+
// broken when CPUS > 1
func NginxMirroringTest(s *NginxProxySuite) {
s.SkipIfMultiWorker()
diff --git a/extras/hs-test/resources/nginx/nginx_server.conf b/extras/hs-test/resources/nginx/nginx_server.conf
index 80ea602e3a1..62d27cbbc65 100644
--- a/extras/hs-test/resources/nginx/nginx_server.conf
+++ b/extras/hs-test/resources/nginx/nginx_server.conf
@@ -22,6 +22,14 @@ http {
server_name {{.Address}};
root /usr/share/nginx;
index index.html index.htm;
+ location ~ "/upload/([0-9a-zA-Z-.]*)$" {
+ alias /usr/share/nginx/upload/$1;
+ client_body_temp_path /tmp;
+ client_max_body_size 200M;
+ dav_methods PUT;
+ create_full_put_path off;
+ dav_access all:rw;
+ }
location /64B {
return 200 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
}
diff --git a/extras/hs-test/topo-containers/envoyProxy.yaml b/extras/hs-test/topo-containers/envoyProxy.yaml
index 49808076f88..92dd9b93c47 100644
--- a/extras/hs-test/topo-containers/envoyProxy.yaml
+++ b/extras/hs-test/topo-containers/envoyProxy.yaml
@@ -1,17 +1,17 @@
---
volumes:
- - volume: &shared-vol-envoy-proxy
- host-dir: "$HST_VOLUME_DIR/shared-vol-envoy-proxy"
+ - volume: &shared-vol
+ host-dir: "$HST_VOLUME_DIR/shared-vol"
containers:
- name: "vpp"
volumes:
- - <<: *shared-vol-envoy-proxy
+ - <<: *shared-vol
container-dir: "/tmp/vpp"
is-default-work-dir: true
- name: "envoy-vcl"
volumes:
- - <<: *shared-vol-envoy-proxy
+ - <<: *shared-vol
container-dir: "/tmp/vpp-envoy"
is-default-work-dir: true
- host-dir: "$HST_DIR/resources/envoy"
@@ -26,7 +26,7 @@ containers:
is-optional: true
- name: "nginx-server"
volumes:
- - <<: *shared-vol-envoy-proxy
+ - <<: *shared-vol
container-dir: "/tmp/nginx"
is-default-work-dir: true
image: "hs-test/nginx-server"
diff --git a/extras/hs-test/topo-containers/vppProxy.yaml b/extras/hs-test/topo-containers/vppProxy.yaml
index c4bbbe9d528..a1f24bbc187 100644
--- a/extras/hs-test/topo-containers/vppProxy.yaml
+++ b/extras/hs-test/topo-containers/vppProxy.yaml
@@ -1,17 +1,17 @@
---
volumes:
- - volume: &shared-vol-vpp-proxy
- host-dir: "$HST_VOLUME_DIR/shared-vol-vpp-proxy"
+ - volume: &shared-vol
+ host-dir: "$HST_VOLUME_DIR/shared-vol"
containers:
- name: "vpp-proxy"
volumes:
- - <<: *shared-vol-vpp-proxy
+ - <<: *shared-vol
container-dir: "/tmp/vpp"
is-default-work-dir: true
- name: "nginx-server"
volumes:
- - <<: *shared-vol-vpp-proxy
+ - <<: *shared-vol
container-dir: "/tmp/nginx"
is-default-work-dir: true
image: "hs-test/nginx-server"
@@ -23,4 +23,3 @@ containers:
image: "hs-test/curl"
is-optional: true
run-detached: false
-