inpaintServer/tests
AGX 96c3db9992 first commit 2025-08-27 13:41:46 +09:00
..
images first commit 2025-08-27 13:41:46 +09:00
scripts first commit 2025-08-27 13:41:46 +09:00
tests/images first commit 2025-08-27 13:41:46 +09:00
README.md first commit 2025-08-27 13:41:46 +09:00

README.md

🧪 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)
    • 체크무늬 패턴과 여러 도형들이 포함된 복잡한 이미지

테스트 이미지 생성

cd tests/scripts
python generate_test_images.py

🚀 API 테스트

전체 테스트 실행

cd tests/scripts
python test_api.py

단일 테스트 실행

# 헬스 체크만
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로 테스트

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. 서버 실행

# 개발 모드로 실행
python main.py --dev

# 또는 프로덕션 모드로 실행
python main.py --host 0.0.0.0 --port 8000 --workers 1

2. 의존성 설치

pip install -r requirements.txt

3. 테스트 이미지 생성

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 값을 늘려서 재시도
  • 서버 성능 확인
  • 네트워크 상태 확인

📝 로그 확인

서버 로그

tail -f logs/main_server.log

모니터링 로그

tail -f logs/monitoring.log

🔄 지속적 테스트

자동 테스트 스크립트

#!/bin/bash
while true; do
    echo "🔄 테스트 실행 중... $(date)"
    python test_api.py
    echo "⏳ 60초 대기 중..."
    sleep 60
done

이 스크립트를 사용하여 서버의 안정성을 지속적으로 모니터링할 수 있습니다.