Esempio n. 1
0
        public void IfWeHitOutOfMemoryDuringIndexingThenWeShouldDisableIndexAndCreateAnAlert(string requestedStorage)
        {
            using (var store = NewRemoteDocumentStore(requestedStorage: requestedStorage))
            {
                store.DatabaseCommands.Admin.StopIndexing();

                for (int i = 0; i < 3; i++)
                {
                    using (var session = store.OpenSession())
                    {
                        var city = GenerateCity(i);
                        session.Store(city);
                        session.SaveChanges();
                    }
                }

                var index = new City_ByDistrictNameAndPostalCode();
                index.Execute(store);
                store.DatabaseCommands.Admin.StartIndexing();

                var result = SpinWait.SpinUntil(() =>
                {
                    var stats      = store.DatabaseCommands.GetStatistics();
                    var indexStats = stats.Indexes.First(x => x.Name == index.IndexName);
                    return(indexStats.Priority == IndexingPriority.Disabled);
                }, TimeSpan.FromSeconds(30));

                Assert.True(result);

                var alertsJson = store.DatabaseCommands.Get(Constants.RavenAlerts);
                var alerts     = alertsJson.DataAsJson.JsonDeserialization <AlertsDocument>() ?? new AlertsDocument();
                var alert      = alerts.Alerts.FirstOrDefault(x => x.Title == string.Format("Index '{0}' was disabled", index.IndexName));
                Assert.NotNull(alert);
            }
        }
Esempio n. 2
0
        public void IfWeHitOutOfMemoryDuringIndexingThenWeShouldDisableIndexAndCreateAnAlert(string requestedStorage)
        {
            using (var store = NewRemoteDocumentStore(requestedStorage: requestedStorage))
            {
                store.DatabaseCommands.Admin.StopIndexing();

                for (int i = 0; i < 3; i++)
                {
                    using (var session = store.OpenSession())
                    {
                        var city = GenerateCity(i);
                        session.Store(city);
                        session.SaveChanges();
                    }
                }

                var index = new City_ByDistrictNameAndPostalCode();
                index.Execute(store);
                store.DatabaseCommands.Admin.StartIndexing();

                var result = SpinWait.SpinUntil(() =>
                {
                    var stats      = store.DatabaseCommands.GetStatistics();
                    var indexStats = stats.Indexes.First(x => x.Name == index.IndexName);
                    return(indexStats.Priority == IndexingPriority.Disabled);
                    //Here i raise the time we wait for out of memory exception since it seems to take longer on the test machine
                }, TimeSpan.FromSeconds(10 * 60));

                Assert.True(result);

                result = SpinWait.SpinUntil(() =>
                {
                    var doc = store.DatabaseCommands.Get(Constants.RavenAlerts);
                    return(doc != null);
                }, TimeSpan.FromSeconds(10));

                Assert.True(result);

                var alertsJson = store.DatabaseCommands.Get(Constants.RavenAlerts);
                var alerts     = alertsJson.DataAsJson.JsonDeserialization <AlertsDocument>() ?? new AlertsDocument();
                var alert      = alerts.Alerts.FirstOrDefault(x => x.Title == $"Index '{index.IndexName}' marked as disabled due to out of memory exception");
                Assert.NotNull(alert);
            }
        }