Phase G4: Distribution Builder - SaaS product line mgmt, license keys, config export, frontend UI
This commit is contained in:
1 parent
d2e3147fb8
commit
0486210133
8 files changed
+1671
-258
No files matched your search
@@ -0,0 +1,81 @@
|
||||
import urllib.request, json
|
||||
|
||||
def test(label, data):
|
||||
req = urllib.request.Request(
|
||||
'http://localhost:18001/execute',
|
||||
data=json.dumps(data).encode(),
|
||||
headers={'Content-Type': 'application/json'}
|
||||
)
|
||||
try:
|
||||
resp = urllib.request.urlopen(req, timeout=15)
|
||||
result = json.loads(resp.read())
|
||||
print(f'[PASS] {label}: success={result.get("success")}, exit_code={result.get("exit_code")}, time={result.get("execution_time_ms",0):.1f}ms')
|
||||
if result.get('stdout'):
|
||||
print(f' stdout: {result["stdout"][:200]}')
|
||||
if result.get('stderr'):
|
||||
print(f' stderr: {result["stderr"][:200]}')
|
||||
if result.get('error'):
|
||||
print(f' error: {result["error"]}')
|
||||
except Exception as e:
|
||||
print(f'[FAIL] {label}: {e}')
|
||||
|
||||
print('=== Sandbox Execution Tests ===')
|
||||
|
||||
# Test 1: Python hello
|
||||
test('Python Hello', {
|
||||
'language': 'python',
|
||||
'code': 'print("Hello from sandbox!")\nimport sys\nprint(f"Python {sys.version.split()[0]}")',
|
||||
'timeout': 10
|
||||
})
|
||||
|
||||
# Test 2: Python with stdin
|
||||
test('Python stdin', {
|
||||
'language': 'python',
|
||||
'code': 'name = input()\nage = input()\nprint(f"Hello {name}, age {age}")',
|
||||
'stdin': 'Alice\n25\n',
|
||||
'timeout': 10
|
||||
})
|
||||
|
||||
# Test 3: JavaScript
|
||||
test('JavaScript', {
|
||||
'language': 'javascript',
|
||||
'code': 'console.log("Hello from Node.js!");\nconsole.log("Version: " + process.version);',
|
||||
'timeout': 10
|
||||
})
|
||||
|
||||
# Test 4: Timeout
|
||||
test('Timeout', {
|
||||
'language': 'python',
|
||||
'code': 'import time\ntime.sleep(10)\nprint("Done")',
|
||||
'timeout': 2
|
||||
})
|
||||
|
||||
# Test 5: Compute
|
||||
test('Fibonacci', {
|
||||
'language': 'python',
|
||||
'code': 'def fib(n):\n a,b=0,1\n for _ in range(n): a,b=b,a+b\n return a\nprint(f"fib(30)={fib(30)}")',
|
||||
'timeout': 10
|
||||
})
|
||||
|
||||
# Test 6: Error code
|
||||
test('Python Error', {
|
||||
'language': 'python',
|
||||
'code': 'print(1/0)',
|
||||
'timeout': 10
|
||||
})
|
||||
|
||||
# Test 7: JS Error
|
||||
test('JS Error', {
|
||||
'language': 'javascript',
|
||||
'code': 'throw new Error("test error");',
|
||||
'timeout': 10
|
||||
})
|
||||
|
||||
# Test 8: Large output
|
||||
test('Large Output', {
|
||||
'language': 'python',
|
||||
'code': 'for i in range(100): print(f"Line {i}: Hello World" * 5)',
|
||||
'timeout': 10
|
||||
})
|
||||
|
||||
print('\nDone!')
|
||||
Reference in new issue
Block a user