1
0
Fork 0

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:
Joao Gilberto Magalhaes 2026-02-12 17:05:04 -05:00
parent b34d7822e4
commit d66c4f8595
51 changed files with 35 additions and 35 deletions

View file

@ -0,0 +1,11 @@
FROM python:3.12-slim
WORKDIR /app
COPY server.py .
RUN chmod +x server.py
EXPOSE 8080
CMD ["python3", "server.py"]

View file

@ -0,0 +1,66 @@
# Header Echo Server - Test Fixture
A lightweight Python HTTP server that echoes all request headers as JSON. Used for testing HAProxy plugins that manipulate headers and client IPs.
## Purpose
This test fixture is used by both Docker Compose and Kubernetes test suites to verify:
- Header manipulation (e.g., X-Forwarded-For, CF-Connecting-IP)
- IP restoration plugins (Cloudflare, custom CDN integrations)
- Request routing and backend visibility
## Usage
### Docker Compose
```yaml
services:
webapp:
build: ../fixtures/header-echo
ports:
- "8080:8080"
```
### Kubernetes
```bash
# Build and load into kind cluster
docker build -t header-echo-server:test .
kind load docker-image header-echo-server:test --name your-cluster
# Use in deployment
spec:
containers:
- name: webapp
image: header-echo-server:test
imagePullPolicy: Never
```
### Manual Testing
```bash
# Start the server
python3 server.py
# Test it
curl http://localhost:8080
# Returns JSON with all headers, client IP, and X-Forwarded-For value
```
## Response Format
```json
{
"headers": {
"Host": "localhost:8080",
"User-Agent": "curl/7.81.0",
"Accept": "*/*"
},
"client_ip": "127.0.0.1",
"x_forwarded_for": "NOT SET"
}
```
## Used By
- `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`

View file

@ -0,0 +1,33 @@
#!/usr/bin/env python3
"""Simple HTTP server that echoes all request headers"""
from http.server import HTTPServer, BaseHTTPRequestHandler
import json
class HeaderEchoHandler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header('Content-Type', 'application/json')
self.end_headers()
# Collect all headers
headers = dict(self.headers)
# Add the client IP as seen by this server
response = {
'headers': headers,
'client_ip': self.client_address[0],
'x_forwarded_for': self.headers.get('X-Forwarded-For', 'NOT SET')
}
self.wfile.write(json.dumps(response, indent=2).encode())
def log_message(self, format, *args):
# Log to stdout
print(f"{self.address_string()} - {format % args}")
if __name__ == '__main__':
port = 8080
server = HTTPServer(('0.0.0.0', port), HeaderEchoHandler)
print(f'Header echo server running on port {port}...')
server.serve_forever()