def test_getCycleTime(self): deviceclass = self.dmd.Devices.createOrganizer( "/Test/CalculatedPerformance") deviceclass.setZenProperty("zCollectorClientTimeout", 20) # Basis datasources. deviceclass.manage_addRRDTemplate("FileSystem") basis_template = deviceclass.rrdTemplates._getOb("FileSystem") command_ds = BasicDataSource("command") basis_template.datasources._setObject(command_ds.id, command_ds) command_ds = basis_template.datasources._getOb(command_ds.id) command_ds.sourcetype = "COMMAND" command_ds.cycletime = 10 command_ds.manage_addRRDDataPoint("command") python_ds = PythonDataSource("python") basis_template.datasources._setObject(python_ds.id, python_ds) python_ds = basis_template.datasources._getOb(python_ds.id) python_ds.cycletime = "${here/zCollectorClientTimeout}" python_ds.manage_addRRDDataPoint("python") # Aggregating datasources. deviceclass.manage_addRRDTemplate("Device") agg_template = deviceclass.rrdTemplates._getOb("Device") agg_ds1 = AggregatingDataSource("agg1") agg_template.datasources._setObject(agg_ds1.id, agg_ds1) agg_ds1 = agg_template.datasources._getOb(agg_ds1.id) agg_ds1.targetMethod = "os.filesystems" agg_ds1.targetDataSource = "command" agg_ds1.targetDataPoint = "command" agg_ds1.useBasisInterval = False agg_ds1.cycletime = 30 agg_ds2 = AggregatingDataSource("agg2") agg_template.datasources._setObject(agg_ds2.id, agg_ds2) agg_ds2 = agg_template.datasources._getOb(agg_ds2.id) agg_ds2.targetMethod = "os.filesystems" agg_ds2.targetDataSource = "python" agg_ds2.targetDataPoint = "python" agg_ds2.useBasisInterval = True agg_ds2.cycletime = 40 # Device device = deviceclass.createInstance("TestCalculatedPerformance") device.setPerformanceMonitor("localhost") # Members fs1 = FileSystem("boot") device.os.filesystems._setObject(fs1.id, fs1) fs2 = FileSystem("root") device.os.filesystems._setObject(fs2.id, fs2) # Sanity checks. self.assertEqual(command_ds.cycletime, 10) self.assertEqual(python_ds.getCycleTime(device), 20) # useBasisInterval = False self.assertEqual(agg_ds1.getCycleTime(device), 30) # useBasisInterval = True self.assertEqual(agg_ds2.getCycleTime(device), 20) # minimumInterval agg_ds2.minimumInterval = None self.assertEqual(agg_ds2.getCycleTime(device), 20) agg_ds2.minimumInterval = 1 self.assertEqual(agg_ds2.getCycleTime(device), 20) agg_ds2.minimumInterval = 40 self.assertEqual(agg_ds2.getCycleTime(device), 40) agg_ds2.minimumInterval = None # maximumInterval agg_ds2.maximumInterval = None self.assertEqual(agg_ds2.getCycleTime(device), 20) agg_ds2.maximumInterval = 40 self.assertEqual(agg_ds2.getCycleTime(device), 20) agg_ds2.maximumInterval = 1 self.assertEqual(agg_ds2.getCycleTime(device), 1) agg_ds2.maximumInterval = None
def test_getCycleTime(self): deviceclass = self.dmd.Devices.createOrganizer( "/Test/CalculatedPerformance") deviceclass.setZenProperty("zCollectorClientTimeout", 20) deviceclass.manage_addRRDTemplate("Device") template = deviceclass.rrdTemplates._getOb("Device") # Basis datasources. basis_ds1 = BasicDataSource("basis1") template.datasources._setObject( basis_ds1.id, basis_ds1) basis_ds1 = template.datasources._getOb(basis_ds1.id) basis_ds1.sourcetype = "COMMAND" basis_ds1.cycletime = 10 basis_ds1.manage_addRRDDataPoint("basis1") basis_ds2 = PythonDataSource("basis2") template.datasources._setObject(basis_ds2.id, basis_ds2) basis_ds2 = template.datasources._getOb(basis_ds2.id) basis_ds2.cycletime = "${here/zCollectorClientTimeout}" basis_ds2.manage_addRRDDataPoint("basis2") # Calculated datasources. calc_ds1 = CalculatedPerformanceDataSource("calculated1") template.datasources._setObject(calc_ds1.id, calc_ds1) calc_ds1 = template.datasources._getOb(calc_ds1.id) calc_ds1.expression = "basis1 + basis2" calc_ds1.useBasisInterval = False calc_ds1.cycletime = 30 calc_ds1.manage_addRRDDataPoint("calculated1") calc_ds2 = CalculatedPerformanceDataSource("calculated2") template.datasources._setObject(calc_ds2.id, calc_ds2) calc_ds2 = template.datasources._getOb(calc_ds2.id) calc_ds2.expression = "basis1 + basis2" calc_ds2.useBasisInterval = True calc_ds2.cycletime = 40 calc_ds2.manage_addRRDDataPoint("calculated2") # Device device = deviceclass.createInstance("TestCalculatedPerformance") device.setPerformanceMonitor("localhost") # Santity checks. self.assertEqual(basis_ds1.cycletime, 10) self.assertEqual(basis_ds2.getCycleTime(device), 20) # useBasisInterval = False self.assertEqual(calc_ds1.getCycleTime(device), 30) # useBasisInterval = True self.assertEqual(calc_ds2.getCycleTime(device), 10) # minimumInterval calc_ds2.minimumInterval = None self.assertEqual(calc_ds2.getCycleTime(device), 10) calc_ds2.minimumInterval = 1 self.assertEqual(calc_ds2.getCycleTime(device), 10) calc_ds2.minimumInterval = 20 self.assertEqual(calc_ds2.getCycleTime(device), 20) calc_ds2.minimumInterval = None # maximumInterval calc_ds2.maximumInterval = None self.assertEqual(calc_ds2.getCycleTime(device), 10) calc_ds2.maximumInterval = 20 self.assertEqual(calc_ds2.getCycleTime(device), 10) calc_ds2.maximumInterval = 1 self.assertEqual(calc_ds2.getCycleTime(device), 1) calc_ds2.maximumInterval = None