uploader: test replication
diff --git a/client/client.go b/client/client.go
index 7a98d79..a578dea 100644
--- a/client/client.go
+++ b/client/client.go
@@ -16,7 +16,7 @@
return &FileUploader{client}
}
-func (fu *FileUploader) Upload(f *os.File) {
+func (fu *FileUploader) Upload(f *os.File, numReplicas int) {
info, err := f.Stat()
if err != nil {
return
@@ -24,13 +24,13 @@
resp, err := fu.client.CreateBlob(
context.Background(), &api.CreateBlobRequest{
SizeBytes: int32(info.Size()),
- NumReplicas: 1})
- if len(resp.Chunk) != 1 {
- panic(resp)
- }
+ NumReplicas: int32(numReplicas)})
if err != nil {
panic(err)
}
+ if len(resp.Chunk) != 1 {
+ panic(resp)
+ }
primaryListener := chunk.NewNonChangingPrimaryReplicaChangeListener(
resp.Chunk[0].ChunkId,
resp.Chunk[0].Server[0])
diff --git a/client/client_test.go b/client/client_test.go
index 21443d4..269f643 100644
--- a/client/client_test.go
+++ b/client/client_test.go
@@ -32,6 +32,31 @@
if err != nil {
t.Error(err)
}
- uploader.Upload(f)
+ uploader.Upload(f, 1)
}
+
+func TestUploadSmallFileWithReplication(t *testing.T) {
+ env, err := pt.NewInMemoryEnv(3)
+ if err != nil {
+ t.Error(err)
+ }
+ defer env.Stop()
+
+ var opts []grpc.DialOption
+ opts = append(opts, grpc.WithInsecure())
+ opts = append(opts, grpc.WithBlock())
+ conn, err := grpc.Dial("unix:///tmp/pcloud/master", opts...)
+ if err != nil {
+ t.Error(err)
+ }
+ defer conn.Close()
+ client := api.NewMetadataStorageClient(conn)
+
+ uploader := NewFileUploader(client)
+ f, err := os.Open("testdata/foo")
+ if err != nil {
+ t.Error(err)
+ }
+ uploader.Upload(f, 2)
+}