On 3/29/23 16:01, [email protected] wrote:
> From: Numan Siddique <[email protected]>
> 
> This patch adds a couple of jobs using ovn-fake-multinode.
> It first builds 2 ovn-fake-multinode container images
>   - one with OVN 22.03
>   - one with present main.
> 
> The first job deploys ovn-fake-multinode with the main
> OVN and runs simple tests provided by ovn-fake-multinode [1].
> 
> The second job deploys ovn-fake-multinode setup with the
> central image using OVN 22.03 and chassis image using main OVN.
> This job tests the scenario
>   - ovn-northd and OVN dbs are running the most recent LTS.
>   - ovn-controller is running the latest commit from the branch.
> 
> The workflow is right now scheduled to trigger on midnight everyday.
> Once we cache the built image or reduce the overall run time of
> this workflow we can enable for every push.
> 
> [1] - 
> https://github.com/ovn-org/ovn-fake-multinode/blob/main/.ci/test_basic.sh
> 
> Signed-off-by: Numan Siddique <[email protected]>
> ---

I have a few minor comments, feel free to add my ack when you apply the
patch if you address them:

Acked-by: Dumitru Ceara <[email protected]>

Thanks,
Dumitru

>  .../workflows/ovn-fake-multinode-tests.yml    | 151 ++++++++++++++++++
>  Makefile.am                                   |   1 +
>  2 files changed, 152 insertions(+)
>  create mode 100644 .github/workflows/ovn-fake-multinode-tests.yml
> 
> diff --git a/.github/workflows/ovn-fake-multinode-tests.yml 
> b/.github/workflows/ovn-fake-multinode-tests.yml
> new file mode 100644
> index 0000000000..fa768f235c
> --- /dev/null
> +++ b/.github/workflows/ovn-fake-multinode-tests.yml
> @@ -0,0 +1,151 @@
> +name: System tests using ovn-fake-multinode
> +
> +on:

It might be good also add:

  workflow_dispatch:

So we can run the workflow on demand as well.

> +  schedule:
> +    # Run everyday at midnight
> +    - cron: '0 0 * * *'
> +
> +concurrency:
> +  group: ${{ github.workflow }}-${{ github.event.pull_request.number || 
> github.run_id }}
> +  cancel-in-progress: true
> +
> +jobs:
> +  build:
> +    env:
> +      RUNC_CMD: podman
> +      OS_IMAGE: "fedora:37"
> +      # https://github.com/actions/runner-images/issues/6282
> +      XDG_RUNTIME_DIR: ''
> +
> +    name: Build ovn-fake-multinode image
> +    runs-on: ubuntu-20.04
> +    steps:
> +    - name: Check out ovn-fake-multi-node
> +      uses: actions/checkout@v3
> +      with:
> +        repository: 'ovn-org/ovn-fake-multinode'
> +        path: 'ovn-fake-multinode'
> +        ref: 'v0.1'
> +
> +    - name: Check out ovn
> +      uses: actions/checkout@v3
> +      with:
> +        path: 'ovn-fake-multinode/ovn'
> +        submodules: recursive
> +
> +    - name: Check out ovs master
> +      uses: actions/checkout@v3
> +      with:
> +        path: 'ovn-fake-multinode/ovs'
> +        repository: 'openvswitch/ovs'
> +        ref: 'master'

This works fine because ovn-fake-multinode builds OVN against the
version checked out in the submodule.  But it might not be obvious.
Shall we add a comment before these two steps?

> +
> +    - name: Install dependencies
> +      run: |
> +        sudo apt update
> +        sudo apt-get install -y podman
> +
> +    - name: Build ovn-fake-multi-node main image
> +      run: |
> +        set -x
> +        sudo -E ./ovn_cluster.sh build
> +        mkdir -p /tmp/_output
> +        sudo podman save ovn/ovn-multi-node:latest > 
> /tmp/_output/ovn_main_image.tar
> +      working-directory: ovn-fake-multinode
> +
> +    - name: Checkout ovn branch-22.03
> +      uses: actions/checkout@v3
> +      with:
> +        path: 'ovn-fake-multinode/ovn'
> +        submodules: recursive
> +        ref: 'branch-22.03'
> +
> +    - name: Build ovn-fake-multi-node 22.03 image
> +      run: |
> +        set -x
> +        sudo -E ./ovn_cluster.sh build
> +        mkdir -p /tmp/_output
> +        sudo podman tag ovn/ovn-multi-node:latest ovn/ovn-multi-node:22.03
> +        sudo podman save ovn/ovn-multi-node:22.03 > 
> /tmp/_output/ovn_22_03_image.tar
> +      working-directory: ovn-fake-multinode
> +
> +    - uses: actions/upload-artifact@v3
> +      with:
> +        name: test-main-image
> +        path: /tmp/_output/ovn_main_image.tar
> +
> +    - uses: actions/upload-artifact@v3
> +      with:
> +        name: test-22-03-image
> +        path: /tmp/_output/ovn_22_03_image.tar
> +
> +  multinode-tests:
> +    runs-on: ubuntu-20.04
> +    timeout-minutes: 15
> +    env:
> +      RUNC_CMD: podman
> +      OS_IMAGE: "fedora:37"
> +      CENTRAL_IMAGE: ${{ matrix.cfg.central_image }}
> +      # Disable SSL for now. Revisit this if required.
> +      ENABLE_SSL: no
> +      # https://github.com/actions/runner-images/issues/6282
> +      XDG_RUNTIME_DIR: ''
> +
> +    name: multinode tests ${{ join(matrix.cfg.*, ' ') }}
> +    needs: [build]
> +    strategy:
> +      fail-fast: false
> +      matrix:
> +        cfg:
> +        - { central_image: "ovn/ovn-multi-node:latest" }
> +        - { central_image: "ovn/ovn-multi-node:22.03" }
> +
> +    steps:
> +
> +    - name: Free up disk space
> +      run: sudo eatmydata apt-get remove --auto-remove -y aspnetcore-* 
> dotnet-* libmono-* mono-* msbuild php-* php7* ghc-* zulu-*
> +
> +    - uses: actions/download-artifact@v3
> +      with:
> +        name: test-main-image
> +
> +    - uses: actions/download-artifact@v3
> +      with:
> +        name: test-22-03-image
> +
> +    - name: Load podman image
> +      run: |
> +        sudo podman load --input ovn_main_image.tar
> +        sudo podman load --input ovn_22_03_image.tar
> +
> +    - name: Check out ovn-fake-multi-node
> +      uses: actions/checkout@v3
> +      with:
> +        repository: 'ovn-org/ovn-fake-multinode'
> +        path: 'ovn-fake-multinode'
> +        ref: 'v0.1'
> +
> +    - name: Install dependencies
> +      run: |
> +        sudo apt update
> +        sudo apt-get install -y podman openvswitch-switch
> +        sudo systemctl start openvswitch-switch
> +        sudo ovs-vsctl show
> +
> +    - name: Start basic cluster
> +      run: |
> +        sudo -E ./ovn_cluster.sh start
> +        sudo podman exec -it ovn-central ovn-nbctl show
> +        sudo podman exec -it ovn-central ovn-appctl -t ovn-northd version
> +        sudo podman exec -it ovn-chassis-1 ovn-appctl -t ovn-controller 
> version
> +      working-directory: ovn-fake-multinode
> +
> +    - name: Run basic test script
> +      run: |
> +        sudo ./.ci/test_basic.sh
> +      working-directory: ovn-fake-multinode
> +
> +    - name: Stop cluster
> +      run: |
> +        sudo -E ./ovn_cluster.sh stop
> +      working-directory: ovn-fake-multinode

Do we really need to stop the cluster? :)

> diff --git a/Makefile.am b/Makefile.am
> index 8c60d4a719..6d84888a29 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -95,6 +95,7 @@ EXTRA_DIST = \
>       .ci/ovn-kubernetes/custom.patch \
>       .github/workflows/test.yml \
>       .github/workflows/ovn-kubernetes.yml \
> +     .github/workflows/ovn-fake-multinode-tests.yml \
>       boot.sh \
>       $(MAN_FRAGMENTS) \
>       $(MAN_ROOTS) \

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to