use of org.neo4j.storageengine.api.StorageEngineFactory in project neo4j by neo4j.
the class SchemaIndexMigratorTest method schemaAndLabelIndexesRemovedAfterSuccessfulMigration.
@Test
void schemaAndLabelIndexesRemovedAfterSuccessfulMigration() throws IOException {
StorageEngineFactory storageEngineFactory = mock(StorageEngineFactory.class);
StoreVersion version = mock(StoreVersion.class);
when(version.hasCompatibleCapabilities(any(), eq(CapabilityType.INDEX))).thenReturn(false);
when(storageEngineFactory.versionInformation(anyString())).thenReturn(version);
IndexImporterFactory indexImporterFactory = mock(IndexImporterFactory.class);
IndexDirectoryStructure directoryStructure = mock(IndexDirectoryStructure.class);
Path indexProviderRootDirectory = databaseLayout.file("just-some-directory");
when(directoryStructure.rootDirectory()).thenReturn(indexProviderRootDirectory);
SchemaIndexMigrator migrator = new SchemaIndexMigrator("Test migrator", fs, pageCache, directoryStructure, storageEngineFactory, true);
when(indexProvider.getProviderDescriptor()).thenReturn(new IndexProviderDescriptor("key", "version"));
migrator.migrate(databaseLayout, migrationLayout, progressReporter, "from", "to", indexImporterFactory);
migrator.moveMigratedFiles(migrationLayout, databaseLayout, "from", "to");
verify(fs).deleteRecursively(indexProviderRootDirectory);
}
use of org.neo4j.storageengine.api.StorageEngineFactory in project neo4j by neo4j.
the class SchemaIndexMigratorTest method shouldDeleteRelationshipIndexesAfterCrossFormatFamilyMigration.
@Test
void shouldDeleteRelationshipIndexesAfterCrossFormatFamilyMigration() throws IOException {
// given
IndexProviderDescriptor provider = new IndexProviderDescriptor("k", "v");
IndexDirectoryStructure directoryStructure = directoriesByProvider(databaseLayout.databaseDirectory()).forProvider(provider);
StorageEngineFactory storageEngineFactory = mock(StorageEngineFactory.class);
StoreVersion fromVersion = mock(StoreVersion.class);
StoreVersion toVersion = mock(StoreVersion.class);
when(fromVersion.hasCompatibleCapabilities(toVersion, CapabilityType.FORMAT)).thenReturn(false);
when(storageEngineFactory.versionInformation("from")).thenReturn(fromVersion);
when(storageEngineFactory.versionInformation("to")).thenReturn(toVersion);
List<SchemaRule> schemaRules = new ArrayList<>();
schemaRules.add(forSchema(SchemaDescriptor.forLabel(1, 2, 3)).withName("n1").materialise(1L));
schemaRules.add(forSchema(SchemaDescriptor.forRelType(5, 3)).withName("r1").materialise(2L));
schemaRules.add(forSchema(SchemaDescriptor.fulltext(RELATIONSHIP, new int[] { 1, 2, 3 }, new int[] { 4, 5, 6 })).withName("r2").materialise(3L));
schemaRules.add(forSchema(SchemaDescriptor.fulltext(NODE, new int[] { 1, 2, 3 }, new int[] { 4, 5, 6 })).withName("n2").materialise(4L));
when(storageEngineFactory.loadSchemaRules(any(), any(), any(), any(), any())).thenReturn(schemaRules);
SchemaIndexMigrator migrator = new SchemaIndexMigrator("Test migrator", fs, pageCache, directoryStructure, storageEngineFactory, false);
// when
migrator.migrate(databaseLayout, migrationLayout, progressReporter, "from", "to", IndexImporterFactory.EMPTY);
migrator.moveMigratedFiles(databaseLayout, migrationLayout, "from", "to");
// then
verify(fs, never()).deleteRecursively(directoryStructure.directoryForIndex(1L));
verify(fs).deleteRecursively(directoryStructure.directoryForIndex(2L));
verify(fs).deleteRecursively(directoryStructure.directoryForIndex(3L));
verify(fs, never()).deleteRecursively(directoryStructure.directoryForIndex(4L));
}
use of org.neo4j.storageengine.api.StorageEngineFactory in project neo4j by neo4j.
the class RecoverIndexDropIT method shouldDropIndexOnRecovery.
@Test
void shouldDropIndexOnRecovery() throws IOException {
// given a transaction stream ending in an INDEX DROP command.
CommittedTransactionRepresentation dropTransaction = prepareDropTransaction();
DatabaseManagementService managementService = configure(new TestDatabaseManagementServiceBuilder(databaseLayout)).build();
GraphDatabaseService db = managementService.database(DEFAULT_DATABASE_NAME);
long initialIndexCount = currentIndexCount(db);
createIndex(db);
StorageEngineFactory storageEngineFactory = ((GraphDatabaseAPI) db).getDependencyResolver().resolveDependency(StorageEngineFactory.class);
managementService.shutdown();
appendDropTransactionToTransactionLog(databaseLayout.getTransactionLogsDirectory(), dropTransaction, storageEngineFactory);
// when recovering this (the drop transaction with the index file intact)
Monitors monitors = new Monitors();
AssertRecoveryIsPerformed recoveryMonitor = new AssertRecoveryIsPerformed();
monitors.addMonitorListener(recoveryMonitor);
managementService = configure(new TestDatabaseManagementServiceBuilder(databaseLayout).setMonitors(monitors)).build();
db = managementService.database(DEFAULT_DATABASE_NAME);
try {
assertTrue(recoveryMonitor.recoveryWasRequired);
// then
assertEquals(initialIndexCount, currentIndexCount(db));
} finally {
// and the ability to shut down w/o failing on still open files
managementService.shutdown();
}
}
use of org.neo4j.storageengine.api.StorageEngineFactory in project neo4j by neo4j.
the class RecoveryCorruptedTransactionLogIT method startStopDatabase.
private void startStopDatabase() {
DatabaseManagementService managementService = databaseFactory.build();
storageEngineFactory = ((GraphDatabaseAPI) managementService.database(DEFAULT_DATABASE_NAME)).getDependencyResolver().resolveDependency(StorageEngineFactory.class);
managementService.shutdown();
}
use of org.neo4j.storageengine.api.StorageEngineFactory in project neo4j by neo4j.
the class KernelDiagnosticsIT method shouldIncludeNativeIndexFilesInTotalMappedSize.
@Test
void shouldIncludeNativeIndexFilesInTotalMappedSize() {
for (GraphDatabaseSettings.SchemaIndex schemaIndex : GraphDatabaseSettings.SchemaIndex.values()) {
// given
Neo4jLayout layout = neo4jLayout;
createIndexInIsolatedDbInstance(layout.homeDirectory(), schemaIndex);
// when
DatabaseLayout databaseLayout = layout.databaseLayout(DEFAULT_DATABASE_NAME);
StorageEngineFactory storageEngineFactory = StorageEngineFactory.defaultStorageEngine();
StoreFilesDiagnostics files = new StoreFilesDiagnostics(storageEngineFactory, fs, databaseLayout);
SizeCapture capture = new SizeCapture();
files.dump(capture::log);
assertNotNull(capture.size);
// then
long expected = manuallyCountTotalMappedFileSize(databaseLayout.databaseDirectory());
assertEquals(bytesToString(expected), capture.size);
}
}
Aggregations