Fix race conditions in DHCP test

The test named "correctly handles multiple DELs for the same container" in the ipam/dhcp package experiences race conditions when multiple goroutines concurrently access and modify the Args struct (of type CmdArgs).
To address these issues, a copy of the CmdArgs struct is now created in each function to eliminate data races.

Also, the test-linux.sh and test-windows.sh scripts have been updated to include the '-race' flag, enabling race detection during testing. This change helps prevent future race conditions by activating the Go race detector.

Signed-off-by: Alina Sudakov <asudakov@redhat.com>
This commit is contained in:
Alina Sudakov 2023-06-14 17:02:42 +03:00
parent 2b097c5a62
commit 48aa2f4eef
3 changed files with 13 additions and 5 deletions

View File

@ -332,9 +332,17 @@ var _ = Describe("DHCP Operations", func() {
started.Done() started.Done()
started.Wait() started.Wait()
err = originalNS.Do(func(ns.NetNS) error { err := originalNS.Do(func(ns.NetNS) error {
return testutils.CmdDelWithArgs(args, func() error { return testutils.CmdDelWithArgs(args, func() error {
return cmdDel(args) copiedArgs := &skel.CmdArgs{
ContainerID: args.ContainerID,
Netns: args.Netns,
IfName: args.IfName,
StdinData: args.StdinData,
Path: args.Path,
Args: args.Args,
}
return cmdDel(copiedArgs)
}) })
}) })
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())

View File

@ -15,7 +15,7 @@ source ./build_linux.sh
echo "Running tests" echo "Running tests"
function testrun { function testrun {
sudo -E bash -c "umask 0; PATH=${GOPATH}/bin:$(pwd)/bin:${PATH} go test $@" sudo -E bash -c "umask 0; PATH=${GOPATH}/bin:$(pwd)/bin:${PATH} go test -race $@"
} }
COVERALLS=${COVERALLS:-""} COVERALLS=${COVERALLS:-""}
@ -31,7 +31,7 @@ PKG=${PKG:-$(go list ./... | xargs echo)}
i=0 i=0
for t in ${PKG}; do for t in ${PKG}; do
if [ -n "${COVERALLS}" ]; then if [ -n "${COVERALLS}" ]; then
COVERFLAGS="-covermode set -coverprofile ${i}.coverprofile" COVERFLAGS="-covermode atomic -coverprofile ${i}.coverprofile"
fi fi
echo "${t}" echo "${t}"
testrun "${COVERFLAGS:-""} ${t}" testrun "${COVERFLAGS:-""} ${t}"

View File

@ -17,4 +17,4 @@ for d in $PLUGINS; do
done done
echo "testing packages $PKGS" echo "testing packages $PKGS"
go test -v $PKGS -ginkgo.randomizeAllSpecs -ginkgo.failOnPending -ginkgo.progress go test -race -v $PKGS -ginkgo.randomizeAllSpecs -ginkgo.failOnPending -ginkgo.progress