Commit Graph

3703 Commits

Author SHA1 Message Date
Kevin Krakauer 43c209f48e garbage collect connections
As in Linux, we must periodically clean up unused connections.

PiperOrigin-RevId: 321003353
2020-07-13 12:00:46 -07:00
Jay Zhuang 76b392bc26 Create packetimpact test for UDP broadcast
PiperOrigin-RevId: 321000340
2020-07-13 11:49:06 -07:00
Adin Scannell 60dc5a4479 Automated rollback of changelist 320972241
PiperOrigin-RevId: 320999851
2020-07-13 11:43:28 -07:00
Jay Zhuang bafef1cf3a Print testbench log on packetimpact failures
These logs include flags passed to packetimpact tests (the Go tests), and test
failure messages.

PiperOrigin-RevId: 320989521
2020-07-13 10:58:21 -07:00
Adin Scannell 7ff4649b3c Use host networking for build container.
This will allow the use of default credentials.

PiperOrigin-RevId: 320972241
2020-07-13 09:39:06 -07:00
Ghanan Gowripalan 9c32fd3f4d Do not copy sleep.Waker
sleep.Waker's fields are modified as values.

PiperOrigin-RevId: 320873451
2020-07-12 17:22:08 -07:00
Ayush Ranjan 69f2059e5d Runtime test batch executor
Earlier we were docker exec-ing each test at a time. However invoking the test
framework has a fixed overhead which made it infeasible to make the runtime
tests run as presubmits. This change now executes tests in batches of 50 (can
be altered). This really speeds up testing process.

With this change, the following tests can be run in reasonable times:
- Go
- Nodejs
- Php
- Python

PiperOrigin-RevId: 320763916
2020-07-11 08:18:35 -07:00
Bhasker Hariharan 216dcebc06 Stub out SO_DETACH_FILTER.
Updates #2746

PiperOrigin-RevId: 320757963
2020-07-11 06:22:47 -07:00
Bin Lu feb867bb83 Split the kvm ut test cases to correspond to different platforms
Split the kvm ut test cases to pass unit-tests on Arm64.
    I will add the tls and full-context test cases for Arm64 later.

Signed-off-by: Bin Lu <bin.lu@arm.com>
2020-07-10 03:13:13 -04:00
gVisor bot 5df3a8fede Discard multicast UDP source address.
RFC-1122 (and others) specify that UDP should not receive
datagrams that have a source address that is a multicast address.
Packets should never be received FROM a multicast address.
See also, RFC 768:  'User Datagram Protocol'
J. Postel, ISI, 28 August 1980
  A UDP datagram received with an invalid IP source address
    (e.g., a broadcast or multicast address) must be discarded
    by UDP or by the IP layer (see rfc 1122 Section 3.2.1.3).
This CL does not address TCP or broadcast which is more complicated.

Also adds a test for both ipv6 and ipv4 UDP.

Fixes #3154

PiperOrigin-RevId: 320547674
2020-07-09 22:35:42 -07:00
Adin Scannell 2afff44403 Update shim to build using bazel.
The go.mod dependency tree for the shim was somehow contradictory. After
resolving these issues (e.g. explicitly imported k8s 1.14, pulling a
specific dbus version), and adding all dependencies, the shim can now be
build as part of the regular bazel tree.

As part of this process, minor cleanup was done in all the source files:
headers were standardized (and include "The gVisor Authors" in addition
to the "The containerd Authors" if originally derived from containerd
sources), and comments were cleaned up to meet coding standards.

This change makes the containerd installation dynamic, so that multiple
versions can be tested, and drops the static installer for the VM image
itself.

This change also updates test/root/crictl_test.go and related utilities,
so that the containerd tests can be run on any version (and in cases
where it applies, they can be run on both v1 and v2 as parameterized
tests).
2020-07-09 17:39:47 -07:00
Adin Scannell 2f24ab3397 Allow arbitrary Go commands for go_mod.sh. 2020-07-09 16:59:43 -07:00
Adin Scannell 60e19587ce Update canonical paths. 2020-07-09 16:59:42 -07:00
Adin Scannell 5471dbe2f3 Merge gvisor-containerd-shim 2020-07-09 16:59:42 -07:00
Bhasker Hariharan 5946f11182 Add support for IP_HDRINCL IP option for raw sockets.
Updates #2746
Fixes #3158

PiperOrigin-RevId: 320497190
2020-07-09 16:25:57 -07:00
Ian Lewis e506fcd931 Add args and netns flag to runsc spec
Adds a netns flag to runsc spec that allows users to specify a network
namespace path when creating a sample config.json file. Also, adds the ability
to specify the command arguments used when running the container.

This will make it easier for new users to create sample OCI bundles without
having to edit the config.json by hand.

PiperOrigin-RevId: 320486267
2020-07-09 15:26:52 -07:00
Michael Pratt 8d2910a04d Explain how to bypass the Docker proxy
Neither myself nor bhaskerh@ can consistently remember how to do this.

PiperOrigin-RevId: 320407005
2020-07-09 09:04:47 -07:00
Ridwan Sharif abffebde7b Gate FUSE behind a runsc flag
This change gates all FUSE commands (by gating /dev/fuse) behind a runsc
flag. In order to use FUSE commands, use the --fuse flag with the --vfs2
flag. Check if FUSE is enabled by running dmesg in the sandbox.
2020-07-09 02:01:29 -04:00
Fabricio Voznika c4815af947 Add shared mount hints to VFS2
Container restart test is disabled for VFS2 for now.

Updates #1487

PiperOrigin-RevId: 320296401
2020-07-08 17:12:29 -07:00
gVisor bot 4f7af437e2 Merge pull request #3171 from kevinGC:ipv6-kokoro
PiperOrigin-RevId: 320290162
2020-07-08 16:36:33 -07:00
Michael Pratt a75d9f7bee Drop empty line
PiperOrigin-RevId: 320281516
2020-07-08 15:48:01 -07:00
Kevin Krakauer 14ff2ea9bf ip6tables: handle both IPv4 and v6 addresses
Enabling IPv6 in Docker caused IPv4 tests to fail because localAddrs
didn't distinguish between address types. Example failure:
https://source.cloud.google.com/results/invocations/203b2401-3333-4bec-9a56-72cc53d68ddd/log
2020-07-08 15:14:29 -07:00
Zach Koopmans f3fa43cf23 Move all tests to new docker API.
Moves following to new dockerutil API:
- //test/e2e:integration_test
- //test/image:image_test
- //test/iptables:iptables_test
- //test/root:root_test
- //test/packetimpact:packetimpact_test

PiperOrigin-RevId: 320253118
2020-07-08 13:26:23 -07:00
Tamir Duberstein e1f11dea28 Avoid accidental zero-checksum
PiperOrigin-RevId: 320250773
2020-07-08 13:13:44 -07:00
Ayush Ranjan e3db9bda60 Enable shards in runtime test runner.
Fixed an issue with the runtime test runner which enables us to run tests in
shards. We had to touch the status file as indicated by an env var.

PiperOrigin-RevId: 320236205
2020-07-08 12:05:04 -07:00
Ayush Ranjan efa2615eb0 [vfs2] Remove VFS1 usage in VDSO.
Removed VDSO dependency on VFS1.

Resolves #2921

PiperOrigin-RevId: 320122176
2020-07-07 21:37:08 -07:00
Jamie Liu 5e05950c1c Deflake exec test.
- Only use MAXSYMLINKS/2+1 symlinks for each of the interpreter and script
  paths in SymlinkLimitRefreshedForInterpreter to tolerate cases where the
  original paths (/tmp, /bin, or /bin/echo) themselves contain symlinks.

- Ensure that UnshareFiles performs execve immediately after clone(CLONE_VFORK)
  (no heap allocation for ExecveArray/RunfilesPath).

- Use lstat() rather than stat() for the existence check in fs_util's Exists;
  the latter will fail if the symlink target does not exist, even if the
  symlink does.

PiperOrigin-RevId: 320110156
2020-07-07 19:45:16 -07:00
Tony Gong 76c7bc51b7 Set IPv4 ID on all non-atomic datagrams
RFC 6864 imposes various restrictions on the uniqueness of the IPv4
Identification field for non-atomic datagrams, defined as an IP datagram that
either can be fragmented (DF=0) or is already a fragment (MF=1 or positive
fragment offset). In order to be compliant, the ID field is assigned for all
non-atomic datagrams.

Add a TCP unit test that induces retransmissions and checks that the IPv4
ID field is unique every time. Add basic handling of the IP_MTU_DISCOVER
socket option so that the option can be used to disable PMTU discovery,
effectively setting DF=0. Attempting to set the sockopt to anything other
than disabled will fail because PMTU discovery is currently not implemented,
and the default behavior matches that of disabled.

PiperOrigin-RevId: 320081842
2020-07-07 16:14:49 -07:00
Ting-Yu Wang 7e4d2d63ee icmp: When setting TransportHeader, remove from the Data portion.
The current convention is when a header is set to pkt.XxxHeader field, it
gets removed from pkt.Data. ICMP does not currently follow this convention.

PiperOrigin-RevId: 320078606
2020-07-07 15:56:46 -07:00
Ayush Ranjan 10930189c3 Fix mknod and inotify syscall test
This change fixes a few things:
- creating sockets using mknod(2) is supported via vfs2
- fsgofer can create regular files via mknod(2)
- mode = 0 for mknod(2) will be interpreted as regular file in vfs2 as well

Updates #2923

PiperOrigin-RevId: 320074267
2020-07-07 15:35:01 -07:00
gVisor bot c8aab5cbee Merge pull request #3149 from wietsevenema:patch-1
PiperOrigin-RevId: 320062822
2020-07-07 14:36:43 -07:00
Wietse Venema c0ea7d9e9e
README.md: Commpatibility > Compatibility 2020-07-07 16:32:15 +02:00
Jamie Liu e227450dc1 Call fdnotifier.UpdateFD() from fsimpl/gofer.specialFileFD.
The fdnotifier package provides an API to a thread that continually epolls
arbitrary host FDs. The set of events polled for each host FD is (intended to
be) all events for which a waiter.Entry has expressed interest, as returned by
waiter.Queue.Events() for the waiter.Queue registered to the given host FD.
When the set of events changes (due to a change in the set of registered
waiter.Entries), the mutator must call fdnotifier.UpdateFD() to recalculate the
new event set and propagate it to the epoll FD.

PiperOrigin-RevId: 319924719
2020-07-06 22:55:48 -07:00
Fabricio Voznika 937912a484 Ensure sync is called for readonly file
Calling sync on a readonly file flushes metadata that
may have been modified, like last access time.

Updates #1198

PiperOrigin-RevId: 319888290
2020-07-06 17:29:01 -07:00
Bhasker Hariharan b0f656184e Add support for SO_RCVBUF/SO_SNDBUF for AF_PACKET sockets.
Updates #2746

PiperOrigin-RevId: 319887810
2020-07-06 17:22:54 -07:00
Ting-Yu Wang 15c56d92d8 Fix NonBlockingWrite3 not writing b3 if b2 is zero-length.
PiperOrigin-RevId: 319882171
2020-07-06 16:47:37 -07:00
Fabricio Voznika bd43368f49 Add inode number to synthetic dentries
Reserve the MSB from ino for synthetic dentries to prevent
conflict with regular dentries. Log warning in case MSB is
set for regular dentries.

Updates #1487

PiperOrigin-RevId: 319869858
2020-07-06 15:40:03 -07:00
Ting-Yu Wang 1e5b0a9732 Shard some slow tests.
stack_x_test: 2m -> 20s
tcp_x_test: 80s -> 25s
PiperOrigin-RevId: 319828101
2020-07-06 12:14:08 -07:00
gVisor bot 47bffa544a Merge pull request #3110 from craig08:add-missing-ICRNL
PiperOrigin-RevId: 319827554
2020-07-06 12:08:03 -07:00
Tamir Duberstein 043e5dddde Remove dependency on pkg/binary
PiperOrigin-RevId: 319770124
2020-07-06 06:48:04 -07:00
Tamir Duberstein 0c13538664 Add wakers synchronously
Avoid a race where an arbitrary goroutine scheduling delay can cause the
processor to miss events and hang indefinitely.

Reduce allocations by storing processors by-value in the dispatcher, and
by using a single WaitGroup rather than one per processor.

PiperOrigin-RevId: 319665861
2020-07-05 06:10:21 -07:00
Tamir Duberstein 5ac34386a7 Improve failure message
Currently this test produces an error resembling

  tcp_zero_window_probe_retransmit_test.go:92: zero probe came sooner interval 3200179405 probe 4

which is approximately useless.

PiperOrigin-RevId: 319572263
2020-07-03 23:20:13 -07:00
Tamir Duberstein 418db67e2f Update build rule to appease deprecation
Before this change, running packetimpact tests produces:

  parameter 'direct' must contain a list of elements, and may no longer
  accept a depset. The deprecated behavior may be temporarily re-enabled
  by setting --incompatible_disable_depset_inputs=false

The positional parameter to depset has been changed to mean `direct`
rather than its previous meaning of `items`. The documentation[0]
explains:

  A positional parameter distinct from other parameters for legacy
  support.

  If --incompatible_disable_depset_items is false, this parameter
  serves as the value of items.

  If --incompatible_disable_depset_items is true, this parameter
  serves as the value of direct.

  See the documentation for these parameters for more details.

[0] https://docs.bazel.build/versions/master/skylark/lib/globals.html

PiperOrigin-RevId: 319555138
2020-07-03 17:43:09 -07:00
Bin Lu 49f38dee10 allow guest user applications read ctr_el0 on Arm64
At present, when doing syscall_kvm test, we need to
enable the function of ESR_ELx_SYS64_ISS_SYS_CTR_READ to
successfully pass the test.

I set SCTLR_EL1.UCT==1, so that the related cases can passed.

Signed-off-by: Bin Lu <bin.lu@arm.com>
2020-07-03 00:08:39 -04:00
Dean Deng 6c099d8300 Update preadv2/pwritev2 flag handling in vfs2.
We do not support RWF_SYNC/RWF_DSYNC and probably shouldn't silently accept
them, since the user may incorrectly believe that we are synchronizing I/O.
Remove the pwritev2 test verifying that we support these flags.

gvisor.dev/issue/2601 is the tracking bug for deciding which RWF_.* flags
we need and supporting them.

Updates #2923, #2601.

PiperOrigin-RevId: 319351286
2020-07-01 22:04:42 -07:00
Ayush Ranjan 514955c1a8 [vfs2][gofer] Fix mmap syscall test.
We were not invalidating mappings when the file size changed in shared mode.
Enabled the syscall test for vfs2.

Updates #2923

PiperOrigin-RevId: 319346569
2020-07-01 21:05:53 -07:00
Ayush Ranjan 52b44719d6 [vfs2][gofer] Update file size to 0 on O_TRUNC
Some Open:TruncateXxx syscall tests were failing because the file size was
not being updated when the file was opened with O_TRUNC.

Fixes Truncate tests in test/syscalls:open_test_runsc_ptrace_vfs2.

Updates #2923

PiperOrigin-RevId: 319340127
2020-07-01 19:49:44 -07:00
Dean Deng 3b26d2121e Remove maxSendBufferSize from vfs2.
Complements cl/315991648.

PiperOrigin-RevId: 319327853
2020-07-01 17:40:19 -07:00
Dean Deng 65d9985558 Port vfs1 implementation of sync_file_range to vfs2.
Currently, we always perform a full-file sync which could be extremely
expensive for some applications. Although vfs1 did not fully support
sync_file_range, there were some optimizations that allowed us skip some
unnecessary write-outs.

Updates #2923, #1897.

PiperOrigin-RevId: 319324213
2020-07-01 17:11:26 -07:00
Mithun Iyer 31b27adf9b TCP receive should block when in SYN-SENT state.
The application can choose to initiate a non-blocking connect and
later block on a read, when the endpoint is still in SYN-SENT state.

PiperOrigin-RevId: 319311016
2020-07-01 15:47:50 -07:00