mirror of
https://github.com/meta-llama/llama-stack.git
synced 2025-10-04 12:07:34 +00:00
This PR refactors the integration test system to use global "setups" which provides better separation of concerns: **suites = what to test, setups = how to configure.** NOTE: if you naming suggestions, please provide feedback Changes: - New `tests/integration/setups.py` with global, reusable configurations (ollama, vllm, gpt, claude) - Modified `scripts/integration-tests.sh` options to match with the underlying pytest options - Updated documentation to reflect the new global setup system The main benefit is that setups can be reused across multiple suites (e.g., use "gpt" with any suite) even though sometimes they could specifically tailored for a suite (vision <> ollama-vision). It is now easier to add new configurations without modifying existing suites. Usage examples: - `pytest tests/integration --suite=responses --setup=gpt` - `pytest tests/integration --suite=vision` # auto-selects "ollama-vision" setup - `pytest tests/integration --suite=base --setup=vllm`
71 lines
2.1 KiB
Python
71 lines
2.1 KiB
Python
#!/usr/bin/env python3
|
|
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
# All rights reserved.
|
|
#
|
|
# This source code is licensed under the terms described in the LICENSE file in
|
|
# the root directory of this source tree.
|
|
|
|
"""
|
|
Small helper script to extract environment variables from a test setup.
|
|
Used by integration-tests.sh to set environment variables before starting the server.
|
|
"""
|
|
|
|
import argparse
|
|
import sys
|
|
|
|
from tests.integration.suites import SETUP_DEFINITIONS, SUITE_DEFINITIONS
|
|
|
|
|
|
def get_setup_env_vars(setup_name, suite_name=None):
|
|
"""
|
|
Get environment variables for a setup, with optional suite default fallback.
|
|
|
|
Args:
|
|
setup_name: Name of the setup (e.g., 'ollama', 'gpt')
|
|
suite_name: Optional suite name to get default setup if setup_name is None
|
|
|
|
Returns:
|
|
Dictionary of environment variables
|
|
"""
|
|
# If no setup specified, try to get default from suite
|
|
if not setup_name and suite_name:
|
|
suite = SUITE_DEFINITIONS.get(suite_name)
|
|
if suite and suite.default_setup:
|
|
setup_name = suite.default_setup
|
|
|
|
if not setup_name:
|
|
return {}
|
|
|
|
setup = SETUP_DEFINITIONS.get(setup_name)
|
|
if not setup:
|
|
print(
|
|
f"Error: Unknown setup '{setup_name}'. Available: {', '.join(sorted(SETUP_DEFINITIONS.keys()))}",
|
|
file=sys.stderr,
|
|
)
|
|
sys.exit(1)
|
|
|
|
return setup.env
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(description="Extract environment variables from a test setup")
|
|
parser.add_argument("--setup", help="Setup name (e.g., ollama, gpt)")
|
|
parser.add_argument("--suite", help="Suite name to get default setup from if --setup not provided")
|
|
parser.add_argument("--format", choices=["bash", "json"], default="bash", help="Output format (default: bash)")
|
|
|
|
args = parser.parse_args()
|
|
|
|
env_vars = get_setup_env_vars(args.setup, args.suite)
|
|
|
|
if args.format == "bash":
|
|
# Output as bash export statements
|
|
for key, value in env_vars.items():
|
|
print(f"export {key}='{value}'")
|
|
elif args.format == "json":
|
|
import json
|
|
|
|
print(json.dumps(env_vars))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|