gvisor/test/syscalls/BUILD

970 lines
18 KiB
Python
Raw Normal View History

load("//test/runner:defs.bzl", "syscall_test")
package(licenses = ["notice"])
syscall_test(
test = "//test/syscalls/linux:32bit_test",
)
syscall_test(
test = "//test/syscalls/linux:accept_bind_stream_test",
)
syscall_test(
size = "large",
Add support for TIME_WAIT timeout. This change adds explicit support for honoring the 2MSL timeout for sockets in TIME_WAIT state. It also adds support for the TCP_LINGER2 option that allows modification of the FIN_WAIT2 state timeout duration for a given socket. It also adds an option to modify the Stack wide TIME_WAIT timeout but this is only for testing. On Linux this is fixed at 60s. Further, we also now correctly process RST's in CLOSE_WAIT and close the socket similar to linux without moving it to error state. We also now handle SYN in ESTABLISHED state as per RFC5961#section-4.1. Earlier we would just drop these SYNs. Which can result in some tests that pass on linux to fail on gVisor. Netstack now honors TIME_WAIT correctly as well as handles the following cases correctly. - TCP RSTs in TIME_WAIT are ignored. - A duplicate TCP FIN during TIME_WAIT extends the TIME_WAIT and a dup ACK is sent in response to the FIN as the dup FIN indicates potential loss of the original final ACK. - An out of order segment during TIME_WAIT generates a dup ACK. - A new SYN w/ a sequence number > the highest sequence number in the previous connection closes the TIME_WAIT early and opens a new connection. Further to make the SYN case work correctly the ISN (Initial Sequence Number) generation for Netstack has been updated to be as per RFC. Its not a pure random number anymore and follows the recommendation in https://tools.ietf.org/html/rfc6528#page-3. The current hash used is not a cryptographically secure hash function. A separate change will update the hash function used to Siphash similar to what is used in Linux. PiperOrigin-RevId: 279106406
2019-11-07 17:45:26 +00:00
shard_count = 50,
test = "//test/syscalls/linux:accept_bind_test",
)
syscall_test(
add_overlay = True,
test = "//test/syscalls/linux:access_test",
)
syscall_test(
test = "//test/syscalls/linux:affinity_test",
)
syscall_test(
add_overlay = True,
test = "//test/syscalls/linux:aio_test",
)
syscall_test(
size = "medium",
shard_count = 5,
test = "//test/syscalls/linux:alarm_test",
)
syscall_test(
test = "//test/syscalls/linux:arch_prctl_test",
)
syscall_test(
test = "//test/syscalls/linux:bad_test",
)
syscall_test(
size = "large",
add_overlay = True,
test = "//test/syscalls/linux:bind_test",
)
syscall_test(
test = "//test/syscalls/linux:brk_test",
)
syscall_test(
test = "//test/syscalls/linux:socket_test",
)
syscall_test(
test = "//test/syscalls/linux:socket_capability_test",
)
syscall_test(
size = "large",
# Produce too many logs in the debug mode.
debug = False,
shard_count = 50,
# Takes too long for TSAN. Since this is kind of a stress test that doesn't
# involve much concurrency, TSAN's usefulness here is limited anyway.
tags = ["nogotsan"],
test = "//test/syscalls/linux:socket_stress_test",
vfs2 = False,
)
syscall_test(
add_overlay = True,
test = "//test/syscalls/linux:chdir_test",
)
syscall_test(
add_overlay = True,
test = "//test/syscalls/linux:chmod_test",
)
syscall_test(
size = "medium",
add_overlay = True,
test = "//test/syscalls/linux:chown_test",
use_tmpfs = True, # chwon tests require gofer to be running as root.
)
syscall_test(
add_overlay = True,
test = "//test/syscalls/linux:chroot_test",
)
syscall_test(
test = "//test/syscalls/linux:clock_getres_test",
)
syscall_test(
size = "medium",
test = "//test/syscalls/linux:clock_gettime_test",
)
syscall_test(
test = "//test/syscalls/linux:clock_nanosleep_test",
)
syscall_test(
test = "//test/syscalls/linux:concurrency_test",
)
syscall_test(
add_uds_tree = True,
test = "//test/syscalls/linux:connect_external_test",
use_tmpfs = True,
)
syscall_test(
add_overlay = True,
test = "//test/syscalls/linux:creat_test",
)
syscall_test(
fuse = "True",
test = "//test/syscalls/linux:dev_test",
)
syscall_test(
add_overlay = True,
test = "//test/syscalls/linux:dup_test",
)
syscall_test(
test = "//test/syscalls/linux:epoll_test",
)
syscall_test(
test = "//test/syscalls/linux:eventfd_test",
)
syscall_test(
test = "//test/syscalls/linux:exceptions_test",
)
syscall_test(
size = "medium",
add_overlay = True,
test = "//test/syscalls/linux:exec_test",
)
syscall_test(
size = "medium",
add_overlay = True,
test = "//test/syscalls/linux:exec_binary_test",
)
syscall_test(
test = "//test/syscalls/linux:exit_test",
)
syscall_test(
add_overlay = True,
test = "//test/syscalls/linux:fadvise64_test",
)
syscall_test(
add_overlay = True,
test = "//test/syscalls/linux:fallocate_test",
)
syscall_test(
test = "//test/syscalls/linux:fault_test",
)
syscall_test(
add_overlay = True,
test = "//test/syscalls/linux:fchdir_test",
)
syscall_test(
size = "medium",
test = "//test/syscalls/linux:fcntl_test",
)
syscall_test(
size = "medium",
add_overlay = True,
test = "//test/syscalls/linux:flock_test",
)
syscall_test(
test = "//test/syscalls/linux:fork_test",
)
syscall_test(
test = "//test/syscalls/linux:fpsig_fork_test",
)
syscall_test(
test = "//test/syscalls/linux:fpsig_nested_test",
)
syscall_test(
add_overlay = True,
test = "//test/syscalls/linux:fsync_test",
)
syscall_test(
size = "medium",
shard_count = 5,
test = "//test/syscalls/linux:futex_test",
)
syscall_test(
test = "//test/syscalls/linux:getcpu_host_test",
)
syscall_test(
test = "//test/syscalls/linux:getcpu_test",
)
syscall_test(
add_overlay = True,
test = "//test/syscalls/linux:getdents_test",
)
syscall_test(
test = "//test/syscalls/linux:getrandom_test",
)
syscall_test(
test = "//test/syscalls/linux:getrusage_test",
)
syscall_test(
size = "medium",
add_overlay = True,
test = "//test/syscalls/linux:inotify_test",
)
syscall_test(
size = "medium",
add_overlay = True,
test = "//test/syscalls/linux:ioctl_test",
)
syscall_test(
test = "//test/syscalls/linux:iptables_test",
)
syscall_test(
test = "//test/syscalls/linux:ip6tables_test",
)
syscall_test(
size = "large",
shard_count = 5,
test = "//test/syscalls/linux:itimer_test",
)
Expose basic coverage information to userspace through kcov interface. In Linux, a kernel configuration is set that compiles the kernel with a custom function that is called at the beginning of every basic block, which updates the memory-mapped coverage information. The Go coverage tool does not allow us to inject arbitrary instructions into basic blocks, but it does provide data that we can convert to a kcov-like format and transfer them to userspace through a memory mapping. Note that this is not a strict implementation of kcov, which is especially tricky to do because we do not have the same coverage tools available in Go that that are available for the actual Linux kernel. In Linux, a kernel configuration is set that compiles the kernel with a custom function that is called at the beginning of every basic block to write program counters to the kcov memory mapping. In Go, however, coverage tools only give us a count of basic blocks as they are executed. Every time we return to userspace, we collect the coverage information and write out PCs for each block that was executed, providing userspace with the illusion that the kcov data is always up to date. For convenience, we also generate a unique synthetic PC for each block instead of using actual PCs. Finally, we do not provide thread-specific coverage data (each kcov instance only contains PCs executed by the thread owning it); instead, we will supply data for any file specified by -- instrumentation_filter. Also, fix issue in nogo that was causing pkg/coverage:coverage_nogo compilation to fail. PiperOrigin-RevId: 328426526
2020-08-25 23:26:53 +00:00
syscall_test(
test = "//test/syscalls/linux:kcov_test",
)
syscall_test(
test = "//test/syscalls/linux:kill_test",
)
syscall_test(
add_overlay = True,
test = "//test/syscalls/linux:link_test",
use_tmpfs = True, # gofer needs CAP_DAC_READ_SEARCH to use AT_EMPTY_PATH with linkat(2)
)
syscall_test(
add_overlay = True,
test = "//test/syscalls/linux:lseek_test",
)
syscall_test(
test = "//test/syscalls/linux:madvise_test",
)
syscall_test(
test = "//test/syscalls/linux:membarrier_test",
)
syscall_test(
test = "//test/syscalls/linux:memory_accounting_test",
)
syscall_test(
test = "//test/syscalls/linux:mempolicy_test",
)
syscall_test(
test = "//test/syscalls/linux:mincore_test",
)
syscall_test(
add_overlay = True,
test = "//test/syscalls/linux:mkdir_test",
)
syscall_test(
add_overlay = True,
test = "//test/syscalls/linux:mknod_test",
)
syscall_test(
size = "medium",
shard_count = 5,
test = "//test/syscalls/linux:mmap_test",
)
syscall_test(
add_overlay = True,
test = "//test/syscalls/linux:mount_test",
)
syscall_test(
size = "medium",
test = "//test/syscalls/linux:mremap_test",
)
syscall_test(
size = "medium",
test = "//test/syscalls/linux:msync_test",
)
syscall_test(
test = "//test/syscalls/linux:munmap_test",
)
syscall_test(
test = "//test/syscalls/linux:network_namespace_test",
)
syscall_test(
add_overlay = True,
test = "//test/syscalls/linux:open_create_test",
)
syscall_test(
add_overlay = True,
test = "//test/syscalls/linux:open_test",
)
syscall_test(
test = "//test/syscalls/linux:packet_socket_raw_test",
)
syscall_test(
test = "//test/syscalls/linux:packet_socket_test",
)
syscall_test(
test = "//test/syscalls/linux:partial_bad_buffer_test",
)
syscall_test(
test = "//test/syscalls/linux:pause_test",
)
syscall_test(
size = "medium",
# Takes too long under gotsan to run.
tags = ["nogotsan"],
test = "//test/syscalls/linux:ping_socket_test",
)
syscall_test(
size = "large",
add_overlay = True,
shard_count = 5,
test = "//test/syscalls/linux:pipe_test",
)
syscall_test(
test = "//test/syscalls/linux:poll_test",
)
syscall_test(
size = "medium",
test = "//test/syscalls/linux:ppoll_test",
)
syscall_test(
test = "//test/syscalls/linux:prctl_setuid_test",
)
syscall_test(
test = "//test/syscalls/linux:prctl_test",
)
syscall_test(
add_overlay = True,
test = "//test/syscalls/linux:pread64_test",
)
syscall_test(
add_overlay = True,
test = "//test/syscalls/linux:preadv_test",
)
syscall_test(
add_overlay = True,
test = "//test/syscalls/linux:preadv2_test",
)
syscall_test(
test = "//test/syscalls/linux:priority_test",
)
syscall_test(
size = "medium",
test = "//test/syscalls/linux:proc_test",
)
syscall_test(
test = "//test/syscalls/linux:proc_net_test",
)
syscall_test(
test = "//test/syscalls/linux:proc_pid_oomscore_test",
)
syscall_test(
test = "//test/syscalls/linux:proc_pid_smaps_test",
)
syscall_test(
test = "//test/syscalls/linux:proc_pid_uid_gid_map_test",
)
syscall_test(
size = "medium",
test = "//test/syscalls/linux:pselect_test",
)
syscall_test(
test = "//test/syscalls/linux:ptrace_test",
)
syscall_test(
size = "medium",
shard_count = 5,
test = "//test/syscalls/linux:pty_test",
)
syscall_test(
test = "//test/syscalls/linux:pty_root_test",
)
syscall_test(
add_overlay = True,
test = "//test/syscalls/linux:pwritev2_test",
)
syscall_test(
add_overlay = True,
test = "//test/syscalls/linux:pwrite64_test",
)
syscall_test(
test = "//test/syscalls/linux:raw_socket_hdrincl_test",
)
syscall_test(
test = "//test/syscalls/linux:raw_socket_icmp_test",
)
syscall_test(
test = "//test/syscalls/linux:raw_socket_test",
)
syscall_test(
add_overlay = True,
test = "//test/syscalls/linux:read_test",
)
syscall_test(
add_overlay = True,
test = "//test/syscalls/linux:readahead_test",
)
syscall_test(
size = "medium",
shard_count = 5,
test = "//test/syscalls/linux:readv_socket_test",
)
syscall_test(
size = "medium",
add_overlay = True,
test = "//test/syscalls/linux:readv_test",
)
syscall_test(
size = "medium",
add_overlay = True,
test = "//test/syscalls/linux:rename_test",
)
syscall_test(
test = "//test/syscalls/linux:rlimits_test",
)
syscall_test(
test = "//test/syscalls/linux:rseq_test",
)
syscall_test(
test = "//test/syscalls/linux:rtsignal_test",
)
syscall_test(
test = "//test/syscalls/linux:signalfd_test",
)
syscall_test(
test = "//test/syscalls/linux:sched_test",
)
syscall_test(
test = "//test/syscalls/linux:sched_yield_test",
)
syscall_test(
test = "//test/syscalls/linux:seccomp_test",
)
syscall_test(
test = "//test/syscalls/linux:select_test",
)
syscall_test(
shard_count = 20,
test = "//test/syscalls/linux:semaphore_test",
)
syscall_test(
add_overlay = True,
test = "//test/syscalls/linux:sendfile_socket_test",
)
syscall_test(
add_overlay = True,
test = "//test/syscalls/linux:sendfile_test",
)
syscall_test(
add_overlay = True,
test = "//test/syscalls/linux:splice_test",
)
syscall_test(
test = "//test/syscalls/linux:sigaction_test",
)
# TODO(b/119826902): Enable once the test passes in runsc.
# syscall_test(vfs2="True",test = "//test/syscalls/linux:sigaltstack_test")
syscall_test(
test = "//test/syscalls/linux:sigiret_test",
)
syscall_test(
test = "//test/syscalls/linux:sigprocmask_test",
)
syscall_test(
size = "medium",
test = "//test/syscalls/linux:sigstop_test",
)
syscall_test(
test = "//test/syscalls/linux:sigtimedwait_test",
)
syscall_test(
size = "medium",
test = "//test/syscalls/linux:shm_test",
)
syscall_test(
size = "medium",
test = "//test/syscalls/linux:socket_abstract_non_blocking_test",
)
syscall_test(
size = "large",
Add support for TIME_WAIT timeout. This change adds explicit support for honoring the 2MSL timeout for sockets in TIME_WAIT state. It also adds support for the TCP_LINGER2 option that allows modification of the FIN_WAIT2 state timeout duration for a given socket. It also adds an option to modify the Stack wide TIME_WAIT timeout but this is only for testing. On Linux this is fixed at 60s. Further, we also now correctly process RST's in CLOSE_WAIT and close the socket similar to linux without moving it to error state. We also now handle SYN in ESTABLISHED state as per RFC5961#section-4.1. Earlier we would just drop these SYNs. Which can result in some tests that pass on linux to fail on gVisor. Netstack now honors TIME_WAIT correctly as well as handles the following cases correctly. - TCP RSTs in TIME_WAIT are ignored. - A duplicate TCP FIN during TIME_WAIT extends the TIME_WAIT and a dup ACK is sent in response to the FIN as the dup FIN indicates potential loss of the original final ACK. - An out of order segment during TIME_WAIT generates a dup ACK. - A new SYN w/ a sequence number > the highest sequence number in the previous connection closes the TIME_WAIT early and opens a new connection. Further to make the SYN case work correctly the ISN (Initial Sequence Number) generation for Netstack has been updated to be as per RFC. Its not a pure random number anymore and follows the recommendation in https://tools.ietf.org/html/rfc6528#page-3. The current hash used is not a cryptographically secure hash function. A separate change will update the hash function used to Siphash similar to what is used in Linux. PiperOrigin-RevId: 279106406
2019-11-07 17:45:26 +00:00
shard_count = 50,
test = "//test/syscalls/linux:socket_abstract_test",
)
syscall_test(
size = "medium",
test = "//test/syscalls/linux:socket_domain_non_blocking_test",
)
syscall_test(
size = "large",
Add support for TIME_WAIT timeout. This change adds explicit support for honoring the 2MSL timeout for sockets in TIME_WAIT state. It also adds support for the TCP_LINGER2 option that allows modification of the FIN_WAIT2 state timeout duration for a given socket. It also adds an option to modify the Stack wide TIME_WAIT timeout but this is only for testing. On Linux this is fixed at 60s. Further, we also now correctly process RST's in CLOSE_WAIT and close the socket similar to linux without moving it to error state. We also now handle SYN in ESTABLISHED state as per RFC5961#section-4.1. Earlier we would just drop these SYNs. Which can result in some tests that pass on linux to fail on gVisor. Netstack now honors TIME_WAIT correctly as well as handles the following cases correctly. - TCP RSTs in TIME_WAIT are ignored. - A duplicate TCP FIN during TIME_WAIT extends the TIME_WAIT and a dup ACK is sent in response to the FIN as the dup FIN indicates potential loss of the original final ACK. - An out of order segment during TIME_WAIT generates a dup ACK. - A new SYN w/ a sequence number > the highest sequence number in the previous connection closes the TIME_WAIT early and opens a new connection. Further to make the SYN case work correctly the ISN (Initial Sequence Number) generation for Netstack has been updated to be as per RFC. Its not a pure random number anymore and follows the recommendation in https://tools.ietf.org/html/rfc6528#page-3. The current hash used is not a cryptographically secure hash function. A separate change will update the hash function used to Siphash similar to what is used in Linux. PiperOrigin-RevId: 279106406
2019-11-07 17:45:26 +00:00
shard_count = 50,
test = "//test/syscalls/linux:socket_domain_test",
)
syscall_test(
size = "medium",
add_overlay = True,
test = "//test/syscalls/linux:socket_filesystem_non_blocking_test",
)
syscall_test(
size = "large",
add_overlay = True,
Add support for TIME_WAIT timeout. This change adds explicit support for honoring the 2MSL timeout for sockets in TIME_WAIT state. It also adds support for the TCP_LINGER2 option that allows modification of the FIN_WAIT2 state timeout duration for a given socket. It also adds an option to modify the Stack wide TIME_WAIT timeout but this is only for testing. On Linux this is fixed at 60s. Further, we also now correctly process RST's in CLOSE_WAIT and close the socket similar to linux without moving it to error state. We also now handle SYN in ESTABLISHED state as per RFC5961#section-4.1. Earlier we would just drop these SYNs. Which can result in some tests that pass on linux to fail on gVisor. Netstack now honors TIME_WAIT correctly as well as handles the following cases correctly. - TCP RSTs in TIME_WAIT are ignored. - A duplicate TCP FIN during TIME_WAIT extends the TIME_WAIT and a dup ACK is sent in response to the FIN as the dup FIN indicates potential loss of the original final ACK. - An out of order segment during TIME_WAIT generates a dup ACK. - A new SYN w/ a sequence number > the highest sequence number in the previous connection closes the TIME_WAIT early and opens a new connection. Further to make the SYN case work correctly the ISN (Initial Sequence Number) generation for Netstack has been updated to be as per RFC. Its not a pure random number anymore and follows the recommendation in https://tools.ietf.org/html/rfc6528#page-3. The current hash used is not a cryptographically secure hash function. A separate change will update the hash function used to Siphash similar to what is used in Linux. PiperOrigin-RevId: 279106406
2019-11-07 17:45:26 +00:00
shard_count = 50,
test = "//test/syscalls/linux:socket_filesystem_test",
)
syscall_test(
size = "large",
Add support for TIME_WAIT timeout. This change adds explicit support for honoring the 2MSL timeout for sockets in TIME_WAIT state. It also adds support for the TCP_LINGER2 option that allows modification of the FIN_WAIT2 state timeout duration for a given socket. It also adds an option to modify the Stack wide TIME_WAIT timeout but this is only for testing. On Linux this is fixed at 60s. Further, we also now correctly process RST's in CLOSE_WAIT and close the socket similar to linux without moving it to error state. We also now handle SYN in ESTABLISHED state as per RFC5961#section-4.1. Earlier we would just drop these SYNs. Which can result in some tests that pass on linux to fail on gVisor. Netstack now honors TIME_WAIT correctly as well as handles the following cases correctly. - TCP RSTs in TIME_WAIT are ignored. - A duplicate TCP FIN during TIME_WAIT extends the TIME_WAIT and a dup ACK is sent in response to the FIN as the dup FIN indicates potential loss of the original final ACK. - An out of order segment during TIME_WAIT generates a dup ACK. - A new SYN w/ a sequence number > the highest sequence number in the previous connection closes the TIME_WAIT early and opens a new connection. Further to make the SYN case work correctly the ISN (Initial Sequence Number) generation for Netstack has been updated to be as per RFC. Its not a pure random number anymore and follows the recommendation in https://tools.ietf.org/html/rfc6528#page-3. The current hash used is not a cryptographically secure hash function. A separate change will update the hash function used to Siphash similar to what is used in Linux. PiperOrigin-RevId: 279106406
2019-11-07 17:45:26 +00:00
shard_count = 50,
test = "//test/syscalls/linux:socket_inet_loopback_test",
)
syscall_test(
size = "large",
shard_count = 50,
# Takes too long for TSAN. Creates a lot of TCP sockets.
tags = ["nogotsan"],
test = "//test/syscalls/linux:socket_inet_loopback_nogotsan_test",
)
syscall_test(
size = "large",
Add support for TIME_WAIT timeout. This change adds explicit support for honoring the 2MSL timeout for sockets in TIME_WAIT state. It also adds support for the TCP_LINGER2 option that allows modification of the FIN_WAIT2 state timeout duration for a given socket. It also adds an option to modify the Stack wide TIME_WAIT timeout but this is only for testing. On Linux this is fixed at 60s. Further, we also now correctly process RST's in CLOSE_WAIT and close the socket similar to linux without moving it to error state. We also now handle SYN in ESTABLISHED state as per RFC5961#section-4.1. Earlier we would just drop these SYNs. Which can result in some tests that pass on linux to fail on gVisor. Netstack now honors TIME_WAIT correctly as well as handles the following cases correctly. - TCP RSTs in TIME_WAIT are ignored. - A duplicate TCP FIN during TIME_WAIT extends the TIME_WAIT and a dup ACK is sent in response to the FIN as the dup FIN indicates potential loss of the original final ACK. - An out of order segment during TIME_WAIT generates a dup ACK. - A new SYN w/ a sequence number > the highest sequence number in the previous connection closes the TIME_WAIT early and opens a new connection. Further to make the SYN case work correctly the ISN (Initial Sequence Number) generation for Netstack has been updated to be as per RFC. Its not a pure random number anymore and follows the recommendation in https://tools.ietf.org/html/rfc6528#page-3. The current hash used is not a cryptographically secure hash function. A separate change will update the hash function used to Siphash similar to what is used in Linux. PiperOrigin-RevId: 279106406
2019-11-07 17:45:26 +00:00
shard_count = 50,
test = "//test/syscalls/linux:socket_ip_tcp_generic_loopback_test",
)
syscall_test(
size = "medium",
test = "//test/syscalls/linux:socket_ip_tcp_loopback_non_blocking_test",
)
syscall_test(
size = "large",
Add support for TIME_WAIT timeout. This change adds explicit support for honoring the 2MSL timeout for sockets in TIME_WAIT state. It also adds support for the TCP_LINGER2 option that allows modification of the FIN_WAIT2 state timeout duration for a given socket. It also adds an option to modify the Stack wide TIME_WAIT timeout but this is only for testing. On Linux this is fixed at 60s. Further, we also now correctly process RST's in CLOSE_WAIT and close the socket similar to linux without moving it to error state. We also now handle SYN in ESTABLISHED state as per RFC5961#section-4.1. Earlier we would just drop these SYNs. Which can result in some tests that pass on linux to fail on gVisor. Netstack now honors TIME_WAIT correctly as well as handles the following cases correctly. - TCP RSTs in TIME_WAIT are ignored. - A duplicate TCP FIN during TIME_WAIT extends the TIME_WAIT and a dup ACK is sent in response to the FIN as the dup FIN indicates potential loss of the original final ACK. - An out of order segment during TIME_WAIT generates a dup ACK. - A new SYN w/ a sequence number > the highest sequence number in the previous connection closes the TIME_WAIT early and opens a new connection. Further to make the SYN case work correctly the ISN (Initial Sequence Number) generation for Netstack has been updated to be as per RFC. Its not a pure random number anymore and follows the recommendation in https://tools.ietf.org/html/rfc6528#page-3. The current hash used is not a cryptographically secure hash function. A separate change will update the hash function used to Siphash similar to what is used in Linux. PiperOrigin-RevId: 279106406
2019-11-07 17:45:26 +00:00
shard_count = 50,
test = "//test/syscalls/linux:socket_ip_tcp_loopback_test",
)
syscall_test(
size = "medium",
Add support for TIME_WAIT timeout. This change adds explicit support for honoring the 2MSL timeout for sockets in TIME_WAIT state. It also adds support for the TCP_LINGER2 option that allows modification of the FIN_WAIT2 state timeout duration for a given socket. It also adds an option to modify the Stack wide TIME_WAIT timeout but this is only for testing. On Linux this is fixed at 60s. Further, we also now correctly process RST's in CLOSE_WAIT and close the socket similar to linux without moving it to error state. We also now handle SYN in ESTABLISHED state as per RFC5961#section-4.1. Earlier we would just drop these SYNs. Which can result in some tests that pass on linux to fail on gVisor. Netstack now honors TIME_WAIT correctly as well as handles the following cases correctly. - TCP RSTs in TIME_WAIT are ignored. - A duplicate TCP FIN during TIME_WAIT extends the TIME_WAIT and a dup ACK is sent in response to the FIN as the dup FIN indicates potential loss of the original final ACK. - An out of order segment during TIME_WAIT generates a dup ACK. - A new SYN w/ a sequence number > the highest sequence number in the previous connection closes the TIME_WAIT early and opens a new connection. Further to make the SYN case work correctly the ISN (Initial Sequence Number) generation for Netstack has been updated to be as per RFC. Its not a pure random number anymore and follows the recommendation in https://tools.ietf.org/html/rfc6528#page-3. The current hash used is not a cryptographically secure hash function. A separate change will update the hash function used to Siphash similar to what is used in Linux. PiperOrigin-RevId: 279106406
2019-11-07 17:45:26 +00:00
shard_count = 50,
test = "//test/syscalls/linux:socket_ip_tcp_udp_generic_loopback_test",
)
syscall_test(
size = "medium",
test = "//test/syscalls/linux:socket_ip_udp_loopback_non_blocking_test",
)
syscall_test(
size = "large",
Add support for TIME_WAIT timeout. This change adds explicit support for honoring the 2MSL timeout for sockets in TIME_WAIT state. It also adds support for the TCP_LINGER2 option that allows modification of the FIN_WAIT2 state timeout duration for a given socket. It also adds an option to modify the Stack wide TIME_WAIT timeout but this is only for testing. On Linux this is fixed at 60s. Further, we also now correctly process RST's in CLOSE_WAIT and close the socket similar to linux without moving it to error state. We also now handle SYN in ESTABLISHED state as per RFC5961#section-4.1. Earlier we would just drop these SYNs. Which can result in some tests that pass on linux to fail on gVisor. Netstack now honors TIME_WAIT correctly as well as handles the following cases correctly. - TCP RSTs in TIME_WAIT are ignored. - A duplicate TCP FIN during TIME_WAIT extends the TIME_WAIT and a dup ACK is sent in response to the FIN as the dup FIN indicates potential loss of the original final ACK. - An out of order segment during TIME_WAIT generates a dup ACK. - A new SYN w/ a sequence number > the highest sequence number in the previous connection closes the TIME_WAIT early and opens a new connection. Further to make the SYN case work correctly the ISN (Initial Sequence Number) generation for Netstack has been updated to be as per RFC. Its not a pure random number anymore and follows the recommendation in https://tools.ietf.org/html/rfc6528#page-3. The current hash used is not a cryptographically secure hash function. A separate change will update the hash function used to Siphash similar to what is used in Linux. PiperOrigin-RevId: 279106406
2019-11-07 17:45:26 +00:00
shard_count = 50,
test = "//test/syscalls/linux:socket_ip_udp_loopback_test",
)
syscall_test(
size = "medium",
test = "//test/syscalls/linux:socket_ipv4_udp_unbound_loopback_test",
)
syscall_test(
size = "medium",
# Takes too long under gotsan to run.
tags = ["nogotsan"],
test = "//test/syscalls/linux:socket_ipv4_udp_unbound_loopback_nogotsan_test",
)
Consider loopback bound to all addresses in subnet When a loopback interface is configurd with an address and associated subnet, the loopback should treat all addresses in that subnet as an address it owns. This is mimicking linux behaviour as seen below: ``` $ ip addr show dev lo 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group ... link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever $ ping 192.0.2.1 PING 192.0.2.1 (192.0.2.1) 56(84) bytes of data. ^C --- 192.0.2.1 ping statistics --- 2 packets transmitted, 0 received, 100% packet loss, time 1018ms $ ping 192.0.2.2 PING 192.0.2.2 (192.0.2.2) 56(84) bytes of data. ^C --- 192.0.2.2 ping statistics --- 3 packets transmitted, 0 received, 100% packet loss, time 2039ms $ sudo ip addr add 192.0.2.1/24 dev lo $ ip addr show dev lo 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group ... link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet 192.0.2.1/24 scope global lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever $ ping 192.0.2.1 PING 192.0.2.1 (192.0.2.1) 56(84) bytes of data. 64 bytes from 192.0.2.1: icmp_seq=1 ttl=64 time=0.131 ms 64 bytes from 192.0.2.1: icmp_seq=2 ttl=64 time=0.046 ms 64 bytes from 192.0.2.1: icmp_seq=3 ttl=64 time=0.048 ms ^C --- 192.0.2.1 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2042ms rtt min/avg/max/mdev = 0.046/0.075/0.131/0.039 ms $ ping 192.0.2.2 PING 192.0.2.2 (192.0.2.2) 56(84) bytes of data. 64 bytes from 192.0.2.2: icmp_seq=1 ttl=64 time=0.131 ms 64 bytes from 192.0.2.2: icmp_seq=2 ttl=64 time=0.069 ms 64 bytes from 192.0.2.2: icmp_seq=3 ttl=64 time=0.049 ms 64 bytes from 192.0.2.2: icmp_seq=4 ttl=64 time=0.035 ms ^C --- 192.0.2.2 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3049ms rtt min/avg/max/mdev = 0.035/0.071/0.131/0.036 ms ``` Test: integration_test.TestLoopbackAcceptAllInSubnet PiperOrigin-RevId: 328188546
2020-08-24 19:27:01 +00:00
syscall_test(
test = "//test/syscalls/linux:socket_ipv4_udp_unbound_loopback_netlink_test",
)
syscall_test(
test = "//test/syscalls/linux:socket_ipv6_udp_unbound_loopback_netlink_test",
)
syscall_test(
test = "//test/syscalls/linux:socket_ip_unbound_test",
)
syscall_test(
test = "//test/syscalls/linux:socket_ip_unbound_netlink_test",
)
syscall_test(
test = "//test/syscalls/linux:socket_netdevice_test",
)
syscall_test(
test = "//test/syscalls/linux:socket_netlink_test",
)
syscall_test(
test = "//test/syscalls/linux:socket_netlink_route_test",
)
syscall_test(
test = "//test/syscalls/linux:socket_netlink_uevent_test",
)
syscall_test(
test = "//test/syscalls/linux:socket_blocking_local_test",
)
syscall_test(
test = "//test/syscalls/linux:socket_blocking_ip_test",
)
syscall_test(
test = "//test/syscalls/linux:socket_non_stream_blocking_local_test",
)
syscall_test(
test = "//test/syscalls/linux:socket_non_stream_blocking_udp_test",
)
syscall_test(
size = "large",
test = "//test/syscalls/linux:socket_stream_blocking_local_test",
)
syscall_test(
size = "large",
test = "//test/syscalls/linux:socket_stream_blocking_tcp_test",
)
syscall_test(
size = "medium",
test = "//test/syscalls/linux:socket_stream_local_test",
)
syscall_test(
size = "medium",
test = "//test/syscalls/linux:socket_stream_nonblock_local_test",
)
syscall_test(
# NOTE(b/116636318): Large sendmsg may stall a long time.
size = "enormous",
shard_count = 5,
test = "//test/syscalls/linux:socket_unix_dgram_local_test",
)
syscall_test(
size = "medium",
test = "//test/syscalls/linux:socket_unix_dgram_non_blocking_test",
)
syscall_test(
size = "large",
add_overlay = True,
Add support for TIME_WAIT timeout. This change adds explicit support for honoring the 2MSL timeout for sockets in TIME_WAIT state. It also adds support for the TCP_LINGER2 option that allows modification of the FIN_WAIT2 state timeout duration for a given socket. It also adds an option to modify the Stack wide TIME_WAIT timeout but this is only for testing. On Linux this is fixed at 60s. Further, we also now correctly process RST's in CLOSE_WAIT and close the socket similar to linux without moving it to error state. We also now handle SYN in ESTABLISHED state as per RFC5961#section-4.1. Earlier we would just drop these SYNs. Which can result in some tests that pass on linux to fail on gVisor. Netstack now honors TIME_WAIT correctly as well as handles the following cases correctly. - TCP RSTs in TIME_WAIT are ignored. - A duplicate TCP FIN during TIME_WAIT extends the TIME_WAIT and a dup ACK is sent in response to the FIN as the dup FIN indicates potential loss of the original final ACK. - An out of order segment during TIME_WAIT generates a dup ACK. - A new SYN w/ a sequence number > the highest sequence number in the previous connection closes the TIME_WAIT early and opens a new connection. Further to make the SYN case work correctly the ISN (Initial Sequence Number) generation for Netstack has been updated to be as per RFC. Its not a pure random number anymore and follows the recommendation in https://tools.ietf.org/html/rfc6528#page-3. The current hash used is not a cryptographically secure hash function. A separate change will update the hash function used to Siphash similar to what is used in Linux. PiperOrigin-RevId: 279106406
2019-11-07 17:45:26 +00:00
shard_count = 50,
test = "//test/syscalls/linux:socket_unix_pair_test",
)
syscall_test(
# NOTE(b/116636318): Large sendmsg may stall a long time.
size = "enormous",
shard_count = 5,
test = "//test/syscalls/linux:socket_unix_seqpacket_local_test",
)
syscall_test(
size = "medium",
test = "//test/syscalls/linux:socket_unix_stream_test",
)
syscall_test(
size = "medium",
test = "//test/syscalls/linux:socket_unix_unbound_abstract_test",
)
syscall_test(
size = "medium",
test = "//test/syscalls/linux:socket_unix_unbound_dgram_test",
)
syscall_test(
size = "medium",
test = "//test/syscalls/linux:socket_unix_unbound_filesystem_test",
)
syscall_test(
size = "medium",
shard_count = 10,
test = "//test/syscalls/linux:socket_unix_unbound_seqpacket_test",
)
syscall_test(
size = "large",
Add support for TIME_WAIT timeout. This change adds explicit support for honoring the 2MSL timeout for sockets in TIME_WAIT state. It also adds support for the TCP_LINGER2 option that allows modification of the FIN_WAIT2 state timeout duration for a given socket. It also adds an option to modify the Stack wide TIME_WAIT timeout but this is only for testing. On Linux this is fixed at 60s. Further, we also now correctly process RST's in CLOSE_WAIT and close the socket similar to linux without moving it to error state. We also now handle SYN in ESTABLISHED state as per RFC5961#section-4.1. Earlier we would just drop these SYNs. Which can result in some tests that pass on linux to fail on gVisor. Netstack now honors TIME_WAIT correctly as well as handles the following cases correctly. - TCP RSTs in TIME_WAIT are ignored. - A duplicate TCP FIN during TIME_WAIT extends the TIME_WAIT and a dup ACK is sent in response to the FIN as the dup FIN indicates potential loss of the original final ACK. - An out of order segment during TIME_WAIT generates a dup ACK. - A new SYN w/ a sequence number > the highest sequence number in the previous connection closes the TIME_WAIT early and opens a new connection. Further to make the SYN case work correctly the ISN (Initial Sequence Number) generation for Netstack has been updated to be as per RFC. Its not a pure random number anymore and follows the recommendation in https://tools.ietf.org/html/rfc6528#page-3. The current hash used is not a cryptographically secure hash function. A separate change will update the hash function used to Siphash similar to what is used in Linux. PiperOrigin-RevId: 279106406
2019-11-07 17:45:26 +00:00
shard_count = 50,
test = "//test/syscalls/linux:socket_unix_unbound_stream_test",
)
syscall_test(
add_overlay = True,
test = "//test/syscalls/linux:statfs_test",
use_tmpfs = True, # Test specifically relies on TEST_TMPDIR to be tmpfs.
)
syscall_test(
add_overlay = True,
test = "//test/syscalls/linux:stat_test",
)
syscall_test(
add_overlay = True,
test = "//test/syscalls/linux:stat_times_test",
)
syscall_test(
add_overlay = True,
test = "//test/syscalls/linux:sticky_test",
)
syscall_test(
add_overlay = True,
test = "//test/syscalls/linux:symlink_test",
)
syscall_test(
add_overlay = True,
test = "//test/syscalls/linux:sync_test",
)
syscall_test(
add_overlay = True,
test = "//test/syscalls/linux:sync_file_range_test",
)
syscall_test(
test = "//test/syscalls/linux:sysinfo_test",
)
syscall_test(
test = "//test/syscalls/linux:syslog_test",
)
syscall_test(
test = "//test/syscalls/linux:sysret_test",
)
syscall_test(
size = "medium",
shard_count = 10,
test = "//test/syscalls/linux:tcp_socket_test",
)
syscall_test(
test = "//test/syscalls/linux:tgkill_test",
)
syscall_test(
test = "//test/syscalls/linux:timerfd_test",
)
syscall_test(
test = "//test/syscalls/linux:timers_test",
)
syscall_test(
test = "//test/syscalls/linux:time_test",
)
syscall_test(
test = "//test/syscalls/linux:tkill_test",
)
syscall_test(
add_overlay = True,
test = "//test/syscalls/linux:truncate_test",
)
syscall_test(
test = "//test/syscalls/linux:tuntap_test",
)
syscall_test(
add_hostinet = True,
test = "//test/syscalls/linux:tuntap_hostinet_test",
)
syscall_test(
test = "//test/syscalls/linux:udp_bind_test",
)
syscall_test(
size = "medium",
add_hostinet = True,
shard_count = 10,
test = "//test/syscalls/linux:udp_socket_test",
)
syscall_test(
test = "//test/syscalls/linux:uidgid_test",
)
syscall_test(
test = "//test/syscalls/linux:uname_test",
)
syscall_test(
add_overlay = True,
test = "//test/syscalls/linux:unlink_test",
)
syscall_test(
test = "//test/syscalls/linux:unshare_test",
)
syscall_test(
test = "//test/syscalls/linux:utimes_test",
)
syscall_test(
size = "medium",
test = "//test/syscalls/linux:vdso_clock_gettime_test",
)
syscall_test(
test = "//test/syscalls/linux:vdso_test",
)
syscall_test(
test = "//test/syscalls/linux:vsyscall_test",
)
syscall_test(
test = "//test/syscalls/linux:vfork_test",
)
syscall_test(
size = "medium",
shard_count = 5,
test = "//test/syscalls/linux:wait_test",
)
syscall_test(
add_overlay = True,
test = "//test/syscalls/linux:write_test",
)
syscall_test(
test = "//test/syscalls/linux:proc_net_unix_test",
)
syscall_test(
test = "//test/syscalls/linux:proc_net_tcp_test",
)
syscall_test(
test = "//test/syscalls/linux:proc_net_udp_test",
)