NetworkModuleTest.sln 내 독립 실행 가능한 DB 모듈 수동 테스트 도구.
Server/ServerEngine/Database/의 Network::Database 모듈을 직접 참조하여
5개 백엔드를 대화형 메뉴로 선택·테스트한다.
자동 테스트(Docker 기반) 는
scripts/db_tests/run_*_test.ps1사용. 수동 테스트(이 프로젝트) 는 Docker 없이 로컬 드라이버/DB 연결로 동작.
DocDBModule.sln열기 (또는NetworkModuleTest.sln에서 DBModuleTest 선택)- x64 / Debug 선택 후 빌드 (
Ctrl+Shift+B) - 실행 (
Ctrl+F5) → 대화형 메뉴에서 백엔드 선택
cd ModuleTest/DBModuleTest
# 빌드 후 대화형 메뉴
.\scripts\run-db-tests.ps1 -Build
# SQLite만 (드라이버·Docker 불필요, 즉시 실행)
.\scripts\run-db-tests.ps1 -Backend sqlite -Build
# MSSQL ODBC (드라이버 설치 + 로컬 SQL Server 필요)
$env:DB_MSSQL_ODBC = "Driver={ODBC Driver 17 for SQL Server};Server=localhost,1433;Database=db_func_test;UID=sa;PWD=Test1234!;TrustServerCertificate=yes;"
.\scripts\run-db-tests.ps1 -Backend mssql
# 전체 백엔드 순차 실행
.\scripts\run-db-tests.ps1 -Backend all -Build| # | 백엔드 | 필요 드라이버/설치 |
|---|---|---|
| 1 | SQLite (인메모리) | 없음 (sqlite3 내장) |
| 2 | MSSQL ODBC | ODBC Driver 17/18 for SQL Server |
| 3 | PostgreSQL ODBC | psqlODBC (PostgreSQL Unicode) |
| 4 | MySQL ODBC | MySQL Connector/ODBC 8.x |
| 5 | OLE DB (SQL Server) | SQLOLEDB (Windows 내장) 또는 MSOLEDBSQL |
| 테스트 | 내용 | SQLite | ODBC / OLE DB |
|---|---|---|---|
| T01 | 타입 라운드트립 (string / int / long long / double / bool / null) | ✓ | ✓ |
| T02 | IsNull() 후 GetString() 동일 컬럼 (컬럼 캐시 검증) |
✓ | ✓ |
| T03 | FindColumn 대소문자 무관 |
✓ | ✓ |
| T04 | Get*() before Next() — 안전한 기본값 반환 |
✓ | — |
| T05 | IConnection::BeginTransaction / Rollback |
✓ | ✓ |
| T06 | IDatabase::BeginTransaction throws (설계 검증) |
— | ✓ |
SQLite 기준 결과: 23/23 PASS ODBC/OLE DB 기준 결과: 22/22 PASS
실행 전 환경변수를 설정하면 기본값 대신 해당 문자열을 사용한다.
| 환경변수 | 대상 |
|---|---|
DB_MSSQL_ODBC |
MSSQL ODBC 연결 문자열 |
DB_PGSQL_ODBC |
PostgreSQL ODBC 연결 문자열 |
DB_MYSQL_ODBC |
MySQL ODBC 연결 문자열 |
DB_OLEDB |
OLE DB 연결 문자열 |
# 예시: 포트/비밀번호가 다른 로컬 MySQL
$env:DB_MYSQL_ODBC = "Driver={MySQL ODBC 8.4 Unicode Driver};Server=127.0.0.1;Port=3307;Database=mydb;UID=root;PWD=mypassword;"
.\scripts\run-db-tests.ps1 -Backend mysqlModuleTest/DBModuleTest/
test_database.cpp 메인 + T01~T06 테스트 (Network::Database PascalCase API)
DBModuleTest.vcxproj 프로젝트 파일 (Application, x64)
DocDBModule.sln 독립 솔루션
sqlite/
sqlite3.c / sqlite3.h SQLite 3.45.2 아말감 (내장)
scripts/
run-db-tests.ps1 빌드 + 실행 런처
Docs/
README.md 이 파일
README_SHORT.md 한 줄 요약
VERSION_SELECTOR.md VS 버전별 솔루션 선택 가이드
-- 레거시 파일 (빌드에 포함되지 않음, 참고용) --
IDatabase.h / DatabaseFactory.h / ODBCDatabase.* / OLEDBDatabase.* / ConnectionPool.*
odbc_sample.cpp / oledb_sample.cpp
소스 참조 방식:
test_database.cpp가../../Server/ServerEngine/Database/*.cpp를 직접 컴파일한다. DBModuleTest 폴더 내 레거시.cpp는 빌드에 포함되지 않는다.
| 파라미터 | 설명 | 기본값 |
|---|---|---|
-Backend |
sqlite mssql pgsql mysql oledb all interactive |
interactive |
-Config |
Debug / Release |
Debug |
-ConnStr |
연결 문자열 직접 지정 (단일 백엔드 시) | — |
-Build |
실행 전 빌드 | false |
-Rebuild |
클린 빌드 | false |
| 항목 | DBModuleTest (이 프로젝트) | scripts/db_tests/run_*_test.ps1 |
|---|---|---|
| Docker 필요 | ✗ | ✓ |
| 드라이버 자동 설치 | ✗ (수동 설치) | ✓ |
| 실행 방식 | 대화형 메뉴 / PS 스크립트 | 완전 자동 |
| 주 사용 목적 | 개발 중 빠른 로컬 검증 | CI / 회귀 테스트 |