|
21 | 21 | BASE_URL="${BASE_URL:-http://localhost:3001}" |
22 | 22 | API_BASE="${BASE_URL}/v1" |
23 | 23 | # 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}" |
25 | 25 |
|
26 | 26 | # Test configuration |
27 | 27 | CACHE_FILL_SIZE=1000 |
@@ -52,8 +52,10 @@ declare -A ENDPOINT_DESCRIPTIONS |
52 | 52 | # Array to store created object IDs for cleanup |
53 | 53 | declare -a CREATED_IDS=() |
54 | 54 |
|
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" |
57 | 59 |
|
58 | 60 | ################################################################################ |
59 | 61 | # Helper Functions |
@@ -225,18 +227,38 @@ fill_cache() { |
225 | 227 | ( |
226 | 228 | local pattern=$((count % 3)) |
227 | 229 |
|
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 |
236 | 247 | 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 |
240 | 262 | fi |
241 | 263 | ) & |
242 | 264 | done |
@@ -265,7 +287,7 @@ fill_cache() { |
265 | 287 | log_warning "Cache size (${final_size}) is less than target (${target_size})" |
266 | 288 | fi |
267 | 289 |
|
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)" |
269 | 291 | } |
270 | 292 |
|
271 | 293 | # Warm up the system (JIT compilation, connection pools, OS caches) |
@@ -2251,16 +2273,17 @@ main() { |
2251 | 2273 |
|
2252 | 2274 | # Test read endpoints with the full cache WITHOUT clearing it |
2253 | 2275 | # 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 |
2254 | 2277 | log_info "Testing /api/query with full cache..." |
2255 | 2278 | local result=$(measure_endpoint "${API_BASE}/api/query" "POST" '{"type":"CreatePerfTest"}' "Query with full cache") |
2256 | 2279 | log_success "Query with full cache" |
2257 | 2280 |
|
2258 | 2281 | 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") |
2260 | 2283 | log_success "Search with full cache" |
2261 | 2284 |
|
2262 | 2285 | 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") |
2264 | 2287 | log_success "Search phrase with full cache" |
2265 | 2288 |
|
2266 | 2289 | # For ID, history, since - use objects created in Phase 1 if available |
|
0 commit comments