aboutsummaryrefslogtreecommitdiff
path: root/weed/filesys/page_writer/upload_pipeline_test.go
diff options
context:
space:
mode:
authorChris Lu <chrislusf@users.noreply.github.com>2022-01-17 23:04:30 -0800
committerGitHub <noreply@github.com>2022-01-17 23:04:30 -0800
commite271721d4ec04365b15be96d009e20cc6f64317e (patch)
tree233f7e5b9b96abde346504474d9e5d739d0ff3b3 /weed/filesys/page_writer/upload_pipeline_test.go
parent1bd6d289d48ea3ae3c1461bf090ce0ffa6f2505f (diff)
parentb2acfd75e9155d49f32eea8d6247d0c8661ec998 (diff)
downloadseaweedfs-e271721d4ec04365b15be96d009e20cc6f64317e.tar.xz
seaweedfs-e271721d4ec04365b15be96d009e20cc6f64317e.zip
Merge pull request #2596 from chrislusf/memory_chunked_write
fix concurrency issues found in tests
Diffstat (limited to 'weed/filesys/page_writer/upload_pipeline_test.go')
-rw-r--r--weed/filesys/page_writer/upload_pipeline_test.go47
1 files changed, 47 insertions, 0 deletions
diff --git a/weed/filesys/page_writer/upload_pipeline_test.go b/weed/filesys/page_writer/upload_pipeline_test.go
new file mode 100644
index 000000000..d17948251
--- /dev/null
+++ b/weed/filesys/page_writer/upload_pipeline_test.go
@@ -0,0 +1,47 @@
+package page_writer
+
+import (
+ "github.com/chrislusf/seaweedfs/weed/util"
+ "testing"
+)
+
+func TestUploadPipeline(t *testing.T) {
+
+ uploadPipeline := NewUploadPipeline("", nil, 2*1024*1024, nil)
+
+ writeRange(uploadPipeline, 0, 131072)
+ writeRange(uploadPipeline, 131072, 262144)
+ writeRange(uploadPipeline, 262144, 1025536)
+
+ confirmRange(t, uploadPipeline, 0, 1025536)
+
+ writeRange(uploadPipeline, 1025536, 1296896)
+
+ confirmRange(t, uploadPipeline, 1025536, 1296896)
+
+ writeRange(uploadPipeline, 1296896, 2162688)
+
+ confirmRange(t, uploadPipeline, 1296896, 2162688)
+
+ confirmRange(t, uploadPipeline, 1296896, 2162688)
+}
+
+// startOff and stopOff must be divided by 4
+func writeRange(uploadPipeline *UploadPipeline, startOff, stopOff int64) {
+ p := make([]byte, 4)
+ for i := startOff / 4; i < stopOff/4; i += 4 {
+ util.Uint32toBytes(p, uint32(i))
+ uploadPipeline.SaveDataAt(p, i)
+ }
+}
+
+func confirmRange(t *testing.T, uploadPipeline *UploadPipeline, startOff, stopOff int64) {
+ p := make([]byte, 4)
+ for i := startOff; i < stopOff/4; i += 4 {
+ uploadPipeline.MaybeReadDataAt(p, i)
+ x := util.BytesToUint32(p)
+ if x != uint32(i) {
+ t.Errorf("expecting %d found %d at offset [%d,%d)", i, x, i, i+4)
+ }
+ }
+}