asyncengine 0.0.1.testing1 → 0.0.2.alpha1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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)
|