check / check (push) Canceled after 0s
A source is now one source_content row and one file named by its SourceKey, the SHA-256 of its host, path and query, made as the variant key is. A store writes the file, then upserts the row, and removes the file when the row cannot be written; an eviction deletes the row, then the file, with no lock. source_metadata, the JSON files under cache/metadata/, MetadataStorage, the content lock, the eviction transaction and its test hook are gone, as is the reconciliation pass that dropped a source row whose file is missing, so TestReconciliationReadsAPageAtATime now counts 15 rows read, not 20. Two source URLs serving the same bytes store them twice. The tests of the removed sharing and lock go with them; the two eviction cancellation tests no longer use the hook. Model: opus-5-5
41 lines
1.1 KiB
Go
41 lines
1.1 KiB
Go
package imagerequest
|
|
|
|
import "testing"
|
|
|
|
// TestSourceKey_DiffersForEachSource checks that each source gets a key of
|
|
// 64 hex characters, the same each time, and that no two of these sources
|
|
// share one, also when they differ only by a ":" or "%" in the path or query.
|
|
func TestSourceKey_DiffersForEachSource(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
sources := []Source{
|
|
{Host: testHostCDN, Path: testPathCat},
|
|
{Host: testHostCDN, Path: testPathCat, Query: "v=2"},
|
|
{Host: "other.example.com", Path: testPathCat},
|
|
{Host: testHostCDN, Path: "/c:d"},
|
|
{Host: testHostCDN, Path: "/c", Query: "d:"},
|
|
{Host: testHostCDN, Path: "/c%3Ad"},
|
|
}
|
|
|
|
seen := make(map[SourceKey]Source)
|
|
|
|
for _, source := range sources {
|
|
key := source.Key()
|
|
t.Logf("Key() of %+v = %s", source, key)
|
|
|
|
if len(key) != 64 {
|
|
t.Errorf("Key() of %+v length = %d, want 64", source, len(key))
|
|
}
|
|
|
|
if again := source.Key(); again != key {
|
|
t.Errorf("Key() of %+v not deterministic: %s vs %s", source, key, again)
|
|
}
|
|
|
|
if earlier, found := seen[key]; found {
|
|
t.Errorf("Key() gave %+v and %+v the same key", earlier, source)
|
|
}
|
|
|
|
seen[key] = source
|
|
}
|
|
}
|