DataCollector( Kernel kernel, JobScheduler jobScheduler, Monitors monitors, ValueMapper.JavaMapper valueMapper ) { this.kernel = kernel; this.jobScheduler = jobScheduler; this.valueMapper = valueMapper; this.queryCollector = new QueryCollector( jobScheduler ); monitors.addMonitorListener( queryCollector ); }
@Override protected LabelScanStore createLabelScanStore( FileSystemAbstraction fileSystemAbstraction, DatabaseLayout databaseLayout, FullStoreChangeStream fullStoreChangeStream, boolean usePersistentStore, boolean readOnly, LabelScanStore.Monitor monitor ) { Monitors monitors = new Monitors(); monitors.addMonitorListener( monitor ); return getLabelScanStore( fileSystemAbstraction, databaseLayout, fullStoreChangeStream, readOnly, monitors ); }
private void setMonitor( Object monitor ) { Monitors monitors = new Monitors(); monitors.addMonitorListener( monitor ); factory.setMonitors( monitors ); }
/** * @return true if instantiated tree needs to be rebuilt. */ private boolean instantiateTree() throws IOException { monitors.addMonitorListener( treeMonitor() ); GBPTree.Monitor monitor = monitors.newMonitor( GBPTree.Monitor.class ); MutableBoolean isRebuilding = new MutableBoolean(); Header.Reader readRebuilding = headerData -> isRebuilding.setValue( headerData.get() == NEEDS_REBUILDING ); index = new GBPTree<>( pageCache, storeFile, new LabelScanLayout(), pageSize, monitor, readRebuilding, needsRebuildingWriter, recoveryCleanupWorkCollector ); return isRebuilding.getValue(); }
@Test public void eventShouldBubbleUp() { Monitors parent = new Monitors(); MyMonitor parentListener = mock( MyMonitor.class ); parent.addMonitorListener( parentListener ); Monitors child = new Monitors( parent ); MyMonitor childListener = mock( MyMonitor.class ); child.addMonitorListener( childListener ); // Calls on monitors from parent should not reach child listeners MyMonitor parentMonitor = parent.newMonitor( MyMonitor.class ); parentMonitor.aVoid(); verify( parentListener, times( 1 ) ).aVoid(); verifyZeroInteractions( childListener ); // Calls on monitors from child should reach both listeners MyMonitor childMonitor = child.newMonitor( MyMonitor.class ); childMonitor.aVoid(); verify( parentListener, times( 2 ) ).aVoid(); verify( childListener, times( 1 ) ).aVoid(); } }
@Test public void shouldRespectTags() { // Given Monitors monitors = new Monitors(); MyMonitor listener = mock( MyMonitor.class ); MyMonitor monitorTag1 = monitors.newMonitor( MyMonitor.class, "tag1" ); MyMonitor monitorTag2 = monitors.newMonitor( MyMonitor.class, "tag2" ); // When monitors.addMonitorListener( listener, "tag2" ); // Then monitorTag1.aVoid(); verifyZeroInteractions( listener ); monitorTag2.aVoid(); verify( listener, times(1) ).aVoid(); verifyNoMoreInteractions( listener ); }
@Test public void shutdownNonInitialisedNativeScanStoreWithoutException() throws IOException { String expectedMessage = "Expected exception message"; Monitors monitors = mock( Monitors.class ); when( monitors.newMonitor( LabelScanStore.Monitor.class ) ).thenReturn( LabelScanStore.Monitor.EMPTY ); doThrow( new RuntimeException( expectedMessage ) ).when( monitors ).addMonitorListener( any() ); LabelScanStore scanStore = getLabelScanStore( fileSystemRule.get(), testDirectory.databaseLayout(), EMPTY, true, monitors ); try { scanStore.init(); fail( "Initialisation of store should fail." ); } catch ( RuntimeException e ) { assertEquals( expectedMessage, e.getMessage() ); } scanStore.shutdown(); }
@Test public void shouldRegister() { // Given Monitors monitors = new Monitors(); MyMonitor listener = mock( MyMonitor.class ); MyMonitor monitor = monitors.newMonitor( MyMonitor.class ); Object obj = new Object(); // When monitors.addMonitorListener( listener ); monitor.aVoid(); monitor.takesArgs( "ha", 12, obj ); // Then verify(listener).aVoid(); verify(listener).takesArgs( "ha", 12, obj ); }
@Test public void shouldUnregister() { // Given Monitors monitors = new Monitors(); MyMonitor listener = mock( MyMonitor.class ); MyMonitor monitor = monitors.newMonitor( MyMonitor.class ); Object obj = new Object(); monitors.addMonitorListener( listener ); // When monitors.removeMonitorListener( listener ); monitor.aVoid(); monitor.takesArgs( "ha", 12, obj ); // Then verifyNoMoreInteractions( listener ); }
@Test public void multipleListenersRegistration() { Monitors monitors = new Monitors(); MyMonitor listener1 = mock( MyMonitor.class ); MyMonitor listener2 = mock( MyMonitor.class ); assertFalse( monitors.hasListeners( MyMonitor.class ) ); monitors.addMonitorListener( listener1 ); monitors.addMonitorListener( listener2 ); assertTrue( monitors.hasListeners( MyMonitor.class ) ); monitors.removeMonitorListener( listener1 ); assertTrue( monitors.hasListeners( MyMonitor.class ) ); monitors.removeMonitorListener( listener2 ); assertFalse( monitors.hasListeners( MyMonitor.class ) ); }
private GraphDatabaseAPI setupDb( File storeDir, IndexRecoveryTracker indexRecoveryTracker ) { Monitors monitors = new Monitors(); monitors.addMonitorListener( indexRecoveryTracker ); return (GraphDatabaseAPI) new GraphDatabaseFactory() .setMonitors( monitors ) .newEmbeddedDatabaseBuilder( storeDir ) .setConfig( GraphDatabaseSettings.allow_upgrade, Settings.TRUE ) .newGraphDatabase(); }
@Before public void setUp() throws Exception { storeDir = directory.databaseDir(); monitors.addMonitorListener( recoveryMonitor ); databaseFactory = new TestGraphDatabaseFactory().setInternalLogProvider( logProvider ).setMonitors( monitors ); logFiles = buildDefaultLogFiles(); }
db.resolveDependency( Monitors.class ).addMonitorListener( monitor );
@Override public IndexProvider newInstance( KernelContext context, DEPENDENCIES dependencies ) { PageCache pageCache = dependencies.pageCache(); File databaseDir = context.directory(); FileSystemAbstraction fs = dependencies.fileSystem(); Log log = dependencies.getLogService().getInternalLogProvider().getLog( loggingClass() ); Monitors monitors = dependencies.monitors(); monitors.addMonitorListener( new LoggingMonitor( log ), descriptorString() ); IndexProvider.Monitor monitor = monitors.newMonitor( IndexProvider.Monitor.class, descriptorString() ); Config config = dependencies.getConfig(); OperationalMode operationalMode = context.databaseInfo().operationalMode; RecoveryCleanupWorkCollector recoveryCleanupWorkCollector = dependencies.recoveryCleanupWorkCollector(); return internalCreate( pageCache, databaseDir, fs, monitor, config, operationalMode, recoveryCleanupWorkCollector ); }
@Test public void shouldTellIfMonitorHasListeners() { // Given Monitors monitors = new Monitors(); MyMonitor listener = mock( MyMonitor.class ); // When I have a monitor with no listeners monitors.newMonitor( MyMonitor.class ); // Then assertFalse( monitors.hasListeners( MyMonitor.class ) ); // When I add a listener monitors.addMonitorListener( listener ); // Then assertTrue( monitors.hasListeners( MyMonitor.class ) ); // When that listener is removed again monitors.removeMonitorListener( listener ); // Then assertFalse( monitors.hasListeners( MyMonitor.class ) ); }
@Before public void before() { dbRule.withSetting( GraphDatabaseSettings.multi_threaded_schema_index_population_enabled, multiThreadedPopulationEnabled + "" ); int batchSize = random.nextInt( 1, 5 ); FeatureToggles.set( MultipleIndexPopulator.class, MultipleIndexPopulator.QUEUE_THRESHOLD_NAME, batchSize ); FeatureToggles.set( BatchingMultipleIndexPopulator.class, MultipleIndexPopulator.QUEUE_THRESHOLD_NAME, batchSize ); GraphDatabaseAPI graphDatabaseAPI = dbRule.getGraphDatabaseAPI(); this.db = graphDatabaseAPI; DependencyResolver dependencyResolver = graphDatabaseAPI.getDependencyResolver(); this.bridge = dependencyResolver.resolveDependency( ThreadToStatementContextBridge.class ); graphDatabaseAPI.getDependencyResolver() .resolveDependency( Monitors.class ) .addMonitorListener( indexOnlineMonitor ); }
@Test public void labelScanStoreIsDirtyWhenIndexIsNotClean() throws IOException { PageCache pageCache = pageCacheRule.getPageCache( fileSystemRule.get() ); createDirtyIndex( pageCache ); Monitors monitors = new Monitors(); RecordingMonitor monitor = new RecordingMonitor(); monitors.addMonitorListener( monitor ); NativeLabelScanStore nativeLabelScanStore = new NativeLabelScanStore( pageCache, testDirectory.databaseLayout(), fileSystemRule.get(), EMPTY, true, monitors, ignore() ); nativeLabelScanStore.init(); nativeLabelScanStore.start(); assertTrue( nativeLabelScanStore.isDirty() ); nativeLabelScanStore.shutdown(); }
@Test public void doNotRebuildIfOpenedInReadOnlyModeAndIndexIsNotClean() throws IOException { PageCache pageCache = pageCacheRule.getPageCache( fileSystemRule.get() ); createDirtyIndex( pageCache ); Monitors monitors = new Monitors(); RecordingMonitor monitor = new RecordingMonitor(); monitors.addMonitorListener( monitor ); NativeLabelScanStore nativeLabelScanStore = new NativeLabelScanStore( pageCache, testDirectory.databaseLayout(), fileSystemRule.get(), EMPTY, true, monitors, ignore() ); nativeLabelScanStore.init(); nativeLabelScanStore.start(); assertTrue( monitor.notValid ); assertFalse( monitor.rebuilt ); assertFalse( monitor.rebuilding ); nativeLabelScanStore.shutdown(); }
@Test public void mustBeDirtyIfFailedDuringRebuild() throws Exception { // given PageCache pageCache = pageCacheRule.getPageCache( fileSystemRule.get() ); createDirtyIndex( pageCache ); // when RecordingMonitor monitor = new RecordingMonitor(); Monitors monitors = new Monitors(); monitors.addMonitorListener( monitor ); NativeLabelScanStore nativeLabelScanStore = new NativeLabelScanStore( pageCache, testDirectory.databaseLayout(), fileSystemRule.get(), EMPTY, false, monitors, immediate() ); nativeLabelScanStore.init(); nativeLabelScanStore.start(); // then assertTrue( monitor.notValid ); assertTrue( monitor.rebuilding ); assertTrue( monitor.rebuilt ); nativeLabelScanStore.shutdown(); }
monitors.addMonitorListener( recoveryMonitor ); db = new TestGraphDatabaseFactory().setMonitors( monitors ).newEmbeddedDatabase( storeDir ); try