@Test public void testDeactivationAndReactivation() throws InterruptedException { final long period = 1500; // 1500 ms final long offset = 300; // i.e., 1st event after 300 ms final ISigarSamplerFactory sigarFactory = SigarSamplerFactory.INSTANCE; final MemSwapUsageSampler sampler = sigarFactory.createSensorMemSwapUsage(); this.monitoringController.schedulePeriodicSampler(sampler, offset, period, TimeUnit.MILLISECONDS); Thread.sleep(3600); // sleep 3.6 seconds // Expecting sampling trigger events at milliseconds 300, 1800, 3300 final int numEventsBeforeDisabled = this.recordListFilledByListWriter.size(); final String pattern = SignatureFactory.createMemSwapSignature(); this.monitoringController.deactivateProbe(pattern); Thread.sleep(2000); // sleep 2 seconds while being disabled // There should be no new trigger events final int numEventsWhileDisabled = this.recordListFilledByListWriter.size() - numEventsBeforeDisabled; this.monitoringController.activateProbe(pattern); Thread.sleep(2000); // sleep 2 seconds while being re-enabled // There should be at least one new trigger event final int numEventsAfterReEnabled = this.recordListFilledByListWriter.size() - numEventsBeforeDisabled; final boolean isInstanceOf = this.recordListFilledByListWriter.get(0) instanceof MemSwapUsageRecord; Assert.assertTrue("Unexpected instance of IMonitoringRecord", isInstanceOf); Assert.assertEquals("Unexpected number of triggering events before disabling", 3, numEventsBeforeDisabled); Assert.assertEquals("Unexpected number of triggering events while disabled", 0, numEventsWhileDisabled); Assert.assertTrue("Unexpected at least one triggering events after being re-enabled. Found " + numEventsAfterReEnabled, numEventsAfterReEnabled > 0); // NOCS (MagicNumberCheck) this.monitoringController.terminateMonitoring(); }
/** * {@inheritDoc} */ @Override public void sample(final IMonitoringController monitoringCtr) throws SigarException { if (!monitoringCtr.isMonitoringEnabled()) { return; } if (!monitoringCtr.isProbeActivated(SignatureFactory.createMemSwapSignature())) { return; } final Mem mem = this.sigar.getMem(); final Swap swap = this.sigar.getSwap(); final MemSwapUsageRecord r = new MemSwapUsageRecord( monitoringCtr.getTimeSource().getTime(), monitoringCtr.getHostname(), mem.getTotal(), mem.getActualUsed(), mem.getActualFree(), swap.getTotal(), swap.getUsed(), swap.getFree()); monitoringCtr.newMonitoringRecord(r); } }
/** * {@inheritDoc} */ @Override public void sample(final IMonitoringController monitoringCtr) throws SigarException { if (!monitoringCtr.isMonitoringEnabled()) { return; } if (!monitoringCtr.isProbeActivated(SignatureFactory.createMemSwapSignature())) { return; } final Mem mem = this.sigar.getMem(); final Swap swap = this.sigar.getSwap(); final MemSwapUsageRecord r = new MemSwapUsageRecord( monitoringCtr.getTimeSource().getTime(), monitoringCtr.getHostname(), mem.getTotal(), mem.getActualUsed(), mem.getActualFree(), swap.getTotal(), swap.getUsed(), swap.getFree()); monitoringCtr.newMonitoringRecord(r); } }
/** * Test if activation and deactivation work for sample probes. */ @Test public void testSpecialProbes() { final Configuration configuration = ConfigurationFactory.createSingletonConfiguration(); configuration.setProperty(ConfigurationKeys.WRITER_CLASSNAME, DumpWriter.class.getName()); configuration.setProperty(ConfigurationKeys.ADAPTIVE_MONITORING_ENABLED, "true"); final IMonitoringController ctrl = MonitoringController.createInstance(configuration); final String memSwapSignature = SignatureFactory.createMemSwapSignature(); // %MEM_SWAP final String cpuSignature = SignatureFactory.createCPUSignature(); // %CPU Assert.assertTrue(ctrl.isProbeActivated(memSwapSignature)); // default is true ctrl.deactivateProbe(memSwapSignature); // this entry deactivates the MemSwapProbe Assert.assertFalse(ctrl.isProbeActivated(memSwapSignature)); Assert.assertTrue(ctrl.isProbeActivated(cpuSignature)); // default is true ctrl.deactivateProbe(cpuSignature); // this entry deactivates the CpuProbe Assert.assertFalse(ctrl.isProbeActivated(cpuSignature)); // Independent of 'cpuSignature' all specific signatures are active by default. Assert.assertTrue(ctrl.isProbeActivated(SignatureFactory.createCPUSignature(0))); // %CPU::0 ctrl.deactivateProbe(SignatureFactory.createCPUSignature(0)); Assert.assertFalse(ctrl.isProbeActivated(SignatureFactory.createCPUSignature(0))); Assert.assertTrue(ctrl.isProbeActivated(SignatureFactory.createCPUSignature(1))); // %CPU::1 ctrl.deactivateProbe("%CPU::.*"); // regular expressions also allowed, this one deactivates all probes Assert.assertFalse(ctrl.isProbeActivated(SignatureFactory.createCPUSignature(0))); Assert.assertFalse(ctrl.isProbeActivated(SignatureFactory.createCPUSignature(1))); Assert.assertFalse(ctrl.isMonitoringTerminated()); ctrl.terminateMonitoring(); }