Skip to content

bpf mock tests target broken with parallel builds #19098

@joestringer

Description

@joestringer

While attempting to run the integration-tests on master Cilium (v1.12 dev cycle), I hit this issue:

$ make integration-tests                                                                                                                                        
Starting key-value store containers...                                                                                                                                                                       
cilium-etcd-test-container                                                                            
5392eb4bb561e3c637cb4f308f9f61da177765735955147127fdc540d3d56b44                                                                                                                                             
cilium-consul-test-container                                                                                                                                                                                 
eaf4b06b4b4b1296bd919ea900a9085f8fa4df6eb4070717569a1e921c5f9ec2                                                                                                                                             
20.04: Pulling from library/ubuntu                                                                                                                                                                           
20.04: Pulling from library/ubuntu                                                                                                                                                                           
Digest: sha256:8ae9bafbb64f63a50caab98fd3a5e37b3eb837a3e0780b78e5218e63193961f9                                                                                                                              
Status: Image is up to date for ubuntu:20.04                                                                                                                                                                 
docker.io/library/ubuntu:20.04                                                                                                                                                                               
Digest: sha256:8ae9bafbb64f63a50caab98fd3a5e37b3eb837a3e0780b78e5218e63193961f9                                                                                                                              
Status: Image is up to date for ubuntu:20.04                                                                                                                                                                 
docker.io/library/ubuntu:20.04                                                                                                                                                                               
[+] Building 0.0s (0/1)                                                                                                                                                                                      
[+] Building 0.0s (14/14) FINISHED                                                                                                                                                                           
 => CACHED [internal] load remote build context                                                                                                                                                         0.0s
 => CACHED copy /context /                                                                                                                                                                              0.0s
 => [internal] load metadata for docker.io/library/ubuntu:20.04                                                                                                                                         0.0s
 => [ 1/10] FROM docker.io/library/ubuntu:20.04                                                                                                                                                         0.0s 
 => CACHED [ 2/10] RUN apt-get update                                                                                                                                                                   0.0s
 => CACHED [ 3/10] RUN apt-get -y install build-essential                                                                                                                                               0.0s 
 => CACHED [ 4/10] RUN apt-get -y install clang                                                                                                                                                         0.0s 
 => CACHED [ 5/10] RUN apt-get -y install ruby-full                                                                                                                                                     0.0s 
 => CACHED [ 6/10] RUN apt-get -y install git                                                                                                                                                           0.0s 
 => CACHED [ 7/10] RUN git clone --recursive https://github.com/ThrowTheSwitch/CMock.git                                                                                                                0.0s
 => CACHED [ 8/10] RUN git -C CMock reset --hard 3d4ba8d20b8958da5dace7dd5d31155c94b60819                                                                                                               0.0s
 => CACHED [ 9/10] RUN git clone https://github.com/DavidLeeds/hashmap.git                                                                                                                              0.0s
 => CACHED [10/10] RUN git -C hashmap reset --hard 137d60b3818c22c79d2be5560150eb2eff981a68                                                                                                             0.0s
 => exporting to image                                                                                                                                                                                  0.0s
 => => exporting layers                                                                                                                                                                                 0.0s
 => => writing image sha256:225ead4c8128ecf60ef71fac460a73039f095c957c045e0edb079c8a54324582                                                                                                            0.0s
[+] Building 0.0s (13/14)                          
 => [internal] load remote build context                                                                                                                                                                0.0s
 => [internal] load metadata for docker.io/library/ubuntu:20.04                                                                                                                                         0.0s
 => [ 1/10] FROM docker.io/library/ubuntu:20.04                                                                                                                                                         0.0s
 => CACHED [ 2/10] RUN apt-get update                                                                                                                                                                   0.0s
 => CACHED [ 3/10] RUN apt-get -y install build-essential                                                                                                                                               0.0s
 => CACHED [ 4/10] RUN apt-get -y install clang                                                                                                                                                         0.0s
 => CACHED [ 5/10] RUN apt-get -y install ruby-full                                                                                                                                                     0.0s
 => CACHED [ 6/10] RUN apt-get -y install git                                                                                                                                                           0.0s
 => CACHED [ 7/10] RUN git clone --recursive https://github.com/ThrowTheSwitch/CMock.git                                                                                                                0.0s
 => CACHED [ 8/10] RUN git -C CMock reset --hard 3d4ba8d20b8958da5dace7dd5d31155c94b60819                                                                                                               0.0s
 => CACHED [ 9/10] RUN git clone https://github.com/DavidLeeds/hashmap.git                                                                                                                              0.0s
 => CACHED [10/10] RUN git -C hashmap reset --hard 137d60b3818c22c79d2be5560150eb2eff981a68                                                                                                             0.0s
 => exporting to image                                                                                                                                                                                  0.0s
 => => exporting layers                                                                                                                                                                                 0.0s
 => => writing image sha256:225ead4c8128ecf60ef71fac460a73039f095c957c045e0edb079c8a54324582                                                                                                            0.0s
 => => naming to docker.io/cilium/bpf-mock
/usr/lib/ruby/2.7.0/fileutils.rb:548:in `rename': No such file or directory @ rb_file_s_rename - (mocks/mock_helpers.h.new, mocks/mock_helpers.h) (Errno::ENOENT)
        from /usr/lib/ruby/2.7.0/fileutils.rb:548:in `block in mv'
        from /usr/lib/ruby/2.7.0/fileutils.rb:1588:in `block in fu_each_src_dest'
        from /usr/lib/ruby/2.7.0/fileutils.rb:1604:in `fu_each_src_dest0'
        from /usr/lib/ruby/2.7.0/fileutils.rb:1586:in `fu_each_src_dest'
        from /usr/lib/ruby/2.7.0/fileutils.rb:539:in `mv'
        from /CMock/lib/cmock_file_writer.rb:45:in `update_file'
        from /CMock/lib/cmock_file_writer.rb:28:in `create_file'
        from /CMock/lib/cmock_generator.rb:107:in `create_mock_header_file'
        from /CMock/lib/cmock_generator.rb:75:in `create_mock'
        from ../../CMock/lib/cmock.rb:48:in `generate_mock'
        from ../../CMock/lib/cmock.rb:32:in `block in setup_mocks'
        from ../../CMock/lib/cmock.rb:31:in `each'
        from ../../CMock/lib/cmock.rb:31:in `setup_mocks'
        from ../../CMock/lib/cmock.rb:109:in `<main>'
Creating mock for helpers...
Creating mock for helpers...
Creating mock for helpers_skb...
/usr/lib/ruby/2.7.0/fileutils.rb:548:in `rename': No such file or directory @ rb_file_s_rename - (mocks/mock_helpers_skb.c.new, mocks/mock_helpers_skb.c) (Errno::ENOENT)
        from /usr/lib/ruby/2.7.0/fileutils.rb:548:in `block in mv'
        from /usr/lib/ruby/2.7.0/fileutils.rb:1588:in `block in fu_each_src_dest'
        from /usr/lib/ruby/2.7.0/fileutils.rb:1604:in `fu_each_src_dest0'
        from /usr/lib/ruby/2.7.0/fileutils.rb:1586:in `fu_each_src_dest'
        from /usr/lib/ruby/2.7.0/fileutils.rb:539:in `mv'
        from /CMock/lib/cmock_file_writer.rb:45:in `update_file'
        from /CMock/lib/cmock_file_writer.rb:28:in `create_file'
        from /CMock/lib/cmock_generator.rb:120:in `create_mock_source_file'
        from /CMock/lib/cmock_generator.rb:76:in `create_mock'
        from ../../CMock/lib/cmock.rb:48:in `generate_mock'
        from ../../CMock/lib/cmock.rb:32:in `block in setup_mocks'
        from ../../CMock/lib/cmock.rb:31:in `each'
        from ../../CMock/lib/cmock.rb:31:in `setup_mocks'
        from ../../CMock/lib/cmock.rb:109:in `<main>'
Creating mock for helpers_skb...
Creating mock for helpers_xdp...
Creating mock for helpers_xdp...
clang: error: no such file or directory: '../../bpf/mock/mocks/mock_helpers_skb.c'
make[1]: *** [Makefile:55: drop-notify-test] Error 1
make[1]: *** Waiting for unfinished jobs....
20.04: Pulling from library/ubuntu
Digest: sha256:8ae9bafbb64f63a50caab98fd3a5e37b3eb837a3e0780b78e5218e63193961f9
Status: Image is up to date for ubuntu:20.04
docker.io/library/ubuntu:20.04
[+] Building 0.0s (14/14) FINISHED                 
 => CACHED [internal] load remote build context                                                                                                                                                         0.0s
 => CACHED copy /context /                                                                                                                                                                              0.0s
 => [internal] load metadata for docker.io/library/ubuntu:20.04                                                                                                                                         0.0s
 => [ 1/10] FROM docker.io/library/ubuntu:20.04                                                                                                                                                         0.0s
 => CACHED [ 2/10] RUN apt-get update                                                                                                                                                                   0.0s
 => CACHED [ 3/10] RUN apt-get -y install build-essential                                                                                                                                               0.0s
 => CACHED [ 4/10] RUN apt-get -y install clang                                                                                                                                                         0.0s
 => CACHED [ 5/10] RUN apt-get -y install ruby-full                                                                                                                                                     0.0s
 => CACHED [ 6/10] RUN apt-get -y install git                                                                                                                                                           0.0s
 => CACHED [ 7/10] RUN git clone --recursive https://github.com/ThrowTheSwitch/CMock.git                                                                                                                0.0s
 => CACHED [ 8/10] RUN git -C CMock reset --hard 3d4ba8d20b8958da5dace7dd5d31155c94b60819                                                                                                               0.0s
 => CACHED [ 9/10] RUN git clone https://github.com/DavidLeeds/hashmap.git                                                                                                                              0.0s
 => CACHED [10/10] RUN git -C hashmap reset --hard 137d60b3818c22c79d2be5560150eb2eff981a68                                                                                                             0.0s
 => exporting to image                                                                                                                                                                                  0.0s
 => => exporting layers                                                                                                                                                                                 0.0s
 => => writing image sha256:225ead4c8128ecf60ef71fac460a73039f095c957c045e0edb079c8a54324582                                                                                                            0.0s
 => => naming to docker.io/cilium/bpf-mock
Creating mock for conntrack_stub...
clang: error: no such file or directory: '../../bpf/mock/mocks/mock_helpers_skb.c'
make[1]: *** [Makefile:49: nat-test] Error 1
make: *** [Makefile:196: integration-tests] Error 2

Note that my Make command here runs with V=0 and -j$(nproc) by default, so there may be parallel targets going on here. At a glance this is probably just an issue where the integration-tests target relies on the bpf-mock preparation, but that target is either not an explicit dependency or is run concurrently with other targets.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/CIContinuous Integration testing issue or flake

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions