Add new --transport parameter to skip some tests or checks
not supported by a specific transport.

Suggested-by: Jorgen Hansen <jhan...@vmware.com>
Signed-off-by: Stefano Garzarella <sgarz...@redhat.com>
---
 tools/testing/vsock/util.h       |  8 ++++++++
 tools/testing/vsock/vsock_test.c | 20 +++++++++++++++++++-
 2 files changed, 27 insertions(+), 1 deletion(-)

diff --git a/tools/testing/vsock/util.h b/tools/testing/vsock/util.h
index 379e02ab59bb..7fdb8100f035 100644
--- a/tools/testing/vsock/util.h
+++ b/tools/testing/vsock/util.h
@@ -12,9 +12,17 @@ enum test_mode {
        TEST_MODE_SERVER
 };
 
+enum test_transport {
+       TEST_TRANSPORT_UNSET,
+       TEST_TRANSPORT_VMCI,
+       TEST_TRANSPORT_VIRTIO,
+       TEST_TRANSPORT_HYPERV
+};
+
 /* Test runner options */
 struct test_opts {
        enum test_mode mode;
+       enum test_transport transport;
        unsigned int peer_cid;
 };
 
diff --git a/tools/testing/vsock/vsock_test.c b/tools/testing/vsock/vsock_test.c
index 06099d037405..cb606091489f 100644
--- a/tools/testing/vsock/vsock_test.c
+++ b/tools/testing/vsock/vsock_test.c
@@ -218,6 +218,11 @@ static const struct option longopts[] = {
                .has_arg = required_argument,
                .val = 'p',
        },
+       {
+               .name = "transport",
+               .has_arg = required_argument,
+               .val = 't',
+       },
        {
                .name = "help",
                .has_arg = no_argument,
@@ -228,7 +233,7 @@ static const struct option longopts[] = {
 
 static void usage(void)
 {
-       fprintf(stderr, "Usage: vsock_test [--help] [--control-host=<host>] 
--control-port=<port> --mode=client|server --peer-cid=<cid>\n"
+       fprintf(stderr, "Usage: vsock_test [--help] [--control-host=<host>] 
--control-port=<port> --mode=client|server --peer-cid=<cid> 
[--transport=vmci|virtio|hyperv]\n"
                "\n"
                "  Server: vsock_test --control-port=1234 --mode=server 
--peer-cid=3\n"
                "  Client: vsock_test --control-host=192.168.0.1 
--control-port=1234 --mode=client --peer-cid=2\n"
@@ -252,6 +257,7 @@ int main(int argc, char **argv)
        const char *control_port = NULL;
        struct test_opts opts = {
                .mode = TEST_MODE_UNSET,
+               .transport = TEST_TRANSPORT_UNSET,
                .peer_cid = VMADDR_CID_ANY,
        };
 
@@ -283,6 +289,18 @@ int main(int argc, char **argv)
                case 'P':
                        control_port = optarg;
                        break;
+               case 't':
+                       if (strcmp(optarg, "vmci") == 0)
+                               opts.transport = TEST_TRANSPORT_VMCI;
+                       else if (strcmp(optarg, "virtio") == 0)
+                               opts.transport = TEST_TRANSPORT_VIRTIO;
+                       else if (strcmp(optarg, "hyperv") == 0)
+                               opts.transport = TEST_TRANSPORT_HYPERV;
+                       else {
+                               fprintf(stderr, "--transport must be \"vmci\" 
or \"virtio\" or \"hyperv\"\n");
+                               return EXIT_FAILURE;
+                       }
+                       break;
                case '?':
                default:
                        usage();
-- 
2.20.1

Reply via email to