9
9
"log"
10
10
"os"
11
11
"runtime/debug"
12
+ "strings"
12
13
"testing"
13
14
)
14
15
@@ -19,9 +20,16 @@ func failOnError(t *testing.T, msg string, err error) {
19
20
}
20
21
}
21
22
22
- func testCompressionDecompression (t * testing.T , dict []byte , payload []byte ) {
23
+ func testCompressionDecompression (t * testing.T , dict []byte , payload []byte , nbWorkers int ) {
23
24
var w bytes.Buffer
24
25
writer := NewWriterLevelDict (& w , DefaultCompression , dict )
26
+
27
+ if nbWorkers > 1 {
28
+ if err := writer .SetNbWorkers (nbWorkers ); err == ErrNoParallelSupport {
29
+ t .Skip ()
30
+ }
31
+ }
32
+
25
33
_ , err := writer .Write (payload )
26
34
failOnError (t , "Failed writing to compress object" , err )
27
35
failOnError (t , "Failed to close compress object" , writer .Close ())
@@ -79,19 +87,19 @@ func TestResize(t *testing.T) {
79
87
}
80
88
81
89
func TestStreamSimpleCompressionDecompression (t * testing.T ) {
82
- testCompressionDecompression (t , nil , []byte ("Hello world!" ))
90
+ testCompressionDecompression (t , nil , []byte ("Hello world!" ), 1 )
83
91
}
84
92
85
93
func TestStreamEmptySlice (t * testing.T ) {
86
- testCompressionDecompression (t , nil , []byte {})
94
+ testCompressionDecompression (t , nil , []byte {}, 1 )
87
95
}
88
96
89
97
func TestZstdReaderLong (t * testing.T ) {
90
98
var long bytes.Buffer
91
99
for i := 0 ; i < 10000 ; i ++ {
92
100
long .Write ([]byte ("Hellow World!" ))
93
101
}
94
- testCompressionDecompression (t , nil , long .Bytes ())
102
+ testCompressionDecompression (t , nil , long .Bytes (), 1 )
95
103
}
96
104
97
105
func doStreamCompressionDecompression () error {
@@ -186,7 +194,7 @@ func TestStreamRealPayload(t *testing.T) {
186
194
if raw == nil {
187
195
t .Skip (ErrNoPayloadEnv )
188
196
}
189
- testCompressionDecompression (t , nil , raw )
197
+ testCompressionDecompression (t , nil , raw , 1 )
190
198
}
191
199
192
200
func TestStreamEmptyPayload (t * testing.T ) {
@@ -398,12 +406,21 @@ func TestStreamWriteNoGoPointers(t *testing.T) {
398
406
})
399
407
}
400
408
409
+ func TestStreamSetNbWorkers (t * testing.T ) {
410
+ // Build a big string first
411
+ s := strings .Repeat ("foobaa" , 1000 * 1000 )
412
+
413
+ nbWorkers := 4
414
+ testCompressionDecompression (t , nil , []byte (s ), nbWorkers )
415
+ }
416
+
401
417
func BenchmarkStreamCompression (b * testing.B ) {
402
418
if raw == nil {
403
419
b .Fatal (ErrNoPayloadEnv )
404
420
}
405
421
var intermediate bytes.Buffer
406
422
w := NewWriter (& intermediate )
423
+ // w.SetNbWorkers(8)
407
424
defer w .Close ()
408
425
b .SetBytes (int64 (len (raw )))
409
426
b .ResetTimer ()
0 commit comments