Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/actions/tr_post_test_run/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ runs:
id: tar_files
if: ${{ always() }}
run: |
tar -cvf result.tar --exclude="cert" --exclude="data" --exclude="__pycache__" --exclude="tensor.db" --exclude="workspace.tar" $HOME/results
tar -cvf result.tar --exclude="cert" --exclude="data" --exclude="__pycache__" --exclude="tensor.db" --exclude="workspace.tar" --exclude="minio_data" $HOME/results
# Model name might contain forward slashes, convert them to underscore.
tmp=${{ env.MODEL_NAME }}
echo "MODEL_NAME_MODIFIED=${tmp//\//_}" >> $GITHUB_ENV
Expand Down
29 changes: 26 additions & 3 deletions .github/workflows/pq_pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ jobs:
(github.event_name == 'schedule' && github.repository_owner == 'securefederatedai') ||
(github.event_name == 'workflow_dispatch')
name: TaskRunner E2E
needs: set_commit_id_for_all_jobs
needs: task_runner_connectivity_e2e
uses: ./.github/workflows/task_runner_basic_e2e.yml
with:
commit_id: ${{ needs.set_commit_id_for_all_jobs.outputs.commit_id }}
Expand All @@ -90,7 +90,7 @@ jobs:
(github.event_name == 'schedule' && github.repository_owner == 'securefederatedai') ||
(github.event_name == 'workflow_dispatch')
name: TaskRunner Resiliency E2E
needs: task_runner_e2e
needs: task_runner_connectivity_e2e
uses: ./.github/workflows/task_runner_resiliency_e2e.yml
with:
commit_id: ${{ needs.set_commit_id_for_all_jobs.outputs.commit_id }}
Expand Down Expand Up @@ -131,7 +131,7 @@ jobs:
(github.event_name == 'schedule' && github.repository_owner == 'securefederatedai') ||
(github.event_name == 'workflow_dispatch')
name: TaskRunner Dockerized E2E
needs: task_runner_straggler_e2e
needs: task_runner_resiliency_e2e
uses: ./.github/workflows/task_runner_dockerized_ws_e2e.yml
with:
commit_id: ${{ needs.set_commit_id_for_all_jobs.outputs.commit_id }}
Expand All @@ -158,6 +158,26 @@ jobs:
with:
commit_id: ${{ needs.set_commit_id_for_all_jobs.outputs.commit_id }}

task_runner_fed_analytics_e2e:
if: |
(github.event_name == 'schedule' && github.repository_owner == 'securefederatedai') ||
(github.event_name == 'workflow_dispatch')
name: TaskRunner Federated Analytics E2E
needs: task_runner_connectivity_e2e
uses: ./.github/workflows/task_runner_fed_analytics_e2e.yml
with:
commit_id: ${{ needs.set_commit_id_for_all_jobs.outputs.commit_id }}

tr_verifiable_dataset_e2e:
if: |
(github.event_name == 'schedule' && github.repository_owner == 'securefederatedai') ||
(github.event_name == 'workflow_dispatch')
name: TaskRunner Verifiable Dataset E2E
needs: task_runner_connectivity_e2e
uses: ./.github/workflows/tr_verifiable_dataset_e2e.yml
with:
commit_id: ${{ needs.set_commit_id_for_all_jobs.outputs.commit_id }}

run_trivy:
if: |
(github.event_name == 'schedule' && github.repository_owner == 'securefederatedai') ||
Expand Down Expand Up @@ -198,14 +218,17 @@ jobs:
wf_mnist_local_runtime,
wf_watermark_e2e,
wf_secagg_e2e,
task_runner_connectivity_e2e,
task_runner_e2e,
task_runner_fed_analytics_e2e,
task_runner_resiliency_e2e,
task_runner_fedeval_e2e,
task_runner_secure_agg_e2e,
task_runner_straggler_e2e,
task_runner_dockerized_e2e,
task_runner_secret_ssl_e2e,
task_runner_flower_app_pytorch,
tr_verifiable_dataset_e2e,
run_trivy,
run_bandit
]
Expand Down
61 changes: 30 additions & 31 deletions .github/workflows/task_runner_connectivity_e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,37 +52,36 @@ jobs:
with:
test_type: "TLS_Connectivity_gRPC"

# Uncomment once Rest API PR is merged
# test_rest_connectivity:
# name: Task Runner Rest connectivity (no-op, 3.11, rest)
# if: |
# (github.event_name == 'schedule' && github.repository_owner == 'securefederatedai') ||
# (github.event_name == 'workflow_dispatch') ||
# (github.event.pull_request.draft == false)
# runs-on: ubuntu-22.04
# timeout-minutes: 30
# env:
# MODEL_NAME: 'no-op'
# PYTHON_VERSION: '3.11'
# steps:
# - name: Checkout OpenFL repository
# id: checkout_openfl
# uses: actions/checkout@v4
# with:
# ref: ${{ env.COMMIT_ID }}
test_rest_connectivity:
name: Task Runner Rest connectivity (no-op, 3.11)
if: |
(github.event_name == 'schedule' && github.repository_owner == 'securefederatedai') ||
(github.event_name == 'workflow_dispatch') ||
(github.event.pull_request.draft == false)
runs-on: ubuntu-22.04
timeout-minutes: 30
env:
MODEL_NAME: 'no-op'
PYTHON_VERSION: '3.11'
steps:
- name: Checkout OpenFL repository
id: checkout_openfl
uses: actions/checkout@v4
with:
ref: ${{ env.COMMIT_ID }}

# - name: Pre test run
# uses: ./.github/actions/tr_pre_test_run
# if: ${{ always() }}
- name: Pre test run
uses: ./.github/actions/tr_pre_test_run
if: ${{ always() }}

# - name: Run Task Runner rest connectivity test
# id: run_tests
# run: |
# python -m pytest -s tests/end_to_end/test_suites/task_runner_tests.py -k test_federation_connectivity --model_name ${{ env.MODEL_NAME }} --tr_rest_api
# echo "Task runner end to end test run completed"
- name: Run Task Runner rest connectivity test
id: run_tests
run: |
python -m pytest -s tests/end_to_end/test_suites/task_runner_tests.py -k test_federation_connectivity --model_name ${{ env.MODEL_NAME }} --tr_rest_protocol
echo "Task runner end to end test run completed"

# - name: Post test run
# uses: ./.github/actions/tr_post_test_run
# if: ${{ always() }}
# with:
# test_type: "TLS_Connectivity_REST"
- name: Post test run
uses: ./.github/actions/tr_post_test_run
if: ${{ always() }}
with:
test_type: "TLS_Connectivity_REST"
6 changes: 3 additions & 3 deletions .github/workflows/task_runner_dockerized_ws_e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ jobs:
test_type: "DWS_Without_Client_Auth"

test_memory_logs:
name: With Memory Logs
name: With Memory Logs REST
needs: input_selection
if: needs.input_selection.outputs.selected_jobs == 'all' || needs.input_selection.outputs.selected_jobs == 'test_memory_logs'
runs-on: ubuntu-22.04
Expand Down Expand Up @@ -212,11 +212,11 @@ jobs:
python -m pytest -s tests/end_to_end/test_suites/memory_logs_tests.py \
-k test_log_memory_usage_dockerized_ws --model_name ${{ env.MODEL_NAME }} \
--num_rounds ${{ env.NUM_ROUNDS }} --num_collaborators ${{ env.NUM_COLLABORATORS }} \
--log_memory_usage
--log_memory_usage --tr_rest_protocol
echo "Task runner memory logs test run completed"

- name: Post test run
uses: ./.github/actions/tr_post_test_run
if: ${{ always() }}
with:
test_type: "DWS_With_Memory_Logs"
test_type: "DWS_With_Memory_Logs_REST"
108 changes: 108 additions & 0 deletions .github/workflows/task_runner_fed_analytics_e2e.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
---
# Task Runner Federated Analytics E2E tests for bare metal approach

name: Task_Runner_Fed_Analytics_E2E # Please do not modify the name as it is used in the composite action

on:
workflow_call:
inputs:
commit_id:
required: false
type: string
workflow_dispatch:
inputs:
num_collaborators:
description: "Number of collaborators"
required: false
default: "2"
type: string
python_version:
description: "Python version"
required: false
default: "3.10"
type: choice
options:
- "3.10"
- "3.11"
- "3.12"

permissions:
contents: read

# Environment variables common for all the jobs
# DO NOT use double quotes for the values of the environment variables
env:
NUM_COLLABORATORS: ${{ inputs.num_collaborators || 2 }}
COMMIT_ID: ${{ inputs.commit_id || github.sha }} # use commit_id from the calling workflow

jobs:
test_fed_analytics_histogram:
name: With REST (federated_analytics/histogram, 3.11)
runs-on: ubuntu-22.04
timeout-minutes: 30
if: |
(github.event_name == 'schedule' && github.repository_owner == 'securefederatedai') ||
(github.event_name == 'workflow_dispatch') ||
(github.event.pull_request.draft == false)
env:
MODEL_NAME: 'federated_analytics/histogram'
PYTHON_VERSION: ${{ inputs.python_version || '3.11' }}

steps:
- name: Checkout OpenFL repository
id: checkout_openfl
uses: actions/checkout@v4
with:
ref: ${{ env.COMMIT_ID }}

- name: Pre test run
uses: ./.github/actions/tr_pre_test_run
if: ${{ always() }}

- name: Run Federated Analytics Histogram
id: run_tests
run: |
python -m pytest -s tests/end_to_end/test_suites/tr_fed_analytics_tests.py --tr_rest_protocol \
-m task_runner_fed_analytics --model_name ${{ env.MODEL_NAME }} --num_collaborators ${{ env.NUM_COLLABORATORS }}
echo "Federated analytics histogram test run completed"

- name: Post test run
uses: ./.github/actions/tr_post_test_run
if: ${{ always() }}
with:
test_type: "Sepal_Histogram_Analytics"

test_fed_analytics_smokers_health:
name: With gRPC (federated_analytics/smokers_health, 3.12)
runs-on: ubuntu-22.04
timeout-minutes: 30
if: |
(github.event_name == 'schedule' && github.repository_owner == 'securefederatedai') ||
(github.event_name == 'workflow_dispatch') ||
(github.event.pull_request.draft == false)
env:
MODEL_NAME: 'federated_analytics/smokers_health'
PYTHON_VERSION: ${{ inputs.python_version || '3.12' }}
steps:
- name: Checkout OpenFL repository
id: checkout_openfl
uses: actions/checkout@v4
with:
ref: ${{ env.COMMIT_ID }}

- name: Pre test run
uses: ./.github/actions/tr_pre_test_run
if: ${{ always() }}

- name: Run Federated Analytics Smokers Health
id: run_tests
run: |
python -m pytest -s tests/end_to_end/test_suites/tr_fed_analytics_tests.py \
-m task_runner_fed_analytics --model_name ${{ env.MODEL_NAME }} --num_collaborators ${{ env.NUM_COLLABORATORS }}
echo "Federated analytics smokers health test run completed"

- name: Post test run
uses: ./.github/actions/tr_post_test_run
if: ${{ always() }}
with:
test_type: "Smokers_Health_Analytics"
16 changes: 8 additions & 8 deletions .github/workflows/task_runner_fedeval_e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,8 @@ jobs:
with:
test_type: "FedEval_With_TLS"

test_without_tls:
name: Without TLS
test_without_tls_rest:
name: Without TLS Using Rest Protocol
if: | # Skip for PR pipeline
((github.event_name == 'schedule' && github.repository_owner == 'securefederatedai') ||
(github.event_name == 'workflow_dispatch')) && (github.workflow != 'OpenFL PR Pipeline')
Expand Down Expand Up @@ -115,17 +115,17 @@ jobs:
run: |
python -m pytest -s tests/end_to_end/test_suites/tr_with_fedeval_tests.py \
-m task_runner_basic --model_name ${{ env.MODEL_NAME }} \
--num_rounds ${{ env.NUM_ROUNDS }} --num_collaborators ${{ env.NUM_COLLABORATORS }} --disable_tls
--num_rounds ${{ env.NUM_ROUNDS }} --num_collaborators ${{ env.NUM_COLLABORATORS }} --disable_tls --tr_rest_protocol
echo "Task runner end to end test run completed"

- name: Post test run
uses: ./.github/actions/tr_post_test_run
if: ${{ always() }}
with:
test_type: "FedEval_Without_TLS"
test_type: "FedEval_Without_TLS_REST"

test_without_client_auth:
name: Without Client Auth
test_without_client_auth_rest:
name: Without ClientAuth Using Rest Protocol
if: | # Skip for PR pipeline
((github.event_name == 'schedule' && github.repository_owner == 'securefederatedai') ||
(github.event_name == 'workflow_dispatch')) && (github.workflow != 'OpenFL PR Pipeline')
Expand Down Expand Up @@ -159,11 +159,11 @@ jobs:
run: |
python -m pytest -s tests/end_to_end/test_suites/tr_with_fedeval_tests.py \
-m task_runner_basic --model_name ${{ env.MODEL_NAME }} \
--num_rounds ${{ env.NUM_ROUNDS }} --num_collaborators ${{ env.NUM_COLLABORATORS }} --disable_client_auth
--num_rounds ${{ env.NUM_ROUNDS }} --num_collaborators ${{ env.NUM_COLLABORATORS }} --disable_client_auth --tr_rest_protocol
echo "Task runner end to end test run completed"

- name: Post test run
uses: ./.github/actions/tr_post_test_run
if: ${{ always() }}
with:
test_type: "FedEval_Without_Client_Auth"
test_type: "FedEval_Without_Client_Auth_REST"
Loading
Loading