TNT/test_basic.sh
m1ngsama 90ddd7fade Add development and testing infrastructure
Added build targets:
- make asan        - AddressSanitizer for memory bugs
- make debug       - Debug symbols
- make valgrind    - Valgrind helper
- make check       - Static analysis (cppcheck, clang-tidy)

Added test scripts:
- test_basic.sh    - Basic functionality tests
  * Server startup
  * SSH connection
  * Message logging

- test_stress.sh   - Load testing
  * Configurable client count
  * Configurable duration
  * Automatic cleanup

Updated .gitignore:
- test.log
- *.dSYM/

Philosophy: Simple, minimal, Unix-style tools.
No dependencies on complex test frameworks.
2025-12-02 10:00:00 +08:00

60 lines
1.2 KiB
Bash
Executable file

#!/bin/sh
# Basic functional tests
# Usage: ./test_basic.sh
PORT=${PORT:-2222}
PASS=0
FAIL=0
cleanup() {
kill $SERVER_PID 2>/dev/null
rm -f test.log
}
trap cleanup EXIT
echo "=== TNT Basic Tests ==="
# Start server
./tnt -p $PORT >test.log 2>&1 &
SERVER_PID=$!
sleep 2
# Test 1: Server started
if kill -0 $SERVER_PID 2>/dev/null; then
echo "✓ Server started"
PASS=$((PASS + 1))
else
echo "✗ Server failed to start"
FAIL=$((FAIL + 1))
exit 1
fi
# Test 2: SSH connection
if timeout 5 ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \
-o BatchMode=yes -p $PORT localhost exit 2>/dev/null; then
echo "✓ SSH connection works"
PASS=$((PASS + 1))
else
echo "✗ SSH connection failed"
FAIL=$((FAIL + 1))
fi
# Test 3: Message logging
echo "test message" | timeout 5 ssh -o StrictHostKeyChecking=no \
-o UserKnownHostsFile=/dev/null -p $PORT localhost >/dev/null 2>&1 &
sleep 3
if [ -f messages.log ]; then
echo "✓ Message logging works"
PASS=$((PASS + 1))
else
echo "✗ Message logging failed"
FAIL=$((FAIL + 1))
fi
# Summary
echo ""
echo "PASSED: $PASS"
echo "FAILED: $FAIL"
[ $FAIL -eq 0 ] && echo "All tests passed" || echo "Some tests failed"
exit $FAIL