diff --git a/worker/orca-agent/tests/stages/worker_audit.py b/worker/orca-agent/tests/stages/worker_audit.py index e69de29..be56f09 100644 --- a/worker/orca-agent/tests/stages/worker_audit.py +++ b/worker/orca-agent/tests/stages/worker_audit.py @@ -0,0 +1,82 @@ +"""Stage for worker audits.""" + +import requests + +# from prometheus_test.utils import create_signature + + +def prepare(runner, worker, target_name): + """Prepare data for worker audit""" + round_state = runner.state["rounds"].get(str(runner.current_round), {}) + pr_urls = round_state.get("pr_urls", {}) + + if target_name not in pr_urls: + # Return None to indicate this step should be skipped + print( + f"✓ No PR URL found for {target_name}, skipping {worker.name} audit - continuing" + ) + return None + + # Get submission data from state + submission_data = round_state.get("submission_data", {}).get(target_name) + if not submission_data: + # Return None to indicate this step should be skipped + print( + f"✓ No submission data found for {target_name}, skipping {worker.name} audit - continuing" + ) + return None + + # Create auditor payload which is used to generate the signature + # auditor_payload = { + # "taskId": runner.config.task_id, + # "roundNumber": runner.current_round, + # "prUrl": pr_urls[target_name], + # "stakingKey": worker.staking_public_key, + # "pubKey": worker.public_key, + # } + + # Structure the payload according to what the server expects + # return { + # "submission": { + # "taskId": runner.config.task_id, + # "roundNumber": runner.current_round, + # "prUrl": pr_urls[target_name], + # "githubUsername": submission_data.get("githubUsername"), + # "repoOwner": submission_data.get("repoOwner"), + # "repoName": submission_data.get("repoName"), + # "stakingKey": submission_data.get("stakingKey"), + # "pubKey": submission_data.get("pubKey"), + # "uuid": submission_data.get("uuid"), + # "nodeType": submission_data.get("nodeType"), + # }, + # "submitterSignature": submission_data.get("signature"), + # "submitterStakingKey": submission_data.get("stakingKey"), + # "submitterPubKey": submission_data.get("pubKey"), + # "prUrl": pr_urls[target_name], + # "repoOwner": submission_data.get("repoOwner"), + # "repoName": submission_data.get("repoName"), + # "githubUsername": worker.env.get("GITHUB_USERNAME"), + # "stakingKey": worker.staking_public_key, + # "pubKey": worker.public_key, + # "stakingSignature": create_signature( + # worker.staking_signing_key, auditor_payload + # ), + # "publicSignature": create_signature(worker.public_signing_key, auditor_payload), + # } + return {"submission": submission_data} + + +def execute(runner, worker, data): + """Execute worker audit step""" + # If prepare returned None, skip this step + if data is None: + return { + "success": True, + "message": "Skipped due to missing PR URL or submission data", + } + + url = f"{worker.url}/worker-audit/{runner.current_round}" + response = requests.post(url, json=data) + result = response.json() + + return result diff --git a/worker/orca-agent/tests/stages/worker_task.py b/worker/orca-agent/tests/stages/worker_task.py index 5ff830d..4ae4b85 100644 --- a/worker/orca-agent/tests/stages/worker_task.py +++ b/worker/orca-agent/tests/stages/worker_task.py @@ -39,22 +39,4 @@ def execute(runner, worker, data): round_state["pr_urls"] = {} round_state["pr_urls"][worker.name] = result["pr_url"] - # Initialize submission_data if not exists - # if "submission_data" not in round_state: - # round_state["submission_data"] = {} - - # Store submission data - # round_state["submission_data"][worker.name] = { - # "githubUsername": worker.env.get("GITHUB_USERNAME"), - # "nodeType": "worker", - # "prUrl": result["pr_url"], - # "repoName": result.get("repoName"), - # "repoOwner": result.get("repoOwner"), - # "roundNumber": runner.current_round, - # "taskId": runner.config.task_id, - # "uuid": result.get("uuid"), # Should be provided by the worker - # "stakingKey": worker.staking_public_key, - # "pubKey": worker.public_key, - # } - return result