network/mantests/09_stress_test.sh

94 lines
2.7 KiB
Bash
Executable File

#!/bin/bash
# Test 9: Stress Test - Create Many Databases
# This test creates multiple databases to test capacity and distribution
API_KEY="ak_L1zF6g7Np1dSRyy-zp_cXFfA:default"
GATEWAY_URL="http://localhost:6001"
echo "========================================="
echo "Test 9: Stress Test - Multiple Databases"
echo "========================================="
echo ""
echo "Creating 10 databases with data..."
echo ""
for i in {1..10}; do
DB_NAME="stress_test_db_${i}"
echo "Creating ${DB_NAME}..."
# Create table
RESPONSE=$(curl -X POST "${GATEWAY_URL}/v1/database/create-table" \
-H "Authorization: Bearer ${API_KEY}" \
-H "Content-Type: application/json" \
-d "{
\"database\": \"${DB_NAME}\",
\"schema\": \"CREATE TABLE data (id INTEGER PRIMARY KEY, value TEXT, db_number INTEGER)\"
}" \
-w "\nHTTP_STATUS:%{http_code}" \
-s)
HTTP_STATUS=$(echo "$RESPONSE" | grep "HTTP_STATUS:" | cut -d: -f2)
JSON_RESPONSE=$(echo "$RESPONSE" | sed '/HTTP_STATUS:/d')
echo "$JSON_RESPONSE" | jq -c '.'
echo "HTTP Status: $HTTP_STATUS"
# Insert data
RESPONSE=$(curl -X POST "${GATEWAY_URL}/v1/database/exec" \
-H "Authorization: Bearer ${API_KEY}" \
-H "Content-Type: application/json" \
-d "{
\"database\": \"${DB_NAME}\",
\"sql\": \"INSERT INTO data (value, db_number) VALUES (?, ?)\",
\"args\": [\"Data from database ${i}\", ${i}]
}" \
-w "\nHTTP_STATUS:%{http_code}" \
-s)
HTTP_STATUS=$(echo "$RESPONSE" | grep "HTTP_STATUS:" | cut -d: -f2)
JSON_RESPONSE=$(echo "$RESPONSE" | sed '/HTTP_STATUS:/d')
echo "$JSON_RESPONSE" | jq -c '.'
echo "HTTP Status: $HTTP_STATUS"
echo ""
# Small delay to avoid overwhelming the system
sleep 2
done
echo "========================================="
echo "Verifying all databases..."
echo "========================================="
echo ""
SUCCESS_COUNT=0
FAIL_COUNT=0
for i in {1..10}; do
DB_NAME="stress_test_db_${i}"
echo "Querying ${DB_NAME}..."
RESPONSE=$(curl -X POST "${GATEWAY_URL}/v1/database/query" \
-H "Authorization: Bearer ${API_KEY}" \
-H "Content-Type: application/json" \
-d "{
\"database\": \"${DB_NAME}\",
\"sql\": \"SELECT * FROM data WHERE db_number = ${i}\"
}" \
-s)
if echo "$RESPONSE" | jq -e '.rows | length > 0' > /dev/null 2>&1; then
echo "${DB_NAME} OK"
SUCCESS_COUNT=$((SUCCESS_COUNT + 1))
else
echo "${DB_NAME} FAILED"
FAIL_COUNT=$((FAIL_COUNT + 1))
fi
done
echo ""
echo "========================================="
echo "Test 9 Complete"
echo "Success: ${SUCCESS_COUNT}/10"
echo "Failed: ${FAIL_COUNT}/10"
echo "========================================="