diff options
-rw-r--r-- | xdelta3/go/src/regtest.go | 35 | ||||
-rw-r--r-- | xdelta3/go/src/xdelta/run.go | 19 |
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 | ||
13 | const ( | 14 | const ( |
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 | ||
88 | func (to *TestOutput) String() string { | 91 | func (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 | ||
53 | func (r *Runner) RunTest(name string, f func (t *TestGroup)) { | 53 | func (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 { |