pespin has uploaded this change for review.
Revert "osmo_io: Add unit test to verify segmentation process"
This reverts commit 086ee51de416ae5276b4b185c055831e16c0ef85.
This commit makes "LIBOSMO_IO_BACKEND=IO_URING libosmocore/tests/osmo_io/osmo_io_test"
end up running in an infinite loop using 100% CPU on my system:
kernel: 6.17.6-arch1-1
liburing: 2.12-1
Change-Id: I47b5fff04c601cd08ab2d46b88336247b2193808
---
M tests/osmo_io/osmo_io_test.c
M tests/osmo_io/osmo_io_test.ok
2 files changed, 0 insertions(+), 126 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/97/41297/1
diff --git a/tests/osmo_io/osmo_io_test.c b/tests/osmo_io/osmo_io_test.c
index d3e22aa..553368c 100644
--- a/tests/osmo_io/osmo_io_test.c
+++ b/tests/osmo_io/osmo_io_test.c
@@ -247,112 +247,6 @@
for (int i = 0; i < 128; i++)
osmo_select_main(1);
}
-
-int segmentation_cb(struct osmo_io_fd *iofd, struct msgb *msg)
-{
- printf("%s: segmentation_cb() returning %d\n", osmo_iofd_get_name(iofd), 4);
- return 4;
-}
-
-static void segment_read_cb(struct osmo_io_fd *iofd, int rc, struct msgb *msg)
-{
- static int seg_number = 0;
-
- printf("%s: read() msg with rc=%d\n", osmo_iofd_get_name(iofd), rc);
- if (rc < 0) {
- printf("%s: error: %s\n", osmo_iofd_get_name(iofd), strerror(-rc));
- OSMO_ASSERT(0);
- }
- OSMO_ASSERT(msg);
- if (seg_number < 3) {
- printf("%s\n", osmo_hexdump(msgb_data(msg), msgb_length(msg)));
- printf("tailroom = %d\n", msgb_tailroom(msg));
- /* Our read buffer is 6 bytes, Our segment is 4 bytes, this results in tailroom of 2 bytes.
- * When the pending 2 bytes are combined with subsequent read of 6 bytes, an extra buffer
- * with 8 bytes is allocated. Our segment is 4 byte, then this results in a tailroom of 4
- * bytes. */
- if (seg_number == 1)
- OSMO_ASSERT(msgb_tailroom(msg) == 4)
- else
- OSMO_ASSERT(msgb_tailroom(msg) == 2)
- OSMO_ASSERT(msgb_length(msg) == sizeof(TESTDATA) / 4);
- seg_number++;
- } else {
- OSMO_ASSERT(rc == 0);
- file_eof_read = true;
- }
- talloc_free(msg);
-}
-
-static void test_segmentation(void)
-{
- struct osmo_io_fd *iofd;
- struct msgb *msg;
- uint8_t *buf;
- int fd[2] = { 0, 0 };
- int rc;
- struct osmo_io_ops ioops;
-
- TEST_START();
-
- /* Create pipe */
- rc = pipe(fd);
- OSMO_ASSERT(rc == 0);
- OSMO_ASSERT(fd[0]);
- OSMO_ASSERT(fd[1]);
-
- /* First test writing to the pipe: */
- printf("Enable write\n");
- ioops = (struct osmo_io_ops){ .write_cb = file_write_cb };
- iofd = osmo_iofd_setup(ctx, fd[1], "seg_iofd", OSMO_IO_FD_MODE_READ_WRITE, &ioops, NULL);
- osmo_iofd_register(iofd, fd[1]);
-
- msg = msgb_alloc(12, "Test data");
- buf = msgb_put(msg, 12);
- memcpy(buf, TESTDATA, 12);
- osmo_iofd_write_msgb(iofd, msg);
- /* Allow enough cycles to handle the messages */
- file_bytes_write_compl = 0;
- for (int i = 0; i < 128; i++) {
- OSMO_ASSERT(file_bytes_write_compl <= 12);
- if (file_bytes_write_compl == 12)
- break;
- osmo_select_main(1);
- usleep(100 * 1000);
- }
- fflush(stdout);
- OSMO_ASSERT(file_bytes_write_compl == 12);
-
- osmo_iofd_unregister(iofd);
- close(fd[1]);
-
- /* Now, re-configure iofd to only read from the pipe.
- * Reduce the read buffer size, to verify correct segmentation operation: */
- printf("Enable read\n");
- osmo_iofd_set_alloc_info(iofd, 6, 0);
- osmo_iofd_register(iofd, fd[0]);
- ioops = (struct osmo_io_ops){ .read_cb = segment_read_cb, .segmentation_cb2 = segmentation_cb };
- rc = osmo_iofd_set_ioops(iofd, &ioops);
- OSMO_ASSERT(rc == 0);
- /* Allow enough cycles to handle the message. We expect 3 reads, 4th read will return 0. */
- file_bytes_read = 0;
- file_eof_read = false;
- for (int i = 0; i < 128; i++) {
- if (file_eof_read)
- break;
- osmo_select_main(1);
- usleep(100 * 1000);
- }
- fflush(stdout);
- OSMO_ASSERT(file_eof_read);
-
- osmo_iofd_free(iofd);
-
- for (int i = 0; i < 128; i++)
- osmo_select_main(1);
-}
-
-
static const struct log_info_cat default_categories[] = {
};
@@ -373,7 +267,6 @@
test_file();
test_connected();
test_unconnected();
- test_segmentation();
return EXIT_SUCCESS;
}
diff --git a/tests/osmo_io/osmo_io_test.ok b/tests/osmo_io/osmo_io_test.ok
index b24bfd2..6b9e591 100644
--- a/tests/osmo_io/osmo_io_test.ok
+++ b/tests/osmo_io/osmo_io_test.ok
@@ -16,22 +16,3 @@
ep1: sendto() returned rc=16
ep2: recvfrom() msg with len=16
01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10
-Running test_segmentation
-Enable write
-seg_iofd: write() returned rc=12
-01 02 03 04 05 06 07 08 09 0a 0b 0c
-Enable read
-seg_iofd: segmentation_cb() returning 4
-seg_iofd: read() msg with rc=6
-01 02 03 04
-tailroom = 2
-seg_iofd: segmentation_cb() returning 4
-seg_iofd: segmentation_cb() returning 4
-seg_iofd: read() msg with rc=6
-05 06 07 08
-tailroom = 4
-seg_iofd: segmentation_cb() returning 4
-seg_iofd: read() msg with rc=6
-09 0a 0b 0c
-tailroom = 2
-seg_iofd: read() msg with rc=0
To view, visit change 41297. To unsubscribe, or for help writing mail filters, visit settings.