summaryrefslogtreecommitdiffstats
path: root/tests
AgeCommit message (Collapse)Author
2018-03-29Fix permissions (#268)Carl Lerche
2018-03-23Change hammer test consts (#255)Carl Lerche
2018-03-22Fix race condition related bugs (#243)Carl Lerche
* Fix races. This mostly pulls in changes from rust-lang-nursery/futures-rs#881, but also updates Registration to be a bit more obvious as to what is going on. * Reduce spurious wakeups caused by Reactor This patch adds an ABA guard on token values before registering them with Mio. This allows catching token reuse and avoid the notification. This is needed for OS X as the notification is used to determine that a TCP connect has completed. A spurious notification can potentially cause write failures.
2018-03-21Update to futures 0.2.0-beta (#246)Aaron Turon
2018-03-15Add top-level tests for futures 0.2 integration (#231)Aaron Turon
2018-03-14Move tokio::net module into tokio tcp/udp crates (#224)Sam Rijs
2018-03-13Simultaneous futures compat (#172)Aaron Turon
This patch adds opt-in support for futures 0.2.
2018-03-11Remove uses of futures_cpupool (#220)Jeehoon Kang
2018-03-07Improve `poll_read_ready` implementation (#193)Carl Lerche
This patch updates `poll_read_ready` to take a `mask` argument, enabling the caller to specify the desired readiness. `need_read` is renamed to `clear_read_ready` and also takes a mask. This enables a caller to listen for HUP events without requiring reading from the I/O resource.
2018-03-04Switch TCP/UDP fns to poll_ -> Poll<...> style (#175)Carl Lerche
Tokio is moving away from using `WouldBlock`, instead favoring `Async::NotReady`. This patch updates the TCP and UDP types, deprecating any function that returns `WouldBlock` and adding a poll_ prefixed equivalent.
2018-03-02Tweak the `tokio::spawn` function (#171)Carl Lerche
Currently, `tokio::spawn` matched the `spawn` function from futures 0.2. However, this adds additional ergonomic overhead and removes the ability to spawn from a drop fn. See rust-lang-nursery/futures-rs#830. This patch switches the behavior to access the thread-local variable referencing the default executor directly in the `spawn` function.
2018-03-01Fix deprecation warnings in tests (#167)Carl Lerche
2018-02-28I/O resources lazily bind to reactor. (#160)Carl Lerche
This patch makes a significant change to how I/O resources bind to a reactor. Currently, an I/O resource (TCP, UDP, PollEvented) will bind itself with a reactor upon creation. First, some history. Originally, tokio-core required that I/O resources be explicitly associated with a reactor upon creation by passing in a `&Handle`. Tokio reform introduced a default reactor. If I/O resources do not specify a reactor upon creation, then the default reactor is used. However, futures tend to favor being lazy. Creating a future should do no work, instead it is defining a computation to be performed once the future is executed. Binding an I/O resource with a reactor on creation goes against this pattern. This patch fixes this by allowing I/O resources to lazily bind to a reactor. An explicit `&Handle` can still be used on creation, but if no reactor is specified, then the default reactor is used. However, this binding happens during execution time (read / write) and not creation.
2018-02-28Improve current thread tests (#161)Roman
* Create variables as closer as possible to their usage * Check that no message is lost in test current_thread::hammer_turn
2018-02-27Support current_thread::spawn from task drop (#157)Carl Lerche
Currently, the thread-local tracking the current thread executor is not set when a task is dropped. This means that one cannot spawn a new future from within the drop implementation of another future. This patch adds support for this by setting the thread-local before releasing a task. This implementation is a bit messy. It probably could be cleaned up, but this is being put off in favor of trying a more comprehensive reorganization once the current thread executor is feature complete.
2018-02-26Fix race condition in CurrentThread. (#156)Carl Lerche
The logic that enables `CurrentThread::turn` to avoid unbounded iteration was incorrect. It was possible for unfortunate timing to result in a dead lock. This patch provides a fix as well as a test.
2018-02-23Fix bug with CurrentThread::turn (#152)Carl Lerche
CurrentThread::turn uses a turn count strategy to allow `turn` to not run infinitely. Currently, there is a bug where spawned tasks will not get executed in calls to `turn`. This patch fixes the bug by correctly setting the turn count for newly spawned tasks.
2018-02-21Introduce the Tokio runtime: Reactor + Threadpool (#141)Carl Lerche
This patch is an intial implementation of the Tokio runtime. The Tokio runtime provides an out of the box configuration for running I/O heavy asynchronous applications. As of now, the Tokio runtime is a combination of a work-stealing thread pool as well as a background reactor to drive I/O resources. This patch also includes tokio-executor, a hopefully short lived crate that is based on the futures 0.2 executor RFC. * Implement `Park` for `Reactor` This enables the reactor to be used as the thread parker for executors. This also adds an `Error` component to `Park`. With this change, a `Reactor` and a `CurrentThread` can be combined to achieve the capabilities of tokio-core.
2018-02-07Make `Handle::wakeup` private (#117)Carl Lerche
The `Handle` type is intended to be used by end users of Tokio. The wakeup functionlity is needed by executor implementations. It doesn't make sense to put executor specific functionality on a type that is intended for end users.
2018-02-07Remove `framed` fn from `UdpSocket` (#116)Carl Lerche
Instead, use `UdpFramed::new` to create a framed wrapper around the UDP socket.
2018-02-06Remove UdpCodec (#109)Roman
`UdpFramed` is updated to use the `Encoder` and `Decoder` traits from `tokio-io`.
2018-02-06Switch back to futures from crates.io (#113)Carl Lerche
Doing so requires copying the `current_thread` executor from GitHub into the repo.
2018-02-01Track futures tokio-reform branch (#88)Carl Lerche
This patch also updates tests and examples to remove deprecated API usage.
2018-01-31Poll evented mutability (#37)Carl Lerche
Generally speaking, it is unsafe to access to perform asynchronous operations using `&self`. Taking `&self` allows usage from a `Sync` context, which has unexpected results. Taking `&mut self` to perform these operations prevents using these asynchronous values from across tasks (unless they are wrapped in `RefCell` or `Mutex`.
2018-01-30Change `net::Incoming` signature to match std. (#89)Carl Lerche
std's `Incoming` iterator yields `TcpStream` instances. This patch updates the `Incoming` future to match this signature. This changes the yielded value from `(TcpStream, SocketAddr)` -> `TcpStream`.
2018-01-30Update send_dgram function signature. (#91)Carl Lerche
* Update send_dgram function signature. All other fns take `&SocketAddr`. * Fix tests
2018-01-30Remove &addr arg from TcpListener::from_std (#92)Carl Lerche
This has been deprecated in mio.
2018-01-16Fix UdpCodec::encode (#85)Roman
* Refactor UDP SendDgram & RecvDgram Get rid of unnamed structs in the favor of private structs with named fields * Change the signature of UdpCodec::encode Now it is: ``` fn encode(&mut self, msg: Self::Out, buf: &mut Vec<u8>) -> Result<SocketAddr, Self::Error>; ``` Closes https://github.com/tokio-rs/tokio/issues/79 * Fix compilation error from `mio` crate
2017-12-19Change a return value of reactor::poll to io::Result. (#40)dethoter
* Change a return value of reactor::poll to io::Result. * Revert "Change a return value of reactor::poll to io::Result." This reverts commit 281d8c32d44d8971e0aebf3833a72c02273ac3d2. * Return a result from reactor::poll. * Drop a reactor if any error occurs. Fix warnings in tests. * Update a documentation for reactor::turn. * Unwrap the last turn() call in tests.
2017-12-12Remove `Handle` argument from I/O constructors (#61)Alex Crichton
This commit removes the `Handle` argument from the following constructors * `TcpListener::bind` * `TcpStream::connect` * `UdpSocket::bind` The `Handle` argument remains on the various `*_std` constructors as they're more low-level, but this otherwise is intended to set forth a precedent of by default not taking `Handle` arguments and instead relying on the global `Handle::default` return value when necesary.
2017-12-12Add a `Handle::wakeup` method (#59)Alex Crichton
This method is intended to be used to wake up the reactor from a remote thread if necessary, forcing it to return from a blocked call of `turn` or otherwise prevent the next call to `turn` to from blocking.
2017-12-11Remove the `Reactor::run` method (#58)Alex Crichton
This commit removes the `Reactor::run` method which has previously been used to execute futures and turn the reactor at the same time. The tests/examples made heavy usage of this method but they have now all temporarily moved to `wait()` until the futures dependency is upgraded. In the meantime this'll allow us to further trim down the `Reactor` APIs to their final state.
2017-12-11Start adding a global event loopAlex Crichton
This commit starts to add support for a global event loop by adding a `Handle::default` method and implementing it. Currently the support is quite rudimentary and doesn't support features such as shutdown, overriding the return value of `Handle::default`, etc. Those will come as future commits.
2017-12-05Blanket rename `Core` to `Reactor`Alex Crichton
This commit uses a script to rename `Core` to `Reactor` all at once, notably: find . -name '*.rs' | xargs sed -i 's/\bCore\b/Reactor/g'
2017-12-05Change `need_read` and `need_write` to return an errorAlex Crichton
This commit is targeted at solving tokio-rs/tokio-core#12 and incorporates the solution from tokio-rs/tokio-core#17. Namely the `need_read` and `need_write` functions on `PollEvented` now return an error when the connected reactor has gone away and the task cannot be blocked. This will typically naturally translate to errors being returned by various connected I/O objects and should help tear down the world in a clean-ish fashion.
2017-12-01Remove unused code (#44)Thomas de Zeeuw
* remove unused #[macro_use] and #[allow(unused_macros)] * remove unused FnBox trait * remove unused temporary variable * remove Evented trait requirement to implement Debug
2017-11-01Remove executor from reactor.Carl Lerche
In accordance with tokio-rs/tokio-rfcs#3, the executor functionality of Tokio is being removed and will be relocated into futures-rs as a "current thread" executor. This PR removes task execution from the code base. As a temporary mesure, all examples and tests are switched to using CpuPool. Depends on #19.
2017-10-30Remove timers from Tokio.Carl Lerche
In accordance with tokio-rs/tokio-rfcs#3, timers are being extracted from Tokio and moved to a separate crate (probably futures-timer). This PR removes timers from the code base.
2017-10-30Remove deprecated code.Carl Lerche
This commit removes code that was deprecated in tokio-core master.
2017-10-30Rename crate to tokioCarl Lerche
2017-10-05Fix UDP testAlex Crichton
2017-09-12Adds a test for UdpSocket connect, recv and sendBastian Köcher
2017-09-11Merge pull request #250 from henninglive/udp-zero-lengthAlex Crichton
UDP 0-length datagrams
2017-09-11UDP 0-length datagramsHenning Ottesen
Resolves #248, preventing UdpFramed from sending 0-length datagrams. Also, adds 0-length tests for UdpSocket.
2017-09-10Make timeout tests slightly more flexibleAlex Crichton
2017-05-08Add a test for spawn-in-dropAlex Crichton
2017-03-15Limit the scope of borrow_mut in `consume_queue`Alex Crichton
Otherwise we may accidentally hold the borrowed ref cell for too long which can cause a borrow error. Closes #190
2017-03-15Migrate to using tokio-ioAlex Crichton
Deprecate the existing `io` module in this crate entirely. More details coming soon! Closes #61
2017-01-10Allow a bit of sloppiness in the timeout testAlex Crichton
2016-12-08Clean up the pipe-hup test slightlyAlex Crichton