@@ -5,8 +5,10 @@ package ipns
5
5
import (
6
6
"bytes"
7
7
"crypto/rand"
8
+ "fmt"
8
9
"io/ioutil"
9
10
"os"
11
+ "sync"
10
12
"testing"
11
13
12
14
fstest "github.com/jbenet/go-ipfs/Godeps/_workspace/src/bazil.org/fuse/fs/fstestutil"
@@ -64,7 +66,6 @@ func writeFileData(t *testing.T, data []byte, path string) []byte {
64
66
}
65
67
66
68
func verifyFile (t * testing.T , path string , data []byte ) {
67
- t .Logf ("verify %s" , path )
68
69
fi , err := os .Open (path )
69
70
if err != nil {
70
71
t .Fatal (err )
@@ -305,6 +306,40 @@ func TestAppendFile(t *testing.T) {
305
306
}
306
307
}
307
308
309
+ func TestConcurrentWrites (t * testing.T ) {
310
+ if testing .Short () {
311
+ t .SkipNow ()
312
+ }
313
+ _ , mnt := setupIpnsTest (t , nil )
314
+ defer mnt .Close ()
315
+
316
+ nactors := 4
317
+ filesPerActor := 400
318
+ fileSize := 2000
319
+
320
+ data := make ([][][]byte , nactors )
321
+
322
+ wg := sync.WaitGroup {}
323
+ for i := 0 ; i < nactors ; i ++ {
324
+ data [i ] = make ([][]byte , filesPerActor )
325
+ wg .Add (1 )
326
+ go func (n int ) {
327
+ defer wg .Done ()
328
+ for j := 0 ; j < filesPerActor ; j ++ {
329
+ out := writeFile (t , fileSize , mnt .Dir + fmt .Sprintf ("/local/%dFILE%d" , n , j ))
330
+ data [n ][j ] = out
331
+ }
332
+ }(i )
333
+ }
334
+ wg .Wait ()
335
+
336
+ for i := 0 ; i < nactors ; i ++ {
337
+ for j := 0 ; j < filesPerActor ; j ++ {
338
+ verifyFile (t , mnt .Dir + fmt .Sprintf ("/local/%dFILE%d" , i , j ), data [i ][j ])
339
+ }
340
+ }
341
+ }
342
+
308
343
/*
309
344
func TestFastRepublish(t *testing.T) {
310
345
if testing.Short() {
0 commit comments