@Test
  public void testCancel() throws Exception {
    assertTrue(mFeed.getCreatedHandles().isEmpty());
    assertTrue(mFeed.getCanceledHandles().isEmpty());

    MockMarketDataFeedToken token = mFeed.execute(mTokenSpec);
    List<String> createdHandles = mFeed.getCreatedHandles();
    assertFalse(mFeed.getCreatedHandles().isEmpty());
    token.cancel();
    List<String> canceledHandles = mFeed.getCanceledHandles();
    assertTrue(canceledHandles.containsAll(createdHandles));
    assertEquals(createdHandles.size(), canceledHandles.size());
    assertEquals(MockMarketDataFeedToken.Status.CANCELED, token.getStatus());
    // cancel it again, make sure nothing breaks
    token.cancel();
    canceledHandles = mFeed.getCanceledHandles();
    assertTrue(canceledHandles.containsAll(createdHandles));
    assertEquals(createdHandles.size(), canceledHandles.size());
    assertEquals(MockMarketDataFeedToken.Status.CANCELED, token.getStatus());
  }