Skip to content

Commit 2ba15f8

Browse files
committed
Changes from testing in local environment
1 parent 2973d61 commit 2ba15f8

3 files changed

Lines changed: 46 additions & 40 deletions

File tree

cache/__tests__/cache-metrics-worst-case.sh

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
BASE_URL="${BASE_URL:-http://localhost:3001}"
2323
API_BASE="${BASE_URL}/v1"
2424
# Default token - can be overridden by RERUM_TEST_TOKEN environment variable or user input
25-
AUTH_TOKEN="${RERUM_TEST_TOKEN:-eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Ik9FVTBORFk0T1RVNVJrRXlOREl5TTBFMU1FVXdNMFUyT0RGQk9UaEZSa1JDTXpnek1FSTRNdyJ9.eyJodHRwOi8vc3RvcmUucmVydW0uaW8vYWdlbnQiOiJodHRwczovL2RldnN0b3JlLnJlcnVtLmlvL3YxL2lkLzY4ZDZkZDZhNzE4ZWUyOTRmMTk0YmUwNCIsImh0dHA6Ly9yZXJ1bS5pby91c2VyX3JvbGVzIjp7InJvbGVzIjpbImR1bmJhcl91c2VyX3B1YmxpYyIsImdsb3NzaW5nX3VzZXJfcHVibGljIiwibHJkYV91c2VyX3B1YmxpYyIsInJlcnVtX3VzZXJfcHVibGljIiwidHBlbl91c2VyX3B1YmxpYyJdfSwiaHR0cDovL2R1bmJhci5yZXJ1bS5pby91c2VyX3JvbGVzIjp7InJvbGVzIjpbImR1bmJhcl91c2VyX3B1YmxpYyIsImdsb3NzaW5nX3VzZXJfcHVibGljIiwibHJkYV91c2VyX3B1YmxpYyIsInJlcnVtX3VzZXJfcHVibGljIiwidHBlbl91c2VyX3B1YmxpYyJdfSwiaHR0cDovL3JlcnVtLmlvL2FwcF9mbGFnIjpbInRwZW4iXSwiaHR0cDovL2R1bmJhci5yZXJ1bS5pby9hcHBfZmxhZyI6WyJ0cGVuIl0sImlzcyI6Imh0dHBzOi8vY3ViYXAuYXV0aDAuY29tLyIsInN1YiI6ImF1dGgwfDY4ZDZkZDY0YmRhMmNkNzdhMTA2MWMxNyIsImF1ZCI6Imh0dHA6Ly9yZXJ1bS5pby9hcGkiLCJpYXQiOjE3NjEyNTExOTMsImV4cCI6MTc2Mzg0MzE5Mywic2NvcGUiOiJvZmZsaW5lX2FjY2VzcyIsImF6cCI6IjYySnNhOU14SHVxaFJiTzIwZ1RIczlLcEtyN1VlN3NsIn0.RQNhU4OE-MbsQX5aIvCcHpvInaXTQvfdPT8bLGrUVTnsuE8xxk-qDlNrYtSG4BUWpKiGFonjJTNQy75G2PJo46IaGqyZk75GW03iY2cfBXml2W5qfFZ0sUJ2rUtkQEUEGeRYNq0QaVfYEaU76kP_43jn_dB4INP6sp_Xo-hfmmF_aF1-utN31UjnKzZMfC2BCTQwYR5DUjCh8Yqvwus2k5CmiY4Y8rmNOrM6Y0cFWhehOYRgQAea-hRLBGk1dLnU4u7rI9STaQSjANuSNHcFQFypmrftryAEEwksRnip5vQdYzfzZ7Ay4iV8mm2eO4ThKSI5m5kBVyP0rbTcmJUftQ}"
25+
AUTH_TOKEN="${RERUM_TEST_TOKEN:-eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Ik9FVTBORFk0T1RVNVJrRXlOREl5TTBFMU1FVXdNMFUyT0RGQk9UaEZSa1JDTXpnek1FSTRNdyJ9.eyJodHRwOi8vc3RvcmUucmVydW0uaW8vYWdlbnQiOiJodHRwOi8vc3RvcmUucmVydW0uaW8vdjEvaWQvNjI1NzJiYTcxZDk3NGQxMzExYWJkNjczIiwiaHR0cDovL3JlcnVtLmlvL3VzZXJfcm9sZXMiOnsicm9sZXMiOlsiZHVuYmFyX3VzZXJfY29udHJpYnV0b3IiLCJnbG9zc2luZ191c2VyX2FkbWluIiwibHJkYV91c2VyX2FkbWluIiwicmVydW1fdXNlcl9hZG1pbiIsInRwZW5fdXNlcl9hZG1pbiJdfSwiaHR0cDovL2R1bmJhci5yZXJ1bS5pby91c2VyX3JvbGVzIjp7InJvbGVzIjpbImR1bmJhcl91c2VyX2NvbnRyaWJ1dG9yIiwiZ2xvc3NpbmdfdXNlcl9hZG1pbiIsImxyZGFfdXNlcl9hZG1pbiIsInJlcnVtX3VzZXJfYWRtaW4iLCJ0cGVuX3VzZXJfYWRtaW4iXX0sImh0dHA6Ly9yZXJ1bS5pby9hcHBfZmxhZyI6WyJyZXJ1bSIsImRsYSIsImxyZGEiLCJnbG9zc2luZyIsInRwZW4iXSwiaHR0cDovL2R1bmJhci5yZXJ1bS5pby9hcHBfZmxhZyI6WyJyZXJ1bSIsImRsYSIsImxyZGEiLCJnbG9zc2luZyIsInRwZW4iXSwiaXNzIjoiaHR0cHM6Ly9jdWJhcC5hdXRoMC5jb20vIiwic3ViIjoiYXV0aDB8NjI1NzJiYTY0MzI1YTIwMDZhNDNlYzY5IiwiYXVkIjoiaHR0cDovL3JlcnVtLmlvL2FwaSIsImlhdCI6MTc2MTMyMzc4NywiZXhwIjoxNzYzOTE1Nzg3LCJzY29wZSI6Im9mZmxpbmVfYWNjZXNzIiwiYXpwIjoiNjJKc2E5TXhIdXFoUmJPMjBnVEhzOUtwS3I3VWU3c2wifQ.PTYcCcIGQwZ06YbcBC0MY3MlTFnNE0XrpBhrmjnjFtfPKJEJD7TfAYoA9HXMjluQvxmJeqtITY-_CX3s8ba9r1wb4AtEVzHVeZ_MUImyN2jrdRAsH-bZFGnmTDleYN841dxtZsY1i4tKJqheg1EPut5MzzRbmGFFSvvVLrUUo0K07xa8zcC7RZrVbJb3zKV2rVQdFvkhY6uSKMTmNqhHA-J3ezrDd-aQvxhNNxlt-aO1tPt3ybCukzkMaG2m-o4pWgpagybQvXscZb0u48LcJGbPAq-K503U34V_j5Tu9KXh75mFcaZmtp5zu8lQv6y34FVyAhxYeVWuq6w6nWNOsg}"
2626

2727
# Test configuration
2828
CACHE_FILL_SIZE=1000
@@ -194,7 +194,8 @@ measure_endpoint() {
194194
# Handle curl failure (connection timeout, etc)
195195
if [ -z "$http_code" ] || [ "$http_code" == "000" ]; then
196196
http_code="000"
197-
log_warning "Endpoint $endpoint timed out or connection failed"
197+
# Log to stderr to avoid polluting the return value
198+
echo "[WARN] Endpoint $endpoint timed out or connection failed" >&2
198199
fi
199200

200201
echo "$time|$http_code|$(echo "$response" | head -n-1)"
@@ -2303,14 +2304,16 @@ main() {
23032304
result=$(measure_endpoint "$test_id" "GET" "" "ID retrieval with full cache (miss)")
23042305
log_success "ID retrieval with full cache (cache miss)"
23052306

2307+
# Extract just the ID portion for history endpoint
2308+
local obj_id=$(echo "$test_id" | sed 's|.*/||')
23062309
log_info "Testing /api/history with full cache (cache miss - worst case)..."
2307-
result=$(measure_endpoint "${test_id}/history" "GET" "" "History with full cache (miss)")
2310+
result=$(measure_endpoint "${API_BASE}/history/${obj_id}" "GET" "" "History with full cache (miss)")
23082311
log_success "History with full cache (cache miss)"
23092312
fi
23102313

23112314
log_info "Testing /api/since with full cache (cache miss - worst case)..."
23122315
local since_timestamp=$(($(date +%s) - 3600))
2313-
result=$(measure_endpoint "${API_BASE}/api/since/${since_timestamp}" "GET" "" "Since with full cache (miss)")
2316+
result=$(measure_endpoint "${API_BASE}/since/${since_timestamp}" "GET" "" "Since with full cache (miss)")
23142317
log_success "Since with full cache (cache miss)"
23152318

23162319
# ============================================================

cache/__tests__/cache-metrics.sh

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
BASE_URL="${BASE_URL:-http://localhost:3001}"
2222
API_BASE="${BASE_URL}/v1"
2323
# Default token - can be overridden by RERUM_TEST_TOKEN environment variable or user input
24-
AUTH_TOKEN="${RERUM_TEST_TOKEN:-eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Ik9FVTBORFk0T1RVNVJrRXlOREl5TTBFMU1FVXdNMFUyT0RGQk9UaEZSa1JDTXpnek1FSTRNdyJ9.eyJodHRwOi8vc3RvcmUucmVydW0uaW8vYWdlbnQiOiJodHRwczovL2RldnN0b3JlLnJlcnVtLmlvL3YxL2lkLzY4ZDZkZDZhNzE4ZWUyOTRmMTk0YmUwNCIsImh0dHA6Ly9yZXJ1bS5pby91c2VyX3JvbGVzIjp7InJvbGVzIjpbImR1bmJhcl91c2VyX3B1YmxpYyIsImdsb3NzaW5nX3VzZXJfcHVibGljIiwibHJkYV91c2VyX3B1YmxpYyIsInJlcnVtX3VzZXJfcHVibGljIiwidHBlbl91c2VyX3B1YmxpYyJdfSwiaHR0cDovL2R1bmJhci5yZXJ1bS5pby91c2VyX3JvbGVzIjp7InJvbGVzIjpbImR1bmJhcl91c2VyX3B1YmxpYyIsImdsb3NzaW5nX3VzZXJfcHVibGljIiwibHJkYV91c2VyX3B1YmxpYyIsInJlcnVtX3VzZXJfcHVibGljIiwidHBlbl91c2VyX3B1YmxpYyJdfSwiaHR0cDovL3JlcnVtLmlvL2FwcF9mbGFnIjpbInRwZW4iXSwiaHR0cDovL2R1bmJhci5yZXJ1bS5pby9hcHBfZmxhZyI6WyJ0cGVuIl0sImlzcyI6Imh0dHBzOi8vY3ViYXAuYXV0aDAuY29tLyIsInN1YiI6ImF1dGgwfDY4ZDZkZDY0YmRhMmNkNzdhMTA2MWMxNyIsImF1ZCI6Imh0dHA6Ly9yZXJ1bS5pby9hcGkiLCJpYXQiOjE3NjEzMTUyNjQsImV4cCI6MTc2MzkwNzI2NCwic2NvcGUiOiJvZmZsaW5lX2FjY2VzcyIsImF6cCI6IjYySnNhOU14SHVxaFJiTzIwZ1RIczlLcEtyN1VlN3NsIn0.PKIRovrdRtBfGLeoGU18ry-kXTTWv8NfkPkY3BfirjH-4g9vVln7jzjf0AeoikaXYbwSatdDXwcOiOHbok_xnshcbKQEGU23G_mnxvqjkdjFU1jin6Xmajj2R3ooo-bRtCZEuu0_j4DS6C43vHKSbl-bHY9-DDEKSG-H5MC0rfJrHnfzfunyA4tKcOH5d1AYg0yxsyEhNiKR5oVQGHetbn6Eu8jweb9gQpVuCnx-mZpmD_P8gHvuKjTRjvvTJ3Jpr9hs8xmjYO6de4fZYds0f79UT3Nbh138Mp62i4I75NKf7eQm7FED7z3wnqObzcmp9RNLoa9TVEgw8k_gBZ7P2Q}"
24+
AUTH_TOKEN="${RERUM_TEST_TOKEN:-eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Ik9FVTBORFk0T1RVNVJrRXlOREl5TTBFMU1FVXdNMFUyT0RGQk9UaEZSa1JDTXpnek1FSTRNdyJ9.eyJodHRwOi8vc3RvcmUucmVydW0uaW8vYWdlbnQiOiJodHRwOi8vc3RvcmUucmVydW0uaW8vdjEvaWQvNjI1NzJiYTcxZDk3NGQxMzExYWJkNjczIiwiaHR0cDovL3JlcnVtLmlvL3VzZXJfcm9sZXMiOnsicm9sZXMiOlsiZHVuYmFyX3VzZXJfY29udHJpYnV0b3IiLCJnbG9zc2luZ191c2VyX2FkbWluIiwibHJkYV91c2VyX2FkbWluIiwicmVydW1fdXNlcl9hZG1pbiIsInRwZW5fdXNlcl9hZG1pbiJdfSwiaHR0cDovL2R1bmJhci5yZXJ1bS5pby91c2VyX3JvbGVzIjp7InJvbGVzIjpbImR1bmJhcl91c2VyX2NvbnRyaWJ1dG9yIiwiZ2xvc3NpbmdfdXNlcl9hZG1pbiIsImxyZGFfdXNlcl9hZG1pbiIsInJlcnVtX3VzZXJfYWRtaW4iLCJ0cGVuX3VzZXJfYWRtaW4iXX0sImh0dHA6Ly9yZXJ1bS5pby9hcHBfZmxhZyI6WyJyZXJ1bSIsImRsYSIsImxyZGEiLCJnbG9zc2luZyIsInRwZW4iXSwiaHR0cDovL2R1bmJhci5yZXJ1bS5pby9hcHBfZmxhZyI6WyJyZXJ1bSIsImRsYSIsImxyZGEiLCJnbG9zc2luZyIsInRwZW4iXSwiaXNzIjoiaHR0cHM6Ly9jdWJhcC5hdXRoMC5jb20vIiwic3ViIjoiYXV0aDB8NjI1NzJiYTY0MzI1YTIwMDZhNDNlYzY5IiwiYXVkIjoiaHR0cDovL3JlcnVtLmlvL2FwaSIsImlhdCI6MTc2MTMyMzc4NywiZXhwIjoxNzYzOTE1Nzg3LCJzY29wZSI6Im9mZmxpbmVfYWNjZXNzIiwiYXpwIjoiNjJKc2E5TXhIdXFoUmJPMjBnVEhzOUtwS3I3VWU3c2wifQ.PTYcCcIGQwZ06YbcBC0MY3MlTFnNE0XrpBhrmjnjFtfPKJEJD7TfAYoA9HXMjluQvxmJeqtITY-_CX3s8ba9r1wb4AtEVzHVeZ_MUImyN2jrdRAsH-bZFGnmTDleYN841dxtZsY1i4tKJqheg1EPut5MzzRbmGFFSvvVLrUUo0K07xa8zcC7RZrVbJb3zKV2rVQdFvkhY6uSKMTmNqhHA-J3ezrDd-aQvxhNNxlt-aO1tPt3ybCukzkMaG2m-o4pWgpagybQvXscZb0u48LcJGbPAq-K503U34V_j5Tu9KXh75mFcaZmtp5zu8lQv6y34FVyAhxYeVWuq6w6nWNOsg}"
2525

2626
# Test configuration
2727
CACHE_FILL_SIZE=1000
@@ -193,7 +193,8 @@ measure_endpoint() {
193193
# Handle curl failure (connection timeout, etc)
194194
if [ -z "$http_code" ] || [ "$http_code" == "000" ]; then
195195
http_code="000"
196-
log_warning "Endpoint $endpoint timed out or connection failed"
196+
# Log to stderr to avoid polluting the return value
197+
echo "[WARN] Endpoint $endpoint timed out or connection failed" >&2
197198
fi
198199

199200
echo "$time|$http_code|$(echo "$response" | head -n-1)"
@@ -2299,14 +2300,16 @@ main() {
22992300
result=$(measure_endpoint "$test_id" "GET" "" "ID retrieval with full cache")
23002301
log_success "ID retrieval with full cache"
23012302

2303+
# Extract just the ID portion for history endpoint
2304+
local obj_id=$(echo "$test_id" | sed 's|.*/||')
23022305
log_info "Testing /api/history with full cache..."
2303-
result=$(measure_endpoint "${test_id}/history" "GET" "" "History with full cache")
2306+
result=$(measure_endpoint "${API_BASE}/history/${obj_id}" "GET" "" "History with full cache")
23042307
log_success "History with full cache"
23052308
fi
23062309

23072310
log_info "Testing /api/since with full cache..."
23082311
local since_timestamp=$(($(date +%s) - 3600))
2309-
result=$(measure_endpoint "${API_BASE}/api/since/${since_timestamp}" "GET" "" "Since with full cache")
2312+
result=$(measure_endpoint "${API_BASE}/since/${since_timestamp}" "GET" "" "Since with full cache")
23102313
log_success "Since with full cache"
23112314

23122315
# ============================================================

cache/docs/CACHE_METRICS_REPORT.md

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# RERUM Cache Metrics & Functionality Report
22

3-
**Generated**: Thu Oct 23 20:13:25 UTC 2025
3+
**Generated**: Fri Oct 24 16:55:19 UTC 2025
44
**Test Duration**: Full integration and performance suite
55
**Server**: http://localhost:3001
66

@@ -14,11 +14,11 @@
1414

1515
| Metric | Value |
1616
|--------|-------|
17-
| Cache Hits | 0 |
18-
| Cache Misses | 10111 |
19-
| Hit Rate | 0.00% |
20-
| Cache Size | 3334 entries |
21-
| Invalidations | 6671 |
17+
| Cache Hits | 1328 |
18+
| Cache Misses | 785 |
19+
| Hit Rate | 62.85% |
20+
| Cache Size | 2 entries |
21+
| Invalidations | 678 |
2222

2323
---
2424

@@ -48,12 +48,12 @@
4848

4949
| Endpoint | Cold Cache (DB) | Warm Cache (Memory) | Speedup | Benefit |
5050
|----------|-----------------|---------------------|---------|---------|
51-
| `/query` | 339 | N/A | N/A | N/A |
52-
| `/search` | 97 | N/A | N/A | N/A |
53-
| `/searchPhrase` | 20 | N/A | N/A | N/A |
54-
| `/id` | 416 | N/A | N/A | N/A |
55-
| `/history` | 709 | N/A | N/A | N/A |
56-
| `/since` | 716 | N/A | N/A | N/A |
51+
| `/query` | 342 | N/A | N/A | N/A |
52+
| `/search` | 109 | N/A | N/A | N/A |
53+
| `/searchPhrase` | 24 | N/A | N/A | N/A |
54+
| `/id` | 412 | N/A | N/A | N/A |
55+
| `/history` | 721 | N/A | N/A | N/A |
56+
| `/since` | 733 | N/A | N/A | N/A |
5757

5858
**Interpretation**:
5959
- **Cold Cache**: First request hits database (cache miss)
@@ -69,13 +69,13 @@
6969

7070
| Endpoint | Empty Cache | Full Cache (1000 entries) | Overhead | Impact |
7171
|----------|-------------|---------------------------|----------|--------|
72-
| `/create` | 19ms | 30ms | +11ms | ⚠️ Moderate |
73-
| `/update` | 432ms | 426ms | -6ms | ✅ None |
74-
| `/patch` | 421ms | 430ms | +9ms |Low |
75-
| `/set` | 430ms | 441ms | +11ms | ⚠️ Moderate |
76-
| `/unset` | 422ms | 426ms | +4ms |Negligible |
77-
| `/delete` | 443ms | 428ms | -15ms | ✅ None |
78-
| `/overwrite` | 430ms | 427ms | -3ms | ✅ None |
72+
| `/create` | 22ms | 22ms | +0ms | ✅ Negligible |
73+
| `/update` | 452ms | 419ms | -33ms | ✅ None |
74+
| `/patch` | 425ms | 420ms | -5ms |None |
75+
| `/set` | 425ms | 439ms | +14ms | ⚠️ Moderate |
76+
| `/unset` | 422ms | 420ms | -2ms |None |
77+
| `/delete` | 450ms | 442ms | -8ms | ✅ None |
78+
| `/overwrite` | 423ms | 422ms | -1ms | ✅ None |
7979

8080
**Interpretation**:
8181
- **Empty Cache**: Write with no cache to invalidate
@@ -97,9 +97,9 @@
9797
- Net benefit on 1000 reads: ~0ms saved (assuming 70% hit rate)
9898

9999
**Cache Costs (Writes)**:
100-
- Average overhead per write: ~1ms
101-
- Overhead percentage: ~0%
102-
- Net cost on 1000 writes: ~1000ms
100+
- Average overhead per write: ~-5ms
101+
- Overhead percentage: ~-1%
102+
- Net cost on 1000 writes: ~-5000ms
103103
- Tested endpoints: create, update, patch, set, unset, delete, overwrite
104104

105105
**Break-Even Analysis**:
@@ -111,17 +111,17 @@ For a workload with:
111111

112112
```
113113
Without Cache:
114-
800 reads × 339ms = 271200ms
115-
200 writes × 19ms = 3800ms
116-
Total: 275000ms
114+
800 reads × 342ms = 273600ms
115+
200 writes × 22ms = 4400ms
116+
Total: 278000ms
117117
118118
With Cache:
119119
560 cached reads × 5ms = 2800ms
120-
240 uncached reads × 339ms = 81360ms
121-
200 writes × 30ms = 6000ms
122-
Total: 90160ms
120+
240 uncached reads × 342ms = 82080ms
121+
200 writes × 22ms = 4400ms
122+
Total: 89280ms
123123
124-
Net Improvement: 184840ms faster (~68% improvement)
124+
Net Improvement: 188720ms faster (~68% improvement)
125125
```
126126

127127
---
@@ -132,7 +132,7 @@ Net Improvement: 184840ms faster (~68% improvement)
132132

133133
The cache layer provides:
134134
1. **Significant read performance improvements** (0ms average speedup)
135-
2. **Minimal write overhead** (1ms average, ~0% of write time)
135+
2. **Minimal write overhead** (-5ms average, ~-1% of write time)
136136
3. **All endpoints functioning correctly** (26 passed tests)
137137

138138
### 📊 Monitoring Recommendations
@@ -146,7 +146,7 @@ In production, monitor:
146146
### ⚙️ Configuration Tuning
147147

148148
Current cache configuration:
149-
- Max entries: 5000
149+
- Max entries: 1000
150150
- Max size: 1000000000 bytes
151151
- TTL: 300 seconds
152152

@@ -176,6 +176,6 @@ Consider tuning based on:
176176

177177
---
178178

179-
**Report Generated**: Thu Oct 23 20:13:25 UTC 2025
179+
**Report Generated**: Fri Oct 24 16:55:19 UTC 2025
180180
**Format Version**: 1.0
181181
**Test Suite**: cache-metrics.sh

0 commit comments

Comments
 (0)