diff mbox series

test/vsock: add install target

Message ID 20240709135051.3152502-1-peng.fan@oss.nxp.com (mailing list archive)
State Superseded
Headers show
Series test/vsock: add install target | expand

Checks

Context Check Description
netdev/tree_selection success Not a local patch

Commit Message

Peng Fan (OSS) July 9, 2024, 1:50 p.m. UTC
From: Peng Fan <peng.fan@nxp.com>

Add install target for vsock to make Yocto easy to install the images.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 tools/testing/vsock/Makefile | 12 ++++++++++++
 1 file changed, 12 insertions(+)

Comments

Stefano Garzarella July 10, 2024, 7:34 a.m. UTC | #1
On Tue, Jul 09, 2024 at 09:50:51PM GMT, Peng Fan (OSS) wrote:
>From: Peng Fan <peng.fan@nxp.com>
>
>Add install target for vsock to make Yocto easy to install the images.
>
>Signed-off-by: Peng Fan <peng.fan@nxp.com>
>---
> tools/testing/vsock/Makefile | 12 ++++++++++++
> 1 file changed, 12 insertions(+)
>
>diff --git a/tools/testing/vsock/Makefile b/tools/testing/vsock/Makefile
>index a7f56a09ca9f..5c8442fa9460 100644
>--- a/tools/testing/vsock/Makefile
>+++ b/tools/testing/vsock/Makefile
>@@ -8,8 +8,20 @@ vsock_perf: vsock_perf.o msg_zerocopy_common.o
> vsock_uring_test: LDLIBS = -luring
> vsock_uring_test: control.o util.o vsock_uring_test.o timeout.o msg_zerocopy_common.o
>
>+VSOCK_INSTALL_PATH ?= $(abspath .)
>+# Avoid changing the rest of the logic here and lib.mk.
>+INSTALL_PATH := $(VSOCK_INSTALL_PATH)
>+
> CFLAGS += -g -O2 -Werror -Wall -I. -I../../include -I../../../usr/include -Wno-pointer-sign -fno-strict-overflow -fno-strict-aliasing -fno-common -MMD -U_FORTIFY_SOURCE -D_GNU_SOURCE
> .PHONY: all test clean
> clean:
> 	${RM} *.o *.d vsock_test vsock_diag_test vsock_perf vsock_uring_test
> -include *.d
>+
>+install: all
>+	@# Ask all targets to install their files
>+	mkdir -p $(INSTALL_PATH)/vsock

why using the "vsock" subdir?

IIUC you were inspired by selftests/Makefile, but it installs under 
$(INSTALL_PATH)/kselftest/ the scripts used by the main one 
`run_kselftest.sh`, which is installed in $(INSTALL_PATH instead.
So in this case I would install everything in $(INSTALL_PATH).

WDYT?

>+	install -m 744 vsock_test $(INSTALL_PATH)/vsock/
>+	install -m 744 vsock_perf $(INSTALL_PATH)/vsock/
>+	install -m 744 vsock_diag_test $(INSTALL_PATH)/vsock/
>+	install -m 744 vsock_uring_test $(INSTALL_PATH)/vsock/

Also from selftests/Makefile, what about using the ifdef instead of 
using $(abspath .) as default place?

I mean this:

install: all
ifdef INSTALL_PATH
   ...
else
	$(error Error: set INSTALL_PATH to use install)
endif

Thanks,
Stefano
Peng Fan July 10, 2024, 8:11 a.m. UTC | #2
> Subject: Re: [PATCH] test/vsock: add install target
> 
> On Tue, Jul 09, 2024 at 09:50:51PM GMT, Peng Fan (OSS) wrote:
> >From: Peng Fan <peng.fan@nxp.com>
> >
> >Add install target for vsock to make Yocto easy to install the images.
> >
> >Signed-off-by: Peng Fan <peng.fan@nxp.com>
> >---
> > tools/testing/vsock/Makefile | 12 ++++++++++++
> > 1 file changed, 12 insertions(+)
> >
> >diff --git a/tools/testing/vsock/Makefile
> >b/tools/testing/vsock/Makefile index a7f56a09ca9f..5c8442fa9460
> 100644
> >--- a/tools/testing/vsock/Makefile
> >+++ b/tools/testing/vsock/Makefile
> >@@ -8,8 +8,20 @@ vsock_perf: vsock_perf.o
> msg_zerocopy_common.o
> > vsock_uring_test: LDLIBS = -luring
> > vsock_uring_test: control.o util.o vsock_uring_test.o timeout.o
> >msg_zerocopy_common.o
> >
> >+VSOCK_INSTALL_PATH ?= $(abspath .)
> >+# Avoid changing the rest of the logic here and lib.mk.
> >+INSTALL_PATH := $(VSOCK_INSTALL_PATH)
> >+
> > CFLAGS += -g -O2 -Werror -Wall -I. -I../../include
> > -I../../../usr/include -Wno-pointer-sign -fno-strict-overflow
> > -fno-strict-aliasing -fno-common -MMD -U_FORTIFY_SOURCE -
> D_GNU_SOURCE
> > .PHONY: all test clean
> > clean:
> > 	${RM} *.o *.d vsock_test vsock_diag_test vsock_perf
> vsock_uring_test
> > -include *.d
> >+
> >+install: all
> >+	@# Ask all targets to install their files
> >+	mkdir -p $(INSTALL_PATH)/vsock
> 
> why using the "vsock" subdir?
> 
> IIUC you were inspired by selftests/Makefile, but it installs under
> $(INSTALL_PATH)/kselftest/ the scripts used by the main one
> `run_kselftest.sh`, which is installed in $(INSTALL_PATH instead.
> So in this case I would install everything in $(INSTALL_PATH).
> 
> WDYT?

I agree.

> 
> >+	install -m 744 vsock_test $(INSTALL_PATH)/vsock/
> >+	install -m 744 vsock_perf $(INSTALL_PATH)/vsock/
> >+	install -m 744 vsock_diag_test $(INSTALL_PATH)/vsock/
> >+	install -m 744 vsock_uring_test $(INSTALL_PATH)/vsock/
> 
> Also from selftests/Makefile, what about using the ifdef instead of
> using $(abspath .) as default place?
> 
> I mean this:
> 
> install: all
> ifdef INSTALL_PATH
>    ...
> else
> 	$(error Error: set INSTALL_PATH to use install) endif

Is the following looks good to you?

# Avoid conflict with INSTALL_PATH set by the main Makefile                                         
VSOCK_INSTALL_PATH ?=                                                                               
INSTALL_PATH := $(VSOCK_INSTALL_PATH)                                                               
                                                                                                    
install: all                                                                                        
ifdef INSTALL_PATH                                                                                  
        mkdir -p $(INSTALL_PATH)                                                                    
        install -m 744 vsock_test $(INSTALL_PATH)                                                   
        install -m 744 vsock_perf $(INSTALL_PATH)                                                   
        install -m 744 vsock_diag_test $(INSTALL_PATH)                                              
        install -m 744 vsock_uring_test $(INSTALL_PATH)                                             
else                                                                                                
        $(error Error: set INSTALL_PATH to use install)                                             
Endif

Thanks,
Peng.
> 
> Thanks,
> Stefano
Stefano Garzarella July 10, 2024, 9:11 a.m. UTC | #3
On Wed, Jul 10, 2024 at 08:11:32AM GMT, Peng Fan wrote:
>> Subject: Re: [PATCH] test/vsock: add install target
>>
>> On Tue, Jul 09, 2024 at 09:50:51PM GMT, Peng Fan (OSS) wrote:
>> >From: Peng Fan <peng.fan@nxp.com>
>> >
>> >Add install target for vsock to make Yocto easy to install the images.
>> >
>> >Signed-off-by: Peng Fan <peng.fan@nxp.com>
>> >---
>> > tools/testing/vsock/Makefile | 12 ++++++++++++
>> > 1 file changed, 12 insertions(+)
>> >
>> >diff --git a/tools/testing/vsock/Makefile
>> >b/tools/testing/vsock/Makefile index a7f56a09ca9f..5c8442fa9460
>> 100644
>> >--- a/tools/testing/vsock/Makefile
>> >+++ b/tools/testing/vsock/Makefile
>> >@@ -8,8 +8,20 @@ vsock_perf: vsock_perf.o
>> msg_zerocopy_common.o
>> > vsock_uring_test: LDLIBS = -luring
>> > vsock_uring_test: control.o util.o vsock_uring_test.o timeout.o
>> >msg_zerocopy_common.o
>> >
>> >+VSOCK_INSTALL_PATH ?= $(abspath .)
>> >+# Avoid changing the rest of the logic here and lib.mk.
>> >+INSTALL_PATH := $(VSOCK_INSTALL_PATH)
>> >+
>> > CFLAGS += -g -O2 -Werror -Wall -I. -I../../include
>> > -I../../../usr/include -Wno-pointer-sign -fno-strict-overflow
>> > -fno-strict-aliasing -fno-common -MMD -U_FORTIFY_SOURCE -
>> D_GNU_SOURCE
>> > .PHONY: all test clean
>> > clean:
>> > 	${RM} *.o *.d vsock_test vsock_diag_test vsock_perf
>> vsock_uring_test
>> > -include *.d
>> >+
>> >+install: all
>> >+	@# Ask all targets to install their files
>> >+	mkdir -p $(INSTALL_PATH)/vsock
>>
>> why using the "vsock" subdir?
>>
>> IIUC you were inspired by selftests/Makefile, but it installs under
>> $(INSTALL_PATH)/kselftest/ the scripts used by the main one
>> `run_kselftest.sh`, which is installed in $(INSTALL_PATH instead.
>> So in this case I would install everything in $(INSTALL_PATH).
>>
>> WDYT?
>
>I agree.
>
>>
>> >+	install -m 744 vsock_test $(INSTALL_PATH)/vsock/
>> >+	install -m 744 vsock_perf $(INSTALL_PATH)/vsock/
>> >+	install -m 744 vsock_diag_test $(INSTALL_PATH)/vsock/
>> >+	install -m 744 vsock_uring_test $(INSTALL_PATH)/vsock/
>>
>> Also from selftests/Makefile, what about using the ifdef instead of
>> using $(abspath .) as default place?
>>
>> I mean this:
>>
>> install: all
>> ifdef INSTALL_PATH
>>    ...
>> else
>> 	$(error Error: set INSTALL_PATH to use install) endif
>
>Is the following looks good to you?
>
># Avoid conflict with INSTALL_PATH set by the main Makefile
>VSOCK_INSTALL_PATH ?=
>INSTALL_PATH := $(VSOCK_INSTALL_PATH)

I'm not a super Makefile expert, but why do we need both 
VSOCK_INSTALL_PATH and INSTALL_PATH?

Stefano

>
>install: all
>ifdef INSTALL_PATH
>        mkdir -p $(INSTALL_PATH)
>        install -m 744 vsock_test $(INSTALL_PATH)
>        install -m 744 vsock_perf $(INSTALL_PATH)
>        install -m 744 vsock_diag_test $(INSTALL_PATH)
>        install -m 744 vsock_uring_test $(INSTALL_PATH)
>else
>        $(error Error: set INSTALL_PATH to use install)
>Endif
>
>Thanks,
>Peng.
>>
>> Thanks,
>> Stefano
>
Peng Fan July 10, 2024, 11:34 a.m. UTC | #4
> Subject: Re: [PATCH] test/vsock: add install target
> 
> On Wed, Jul 10, 2024 at 08:11:32AM GMT, Peng Fan wrote:
> >> Subject: Re: [PATCH] test/vsock: add install target
> >>
> >> On Tue, Jul 09, 2024 at 09:50:51PM GMT, Peng Fan (OSS) wrote:
> >> >From: Peng Fan <peng.fan@nxp.com>
> >> >
> >> >Add install target for vsock to make Yocto easy to install the
> images.
> >> >
> >> >Signed-off-by: Peng Fan <peng.fan@nxp.com>
> >> >---
> >> > tools/testing/vsock/Makefile | 12 ++++++++++++
> >> > 1 file changed, 12 insertions(+)
> >> >
> >> >diff --git a/tools/testing/vsock/Makefile
> >> >b/tools/testing/vsock/Makefile index a7f56a09ca9f..5c8442fa9460
> >> 100644
> >> >--- a/tools/testing/vsock/Makefile
> >> >+++ b/tools/testing/vsock/Makefile
> >> >@@ -8,8 +8,20 @@ vsock_perf: vsock_perf.o
> >> msg_zerocopy_common.o
> >> > vsock_uring_test: LDLIBS = -luring
> >> > vsock_uring_test: control.o util.o vsock_uring_test.o timeout.o
> >> >msg_zerocopy_common.o
> >> >
> >> >+VSOCK_INSTALL_PATH ?= $(abspath .)
> >> >+# Avoid changing the rest of the logic here and lib.mk.
> >> >+INSTALL_PATH := $(VSOCK_INSTALL_PATH)
> >> >+
> >> > CFLAGS += -g -O2 -Werror -Wall -I. -I../../include
> >> > -I../../../usr/include -Wno-pointer-sign -fno-strict-overflow
> >> > -fno-strict-aliasing -fno-common -MMD -U_FORTIFY_SOURCE -
> >> D_GNU_SOURCE
> >> > .PHONY: all test clean
> >> > clean:
> >> > 	${RM} *.o *.d vsock_test vsock_diag_test vsock_perf
> >> vsock_uring_test
> >> > -include *.d
> >> >+
> >> >+install: all
> >> >+	@# Ask all targets to install their files
> >> >+	mkdir -p $(INSTALL_PATH)/vsock
> >>
> >> why using the "vsock" subdir?
> >>
> >> IIUC you were inspired by selftests/Makefile, but it installs under
> >> $(INSTALL_PATH)/kselftest/ the scripts used by the main one
> >> `run_kselftest.sh`, which is installed in $(INSTALL_PATH instead.
> >> So in this case I would install everything in $(INSTALL_PATH).
> >>
> >> WDYT?
> >
> >I agree.
> >
> >>
> >> >+	install -m 744 vsock_test $(INSTALL_PATH)/vsock/
> >> >+	install -m 744 vsock_perf $(INSTALL_PATH)/vsock/
> >> >+	install -m 744 vsock_diag_test $(INSTALL_PATH)/vsock/
> >> >+	install -m 744 vsock_uring_test $(INSTALL_PATH)/vsock/
> >>
> >> Also from selftests/Makefile, what about using the ifdef instead of
> >> using $(abspath .) as default place?
> >>
> >> I mean this:
> >>
> >> install: all
> >> ifdef INSTALL_PATH
> >>    ...
> >> else
> >> 	$(error Error: set INSTALL_PATH to use install) endif
> >
> >Is the following looks good to you?
> >
> ># Avoid conflict with INSTALL_PATH set by the main Makefile
> >VSOCK_INSTALL_PATH ?= INSTALL_PATH := $(VSOCK_INSTALL_PATH)
> 
> I'm not a super Makefile expert, but why do we need both
> VSOCK_INSTALL_PATH and INSTALL_PATH?

INSTALL_PATH is exported by kernel root directory makefile.
So to user, we need to avoid export INSTALL_PATH here.
So I just follow selftests/Makefile using KSFT_INSTALL_PATH

Regards,
Peng.

> 
> Stefano
> 
> >
> >install: all
> >ifdef INSTALL_PATH
> >        mkdir -p $(INSTALL_PATH)
> >        install -m 744 vsock_test $(INSTALL_PATH)
> >        install -m 744 vsock_perf $(INSTALL_PATH)
> >        install -m 744 vsock_diag_test $(INSTALL_PATH)
> >        install -m 744 vsock_uring_test $(INSTALL_PATH) else
> >        $(error Error: set INSTALL_PATH to use install) Endif
> >
> >Thanks,
> >Peng.
> >>
> >> Thanks,
> >> Stefano
> >
Stefano Garzarella July 10, 2024, 11:58 a.m. UTC | #5
On Wed, Jul 10, 2024 at 11:34:05AM GMT, Peng Fan wrote:
>> Subject: Re: [PATCH] test/vsock: add install target
>>
>> On Wed, Jul 10, 2024 at 08:11:32AM GMT, Peng Fan wrote:
>> >> Subject: Re: [PATCH] test/vsock: add install target
>> >>
>> >> On Tue, Jul 09, 2024 at 09:50:51PM GMT, Peng Fan (OSS) wrote:
>> >> >From: Peng Fan <peng.fan@nxp.com>
>> >> >
>> >> >Add install target for vsock to make Yocto easy to install the
>> images.
>> >> >
>> >> >Signed-off-by: Peng Fan <peng.fan@nxp.com>
>> >> >---
>> >> > tools/testing/vsock/Makefile | 12 ++++++++++++
>> >> > 1 file changed, 12 insertions(+)
>> >> >
>> >> >diff --git a/tools/testing/vsock/Makefile
>> >> >b/tools/testing/vsock/Makefile index a7f56a09ca9f..5c8442fa9460
>> >> 100644
>> >> >--- a/tools/testing/vsock/Makefile
>> >> >+++ b/tools/testing/vsock/Makefile
>> >> >@@ -8,8 +8,20 @@ vsock_perf: vsock_perf.o
>> >> msg_zerocopy_common.o
>> >> > vsock_uring_test: LDLIBS = -luring
>> >> > vsock_uring_test: control.o util.o vsock_uring_test.o timeout.o
>> >> >msg_zerocopy_common.o
>> >> >
>> >> >+VSOCK_INSTALL_PATH ?= $(abspath .)
>> >> >+# Avoid changing the rest of the logic here and lib.mk.
>> >> >+INSTALL_PATH := $(VSOCK_INSTALL_PATH)
>> >> >+
>> >> > CFLAGS += -g -O2 -Werror -Wall -I. -I../../include
>> >> > -I../../../usr/include -Wno-pointer-sign -fno-strict-overflow
>> >> > -fno-strict-aliasing -fno-common -MMD -U_FORTIFY_SOURCE -
>> >> D_GNU_SOURCE
>> >> > .PHONY: all test clean
>> >> > clean:
>> >> > 	${RM} *.o *.d vsock_test vsock_diag_test vsock_perf
>> >> vsock_uring_test
>> >> > -include *.d
>> >> >+
>> >> >+install: all
>> >> >+	@# Ask all targets to install their files
>> >> >+	mkdir -p $(INSTALL_PATH)/vsock
>> >>
>> >> why using the "vsock" subdir?
>> >>
>> >> IIUC you were inspired by selftests/Makefile, but it installs under
>> >> $(INSTALL_PATH)/kselftest/ the scripts used by the main one
>> >> `run_kselftest.sh`, which is installed in $(INSTALL_PATH instead.
>> >> So in this case I would install everything in $(INSTALL_PATH).
>> >>
>> >> WDYT?
>> >
>> >I agree.
>> >
>> >>
>> >> >+	install -m 744 vsock_test $(INSTALL_PATH)/vsock/
>> >> >+	install -m 744 vsock_perf $(INSTALL_PATH)/vsock/
>> >> >+	install -m 744 vsock_diag_test $(INSTALL_PATH)/vsock/
>> >> >+	install -m 744 vsock_uring_test $(INSTALL_PATH)/vsock/
>> >>
>> >> Also from selftests/Makefile, what about using the ifdef instead of
>> >> using $(abspath .) as default place?
>> >>
>> >> I mean this:
>> >>
>> >> install: all
>> >> ifdef INSTALL_PATH
>> >>    ...
>> >> else
>> >> 	$(error Error: set INSTALL_PATH to use install) endif
>> >
>> >Is the following looks good to you?
>> >
>> ># Avoid conflict with INSTALL_PATH set by the main Makefile
>> >VSOCK_INSTALL_PATH ?= INSTALL_PATH := $(VSOCK_INSTALL_PATH)
>>
>> I'm not a super Makefile expert, but why do we need both
>> VSOCK_INSTALL_PATH and INSTALL_PATH?
>
>INSTALL_PATH is exported by kernel root directory makefile.
>So to user, we need to avoid export INSTALL_PATH here.
>So I just follow selftests/Makefile using KSFT_INSTALL_PATH

There is a comment there:

     # Avoid changing the rest of the logic here and lib.mk.

Added by commit 17eac6c2db8b2cdfe33d40229bdda2acd86b304a.

IIUC they re-used INSTALL_PATH, just to avoid too many changes in that 
file and in tools/testing/selftests/lib.mk

So, IMHO we should not care about it and only use VSOCK_INSTALL_PATH if 
you don't want to conflict with INSTALL_PATH.

Stefano
Jakub Kicinski July 11, 2024, 2 a.m. UTC | #6
On Wed, 10 Jul 2024 13:58:39 +0200 Stefano Garzarella wrote:
> There is a comment there:
> 
>      # Avoid changing the rest of the logic here and lib.mk.
> 
> Added by commit 17eac6c2db8b2cdfe33d40229bdda2acd86b304a.
> 
> IIUC they re-used INSTALL_PATH, just to avoid too many changes in that 
> file and in tools/testing/selftests/lib.mk
> 
> So, IMHO we should not care about it and only use VSOCK_INSTALL_PATH if 
> you don't want to conflict with INSTALL_PATH.

Any reason why vsock isn't part of selftests in the first place?
Stefano Garzarella July 11, 2024, 7:07 a.m. UTC | #7
CCing Stefan.

On Wed, Jul 10, 2024 at 07:00:59PM GMT, Jakub Kicinski wrote:
>On Wed, 10 Jul 2024 13:58:39 +0200 Stefano Garzarella wrote:
>> There is a comment there:
>>
>>      # Avoid changing the rest of the logic here and lib.mk.
>>
>> Added by commit 17eac6c2db8b2cdfe33d40229bdda2acd86b304a.
>>
>> IIUC they re-used INSTALL_PATH, just to avoid too many changes in that
>> file and in tools/testing/selftests/lib.mk
>>
>> So, IMHO we should not care about it and only use VSOCK_INSTALL_PATH if
>> you don't want to conflict with INSTALL_PATH.
>
>Any reason why vsock isn't part of selftests in the first place?
>

Usually vsock tests test both the driver (virtio-vsock) in the guest and 
the device in the host kernel (vhost-vsock). So I usually run the tests 
in 2 nested VMs to test the latest changes for both the guest and the 
host.

I don't know enough selftests, but do you think it is possible to 
integrate them?

CCing Stefan who is the original author and may remember more reasons 
about this choice.

Thanks,
Stefano
Stefan Hajnoczi July 11, 2024, 1:38 p.m. UTC | #8
On Thu, Jul 11, 2024 at 09:07:04AM +0200, Stefano Garzarella wrote:
> CCing Stefan.
> 
> On Wed, Jul 10, 2024 at 07:00:59PM GMT, Jakub Kicinski wrote:
> > On Wed, 10 Jul 2024 13:58:39 +0200 Stefano Garzarella wrote:
> > > There is a comment there:
> > > 
> > >      # Avoid changing the rest of the logic here and lib.mk.
> > > 
> > > Added by commit 17eac6c2db8b2cdfe33d40229bdda2acd86b304a.
> > > 
> > > IIUC they re-used INSTALL_PATH, just to avoid too many changes in that
> > > file and in tools/testing/selftests/lib.mk
> > > 
> > > So, IMHO we should not care about it and only use VSOCK_INSTALL_PATH if
> > > you don't want to conflict with INSTALL_PATH.
> > 
> > Any reason why vsock isn't part of selftests in the first place?
> > 
> 
> Usually vsock tests test both the driver (virtio-vsock) in the guest and the
> device in the host kernel (vhost-vsock). So I usually run the tests in 2
> nested VMs to test the latest changes for both the guest and the host.
> 
> I don't know enough selftests, but do you think it is possible to integrate
> them?
> 
> CCing Stefan who is the original author and may remember more reasons about
> this choice.

It's probably because of the manual steps in tools/testing/vsock/README:

  The following prerequisite steps are not automated and must be performed prior
  to running tests:

  1. Build the kernel, make headers_install, and build these tests.
  2. Install the kernel and tests on the host.
  3. Install the kernel and tests inside the guest.
  4. Boot the guest and ensure that the AF_VSOCK transport is enabled.

If you want to automate this for QEMU, VMware, and Hyper-V that would be
great. It relies on having a guest running under these hypervisors and
that's not trivial to automate (plus it involves proprietary software
for VMware and Hyper-V that may not be available without additional
license agreements and/or payment).

Stefan
Jakub Kicinski July 11, 2024, 2:14 p.m. UTC | #9
On Thu, 11 Jul 2024 15:38:01 +0200 Stefan Hajnoczi wrote:
> > Usually vsock tests test both the driver (virtio-vsock) in the guest and the
> > device in the host kernel (vhost-vsock). So I usually run the tests in 2
> > nested VMs to test the latest changes for both the guest and the host.
> > 
> > I don't know enough selftests, but do you think it is possible to integrate
> > them?
> > 
> > CCing Stefan who is the original author and may remember more reasons about
> > this choice.  
> 
> It's probably because of the manual steps in tools/testing/vsock/README:
> 
>   The following prerequisite steps are not automated and must be performed prior
>   to running tests:
> 
>   1. Build the kernel, make headers_install, and build these tests.
>   2. Install the kernel and tests on the host.
>   3. Install the kernel and tests inside the guest.
>   4. Boot the guest and ensure that the AF_VSOCK transport is enabled.
> 
> If you want to automate this for QEMU, VMware, and Hyper-V that would be
> great. It relies on having a guest running under these hypervisors and
> that's not trivial to automate (plus it involves proprietary software
> for VMware and Hyper-V that may not be available without additional
> license agreements and/or payment).

Not sure if there's a requirement that full process is automated.
Or at least if there is we are already breaking it in networking
because for some tests we need user to export some env variables
to point the test to the right interfaces and even a remote machine 
to generate traffic. If the env isn't set up tests return 4 (SKIP).
I don't feel strongly that ksft + env approach is better but at
least it gives us easy access to the basic build and packaging
features from ksft. Up to you but thought I'd ask.
Stefano Garzarella July 12, 2024, 8:53 a.m. UTC | #10
On Thu, Jul 11, 2024 at 07:14:55AM GMT, Jakub Kicinski wrote:
>On Thu, 11 Jul 2024 15:38:01 +0200 Stefan Hajnoczi wrote:
>> > Usually vsock tests test both the driver (virtio-vsock) in the guest and the
>> > device in the host kernel (vhost-vsock). So I usually run the tests in 2
>> > nested VMs to test the latest changes for both the guest and the host.
>> >
>> > I don't know enough selftests, but do you think it is possible to integrate
>> > them?
>> >
>> > CCing Stefan who is the original author and may remember more reasons about
>> > this choice.
>>
>> It's probably because of the manual steps in tools/testing/vsock/README:
>>
>>   The following prerequisite steps are not automated and must be performed prior
>>   to running tests:
>>
>>   1. Build the kernel, make headers_install, and build these tests.
>>   2. Install the kernel and tests on the host.
>>   3. Install the kernel and tests inside the guest.
>>   4. Boot the guest and ensure that the AF_VSOCK transport is enabled.
>>
>> If you want to automate this for QEMU, VMware, and Hyper-V that would be
>> great. It relies on having a guest running under these hypervisors and
>> that's not trivial to automate (plus it involves proprietary software
>> for VMware and Hyper-V that may not be available without additional
>> license agreements and/or payment).
>
>Not sure if there's a requirement that full process is automated.
>Or at least if there is we are already breaking it in networking
>because for some tests we need user to export some env variables
>to point the test to the right interfaces and even a remote machine
>to generate traffic. If the env isn't set up tests return 4 (SKIP).
>I don't feel strongly that ksft + env approach is better but at
>least it gives us easy access to the basic build and packaging
>features from ksft. Up to you but thought I'd ask.
>

Yeah, I'll try to allocate some cycles to look into that. Tracking it 
here: https://gitlab.com/vsock/vsock/-/issues/13

What about this patch, can we queue it for now?

Thanks,
Stefano
diff mbox series

Patch

diff --git a/tools/testing/vsock/Makefile b/tools/testing/vsock/Makefile
index a7f56a09ca9f..5c8442fa9460 100644
--- a/tools/testing/vsock/Makefile
+++ b/tools/testing/vsock/Makefile
@@ -8,8 +8,20 @@  vsock_perf: vsock_perf.o msg_zerocopy_common.o
 vsock_uring_test: LDLIBS = -luring
 vsock_uring_test: control.o util.o vsock_uring_test.o timeout.o msg_zerocopy_common.o
 
+VSOCK_INSTALL_PATH ?= $(abspath .)
+# Avoid changing the rest of the logic here and lib.mk.
+INSTALL_PATH := $(VSOCK_INSTALL_PATH)
+
 CFLAGS += -g -O2 -Werror -Wall -I. -I../../include -I../../../usr/include -Wno-pointer-sign -fno-strict-overflow -fno-strict-aliasing -fno-common -MMD -U_FORTIFY_SOURCE -D_GNU_SOURCE
 .PHONY: all test clean
 clean:
 	${RM} *.o *.d vsock_test vsock_diag_test vsock_perf vsock_uring_test
 -include *.d
+
+install: all
+	@# Ask all targets to install their files
+	mkdir -p $(INSTALL_PATH)/vsock
+	install -m 744 vsock_test $(INSTALL_PATH)/vsock/
+	install -m 744 vsock_perf $(INSTALL_PATH)/vsock/
+	install -m 744 vsock_diag_test $(INSTALL_PATH)/vsock/
+	install -m 744 vsock_uring_test $(INSTALL_PATH)/vsock/