summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fs.go1
-rw-r--r--runner.go3
-rw-r--r--testcase.go9
3 files changed, 13 insertions, 0 deletions
diff --git a/fs.go b/fs.go
index 04a3522..b76f182 100644
--- a/fs.go
+++ b/fs.go
@@ -77,6 +77,7 @@ func collectUnits(root string, cfgs []AdapterConfig) []TestCase {
for i := range tcs {
tcs[i].Cname = Cname(root, tcs[i].Path)
+ tcs[i].readIdx = i
}
return tcs
diff --git a/runner.go b/runner.go
index 9c1e385..15f08ae 100644
--- a/runner.go
+++ b/runner.go
@@ -4,6 +4,7 @@ import (
"log"
"os"
"path"
+ "sort"
)
type Runner struct {
@@ -128,6 +129,8 @@ func (r Runner) Evaluate(tcs []TestCase) []TestResult {
for range testSets {
results = append(results, (<-c)...)
}
+
+ sort.Sort(ByReadIdx(results))
safeCd(r.dirs.Config())
diff --git a/testcase.go b/testcase.go
index 19f1e58..d1db292 100644
--- a/testcase.go
+++ b/testcase.go
@@ -45,8 +45,17 @@ type TestCase struct {
Cname string
Config TestCaseConfig
+
+ // Reorder according to original read order after concurrent operation
+ readIdx int
}
func (tc TestCase) AdapterConfig() InheritableConfig {
return tc.Config.adapters_[*tc.Config.Adapter]
}
+
+type ByReadIdx []TestResult
+
+func (a ByReadIdx) Len() int { return len(a) }
+func (a ByReadIdx) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
+func (a ByReadIdx) Less(i, j int) bool { return a[i].Tc.readIdx < a[j].Tc.readIdx }