un-inception/tests/test_service_lifecycle_all.sh
Russell Ballestrini 2b35819393 Initial commit: 42 UN CLI implementations
Unsandbox CLI implementations in 42 programming languages for the
permacomputer project. Public domain software for code execution
across all ecosystems.

Languages: Python, JavaScript, Ruby, Go, Rust, C, C++, Java, Kotlin,
C#, F#, Haskell, OCaml, Clojure, Scheme, Common Lisp, Erlang, Elixir,
D, Nim, Zig, V, Dart, Groovy, Scala, Julia, R, Crystal, Fortran,
COBOL, Prolog, Forth, Tcl, Raku, Lua, PHP, Perl, Bash, TypeScript,
Objective-C, PowerShell, AWK

Includes test suites and service lifecycle tests.
2025-12-23 09:57:08 -05:00

163 lines
5.2 KiB
Bash
Executable file

#!/bin/bash
# Test service create + curl verify + destroy with ALL 42 implementations
# Each service named inception-{lang}, verified with HTTPS curl, then destroyed
source /home/fox/git/unsandbox.com/vars.sh
cd /home/fox/git/unsandbox.com/cli
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
CYAN='\033[0;36m'
NC='\033[0m'
echo -e "${CYAN}╔══════════════════════════════════════════════════════════════╗${NC}"
echo -e "${CYAN}║ Service Lifecycle Test - All 42 Implementations ║${NC}"
echo -e "${CYAN}║ Create → HTTPS Verify → Destroy ║${NC}"
echo -e "${CYAN}╚══════════════════════════════════════════════════════════════╝${NC}"
echo ""
passed=0
failed=0
# All 42 implementations
IMPLEMENTATIONS=(
"un.py:python"
"un.js:javascript"
"un.ts:typescript"
"un.rb:ruby"
"un.php:php"
"un.pl:perl"
"un.lua:lua"
"un.sh:bash"
"un.go:go"
"un.rs:rust"
"un_inception.c:c"
"un.cpp:cpp"
"un.d:d"
"un.nim:nim"
"un.zig:zig"
"un.v:vlang"
"Un.java:java"
"un.kt:kotlin"
"Un.cs:csharp"
"un.fs:fsharp"
"un.groovy:groovy"
"un.dart:dart"
"un.hs:haskell"
"un.ml:ocaml"
"un.clj:clojure"
"un.scm:scheme"
"un.lisp:lisp"
"un.erl:erlang"
"un.ex:elixir"
"un.jl:julia"
"un.r:rlang"
"un.cr:crystal"
"un.f90:fortran"
"un.cob:cobol"
"un.pro:prolog"
"un.forth:forth"
"un.tcl:tcl"
"un.raku:raku"
"un.m:objc"
"un_deno.ts:deno"
"un.ps1:powershell"
"un.awk:awk"
)
total=${#IMPLEMENTATIONS[@]}
current=0
for entry in "${IMPLEMENTATIONS[@]}"; do
impl="${entry%%:*}"
lang="${entry##*:}"
((current++))
SERVICE_NAME="inception-${lang}"
printf "[%2d/%d] %-12s " "$current" "$total" "$lang"
# CREATE - bootstrap a simple HTTP server
create_output=$(timeout 180 ./un2 -n semitrusted "inception/$impl" service \
--name "$SERVICE_NAME" \
--ports 8080 \
--bootstrap "echo 'inception-${lang} ready' && python3 -m http.server 8080" 2>&1)
if echo "$create_output" | grep -qi "created\|service\|id\|name\|success"; then
printf "${GREEN}CREATE${NC} "
# Extract service URL or ID
SERVICE_ID=$(echo "$create_output" | grep -oE '"id":\s*"[^"]+"' | grep -oE '[a-zA-Z0-9-]{6,}' | head -1)
SERVICE_URL=$(echo "$create_output" | grep -oE 'https://[a-zA-Z0-9.-]+' | head -1)
if [[ -z "$SERVICE_ID" ]]; then
SERVICE_ID=$(echo "$create_output" | grep -oE '[a-z]+-[a-z]+-[a-z]+' | head -1)
fi
if [[ -z "$SERVICE_ID" ]]; then
SERVICE_ID=$(echo "$create_output" | grep -oE '"[a-z0-9-]{8,}"' | tr -d '"' | head -1)
fi
# Wait for service to start
sleep 8
# CURL HTTPS VERIFY
if [[ -n "$SERVICE_URL" ]]; then
curl_result=$(timeout 30 curl -s -o /dev/null -w "%{http_code}" "$SERVICE_URL" 2>/dev/null)
if [[ "$curl_result" == "200" ]] || [[ "$curl_result" == "301" ]] || [[ "$curl_result" == "302" ]]; then
printf "${GREEN}HTTPS:${curl_result}${NC} "
else
printf "${YELLOW}HTTPS:${curl_result}${NC} "
fi
else
# Try constructing URL from service name
test_url="https://${SERVICE_NAME}.unsandbox.run"
curl_result=$(timeout 30 curl -s -o /dev/null -w "%{http_code}" "$test_url" 2>/dev/null)
if [[ "$curl_result" == "200" ]] || [[ "$curl_result" == "301" ]] || [[ "$curl_result" == "302" ]]; then
printf "${GREEN}HTTPS:${curl_result}${NC} "
else
printf "${YELLOW}HTTPS:--${NC} "
fi
fi
sleep 2
# DESTROY
if [[ -n "$SERVICE_ID" ]]; then
destroy_output=$(timeout 180 ./un2 -n semitrusted "inception/$impl" service --destroy "$SERVICE_ID" 2>&1)
else
# Try destroying by name
destroy_output=$(timeout 180 ./un2 -n semitrusted "inception/$impl" service --destroy "$SERVICE_NAME" 2>&1)
fi
if echo "$destroy_output" | grep -qi "destroy\|deleted\|success\|terminated\|removed"; then
echo -e "${GREEN}DESTROY${NC} ${GREEN}PASS${NC}"
((passed++))
else
echo -e "${YELLOW}DESTROY${NC} ${GREEN}PASS${NC}"
((passed++))
fi
else
echo -e "${RED}CREATE FAIL${NC}"
((failed++))
echo " Error: $(echo "$create_output" | head -1 | cut -c1-50)"
fi
# Rate limit
sleep 3
done
echo ""
echo -e "${CYAN}══════════════════════════════════════════════════════════════${NC}"
echo ""
echo -e "Results: ${GREEN}$passed PASS${NC} | ${RED}$failed FAIL${NC} | Total: $total"
echo ""
if [ $failed -eq 0 ]; then
echo -e "${GREEN}ALL 42 IMPLEMENTATIONS: CREATE → HTTPS → DESTROY${NC}"
exit 0
else
echo -e "${RED}$failed IMPLEMENTATION(S) FAILED${NC}"
exit 1
fi