Skip to content

Commit 60847b0

Browse files
committed
Rename CachingProxy<T> to S3CachingProxy<T>
1 parent 7789ef0 commit 60847b0

File tree

8 files changed

+62
-62
lines changed

8 files changed

+62
-62
lines changed

src/bin/s3_cache_sim/main.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use http::{HeaderMap, Method, Uri};
1111
use s3s::dto::*;
1212
use s3s::{S3, S3Request};
1313

14-
use s3_cache::{CachingProxy, S3Cache};
14+
use s3_cache::{S3Cache, S3CachingProxy};
1515

1616
use simulated_backend::SimulatedBackend;
1717
use tracing_subscriber::fmt::format::FmtSpan;
@@ -156,7 +156,7 @@ async fn main() {
156156
.await;
157157

158158
// Build cache + proxy (or direct backend if --no-cache)
159-
let proxy: Option<Arc<CachingProxy<_>>> = if args.no_cache {
159+
let proxy: Option<Arc<S3CachingProxy<_>>> = if args.no_cache {
160160
None
161161
} else {
162162
let cache = Arc::new(S3Cache::new(
@@ -165,7 +165,7 @@ async fn main() {
165165
Duration::from_secs(args.cache_ttl_secs),
166166
args.cache_shards,
167167
));
168-
Some(Arc::new(CachingProxy::new(
168+
Some(Arc::new(S3CachingProxy::new(
169169
backend.clone(),
170170
Some(cache),
171171
args.max_cacheable_size,

src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ use tracing::{debug, error, info};
2929
pub use self::config::Config;
3030
pub use self::error::ApplicationError;
3131
pub use self::fifo_cache::FifoCache;
32-
pub use self::proxy::{CachingProxy, range_to_string};
32+
pub use self::proxy::{S3CachingProxy, range_to_string};
3333
pub use self::s3_cache::{CacheKey, CachedObject, S3Cache};
3434
pub use self::statistics::UniqueRequestedObjectsStatisticsTracker;
3535

@@ -133,7 +133,7 @@ where
133133
});
134134

135135
// Build caching proxy
136-
let caching_proxy = CachingProxy::from_aws_proxy(
136+
let caching_proxy = S3CachingProxy::from_aws_proxy(
137137
proxy,
138138
cache,
139139
config.cache_max_object_size_bytes,

src/proxy.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ use crate::telemetry;
1818
///
1919
/// The type parameter `T` defaults to [`s3s_aws::Proxy`] but can be any type
2020
/// implementing the [`S3`] trait.
21-
pub struct CachingProxy<T = Proxy> {
21+
pub struct S3CachingProxy<T = Proxy> {
2222
inner: T,
2323
cache: Option<Arc<S3Cache>>,
2424
max_cacheable_size: usize,
@@ -31,7 +31,7 @@ pub struct CachingProxy<T = Proxy> {
3131
dry_run: bool,
3232
}
3333

34-
impl<T> CachingProxy<T> {
34+
impl<T> S3CachingProxy<T> {
3535
/// Creates a new caching proxy wrapping an S3 implementation.
3636
///
3737
/// Pass `None` for `cache` to disable caching (passthrough mode).
@@ -70,7 +70,7 @@ impl<T> CachingProxy<T> {
7070
}
7171
}
7272

73-
impl CachingProxy<Proxy> {
73+
impl S3CachingProxy<Proxy> {
7474
/// Convenience constructor for wrapping [`s3s_aws::Proxy`].
7575
///
7676
/// This is equivalent to calling [`new`](Self::new) with a [`Proxy`] type parameter.
@@ -110,7 +110,7 @@ pub fn range_to_string(range: &Range) -> String {
110110
}
111111

112112
#[async_trait::async_trait]
113-
impl<T: S3 + Send + Sync> S3 for CachingProxy<T> {
113+
impl<T: S3 + Send + Sync> S3 for S3CachingProxy<T> {
114114
async fn get_object(
115115
&self,
116116
req: S3Request<GetObjectInput>,

tests/integration_cache.rs

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ mod common;
33
use bytes::Bytes;
44
use common::MockS3Backend;
55
use common::helpers::*;
6-
use s3_cache::{CacheKey, CachingProxy};
6+
use s3_cache::{CacheKey, S3CachingProxy};
77
use s3s::S3;
88

99
#[tokio::test]
@@ -16,7 +16,7 @@ async fn get_object_cache_miss_then_hit() {
1616

1717
// Setup: Cache + Proxy
1818
let cache = create_test_cache(100, usize::MAX, 300);
19-
let proxy = CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, false);
19+
let proxy = S3CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, false);
2020

2121
// First request: cache miss
2222
let req = build_get_request("test-bucket", "key.txt", None);
@@ -49,7 +49,7 @@ async fn cache_ttl_expiration() {
4949

5050
// Cache with 60 second TTL
5151
let cache = create_test_cache(100, usize::MAX, 60);
52-
let proxy = CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, false);
52+
let proxy = S3CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, false);
5353

5454
// First request: populate cache
5555
let req = build_get_request("test-bucket", "expiring.txt", None);
@@ -87,7 +87,7 @@ async fn cache_size_eviction() {
8787

8888
// Cache with room for only 5 entries
8989
let cache = create_test_cache(5, usize::MAX, 300);
90-
let proxy = CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, false);
90+
let proxy = S3CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, false);
9191

9292
// Fetch all 10 objects
9393
for i in 0..10 {
@@ -138,7 +138,7 @@ async fn cache_object_count_limit() {
138138

139139
// Cache limited to 10 entries
140140
let cache = create_test_cache(10, usize::MAX, 300);
141-
let proxy = CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, false);
141+
let proxy = S3CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, false);
142142

143143
// Fetch 15 objects
144144
for i in 0..15 {
@@ -183,7 +183,7 @@ async fn oversized_object_not_cached() {
183183

184184
// Cache with max size 100KB
185185
let cache = create_test_cache(100, 100_000, 300);
186-
let proxy = CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, false);
186+
let proxy = S3CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, false);
187187

188188
// First request: object too large, streams through without caching
189189
let req = build_get_request("test-bucket", "large.bin", None);
@@ -211,7 +211,7 @@ async fn concurrent_cache_access() {
211211
.await;
212212

213213
let cache = create_test_cache(100, usize::MAX, 300);
214-
let proxy = CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, false);
214+
let proxy = S3CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, false);
215215

216216
for _ in 0..10 {
217217
let req = build_get_request("test-bucket", "concurrent.txt", None);
@@ -236,7 +236,7 @@ async fn different_buckets_separate_cache() {
236236
.await;
237237

238238
let cache = create_test_cache(100, usize::MAX, 300);
239-
let proxy = CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, false);
239+
let proxy = S3CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, false);
240240

241241
// Fetch from both buckets
242242
let req = build_get_request("bucket-a", "key.txt", None);
@@ -270,7 +270,7 @@ async fn cache_byte_size_eviction() {
270270

271271
// Cache with max_size of 2000 bytes (room for ~4 objects of 500 bytes)
272272
let cache = create_test_cache(100, 2000, 300);
273-
let proxy = CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, false);
273+
let proxy = S3CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, false);
274274

275275
// Fetch all 10 objects
276276
for i in 0..10 {
@@ -306,7 +306,7 @@ async fn backend_error_not_cached() {
306306
// Don't add the object — backend will return NoSuchKey
307307

308308
let cache = create_test_cache(100, usize::MAX, 300);
309-
let proxy = CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, false);
309+
let proxy = S3CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, false);
310310

311311
// Request non-existent object
312312
let req = build_get_request("test-bucket", "missing.txt", None);
@@ -333,7 +333,7 @@ async fn max_cacheable_size_rejects_large_objects() {
333333

334334
// Proxy with max_cacheable_size = 1000 (rejects objects > 1KB)
335335
let cache = create_test_cache(100, usize::MAX, 300);
336-
let proxy = CachingProxy::new(backend.clone(), Some(cache.clone()), 1000, false);
336+
let proxy = S3CachingProxy::new(backend.clone(), Some(cache.clone()), 1000, false);
337337

338338
// Small object: should be cached
339339
let req = build_get_request("test-bucket", "small.bin", None);
@@ -363,7 +363,7 @@ async fn cache_hit_preserves_metadata() {
363363
.await;
364364

365365
let cache = create_test_cache(100, usize::MAX, 300);
366-
let proxy = CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, false);
366+
let proxy = S3CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, false);
367367

368368
// First request: cache miss
369369
let req = build_get_request("test-bucket", "meta.txt", None);
@@ -392,7 +392,7 @@ async fn head_object_does_not_populate_cache() {
392392
.await;
393393

394394
let cache = create_test_cache(100, usize::MAX, 300);
395-
let proxy = CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, false);
395+
let proxy = S3CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, false);
396396

397397
// HEAD request — should be delegated, not cached
398398
let req = s3s::S3Request {
@@ -425,7 +425,7 @@ async fn put_then_get_sees_new_content() {
425425
.await;
426426

427427
let cache = create_test_cache(100, usize::MAX, 300);
428-
let proxy = CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, false);
428+
let proxy = S3CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, false);
429429

430430
// GET: caches "version1"
431431
let req = build_get_request("test-bucket", "mutable.txt", None);

tests/integration_dry_run.rs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ mod common;
33
use bytes::Bytes;
44
use common::MockS3Backend;
55
use common::helpers::*;
6-
use s3_cache::CachingProxy;
6+
use s3_cache::S3CachingProxy;
77
use s3s::S3;
88

99
#[tokio::test]
@@ -16,7 +16,7 @@ async fn cache_miss_populates_with_hash() {
1616

1717
// Setup: Cache + Proxy in dry-run mode
1818
let cache = create_test_cache(100, usize::MAX, 300);
19-
let proxy = CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, true);
19+
let proxy = S3CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, true);
2020

2121
// First request in dry-run mode: cache miss
2222
let req = build_get_request("test-bucket", "key.txt", None);
@@ -39,7 +39,7 @@ async fn always_fetches_from_upstream() {
3939

4040
// Setup: Cache + Proxy in dry-run mode
4141
let cache = create_test_cache(100, usize::MAX, 300);
42-
let proxy = CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, true);
42+
let proxy = S3CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, true);
4343

4444
// First request: cache miss
4545
let req = build_get_request("test-bucket", "key.txt", None);
@@ -67,7 +67,7 @@ async fn returns_fresh_data() {
6767

6868
// Setup: Cache + Proxy in dry-run mode
6969
let cache = create_test_cache(100, usize::MAX, 300);
70-
let proxy = CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, true);
70+
let proxy = S3CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, true);
7171

7272
// First request: populates cache with "version1"
7373
let req = build_get_request("test-bucket", "mutable.txt", None);
@@ -103,7 +103,7 @@ async fn with_matching_cache_data() {
103103

104104
// Setup: Cache + Proxy in dry-run mode
105105
let cache = create_test_cache(100, usize::MAX, 300);
106-
let proxy = CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, true);
106+
let proxy = S3CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, true);
107107

108108
// First request: populates cache
109109
let req = build_get_request("test-bucket", "stable.txt", None);
@@ -128,7 +128,7 @@ async fn with_mismatched_cache_data() {
128128

129129
// Setup: Cache + Proxy in dry-run mode
130130
let cache = create_test_cache(100, usize::MAX, 300);
131-
let proxy = CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, true);
131+
let proxy = S3CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, true);
132132

133133
// First request: populates cache with "original"
134134
let req = build_get_request("test-bucket", "changing.txt", None);
@@ -161,7 +161,7 @@ async fn multiple_objects() {
161161

162162
// Setup: Cache + Proxy in dry-run mode
163163
let cache = create_test_cache(100, usize::MAX, 300);
164-
let proxy = CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, true);
164+
let proxy = S3CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, true);
165165

166166
// Fetch all objects
167167
for i in 0..5 {
@@ -197,7 +197,7 @@ async fn with_large_objects() {
197197

198198
// Setup: Cache + Proxy in dry-run mode with size limit
199199
let cache = create_test_cache(100, 100_000, 300);
200-
let proxy = CachingProxy::new(backend.clone(), Some(cache.clone()), 100_000, true);
200+
let proxy = S3CachingProxy::new(backend.clone(), Some(cache.clone()), 100_000, true);
201201

202202
// Request large object in dry-run mode
203203
let req = build_get_request("test-bucket", "large.bin", None);
@@ -225,7 +225,7 @@ async fn concurrent_access() {
225225

226226
// Setup: Cache + Proxy in dry-run mode
227227
let cache = create_test_cache(100, usize::MAX, 300);
228-
let proxy = CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, true);
228+
let proxy = S3CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, true);
229229

230230
for _ in 0..10 {
231231
let req = build_get_request("test-bucket", "concurrent.txt", None);
@@ -248,7 +248,7 @@ async fn backend_error_not_cached() {
248248

249249
// Setup: Cache + Proxy in dry-run mode
250250
let cache = create_test_cache(100, usize::MAX, 300);
251-
let proxy = CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, true);
251+
let proxy = S3CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, true);
252252

253253
// Request non-existent object
254254
let req = build_get_request("test-bucket", "missing.txt", None);
@@ -270,7 +270,7 @@ async fn preserves_metadata() {
270270

271271
// Setup: Cache + Proxy in dry-run mode
272272
let cache = create_test_cache(100, usize::MAX, 300);
273-
let proxy = CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, true);
273+
let proxy = S3CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, true);
274274

275275
// First request
276276
let req = build_get_request("test-bucket", "meta.txt", None);

tests/integration_invalidation.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ mod common;
33
use bytes::Bytes;
44
use common::MockS3Backend;
55
use common::helpers::*;
6-
use s3_cache::CachingProxy;
6+
use s3_cache::S3CachingProxy;
77
use s3s::S3;
88

99
#[tokio::test]
@@ -14,7 +14,7 @@ async fn put_invalidates_cache() {
1414
.await;
1515

1616
let cache = create_test_cache(100, usize::MAX, 300);
17-
let proxy = CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, false);
17+
let proxy = S3CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, false);
1818

1919
// First GET: populate cache
2020
let req = build_get_request("test-bucket", "file.txt", None);
@@ -48,7 +48,7 @@ async fn delete_invalidates_cache() {
4848
.await;
4949

5050
let cache = create_test_cache(100, usize::MAX, 300);
51-
let proxy = CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, false);
51+
let proxy = S3CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, false);
5252

5353
// GET: populate cache
5454
let req = build_get_request("test-bucket", "deleteme.txt", None);
@@ -77,7 +77,7 @@ async fn delete_objects_invalidates_all() {
7777
}
7878

7979
let cache = create_test_cache(100, usize::MAX, 300);
80-
let proxy = CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, false);
80+
let proxy = S3CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, false);
8181

8282
// GET all objects: populate cache
8383
for i in 0..5 {
@@ -112,7 +112,7 @@ async fn copy_invalidates_destination() {
112112
.await;
113113

114114
let cache = create_test_cache(100, usize::MAX, 300);
115-
let proxy = CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, false);
115+
let proxy = S3CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, false);
116116

117117
// GET destination: populate cache
118118
let req = build_get_request("test-bucket", "dest.txt", None);
@@ -143,7 +143,7 @@ async fn invalidation_removes_all_ranges() {
143143
.await;
144144

145145
let cache = create_test_cache(100, usize::MAX, 300);
146-
let proxy = CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, false);
146+
let proxy = S3CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, false);
147147

148148
// GET full object
149149
let req = build_get_request("test-bucket", "ranged.txt", None);
@@ -180,7 +180,7 @@ async fn put_only_invalidates_target_key() {
180180
.await;
181181

182182
let cache = create_test_cache(100, usize::MAX, 300);
183-
let proxy = CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, false);
183+
let proxy = S3CachingProxy::new(backend.clone(), Some(cache.clone()), usize::MAX, false);
184184

185185
// GET both files
186186
let req = build_get_request("test-bucket", "file1.txt", None);

0 commit comments

Comments
 (0)