@Override
  public Distribution distribute(D2CanaryDistributionStrategy strategy)
  {
    switch (strategy.getStrategy()) {
      case TARGET_HOSTS:
        return distributeByTargetHosts(strategy);
      case TARGET_APPLICATIONS:
        return distributeByTargetApplications(strategy);
      case PERCENTAGE:
        return distributeByPercentage(strategy);
      case DISABLED:
        return Distribution.STABLE;
      default:
        _log.warn("Invalid distribution strategy type: " + strategy.getStrategy().name());
        return Distribution.STABLE;
    }
  }
@Test(dataProvider = "getEdgeCaseStrategies")
  public void testEdgeCases(D2CanaryDistributionStrategy strategy)
  {
    Assert.assertEquals(new CanaryDistributionProviderImplFixture().getSpiedImpl().distribute(strategy),
        CanaryDistributionProvider.Distribution.STABLE, "Invalid strategies should return stable");
  }