[gold] mapper.go: Move DiffId and SplitDiffId to diffstore/common/common.go.
Bug: skia:9350
Change-Id: Icd1b789e6e54be7157f7e5c617cc540a8046cb80
Reviewed-on: https://skia-review.googlesource.com/c/buildbot/+/236116
Auto-Submit: Leandro Lovisolo <lovisolo@google.com>
Commit-Queue: Kevin Lubick <kjlubick@google.com>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
diff --git a/golden/go/diffstore/common/common.go b/golden/go/diffstore/common/common.go
index 3bce304..e66ac88 100644
--- a/golden/go/diffstore/common/common.go
+++ b/golden/go/diffstore/common/common.go
@@ -7,6 +7,7 @@
"io"
"os"
"path"
+ "strings"
"github.com/boltdb/bolt"
"go.skia.org/infra/go/fileutil"
@@ -18,6 +19,10 @@
const (
// IMG_EXTENSION is the default extension of images.
IMG_EXTENSION = "png"
+
+ // DiffImageSeparator is the character that separates two image ids in the
+ // resulting diff image.
+ DiffImageSeparator = "-"
)
// SaveFile writes the given file to disk.
@@ -96,3 +101,26 @@
}
return s
}
+
+// Takes two image IDs and returns a unique diff ID.
+// Note: DiffID(a,b) == DiffID(b, a) holds.
+func DiffID(left, right types.Digest) string {
+ _, _, diffID := getOrderedDiffID(left, right)
+ return diffID
+}
+
+// Inverse function of DiffID.
+// SplitDiffID(DiffID(a,b)) deterministically returns (a,b) or (b,a).
+func SplitDiffID(diffID string) (types.Digest, types.Digest) {
+ imageIDs := strings.Split(diffID, DiffImageSeparator)
+
+ return types.Digest(imageIDs[0]), types.Digest(imageIDs[1])
+}
+
+func getOrderedDiffID(left, right types.Digest) (types.Digest, types.Digest, string) {
+ if right < left {
+ // Make sure the smaller digest is left imageID.
+ left, right = right, left
+ }
+ return left, right, string(left) + DiffImageSeparator + string(right)
+}
diff --git a/golden/go/diffstore/mapper/mapper_test.go b/golden/go/diffstore/common/common_test.go
similarity index 97%
rename from golden/go/diffstore/mapper/mapper_test.go
rename to golden/go/diffstore/common/common_test.go
index 23e6db3..3418a73 100644
--- a/golden/go/diffstore/mapper/mapper_test.go
+++ b/golden/go/diffstore/common/common_test.go
@@ -1,4 +1,4 @@
-package mapper
+package common
import (
"testing"
diff --git a/golden/go/diffstore/mapper/mapper.go b/golden/go/diffstore/mapper/mapper.go
index 5417c2e..99eadb3 100644
--- a/golden/go/diffstore/mapper/mapper.go
+++ b/golden/go/diffstore/mapper/mapper.go
@@ -2,7 +2,6 @@
import (
"image"
- "strings"
"go.skia.org/infra/go/util"
"go.skia.org/infra/golden/go/types"
@@ -28,32 +27,3 @@
// diff metric and have a different interface for the disk storing.
ImagePaths(id types.Digest) (string, string)
}
-
-const (
- // DiffImageSeparator is the character that separates two image ids in the
- // resulting diff image.
- DiffImageSeparator = "-"
-)
-
-// Takes two image IDs and returns a unique diff ID.
-// Note: DiffID(a,b) == DiffID(b, a) holds.
-func DiffID(left, right types.Digest) string {
- _, _, diffID := getOrderedDiffID(left, right)
- return diffID
-}
-
-// Inverse function of DiffID.
-// SplitDiffID(DiffID(a,b)) deterministically returns (a,b) or (b,a).
-func SplitDiffID(diffID string) (types.Digest, types.Digest) {
- imageIDs := strings.Split(diffID, DiffImageSeparator)
-
- return types.Digest(imageIDs[0]), types.Digest(imageIDs[1])
-}
-
-func getOrderedDiffID(left, right types.Digest) (types.Digest, types.Digest, string) {
- if right < left {
- // Make sure the smaller digest is left imageID.
- left, right = right, left
- }
- return left, right, string(left) + DiffImageSeparator + string(right)
-}
diff --git a/golden/go/diffstore/mem_diffstore.go b/golden/go/diffstore/mem_diffstore.go
index c59bf5e..3566109 100644
--- a/golden/go/diffstore/mem_diffstore.go
+++ b/golden/go/diffstore/mem_diffstore.go
@@ -178,7 +178,7 @@
wg.Done()
<-d.maxGoRoutinesCh
}()
- id := mapper.DiffID(mainDigest, right)
+ id := common.DiffID(mainDigest, right)
ret, err := d.diffMetricsCache.Get(priority, id)
if err != nil {
sklog.Errorf("Unable to calculate diff for %s. Got error: %s", id, err)
@@ -220,7 +220,7 @@
}
removeKeys := make([]string, 0, len(digests))
for _, key := range m.diffMetricsCache.Keys() {
- d1, d2 := mapper.SplitDiffID(key)
+ d1, d2 := common.SplitDiffID(key)
if digestSet[d1] || digestSet[d2] {
removeKeys = append(removeKeys, key)
}
@@ -300,7 +300,7 @@
}
// Extract the left and right image digests.
- leftImgDigest, rightImgDigest := mapper.SplitDiffID(imgID)
+ leftImgDigest, rightImgDigest := common.SplitDiffID(imgID)
// Make sure both files exist.
for _, imgDigest := range []types.Digest{leftImgDigest, rightImgDigest} {
@@ -362,7 +362,7 @@
// diffMetricsWorker calculates the diff if it's not in the cache.
func (d *MemDiffStore) diffMetricsWorker(priority int64, id string) (interface{}, error) {
defer metrics2.FuncTimer().Stop()
- leftDigest, rightDigest := mapper.SplitDiffID(id)
+ leftDigest, rightDigest := common.SplitDiffID(id)
// Load it from disk cache if necessary.
if dm, err := d.metricsStore.LoadDiffMetrics(id); err != nil {
@@ -409,7 +409,7 @@
for _, left := range leftDigests {
for _, right := range rightDigests {
if left != right {
- diffIDsSet[mapper.DiffID(left, right)] = true
+ diffIDsSet[common.DiffID(left, right)] = true
}
}
}
diff --git a/golden/go/diffstore/mem_diffstore_test.go b/golden/go/diffstore/mem_diffstore_test.go
index ab625d1..c5e99fa 100644
--- a/golden/go/diffstore/mem_diffstore_test.go
+++ b/golden/go/diffstore/mem_diffstore_test.go
@@ -12,7 +12,7 @@
"go.skia.org/infra/go/tiling"
"go.skia.org/infra/go/timer"
"go.skia.org/infra/golden/go/diff"
- "go.skia.org/infra/golden/go/diffstore/mapper"
+ "go.skia.org/infra/golden/go/diffstore/common"
"go.skia.org/infra/golden/go/diffstore/mapper/disk_mapper"
d_utils "go.skia.org/infra/golden/go/diffstore/testutils"
"go.skia.org/infra/golden/go/types"
@@ -77,7 +77,7 @@
for _, d1 := range digests {
for _, d2 := range digests {
if d1 != d2 {
- id := mapper.DiffID(d1, d2)
+ id := common.DiffID(d1, d2)
diffIDs = append(diffIDs, id)
assert.True(t, memDiffStore.diffMetricsCache.Contains(id))
}
@@ -94,7 +94,7 @@
// Load the diff from disk and compare.
for twoDigest, dr := range found {
- id := mapper.DiffID(oneDigest, twoDigest)
+ id := common.DiffID(oneDigest, twoDigest)
loadedDr, err := memDiffStore.metricsStore.LoadDiffMetrics(id)
assert.NoError(t, err)
assert.Equal(t, dr, loadedDr, "Comparing: %s", id)
@@ -183,7 +183,7 @@
assert.NoError(t, err)
memDiffStore := diffStore.(*MemDiffStore)
- diffID := mapper.DiffID(types.Digest("abc"), types.Digest("def"))
+ diffID := common.DiffID(types.Digest("abc"), types.Digest("def"))
diffMetrics := &d_utils.DummyDiffMetrics{
NumDiffPixels: 100,
PercentDiffPixels: 0.5,
diff --git a/golden/go/diffstore/metricsstore/bolt_metricsstore/bolt_metricsstore.go b/golden/go/diffstore/metricsstore/bolt_metricsstore/bolt_metricsstore.go
index 331cb08..2bfbd2a 100644
--- a/golden/go/diffstore/metricsstore/bolt_metricsstore/bolt_metricsstore.go
+++ b/golden/go/diffstore/metricsstore/bolt_metricsstore/bolt_metricsstore.go
@@ -11,7 +11,6 @@
"go.skia.org/infra/go/util"
"go.skia.org/infra/golden/go/diff"
"go.skia.org/infra/golden/go/diffstore/common"
- "go.skia.org/infra/golden/go/diffstore/mapper"
"go.skia.org/infra/golden/go/types"
)
@@ -98,7 +97,7 @@
factoryCodec := &metricsRecFactory{
LRUCodec: util.JSONCodec(&metricsRec{}),
splitFn: func(toSplit string) (string, string) {
- a, b := mapper.SplitDiffID(toSplit)
+ a, b := common.SplitDiffID(toSplit)
return string(a), string(b)
},
}
@@ -228,7 +227,7 @@
newRec = legRec.DiffMetrics
}
// Regenerate the diffID to filter out the old format.
- newID := mapper.DiffID(mapper.SplitDiffID(id))
+ newID := common.DiffID(common.SplitDiffID(id))
// Write the new record to the database in the background.
go func() {
diff --git a/golden/go/validation/validation.go b/golden/go/validation/validation.go
index aed72d2..d371f3c 100644
--- a/golden/go/validation/validation.go
+++ b/golden/go/validation/validation.go
@@ -3,7 +3,7 @@
import (
"strings"
- "go.skia.org/infra/golden/go/diffstore/mapper"
+ "go.skia.org/infra/golden/go/diffstore/common"
)
// IsValidDigest returns true if the given string is a valid digest
@@ -29,7 +29,7 @@
// IsValidDiffImgID returns true if the given diffImgID is in the correct format.
func IsValidDiffImgID(diffID string) bool {
- imageIDs := strings.Split(diffID, mapper.DiffImageSeparator)
+ imageIDs := strings.Split(diffID, common.DiffImageSeparator)
if len(imageIDs) != 2 {
return false
}