-
Notifications
You must be signed in to change notification settings - Fork 100
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Try testing with Scapy version updated to 2.5.0 #212
Changes from 22 commits
58fca24
ff3345b
f77941f
e55f231
4dc21c7
f4838fc
7762e30
7602f72
15ecb61
7924ffa
997d4f5
df9c770
78a6d6b
affca33
5755a87
0413aa4
4ebea59
462c175
cbdab40
cdfadb7
e73fa13
c557643
cce5f72
e6b4fd3
75bfc78
89d920c
c138cca
c8ab50f
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -11,41 +11,53 @@ on: | |
|
||
jobs: | ||
verify-python: | ||
strategy: | ||
matrix: | ||
os: [ubuntu-22.04, ubuntu-latest] | ||
scapy_version: [2.5.0, 2.6.1] | ||
# Don't abort other runs when one of them fails, to ease debugging. | ||
fail-fast: false | ||
|
||
name: Python code verification (src) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I would call this linting or static analysis. Minor comment. I updated the CI to require these tests now. |
||
runs-on: ubuntu-latest | ||
runs-on: ${{ matrix.os }} | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Install dependencies | ||
run: | | ||
make set-dev | ||
python -m pip install scapy==2.4.5 | ||
python -m pip install scapy==${{ matrix.scapy_version }} | ||
- name: Verify code (python w/black) | ||
run: | | ||
make format-check | ||
- name: Run pytests (utests/tests) | ||
run: | | ||
make test | ||
test: | ||
runs-on: ubuntu-latest | ||
strategy: | ||
matrix: | ||
os: [ubuntu-22.04, ubuntu-latest] | ||
scapy_version: [2.5.0, 2.6.1] | ||
# Don't abort other runs when one of them fails, to ease debugging. | ||
fail-fast: false | ||
|
||
name: run ptf unit tests | ||
runs-on: ${{ matrix.os }} | ||
steps: | ||
- uses: actions/checkout@v4 | ||
|
||
- name: Dependencies | ||
run: | | ||
sudo apt-get install cmake libffi-dev ethtool python3-dev | ||
# Install the latest pip version (not python3-pip) as older versions | ||
# seem to have issues when installing from source. | ||
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py | ||
sudo python3 get-pip.py | ||
sudo python3 -m pip install --upgrade setuptools nose2 scapy wheel | ||
python3 -m pip install --upgrade setuptools nose2 wheel | ||
python -m pip install scapy==${{ matrix.scapy_version }} | ||
|
||
bash CI/install-nanomsg.sh | ||
sudo ldconfig | ||
bash CI/install-nnpy.sh | ||
|
||
- name: Install | ||
run: | | ||
sudo python3 -m pip install . | ||
python3 -m pip install . | ||
ptf --version | ||
|
||
- name: Before_script | ||
|
@@ -54,6 +66,6 @@ jobs: | |
|
||
- name: Script | ||
run: | | ||
pip --verbose list | ||
python3 CI/check-nnpy.py | ||
./CI/run_tests.sh | ||
sudo python3 /usr/local/bin/nose2 utests.tests.test | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. FYI for reviewers - these tests are still run, but I moved the command that runs them into the |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,6 +3,9 @@ | |
THIS_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) | ||
source $THIS_DIR/common.sh | ||
|
||
set -x | ||
cmake --version | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What's the motivation for this output? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. debugging CI script behavior. |
||
|
||
# nanomsg is very confusing in how it manages SOVERSION vs VERSION, but this | ||
# should be okay... (5.0.0 is the SOVERSION) | ||
check_lib libnanomsg libnanomsg.so.5.0.0 | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
#!/usr/bin/env python | ||
fruffy marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
import sys | ||
|
||
print(f"{sys.version_info.major}.{sys.version_info.minor}") |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,23 +1,36 @@ | ||
#!/usr/bin/env bash | ||
|
||
sudo python ptf_nn/ptf_nn_agent.py \ | ||
set -x | ||
|
||
THIS_SCRIPT_FILE_MAYBE_RELATIVE="$0" | ||
THIS_SCRIPT_DIR_MAYBE_RELATIVE="${THIS_SCRIPT_FILE_MAYBE_RELATIVE%/*}" | ||
THIS_SCRIPT_DIR_ABSOLUTE=`readlink -f "${THIS_SCRIPT_DIR_MAYBE_RELATIVE}"` | ||
|
||
MAJOR_MINOR_VERSION=`${THIS_SCRIPT_DIR_ABSOLUTE}/python-major-minor-version.py` | ||
fruffy marked this conversation as resolved.
Show resolved
Hide resolved
|
||
PPATH="$HOME/.local/lib/python${MAJOR_MINOR_VERSION}/site-packages" | ||
|
||
sudo PATH=${PATH} PYTHONPATH=${PPATH} python3 ptf_nn/ptf_nn_agent.py \ | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Why are these path hacks necessary btw? Maybe we should consider setting up virtualenv or poetry if Ubuntu24.04 requires it. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ah, I guess because of the use of Although There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. If you set up virtualenv as the normal user, then you pick a directory where that is installed, and using it typically either requires, or recommends, first running If you know a way to run commands as root that don't do one of (a) pass the environment variable values on to the root user, as shown in my current sudo commands, or (b) somehow do I don't know of any way in which virtual environments somehow avoid this. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. And if I recall correctly, doing what I am doing now, where the root user uses a normal user's lib/python* directory, isn't merely read-only, but the root user can also write There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I don't think there is a way around this unless you disable sudo's path protection: https://unix.stackexchange.com/a/151188 I have found There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. commit 25 uses There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. https://unix.stackexchange.com/a/480764 Might even remove the need to use any dollar signs. But I have not tried that command. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Trying that variation with commit 26 to see if it passes the tests. At some point, we have to stop tweaking and use something that works :-) There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It failed. Reverted that change in commit 27, back to what it was in commit 25. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I was mostly interested because of p4lang/p4c#5047 |
||
--device-socket 0@tcp://127.0.0.1:10001 -i 0-1@veth0 \ | ||
&>/dev/null & | ||
& | ||
|
||
sleep 5 | ||
|
||
sudo python ptf_nn/ptf_nn_agent.py \ | ||
sudo PATH=${PATH} PYTHONPATH=${PPATH} python3 ptf_nn/ptf_nn_agent.py \ | ||
--device-socket 1@tcp://127.0.0.1:10002 -i 1-1@veth3 \ | ||
&>/dev/null & | ||
& | ||
|
||
sleep 5 | ||
|
||
sudo python ptf_nn/ptf_nn_test_bridge.py -ifrom veth1 -ito veth2 \ | ||
&>/dev/null & | ||
sudo PATH=${PATH} PYTHONPATH=${PPATH} python3 ptf_nn/ptf_nn_test_bridge.py -ifrom veth1 -ito veth2 \ | ||
& | ||
|
||
sleep 5 | ||
|
||
sudo ptf --test-dir ptf_nn/ptf_nn_test \ | ||
env | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Spurious? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Removed in commit 28. I don't know how I got that in there. |
||
|
||
sudo PATH=${PATH} PYTHONPATH=${PPATH} `which ptf` --test-dir ptf_nn/ptf_nn_test \ | ||
--device-socket 0-{0-64}@tcp://127.0.0.1:10001 \ | ||
--device-socket 1-{0-64}@tcp://127.0.0.1:10002 \ | ||
--platform nn | ||
|
||
sudo PATH=${PATH} PYTHONPATH=${PPATH} python3 `which nose2` utests.tests.test |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe use ubuntu-24.04 here instead to avoid failures once this version changes?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
At least one argument used for this in p4lang/p4runtime repo is: when ubuntu-latest changes in 2 years, if it fails, we'll get reminded and update this.
If that argument doesn't work for you, I am happy to change it, as when 26.04 is released, someone might remember to do a sweep of repos to update these kinds of things.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
changes ubuntu-latest to ubuntu-24.04 in commit 23
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah fixing the version avoids surprises or gaps (for example, when they update the runner to ubuntu-26.04 and now we are missing 24.04 without even knowing).