mirror of
https://github.com/blackboxprogramming/BlackRoad-Operating-System.git
synced 2026-03-17 04:57:15 -05:00
feat: scaffold BlackRoad OS Phase 2 infrastructure
Implements complete Phase 2 scaffold across 6 core modules: ## New Modules ### 1. Backend API Enhancements - Add system router with /version, /config/public, /os/state endpoints - Register system router in main.py - Add comprehensive tests for system endpoints ### 2. Core OS Runtime (core_os/) - Implement UserSession, Window, OSState models - Add state management functions (open_window, close_window, etc.) - Create Backend API adapter for communication - Include full test suite for models and state ### 3. Operator Engine (operator_engine/) - Build job registry with example jobs - Implement simple scheduler with lifecycle management - Optional HTTP server on port 8001 - Complete tests for jobs and scheduler ### 4. Web Client Enhancements - Add CoreOSClient JavaScript class - Integrate system API endpoints - Event-driven architecture for state updates - Zero dependencies, vanilla JavaScript ### 5. Prism Console (prism-console/) - Modern dark-themed admin UI - Multi-tab navigation (Overview, Jobs, Agents, Logs, System) - Real-time metrics dashboard - Backend API integration with auto-refresh ### 6. Documentation (codex-docs/) - Complete MkDocs-based documentation - Architecture guides and component docs - Infrastructure setup guides - API reference documentation ## CI/CD - Add core-os-tests.yml workflow - Add operator-tests.yml workflow - Add docs-build.yml workflow ## Documentation - Create BLACKROAD_OS_REPO_MAP.md cross-reference - Add README for each module - Comprehensive integration documentation ## Summary - 37 new files created - ~3,500 lines of new code - 5 test suites with 15+ tests - 3 new CI workflows - 10+ documentation pages All modules are minimal working skeletons ready for integration. Designed to be extracted into separate repos if needed. Phase 2 scaffold complete and ready for review.
This commit is contained in:
53
operator_engine/tests/test_jobs.py
Normal file
53
operator_engine/tests/test_jobs.py
Normal file
@@ -0,0 +1,53 @@
|
||||
"""Tests for job management"""
|
||||
import pytest
|
||||
from operator_engine.jobs import Job, JobStatus, JobRegistry
|
||||
|
||||
|
||||
def test_job_creation():
|
||||
"""Test creating a job"""
|
||||
job = Job(name="Test Job", schedule="*/5 * * * *")
|
||||
|
||||
assert job.name == "Test Job"
|
||||
assert job.schedule == "*/5 * * * *"
|
||||
assert job.status == JobStatus.PENDING
|
||||
assert job.id is not None
|
||||
|
||||
|
||||
def test_job_to_dict():
|
||||
"""Test job serialization"""
|
||||
job = Job(name="Test Job")
|
||||
data = job.to_dict()
|
||||
|
||||
assert data["name"] == "Test Job"
|
||||
assert data["status"] == "pending"
|
||||
assert "id" in data
|
||||
assert "created_at" in data
|
||||
|
||||
|
||||
def test_job_registry():
|
||||
"""Test job registry operations"""
|
||||
registry = JobRegistry()
|
||||
|
||||
# Should have example jobs
|
||||
jobs = registry.list_jobs()
|
||||
assert len(jobs) > 0
|
||||
|
||||
# Add new job
|
||||
new_job = Job(name="New Test Job")
|
||||
added_job = registry.add_job(new_job)
|
||||
assert added_job.id == new_job.id
|
||||
|
||||
# Get job
|
||||
retrieved_job = registry.get_job(new_job.id)
|
||||
assert retrieved_job is not None
|
||||
assert retrieved_job.name == "New Test Job"
|
||||
|
||||
# Update job
|
||||
updated_job = registry.update_job(new_job.id, status=JobStatus.RUNNING)
|
||||
assert updated_job is not None
|
||||
assert updated_job.status == JobStatus.RUNNING
|
||||
|
||||
# Remove job
|
||||
removed = registry.remove_job(new_job.id)
|
||||
assert removed is True
|
||||
assert registry.get_job(new_job.id) is None
|
||||
Reference in New Issue
Block a user