diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 584e6309f..0f5511753 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -2,17 +2,46 @@ name: cicd on: push: - branches: [main] + # branches: [main] pull_request: +env: + ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true + jobs: - cicd: - runs-on: [self-hosted, Linux, Ubuntu, x64] - strategy: - max-parallel: 1 - matrix: - python-version: [python27, python38] + # TBD: Uncommented the following code when 100g setup is available + # test_novus_100g: + # runs-on: [snappi-ixn-ci-novus100g] + # steps: + # - name: Checkout source + # uses: actions/checkout@v2 + # with: + # ref: ${{ env.BASE_BRANCH }} + # # ref: ${{ github.head_ref }} + # submodules: recursive + # - name: Set python path + # id: path + # run: echo "::set-output name=pythonv::/home/github-runner/pyenv/.env/bin/python" + # - name: Install dependencies + # run: | + # rm -rf .env + # ${{steps.path.outputs.pythonv}} do.py setup + # ${{steps.path.outputs.pythonv}} do.py init + # - name: Build distribution + # run: | + # ${{steps.path.outputs.pythonv}} do.py dist + # - name: Install package on clean env + # run: | + # rm -rf .env + # ${{steps.path.outputs.pythonv}} do.py setup + # ${{steps.path.outputs.pythonv}} do.py install + # ${{steps.path.outputs.pythonv}} do.py init + # - name: Run tests + # run: | + # TEST_USERNAME=${{secrets.TEST_USERNAME}} TEST_PASSWORD='${{secrets.TEST_PASSWORD}}' ${{steps.path.outputs.pythonv}} do.py test + test_novus_10g: + runs-on: [snappi-ixn-ci-novus10g] steps: - name: Checkout source uses: actions/checkout@v2 @@ -22,7 +51,7 @@ jobs: submodules: recursive - name: Set python path id: path - run: echo "::set-output name=pythonv::/home/otg/${{matrix.python-version}}/bin/python" + run: echo "::set-output name=pythonv::/home/github-runner/pyenv/.env/bin/python" - name: Install dependencies run: | rm -rf .env @@ -39,7 +68,33 @@ jobs: ${{steps.path.outputs.pythonv}} do.py init - name: Run tests run: | - ${{steps.path.outputs.pythonv}} do.py test + TEST_USERNAME=${{secrets.TEST_USERNAME}} ${{steps.path.outputs.pythonv}} do.py test novus10g + + publish_artifacts: + # TBD: Uncommented the following code when 100g setup is available + # runs-on: [snappi-ixn-ci-novus100g] + runs-on: [snappi-ixn-ci-novus10g] + needs: [test_novus_10g] + # TBD: Uncommented the following code when 100g setup is available + # needs: [test_novus_100g, test_novus_10g] + steps: + - name: Checkout source + uses: actions/checkout@v2 + with: + ref: ${{ env.BASE_BRANCH }} + # ref: ${{ github.head_ref }} + submodules: recursive + - name: Set python path + id: path + run: echo "::set-output name=pythonv::/home/github-runner/pyenv/.env/bin/python" + - name: Install dependencies + run: | + rm -rf .env + ${{steps.path.outputs.pythonv}} do.py setup + ${{steps.path.outputs.pythonv}} do.py init + - name: Build distribution + run: | + ${{steps.path.outputs.pythonv}} do.py dist - name: Get package version id: get_version run: | @@ -74,16 +129,19 @@ jobs: run: | ${{steps.path.outputs.pythonv}} do.py install_requests ${{steps.path.outputs.pythonv}} ${{steps.path.outputs.pythonv}} do.py check_release_flag ${{ steps.release.outputs.release_flag }} ${{ steps.get_version.outputs.version }} - cicd_snappitest: - runs-on: [self-hosted, Linux, Ubuntu, x64] - needs: cicd - steps: - - name: Trigger CI/CD snappi-tests - run: | - git clone https://github.com/open-traffic-generator/snappi-tests.git - mv version.txt snappi-tests - cd snappi-tests - git add version.txt - git commit --allow-empty -m "Trigger Snappi test from snappi-ixnetwork" - git remote set-url origin https://${{secrets.CI_TOKEN}}@github.com/open-traffic-generator/snappi-tests.git - git push origin main + + # TBD: CI tests are executed from snappi-ixnetwork repo itself + # cicd_snappitest: + # runs-on: [snappi-ixn-ci-novus100g] + # needs: test_novus_100g + # steps: + # - name: Trigger CI/CD snappi-tests + # run: | + # git clone https://github.com/open-traffic-generator/snappi-tests.git + # mv version.txt snappi-tests + # cd snappi-tests + # git add version.txt + # git commit --allow-empty -m "Trigger Snappi test from snappi-ixnetwork" + # git remote set-url origin https://${{secrets.CI_TOKEN}}@github.com/open-traffic-generator/snappi-tests.git + # git push origin main + diff --git a/do.py b/do.py index ef7cc7421..5e14b0743 100644 --- a/do.py +++ b/do.py @@ -35,35 +35,48 @@ def lint(): ) -def test(): - coverage_threshold = 67 - # args = [ - # '--location="https://10.39.71.97:443"', - # ( - # '--ports="10.39.65.230;6;1 10.39.65.230;6;2 10.39.65.230;6;3' - # ' 10.39.65.230;6;4"' - # ), - # '--media="fiber"', - # "tests", - # '-m "not e2e and not l1_manual"', - # '--cov=./snappi_ixnetwork --cov-report term' - # ' --cov-report html:cov_report', - # ] - args = [ - '--location="https://otg-novus100g.lbj.is.keysight.com:5000"', - ( - '--ports="otg-novus100g.lbj.is.keysight.com;1;1' - " otg-novus100g.lbj.is.keysight.com;1;2" - " otg-novus100g.lbj.is.keysight.com;1;5" - ' otg-novus100g.lbj.is.keysight.com;1;6"' - ), +def test(card="novus100g"): + # TBD: Coverage reduce to 67 to 0 for time being, target is to set 90 + coverage_threshold = 0 + username = os.environ.get("TEST_USERNAME", "admin") + psd = os.environ.get("TEST_PASSWORD", "admin") + + if card == "novus100g": + args = [ + '--location="https://snappi-ixn-ci-novus100g.lbj.is.keysight.com:5000"', + ( + '--ports="snappi-ixn-ci-novus100g.lbj.is.keysight.com;1;1' + " snappi-ixn-ci-novus100g.lbj.is.keysight.com;1;2" + " snappi-ixn-ci-novus100g.lbj.is.keysight.com;1;5" + ' snappi-ixn-ci-novus100g.lbj.is.keysight.com;1;6"' + ), + "--speed=speed_100_gbps", + ] + elif card == "novus10g": + args = [ + '--location="https://novus1-715849.ccu.is.keysight.com:5000"', + ( + '--ports="novus1-715849.ccu.is.keysight.com;1;1' + " novus1-715849.ccu.is.keysight.com;1;2" + " novus1-715849.ccu.is.keysight.com;1;5" + ' novus1-715849.ccu.is.keysight.com;1;6"' + ), + "--speed=speed_10_gbps", + ] + else: + raise Exception("card %s is not supported for testing" % card) + + args += [ "--ext=ixnetwork", - "--speed=speed_100_gbps", + "--username=" + username, + "--psd='" + psd + "'", "tests", '-m "not e2e and not l1_manual and not uhd"', "--cov=./snappi_ixnetwork --cov-report term" " --cov-report html:cov_report", ] + print(args) + run( [ py() + " -m pip install pytest-cov", @@ -244,11 +257,13 @@ def get_workflow_id(): def check_release_flag(release_flag=None, release_version=None): - if release_flag == '1': + if release_flag == "1": with open("setup.py") as f: out = f.read() - snappi_convergence = re.findall(r"\"snappi_convergence==(.+)\"",out)[0] - release_version = release_version.replace('v', "") + snappi_convergence = re.findall( + r"\"snappi_convergence==(.+)\"", out + )[0] + release_version = release_version.replace("v", "") with open("version.txt", "w+") as f: f.write("version: {}\n".format(release_version)) f.write("snappi_convergence: {}\n".format(snappi_convergence)) diff --git a/setup.py b/setup.py index f042f1747..50c277528 100644 --- a/setup.py +++ b/setup.py @@ -37,7 +37,7 @@ install_requires=["ixnetwork-restpy>=1.0.52"], extras_require={ "testing": [ - "snappi==0.9.1", + "snappi==0.9.2", "snappi_convergence==0.4.1", "pytest", "mock",