From: Gang Yan <[email protected]>

When running TLS tests in a virtual machine/container environment, they
fail in test_mutliproc():

 # tls.c:1479:mutliproc_even: Expected fd (-1) >= 0 (0)
 # mutliproc_even: Test terminated by assertion
 #          FAIL  tls.12_aes_gcm.mutliproc_even
 not ok 59 tls.12_aes_gcm.mutliproc_even
 #  RUN           tls.12_aes_gcm.mutliproc_readers ...
 # tls.c:1479:mutliproc_readers: Expected fd (-1) >= 0 (0)
 # mutliproc_readers: Test terminated by assertion
 #          FAIL  tls.12_aes_gcm.mutliproc_readers
 not ok 60 tls.12_aes_gcm.mutliproc_readers
 #  RUN           tls.12_aes_gcm.mutliproc_writers ...
 # tls.c:1479:mutliproc_writers: Expected fd (-1) >= 0 (0)
 # mutliproc_writers: Test terminated by assertion
 #          FAIL  tls.12_aes_gcm.mutliproc_writers
 not ok 61 tls.12_aes_gcm.mutliproc_writers

This is because the /tmp directory uses the virtiofs filesystem, which does
not support the O_TMPFILE feature.

This patch uses mkstemp() to create temporary files, just like the approach
used in chunked_sendfile(), thereby eliminating the dependency on the
O_TMPFILE feature.

For better code reuse, factor out this code from chunked_sendfile() into a
separate helper create_temp_file(). Use this new heler in test_mutliproc()
and closes the file descriptor (fd) after the test ends.

Co-developed-by: Geliang Tang <[email protected]>
Signed-off-by: Geliang Tang <[email protected]>
Signed-off-by: Gang Yan <[email protected]>
---
v2:
 - factor out a new helper, use it in both chunked_sendfile() and
   test_mutliproc().
---
 tools/testing/selftests/net/tls.c | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/tools/testing/selftests/net/tls.c 
b/tools/testing/selftests/net/tls.c
index 9e2ccea13d70..2eaacb7f2e56 100644
--- a/tools/testing/selftests/net/tls.c
+++ b/tools/testing/selftests/net/tls.c
@@ -467,6 +467,15 @@ TEST_F(tls, send_then_sendfile)
        close(filefd);
 }
 
+static int create_temp_file(void)
+{
+       char filename[] = "/tmp/mytemp.XXXXXX";
+       int fd = mkstemp(filename);
+
+       unlink(filename);
+       return fd;
+}
+
 static void chunked_sendfile(struct __test_metadata *_metadata,
                             struct _test_data_tls *self,
                             uint16_t chunk_size,
@@ -476,11 +485,9 @@ static void chunked_sendfile(struct __test_metadata 
*_metadata,
        uint16_t test_payload_size;
        int size = 0;
        int ret;
-       char filename[] = "/tmp/mytemp.XXXXXX";
-       int fd = mkstemp(filename);
+       int fd = create_temp_file();
        off_t offset = 0;
 
-       unlink(filename);
        ASSERT_GE(fd, 0);
        EXPECT_GE(chunk_size, 1);
        test_payload_size = chunk_size + extra_payload_size;
@@ -1469,7 +1476,7 @@ test_mutliproc(struct __test_metadata *_metadata, struct 
_test_data_tls *self,
        write_bias = n_readers / n_writers ?: 1;
 
        /* prep a file to send */
-       fd = open("/tmp/", O_TMPFILE | O_RDWR, 0600);
+       fd = create_temp_file();
        ASSERT_GE(fd, 0);
 
        memset(buf, 0xac, file_sz);
@@ -1527,6 +1534,7 @@ test_mutliproc(struct __test_metadata *_metadata, struct 
_test_data_tls *self,
                        left -= res;
                }
        }
+       close(fd);
 }
 
 TEST_F(tls, mutliproc_even)
-- 
2.51.0


Reply via email to