Skip to content
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

Refactor netns handling, fix flakes, namespace some tests #227

Merged
merged 6 commits into from
May 15, 2024

Commits on May 14, 2024

  1. netns: remove iproute2 dependency

    This commit introduces a breaking change to rtnetlink.NetNS.
    
    The existing netns implementation had a few problems. It assumed that network
    namespaces have names, that they would always be pinned to /var/run/netns, and
    that numeric/integer references are pid references. This made the NetNS type
    unusable for referring to existing netns by fd, such as ones created by other
    libraries, or by opening procfs entries directly as demonstrated in the new
    testutils.NetNS() function.
    
    The forced dependency on the `ip` CLI tool also wasn't reasonable for a pure-Go
    library. Using the old implementation in a scratch/distroless container would
    quickly run into roadblocks.
    
    This commit also removes the functionality of creating and pinning new netns.
    There are plenty of options out in the Go ecosystem for that, and providing
    your own is only a few lines of code.
    
    Signed-off-by: Timo Beckers <[email protected]>
    ti-mo committed May 14, 2024
    Configuration menu
    Copy the full SHA
    d65aaac View commit details
    Browse the repository at this point in the history
  2. test: remove calls to unix.Setrlimit() in favor of rlimit.RemoveMemlo…

    …ck()
    
    ebpf-go provides this out of the box and skips setting the rlimit on kernels
    that support bpf memory cgroup accounting.
    
    Signed-off-by: Timo Beckers <[email protected]>
    ti-mo committed May 14, 2024
    Configuration menu
    Copy the full SHA
    a6aa9fe View commit details
    Browse the repository at this point in the history
  3. neigh: fix flaky tests, add State field to Neigh entry

    The flaky tests that were documented in the code are expected. Use the State
    field to discard entries that can't reasonably be considered in tests.
    
    Signed-off-by: Timo Beckers <[email protected]>
    ti-mo committed May 14, 2024
    Configuration menu
    Copy the full SHA
    a85e964 View commit details
    Browse the repository at this point in the history
  4. neigh: fix race in Conn.Neighbours

    When running tests locally, I would frequently hit "too many/little matches,
    expected 1, actual 0" due to other tests creating and deleting interfaces in
    the common host netns used by all tests.
    
    Neigh entries that fail the interface lookup can't have their Interface fields
    populated and should be dropped from the result since the interface is no longer
    there to begin with.
    
    Signed-off-by: Timo Beckers <[email protected]>
    ti-mo committed May 14, 2024
    Configuration menu
    Copy the full SHA
    49f1812 View commit details
    Browse the repository at this point in the history
  5. xdp: refactor test suite to use test helpers and netns-driven tests

    While running the test suite for testing netns-related changes, I noticed
    some of the xdp tests started failing because they wanted to create a dummy
    interface in the host network namespace.
    
    Avoid the complexity of managing dummy interfaces altogether by running all
    tests within their own netns and use the existing lo device that's present by
    default.
    
    Signed-off-by: Timo Beckers <[email protected]>
    ti-mo committed May 14, 2024
    Configuration menu
    Copy the full SHA
    fed9177 View commit details
    Browse the repository at this point in the history
  6. xdp,netkit: remove duplicate kernelMinReq in favor of testutils.SkipO…

    …nOldKernel
    
    There were two implementations of this, so move them to common testutils.
    
    Signed-off-by: Timo Beckers <[email protected]>
    ti-mo committed May 14, 2024
    Configuration menu
    Copy the full SHA
    b61a95f View commit details
    Browse the repository at this point in the history