summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--xdelta3/go/src/regtest.go35
-rw-r--r--xdelta3/go/src/xdelta/run.go19
2 files changed, 29 insertions, 25 deletions
diff --git a/xdelta3/go/src/regtest.go b/xdelta3/go/src/regtest.go
index f5c5480..24229f9 100644
--- a/xdelta3/go/src/regtest.go
+++ b/xdelta3/go/src/regtest.go
@@ -5,15 +5,16 @@ import (
5 "io" 5 "io"
6 "path" 6 "path"
7 "os" 7 "os"
8 "sort"
8 "time" 9 "time"
9 10
10 "xdelta" 11 "xdelta"
11) 12)
12 13
13const ( 14const (
14 xdataset = "/Users/jmacd/src/testdata" 15 xdataset = "/volume/home/jmacd/src/testdata"
15 xcompare = "/Users/jmacd/src/xdelta3-3.0.10/xdelta3" 16 xcompare = "/volume/home/jmacd/src/xdelta3-3.0.10/xdelta3"
16 xdelta3 = "/Users/jmacd/src/xdelta-devel/xdelta3/xdelta3" 17 xdelta3 = "/volume/home/jmacd/src/xdelta-devel/xdelta3/xdelta3"
17 seed = 1422253499919909358 18 seed = 1422253499919909358
18) 19)
19 20
@@ -34,10 +35,12 @@ func (c Config) smokeTest(t *xdelta.TestGroup, p xdelta.Program) {
34 35
35 enc, err := t.Exec("encode", p, true, []string{"-e"}) 36 enc, err := t.Exec("encode", p, true, []string{"-e"})
36 if err != nil { 37 if err != nil {
38 fmt.Println(err)
37 t.Panic(err) 39 t.Panic(err)
38 } 40 }
39 dec, err := t.Exec("decode", p, true, []string{"-d"}) 41 dec, err := t.Exec("decode", p, true, []string{"-d"})
40 if err != nil { 42 if err != nil {
43 fmt.Println(err)
41 t.Panic(err) 44 t.Panic(err)
42 } 45 }
43 46
@@ -86,8 +89,8 @@ func (to *TestOutput) Add(a TestOutput) {
86} 89}
87 90
88func (to *TestOutput) String() string { 91func (to *TestOutput) String() string {
89 return fmt.Sprintf("SIZE: %v\tTIME: %v", 92 return fmt.Sprintf("SIZE: %v\tT: %v\tTSYS: %v\tDT: %v\tDTSYS: %v",
90 to.encoded, to.encDuration) 93 to.encoded, to.encDuration, to.encSysDuration, to.decDuration, to.encSysDuration)
91} 94}
92 95
93// P is the test program, Q is the reference version. 96// P is the test program, Q is the reference version.
@@ -110,17 +113,19 @@ func (cfg Config) datasetTest(t *xdelta.TestGroup, p, q xdelta.Program) {
110 total += d.Size() 113 total += d.Size()
111 } 114 }
112 meansize := total / int64(len(dents)) 115 meansize := total / int64(len(dents))
116 largest := uint(20)
117 for ; largest <= 31 && 1<<largest < meansize; largest++ {}
118
119 sort.Strings(paths)
120
113 testSum := map[uint]*TestOutput{} 121 testSum := map[uint]*TestOutput{}
114 compSum := map[uint]*TestOutput{} 122 compSum := map[uint]*TestOutput{}
123
115 for _, in1 := range paths { 124 for _, in1 := range paths {
116 for _, in2 := range paths { 125 for _, in2 := range paths {
117 if in1 == in2 { continue } 126 if in1 == in2 { continue }
118 127
119 largest := uint(20) 128 // 1/4, 1/2, and 1 of the power-of-2 rounded-up mean size
120 for ; largest <= 31 && 1<<largest < meansize; largest++ {}
121
122 // 1/4, 1/2, and 1/1 of the power-of-2 rounded-up mean size
123 // TODO NOTE
124 for b := largest - 2; b <= largest; b++ { 129 for b := largest - 2; b <= largest; b++ {
125 if _, has := testSum[b]; !has { 130 if _, has := testSum[b]; !has {
126 testSum[b] = &TestOutput{} 131 testSum[b] = &TestOutput{}
@@ -166,16 +171,16 @@ func (pt *PairTest) datasetPairTest(t *xdelta.TestGroup, meanSize int64) {
166 cfg := pt.Config 171 cfg := pt.Config
167 eargs := []string{"-e", fmt.Sprint("-B", cfg.srcbuf_size), // "-q", 172 eargs := []string{"-e", fmt.Sprint("-B", cfg.srcbuf_size), // "-q",
168 fmt.Sprint("-W", cfg.window_size), "-s", pt.source, 173 fmt.Sprint("-W", cfg.window_size), "-s", pt.source,
169 "-I0", pt.target} 174 "-I0", "-S", "none", pt.target}
170 enc, err := t.Exec("encode", pt.program, false, eargs) 175 enc, err := t.Exec("encode", pt.program, false, eargs)
171 if err != nil { 176 if err != nil {
172 t.Panic(err) 177 t.Panic(err)
173 } 178 }
174 179
175 // TODO HACK "* 2" for known / fixed bug in decoder. Helps compare 180 dargs := []string{"-dc", fmt.Sprint("-B", cfg.srcbuf_size), //"-q",
176 // encoder perf in reasonable time, makes invalid decoder results. 181 fmt.Sprint("-W", cfg.window_size), "-s", pt.source,
177 dargs := []string{"-dc", fmt.Sprint("-B", cfg.srcbuf_size * 2), //"-q", 182 "-S", "none"}
178 fmt.Sprint("-W", cfg.window_size), "-s", pt.source} 183
179 dec, err := t.Exec("decode", pt.program, false, dargs) 184 dec, err := t.Exec("decode", pt.program, false, dargs)
180 if err != nil { 185 if err != nil {
181 t.Panic(err) 186 t.Panic(err)
diff --git a/xdelta3/go/src/xdelta/run.go b/xdelta3/go/src/xdelta/run.go
index 3b07178..6523a1c 100644
--- a/xdelta3/go/src/xdelta/run.go
+++ b/xdelta3/go/src/xdelta/run.go
@@ -52,17 +52,16 @@ func (r *Runner) Cleanup() {
52 52
53func (r *Runner) RunTest(name string, f func (t *TestGroup)) { 53func (r *Runner) RunTest(name string, f func (t *TestGroup)) {
54 t := r.newTestGroup(name) 54 t := r.newTestGroup(name)
55 var rec interface{} 55 c := make(chan interface{})
56 defer func() { 56 go func() {
57 if r := recover(); r != nil { 57 defer func() {
58 fmt.Println("PANIC in ", name, ": ", r) 58 c <- recover()
59 rec = r 59 }()
60 } else { 60 fmt.Println("Testing", name, "...")
61 // Goexit 61 f(t)
62 } 62 c <- nil
63 }() 63 }()
64 fmt.Println("Testing", name, "...") 64 rec := <- c
65 f(t)
66 if t.errors == nil && rec == nil { 65 if t.errors == nil && rec == nil {
67 fmt.Println("Success:", name) 66 fmt.Println("Success:", name)
68 } else { 67 } else {