Skip to content

test(job): add SPS deploy and inspect integration test - #6641

Draft
agrawalkhushi18 wants to merge 1 commit into
GoogleCloudPlatform:developfrom
agrawalkhushi18:sps-integ-test
Draft

agrawalkhushi18 wants to merge 1 commit into
GoogleCloudPlatform:developfrom
agrawalkhushi18:sps-integ-test

Conversation

@agrawalkhushi18

@agrawalkhushi18 agrawalkhushi18 commented Nov 6, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Adds an end-to-end integration test (test-gcluster-job-sps.yml) for Shared Pathways Service (SPS) deployment (--pathways-deploy-sps) and inspection (gcluster job inspect --filter pathways-sps), wired into gke-tpu-v5e, gke-tpu-v5p, and gke-tpu-v6e.

Changes

  • test-gcluster-job-sps.yml:
    • Dry-run check: Validates generated --pathways-deploy-sps JobSet manifest structure, env vars, and restart/backoff defaults.
    • Live deploy & inspect check: Deploys an SPS instance, waits for pods and Pathways slices to become ready, verifies gcluster job inspect --filter pathways-sps --show output (Status: Running, endpoint, and slice readiness), and cleans up via gcluster job cancel.
  • tests/gke-tpu-v5e.yml, gke-tpu-v5p.yml, gke-tpu-v6e.yml: Adds test-validation/test-gcluster-job-sps.yml to post_deploy_tests.

Submission Checklist

NOTE: Community submissions can take up to 2 weeks to be reviewed.

Please take the following actions before submitting this pull request.

  • Fork your PR branch from the Toolkit "develop" branch (not main)
  • Test all changes with pre-commit in a local branch #
  • Confirm that "make tests" passes all tests
  • Add or modify unit tests to cover code changes
  • Ensure that unit test coverage remains above 80%
  • Update all applicable documentation
  • Follow Cluster Toolkit Contribution guidelines #

@agrawalkhushi18 agrawalkhushi18 self-assigned this Nov 6, 2026
@agrawalkhushi18 agrawalkhushi18 added the release-chore To not include into release notes label Nov 6, 2026
@gemini-code-assist

Copy link
Copy Markdown
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request introduces automated integration testing for the GCluster Shared Pathways Service (SPS). The changes include a new validation playbook that performs a dry-run, deploys an SPS instance, verifies its readiness, and confirms that the inspection filter correctly reports the job status. These tests have been added to the daily test suites for various TPU configurations to ensure ongoing stability of the SPS workflow.

Highlights

  • New Integration Test: Added a new Ansible playbook to validate the GCluster Shared Pathways Service (SPS) deployment and inspection workflows.
  • Test Suite Updates: Integrated the new SPS integration test into existing GKE TPU v5e, v5p, and v6e test suites.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize the Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counterproductive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution. ↩

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a new Ansible playbook (test-gcluster-job-sps.yml) to validate the GCluster Shared Pathways Service (SPS) workflow, covering dry-run validation, deployment, and inspection. This test is integrated into the daily post-deploy test suites for GKE TPU v5e, v5p, and v6e. Feedback on the playbook suggests simplifying the log retrieval process by using kubectl logs -l with a label selector instead of a multi-step shell pipeline involving kubectl get pod with jsonpath to avoid potential errors.

Comment on lines +192 to +195
ansible.builtin.shell: |
set -eo pipefail
HEAD_POD=$(kubectl get pod -l jobset.sigs.k8s.io/jobset-name={{ sps_job_name }},jobset.sigs.k8s.io/replicatedjob-name=pathways-head -o jsonpath='{.items[0].metadata.name}')
kubectl logs "${HEAD_POD}" -c pathways-rm | grep -E "[0-9]+/[0-9]+ Pathways Slices Now Ready"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Instead of querying the pod name using kubectl get pod with jsonpath and then passing it to kubectl logs, you can stream the logs directly using a label selector with kubectl logs -l. This simplifies the shell script, avoids potential errors when no pods are returned, and aligns with the general best practice of avoiding noisy jsonpath queries on empty/missing resources.

    ansible.builtin.shell: |
      set -eo pipefail
      kubectl logs -l jobset.sigs.k8s.io/jobset-name={{ sps_job_name }},jobset.sigs.k8s.io/replicatedjob-name=pathways-head -c pathways-rm | grep -E "[0-9]+/[0-9]+ Pathways Slices Now Ready"
References
  1. When executing kubectl commands to inspect optional fields on Kubernetes resources, avoid noisy and misleading warnings/errors from jsonpath when resources are missing or empty.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release-chore To not include into release notes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant