Пример #1
0
        public void IndexMergerShouldNotTakeIntoAccountExpressionVariableName()
        {
            var index1 = new Person_ByName_1();
            var index2 = new Person_ByName_2();
            var index3 = new Person_ByName_3();

            var indexDefinition1 = index1.CreateIndexDefinition();
            var indexDefinition2 = index2.CreateIndexDefinition();
            var indexDefinition3 = index3.CreateIndexDefinition();

            var merger = new IndexMerger(
                new Dictionary <string, IndexDefinition>
            {
                { indexDefinition1.Name, indexDefinition1 },
                { indexDefinition2.Name, indexDefinition2 }
            });

            var results = merger.ProposeIndexMergeSuggestions();

            Assert.Equal(1, results.Suggestions.Count);
            Assert.Equal(1, results.Suggestions[0].CanDelete.Count);

            merger = new IndexMerger(
                new Dictionary <string, IndexDefinition>
            {
                { indexDefinition1.Name, indexDefinition1 },
                { indexDefinition3.Name, indexDefinition3 }
            });

            results = merger.ProposeIndexMergeSuggestions();

            Assert.Equal(1, results.Suggestions.Count);
            Assert.Equal(1, results.Suggestions[0].CanDelete.Count);
        }
Пример #2
0
        public async Task RecreatingIndexesToARecreatedDatabase()
        {
            var path = NewDataPath();

            using (var store = GetDocumentStore(new Options
            {
                ModifyDatabaseName = x => Path.GetFileName(path),
                Path = path
            }))
            {
                var index = new Person_ByName_1();
                store.ExecuteIndex(index);

                var indexes = await store.Maintenance.SendAsync(new GetIndexesOperation(0, 128));

                Assert.True(indexes.Length > 0);

                // We want to keep the files on the disk

                await store.Maintenance.Server.SendAsync(new DeleteDatabasesOperation(store.Database, false));

                var sp = new Stopwatch();
                sp.Start();
                while (sp.Elapsed <= TimeSpan.FromSeconds(5))
                {
                    try
                    {
                        store.Maintenance.Send(new GetStatisticsOperation());
                    }
                    catch (DatabaseDisabledException)
                    {
                    }
                    catch (DatabaseDoesNotExistException)
                    {
                        break;
                    }
                }

                sp.Reset();

                await store.Maintenance.Server.SendAsync(new CreateDatabaseOperation(new DatabaseRecord
                {
                    DatabaseName = store.Database,
                    Settings = new Dictionary <string, string>
                    {
                        { "DataDir", path },
                        { "RunInMemory", false.ToString() }
                    }
                }));


                sp.Start();
                while (sp.Elapsed <= TimeSpan.FromSeconds(10))
                {
                    var stats = store.Maintenance.Send(new GetStatisticsOperation());
                    if (stats?.Indexes.Length > 0)
                    {
                        break;
                    }
                }
                sp.Stop();

                indexes = store.Maintenance.Send(new GetIndexesOperation(0, 128));
                Assert.True(indexes.Length > 0);
            }
        }