asyncengine 0.0.1.testing1 → 0.0.2.alpha1
Sign up to get free protection for your applications and to get access to all the features.
- data/README.markdown +3 -0
- data/Rakefile +38 -0
- data/asyncengine.gemspec +8 -4
- data/ext/asyncengine/ae_call_from_other_thread.c +106 -0
- data/ext/asyncengine/ae_call_from_other_thread.h +12 -0
- data/ext/asyncengine/ae_handle_common.c +193 -48
- data/ext/asyncengine/ae_handle_common.h +40 -13
- data/ext/asyncengine/ae_ip_utils.c +246 -0
- data/ext/asyncengine/ae_ip_utils.h +25 -0
- data/ext/asyncengine/ae_next_tick.c +81 -21
- data/ext/asyncengine/ae_next_tick.h +4 -2
- data/ext/asyncengine/ae_resolver.c +156 -0
- data/ext/asyncengine/ae_resolver.h +10 -0
- data/ext/asyncengine/ae_tcp.c +908 -0
- data/ext/asyncengine/ae_tcp.h +20 -0
- data/ext/asyncengine/ae_timer.c +355 -81
- data/ext/asyncengine/ae_timer.h +11 -4
- data/ext/asyncengine/ae_udp.c +579 -13
- data/ext/asyncengine/ae_udp.h +15 -2
- data/ext/asyncengine/ae_utils.c +192 -0
- data/ext/asyncengine/ae_utils.h +16 -0
- data/ext/asyncengine/asyncengine_ruby.c +469 -26
- data/ext/asyncengine/asyncengine_ruby.h +49 -11
- data/ext/asyncengine/debug.h +68 -0
- data/ext/asyncengine/extconf.rb +26 -2
- data/ext/asyncengine/ip_parser.c +5954 -0
- data/ext/asyncengine/ip_parser.h +16 -0
- data/ext/asyncengine/libuv/AUTHORS +16 -0
- data/ext/asyncengine/libuv/common.gypi +4 -4
- data/ext/asyncengine/libuv/config-mingw.mk +6 -6
- data/ext/asyncengine/libuv/config-unix.mk +13 -13
- data/ext/asyncengine/libuv/gyp_uv +5 -1
- data/ext/asyncengine/libuv/ibc_tests/exec_test.sh +8 -0
- data/ext/asyncengine/libuv/ibc_tests/uv_shutdown_write_issue.c +171 -0
- data/ext/asyncengine/libuv/ibc_tests/uv_tcp_close_while_connecting.c +102 -0
- data/ext/asyncengine/libuv/include/uv-private/ngx-queue.h +3 -1
- data/ext/asyncengine/libuv/include/uv-private/uv-unix.h +103 -50
- data/ext/asyncengine/libuv/include/uv-private/uv-win.h +76 -24
- data/ext/asyncengine/libuv/include/uv.h +353 -88
- data/ext/asyncengine/libuv/src/ares/ares__close_sockets.o +0 -0
- data/ext/asyncengine/libuv/src/ares/ares__get_hostent.o +0 -0
- data/ext/asyncengine/libuv/src/ares/ares__read_line.o +0 -0
- data/ext/asyncengine/libuv/src/ares/ares__timeval.o +0 -0
- data/ext/asyncengine/libuv/src/ares/ares_cancel.o +0 -0
- data/ext/asyncengine/libuv/src/ares/ares_data.o +0 -0
- data/ext/asyncengine/libuv/src/ares/ares_destroy.o +0 -0
- data/ext/asyncengine/libuv/src/ares/ares_expand_name.o +0 -0
- data/ext/asyncengine/libuv/src/ares/ares_expand_string.o +0 -0
- data/ext/asyncengine/libuv/src/ares/ares_fds.o +0 -0
- data/ext/asyncengine/libuv/src/ares/ares_free_hostent.o +0 -0
- data/ext/asyncengine/libuv/src/ares/ares_free_string.o +0 -0
- data/ext/asyncengine/libuv/src/ares/ares_gethostbyaddr.o +0 -0
- data/ext/asyncengine/libuv/src/ares/ares_gethostbyname.o +0 -0
- data/ext/asyncengine/libuv/src/ares/ares_getnameinfo.o +0 -0
- data/ext/asyncengine/libuv/src/ares/ares_getopt.o +0 -0
- data/ext/asyncengine/libuv/src/ares/ares_getsock.o +0 -0
- data/ext/asyncengine/libuv/src/ares/ares_init.o +0 -0
- data/ext/asyncengine/libuv/src/ares/ares_library_init.o +0 -0
- data/ext/asyncengine/libuv/src/ares/ares_llist.o +0 -0
- data/ext/asyncengine/libuv/src/ares/ares_mkquery.o +0 -0
- data/ext/asyncengine/libuv/src/ares/ares_nowarn.o +0 -0
- data/ext/asyncengine/libuv/src/ares/ares_options.o +0 -0
- data/ext/asyncengine/libuv/src/ares/ares_parse_a_reply.o +0 -0
- data/ext/asyncengine/libuv/src/ares/ares_parse_aaaa_reply.o +0 -0
- data/ext/asyncengine/libuv/src/ares/ares_parse_mx_reply.o +0 -0
- data/ext/asyncengine/libuv/src/ares/ares_parse_ns_reply.o +0 -0
- data/ext/asyncengine/libuv/src/ares/ares_parse_ptr_reply.o +0 -0
- data/ext/asyncengine/libuv/src/ares/ares_parse_srv_reply.o +0 -0
- data/ext/asyncengine/libuv/src/ares/ares_parse_txt_reply.o +0 -0
- data/ext/asyncengine/libuv/src/ares/ares_process.o +0 -0
- data/ext/asyncengine/libuv/src/ares/ares_query.o +0 -0
- data/ext/asyncengine/libuv/src/ares/ares_search.o +0 -0
- data/ext/asyncengine/libuv/src/ares/ares_send.o +0 -0
- data/ext/asyncengine/libuv/src/ares/ares_strcasecmp.o +0 -0
- data/ext/asyncengine/libuv/src/ares/ares_strdup.o +0 -0
- data/ext/asyncengine/libuv/src/ares/ares_strerror.o +0 -0
- data/ext/asyncengine/libuv/src/ares/ares_timeout.o +0 -0
- data/ext/asyncengine/libuv/src/ares/ares_version.o +0 -0
- data/ext/asyncengine/libuv/src/ares/ares_writev.o +0 -0
- data/ext/asyncengine/libuv/src/ares/bitncmp.o +0 -0
- data/ext/asyncengine/libuv/src/ares/inet_net_pton.o +0 -0
- data/ext/asyncengine/libuv/src/ares/inet_ntop.o +0 -0
- data/ext/asyncengine/libuv/src/cares.c +225 -0
- data/ext/asyncengine/libuv/src/cares.o +0 -0
- data/ext/asyncengine/libuv/src/fs-poll.c +237 -0
- data/ext/asyncengine/libuv/src/fs-poll.o +0 -0
- data/ext/asyncengine/libuv/src/unix/async.c +78 -17
- data/ext/asyncengine/libuv/src/unix/async.o +0 -0
- data/ext/asyncengine/libuv/src/unix/core.c +305 -213
- data/ext/asyncengine/libuv/src/unix/core.o +0 -0
- data/ext/asyncengine/libuv/src/unix/cygwin.c +1 -1
- data/ext/asyncengine/libuv/src/unix/darwin.c +2 -1
- data/ext/asyncengine/libuv/src/unix/dl.c +36 -44
- data/ext/asyncengine/libuv/src/unix/dl.o +0 -0
- data/ext/asyncengine/libuv/src/unix/eio/eio.o +0 -0
- data/ext/asyncengine/libuv/src/unix/error.c +6 -0
- data/ext/asyncengine/libuv/src/unix/error.o +0 -0
- data/ext/asyncengine/libuv/src/unix/ev/ev.c +8 -4
- data/ext/asyncengine/libuv/src/unix/ev/ev.o +0 -0
- data/ext/asyncengine/libuv/src/unix/freebsd.c +1 -1
- data/ext/asyncengine/libuv/src/unix/fs.c +25 -33
- data/ext/asyncengine/libuv/src/unix/fs.o +0 -0
- data/ext/asyncengine/libuv/src/unix/internal.h +50 -31
- data/ext/asyncengine/libuv/src/unix/kqueue.c +2 -7
- data/ext/asyncengine/libuv/src/unix/linux/core.o +0 -0
- data/ext/asyncengine/libuv/src/unix/linux/inotify.c +12 -14
- data/ext/asyncengine/libuv/src/unix/linux/inotify.o +0 -0
- data/ext/asyncengine/libuv/src/unix/linux/{core.c → linux-core.c} +1 -1
- data/ext/asyncengine/libuv/src/unix/linux/linux-core.o +0 -0
- data/ext/asyncengine/libuv/src/unix/linux/syscalls.c +147 -1
- data/ext/asyncengine/libuv/src/unix/linux/syscalls.h +39 -2
- data/ext/asyncengine/libuv/src/unix/linux/syscalls.o +0 -0
- data/ext/asyncengine/libuv/src/unix/loop-watcher.c +63 -0
- data/ext/asyncengine/libuv/src/unix/loop-watcher.o +0 -0
- data/ext/asyncengine/libuv/src/unix/loop.c +29 -6
- data/ext/asyncengine/libuv/src/unix/loop.o +0 -0
- data/ext/asyncengine/libuv/src/unix/netbsd.c +1 -1
- data/ext/asyncengine/libuv/src/unix/openbsd.c +1 -1
- data/ext/asyncengine/libuv/src/unix/pipe.c +31 -36
- data/ext/asyncengine/libuv/src/unix/pipe.o +0 -0
- data/ext/asyncengine/libuv/src/unix/poll.c +116 -0
- data/ext/asyncengine/libuv/src/unix/poll.o +0 -0
- data/ext/asyncengine/libuv/src/unix/process.c +193 -115
- data/ext/asyncengine/libuv/src/unix/process.o +0 -0
- data/ext/asyncengine/libuv/src/unix/stream.c +146 -153
- data/ext/asyncengine/libuv/src/unix/stream.o +0 -0
- data/ext/asyncengine/libuv/src/unix/sunos.c +45 -36
- data/ext/asyncengine/libuv/src/unix/tcp.c +6 -5
- data/ext/asyncengine/libuv/src/unix/tcp.o +0 -0
- data/ext/asyncengine/libuv/src/unix/thread.c +82 -25
- data/ext/asyncengine/libuv/src/unix/thread.o +0 -0
- data/ext/asyncengine/libuv/src/unix/timer.c +69 -58
- data/ext/asyncengine/libuv/src/unix/timer.o +0 -0
- data/ext/asyncengine/libuv/src/unix/tty.c +3 -3
- data/ext/asyncengine/libuv/src/unix/tty.o +0 -0
- data/ext/asyncengine/libuv/src/unix/udp.c +57 -66
- data/ext/asyncengine/libuv/src/unix/udp.o +0 -0
- data/ext/asyncengine/libuv/src/unix/uv-eio.c +33 -50
- data/ext/asyncengine/libuv/src/unix/uv-eio.o +0 -0
- data/ext/asyncengine/libuv/src/uv-common.c +68 -38
- data/ext/asyncengine/libuv/src/uv-common.h +104 -20
- data/ext/asyncengine/libuv/src/uv-common.o +0 -0
- data/ext/asyncengine/libuv/src/win/async.c +20 -17
- data/ext/asyncengine/libuv/src/win/core.c +44 -31
- data/ext/asyncengine/libuv/src/win/dl.c +40 -36
- data/ext/asyncengine/libuv/src/win/error.c +21 -1
- data/ext/asyncengine/libuv/src/win/fs-event.c +19 -21
- data/ext/asyncengine/libuv/src/win/fs.c +541 -189
- data/ext/asyncengine/libuv/src/win/getaddrinfo.c +56 -63
- data/ext/asyncengine/libuv/src/win/handle-inl.h +145 -0
- data/ext/asyncengine/libuv/src/win/handle.c +26 -101
- data/ext/asyncengine/libuv/src/win/internal.h +92 -107
- data/ext/asyncengine/libuv/src/win/loop-watcher.c +6 -14
- data/ext/asyncengine/libuv/src/win/pipe.c +78 -64
- data/ext/asyncengine/libuv/src/win/poll.c +618 -0
- data/ext/asyncengine/libuv/src/win/process-stdio.c +479 -0
- data/ext/asyncengine/libuv/src/win/process.c +147 -274
- data/ext/asyncengine/libuv/src/win/req-inl.h +225 -0
- data/ext/asyncengine/libuv/src/win/req.c +0 -149
- data/ext/asyncengine/libuv/src/{unix/check.c → win/stream-inl.h} +31 -42
- data/ext/asyncengine/libuv/src/win/stream.c +9 -43
- data/ext/asyncengine/libuv/src/win/tcp.c +200 -82
- data/ext/asyncengine/libuv/src/win/thread.c +42 -2
- data/ext/asyncengine/libuv/src/win/threadpool.c +3 -2
- data/ext/asyncengine/libuv/src/win/timer.c +13 -63
- data/ext/asyncengine/libuv/src/win/tty.c +26 -20
- data/ext/asyncengine/libuv/src/win/udp.c +26 -17
- data/ext/asyncengine/libuv/src/win/util.c +312 -167
- data/ext/asyncengine/libuv/src/win/winapi.c +16 -1
- data/ext/asyncengine/libuv/src/win/winapi.h +33 -9
- data/ext/asyncengine/libuv/src/win/winsock.c +88 -1
- data/ext/asyncengine/libuv/src/win/winsock.h +36 -3
- data/ext/asyncengine/libuv/test/benchmark-ares.c +16 -17
- data/ext/asyncengine/libuv/test/benchmark-fs-stat.c +164 -0
- data/ext/asyncengine/libuv/test/benchmark-list.h +9 -0
- data/ext/asyncengine/libuv/{src/unix/prepare.c → test/benchmark-loop-count.c} +42 -33
- data/ext/asyncengine/libuv/test/benchmark-million-timers.c +65 -0
- data/ext/asyncengine/libuv/test/benchmark-pound.c +1 -1
- data/ext/asyncengine/libuv/test/benchmark-sizes.c +2 -0
- data/ext/asyncengine/libuv/test/benchmark-spawn.c +7 -1
- data/ext/asyncengine/libuv/test/benchmark-udp-packet-storm.c +1 -1
- data/ext/asyncengine/libuv/test/echo-server.c +8 -0
- data/ext/asyncengine/libuv/test/run-tests.c +30 -0
- data/ext/asyncengine/libuv/test/runner-unix.c +6 -26
- data/ext/asyncengine/libuv/test/runner-win.c +5 -63
- data/ext/asyncengine/libuv/test/runner.c +10 -1
- data/ext/asyncengine/libuv/test/task.h +0 -8
- data/ext/asyncengine/libuv/test/test-async.c +43 -141
- data/ext/asyncengine/libuv/test/test-callback-order.c +76 -0
- data/ext/asyncengine/libuv/test/test-counters-init.c +2 -3
- data/ext/asyncengine/libuv/test/test-dlerror.c +17 -8
- data/ext/asyncengine/libuv/test/test-fs-event.c +31 -39
- data/ext/asyncengine/libuv/test/test-fs-poll.c +146 -0
- data/ext/asyncengine/libuv/test/test-fs.c +114 -2
- data/ext/asyncengine/libuv/test/test-gethostbyname.c +8 -8
- data/ext/asyncengine/libuv/test/test-hrtime.c +18 -15
- data/ext/asyncengine/libuv/test/test-ipc.c +8 -2
- data/ext/asyncengine/libuv/test/test-list.h +59 -9
- data/ext/asyncengine/libuv/test/test-loop-handles.c +2 -25
- data/ext/asyncengine/libuv/{src/unix/idle.c → test/test-poll-close.c} +37 -39
- data/ext/asyncengine/libuv/test/test-poll.c +573 -0
- data/ext/asyncengine/libuv/test/test-ref.c +79 -63
- data/ext/asyncengine/libuv/test/test-run-once.c +15 -11
- data/ext/asyncengine/libuv/test/test-semaphore.c +111 -0
- data/ext/asyncengine/libuv/test/test-spawn.c +368 -20
- data/ext/asyncengine/libuv/test/test-stdio-over-pipes.c +25 -35
- data/ext/asyncengine/libuv/test/test-tcp-close-while-connecting.c +80 -0
- data/ext/asyncengine/libuv/test/test-tcp-close.c +1 -1
- data/ext/asyncengine/libuv/test/test-tcp-connect-error-after-write.c +95 -0
- data/ext/asyncengine/libuv/test/test-tcp-connect-timeout.c +85 -0
- data/ext/asyncengine/libuv/test/test-tcp-shutdown-after-write.c +131 -0
- data/ext/asyncengine/libuv/test/test-tcp-write-error.c +2 -2
- data/ext/asyncengine/libuv/test/test-tcp-writealot.c +29 -54
- data/ext/asyncengine/libuv/test/test-timer-again.c +1 -1
- data/ext/asyncengine/libuv/test/test-timer.c +23 -1
- data/ext/asyncengine/libuv/test/test-udp-options.c +1 -1
- data/ext/asyncengine/libuv/test/{test-eio-overflow.c → test-walk-handles.c} +31 -44
- data/ext/asyncengine/libuv/uv.gyp +26 -9
- data/ext/asyncengine/rb_utilities.c +54 -0
- data/ext/asyncengine/rb_utilities.h +63 -0
- data/lib/asyncengine.rb +45 -38
- data/lib/asyncengine/asyncengine_ext.so +0 -0
- data/lib/asyncengine/debug.rb +37 -0
- data/lib/asyncengine/handle.rb +9 -0
- data/lib/asyncengine/tcp.rb +28 -0
- data/lib/asyncengine/timer.rb +18 -28
- data/lib/asyncengine/udp.rb +29 -0
- data/lib/asyncengine/utils.rb +32 -0
- data/lib/asyncengine/uv_error.rb +17 -0
- data/lib/asyncengine/version.rb +9 -1
- data/test/ae_test_helper.rb +62 -0
- data/test/test_basic.rb +169 -0
- data/test/test_call_from_other_thread.rb +55 -0
- data/test/test_error.rb +92 -0
- data/test/test_ip_utils.rb +44 -0
- data/test/test_next_tick.rb +37 -0
- data/test/test_resolver.rb +51 -0
- data/test/test_threads.rb +69 -0
- data/test/test_timer.rb +95 -0
- data/test/test_udp.rb +216 -0
- data/test/test_utils.rb +49 -0
- metadata +84 -57
- data/ext/asyncengine/libuv/mkmf.log +0 -24
- data/ext/asyncengine/libuv/src/unix/cares.c +0 -194
- data/ext/asyncengine/libuv/src/unix/cares.o +0 -0
- data/ext/asyncengine/libuv/src/unix/check.o +0 -0
- data/ext/asyncengine/libuv/src/unix/idle.o +0 -0
- data/ext/asyncengine/libuv/src/unix/prepare.o +0 -0
- data/ext/asyncengine/libuv/src/win/cares.c +0 -290
- data/lib/asyncengine/errors.rb +0 -5
- data/lib/asyncengine/next_tick.rb +0 -24
@@ -0,0 +1,146 @@
|
|
1
|
+
/* Copyright Joyent, Inc. and other Node contributors. All rights reserved.
|
2
|
+
*
|
3
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
|
+
* of this software and associated documentation files (the "Software"), to
|
5
|
+
* deal in the Software without restriction, including without limitation the
|
6
|
+
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
7
|
+
* sell copies of the Software, and to permit persons to whom the Software is
|
8
|
+
* furnished to do so, subject to the following conditions:
|
9
|
+
*
|
10
|
+
* The above copyright notice and this permission notice shall be included in
|
11
|
+
* all copies or substantial portions of the Software.
|
12
|
+
*
|
13
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
18
|
+
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
19
|
+
* IN THE SOFTWARE.
|
20
|
+
*/
|
21
|
+
|
22
|
+
#include "uv.h"
|
23
|
+
#include "task.h"
|
24
|
+
|
25
|
+
#include <string.h>
|
26
|
+
|
27
|
+
#define FIXTURE "testfile"
|
28
|
+
|
29
|
+
static void timer_cb(uv_timer_t* handle, int status);
|
30
|
+
static void close_cb(uv_handle_t* handle);
|
31
|
+
static void poll_cb(uv_fs_poll_t* handle,
|
32
|
+
int status,
|
33
|
+
const uv_statbuf_t* prev,
|
34
|
+
const uv_statbuf_t* curr);
|
35
|
+
|
36
|
+
static uv_fs_poll_t poll_handle;
|
37
|
+
static uv_timer_t timer_handle;
|
38
|
+
static uv_loop_t* loop;
|
39
|
+
|
40
|
+
static int poll_cb_called;
|
41
|
+
static int timer_cb_called;
|
42
|
+
static int close_cb_called;
|
43
|
+
|
44
|
+
|
45
|
+
static void touch_file(const char* path) {
|
46
|
+
static int count;
|
47
|
+
FILE* fp;
|
48
|
+
int i;
|
49
|
+
|
50
|
+
ASSERT((fp = fopen(FIXTURE, "w+")));
|
51
|
+
|
52
|
+
/* Need to change the file size because the poller may not pick up
|
53
|
+
* sub-second mtime changes.
|
54
|
+
*/
|
55
|
+
i = ++count;
|
56
|
+
|
57
|
+
while (i--)
|
58
|
+
fputc('*', fp);
|
59
|
+
|
60
|
+
fclose(fp);
|
61
|
+
}
|
62
|
+
|
63
|
+
|
64
|
+
static void close_cb(uv_handle_t* handle) {
|
65
|
+
close_cb_called++;
|
66
|
+
}
|
67
|
+
|
68
|
+
|
69
|
+
static void timer_cb(uv_timer_t* handle, int status) {
|
70
|
+
touch_file(FIXTURE);
|
71
|
+
timer_cb_called++;
|
72
|
+
}
|
73
|
+
|
74
|
+
|
75
|
+
static void poll_cb(uv_fs_poll_t* handle,
|
76
|
+
int status,
|
77
|
+
const uv_statbuf_t* prev,
|
78
|
+
const uv_statbuf_t* curr) {
|
79
|
+
const static uv_statbuf_t zero_statbuf;
|
80
|
+
|
81
|
+
ASSERT(handle == &poll_handle);
|
82
|
+
ASSERT(uv_is_active((uv_handle_t*)handle));
|
83
|
+
ASSERT(prev != NULL);
|
84
|
+
ASSERT(curr != NULL);
|
85
|
+
|
86
|
+
switch (poll_cb_called++) {
|
87
|
+
case 0:
|
88
|
+
ASSERT(status == -1);
|
89
|
+
ASSERT(uv_last_error(loop).code == UV_ENOENT);
|
90
|
+
ASSERT(0 == memcmp(prev, &zero_statbuf, sizeof(zero_statbuf)));
|
91
|
+
ASSERT(0 == memcmp(curr, &zero_statbuf, sizeof(zero_statbuf)));
|
92
|
+
touch_file(FIXTURE);
|
93
|
+
break;
|
94
|
+
|
95
|
+
case 1:
|
96
|
+
ASSERT(status == 0);
|
97
|
+
ASSERT(0 == memcmp(prev, &zero_statbuf, sizeof(zero_statbuf)));
|
98
|
+
ASSERT(0 != memcmp(curr, &zero_statbuf, sizeof(zero_statbuf)));
|
99
|
+
ASSERT(0 == uv_timer_start(&timer_handle, timer_cb, 20, 0));
|
100
|
+
break;
|
101
|
+
|
102
|
+
case 2:
|
103
|
+
ASSERT(status == 0);
|
104
|
+
ASSERT(0 != memcmp(prev, &zero_statbuf, sizeof(zero_statbuf)));
|
105
|
+
ASSERT(0 != memcmp(curr, &zero_statbuf, sizeof(zero_statbuf)));
|
106
|
+
ASSERT(0 == uv_timer_start(&timer_handle, timer_cb, 200, 0));
|
107
|
+
break;
|
108
|
+
|
109
|
+
case 3:
|
110
|
+
ASSERT(status == 0);
|
111
|
+
ASSERT(0 != memcmp(prev, &zero_statbuf, sizeof(zero_statbuf)));
|
112
|
+
ASSERT(0 != memcmp(curr, &zero_statbuf, sizeof(zero_statbuf)));
|
113
|
+
remove(FIXTURE);
|
114
|
+
break;
|
115
|
+
|
116
|
+
case 4:
|
117
|
+
ASSERT(status == -1);
|
118
|
+
ASSERT(0 != memcmp(prev, &zero_statbuf, sizeof(zero_statbuf)));
|
119
|
+
ASSERT(0 == memcmp(curr, &zero_statbuf, sizeof(zero_statbuf)));
|
120
|
+
ASSERT(uv_last_error(loop).code == UV_ENOENT);
|
121
|
+
uv_close((uv_handle_t*)handle, close_cb);
|
122
|
+
break;
|
123
|
+
|
124
|
+
default:
|
125
|
+
ASSERT(0);
|
126
|
+
}
|
127
|
+
}
|
128
|
+
|
129
|
+
|
130
|
+
TEST_IMPL(fs_poll) {
|
131
|
+
loop = uv_default_loop();
|
132
|
+
|
133
|
+
remove(FIXTURE);
|
134
|
+
|
135
|
+
ASSERT(0 == uv_timer_init(loop, &timer_handle));
|
136
|
+
ASSERT(0 == uv_fs_poll_init(loop, &poll_handle));
|
137
|
+
ASSERT(0 == uv_fs_poll_start(&poll_handle, poll_cb, FIXTURE, 100));
|
138
|
+
ASSERT(0 == uv_run(loop));
|
139
|
+
|
140
|
+
ASSERT(poll_cb_called == 5);
|
141
|
+
ASSERT(timer_cb_called == 2);
|
142
|
+
ASSERT(close_cb_called == 1);
|
143
|
+
uv_loop_delete(loop);
|
144
|
+
|
145
|
+
return 0;
|
146
|
+
}
|
@@ -46,6 +46,7 @@
|
|
46
46
|
#endif
|
47
47
|
|
48
48
|
#define TOO_LONG_NAME_LENGTH 65536
|
49
|
+
#define PATHMAX 1024
|
49
50
|
|
50
51
|
typedef struct {
|
51
52
|
const char* path;
|
@@ -1223,10 +1224,10 @@ TEST_IMPL(fs_symlink) {
|
|
1223
1224
|
* We just pass the test and bail out early if we get ENOTSUP.
|
1224
1225
|
*/
|
1225
1226
|
return 0;
|
1226
|
-
} else if (uv_last_error(loop).
|
1227
|
+
} else if (uv_last_error(loop).code == UV_EPERM) {
|
1227
1228
|
/*
|
1228
1229
|
* Creating a symlink is only allowed when running elevated.
|
1229
|
-
* We pass the test and bail out early if we get
|
1230
|
+
* We pass the test and bail out early if we get UV_EPERM.
|
1230
1231
|
*/
|
1231
1232
|
return 0;
|
1232
1233
|
}
|
@@ -1301,6 +1302,117 @@ TEST_IMPL(fs_symlink) {
|
|
1301
1302
|
}
|
1302
1303
|
|
1303
1304
|
|
1305
|
+
TEST_IMPL(fs_symlink_dir) {
|
1306
|
+
uv_fs_t req;
|
1307
|
+
int r;
|
1308
|
+
char* test_dir;
|
1309
|
+
|
1310
|
+
/* set-up */
|
1311
|
+
unlink("test_dir/file1");
|
1312
|
+
unlink("test_dir/file2");
|
1313
|
+
rmdir("test_dir");
|
1314
|
+
rmdir("test_dir_symlink");
|
1315
|
+
|
1316
|
+
loop = uv_default_loop();
|
1317
|
+
|
1318
|
+
uv_fs_mkdir(loop, &req, "test_dir", 0777, NULL);
|
1319
|
+
uv_fs_req_cleanup(&req);
|
1320
|
+
|
1321
|
+
#ifdef _WIN32
|
1322
|
+
{
|
1323
|
+
static char src_path_buf[PATHMAX];
|
1324
|
+
strcpy(src_path_buf, "\\\\?\\");
|
1325
|
+
uv_cwd(src_path_buf + 4, sizeof(src_path_buf));
|
1326
|
+
strcat(src_path_buf, "\\test_dir\\");
|
1327
|
+
test_dir = src_path_buf;
|
1328
|
+
}
|
1329
|
+
#else
|
1330
|
+
test_dir = "test_dir";
|
1331
|
+
#endif
|
1332
|
+
|
1333
|
+
r = uv_fs_symlink(loop, &req, test_dir, "test_dir_symlink",
|
1334
|
+
UV_FS_SYMLINK_JUNCTION, NULL);
|
1335
|
+
ASSERT(r == 0);
|
1336
|
+
ASSERT(req.result == 0);
|
1337
|
+
uv_fs_req_cleanup(&req);
|
1338
|
+
|
1339
|
+
r = uv_fs_stat(loop, &req, "test_dir_symlink", NULL);
|
1340
|
+
ASSERT(r == 0);
|
1341
|
+
ASSERT(((struct stat*)req.ptr)->st_mode & S_IFDIR);
|
1342
|
+
uv_fs_req_cleanup(&req);
|
1343
|
+
|
1344
|
+
r = uv_fs_lstat(loop, &req, "test_dir_symlink", NULL);
|
1345
|
+
ASSERT(r == 0);
|
1346
|
+
ASSERT(((struct stat*)req.ptr)->st_mode & S_IFLNK);
|
1347
|
+
#ifdef _WIN32
|
1348
|
+
ASSERT(((struct stat*)req.ptr)->st_size == strlen(test_dir + 4));
|
1349
|
+
#else
|
1350
|
+
ASSERT(((struct stat*)req.ptr)->st_size == strlen(test_dir));
|
1351
|
+
#endif
|
1352
|
+
uv_fs_req_cleanup(&req);
|
1353
|
+
|
1354
|
+
r = uv_fs_readlink(loop, &req, "test_dir_symlink", NULL);
|
1355
|
+
ASSERT(r == 0);
|
1356
|
+
#ifdef _WIN32
|
1357
|
+
ASSERT(strcmp(req.ptr, test_dir + 4) == 0);
|
1358
|
+
#else
|
1359
|
+
ASSERT(strcmp(req.ptr, test_dir) == 0);
|
1360
|
+
#endif
|
1361
|
+
uv_fs_req_cleanup(&req);
|
1362
|
+
|
1363
|
+
r = uv_fs_open(loop, &open_req1, "test_dir/file1", O_WRONLY | O_CREAT,
|
1364
|
+
S_IWRITE | S_IREAD, NULL);
|
1365
|
+
ASSERT(r != -1);
|
1366
|
+
uv_fs_req_cleanup(&open_req1);
|
1367
|
+
r = uv_fs_close(loop, &close_req, open_req1.result, NULL);
|
1368
|
+
ASSERT(r == 0);
|
1369
|
+
uv_fs_req_cleanup(&close_req);
|
1370
|
+
|
1371
|
+
r = uv_fs_open(loop, &open_req1, "test_dir/file2", O_WRONLY | O_CREAT,
|
1372
|
+
S_IWRITE | S_IREAD, NULL);
|
1373
|
+
ASSERT(r != -1);
|
1374
|
+
uv_fs_req_cleanup(&open_req1);
|
1375
|
+
r = uv_fs_close(loop, &close_req, open_req1.result, NULL);
|
1376
|
+
ASSERT(r == 0);
|
1377
|
+
uv_fs_req_cleanup(&close_req);
|
1378
|
+
|
1379
|
+
r = uv_fs_readdir(loop, &readdir_req, "test_dir_symlink", 0, NULL);
|
1380
|
+
ASSERT(r == 2);
|
1381
|
+
ASSERT(readdir_req.result == 2);
|
1382
|
+
ASSERT(readdir_req.ptr);
|
1383
|
+
ASSERT(memcmp(readdir_req.ptr, "file1\0file2\0", 12) == 0
|
1384
|
+
|| memcmp(readdir_req.ptr, "file2\0file1\0", 12) == 0);
|
1385
|
+
uv_fs_req_cleanup(&readdir_req);
|
1386
|
+
ASSERT(!readdir_req.ptr);
|
1387
|
+
|
1388
|
+
/* unlink will remove the directory symlink */
|
1389
|
+
r = uv_fs_unlink(loop, &req, "test_dir_symlink", NULL);
|
1390
|
+
ASSERT(r == 0);
|
1391
|
+
uv_fs_req_cleanup(&req);
|
1392
|
+
|
1393
|
+
r = uv_fs_readdir(loop, &readdir_req, "test_dir_symlink", 0, NULL);
|
1394
|
+
ASSERT(r == -1);
|
1395
|
+
uv_fs_req_cleanup(&readdir_req);
|
1396
|
+
|
1397
|
+
r = uv_fs_readdir(loop, &readdir_req, "test_dir", 0, NULL);
|
1398
|
+
ASSERT(r == 2);
|
1399
|
+
ASSERT(readdir_req.result == 2);
|
1400
|
+
ASSERT(readdir_req.ptr);
|
1401
|
+
ASSERT(memcmp(readdir_req.ptr, "file1\0file2\0", 12) == 0
|
1402
|
+
|| memcmp(readdir_req.ptr, "file2\0file1\0", 12) == 0);
|
1403
|
+
uv_fs_req_cleanup(&readdir_req);
|
1404
|
+
ASSERT(!readdir_req.ptr);
|
1405
|
+
|
1406
|
+
/* clean-up */
|
1407
|
+
unlink("test_dir/file1");
|
1408
|
+
unlink("test_dir/file2");
|
1409
|
+
rmdir("test_dir");
|
1410
|
+
rmdir("test_dir_symlink");
|
1411
|
+
|
1412
|
+
return 0;
|
1413
|
+
}
|
1414
|
+
|
1415
|
+
|
1304
1416
|
TEST_IMPL(fs_utime) {
|
1305
1417
|
utime_check_t checkme;
|
1306
1418
|
const char* path = "test_file";
|
@@ -26,14 +26,14 @@
|
|
26
26
|
#include <stdio.h>
|
27
27
|
#include <string.h> /* strlen */
|
28
28
|
|
29
|
-
ares_channel channel;
|
30
|
-
struct ares_options options;
|
31
|
-
int optmask;
|
32
|
-
|
33
|
-
int ares_bynamecallbacks;
|
34
|
-
int bynamecallbacksig;
|
35
|
-
int ares_byaddrcallbacks;
|
36
|
-
int byaddrcallbacksig;
|
29
|
+
static ares_channel channel;
|
30
|
+
static struct ares_options options;
|
31
|
+
static int optmask;
|
32
|
+
|
33
|
+
static int ares_bynamecallbacks;
|
34
|
+
static int bynamecallbacksig;
|
35
|
+
static int ares_byaddrcallbacks;
|
36
|
+
static int byaddrcallbacksig;
|
37
37
|
|
38
38
|
static void aresbynamecallback( void *arg,
|
39
39
|
int status,
|
@@ -27,25 +27,28 @@
|
|
27
27
|
#endif
|
28
28
|
|
29
29
|
#ifndef NANOSEC
|
30
|
-
# define NANOSEC
|
30
|
+
# define NANOSEC ((uint64_t) 1e9)
|
31
31
|
#endif
|
32
32
|
|
33
33
|
|
34
34
|
TEST_IMPL(hrtime) {
|
35
35
|
uint64_t a, b, diff;
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
36
|
+
int i = 75;
|
37
|
+
while (i > 0) {
|
38
|
+
a = uv_hrtime();
|
39
|
+
uv_sleep(45);
|
40
|
+
b = uv_hrtime();
|
41
|
+
|
42
|
+
diff = b - a;
|
43
|
+
|
44
|
+
/* printf("i= %d diff = %llu\n", i, (unsigned long long int) diff); */
|
45
|
+
|
46
|
+
/* The windows Sleep() function has only a resolution of 10-20 ms. */
|
47
|
+
/* Check that the difference between the two hrtime values is somewhat in */
|
48
|
+
/* the range we expect it to be. */
|
49
|
+
ASSERT(diff > (uint64_t) 25 * NANOSEC / MILLISEC);
|
50
|
+
ASSERT(diff < (uint64_t) 60 * NANOSEC / MILLISEC);
|
51
|
+
--i;
|
52
|
+
}
|
50
53
|
return 0;
|
51
54
|
}
|
@@ -200,6 +200,7 @@ void spawn_helper(uv_pipe_t* channel,
|
|
200
200
|
char exepath[1024];
|
201
201
|
char* args[3];
|
202
202
|
int r;
|
203
|
+
uv_stdio_container_t stdio[1];
|
203
204
|
|
204
205
|
r = uv_pipe_init(uv_default_loop(), channel, 1);
|
205
206
|
ASSERT(r == 0);
|
@@ -218,7 +219,12 @@ void spawn_helper(uv_pipe_t* channel,
|
|
218
219
|
options.file = exepath;
|
219
220
|
options.args = args;
|
220
221
|
options.exit_cb = exit_cb;
|
221
|
-
|
222
|
+
|
223
|
+
options.stdio = stdio;
|
224
|
+
options.stdio[0].flags = UV_CREATE_PIPE |
|
225
|
+
UV_READABLE_PIPE | UV_WRITABLE_PIPE;
|
226
|
+
options.stdio[0].data.stream = (uv_stream_t*)channel;
|
227
|
+
options.stdio_count = 1;
|
222
228
|
|
223
229
|
r = uv_spawn(uv_default_loop(), process, options);
|
224
230
|
ASSERT(r == 0);
|
@@ -611,4 +617,4 @@ int ipc_helper_tcp_connection() {
|
|
611
617
|
ASSERT(close_cb_called == 4);
|
612
618
|
|
613
619
|
return 0;
|
614
|
-
}
|
620
|
+
}
|
@@ -20,6 +20,11 @@
|
|
20
20
|
*/
|
21
21
|
|
22
22
|
TEST_DECLARE (platform_output)
|
23
|
+
TEST_DECLARE (callback_order)
|
24
|
+
TEST_DECLARE (run_once)
|
25
|
+
TEST_DECLARE (semaphore_1)
|
26
|
+
TEST_DECLARE (semaphore_2)
|
27
|
+
TEST_DECLARE (semaphore_3)
|
23
28
|
TEST_DECLARE (tty)
|
24
29
|
TEST_DECLARE (stdio_over_pipes)
|
25
30
|
TEST_DECLARE (ipc_listen_before_write)
|
@@ -35,6 +40,8 @@ TEST_DECLARE (pipe_ping_pong)
|
|
35
40
|
TEST_DECLARE (delayed_accept)
|
36
41
|
TEST_DECLARE (multiple_listen)
|
37
42
|
TEST_DECLARE (tcp_writealot)
|
43
|
+
TEST_DECLARE (tcp_connect_error_after_write)
|
44
|
+
TEST_DECLARE (tcp_shutdown_after_write)
|
38
45
|
TEST_DECLARE (tcp_bind_error_addrinuse)
|
39
46
|
TEST_DECLARE (tcp_bind_error_addrnotavail_1)
|
40
47
|
TEST_DECLARE (tcp_bind_error_addrnotavail_2)
|
@@ -42,6 +49,9 @@ TEST_DECLARE (tcp_bind_error_fault)
|
|
42
49
|
TEST_DECLARE (tcp_bind_error_inval)
|
43
50
|
TEST_DECLARE (tcp_bind_localhost_ok)
|
44
51
|
TEST_DECLARE (tcp_listen_without_bind)
|
52
|
+
TEST_DECLARE (tcp_connect_error_fault)
|
53
|
+
TEST_DECLARE (tcp_connect_timeout)
|
54
|
+
TEST_DECLARE (tcp_close_while_connecting)
|
45
55
|
TEST_DECLARE (tcp_close)
|
46
56
|
TEST_DECLARE (tcp_flags)
|
47
57
|
TEST_DECLARE (tcp_write_error)
|
@@ -73,9 +83,11 @@ TEST_DECLARE (callback_stack)
|
|
73
83
|
TEST_DECLARE (error_message)
|
74
84
|
TEST_DECLARE (timer)
|
75
85
|
TEST_DECLARE (timer_again)
|
86
|
+
TEST_DECLARE (timer_start_twice)
|
76
87
|
TEST_DECLARE (idle_starvation)
|
77
88
|
TEST_DECLARE (loop_handles)
|
78
89
|
TEST_DECLARE (get_loadavg)
|
90
|
+
TEST_DECLARE (walk_handles)
|
79
91
|
TEST_DECLARE (ref)
|
80
92
|
TEST_DECLARE (idle_ref)
|
81
93
|
TEST_DECLARE (async_ref)
|
@@ -85,11 +97,11 @@ TEST_DECLARE (unref_in_prepare_cb)
|
|
85
97
|
TEST_DECLARE (timer_ref)
|
86
98
|
TEST_DECLARE (timer_ref2)
|
87
99
|
TEST_DECLARE (fs_event_ref)
|
100
|
+
TEST_DECLARE (fs_poll_ref)
|
88
101
|
TEST_DECLARE (tcp_ref)
|
89
102
|
TEST_DECLARE (tcp_ref2)
|
90
103
|
TEST_DECLARE (tcp_ref3)
|
91
104
|
TEST_DECLARE (tcp_ref4)
|
92
|
-
TEST_DECLARE (tcp_ref5)
|
93
105
|
TEST_DECLARE (udp_ref)
|
94
106
|
TEST_DECLARE (udp_ref2)
|
95
107
|
TEST_DECLARE (udp_ref3)
|
@@ -97,7 +109,6 @@ TEST_DECLARE (pipe_ref)
|
|
97
109
|
TEST_DECLARE (pipe_ref2)
|
98
110
|
TEST_DECLARE (pipe_ref3)
|
99
111
|
TEST_DECLARE (pipe_ref4)
|
100
|
-
TEST_DECLARE (pipe_ref5)
|
101
112
|
TEST_DECLARE (process_ref)
|
102
113
|
TEST_DECLARE (async)
|
103
114
|
TEST_DECLARE (get_currentexe)
|
@@ -115,9 +126,16 @@ TEST_DECLARE (pass_always)
|
|
115
126
|
TEST_DECLARE (spawn_exit_code)
|
116
127
|
TEST_DECLARE (spawn_stdout)
|
117
128
|
TEST_DECLARE (spawn_stdin)
|
129
|
+
TEST_DECLARE (spawn_stdio_greater_than_3)
|
130
|
+
TEST_DECLARE (spawn_ignored_stdio)
|
118
131
|
TEST_DECLARE (spawn_and_kill)
|
132
|
+
TEST_DECLARE (spawn_detached)
|
119
133
|
TEST_DECLARE (spawn_and_kill_with_std)
|
120
134
|
TEST_DECLARE (spawn_and_ping)
|
135
|
+
TEST_DECLARE (spawn_setuid_fails)
|
136
|
+
TEST_DECLARE (spawn_setgid_fails)
|
137
|
+
TEST_DECLARE (spawn_stdout_to_file)
|
138
|
+
TEST_DECLARE (fs_poll)
|
121
139
|
TEST_DECLARE (kill)
|
122
140
|
TEST_DECLARE (fs_file_noent)
|
123
141
|
TEST_DECLARE (fs_file_nametoolong)
|
@@ -131,6 +149,7 @@ TEST_DECLARE (fs_chmod)
|
|
131
149
|
TEST_DECLARE (fs_chown)
|
132
150
|
TEST_DECLARE (fs_link)
|
133
151
|
TEST_DECLARE (fs_symlink)
|
152
|
+
TEST_DECLARE (fs_symlink_dir)
|
134
153
|
TEST_DECLARE (fs_utime)
|
135
154
|
TEST_DECLARE (fs_futime)
|
136
155
|
TEST_DECLARE (fs_file_open_append)
|
@@ -142,14 +161,13 @@ TEST_DECLARE (fs_event_watch_file_current_dir)
|
|
142
161
|
TEST_DECLARE (fs_event_no_callback_on_close)
|
143
162
|
TEST_DECLARE (fs_event_immediate_close)
|
144
163
|
TEST_DECLARE (fs_event_close_with_pending_event)
|
145
|
-
TEST_DECLARE (fs_event_close_in_callback)
|
164
|
+
TEST_DECLARE (fs_event_close_in_callback)
|
146
165
|
TEST_DECLARE (fs_readdir_empty_dir)
|
147
166
|
TEST_DECLARE (fs_readdir_file)
|
148
167
|
TEST_DECLARE (fs_open_dir)
|
149
168
|
TEST_DECLARE (fs_rename_to_existing_file)
|
150
169
|
TEST_DECLARE (threadpool_queue_work_simple)
|
151
170
|
TEST_DECLARE (threadpool_multiple_event_loops)
|
152
|
-
TEST_DECLARE (eio_overflow)
|
153
171
|
TEST_DECLARE (thread_mutex)
|
154
172
|
TEST_DECLARE (thread_rwlock)
|
155
173
|
TEST_DECLARE (thread_create)
|
@@ -157,6 +175,9 @@ TEST_DECLARE (strlcpy)
|
|
157
175
|
TEST_DECLARE (strlcat)
|
158
176
|
TEST_DECLARE (counters_init)
|
159
177
|
TEST_DECLARE (dlerror)
|
178
|
+
TEST_DECLARE (poll_duplex)
|
179
|
+
TEST_DECLARE (poll_unidirectional)
|
180
|
+
TEST_DECLARE (poll_close)
|
160
181
|
#ifdef _WIN32
|
161
182
|
TEST_DECLARE (spawn_detect_pipe_name_collisions_on_windows)
|
162
183
|
TEST_DECLARE (argument_escaping)
|
@@ -164,6 +185,8 @@ TEST_DECLARE (environment_creation)
|
|
164
185
|
TEST_DECLARE (listen_with_simultaneous_accepts)
|
165
186
|
TEST_DECLARE (listen_no_simultaneous_accepts)
|
166
187
|
TEST_DECLARE (fs_stat_root)
|
188
|
+
#else
|
189
|
+
TEST_DECLARE (spawn_setuid_setgid)
|
167
190
|
#endif
|
168
191
|
HELPER_DECLARE (tcp4_echo_server)
|
169
192
|
HELPER_DECLARE (tcp6_echo_server)
|
@@ -174,6 +197,14 @@ HELPER_DECLARE (pipe_echo_server)
|
|
174
197
|
TASK_LIST_START
|
175
198
|
TEST_OUTPUT_ENTRY (platform_output)
|
176
199
|
|
200
|
+
#if 0
|
201
|
+
TEST_ENTRY (callback_order)
|
202
|
+
#endif
|
203
|
+
TEST_ENTRY (run_once)
|
204
|
+
TEST_ENTRY (semaphore_1)
|
205
|
+
TEST_ENTRY (semaphore_2)
|
206
|
+
TEST_ENTRY (semaphore_3)
|
207
|
+
|
177
208
|
TEST_ENTRY (pipe_connect_bad_name)
|
178
209
|
TEST_ENTRY (pipe_connect_to_file)
|
179
210
|
|
@@ -202,6 +233,10 @@ TASK_LIST_START
|
|
202
233
|
TEST_ENTRY (tcp_writealot)
|
203
234
|
TEST_HELPER (tcp_writealot, tcp4_echo_server)
|
204
235
|
|
236
|
+
TEST_ENTRY (tcp_shutdown_after_write)
|
237
|
+
TEST_HELPER (tcp_shutdown_after_write, tcp4_echo_server)
|
238
|
+
|
239
|
+
TEST_ENTRY (tcp_connect_error_after_write)
|
205
240
|
TEST_ENTRY (tcp_bind_error_addrinuse)
|
206
241
|
TEST_ENTRY (tcp_bind_error_addrnotavail_1)
|
207
242
|
TEST_ENTRY (tcp_bind_error_addrnotavail_2)
|
@@ -209,6 +244,9 @@ TASK_LIST_START
|
|
209
244
|
TEST_ENTRY (tcp_bind_error_inval)
|
210
245
|
TEST_ENTRY (tcp_bind_localhost_ok)
|
211
246
|
TEST_ENTRY (tcp_listen_without_bind)
|
247
|
+
TEST_ENTRY (tcp_connect_error_fault)
|
248
|
+
TEST_ENTRY (tcp_connect_timeout)
|
249
|
+
TEST_ENTRY (tcp_close_while_connecting)
|
212
250
|
TEST_ENTRY (tcp_close)
|
213
251
|
TEST_ENTRY (tcp_flags)
|
214
252
|
TEST_ENTRY (tcp_write_error)
|
@@ -251,11 +289,13 @@ TASK_LIST_START
|
|
251
289
|
|
252
290
|
TEST_ENTRY (timer)
|
253
291
|
TEST_ENTRY (timer_again)
|
292
|
+
TEST_ENTRY (timer_start_twice)
|
254
293
|
|
255
294
|
TEST_ENTRY (idle_starvation)
|
256
295
|
|
257
296
|
TEST_ENTRY (ref)
|
258
297
|
TEST_ENTRY (idle_ref)
|
298
|
+
TEST_ENTRY (fs_poll_ref)
|
259
299
|
TEST_ENTRY (async_ref)
|
260
300
|
TEST_ENTRY (prepare_ref)
|
261
301
|
TEST_ENTRY (check_ref)
|
@@ -269,8 +309,6 @@ TASK_LIST_START
|
|
269
309
|
TEST_HELPER (tcp_ref3, tcp4_echo_server)
|
270
310
|
TEST_ENTRY (tcp_ref4)
|
271
311
|
TEST_HELPER (tcp_ref4, tcp4_echo_server)
|
272
|
-
TEST_ENTRY (tcp_ref5)
|
273
|
-
TEST_HELPER (tcp_ref5, tcp4_echo_server)
|
274
312
|
TEST_ENTRY (udp_ref)
|
275
313
|
TEST_ENTRY (udp_ref2)
|
276
314
|
TEST_ENTRY (udp_ref3)
|
@@ -281,11 +319,10 @@ TASK_LIST_START
|
|
281
319
|
TEST_HELPER (pipe_ref3, pipe_echo_server)
|
282
320
|
TEST_ENTRY (pipe_ref4)
|
283
321
|
TEST_HELPER (pipe_ref4, pipe_echo_server)
|
284
|
-
TEST_ENTRY (pipe_ref5)
|
285
|
-
TEST_HELPER (pipe_ref5, pipe_echo_server)
|
286
322
|
TEST_ENTRY (process_ref)
|
287
323
|
|
288
324
|
TEST_ENTRY (loop_handles)
|
325
|
+
TEST_ENTRY (walk_handles)
|
289
326
|
|
290
327
|
TEST_ENTRY (async)
|
291
328
|
|
@@ -310,12 +347,23 @@ TASK_LIST_START
|
|
310
347
|
TEST_ENTRY (getsockname_tcp)
|
311
348
|
TEST_ENTRY (getsockname_udp)
|
312
349
|
|
350
|
+
TEST_ENTRY (poll_duplex)
|
351
|
+
TEST_ENTRY (poll_unidirectional)
|
352
|
+
TEST_ENTRY (poll_close)
|
353
|
+
|
313
354
|
TEST_ENTRY (spawn_exit_code)
|
314
355
|
TEST_ENTRY (spawn_stdout)
|
315
356
|
TEST_ENTRY (spawn_stdin)
|
357
|
+
TEST_ENTRY (spawn_stdio_greater_than_3)
|
358
|
+
TEST_ENTRY (spawn_ignored_stdio)
|
316
359
|
TEST_ENTRY (spawn_and_kill)
|
360
|
+
TEST_ENTRY (spawn_detached)
|
317
361
|
TEST_ENTRY (spawn_and_kill_with_std)
|
318
362
|
TEST_ENTRY (spawn_and_ping)
|
363
|
+
TEST_ENTRY (spawn_setuid_fails)
|
364
|
+
TEST_ENTRY (spawn_setgid_fails)
|
365
|
+
TEST_ENTRY (spawn_stdout_to_file)
|
366
|
+
TEST_ENTRY (fs_poll)
|
319
367
|
TEST_ENTRY (kill)
|
320
368
|
#ifdef _WIN32
|
321
369
|
TEST_ENTRY (spawn_detect_pipe_name_collisions_on_windows)
|
@@ -324,6 +372,8 @@ TASK_LIST_START
|
|
324
372
|
TEST_ENTRY (listen_with_simultaneous_accepts)
|
325
373
|
TEST_ENTRY (listen_no_simultaneous_accepts)
|
326
374
|
TEST_ENTRY (fs_stat_root)
|
375
|
+
#else
|
376
|
+
TEST_ENTRY (spawn_setuid_setgid)
|
327
377
|
#endif
|
328
378
|
|
329
379
|
TEST_ENTRY (fs_file_noent)
|
@@ -339,6 +389,7 @@ TASK_LIST_START
|
|
339
389
|
TEST_ENTRY (fs_utime)
|
340
390
|
TEST_ENTRY (fs_futime)
|
341
391
|
TEST_ENTRY (fs_symlink)
|
392
|
+
TEST_ENTRY (fs_symlink_dir)
|
342
393
|
TEST_ENTRY (fs_stat_missing_path)
|
343
394
|
TEST_ENTRY (fs_read_file_eof)
|
344
395
|
TEST_ENTRY (fs_file_open_append)
|
@@ -355,7 +406,6 @@ TASK_LIST_START
|
|
355
406
|
TEST_ENTRY (fs_rename_to_existing_file)
|
356
407
|
TEST_ENTRY (threadpool_queue_work_simple)
|
357
408
|
TEST_ENTRY (threadpool_multiple_event_loops)
|
358
|
-
TEST_ENTRY (eio_overflow)
|
359
409
|
TEST_ENTRY (thread_mutex)
|
360
410
|
TEST_ENTRY (thread_rwlock)
|
361
411
|
TEST_ENTRY (thread_create)
|