diff mbox series

[v1] Add epoll_create1_03 test

Message ID 20221007083406.16036-1-andrea.cervesato@suse.com
State Rejected
Headers show
Series [v1] Add epoll_create1_03 test | expand

Commit Message

Andrea Cervesato Oct. 7, 2022, 8:34 a.m. UTC
The test verifies epoll_create1 will raises EMFILE when
/proc/sys/fs/epoll/max_user_watches is reached.

Signed-off-by: Andrea Cervesato <andrea.cervesato@suse.com>
---
 .../syscalls/epoll_create1/epoll_create1_03.c | 34 +++++++++++++++++++
 1 file changed, 34 insertions(+)
 create mode 100644 testcases/kernel/syscalls/epoll_create1/epoll_create1_03.c

Comments

Avinesh Kumar Oct. 10, 2022, 6:23 a.m. UTC | #1
Hi Andrea,

On Friday, October 7, 2022 2:04:06 PM IST Andrea Cervesato via ltp wrote:
> The test verifies epoll_create1 will raises EMFILE when
> /proc/sys/fs/epoll/max_user_watches is reached.
> 
> Signed-off-by: Andrea Cervesato <andrea.cervesato@suse.com>
> ---
>  .../syscalls/epoll_create1/epoll_create1_03.c | 34 +++++++++++++++++++
>  1 file changed, 34 insertions(+)
>  create mode 100644 testcases/kernel/syscalls/epoll_create1/epoll_create1_03.c
> 
> diff --git a/testcases/kernel/syscalls/epoll_create1/epoll_create1_03.c b/testcases/kernel/syscalls/epoll_create1/epoll_create1_03.c
> new file mode 100644
> index 000000000..7f51edf7a
> --- /dev/null
> +++ b/testcases/kernel/syscalls/epoll_create1/epoll_create1_03.c
> @@ -0,0 +1,34 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later
> +/*
> + * Copyright (C) 2022 SUSE LLC Andrea Cervesato <andrea.cervesato@suse.com>
> + */
> +
> +/*\
> + * [Description]
> + *
> + * Verify that epoll_create1 returns -1 and set errno to EMFILE when maximum
> + * number of epoll watchers is reached.
> + */
> +
> +#include <sys/epoll.h>
> +
> +#include "tst_test.h"
> +#include "lapi/epoll.h"
> +#include "lapi/syscalls.h"
> +
> +static void run(void)
> +{
> +	int i, max_inst;
> +
> +	SAFE_FILE_LINES_SCANF("/proc/sys/fs/epoll/max_user_watches", "%d", &max_inst);
> +
> +	for (i = 0; i < max_inst; i++)
> +		TST_EXP_PASS_SILENT(epoll_create1(0) == 0);
I don't think this is correct,
epoll_create1(0) will return a file descriptor (a nonnegative integer).
And IIUC, TST_EXP_PASS* macros take a function call only and not a compare statement.

> +
> +	TST_EXP_FAIL(epoll_create1(0), EMFILE);
> +}
> +
> +static struct tst_test test = {
> +	.min_kver = "2.6.27",
> +	.test_all = run,
> +};
> 
Also,
Test reports TBROK if run for more than one iteration -
$ ./epoll_create1_03 -i2
tst_test.c:1526: TINFO: Timeout per run is 0h 00m 30s
epoll_create1_03.c:28: TPASS: epoll_create1(0) : EMFILE (24)
epoll_create1_03.c:23: TBROK: Failed to open FILE '/proc/sys/fs/epoll/max_user_watches' for reading: EMFILE (24)


Kind Regards,
Avinesh
Andrea Cervesato Oct. 10, 2022, 7:09 a.m. UTC | #2
Hi Avinesh,

as I mentioned in the previous message, this patch has to be ignored.

Andrea

On 10/10/22 08:23, Avinesh Kumar wrote:
> Hi Andrea,
>
> On Friday, October 7, 2022 2:04:06 PM IST Andrea Cervesato via ltp wrote:
>> The test verifies epoll_create1 will raises EMFILE when
>> /proc/sys/fs/epoll/max_user_watches is reached.
>>
>> Signed-off-by: Andrea Cervesato <andrea.cervesato@suse.com>
>> ---
>>   .../syscalls/epoll_create1/epoll_create1_03.c | 34 +++++++++++++++++++
>>   1 file changed, 34 insertions(+)
>>   create mode 100644 testcases/kernel/syscalls/epoll_create1/epoll_create1_03.c
>>
>> diff --git a/testcases/kernel/syscalls/epoll_create1/epoll_create1_03.c b/testcases/kernel/syscalls/epoll_create1/epoll_create1_03.c
>> new file mode 100644
>> index 000000000..7f51edf7a
>> --- /dev/null
>> +++ b/testcases/kernel/syscalls/epoll_create1/epoll_create1_03.c
>> @@ -0,0 +1,34 @@
>> +// SPDX-License-Identifier: GPL-2.0-or-later
>> +/*
>> + * Copyright (C) 2022 SUSE LLC Andrea Cervesato <andrea.cervesato@suse.com>
>> + */
>> +
>> +/*\
>> + * [Description]
>> + *
>> + * Verify that epoll_create1 returns -1 and set errno to EMFILE when maximum
>> + * number of epoll watchers is reached.
>> + */
>> +
>> +#include <sys/epoll.h>
>> +
>> +#include "tst_test.h"
>> +#include "lapi/epoll.h"
>> +#include "lapi/syscalls.h"
>> +
>> +static void run(void)
>> +{
>> +	int i, max_inst;
>> +
>> +	SAFE_FILE_LINES_SCANF("/proc/sys/fs/epoll/max_user_watches", "%d", &max_inst);
>> +
>> +	for (i = 0; i < max_inst; i++)
>> +		TST_EXP_PASS_SILENT(epoll_create1(0) == 0);
> I don't think this is correct,
> epoll_create1(0) will return a file descriptor (a nonnegative integer).
> And IIUC, TST_EXP_PASS* macros take a function call only and not a compare statement.
>
>> +
>> +	TST_EXP_FAIL(epoll_create1(0), EMFILE);
>> +}
>> +
>> +static struct tst_test test = {
>> +	.min_kver = "2.6.27",
>> +	.test_all = run,
>> +};
>>
> Also,
> Test reports TBROK if run for more than one iteration -
> $ ./epoll_create1_03 -i2
> tst_test.c:1526: TINFO: Timeout per run is 0h 00m 30s
> epoll_create1_03.c:28: TPASS: epoll_create1(0) : EMFILE (24)
> epoll_create1_03.c:23: TBROK: Failed to open FILE '/proc/sys/fs/epoll/max_user_watches' for reading: EMFILE (24)
>
>
> Kind Regards,
> Avinesh
>
>
>
>
diff mbox series

Patch

diff --git a/testcases/kernel/syscalls/epoll_create1/epoll_create1_03.c b/testcases/kernel/syscalls/epoll_create1/epoll_create1_03.c
new file mode 100644
index 000000000..7f51edf7a
--- /dev/null
+++ b/testcases/kernel/syscalls/epoll_create1/epoll_create1_03.c
@@ -0,0 +1,34 @@ 
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright (C) 2022 SUSE LLC Andrea Cervesato <andrea.cervesato@suse.com>
+ */
+
+/*\
+ * [Description]
+ *
+ * Verify that epoll_create1 returns -1 and set errno to EMFILE when maximum
+ * number of epoll watchers is reached.
+ */
+
+#include <sys/epoll.h>
+
+#include "tst_test.h"
+#include "lapi/epoll.h"
+#include "lapi/syscalls.h"
+
+static void run(void)
+{
+	int i, max_inst;
+
+	SAFE_FILE_LINES_SCANF("/proc/sys/fs/epoll/max_user_watches", "%d", &max_inst);
+
+	for (i = 0; i < max_inst; i++)
+		TST_EXP_PASS_SILENT(epoll_create1(0) == 0);
+
+	TST_EXP_FAIL(epoll_create1(0), EMFILE);
+}
+
+static struct tst_test test = {
+	.min_kver = "2.6.27",
+	.test_all = run,
+};