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
