From 61955ca830a5024dff38f34059ec2e209dafae09 Mon Sep 17 00:00:00 2001 From: Gaius Date: Wed, 25 Sep 2024 15:56:06 +0800 Subject: [PATCH] feat: add file-server tools Signed-off-by: Gaius --- Makefile | 17 ++++++++---- benchmark/go.mod | 1 + benchmark/go.sum | 2 ++ benchmark/pkg/backend/file_server.go | 3 +++ benchmark/pkg/dragonfly/dragonfly.go | 2 +- tools/file-server/Dockerfile | 19 +++++++++++++ tools/file-server/file-server.yaml | 40 ++++++++++++++++++++++++++++ 7 files changed, 78 insertions(+), 6 deletions(-) create mode 100644 tools/file-server/Dockerfile create mode 100644 tools/file-server/file-server.yaml diff --git a/Makefile b/Makefile index 981f175..cf5bab7 100644 --- a/Makefile +++ b/Makefile @@ -1,10 +1,10 @@ all: help -# Run markdown lint -markdownlint: - @echo "Begin to markdownlint." - @./hack/markdownlint.sh -.PHONY: markdownlint +# Build file-server image. +docker-build-file-server: + @echo "Begin to use docker build file-server image." + docker build -t file-server:latest -f ./tools/file-server/Dockerfile . +.PHONY: docker-build-file-server # Run code lint lint: markdownlint @@ -12,6 +12,12 @@ lint: markdownlint @golangci-lint run .PHONY: lint +# Run markdown lint +markdownlint: + @echo "Begin to markdownlint." + @./hack/markdownlint.sh +.PHONY: markdownlint + # Clear compiled files clean: @go clean @@ -19,6 +25,7 @@ clean: .PHONY: clean help: + @echo "make docker-build-file-server build file-server image" @echo "make lint run code lint" @echo "make markdownlint run markdown lint" @echo "make clean clean" diff --git a/benchmark/go.mod b/benchmark/go.mod index 874d65d..cda1099 100644 --- a/benchmark/go.mod +++ b/benchmark/go.mod @@ -3,6 +3,7 @@ module github.com/dragonflyoss/perf-tests/benchmark go 1.22.4 require ( + github.com/google/uuid v1.4.0 github.com/sirupsen/logrus v1.9.3 github.com/spf13/cobra v1.8.1 github.com/spf13/viper v1.19.0 diff --git a/benchmark/go.sum b/benchmark/go.sum index f78e4f0..b9fe39c 100644 --- a/benchmark/go.sum +++ b/benchmark/go.sum @@ -9,6 +9,8 @@ github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nos github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= +github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= diff --git a/benchmark/pkg/backend/file_server.go b/benchmark/pkg/backend/file_server.go index 0c5e1bd..f3a703b 100644 --- a/benchmark/pkg/backend/file_server.go +++ b/benchmark/pkg/backend/file_server.go @@ -20,6 +20,8 @@ import ( "fmt" "net/url" "path" + + "github.com/google/uuid" ) type FileSizeLevel string @@ -58,6 +60,7 @@ func (f *fileServer) GetFileURL(fileSizeLevel FileSizeLevel, tag string) (*url.U // Add tag query parameter. query := u.Query() query.Set("tag", tag) + query.Set("uuid", uuid.New().String()) u.RawQuery = query.Encode() return u, nil } diff --git a/benchmark/pkg/dragonfly/dragonfly.go b/benchmark/pkg/dragonfly/dragonfly.go index fda3c9c..dbc2cb9 100644 --- a/benchmark/pkg/dragonfly/dragonfly.go +++ b/benchmark/pkg/dragonfly/dragonfly.go @@ -255,7 +255,7 @@ func (d *dragonfly) downloadFileByProxy(ctx context.Context, podExec *util.PodEx // getClientPods returns the client pods. func (d *dragonfly) getClientPods(ctx context.Context) ([]string, error) { - pods, err := util.GetPods(ctx, d.namespace, "app=client") + pods, err := util.GetPods(ctx, d.namespace, "component=client") if err != nil { logrus.Errorf("failed to get pods: %v", err) return nil, err diff --git a/tools/file-server/Dockerfile b/tools/file-server/Dockerfile new file mode 100644 index 0000000..7e3cd19 --- /dev/null +++ b/tools/file-server/Dockerfile @@ -0,0 +1,19 @@ +FROM nginx:alpine + +RUN dd if=/dev/zero of=/usr/share/nginx/html/nano bs=1 count=1 + +RUN dd if=/dev/zero of=/usr/share/nginx/html/micro bs=1K count=10 + +RUN dd if=/dev/zero of=/usr/share/nginx/html/small bs=1M count=1 + +RUN dd if=/dev/zero of=/usr/share/nginx/html/medium bs=1M count=10 + +RUN dd if=/dev/zero of=/usr/share/nginx/html/large bs=1G count=1 + +RUN dd if=/dev/zero of=/usr/share/nginx/html/xlarge bs=1G count=10 + +RUN dd if=/dev/zero of=/usr/share/nginx/html/xxlarge bs=1G count=30 + +EXPOSE 80 + +CMD ["nginx", "-g", "daemon off;"] diff --git a/tools/file-server/file-server.yaml b/tools/file-server/file-server.yaml new file mode 100644 index 0000000..f25c3bb --- /dev/null +++ b/tools/file-server/file-server.yaml @@ -0,0 +1,40 @@ +--- +apiVersion: v1 +kind: Service +metadata: + name: file-server +spec: + selector: + app: dragonfly + component: file-server + type: ClusterIP + ports: + - name: nginx + port: 80 + protocol: TCP + targetPort: 80 + +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: file-server +spec: + serviceName: file-server + selector: + matchLabels: + app: dragonfly + component: file-server + replicas: 1 + template: + metadata: + labels: + app: dragonfly + component: file-server + spec: + containers: + - name: file-server + image: dragonflyoss/file-server:latest + imagePullPolicy: "IfNotPresent" + ports: + - containerPort: 80