Hi,
We are trying you integrate FDIO unittest framework into our product.
Basically we have built some custom plugins and integrated those as VPP
plugins. We have our build environment where VPP is built including these
custom plugins. When we launch VPP inside our cluster it is working fine.
But, when we launch VPP in unittest debug container, VPP does not come up
saying some of custom node definitions are “unknown”.
It seems we are using same “make build xxxx” command syntax before invoking
“make test xxxx” in the makefile.
Inside the debug container also compilation is through and we can see all the
custom-plugin.so files preset in
build-root/install-vpp-native/vpp/lib/vpp_plugins/ directory (along with native
vpp plugins). But during launch VPP fails.
One thing we noticed is, we have code in custom plugins where “node” definition
is present in one plugin but which will be referred in another plugin.
Ex: The node “AAAAAAAAAAAAAAAAA_handoff” is present in
“BBBBBBBBBBBBBBBBBB_plugin.so” file and is being referred in
AAAAAAAAAAAAAAAAA_plugin.so.
Objdump from BBBBBBBBBBBBBBBBBB_plugin.so:
0000000000020b60 <__vlib_rm_node_registration_AAAAAAAAAAAAAAAAA_handoff_node>:
20b60: 48 8b 0d 29 84 0d 00 mov 0xd8429(%rip),%rcx # f8f90
<vlib_global_main@Base>
20b67: 48 8d 15 92 b6 0d 00 lea 0xdb692(%rip),%rdx # fc200
<AAAAAAAAAAAAAAAAA_handoff_node>
20b6e: 48 8b 41 58 mov 0x58(%rcx),%rax
20b72: 48 39 d0 cmp %rdx,%rax
20b75: 75 0e jne 20b85
<__vlib_rm_node_registration_AAAAAAAAAAAAAAAAA_handoff_node+0x25>
20b77: eb 22 jmp 20b9b
<__vlib_rm_node_registration_AAAAAAAAAAAAAAAAA_handoff_node+0x3b>
20b79: 0f 1f 80 00 00 00 00 nopl 0x0(%rax)
20b80: 48 39 d0 cmp %rdx,%rax
20b83: 74 0d je 20b92
<__vlib_rm_node_registration_AAAAAAAAAAAAAAAAA_handoff_node+0x32>
20b85: 48 89 c1 mov %rax,%rcx
20b88: 48 8b 40 78 mov 0x78(%rax),%rax
20b8c: 48 85 c0 test %rax,%rax
20b8f: 75 ef jne 20b80
<__vlib_rm_node_registration_AAAAAAAAAAAAAAAAA_handoff_node+0x20>
We can see both “BBBBBBBBBBBBBBBBBB_plugin.so” and AAAAAAAAAAAAAAAAA_plugin.so
present in below path along with VPP’s native plugins.
../../../../../../fdio/build-root/install-vpp-native/vpp/lib/vpp_plugins
[root@cni-builder-15-15-71 vpp_plugins]# ll
total 459476
-rwxr-xr-x 1 root root 402808 Aug 10 14:46 abf_plugin.so
-rwxr-xr-x 1 root root 20126400 Aug 10 14:47 acl_plugin.so
-rwxr-xr-x 1 root root 446328 Aug 10 14:47 adl_plugin.so
-rwxr-xr-x 1 root root 384016 Aug 10 14:47 an_1810mwlb_plugin.so
-rwxr-xr-x 1 root root 9284184 Aug 10 14:48 custom1_plugin.so
-rwxr-xr-x 1 root root 283840 Aug 10 14:47 custom2_plugin.so
-rwxr-xr-x 1 root root 9624208 Aug 10 14:48 BBBBBBBBBBBBBBBBBB_plugin.so
-rwxr-xr-x 1 root root 2113952 Aug 10 14:48 AAAAAAAAAAAAAAAAA_plugin.so
-rwxr-xr-x 1 root root 200376 Aug 10 14:48 arping_plugin.so
-rwxr-xr-x 1 root root 12062976 Aug 10 14:49 avf_plugin.so
-rwxr-xr-x 1 root root 138568 Aug 10 14:49 builtinurl_plugin.so
-rwxr-xr-x 1 root root 611272 Aug 10 14:49 cdp_plugin.so
-rwxr-xr-x 1 root root 5853336 Aug 10 14:49 cnat_plugin.so
-rwxr-xr-x 1 root root 33638160 Aug 10 14:49 crypto_ipsecmb_plugin.so
-rwxr-xr-x 1 root root 380360 Aug 10 14:49 crypto_openssl_plugin.so
-rwxr-xr-x 1 root root 1499144 Aug 10 14:49 crypto_sw_scheduler_plugin.so
-rwxr-xr-x 1 root root 678344 Aug 10 14:49 ct6_plugin.so
-rwxr-xr-x 1 root root 1664360 Aug 10 14:52 det44_plugin.so
-rwxr-xr-x 1 root root 3879696 Aug 10 14:49 dhcp_plugin.so
-rwxr-xr-x 1 root root 215512 Aug 10 14:49 dispatch_trace_plugin.so
-rwxr-xr-x 1 root root 1048096 Aug 10 14:49 dns_plugin.so
.
.
.
Also from the logs, we see the path of vpp plugins and vpp test plugins are
picked properly when constructing the VPP cmdline at the launch time.
Attaching the cmdline argument schema as well as the actual cmd constructed out
of it.
Schema:
../../../../../../fdio/build-root/install-vpp-native/vpp/bin/vpp', 'unix', '{',
'nodaemon', '', 'full-coredump', 'coredump-size unlimited', 'runtime-dir',
'/tmp/vpp-unittest-SanityTestCase-zhfmp1rx', '}', 'api-trace', '{', 'on', '}',
'api-segment', '{', 'prefix', 'vpp-unittest-SanityTestCase-zhfmp1rx', '}',
'cpu', '{', 'main-core', '0', 'corelist-workers', '1', '', '}', 'physmem', '{',
'max-size', '32m', '}', 'statseg', '{', 'socket-name',
'/tmp/vpp-unittest-SanityTestCase-zhfmp1rx/stats.sock', '', '}', 'socksvr',
'{', 'socket-name', '/tmp/vpp-unittest-SanityTestCase-zhfmp1rx/api.sock', '}',
'node { ', '', '}', 'api-fuzz {', 'off', '}', 'plugins', '{', 'plugin',
'dpdk_plugin.so', '{', 'disable', '}', 'plugin', 'rdma_plugin.so', '{',
'disable', '}', 'plugin', 'lisp_unittest_plugin.so', '{', 'enable', '}',
'plugin', 'unittest_plugin.so', '{', 'enable', '}', '}', 'plugin_path',
'../../../../../../fdio
/build-root/install-vpp-native/vpp/lib/vpp_plugins../../../../../../fdio/build-root/install-vpp-native/vpp/lib64/vpp_plugins',
'test_plugin_path',
'../../../../../../fdio/build-root/install-vpp-native/vpp/lib/vpp_api_test_plugins../../../../../../fdio/build-root/install-vpp-native/vpp/lib64/vpp_api_test_plugins']
Command:
../../../../../../fdio/build-root/install-vpp-native/vpp/bin/vpp unix {
nodaemon full-coredump coredump-size unlimited runtime-dir
/tmp/vpp-unittest-SanityTestCase-zhfmp1rx } api-trace { on } api-segment {
prefix vpp-unittest-SanityTestCase-zhfmp1rx } cpu { main-core 0
corelist-workers 1 } physmem { max-size 32m } statseg { socket-name
/tmp/vpp-unittest-SanityTestCase-zhfmp1rx/stats.sock } socksvr { socket-name
/tmp/vpp-unittest-SanityTestCase-zhfmp1rx/api.sock } node { } api-fuzz { off
} plugins { plugin dpdk_plugin.so { disable } plugin rdma_plugin.so { disable }
plugin lisp_unittest_plugin.so { enable } plugin unittest_plugin.so { enable }
} plugin_path
../../../../../../fdio/build-root/install-vpp-native/vpp/lib/vpp_plugins../../../../../../fdio/build-root/install-vpp-native/vpp/lib64/vpp_plugins
test_plugin_path
../../../../../../fdio/build-root/install-vpp-native/vpp/lib/vpp_api_test_plugins../../../../../../fdio/build-root/install-vpp-native/vpp/lib64/vpp_api_test_plugins
The failure log:
../../../../../../fdio/build-root/install-vpp-native/vpp/bin/vpp[10731]:
buffer: numa[0] falling back to non-hugepage backed buffer pool ()
vpp[10731]: vlib_node_main_init: node `AAAAAAAAAAAAAAAAA' refers to unknown
node `AAAAAAAAAAAAAAAAA_handoff
Please let us know if you find anything going wrong here. Also please let us
know if you need any other missing information in order to get more context.
Thanks,
Ganapati Hegde
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#21792): https://lists.fd.io/g/vpp-dev/message/21792
Mute This Topic: https://lists.fd.io/mt/92953476/21656
Mute #plugin:https://lists.fd.io/g/vpp-dev/mutehashtag/plugin
Group Owner: [email protected]
Unsubscribe: https://lists.fd.io/g/vpp-dev/leave/1480452/21656/631435203/xyzzy
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-