OLD | NEW |
1 package diff | 1 package diff |
2 | 2 |
3 import ( | 3 import ( |
4 "image" | 4 "image" |
5 "image/color" | 5 "image/color" |
6 "image/draw" | 6 "image/draw" |
7 "image/png" | 7 "image/png" |
8 "math" | 8 "math" |
9 "os" | 9 "os" |
10 "unsafe" | 10 "unsafe" |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
81 ) | 81 ) |
82 | 82 |
83 // DigestFailure captures the details of a digest error that occured. | 83 // DigestFailure captures the details of a digest error that occured. |
84 type DigestFailure struct { | 84 type DigestFailure struct { |
85 Digest string `json:"digest"` | 85 Digest string `json:"digest"` |
86 Reason DiffErr `json:"reason"` | 86 Reason DiffErr `json:"reason"` |
87 TS int64 `json:"ts"` | 87 TS int64 `json:"ts"` |
88 Error string `json:"error"` | 88 Error string `json:"error"` |
89 } | 89 } |
90 | 90 |
| 91 // Implement sort.Interface for a slice of DigestFailure |
| 92 type DigestFailureSlice []*DigestFailure |
| 93 |
| 94 func (d DigestFailureSlice) Len() int { return len(d) } |
| 95 func (d DigestFailureSlice) Less(i, j int) bool { return d[i].TS < d[j].TS } |
| 96 func (d DigestFailureSlice) Swap(i, j int) { d[i], d[j] = d[j], d[i] } |
| 97 |
91 type DiffStore interface { | 98 type DiffStore interface { |
92 // Get returns the DiffMetrics of the provided dMain digest vs all diges
ts | 99 // Get returns the DiffMetrics of the provided dMain digest vs all diges
ts |
93 // specified in dRest. | 100 // specified in dRest. |
94 Get(dMain string, dRest []string) (map[string]*DiffMetrics, error) | 101 Get(dMain string, dRest []string) (map[string]*DiffMetrics, error) |
95 | 102 |
96 // AbsPath returns the paths of the images that correspond to the given | 103 // AbsPath returns the paths of the images that correspond to the given |
97 // image digests. | 104 // image digests. |
98 AbsPath(digest []string) map[string]string | 105 AbsPath(digest []string) map[string]string |
99 | 106 |
100 // UnavailableDigests returns map[digest]*DigestFailure which can be use
d | 107 // UnavailableDigests returns map[digest]*DigestFailure which can be use
d |
101 // to check whether a digest could not be processed and to provide detai
ls | 108 // to check whether a digest could not be processed and to provide detai
ls |
102 // about failures. | 109 // about failures. |
103 UnavailableDigests() map[string]*DigestFailure | 110 UnavailableDigests() map[string]*DigestFailure |
104 | 111 |
105 // PurgeDigests removes all information related to the indicated digests | 112 // PurgeDigests removes all information related to the indicated digests |
106 // (image, diffmetric) from local caches. If purgeGS is true it will als
o | 113 // (image, diffmetric) from local caches. If purgeGS is true it will als
o |
107 // purge the digests image from Google storage, forcing that the digest | 114 // purge the digests image from Google storage, forcing that the digest |
108 // be re-uploaded by the build bots. | 115 // be re-uploaded by the build bots. |
109 » PurgeDigests(digests []string, purgeGS bool) | 116 » PurgeDigests(digests []string, purgeGS bool) error |
110 | 117 |
111 // SetDigestSets sets the sets of digests we want to compare grouped by | 118 // SetDigestSets sets the sets of digests we want to compare grouped by |
112 // names (usually test names). This sets the digests we are currently | 119 // names (usually test names). This sets the digests we are currently |
113 // interested in and removes digests (and their diffs) that we are no | 120 // interested in and removes digests (and their diffs) that we are no |
114 // longer interested in. | 121 // longer interested in. |
115 SetDigestSets(namedDigestSets map[string]map[string]bool) | 122 SetDigestSets(namedDigestSets map[string]map[string]bool) |
116 } | 123 } |
117 | 124 |
118 // OpenImage is a utility function that opens the specified file and returns an | 125 // OpenImage is a utility function that opens the specified file and returns an |
119 // image.Image | 126 // image.Image |
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
298 } | 305 } |
299 } | 306 } |
300 } | 307 } |
301 | 308 |
302 return &DiffMetrics{ | 309 return &DiffMetrics{ |
303 NumDiffPixels: numDiffPixels, | 310 NumDiffPixels: numDiffPixels, |
304 PixelDiffPercent: getPixelDiffPercent(numDiffPixels, totalPixels
), | 311 PixelDiffPercent: getPixelDiffPercent(numDiffPixels, totalPixels
), |
305 MaxRGBADiffs: maxRGBADiffs, | 312 MaxRGBADiffs: maxRGBADiffs, |
306 DimDiffer: (cmpWidth != resultWidth) || (cmpHeight != res
ultHeight)}, resultImg | 313 DimDiffer: (cmpWidth != resultWidth) || (cmpHeight != res
ultHeight)}, resultImg |
307 } | 314 } |
OLD | NEW |