Spaces:
Running
Running
File size: 2,630 Bytes
7cc8b69 3aa91e9 7cc8b69 3aa91e9 7cc8b69 3aa91e9 7cc8b69 3aa91e9 7cc8b69 3aa91e9 7cc8b69 3aa91e9 7cc8b69 3aa91e9 7cc8b69 3aa91e9 7cc8b69 3aa91e9 7cc8b69 3aa91e9 7cc8b69 3aa91e9 7cc8b69 3aa91e9 7cc8b69 3aa91e9 7cc8b69 3aa91e9 7cc8b69 3aa91e9 7cc8b69 3aa91e9 7cc8b69 3aa91e9 7cc8b69 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
#!/usr/bin/env python3
"""Verify that Modal sandbox is properly isolated.
This script proves to judges that code runs in Modal, not locally.
NO agent_framework dependency - uses only src.tools.code_execution.
Usage:
uv run python examples/modal_demo/verify_sandbox.py
"""
import asyncio
from functools import partial
from src.tools.code_execution import get_code_executor
from src.utils.config import settings
async def main() -> None:
"""Verify Modal sandbox isolation."""
if not settings.modal_available:
print("Error: Modal credentials not configured.")
print("Set MODAL_TOKEN_ID and MODAL_TOKEN_SECRET in .env")
return
executor = get_code_executor()
loop = asyncio.get_running_loop()
print("=" * 60)
print("Modal Sandbox Isolation Verification")
print("=" * 60 + "\n")
# Test 1: Hostname
print("Test 1: Check hostname (should NOT be your machine)")
code1 = "import socket; print(f'Hostname: {socket.gethostname()}')"
result1 = await loop.run_in_executor(None, partial(executor.execute, code1))
print(f" {result1['stdout'].strip()}\n")
# Test 2: Scientific libraries
print("Test 2: Verify scientific libraries")
code2 = """
import pandas as pd
import numpy as np
import scipy
print(f"pandas: {pd.__version__}")
print(f"numpy: {np.__version__}")
print(f"scipy: {scipy.__version__}")
"""
result2 = await loop.run_in_executor(None, partial(executor.execute, code2))
print(f" {result2['stdout'].strip()}\n")
# Test 3: Network blocked
print("Test 3: Verify network isolation")
code3 = """
import urllib.request
try:
urllib.request.urlopen("https://google.com", timeout=2)
print("Network: ALLOWED (unexpected!)")
except Exception:
print("Network: BLOCKED (as expected)")
"""
result3 = await loop.run_in_executor(None, partial(executor.execute, code3))
print(f" {result3['stdout'].strip()}\n")
# Test 4: Real statistics
print("Test 4: Execute statistical analysis")
code4 = """
import pandas as pd
import scipy.stats as stats
data = pd.DataFrame({'effect': [0.42, 0.38, 0.51]})
mean = data['effect'].mean()
t_stat, p_val = stats.ttest_1samp(data['effect'], 0)
print(f"Mean Effect: {mean:.3f}")
print(f"P-value: {p_val:.4f}")
print(f"Verdict: {'SUPPORTED' if p_val < 0.05 else 'INCONCLUSIVE'}")
"""
result4 = await loop.run_in_executor(None, partial(executor.execute, code4))
print(f" {result4['stdout'].strip()}\n")
print("=" * 60)
print("All tests complete - Modal sandbox verified!")
print("=" * 60)
if __name__ == "__main__":
asyncio.run(main())
|