Lines Matching +full:test2 +full:. +full:zeros

2  * Copyright (c) 2003-2007 Niels Provos <provos@citi.umich.edu>
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
12 * documentation and/or other materials provided with the distribution.
13 * 3. The name of the author may not be used to endorse or promote products
14 * derived from this software without specific prior written permission.
18 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
25 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 #include "util-internal.h"
30 #include <winsock2.h>
31 #include <windows.h>
34 #include "event2/event-config.h"
36 #include <sys/types.h>
37 #include <sys/stat.h>
39 #include <sys/time.h>
41 #include <sys/queue.h>
43 #include <sys/socket.h>
44 #include <sys/wait.h>
45 #include <signal.h>
46 #include <unistd.h>
47 #include <netdb.h>
49 #include <stdlib.h>
50 #include <stdio.h>
51 #include <string.h>
52 #include <errno.h>
53 #include <assert.h>
55 #include "event2/event.h"
56 #include "event2/buffer.h"
57 #include "event2/buffer_compat.h"
58 #include "event2/util.h"
60 #include "defer-internal.h"
61 #include "evbuffer-internal.h"
62 #include "log-internal.h"
64 #include "regress.h"
66 /* Validates that an evbuffer is good. Returns false if it isn't, true if it
138 /* first nonempty chain: stuff at the end only is wasted. */ in evbuffer_get_waste()
264 tt_assert(v[0].iov_len >= 10000); in test_evbuffer()
265 tt_assert(v[0].iov_base != NULL); in test_evbuffer()
268 buf = v[0].iov_base; in test_evbuffer()
471 /* Test the two-vector cases of reserve/commit. */ in test_evbuffer_reserve2()
478 /* First chunk will necessarily be one chunk. Use 512 bytes of it.*/ in test_evbuffer_reserve2()
482 tt_assert(v[0].iov_base != NULL); in test_evbuffer_reserve2()
483 tt_int_op(v[0].iov_len, >=, 1024); in test_evbuffer_reserve2()
484 memset(v[0].iov_base, 'X', 512); in test_evbuffer_reserve2()
485 cp = v[0].iov_base; in test_evbuffer_reserve2()
486 remaining = v[0].iov_len - 512; in test_evbuffer_reserve2()
487 v[0].iov_len = 512; in test_evbuffer_reserve2()
493 /* Ask for another same-chunk request, in an existing chunk. Use 8 in test_evbuffer_reserve2()
494 * bytes of it. */ in test_evbuffer_reserve2()
497 tt_assert(cp + 512 == v[0].iov_base); in test_evbuffer_reserve2()
498 tt_int_op(remaining, ==, v[0].iov_len); in test_evbuffer_reserve2()
499 memset(v[0].iov_base, 'Y', 8); in test_evbuffer_reserve2()
500 v[0].iov_len = 8; in test_evbuffer_reserve2()
506 /* Now ask for a request that will be split. Use only one byte of it, in test_evbuffer_reserve2()
507 though. */ in test_evbuffer_reserve2()
510 tt_assert(cp + 520 == v[0].iov_base); in test_evbuffer_reserve2()
511 tt_int_op(remaining, ==, v[0].iov_len); in test_evbuffer_reserve2()
512 tt_assert(v[1].iov_base); in test_evbuffer_reserve2()
513 tt_assert(v[1].iov_len >= 64); in test_evbuffer_reserve2()
514 cp2 = v[1].iov_base; in test_evbuffer_reserve2()
515 memset(v[0].iov_base, 'Z', 1); in test_evbuffer_reserve2()
516 v[0].iov_len = 1; in test_evbuffer_reserve2()
522 /* Now ask for a request that will be split. Use some of the first in test_evbuffer_reserve2()
523 * part and some of the second. */ in test_evbuffer_reserve2()
527 tt_assert(cp + 521 == v[0].iov_base); in test_evbuffer_reserve2()
528 tt_int_op(remaining, ==, v[0].iov_len); in test_evbuffer_reserve2()
529 tt_assert(v[1].iov_base == cp2); in test_evbuffer_reserve2()
530 tt_assert(v[1].iov_len >= 64); in test_evbuffer_reserve2()
531 memset(v[0].iov_base, 'W', 400); in test_evbuffer_reserve2()
532 v[0].iov_len = 400; in test_evbuffer_reserve2()
533 memset(v[1].iov_base, 'x', 60); in test_evbuffer_reserve2()
534 v[1].iov_len = 60; in test_evbuffer_reserve2()
539 /* Now peek to make sure stuff got made how we like. */ in test_evbuffer_reserve2()
543 tt_int_op(v[0].iov_len, ==, 921); in test_evbuffer_reserve2()
544 tt_int_op(v[1].iov_len, ==, 60); in test_evbuffer_reserve2()
546 cp = v[0].iov_base; in test_evbuffer_reserve2()
556 cp = v[1].iov_base; in test_evbuffer_reserve2()
581 tt_assert(v[0].iov_len >= 128); in test_evbuffer_reserve_many()
582 sz = v[0].iov_len; in test_evbuffer_reserve_many()
583 cp1 = v[0].iov_base; in test_evbuffer_reserve_many()
585 *(char*)v[0].iov_base = 'X'; in test_evbuffer_reserve_many()
586 v[0].iov_len = 1; in test_evbuffer_reserve_many()
590 memset(v[0].iov_base, 'X', v[0].iov_len); in test_evbuffer_reserve_many()
595 sz = v[0].iov_len; in test_evbuffer_reserve_many()
596 tt_assert(v[0].iov_base != cp1); in test_evbuffer_reserve_many()
597 cp1 = v[0].iov_base; in test_evbuffer_reserve_many()
600 /* Make another chunk get added. */ in test_evbuffer_reserve_many()
604 sz = v[0].iov_len + v[1].iov_len; in test_evbuffer_reserve_many()
605 tt_int_op(sz, >=, v[0].iov_len+128); in test_evbuffer_reserve_many()
607 tt_assert(v[0].iov_base == cp1 + 1); in test_evbuffer_reserve_many()
609 tt_assert(v[0].iov_base == cp1); in test_evbuffer_reserve_many()
611 cp1 = v[0].iov_base; in test_evbuffer_reserve_many()
612 cp2 = v[1].iov_base; in test_evbuffer_reserve_many()
614 /* And a third chunk. */ in test_evbuffer_reserve_many()
618 tt_assert(cp1 == v[0].iov_base); in test_evbuffer_reserve_many()
619 tt_assert(cp2 == v[1].iov_base); in test_evbuffer_reserve_many()
620 sz = v[0].iov_len + v[1].iov_len + v[2].iov_len; in test_evbuffer_reserve_many()
623 * buffers. */ in test_evbuffer_reserve_many()
628 tt_assert(cp1 == v[0].iov_base); in test_evbuffer_reserve_many()
662 * contiguous space already. */ in test_evbuffer_expand()
671 * when it makes sense to do so. */ in test_evbuffer_expand()
694 /* add, expand, pull-up: This used to crash libevent. */ in test_evbuffer_expand()
787 tt_str_op(data, ==, "this is what we add as read-only memory."); in reference_cb()
801 const char *data = "this is what we add as read-only memory."; in test_evbuffer_reference()
808 tt_assert(evbuffer_remove(src, v[0].iov_base, 10) != -1); in test_evbuffer_reference()
818 tt_assert(evbuffer_remove(src, ((char*)(v[0].iov_base)) + 10, in test_evbuffer_reference()
821 v[0].iov_len = strlen(data); in test_evbuffer_reference()
949 * argument. The strings are: */ in test_evbuffer_add_file()
957 /* If bigfile is set, use a 512K file. Else use a smaller in test_evbuffer_add_file()
958 * one. */ in test_evbuffer_add_file()
964 * than the last byte. Otherwise we map the whole thing */ in test_evbuffer_add_file()
970 * the segment. */ in test_evbuffer_add_file()
975 * backend. */ in test_evbuffer_add_file()
981 * style backend. */ in test_evbuffer_add_file()
987 * backend. */ in test_evbuffer_add_file()
992 /* The caller doesn't care which backend we use. */ in test_evbuffer_add_file()
995 /* The caller must choose a backend. */ in test_evbuffer_add_file()
1007 data = strdup("here is a relatively small string."); in test_evbuffer_add_file()
1045 /* Say that it drains to a fd so that we can use sendfile. */ in test_evbuffer_add_file()
1050 doesn't support sendfile() over AF_UNIX. */ in test_evbuffer_add_file()
1096 tt_abort_msg("Data from add_file differs."); in test_evbuffer_add_file()
1165 seg = NULL; /* Prevent double-free. */ in test_evbuffer_file_segment_add_cleanup_cb()
1212 /* Test EOL_ANY. */ in test_evbuffer_readln()
1345 "The all-zeros character which may serve\0" in test_evbuffer_readln()
1347 /* Add all but the final NUL of x. */ in test_evbuffer_readln()
1357 tt_line_eq("The all-zeros character which may serve"); in test_evbuffer_readln()
1450 tt_int_op(ptr1.pos, ==, 8); in test_evbuffer_search_eol()
1455 tt_int_op(ptr2.pos, ==, 8); in test_evbuffer_search_eol()
1461 tt_int_op(ptr2.pos, ==, 9); in test_evbuffer_search_eol()
1466 tt_int_op(ptr2.pos, ==, 10); in test_evbuffer_search_eol()
1471 tt_int_op(ptr1.pos, ==, 9); in test_evbuffer_search_eol()
1476 tt_int_op(ptr2.pos, ==, 9); in test_evbuffer_search_eol()
1482 tt_int_op(ptr2.pos, ==, 11); in test_evbuffer_search_eol()
1488 tt_int_op(ptr2.pos, ==, -1); in test_evbuffer_search_eol()
1507 evutil_snprintf(format, sizeof(format), "%%%u.%us", j, j); in test_evbuffer_iterative()
1510 /* Only check for rep violations every so often. in test_evbuffer_iterative()
1512 pretty expensive as it gets long. in test_evbuffer_iterative()
1530 printf("Allocated: %u.\nWasted: %u.\nUsed: %u.", in test_evbuffer_iterative()
1532 tt_assert( ((double)w)/a < .125); in test_evbuffer_iterative()
1544 const char* test2 = "1234567890\r"; in test_evbuffer_find() local
1557 evbuffer_add(buf, (unsigned char*)test2, strlen(test2)); in test_evbuffer_find()
1564 * read past the allocated buffer causing a valgrind error. in test_evbuffer_find()
1566 evbuffer_drain(buf, strlen(test2)); in test_evbuffer_find()
1598 tt_assert(pos.pos == 0); in test_evbuffer_ptr_set()
1600 tt_assert(pos.pos == -1); in test_evbuffer_ptr_set()
1602 tt_assert(pos.pos == -1); in test_evbuffer_ptr_set()
1606 v[0].iov_len = 5000; in test_evbuffer_ptr_set()
1607 memset(v[0].iov_base, 1, v[0].iov_len); in test_evbuffer_ptr_set()
1612 v[0].iov_len = 4000; in test_evbuffer_ptr_set()
1613 memset(v[0].iov_base, 2, v[0].iov_len); in test_evbuffer_ptr_set()
1617 v[0].iov_len = 3000; in test_evbuffer_ptr_set()
1618 memset(v[0].iov_base, 3, v[0].iov_len); in test_evbuffer_ptr_set()
1625 tt_assert(pos.pos == -1); in test_evbuffer_ptr_set()
1627 tt_assert(pos.pos == 0); in test_evbuffer_ptr_set()
1631 tt_assert(pos.pos == 0); in test_evbuffer_ptr_set()
1633 tt_assert(pos.pos == 10000); in test_evbuffer_ptr_set()
1635 tt_assert(pos.pos == 11000); in test_evbuffer_ptr_set()
1637 tt_assert(pos.pos == 12000); in test_evbuffer_ptr_set()
1639 tt_assert(pos.pos == -1); in test_evbuffer_ptr_set()
1657 tt_int_op(pos.pos, ==, -1); in test_evbuffer_search()
1660 tt_int_op(pos.pos, ==, -1); in test_evbuffer_search()
1663 tt_int_op(pos.pos, ==, -1); in test_evbuffer_search()
1666 tt_int_op(pos.pos, ==, -1); in test_evbuffer_search()
1679 tt_int_op(pos.pos, ==, 11); in test_evbuffer_search()
1681 tt_int_op(pos.pos, ==, -1); in test_evbuffer_search()
1685 tt_int_op(pos.pos, ==, 7); in test_evbuffer_search()
1687 tt_int_op(pos.pos, ==, 8); in test_evbuffer_search()
1689 tt_int_op(pos.pos, ==, -1); in test_evbuffer_search()
1693 tt_int_op(pos.pos, ==, 5); in test_evbuffer_search()
1697 tt_int_op(pos.pos, ==, 10); in test_evbuffer_search()
1699 /* test bounded search. */ in test_evbuffer_search()
1700 /* Set "end" to the first t in "attack". */ in test_evbuffer_search()
1703 tt_int_op(pos.pos, ==, 5); in test_evbuffer_search()
1705 tt_int_op(pos.pos, ==, 5); in test_evbuffer_search()
1707 tt_int_op(pos.pos, ==, -1); in test_evbuffer_search()
1709 tt_int_op(pos.pos, ==, -1); in test_evbuffer_search()
1711 /* Set "end" after the last byte in the buffer. */ in test_evbuffer_search()
1715 tt_int_op(pos.pos, ==, 11); in test_evbuffer_search()
1718 tt_int_op(pos.pos, ==, 11); in test_evbuffer_search()
1721 tt_int_op(pos.pos, ==, -1); in test_evbuffer_search()
1724 tt_int_op(pos.pos, ==, -1); in test_evbuffer_search()
1769 * and turning the callbacks on and off and removing them. The callback in test_evbuffer_callbacks()
1770 * adds a summary of length changes to buf_out1/buf_out2 when called. */ in test_evbuffer_callbacks()
1771 /* size: 0-> 36. */ in test_evbuffer_callbacks()
1794 /* Let's test the obsolete buffer_setcb function too. */ in test_evbuffer_callbacks()
1800 evbuffer_add_printf(buf, "This should get drained right away."); in test_evbuffer_callbacks()
1805 evbuffer_add_printf(buf, "This will not."); in test_evbuffer_callbacks()
1806 tt_str_op((const char *) evbuffer_pullup(buf, -1), ==, "This will not."); in test_evbuffer_callbacks()
1811 /* Now let's try a suspended callback. */ in test_evbuffer_callbacks()
1870 /* Make sure we can drain a little from a reference. */ in test_evbuffer_add_reference()
1881 /* Make sure that when the chunk is over, the callback is invoked. */ in test_evbuffer_add_reference()
1882 evbuffer_drain(buf1, 7); /* Remove prepended stuff. */ in test_evbuffer_add_reference()
1894 evbuffer_drain(buf1, 6); /* Remove the ", you ". */ in test_evbuffer_add_reference()
1910 * free. */ in test_evbuffer_add_reference()
1914 evbuffer_add(buf1, ". Nothing comes and then a lot'll.", 35); in test_evbuffer_add_reference()
1957 /* Make sure we can drain a little from the first buffer. */ in test_evbuffer_multicast()
1968 /* Make sure we can drain a little from the second buffer. */ in test_evbuffer_multicast()
2043 /* Some cases that we didn't get in test_evbuffer() above, for more coverage. */
2054 /* Case 0: The evbuffer is entirely empty. */ in test_evbuffer_prepend()
2058 /* Case 1: Prepend goes entirely in new chunk. */ in test_evbuffer_prepend()
2059 evbuffer_prepend(buf1, "Short.", 6); in test_evbuffer_prepend()
2062 /* Case 2: prepend goes entirely in first chunk. */ in test_evbuffer_prepend()
2069 /* Case 3: prepend is split over multiple chunks. */ in test_evbuffer_prepend()
2080 /* Case 4: prepend a buffer to an empty buffer. */ in test_evbuffer_prepend()
2082 evbuffer_add_printf(buf1, "Here is string %d. ", n++); in test_evbuffer_prepend()
2086 /* Case 5: prepend a buffer to a nonempty buffer. */ in test_evbuffer_prepend()
2087 evbuffer_add_printf(buf1, "Here is string %d. ", n++); in test_evbuffer_prepend()
2094 tt_str_op(tmp,==,"Here is string 1000. Here is string 999. "); in test_evbuffer_prepend()
2168 /* Let's make a very fragmented buffer. */ in test_evbuffer_peek()
2180 /* Simple peek: get everything. */ in test_evbuffer_peek()
2182 tt_int_op(i, ==, 16); /* we used only 16 chunks. */ in test_evbuffer_peek()
2188 /* Just get one chunk worth. */ in test_evbuffer_peek()
2193 tt_assert(v[1].iov_base == NULL); in test_evbuffer_peek()
2195 /* Suppose we want at least the first 40 bytes. */ in test_evbuffer_peek()
2201 tt_assert(v[2].iov_base == NULL); in test_evbuffer_peek()
2207 tt_assert(v[0].iov_base == NULL); in test_evbuffer_peek()
2214 tt_assert(v[1].iov_base == NULL); in test_evbuffer_peek()
2216 /* Now we ask for more bytes than the buffer has. */ in test_evbuffer_peek()
2219 tt_int_op(i, ==, 16); /* we used only 16 chunks. */ in test_evbuffer_peek()
2224 tt_assert(v[16].iov_base == NULL); in test_evbuffer_peek()
2230 tt_assert(v[0].iov_base == NULL); in test_evbuffer_peek()
2234 tt_assert(v[0].iov_base == NULL); in test_evbuffer_peek()
2236 /* Okay, now time to have fun with pointers. */ in test_evbuffer_peek()
2245 /* advance to the start of another chain. */ in test_evbuffer_peek()
2258 tt_assert(v[0].iov_base == NULL); in test_evbuffer_peek()
2267 /* Check whether evbuffer freezing works right. This is called twice,
2268 once with the argument "start" and once with the argument "end".
2270 that modifying the start of the buffer doesn't work. When we test
2272 the end of the buffer doesn't work.
2282 "Fluttered all winter long into a lake..."; in test_evbuffer_freeze()
2298 evbuffer_freeze(buf, start); /* Freeze the start or the end.*/ in test_evbuffer_freeze()
2312 /* These functions all manipulate the end of buf. */ in test_evbuffer_freeze()
2318 memset(v[0].iov_base, 'X', 10); in test_evbuffer_freeze()
2319 v[0].iov_len = 10; in test_evbuffer_freeze()
2334 /* These functions all manipulate the start of buf. */ in test_evbuffer_freeze()
2364 "Guilt resembles a sword with two edges.", in test_evbuffer_add_iovec()
2365 "On the one hand, it cuts for Justice, imposing practical morality upon those who fear it.", in test_evbuffer_add_iovec()
2366 "Conscience does not always adhere to rational judgment.", in test_evbuffer_add_iovec()
2367 "Guilt is always a self-imposed burden, but it is not always rightly imposed." in test_evbuffer_add_iovec()
2368 /* -- R.A. Salvatore, _Sojurn_ */ in test_evbuffer_add_iovec()
2379 vec[i].iov_len = strlen(data[i]); in test_evbuffer_add_iovec()
2380 vec[i].iov_base = (char*) data[i]; in test_evbuffer_add_iovec()
2381 expected_length += vec[i].iov_len; in test_evbuffer_add_iovec()
2411 "And our only plots were piled in lakes at Berne."; in test_evbuffer_copyout()
2431 /* First, let's test plain old copyout. */ in test_evbuffer_copyout()
2433 /* Copy a little from the beginning. */ in test_evbuffer_copyout()
2442 /* Copy too much; ensure truncation. */ in test_evbuffer_copyout()
2451 * first chain. */ in test_evbuffer_copyout()