Lines Matching +full:test2 +full:. +full:good
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"
68 /* Validates that an evbuffer is good. Returns false if it isn't, true if it
140 /* first nonempty chain: stuff at the end only is wasted. */ in evbuffer_get_waste()
266 tt_assert(v[0].iov_len >= 10000); in test_evbuffer()
267 tt_assert(v[0].iov_base != NULL); in test_evbuffer()
270 buf = v[0].iov_base; in test_evbuffer()
504 tt_int_op(iovecs[0].iov_len, >=, 1); in test_evbuffer_remove_buffer_adjust_last_with_datap_with_empty()
505 tt_int_op(iovecs[1].iov_len, >=, 1); in test_evbuffer_remove_buffer_adjust_last_with_datap_with_empty()
506 tt_assert(*(char *)(iovecs[0].iov_base) = 'b'); in test_evbuffer_remove_buffer_adjust_last_with_datap_with_empty()
507 tt_assert(iovecs[0].iov_len = 1); in test_evbuffer_remove_buffer_adjust_last_with_datap_with_empty()
604 /* Test the two-vector cases of reserve/commit. */ in test_evbuffer_reserve2()
611 /* First chunk will necessarily be one chunk. Use 512 bytes of it.*/ in test_evbuffer_reserve2()
615 tt_assert(v[0].iov_base != NULL); in test_evbuffer_reserve2()
616 tt_int_op(v[0].iov_len, >=, 1024); in test_evbuffer_reserve2()
617 memset(v[0].iov_base, 'X', 512); in test_evbuffer_reserve2()
618 cp = v[0].iov_base; in test_evbuffer_reserve2()
619 remaining = v[0].iov_len - 512; in test_evbuffer_reserve2()
620 v[0].iov_len = 512; in test_evbuffer_reserve2()
626 /* Ask for another same-chunk request, in an existing chunk. Use 8 in test_evbuffer_reserve2()
627 * bytes of it. */ in test_evbuffer_reserve2()
630 tt_assert(cp + 512 == v[0].iov_base); in test_evbuffer_reserve2()
631 tt_int_op(remaining, ==, v[0].iov_len); in test_evbuffer_reserve2()
632 memset(v[0].iov_base, 'Y', 8); in test_evbuffer_reserve2()
633 v[0].iov_len = 8; in test_evbuffer_reserve2()
639 /* Now ask for a request that will be split. Use only one byte of it, in test_evbuffer_reserve2()
640 though. */ in test_evbuffer_reserve2()
643 tt_assert(cp + 520 == v[0].iov_base); in test_evbuffer_reserve2()
644 tt_int_op(remaining, ==, v[0].iov_len); in test_evbuffer_reserve2()
645 tt_assert(v[1].iov_base); in test_evbuffer_reserve2()
646 tt_assert(v[1].iov_len >= 64); in test_evbuffer_reserve2()
647 cp2 = v[1].iov_base; in test_evbuffer_reserve2()
648 memset(v[0].iov_base, 'Z', 1); in test_evbuffer_reserve2()
649 v[0].iov_len = 1; in test_evbuffer_reserve2()
655 /* Now ask for a request that will be split. Use some of the first in test_evbuffer_reserve2()
656 * part and some of the second. */ in test_evbuffer_reserve2()
660 tt_assert(cp + 521 == v[0].iov_base); in test_evbuffer_reserve2()
661 tt_int_op(remaining, ==, v[0].iov_len); in test_evbuffer_reserve2()
662 tt_assert(v[1].iov_base == cp2); in test_evbuffer_reserve2()
663 tt_assert(v[1].iov_len >= 64); in test_evbuffer_reserve2()
664 memset(v[0].iov_base, 'W', 400); in test_evbuffer_reserve2()
665 v[0].iov_len = 400; in test_evbuffer_reserve2()
666 memset(v[1].iov_base, 'x', 60); in test_evbuffer_reserve2()
667 v[1].iov_len = 60; in test_evbuffer_reserve2()
672 /* Now peek to make sure stuff got made how we like. */ in test_evbuffer_reserve2()
676 tt_int_op(v[0].iov_len, ==, 921); in test_evbuffer_reserve2()
677 tt_int_op(v[1].iov_len, ==, 60); in test_evbuffer_reserve2()
679 cp = v[0].iov_base; in test_evbuffer_reserve2()
689 cp = v[1].iov_base; in test_evbuffer_reserve2()
714 tt_assert(v[0].iov_len >= 128); in test_evbuffer_reserve_many()
715 sz = v[0].iov_len; in test_evbuffer_reserve_many()
716 cp1 = v[0].iov_base; in test_evbuffer_reserve_many()
718 *(char*)v[0].iov_base = 'X'; in test_evbuffer_reserve_many()
719 v[0].iov_len = 1; in test_evbuffer_reserve_many()
723 memset(v[0].iov_base, 'X', v[0].iov_len); in test_evbuffer_reserve_many()
728 sz = v[0].iov_len; in test_evbuffer_reserve_many()
729 tt_assert(v[0].iov_base != cp1); in test_evbuffer_reserve_many()
730 cp1 = v[0].iov_base; in test_evbuffer_reserve_many()
733 /* Make another chunk get added. */ in test_evbuffer_reserve_many()
737 sz = v[0].iov_len + v[1].iov_len; in test_evbuffer_reserve_many()
738 tt_int_op(sz, >=, v[0].iov_len+128); in test_evbuffer_reserve_many()
740 tt_assert(v[0].iov_base == cp1 + 1); in test_evbuffer_reserve_many()
742 tt_assert(v[0].iov_base == cp1); in test_evbuffer_reserve_many()
744 cp1 = v[0].iov_base; in test_evbuffer_reserve_many()
745 cp2 = v[1].iov_base; in test_evbuffer_reserve_many()
747 /* And a third chunk. */ in test_evbuffer_reserve_many()
751 tt_assert(cp1 == v[0].iov_base); in test_evbuffer_reserve_many()
752 tt_assert(cp2 == v[1].iov_base); in test_evbuffer_reserve_many()
753 sz = v[0].iov_len + v[1].iov_len + v[2].iov_len; in test_evbuffer_reserve_many()
756 * buffers. */ in test_evbuffer_reserve_many()
761 tt_assert(cp1 == v[0].iov_base); in test_evbuffer_reserve_many()
779 v[0].iov_len = 1; in test_evbuffer_reserve_with_empty()
780 *(char *)v[0].iov_base = 'b'; in test_evbuffer_reserve_with_empty()
813 vec[i].iov_len = 0; in test_evbuffer_reserve_invalid_last_with_datap()
852 * contiguous space already. */ in test_evbuffer_expand()
861 * when it makes sense to do so. */ in test_evbuffer_expand()
884 /* add, expand, pull-up: This used to crash libevent. */ in test_evbuffer_expand()
977 tt_str_op(data, ==, "this is what we add as read-only memory."); in reference_cb()
991 const char *data = "this is what we add as read-only memory."; in test_evbuffer_reference()
998 tt_assert(evbuffer_remove(src, v[0].iov_base, 10) != -1); in test_evbuffer_reference()
1008 tt_assert(evbuffer_remove(src, ((char*)(v[0].iov_base)) + 10, in test_evbuffer_reference()
1011 v[0].iov_len = strlen(data); in test_evbuffer_reference()
1139 * argument. The strings are: */ in test_evbuffer_add_file()
1147 /* If bigfile is set, use a 512K file. Else use a smaller in test_evbuffer_add_file()
1148 * one. */ in test_evbuffer_add_file()
1154 * than the last byte. Otherwise we map the whole thing */ in test_evbuffer_add_file()
1160 * the segment. */ in test_evbuffer_add_file()
1165 * backend. */ in test_evbuffer_add_file()
1171 * style backend. */ in test_evbuffer_add_file()
1177 * backend. */ in test_evbuffer_add_file()
1182 /* The caller doesn't care which backend we use. */ in test_evbuffer_add_file()
1185 /* The caller must choose a backend. */ in test_evbuffer_add_file()
1197 data = strdup("here is a relatively small string."); in test_evbuffer_add_file()
1235 /* Say that it drains to a fd so that we can use sendfile. */ in test_evbuffer_add_file()
1240 doesn't support sendfile() over AF_UNIX. */ in test_evbuffer_add_file()
1286 tt_abort_msg("Data from add_file differs."); in test_evbuffer_add_file()
1355 seg = NULL; /* Prevent double-free. */ in test_evbuffer_file_segment_add_cleanup_cb()
1402 /* Test EOL_ANY. */ in test_evbuffer_readln()
1431 s = "Line with\rin the middle\nLine with good crlf\r\n\nfinal\n"; in test_evbuffer_readln()
1440 tt_line_eq("Line with good crlf"); in test_evbuffer_readln()
1461 s = " and a bad crlf\nand a good one\r\n\r\nMore\r"; in test_evbuffer_readln()
1465 tt_line_eq("x and a bad crlf\nand a good one"); in test_evbuffer_readln()
1537 /* Add all but the final NUL of x. */ in test_evbuffer_readln()
1557 s = " and a bad crlf\nand a good one\r"; in test_evbuffer_readln()
1574 tt_line_eq(" and a bad crlf\nand a good one"); in test_evbuffer_readln()
1640 tt_int_op(ptr1.pos, ==, 8); in test_evbuffer_search_eol()
1645 tt_int_op(ptr2.pos, ==, 8); in test_evbuffer_search_eol()
1651 tt_int_op(ptr2.pos, ==, 9); in test_evbuffer_search_eol()
1656 tt_int_op(ptr2.pos, ==, 10); in test_evbuffer_search_eol()
1661 tt_int_op(ptr1.pos, ==, 9); in test_evbuffer_search_eol()
1666 tt_int_op(ptr2.pos, ==, 9); in test_evbuffer_search_eol()
1672 tt_int_op(ptr2.pos, ==, 11); in test_evbuffer_search_eol()
1678 tt_int_op(ptr2.pos, ==, -1); in test_evbuffer_search_eol()
1697 evutil_snprintf(format, sizeof(format), "%%%u.%us", j, j); in test_evbuffer_iterative()
1700 /* Only check for rep violations every so often. in test_evbuffer_iterative()
1702 pretty expensive as it gets long. in test_evbuffer_iterative()
1720 printf("Allocated: %u.\nWasted: %u.\nUsed: %u.", in test_evbuffer_iterative()
1722 tt_assert( ((double)w)/a < .125); in test_evbuffer_iterative()
1734 const char* test2 = "1234567890\r"; in test_evbuffer_find() local
1747 evbuffer_add(buf, (unsigned char*)test2, strlen(test2)); in test_evbuffer_find()
1754 * read past the allocated buffer causing a valgrind error. in test_evbuffer_find()
1756 evbuffer_drain(buf, strlen(test2)); in test_evbuffer_find()
1788 tt_assert(pos.pos == 0); in test_evbuffer_ptr_set()
1790 tt_assert(pos.pos == -1); in test_evbuffer_ptr_set()
1792 tt_assert(pos.pos == -1); in test_evbuffer_ptr_set()
1796 v[0].iov_len = 5000; in test_evbuffer_ptr_set()
1797 memset(v[0].iov_base, 1, v[0].iov_len); in test_evbuffer_ptr_set()
1802 v[0].iov_len = 4000; in test_evbuffer_ptr_set()
1803 memset(v[0].iov_base, 2, v[0].iov_len); in test_evbuffer_ptr_set()
1807 v[0].iov_len = 3000; in test_evbuffer_ptr_set()
1808 memset(v[0].iov_base, 3, v[0].iov_len); in test_evbuffer_ptr_set()
1815 tt_assert(pos.pos == -1); in test_evbuffer_ptr_set()
1817 tt_assert(pos.pos == 0); in test_evbuffer_ptr_set()
1821 tt_assert(pos.pos == 0); in test_evbuffer_ptr_set()
1823 tt_assert(pos.pos == 10000); in test_evbuffer_ptr_set()
1825 tt_assert(pos.pos == 11000); in test_evbuffer_ptr_set()
1827 tt_assert(pos.pos == 12000); in test_evbuffer_ptr_set()
1829 tt_assert(pos.pos == -1); in test_evbuffer_ptr_set()
1847 tt_int_op(pos.pos, ==, -1); in test_evbuffer_search()
1850 tt_int_op(pos.pos, ==, -1); in test_evbuffer_search()
1853 tt_int_op(pos.pos, ==, -1); in test_evbuffer_search()
1856 tt_int_op(pos.pos, ==, -1); in test_evbuffer_search()
1869 tt_int_op(pos.pos, ==, 11); in test_evbuffer_search()
1871 tt_int_op(pos.pos, ==, -1); in test_evbuffer_search()
1875 tt_int_op(pos.pos, ==, 7); in test_evbuffer_search()
1877 tt_int_op(pos.pos, ==, 8); in test_evbuffer_search()
1879 tt_int_op(pos.pos, ==, -1); in test_evbuffer_search()
1883 tt_int_op(pos.pos, ==, 5); in test_evbuffer_search()
1887 tt_int_op(pos.pos, ==, 10); in test_evbuffer_search()
1889 /* test bounded search. */ in test_evbuffer_search()
1890 /* Set "end" to the first t in "attack". */ in test_evbuffer_search()
1893 tt_int_op(pos.pos, ==, 5); in test_evbuffer_search()
1895 tt_int_op(pos.pos, ==, 5); in test_evbuffer_search()
1897 tt_int_op(pos.pos, ==, -1); in test_evbuffer_search()
1899 tt_int_op(pos.pos, ==, -1); in test_evbuffer_search()
1901 /* Set "end" after the last byte in the buffer. */ in test_evbuffer_search()
1905 tt_int_op(pos.pos, ==, 11); in test_evbuffer_search()
1908 tt_int_op(pos.pos, ==, 11); in test_evbuffer_search()
1911 tt_int_op(pos.pos, ==, -1); in test_evbuffer_search()
1914 tt_int_op(pos.pos, ==, -1); in test_evbuffer_search()
1959 * and turning the callbacks on and off and removing them. The callback in test_evbuffer_callbacks()
1960 * adds a summary of length changes to buf_out1/buf_out2 when called. */ in test_evbuffer_callbacks()
1961 /* size: 0-> 36. */ in test_evbuffer_callbacks()
1984 /* Let's test the obsolete buffer_setcb function too. */ in test_evbuffer_callbacks()
1990 evbuffer_add_printf(buf, "This should get drained right away."); in test_evbuffer_callbacks()
1995 evbuffer_add_printf(buf, "This will not."); in test_evbuffer_callbacks()
1996 tt_str_op((const char *) evbuffer_pullup(buf, -1), ==, "This will not."); in test_evbuffer_callbacks()
2001 /* Now let's try a suspended callback. */ in test_evbuffer_callbacks()
2068 /* Make sure we can drain a little from a reference. */ in test_evbuffer_add_reference()
2079 /* Make sure that when the chunk is over, the callback is invoked. */ in test_evbuffer_add_reference()
2080 evbuffer_drain(buf1, 7); /* Remove prepended stuff. */ in test_evbuffer_add_reference()
2092 evbuffer_drain(buf1, 6); /* Remove the ", you ". */ in test_evbuffer_add_reference()
2108 * free. */ in test_evbuffer_add_reference()
2112 evbuffer_add(buf1, ". Nothing comes and then a lot'll.", 35); in test_evbuffer_add_reference()
2155 /* Make sure we can drain a little from the first buffer. */ in test_evbuffer_multicast()
2166 /* Make sure we can drain a little from the second buffer. */ in test_evbuffer_multicast()
2241 /* Some cases that we didn't get in test_evbuffer() above, for more coverage. */
2252 /* Case 0: The evbuffer is entirely empty. */ in test_evbuffer_prepend()
2256 /* Case 1: Prepend goes entirely in new chunk. */ in test_evbuffer_prepend()
2257 evbuffer_prepend(buf1, "Short.", 6); in test_evbuffer_prepend()
2260 /* Case 2: prepend goes entirely in first chunk. */ in test_evbuffer_prepend()
2267 /* Case 3: prepend is split over multiple chunks. */ in test_evbuffer_prepend()
2278 /* Case 4: prepend a buffer to an empty buffer. */ in test_evbuffer_prepend()
2280 evbuffer_add_printf(buf1, "Here is string %d. ", n++); in test_evbuffer_prepend()
2284 /* Case 5: prepend a buffer to a nonempty buffer. */ in test_evbuffer_prepend()
2285 evbuffer_add_printf(buf1, "Here is string %d. ", n++); in test_evbuffer_prepend()
2292 tt_str_op(tmp,==,"Here is string 1000. Here is string 999. "); in test_evbuffer_prepend()
2418 /* Let's make a very fragmented buffer. */ in test_evbuffer_peek()
2430 /* Simple peek: get everything. */ in test_evbuffer_peek()
2432 tt_int_op(i, ==, 16); /* we used only 16 chunks. */ in test_evbuffer_peek()
2438 /* Just get one chunk worth. */ in test_evbuffer_peek()
2443 tt_assert(v[1].iov_base == NULL); in test_evbuffer_peek()
2445 /* Suppose we want at least the first 40 bytes. */ in test_evbuffer_peek()
2451 tt_assert(v[2].iov_base == NULL); in test_evbuffer_peek()
2457 tt_assert(v[0].iov_base == NULL); in test_evbuffer_peek()
2464 tt_assert(v[1].iov_base == NULL); in test_evbuffer_peek()
2466 /* Now we ask for more bytes than the buffer has. */ in test_evbuffer_peek()
2469 tt_int_op(i, ==, 16); /* we used only 16 chunks. */ in test_evbuffer_peek()
2474 tt_assert(v[16].iov_base == NULL); in test_evbuffer_peek()
2480 tt_assert(v[0].iov_base == NULL); in test_evbuffer_peek()
2484 tt_assert(v[0].iov_base == NULL); in test_evbuffer_peek()
2486 /* Okay, now time to have fun with pointers. */ in test_evbuffer_peek()
2495 /* advance to the start of another chain. */ in test_evbuffer_peek()
2508 tt_assert(v[0].iov_base == NULL); in test_evbuffer_peek()
2517 /* Check whether evbuffer freezing works right. This is called twice,
2518 once with the argument "start" and once with the argument "end".
2520 that modifying the start of the buffer doesn't work. When we test
2522 the end of the buffer doesn't work.
2534 "Fluttered all winter long into a lake..."; in test_evbuffer_freeze()
2556 evbuffer_freeze(buf, start); /* Freeze the start or the end.*/ in test_evbuffer_freeze()
2571 /* These functions all manipulate the end of buf. */ in test_evbuffer_freeze()
2577 memset(v[0].iov_base, 'X', 10); in test_evbuffer_freeze()
2578 v[0].iov_len = 10; in test_evbuffer_freeze()
2608 /* These functions all manipulate the start of buf. */ in test_evbuffer_freeze()
2663 "Guilt resembles a sword with two edges.", in test_evbuffer_add_iovec()
2664 "On the one hand, it cuts for Justice, imposing practical morality upon those who fear it.", in test_evbuffer_add_iovec()
2665 "Conscience does not always adhere to rational judgment.", in test_evbuffer_add_iovec()
2666 "Guilt is always a self-imposed burden, but it is not always rightly imposed." in test_evbuffer_add_iovec()
2667 /* -- R.A. Salvatore, _Sojurn_ */ in test_evbuffer_add_iovec()
2678 vec[i].iov_len = strlen(data[i]); in test_evbuffer_add_iovec()
2679 vec[i].iov_base = (char*) data[i]; in test_evbuffer_add_iovec()
2680 expected_length += vec[i].iov_len; in test_evbuffer_add_iovec()
2710 "And our only plots were piled in lakes at Berne."; in test_evbuffer_copyout()
2730 /* First, let's test plain old copyout. */ in test_evbuffer_copyout()
2732 /* Copy a little from the beginning. */ in test_evbuffer_copyout()
2741 /* Copy too much; ensure truncation. */ in test_evbuffer_copyout()
2750 * first chain. */ in test_evbuffer_copyout()