public void CanAccelerateViewsByPartitioning()
        {
            // SomeRootView is intentionally slow - it takes ~ 1 second to process each event, so unless we process these
            // two bad boys in parallel, we're not going to make it in 15 seconds
            var viewManagers = new[]
            {
                new MongoDbViewManager<SomeRootView>(_mongoDatabase, "view1", "Position"), 
                new MongoDbViewManager<SomeRootView>(_mongoDatabase, "view2", "Position"),
                new MongoDbViewManager<SomeRootView>(_mongoDatabase, "view3", "Position"),
                new MongoDbViewManager<SomeRootView>(_mongoDatabase, "view4", "Position"),
                new MongoDbViewManager<SomeRootView>(_mongoDatabase, "view5", "Position"), 
                new MongoDbViewManager<SomeRootView>(_mongoDatabase, "view6", "Position"),
                new MongoDbViewManager<SomeRootView>(_mongoDatabase, "view7", "Position"),
                new MongoDbViewManager<SomeRootView>(_mongoDatabase, "view8", "Position"),
            };

            var firstCommandProcessor = CreateCommandProcessor("1", viewManagers);
           
            CreateCommandProcessor("2", viewManagers);
            
            CreateCommandProcessor("3", viewManagers);
            
            CreateCommandProcessor("4", viewManagers);
            
            CreateCommandProcessor("5", viewManagers);
            
            CreateCommandProcessor("6", viewManagers);
            
            CreateCommandProcessor("7", viewManagers);
            
            CreateCommandProcessor("8", viewManagers);

            var lastResult = Enumerable.Range(0, 20)
                .Select(i => firstCommandProcessor.ProcessCommand(new MakeSomeRootDoStuff("bimse")))
                .Last();

            var goal = TimeSpan.FromSeconds(45);

            using (var statusTimer = new Timer(5000))
            {
                var state = new MongoDbAutoDistributionState(_mongoDatabase, "AutoDistribution");
                statusTimer.Elapsed += (o, ea) =>
                {
                    Console.WriteLine(@"--------------------------------------------
Distribution:
{0}

Views:
{1}",
    string.Join(Environment.NewLine, state.GetCurrentState().Select(s => string.Format("    {0}: {1}", s.ManagerId, string.Join(", ", s.ViewIds)))),
    string.Join(Environment.NewLine, viewManagers.Select(v => string.Format("    {0}: {1}", v.GetPosition().Result, v.GetType().GetPrettyName()))));
                };
                statusTimer.Start();

                Task.WaitAll(viewManagers.Select(v => v.WaitUntilProcessed(lastResult, goal)).ToArray());
            }
        }
 protected override void DoSetUp()
 {
     _state = new MongoDbAutoDistributionState(MongoHelper.InitializeTestDatabase(), "AutoDistribution");
 }