#!/bin/bash # Test script to demonstrate the update manager functionality set -e echo "๐Ÿงช Testing Rust Update Manager with Demo Application" # Create a simple demo application mkdir -p demo-app cat > demo-app/Dockerfile << 'EOF' FROM node:18-alpine WORKDIR /app RUN echo -e 'const express = require("express");\nconst app = express();\nconst PORT = process.env.PORT || 3000;\nconst VERSION = process.env.APP_VERSION || "1.0.0";\n\napp.get("/health", (req, res) => {\nres.json({ status: "healthy", version: VERSION });\n});\napp.get("/", (req, res) => {\nres.json({\nmessage: "Demo App",\nversion: VERSION,\ntimestamp: new Date().toISOString()\n});\n});\n\napp.listen(PORT, () => {\nconsole.log(`Demo app v${VERSION} running on port ${PORT}`);\n});' > app.js RUN npm init -y && npm install express ENV APP_VERSION=1.0.0 EXPOSE 3000 CMD ["node", "app.js"] EOF cat > demo-app/package.json << 'EOF' { "name": "demo-app", "version": "1.0.0", "main": "app.js", "dependencies": { "express": "^4.18.2" } } EOF # Build initial version echo "๐Ÿ“ฆ Building demo app v1.0.0..." cd demo-app docker build -t pakin-inspiron-15-3530.tail110d9.ts.net/pakin/demo-app:1.0.0 . docker push pakin-inspiron-15-3530.tail110d9.ts.net/pakin/demo-app:1.0.0 cd .. # Deploy the update manager echo "๐Ÿš€ Deploying update manager..." ./scripts/deploy.sh # Wait for everything to start echo "โณ Waiting for services to initialize..." sleep 30 # Check status echo "๐Ÿ“Š Checking system status..." curl -s http://localhost:36530/api/status | jq . echo "๐Ÿ“‹ Checking discovered containers..." curl -s http://localhost:36530/api/containers | jq . # Build and push v1.1.0 echo "๐Ÿ“ฆ Building demo app v1.1.0..." cd demo-app # Update the version in Dockerfile # sed -i 's/APP_VERSION=1.0.0/APP_VERSION=1.1.0/' Dockerfile docker build -f ./Dockerfile.next -t pakin-inspiron-15-3530.tail110d9.ts.net/pakin/demo-app:1.1.0 . docker push pakin-inspiron-15-3530.tail110d9.ts.net/pakin/demo-app:1.1.0 cd .. echo "๐Ÿ”„ Triggering update check..." curl -X POST http://localhost:36530/api/discovery/scan # Wait a bit for the update to be detected and processed sleep 60 # Check if update happened echo "โœ… Checking if update was applied..." curl -s http://localhost:3000/ | jq . echo "๐Ÿ“Š Final system status..." curl -s http://localhost:36530/api/stats | jq . echo "๐ŸŽ‰ Demo completed!" echo "" echo "What happened:" echo "1. Built and deployed demo app v1.0.0" echo "2. Update manager discovered the container" echo "3. Built and pushed demo app v1.1.0 to registry" echo "4. Update manager detected the new version" echo "5. Automatically updated the container" echo "" echo "๐ŸŒ Check the API at: http://localhost:36530" echo "๐Ÿ” View logs with: docker-compose logs -f"