|
import yaml |
|
from dotenv import dotenv_values |
|
from pathlib import Path |
|
|
|
BASE_API_AND_DOCKER_CONFIG_SET_DIFF = { |
|
"APP_MAX_EXECUTION_TIME", |
|
"BATCH_UPLOAD_LIMIT", |
|
"CELERY_BEAT_SCHEDULER_TIME", |
|
"CODE_EXECUTION_API_KEY", |
|
"HTTP_REQUEST_MAX_CONNECT_TIMEOUT", |
|
"HTTP_REQUEST_MAX_READ_TIMEOUT", |
|
"HTTP_REQUEST_MAX_WRITE_TIMEOUT", |
|
"KEYWORD_DATA_SOURCE_TYPE", |
|
"LOGIN_LOCKOUT_DURATION", |
|
"LOG_FORMAT", |
|
"OCI_ACCESS_KEY", |
|
"OCI_BUCKET_NAME", |
|
"OCI_ENDPOINT", |
|
"OCI_REGION", |
|
"OCI_SECRET_KEY", |
|
"REDIS_DB", |
|
"RESEND_API_URL", |
|
"RESPECT_XFORWARD_HEADERS_ENABLED", |
|
"SENTRY_DSN", |
|
"SSRF_DEFAULT_CONNECT_TIME_OUT", |
|
"SSRF_DEFAULT_MAX_RETRIES", |
|
"SSRF_DEFAULT_READ_TIME_OUT", |
|
"SSRF_DEFAULT_TIME_OUT", |
|
"SSRF_DEFAULT_WRITE_TIME_OUT", |
|
"UPSTASH_VECTOR_TOKEN", |
|
"UPSTASH_VECTOR_URL", |
|
"USING_UGC_INDEX", |
|
"WEAVIATE_BATCH_SIZE", |
|
"WEAVIATE_GRPC_ENABLED", |
|
} |
|
|
|
BASE_API_AND_DOCKER_COMPOSE_CONFIG_SET_DIFF = { |
|
"BATCH_UPLOAD_LIMIT", |
|
"CELERY_BEAT_SCHEDULER_TIME", |
|
"HTTP_REQUEST_MAX_CONNECT_TIMEOUT", |
|
"HTTP_REQUEST_MAX_READ_TIMEOUT", |
|
"HTTP_REQUEST_MAX_WRITE_TIMEOUT", |
|
"KEYWORD_DATA_SOURCE_TYPE", |
|
"LOGIN_LOCKOUT_DURATION", |
|
"LOG_FORMAT", |
|
"OPENDAL_FS_ROOT", |
|
"OPENDAL_S3_ACCESS_KEY_ID", |
|
"OPENDAL_S3_BUCKET", |
|
"OPENDAL_S3_ENDPOINT", |
|
"OPENDAL_S3_REGION", |
|
"OPENDAL_S3_ROOT", |
|
"OPENDAL_S3_SECRET_ACCESS_KEY", |
|
"OPENDAL_S3_SERVER_SIDE_ENCRYPTION", |
|
"PGVECTOR_MAX_CONNECTION", |
|
"PGVECTOR_MIN_CONNECTION", |
|
"PGVECTO_RS_DATABASE", |
|
"PGVECTO_RS_HOST", |
|
"PGVECTO_RS_PASSWORD", |
|
"PGVECTO_RS_PORT", |
|
"PGVECTO_RS_USER", |
|
"RESPECT_XFORWARD_HEADERS_ENABLED", |
|
"SCARF_NO_ANALYTICS", |
|
"SSRF_DEFAULT_CONNECT_TIME_OUT", |
|
"SSRF_DEFAULT_MAX_RETRIES", |
|
"SSRF_DEFAULT_READ_TIME_OUT", |
|
"SSRF_DEFAULT_TIME_OUT", |
|
"SSRF_DEFAULT_WRITE_TIME_OUT", |
|
"STORAGE_OPENDAL_SCHEME", |
|
"SUPABASE_API_KEY", |
|
"SUPABASE_BUCKET_NAME", |
|
"SUPABASE_URL", |
|
"USING_UGC_INDEX", |
|
"VIKINGDB_CONNECTION_TIMEOUT", |
|
"VIKINGDB_SOCKET_TIMEOUT", |
|
"WEAVIATE_BATCH_SIZE", |
|
"WEAVIATE_GRPC_ENABLED", |
|
} |
|
|
|
API_CONFIG_SET = set(dotenv_values(Path("api") / Path(".env.example")).keys()) |
|
DOCKER_CONFIG_SET = set(dotenv_values(Path("docker") / Path(".env.example")).keys()) |
|
DOCKER_COMPOSE_CONFIG_SET = set() |
|
|
|
with open(Path("docker") / Path("docker-compose.yaml")) as f: |
|
DOCKER_COMPOSE_CONFIG_SET = set(yaml.safe_load(f.read())["x-shared-env"].keys()) |
|
|
|
|
|
def test_yaml_config(): |
|
|
|
DIFF_API_WITH_DOCKER = ( |
|
API_CONFIG_SET - DOCKER_CONFIG_SET - BASE_API_AND_DOCKER_CONFIG_SET_DIFF |
|
) |
|
if DIFF_API_WITH_DOCKER: |
|
print( |
|
f"API and Docker config sets are different with key: {DIFF_API_WITH_DOCKER}" |
|
) |
|
raise Exception("API and Docker config sets are different") |
|
DIFF_API_WITH_DOCKER_COMPOSE = ( |
|
API_CONFIG_SET |
|
- DOCKER_COMPOSE_CONFIG_SET |
|
- BASE_API_AND_DOCKER_COMPOSE_CONFIG_SET_DIFF |
|
) |
|
if DIFF_API_WITH_DOCKER_COMPOSE: |
|
print( |
|
f"API and Docker Compose config sets are different with key: {DIFF_API_WITH_DOCKER_COMPOSE}" |
|
) |
|
raise Exception("API and Docker Compose config sets are different") |
|
print("All tests passed!") |
|
|
|
|
|
if __name__ == "__main__": |
|
test_yaml_config() |
|
|