Migrate examples to tests_e2e directory structure
- Relocated all files and scripts from `examples` to `tests_e2e` for better organization. - Updated references and paths in configurations, scripts, and test files. - Adjusted `bump-version.sh` to handle the new `tests_e2e` structure. - Updated `.gitignore` to reflect path changes.
This commit is contained in:
parent
b34d7822e4
commit
d66c4f8595
51 changed files with 35 additions and 35 deletions
18
.gitignore
vendored
18
.gitignore
vendored
|
|
@ -15,12 +15,12 @@ dist/
|
|||
build/
|
||||
*.egg-info/
|
||||
|
||||
/examples/static/conf/config.yml
|
||||
/examples/docker/certs/haproxy/.place_holder_cert.pem
|
||||
/examples/static/host1.local.pem
|
||||
/examples/swarm/certs/host1.local.pem
|
||||
/examples/docker/host2.local.pem
|
||||
/examples/swarm/certs/host2.local.pem
|
||||
/examples/docker/jwt_private.pem
|
||||
/examples/docker/jwt_pubkey.pem
|
||||
/examples/docker/cloudflare_ips.lst
|
||||
/tests_e2e/static/conf/config.yml
|
||||
/tests_e2e/docker/certs/haproxy/.place_holder_cert.pem
|
||||
/tests_e2e/static/host1.local.pem
|
||||
/tests_e2e/swarm/certs/host1.local.pem
|
||||
/tests_e2e/docker/host2.local.pem
|
||||
/tests_e2e/swarm/certs/host2.local.pem
|
||||
/tests_e2e/docker/jwt_private.pem
|
||||
/tests_e2e/docker/jwt_pubkey.pem
|
||||
/tests_e2e/docker/cloudflare_ips.lst
|
||||
|
|
|
|||
|
|
@ -152,7 +152,7 @@ Click on the image to see the videos (use HD for better visualization)
|
|||
[](https://youtu.be/B_bYZnRTGJM)
|
||||
[](https://youtu.be/JHqcq9crbDI)
|
||||
|
||||
[Here is the code](https://gist.github.com/byjg/e125e478a0562190176d69ea795fd3d4) applied in the examples above.
|
||||
[Here is the code](https://gist.github.com/byjg/e125e478a0562190176d69ea795fd3d4) applied in the test examples above.
|
||||
|
||||
|
||||
----
|
||||
|
|
|
|||
|
|
@ -94,7 +94,7 @@ if [[ "$MODE" == "verify" ]]; then
|
|||
check_contains "easy-haproxy:$NEW_VERSION" deploy/docker/docker-compose.yml "Docker compose image tag"
|
||||
check_contains "version = \"$NEW_VERSION\"" pyproject.toml "pyproject.toml version"
|
||||
|
||||
if grep -R "byjg/easy-haproxy:" examples | grep -v "$NEW_VERSION" >/dev/null; then
|
||||
if grep -R "byjg/easy-haproxy:" tests_e2e | grep -v "$NEW_VERSION" >/dev/null; then
|
||||
echo "❌ Examples still reference a different tag. Run bump-version.sh to update."
|
||||
STATUS=1
|
||||
else
|
||||
|
|
@ -122,9 +122,9 @@ sed -i "s#^version = \"[a-zA-Z0-9\\.-]*\"#version = \"$NEW_VERSION\"#g" pyprojec
|
|||
sed -i "s#appVersion: \"[a-zA-Z0-9\\.-]*\"#appVersion: \"$NEW_VERSION\"#g" "$CHART_FILE"
|
||||
|
||||
# Update examples
|
||||
find examples -type f -name '*.yml' -exec sed -i "s#\\(byjg/easy-haproxy:\\)[a-zA-Z0-9\\.-]*#\\1$NEW_VERSION#g" {} \; -print
|
||||
find tests_e2e -type f -name '*.yml' -exec sed -i "s#\\(byjg/easy-haproxy:\\)[a-zA-Z0-9\\.-]*#\\1$NEW_VERSION#g" {} \; -print
|
||||
# Update raw GitHub URLs in Kubernetes examples
|
||||
find examples/kubernetes -type f -name '*.yml' -exec sed -i "s#raw.githubusercontent.com/byjg/docker-easy-haproxy/[a-zA-Z0-9\\.\\-]*/deploy/kubernetes/easyhaproxy-daemonset.yml#raw.githubusercontent.com/byjg/docker-easy-haproxy/$NEW_VERSION/deploy/kubernetes/easyhaproxy-daemonset.yml#g" {} \;
|
||||
find tests_e2e/kubernetes -type f -name '*.yml' -exec sed -i "s#raw.githubusercontent.com/byjg/docker-easy-haproxy/[a-zA-Z0-9\\.\\-]*/deploy/kubernetes/easyhaproxy-daemonset.yml#raw.githubusercontent.com/byjg/docker-easy-haproxy/$NEW_VERSION/deploy/kubernetes/easyhaproxy-daemonset.yml#g" {} \;
|
||||
|
||||
# Bump chart version (patch)
|
||||
SANITIZED_CHART_VERSION="${CURRENT_CHART_VERSION%\.}"
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
# REQUIREMENTS (run these first):
|
||||
# ```bash
|
||||
# # Generate SSL certificates and JWT keys (from project root)
|
||||
# cd ../.. && ./examples/generate-keys.sh && cd examples/docker
|
||||
# cd ../.. && ./tests_e2e/generate-keys.sh && cd tests_e2e/docker
|
||||
# ```
|
||||
#
|
||||
# HOW TO START:
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
# REQUIREMENTS (run these first):
|
||||
# ```bash
|
||||
# # Generate SSL certificates and JWT keys (from project root)
|
||||
# cd ../.. && ./examples/generate-keys.sh && cd examples/docker
|
||||
# cd ../.. && ./tests_e2e/generate-keys.sh && cd tests_e2e/docker
|
||||
#
|
||||
# # Download Cloudflare IPs (idempotent - overwrites if exists)
|
||||
# curl -s https://www.cloudflare.com/ips-v4 > cloudflare_ips.lst
|
||||
|
|
@ -11,7 +11,7 @@
|
|||
# REQUIREMENTS (run these first):
|
||||
#
|
||||
# # Generate SSL certificates
|
||||
# cd ../.. && ./examples/generate-keys.sh && cd examples/docker
|
||||
# cd ../.. && ./tests_e2e/generate-keys.sh && cd tests_e2e/docker
|
||||
# ```
|
||||
#
|
||||
# HOW TO START:
|
||||
|
|
@ -60,7 +60,7 @@ curl http://localhost:8080
|
|||
|
||||
## Used By
|
||||
|
||||
- `examples/docker/docker-compose-cloudflare.yml`
|
||||
- `examples/docker/test_docker_compose.py::TestCloudflare`
|
||||
- `examples/kubernetes/cloudflare.yml`
|
||||
- `examples/kubernetes/test_kubernetes.py::TestCloudflare`
|
||||
- `tests_e2e/docker/docker-compose-cloudflare.yml`
|
||||
- `tests_e2e/test_docker_compose.py::TestCloudflare`
|
||||
- `tests_e2e/kubernetes/cloudflare.yml`
|
||||
- `tests_e2e/test_kubernetes.py::TestCloudflare`
|
||||
|
|
@ -31,7 +31,7 @@ Choose one of these pre-made configurations:
|
|||
|
||||
## Prerequisites
|
||||
|
||||
- SSL certificates generated (`./examples/generate-keys.sh`)
|
||||
- SSL certificates generated (`./tests_e2e/generate-keys.sh`)
|
||||
- `/etc/hosts` entry for `host1.local`
|
||||
- Backend container running on port 8080
|
||||
|
||||
|
|
@ -50,7 +50,7 @@ The docker-compose.yml file contains:
|
|||
|
||||
```bash
|
||||
# 1. Generate certificates
|
||||
cd ../.. && ./examples/generate-keys.sh && cd examples/static
|
||||
cd ../.. && ./tests_e2e/generate-keys.sh && cd tests_e2e/static
|
||||
|
||||
# 2. Choose a configuration
|
||||
cp conf/config-basic.yml conf/config.yml
|
||||
|
|
@ -10,7 +10,7 @@
|
|||
# REQUIREMENTS (run these first):
|
||||
# ```bash
|
||||
# # Generate SSL certificates
|
||||
# cd ../.. && ./examples/generate-keys.sh && cd examples/static
|
||||
# cd ../.. && ./tests_e2e/generate-keys.sh && cd tests_e2e/static
|
||||
#
|
||||
# # Add to /etc/hosts (idempotent)
|
||||
# grep -q "host1.local" /etc/hosts || echo "127.0.0.1 host1.local" | sudo tee -a /etc/hosts
|
||||
|
|
@ -14,7 +14,7 @@
|
|||
# docker stack deploy -c easyhaproxy.yml easyhaproxy
|
||||
#
|
||||
# # Generate SSL certificates
|
||||
# cd ../.. && ./examples/generate-keys.sh && cd examples/swarm
|
||||
# cd ../.. && ./tests_e2e/generate-keys.sh && cd tests_e2e/swarm
|
||||
#
|
||||
# # Add to /etc/hosts (idempotent)
|
||||
# grep -q "host1.local" /etc/hosts || echo "127.0.0.1 host1.local host2.local" | sudo tee -a /etc/hosts
|
||||
|
|
@ -44,16 +44,16 @@ def generate_ssl_certificates():
|
|||
Generate SSL certificates once for all tests that require them.
|
||||
This runs automatically at the start of the test session.
|
||||
"""
|
||||
script_path = BASE_DIR.parent / "generate-keys.sh"
|
||||
script_path = BASE_DIR / "generate-keys.sh"
|
||||
|
||||
# Check if script exists
|
||||
if not script_path.exists():
|
||||
pytest.skip(f"SSL certificate generation script not found: {script_path}")
|
||||
|
||||
# Run the script from the examples directory
|
||||
# Run the script from the tests_e2e directory
|
||||
result = subprocess.run(
|
||||
["bash", str(script_path)],
|
||||
cwd=BASE_DIR.parent,
|
||||
cwd=BASE_DIR,
|
||||
capture_output=True,
|
||||
text=True
|
||||
)
|
||||
|
|
@ -69,7 +69,7 @@ class DockerComposeFixture:
|
|||
"""Helper class to manage docker-compose lifecycle"""
|
||||
|
||||
def __init__(self, compose_file: str, startup_wait: int = 3, build: bool = True):
|
||||
self.compose_file = str(BASE_DIR / compose_file)
|
||||
self.compose_file = str(BASE_DIR / "docker" / compose_file)
|
||||
self.startup_wait = startup_wait
|
||||
self.build = build
|
||||
|
||||
|
|
@ -152,7 +152,7 @@ def docker_compose_ip_whitelist() -> Generator[None, None, None]:
|
|||
def docker_compose_cloudflare() -> Generator[None, None, None]:
|
||||
"""Fixture for docker-compose-cloudflare.yml"""
|
||||
# Set up cloudflare_ips.lst with Docker network for testing
|
||||
cloudflare_ips_path = BASE_DIR / "cloudflare_ips.lst"
|
||||
cloudflare_ips_path = BASE_DIR / "docker" / "cloudflare_ips.lst"
|
||||
|
||||
# Download Cloudflare IPs
|
||||
subprocess.run(
|
||||
|
|
@ -184,7 +184,7 @@ def docker_compose_cloudflare() -> Generator[None, None, None]:
|
|||
@pytest.fixture
|
||||
def jwt_token() -> str:
|
||||
"""Generate a valid JWT token for testing"""
|
||||
private_key_path = BASE_DIR / "jwt_private.pem"
|
||||
private_key_path = BASE_DIR / "docker" / "jwt_private.pem"
|
||||
with open(private_key_path, 'r') as f:
|
||||
private_key = f.read()
|
||||
|
||||
|
|
@ -40,7 +40,7 @@ except ImportError:
|
|||
|
||||
# Base directory for Kubernetes manifests
|
||||
BASE_DIR = Path(__file__).parent.absolute()
|
||||
BIN_DIR = BASE_DIR / ".kind"
|
||||
BIN_DIR = BASE_DIR / "kubernetes" / ".kind"
|
||||
KIND_BIN = BIN_DIR / "kind"
|
||||
KUBECTL_BIN = BIN_DIR / "kubectl"
|
||||
HELM_BIN = BIN_DIR / "helm"
|
||||
|
|
@ -468,7 +468,7 @@ class KubernetesFixture:
|
|||
"""Helper class to manage Kubernetes manifest lifecycle"""
|
||||
|
||||
def __init__(self, manifest_file: str, kubectl_cmd: str, namespace: str = "default", wait_time: int = 5):
|
||||
self.manifest_file = str(BASE_DIR / manifest_file)
|
||||
self.manifest_file = str(BASE_DIR / "kubernetes" / manifest_file)
|
||||
self.kubectl = kubectl_cmd
|
||||
self.namespace = namespace
|
||||
self.wait_time = wait_time
|
||||
|
|
@ -846,7 +846,7 @@ def k8s_cloudflare(kind_cluster, kind_cmd) -> Generator[str, None, None]:
|
|||
cluster_name = kind_cluster["name"]
|
||||
|
||||
# Build header-echo server image locally
|
||||
header_echo_dir = BASE_DIR.parent / "fixtures" / "header-echo"
|
||||
header_echo_dir = BASE_DIR / "fixtures" / "header-echo"
|
||||
print(" → Building header-echo-server:test image...")
|
||||
subprocess.run(
|
||||
["docker", "build", "-t", "header-echo-server:test", str(header_echo_dir)],
|
||||
|
|
@ -877,7 +877,7 @@ def k8s_cloudflare(kind_cluster, kind_cmd) -> Generator[str, None, None]:
|
|||
ip_list_base64 = base64.b64encode(ip_list_content.encode('utf-8')).decode('ascii')
|
||||
|
||||
# Read the original manifest
|
||||
manifest_path = BASE_DIR / "cloudflare.yml"
|
||||
manifest_path = BASE_DIR / "kubernetes" / "cloudflare.yml"
|
||||
with open(manifest_path, 'r') as f:
|
||||
manifest_content = f.read()
|
||||
|
||||
|
|
@ -889,7 +889,7 @@ def k8s_cloudflare(kind_cluster, kind_cmd) -> Generator[str, None, None]:
|
|||
)
|
||||
|
||||
# Write modified manifest to temp file
|
||||
temp_manifest_path = BASE_DIR / "cloudflare_test.yml"
|
||||
temp_manifest_path = BASE_DIR / "kubernetes" / "cloudflare_test.yml"
|
||||
with open(temp_manifest_path, 'w') as f:
|
||||
f.write(manifest_modified)
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue