Refactor to serve all responses from cached files on disk
- StoreOutput now returns output hash for immediate retrieval - Cache misses now serve from disk file after storing (same as hits) - Log served_bytes from actual io.Copy result (avoids stat calls) - Remove ContentLength field usage for cache hits (stream from file) - Fix tests to properly check all return values
This commit is contained in:
@@ -176,7 +176,7 @@ func TestCache_StoreAndLookup(t *testing.T) {
|
||||
|
||||
// Store output content
|
||||
outputContent := []byte("fake webp data")
|
||||
err = cache.StoreOutput(ctx, req, metaID, bytes.NewReader(outputContent), "image/webp")
|
||||
_, err = cache.StoreOutput(ctx, req, metaID, bytes.NewReader(outputContent), "image/webp")
|
||||
if err != nil {
|
||||
t.Fatalf("StoreOutput() error = %v", err)
|
||||
}
|
||||
@@ -297,7 +297,7 @@ func TestCache_HotCache(t *testing.T) {
|
||||
metaID, _ := cache.GetSourceMetadataID(ctx, req)
|
||||
|
||||
outputContent := []byte("output data")
|
||||
err = cache.StoreOutput(ctx, req, metaID, bytes.NewReader(outputContent), "image/webp")
|
||||
_, err = cache.StoreOutput(ctx, req, metaID, bytes.NewReader(outputContent), "image/webp")
|
||||
if err != nil {
|
||||
t.Fatalf("StoreOutput() error = %v", err)
|
||||
}
|
||||
@@ -343,15 +343,30 @@ func TestCache_GetOutput(t *testing.T) {
|
||||
// Store content
|
||||
sourceContent := []byte("source")
|
||||
fetchResult := &FetchResult{ContentType: "image/jpeg", Headers: map[string][]string{}}
|
||||
_, _ = cache.StoreSource(ctx, req, bytes.NewReader(sourceContent), fetchResult)
|
||||
_, err := cache.StoreSource(ctx, req, bytes.NewReader(sourceContent), fetchResult)
|
||||
if err != nil {
|
||||
t.Fatalf("StoreSource() error = %v", err)
|
||||
}
|
||||
|
||||
metaID, _ := cache.GetSourceMetadataID(ctx, req)
|
||||
metaID, err := cache.GetSourceMetadataID(ctx, req)
|
||||
if err != nil {
|
||||
t.Fatalf("GetSourceMetadataID() error = %v", err)
|
||||
}
|
||||
|
||||
outputContent := []byte("the actual output content")
|
||||
_ = cache.StoreOutput(ctx, req, metaID, bytes.NewReader(outputContent), "image/webp")
|
||||
outputHash, err := cache.StoreOutput(ctx, req, metaID, bytes.NewReader(outputContent), "image/webp")
|
||||
if err != nil {
|
||||
t.Fatalf("StoreOutput() error = %v", err)
|
||||
}
|
||||
if outputHash == "" {
|
||||
t.Fatal("StoreOutput() returned empty hash")
|
||||
}
|
||||
|
||||
// Lookup to get hash
|
||||
result, _ := cache.Lookup(ctx, req)
|
||||
result, err := cache.Lookup(ctx, req)
|
||||
if err != nil {
|
||||
t.Fatalf("Lookup() error = %v", err)
|
||||
}
|
||||
|
||||
// Get output content
|
||||
reader, err := cache.GetOutput(result.OutputHash)
|
||||
|
||||
Reference in New Issue
Block a user