Wes Dyer and Jeffrey Van Gogh: Rx Virtual Time

Play Wes Dyer and Jeffrey Van Gogh: Rx Virtual Time
Sign in to queue


The latest release of Rx includes new tools for testing reactive programs as well as virtual scheduling. In this video, Jeffrey and Wes discuss virtual time and virtual schedulers and how they can be used to write tests and query historical data.

What is virtual time, exactly? What purpose does it serve and how is it related to reality? Wait a century-second. What time is it? When?

As usual, Wes and Jeff go deep. Dive in with us. This is heady stuff and also really useful for practical programming with Rx. It's always great to spend some time with Wes and Jeff at the whiteboard and at the computer (they demo this for us towards the end of the session).




Download this episode

The Discussion

  • User profile image

    Just like any other co-ordinate system can the virtual time convert to decimal, binary time or 13 month year time system? Covariance and contra-variance over time; nice. Where to plug-in the landmarks? At the extension points?

  • User profile image

    Awesome, finally understand how Scheduler.Now is used, when I first saw that in Rx I knew you guys were using (or planning on using) virtual time but there seemed to be no documentation anywhere on the subject. Thanks for the explanation guys, extremely useful. Eagerly waiting on your unit tests so that I can start writing my asynchronous unit tests like that!

    I just realised I can write unit tests that simulate "hot" observables that I don't normally have control over i.e. mouse moves  etc, I can replace the original source with a mock observable that raises events a pre-determined times and pushes them through a virtual scheduler. Excellent!

  • User profile image

    I was hoping for a tutorial or video on the scheduling aspects of Rx because they remained a mystery for me, so thanks. Please do release the test code!

  • User profile image

    Thanks for sharing! I've still not spent the time with Rx I've been meaning to. :-/

  • User profile image



    you would create a scheduler that derives from VirtualScheduler, give it two type parameters that implement the absolute and relative part of your notion of time. For this to work, your notion of time will need to be able to :

    • Convert your notion of absolute time to DateTimeOffset
    • Convert TimeSpan to your notion of relative time
    • Increment your notion of absolute time with your notion of relative time to produce a new instance of your notion of absolute time.

  • User profile image

    https://blogs.msdn.com/b/jeffva/archive/2010/08/27/testing-rx.aspx contains sample code, that hopefully will give you a headstart. We're  working on getting our tests shipping as well, but will take a bit more time..



  • User profile image

    getting "Do you want to download this file" prompt (IE) when clicking "Play" to watch the video...



    nevermind - working now.

  • User profile image

    Great stuff, thanks a lot.

Add Your 2 Cents