Skip to content

Commit 777f9aa

Browse files
committed
Catch those hits
1 parent 46943e6 commit 777f9aa

2 files changed

Lines changed: 40 additions & 792 deletions

File tree

cache/__tests__/cache-metrics.sh

Lines changed: 40 additions & 17 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.eyJodHRwOi8vc3RvcmUucmVydW0uaW8vYWdlbnQiOiJodHRwczovL2RldnN0b3JlLnJlcnVtLmlvL3YxL2lkLzY4ZDZkZDZhNzE4ZWUyOTRmMTk0YmUwNCIsImh0dHA6Ly9yZXJ1bS5pby91c2VyX3JvbGVzIjp7InJvbGVzIjpbImR1bmJhcl91c2VyX3B1YmxpYyIsImdsb3NzaW5nX3VzZXJfcHVibGljIiwibHJkYV91c2VyX3B1YmxpYyIsInJlcnVtX3VzZXJfcHVibGljIiwidHBlbl91c2VyX3B1YmxpYyJdfSwiaHR0cDovL2R1bmJhci5yZXJ1bS5pby91c2VyX3JvbGVzIjp7InJvbGVzIjpbImR1bmJhcl91c2VyX3B1YmxpYyIsImdsb3NzaW5nX3VzZXJfcHVibGljIiwibHJkYV91c2VyX3B1YmxpYyIsInJlcnVtX3VzZXJfcHVibGljIiwidHBlbl91c2VyX3B1YmxpYyJdfSwiaHR0cDovL3JlcnVtLmlvL2FwcF9mbGFnIjpbInRwZW4iXSwiaHR0cDovL2R1bmJhci5yZXJ1bS5pby9hcHBfZmxhZyI6WyJ0cGVuIl0sImlzcyI6Imh0dHBzOi8vY3ViYXAuYXV0aDAuY29tLyIsInN1YiI6ImF1dGgwfDY4ZDZkZDY0YmRhMmNkNzdhMTA2MWMxNyIsImF1ZCI6Imh0dHA6Ly9yZXJ1bS5pby9hcGkiLCJpYXQiOjE3NjEyNDE2MTIsImV4cCI6MTc2MzgzMzYxMiwic2NvcGUiOiJvZmZsaW5lX2FjY2VzcyIsImF6cCI6IjYySnNhOU14SHVxaFJiTzIwZ1RIczlLcEtyN1VlN3NsIn0.IhZjdPPzziR5i9e3JEveus80LGgKxOvNRSb0rusOH5tmeB-8Ll6F58QhluwVDeTD9xZE-DHrZn5UYqbKUnnzjKnmYGH1gfRhhpxltNF69QiD7nG8YopTvDWSjFSvh4OwTzFWrBax-VlixhBFJ1dP3xB8QFW64K6aNeg5oUx0qQ3g1uFWPkg1z6Q1OWQsL0alTuxHN2eYxWcyTLmFfMh7OF8EgCgPffYpowa76En11WfMEz4JFdTH24Xx-6NEYU9BA72Z7BmMyHrg50njQqS8oT0jpjtsW9HaMMRAFM5rqsZYnBeZ1GNiR_HgMK0pqnCI3GJZ9GR7NCSAmk9rzbEd8g}"
24+
AUTH_TOKEN="${RERUM_TEST_TOKEN:-eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Ik9FVTBORFk0T1RVNVJrRXlOREl5TTBFMU1FVXdNMFUyT0RGQk9UaEZSa1JDTXpnek1FSTRNdyJ9.eyJodHRwOi8vc3RvcmUucmVydW0uaW8vYWdlbnQiOiJodHRwczovL2RldnN0b3JlLnJlcnVtLmlvL3YxL2lkLzY4ZDZkZDZhNzE4ZWUyOTRmMTk0YmUwNCIsImh0dHA6Ly9yZXJ1bS5pby91c2VyX3JvbGVzIjp7InJvbGVzIjpbImR1bmJhcl91c2VyX3B1YmxpYyIsImdsb3NzaW5nX3VzZXJfcHVibGljIiwibHJkYV91c2VyX3B1YmxpYyIsInJlcnVtX3VzZXJfcHVibGljIiwidHBlbl91c2VyX3B1YmxpYyJdfSwiaHR0cDovL2R1bmJhci5yZXJ1bS5pby91c2VyX3JvbGVzIjp7InJvbGVzIjpbImR1bmJhcl91c2VyX3B1YmxpYyIsImdsb3NzaW5nX3VzZXJfcHVibGljIiwibHJkYV91c2VyX3B1YmxpYyIsInJlcnVtX3VzZXJfcHVibGljIiwidHBlbl91c2VyX3B1YmxpYyJdfSwiaHR0cDovL3JlcnVtLmlvL2FwcF9mbGFnIjpbInRwZW4iXSwiaHR0cDovL2R1bmJhci5yZXJ1bS5pby9hcHBfZmxhZyI6WyJ0cGVuIl0sImlzcyI6Imh0dHBzOi8vY3ViYXAuYXV0aDAuY29tLyIsInN1YiI6ImF1dGgwfDY4ZDZkZDY0YmRhMmNkNzdhMTA2MWMxNyIsImF1ZCI6Imh0dHA6Ly9yZXJ1bS5pby9hcGkiLCJpYXQiOjE3NjEzMTUyNjQsImV4cCI6MTc2MzkwNzI2NCwic2NvcGUiOiJvZmZsaW5lX2FjY2VzcyIsImF6cCI6IjYySnNhOU14SHVxaFJiTzIwZ1RIczlLcEtyN1VlN3NsIn0.PKIRovrdRtBfGLeoGU18ry-kXTTWv8NfkPkY3BfirjH-4g9vVln7jzjf0AeoikaXYbwSatdDXwcOiOHbok_xnshcbKQEGU23G_mnxvqjkdjFU1jin6Xmajj2R3ooo-bRtCZEuu0_j4DS6C43vHKSbl-bHY9-DDEKSG-H5MC0rfJrHnfzfunyA4tKcOH5d1AYg0yxsyEhNiKR5oVQGHetbn6Eu8jweb9gQpVuCnx-mZpmD_P8gHvuKjTRjvvTJ3Jpr9hs8xmjYO6de4fZYds0f79UT3Nbh138Mp62i4I75NKf7eQm7FED7z3wnqObzcmp9RNLoa9TVEgw8k_gBZ7P2Q}"
2525

2626
# Test configuration
2727
CACHE_FILL_SIZE=1000
@@ -52,8 +52,10 @@ declare -A ENDPOINT_DESCRIPTIONS
5252
# Array to store created object IDs for cleanup
5353
declare -a CREATED_IDS=()
5454

55-
# Report file
56-
REPORT_FILE="$(pwd)/cache/docs/CACHE_METRICS_REPORT.md"
55+
# Report file - go up to repo root first
56+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
57+
REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
58+
REPORT_FILE="$REPO_ROOT/cache/docs/CACHE_METRICS_REPORT.md"
5759

5860
################################################################################
5961
# Helper Functions
@@ -225,18 +227,38 @@ fill_cache() {
225227
(
226228
local pattern=$((count % 3))
227229

228-
if [ $pattern -eq 0 ]; then
229-
curl -s -X POST "${API_BASE}/api/query" \
230-
-H "Content-Type: application/json" \
231-
-d "{\"type\":\"PerfTest\",\"limit\":10,\"skip\":$count}" > /dev/null 2>&1
232-
elif [ $pattern -eq 1 ]; then
233-
curl -s -X POST "${API_BASE}/api/query" \
234-
-H "Content-Type: application/json" \
235-
-d "{\"type\":\"Annotation\",\"limit\":10,\"skip\":$count}" > /dev/null 2>&1
230+
# First 3 requests create the cache entries we'll test for hits
231+
# Remaining requests add diversity using skip parameter
232+
if [ $count -lt 3 ]; then
233+
# These will be queried in Phase 3 for cache hits
234+
if [ $pattern -eq 0 ]; then
235+
curl -s -X POST "${API_BASE}/api/query" \
236+
-H "Content-Type: application/json" \
237+
-d "{\"type\":\"CreatePerfTest\"}" > /dev/null 2>&1
238+
elif [ $pattern -eq 1 ]; then
239+
curl -s -X POST "${API_BASE}/api/search" \
240+
-H "Content-Type: application/json" \
241+
-d "{\"query\":\"annotation\"}" > /dev/null 2>&1
242+
else
243+
curl -s -X POST "${API_BASE}/api/search/phrase" \
244+
-H "Content-Type: application/json" \
245+
-d "{\"query\":\"test annotation\"}" > /dev/null 2>&1
246+
fi
236247
else
237-
curl -s -X POST "${API_BASE}/api/query" \
238-
-H "Content-Type: application/json" \
239-
-d "{\"limit\":10,\"skip\":$count}" > /dev/null 2>&1
248+
# Add diversity to fill cache with different entries
249+
if [ $pattern -eq 0 ]; then
250+
curl -s -X POST "${API_BASE}/api/query" \
251+
-H "Content-Type: application/json" \
252+
-d "{\"type\":\"CreatePerfTest\",\"skip\":$count}" > /dev/null 2>&1
253+
elif [ $pattern -eq 1 ]; then
254+
curl -s -X POST "${API_BASE}/api/search" \
255+
-H "Content-Type: application/json" \
256+
-d "{\"query\":\"annotation\",\"skip\":$count}" > /dev/null 2>&1
257+
else
258+
curl -s -X POST "${API_BASE}/api/search/phrase" \
259+
-H "Content-Type: application/json" \
260+
-d "{\"query\":\"test annotation\",\"skip\":$count}" > /dev/null 2>&1
261+
fi
240262
fi
241263
) &
242264
done
@@ -265,7 +287,7 @@ fill_cache() {
265287
log_warning "Cache size (${final_size}) is less than target (${target_size})"
266288
fi
267289

268-
log_success "Cache filled to ${final_size} entries (~33% matching test type)"
290+
log_success "Cache filled to ${final_size} entries (query, search, search/phrase patterns)"
269291
}
270292

271293
# Warm up the system (JIT compilation, connection pools, OS caches)
@@ -2251,16 +2273,17 @@ main() {
22512273

22522274
# Test read endpoints with the full cache WITHOUT clearing it
22532275
# Just measure the performance, don't re-test functionality
2276+
# IMPORTANT: Queries must match cache fill patterns (default limit=100, skip=0) to get cache hits
22542277
log_info "Testing /api/query with full cache..."
22552278
local result=$(measure_endpoint "${API_BASE}/api/query" "POST" '{"type":"CreatePerfTest"}' "Query with full cache")
22562279
log_success "Query with full cache"
22572280

22582281
log_info "Testing /api/search with full cache..."
2259-
result=$(measure_endpoint "${API_BASE}/api/search" "POST" '{"query":"annotation","limit":5}' "Search with full cache")
2282+
result=$(measure_endpoint "${API_BASE}/api/search" "POST" '{"query":"annotation"}' "Search with full cache")
22602283
log_success "Search with full cache"
22612284

22622285
log_info "Testing /api/search/phrase with full cache..."
2263-
result=$(measure_endpoint "${API_BASE}/api/search/phrase" "POST" '{"query":"test annotation","limit":5}' "Search phrase with full cache")
2286+
result=$(measure_endpoint "${API_BASE}/api/search/phrase" "POST" '{"query":"test annotation"}' "Search phrase with full cache")
22642287
log_success "Search phrase with full cache"
22652288

22662289
# For ID, history, since - use objects created in Phase 1 if available

0 commit comments

Comments
 (0)