inpaintServer/tests/README.md

205 lines
4.9 KiB
Markdown

# 🧪 API 테스트 가이드
이 디렉토리는 인페인팅 서버의 API 엔드포인트들을 테스트하기 위한 도구들을 포함합니다.
## 📁 디렉토리 구조
```
tests/
├── images/ # 테스트용 샘플 이미지들
├── results/ # 테스트 결과 이미지들
├── scripts/ # 테스트 스크립트들
└── README.md # 이 파일
```
## 🖼️ 테스트 이미지
### 생성된 테스트 이미지들
- **기본 테스트 이미지**
- `test_image_256.png` / `test_mask_256.png` (256x256)
- `test_image_512.png` / `test_mask_512.png` (512x512)
- `test_image_1024.png` / `large_mask_1024.png` (1024x1024)
- **복잡한 테스트 이미지**
- `complex_image_512.png` / `complex_mask_512.png` (512x512)
- 체크무늬 패턴과 여러 도형들이 포함된 복잡한 이미지
### 테스트 이미지 생성
```bash
cd tests/scripts
python generate_test_images.py
```
## 🚀 API 테스트
### 전체 테스트 실행
```bash
cd tests/scripts
python test_api.py
```
### 단일 테스트 실행
```bash
# 헬스 체크만
python test_api.py --single health
# 서버 설정 정보만
python test_api.py --single config
# 인페인팅 테스트만
python test_api.py --single inpaint
# 배경 제거 테스트만
python test_api.py --single rembg
# 플러그인 테스트만
python test_api.py --single plugin
```
### 다른 서버 URL로 테스트
```bash
python test_api.py --url http://192.168.1.100:8000
```
## 📊 테스트 항목
### 1. 헬스 체크 (`/health`)
- 서버 상태 확인
- 가동 시간 확인
### 2. 서버 설정 정보 (`/api/v1/server-config`)
- 시스템 정보 (Jetson Xavier / x86_64)
- 사용 가능한 모델 목록
- 최대 파일 크기 제한
### 3. 샘플러 목록 (`/api/v1/samplers`)
- Stable Diffusion 샘플러 목록 확인
### 4. 인페인팅 API (`/api/v1/inpaint`)
- Simple LAMA 모델을 사용한 인페인팅
- 다양한 크기의 이미지 테스트
- 프롬프트, 시드, 설정값 테스트
### 5. 배경 제거 API (`/api/v1/remove_bg`)
- REMBG 모델을 사용한 배경 제거
- 결과 이미지와 마스크 반환
### 6. 플러그인 API (`/api/v1/run_plugin_gen_image`)
- 플러그인을 통한 이미지 생성
- REMBG 플러그인 테스트
## 🔧 테스트 전 준비사항
### 1. 서버 실행
```bash
# 개발 모드로 실행
python main.py --dev
# 또는 프로덕션 모드로 실행
python main.py --host 0.0.0.0 --port 8000 --workers 1
```
### 2. 의존성 설치
```bash
pip install -r requirements.txt
```
### 3. 테스트 이미지 생성
```bash
cd tests/scripts
python generate_test_images.py
```
## 📈 테스트 결과
### 성공적인 테스트 결과
```
🧪 전체 API 테스트 시작
==================================================
🏥 헬스 체크 테스트...
✅ 서버 상태: healthy
📊 가동 시간: 15.23초
⚙️ 서버 설정 정보 테스트...
✅ 서버 설정 조회 성공
🖥️ 시스템: Jetson Xavier
🎮 디바이스: cuda
📁 최대 파일 크기: 25MB
🎯 사용 가능한 모델: 3개
🎨 인페인팅 테스트 (test_image_512.png + test_mask_512.png)...
✅ 인페인팅 성공!
⏱️ 처리 시간: 2.45초
🎲 사용된 시드: 42
💾 결과 이미지 저장: inpaint_result_test_image_512.png
==================================================
📊 테스트 결과 요약
==================================================
헬스 체크 ✅ PASS
서버 설정 정보 ✅ PASS
샘플러 목록 ✅ PASS
인페인팅 (256x256) ✅ PASS
인페인팅 (512x512) ✅ PASS
배경 제거 ✅ PASS
플러그인 이미지 생성 ✅ PASS
==================================================
전체: 7개, 성공: 7개, 실패: 0개
🎉 모든 테스트가 성공했습니다!
```
### 실패한 테스트 결과
```
❌ 인페인팅 실패: 500
📝 에러 메시지: 워커 매니저가 초기화되지 않았습니다
```
## 🐛 문제 해결
### 1. 연결 실패
- 서버가 실행 중인지 확인
- 포트 번호가 올바른지 확인
- 방화벽 설정 확인
### 2. 이미지 처리 실패
- GPU 메모리 부족 확인
- 모델 파일이 올바른 위치에 있는지 확인
- 로그 파일에서 상세 에러 확인
### 3. 타임아웃 에러
- `timeout` 값을 늘려서 재시도
- 서버 성능 확인
- 네트워크 상태 확인
## 📝 로그 확인
### 서버 로그
```bash
tail -f logs/main_server.log
```
### 모니터링 로그
```bash
tail -f logs/monitoring.log
```
## 🔄 지속적 테스트
### 자동 테스트 스크립트
```bash
#!/bin/bash
while true; do
echo "🔄 테스트 실행 중... $(date)"
python test_api.py
echo "⏳ 60초 대기 중..."
sleep 60
done
```
이 스크립트를 사용하여 서버의 안정성을 지속적으로 모니터링할 수 있습니다.