示例#1
0
def create(stringName, key):
        if debug: print "Enter Function create(stringName, key)"
	# Let's create and RRD file and dump some data in it
	dss = []
	ds1 = DS(dsName='kW', dsType='GAUGE', heartbeat=600) #alle 10 Minuten einen Wert
	dss.append(ds1)

        rras = [] #round robin archives mit, xff=0.5 also wenn 20 Minuten kein wert kommt wirds leer angezeigt:
	rra1 = RRA(cf='AVERAGE', xff=0.5, steps=1, rows=144) #alle 10 Minuten ein Wert
	rra2 = RRA(cf='AVERAGE', xff=0.5, steps=6, rows=24)  #24h mal 1h
	rra3 = RRA(cf='AVERAGE', xff=0.5, steps=24, rows=30) #30 Tage mal 24h
	rra4 = RRA(cf='AVERAGE', xff=0.5, steps=30, rows=12) #12 Monate mal 30 Tage
	rra5 = RRA(cf='AVERAGE', xff=0.5, steps=12, rows=10) #10 Jahre mal 12 Monate
	rras.append(rra1)
	rras.append(rra2)
	rras.append(rra3)
	rras.append(rra4)
	rras.append(rra5)

        #round robbin database file anlegen mit der Startzeit startTime (jetzt)
	#myRRD = RRD(baseDir + stringName + "_" + key + ".rrd", ds=dss, rra=rras, start=startTime)
	myRRD = RRD(baseDir + stringName + "_" + key + ".rrd", ds=dss, rra=rras, start=1483228800)
	myRRD.create()

	myRRD.update()
        if debug: myRRD.info()
示例#2
0
class ExternalBackendTestCase(TestCase):
    def setUp(self):
        ds = [DataSource(dsName="speed", dsType="COUNTER", heartbeat=600)]
        rra = [
            RRA(cf="AVERAGE", xff=0.5, steps=1, rows=24),
            RRA(cf="AVERAGE", xff=0.5, steps=6, rows=10)
        ]
        self.rrdfile = tempfile.NamedTemporaryFile()
        self.rrd = RRD(self.rrdfile.name, ds=ds, rra=rra, start=920804400)
        self.rrd.create()

    def test_updateError(self):
        self.rrd.bufferValue(1261214678, 612)
        self.rrd.bufferValue(1261214678, 612)
        self.assertRaises(ExternalCommandError, self.rrd.update)
        expected = ("illegal attempt to update using time 1261214678 "
                    "when last update time is 1261214678 (minimum one second "
                    "step)")
        try:
            self.rrd.update()
        except ExternalCommandError as error:
            self.assertTrue(str(error).startswith("ERROR:"))
            self.assertTrue(str(error).endswith(expected))

    def test_infoWriteMode(self):
        expectedOutput = """
            rra = [{'rows': 24, 'database': None, 'cf': 'AVERAGE', 'cdp_prep': None, 'beta': None, 'seasonal_period': None, 'steps': 1, 'window_length': None, 'threshold': None, 'alpha': None, 'pdp_per_row': None, 'xff': 0.5, 'ds': [], 'gamma': None, 'rra_num': None}, {'rows': 10, 'database': None, 'cf': 'AVERAGE', 'cdp_prep': None, 'beta': None, 'seasonal_period': None, 'steps': 6, 'window_length': None, 'threshold': None, 'alpha': None, 'pdp_per_row': None, 'xff': 0.5, 'ds': [], 'gamma': None, 'rra_num': None}]
            filename = /tmp/tmpQCLRj0
            start = 920804400
            step = 300
            values = []
            ds = [{'name': 'speed', 'min': 'U', 'max': 'U', 'unknown_sec': None, 'minimal_heartbeat': 600, 'value': None, 'rpn': None, 'type': 'COUNTER', 'last_ds': None}]
            ds[speed].name = speed
            ds[speed].min = U
            ds[speed].max = U
            ds[speed].minimal_heartbeat = 600
            ds[speed].type = COUNTER
            rra[0].rows = 24
            rra[0].cf = AVERAGE
            rra[0].steps = 1
            rra[0].xff = 0.5
            rra[0].ds = []
            rra[1].rows = 10
            rra[1].cf = AVERAGE
            rra[1].steps = 6
            rra[1].xff = 0.5
            rra[1].ds = []
            """.strip().split("\n")
        originalStdout = sys.stdout
        sys.stdout = StringIO()
        self.assertTrue(os.path.exists(self.rrdfile.name))
        self.rrd.info()
        for obtained, expected in zip(sys.stdout.getvalue().split("\n"),
                                      expectedOutput):
            if obtained.startswith("filename"):
                self.assertTrue(expected.strip().startswith("filename"))
            else:
                self.assertEquals(obtained.strip(), expected.strip())
        sys.stdout = originalStdout
示例#3
0
def update(stringName, timestamp, key, value):
        if debug: print "Enter Function update(stringName, key, value)"
        
        #round robbing database file öffnen
	myRRD = RRD(baseDir + stringName + "_" + key + ".rrd")

	#Wert in round robbin database eintragen
        try:
            myRRD.bufferValue(timestamp, value)
	    myRRD.update()
        except:
            print "value in the past"
        
        if debug: myRRD.info()
示例#4
0
 def test_infoReadMode(self):
     expectedOutput = """
         filename = "/tmp/tmpP4bTTy"
         rrd_version = "0003"
         step = 300
         last_update = 920804400
         header_size = 800
         ds[speed].index = 0
         ds[speed].type = "COUNTER"
         ds[speed].minimal_heartbeat = 600
         ds[speed].min = NaN
         ds[speed].max = NaN
         ds[speed].last_ds = "U"
         ds[speed].value = 0.0000000000e+00
         ds[speed].unknown_sec = 0
         rra[0].cf = "AVERAGE"
         rra[0].rows = 24
         rra[0].cur_row = 3
         rra[0].pdp_per_row = 1
         rra[0].xff = 5.0000000000e-01
         rra[0].cdp_prep[0].value = NaN
         rra[0].cdp_prep[0].unknown_datapoints = 0
         rra[1].cf = "AVERAGE"
         rra[1].rows = 10
         rra[1].cur_row = 2
         rra[1].pdp_per_row = 6
         rra[1].xff = 5.0000000000e-01
         rra[1].cdp_prep[0].value = NaN
         rra[1].cdp_prep[0].unknown_datapoints = 0
         """
     rrd = RRD(filename=self.rrdfile.name, mode="r", backend=bindings)
     output = StringIO()
     self.assertTrue(os.path.exists(self.rrdfile.name))
     rrd.info(useBindings=True, stream=output)
     for obtained, expected in zip(output.getvalue().split("\n"),
                                   expectedOutput):
         print(("obtained:", obtained))
         print(("expected:", expected))
         if obtained.startswith("filename"):
             self.assertTrue(expected.strip().startswith("filename"))
         else:
             self.assertEqual(obtained.strip(), expected.strip())
     sys.stdout = originalStdout
示例#5
0
 def test_infoReadMode(self):
     expectedOutput = """
         filename = "/tmp/tmpP4bTTy"
         rrd_version = "0003"
         step = 300
         last_update = 920804400
         header_size = 800
         ds[speed].index = 0
         ds[speed].type = "COUNTER"
         ds[speed].minimal_heartbeat = 600
         ds[speed].min = NaN
         ds[speed].max = NaN
         ds[speed].last_ds = "U"
         ds[speed].value = 0.0000000000e+00
         ds[speed].unknown_sec = 0
         rra[0].cf = "AVERAGE"
         rra[0].rows = 24
         rra[0].cur_row = 3
         rra[0].pdp_per_row = 1
         rra[0].xff = 5.0000000000e-01
         rra[0].cdp_prep[0].value = NaN
         rra[0].cdp_prep[0].unknown_datapoints = 0
         rra[1].cf = "AVERAGE"
         rra[1].rows = 10
         rra[1].cur_row = 2
         rra[1].pdp_per_row = 6
         rra[1].xff = 5.0000000000e-01
         rra[1].cdp_prep[0].value = NaN
         rra[1].cdp_prep[0].unknown_datapoints = 0
         """
     rrd = RRD(filename=self.rrdfile.name, mode="r", backend=bindings)
     output = StringIO()
     self.assertTrue(os.path.exists(self.rrdfile.name))
     rrd.info(useBindings=True, stream=output)
     for obtained, expected in zip(
         output.getvalue().split("\n"), expectedOutput):
         print "obtained:", obtained
         print "expected:", expected
         if obtained.startswith("filename"):
             self.assertTrue(expected.strip().startswith("filename"))
         else:
             self.assertEquals(obtained.strip(), expected.strip())
     sys.stdout = originalStdout
示例#6
0
class BindingsBackendTestCase(TestCase):
    def setUp(self):
        self.ds = [DataSource(dsName="speed", dsType="COUNTER", heartbeat=600)]
        self.rra = [
            RRA(cf="AVERAGE", xff=0.5, steps=1, rows=24),
            RRA(cf="AVERAGE", xff=0.5, steps=6, rows=10)
        ]
        self.rrdfile = tempfile.NamedTemporaryFile()
        self.rrd = RRD(self.rrdfile.name,
                       ds=self.ds,
                       rra=self.rra,
                       start=920804400,
                       backend=bindings)
        self.rrd.create()

    def test_infoWriteMode(self):
        expectedOutput = """
            rra = [{'rows': 24, 'database': None, 'cf': 'AVERAGE', 'cdp_prep': None, 'beta': None, 'seasonal_period': None, 'steps': 1, 'window_length': None, 'threshold': None, 'alpha': None, 'pdp_per_row': None, 'xff': 0.5, 'ds': [], 'gamma': None, 'rra_num': None}, {'rows': 10, 'database': None, 'cf': 'AVERAGE', 'cdp_prep': None, 'beta': None, 'seasonal_period': None, 'steps': 6, 'window_length': None, 'threshold': None, 'alpha': None, 'pdp_per_row': None, 'xff': 0.5, 'ds': [], 'gamma': None, 'rra_num': None}]
            filename = /tmp/tmpQCLRj0
            start = 920804400
            step = 300
            values = []
            ds = [{'name': 'speed', 'min': 'U', 'max': 'U', 'unknown_sec': None, 'minimal_heartbeat': 600, 'value': None, 'rpn': None, 'type': 'COUNTER', 'last_ds': None}]
            ds[speed].name = speed
            ds[speed].min = U
            ds[speed].max = U
            ds[speed].minimal_heartbeat = 600
            ds[speed].type = COUNTER
            rra[0].rows = 24
            rra[0].cf = AVERAGE
            rra[0].steps = 1
            rra[0].xff = 0.5
            rra[0].ds = []
            rra[1].rows = 10
            rra[1].cf = AVERAGE
            rra[1].steps = 6
            rra[1].xff = 0.5
            rra[1].ds = []
            """.strip().split("\n")
        output = StringIO()
        self.assertTrue(os.path.exists(self.rrdfile.name))
        self.rrd.info(useBindings=True, stream=output)
        for obtained, expected in zip(output.getvalue().split("\n"),
                                      expectedOutput):
            if obtained.startswith("filename"):
                self.assertTrue(expected.strip().startswith("filename"))
            else:
                self.assertEqual(obtained.strip(), expected.strip())

    def test_infoReadMode(self):
        expectedOutput = """
            filename = "/tmp/tmpP4bTTy"
            rrd_version = "0003"
            step = 300
            last_update = 920804400
            header_size = 800
            ds[speed].index = 0
            ds[speed].type = "COUNTER"
            ds[speed].minimal_heartbeat = 600
            ds[speed].min = NaN
            ds[speed].max = NaN
            ds[speed].last_ds = "U"
            ds[speed].value = 0.0000000000e+00
            ds[speed].unknown_sec = 0
            rra[0].cf = "AVERAGE"
            rra[0].rows = 24
            rra[0].cur_row = 3
            rra[0].pdp_per_row = 1
            rra[0].xff = 5.0000000000e-01
            rra[0].cdp_prep[0].value = NaN
            rra[0].cdp_prep[0].unknown_datapoints = 0
            rra[1].cf = "AVERAGE"
            rra[1].rows = 10
            rra[1].cur_row = 2
            rra[1].pdp_per_row = 6
            rra[1].xff = 5.0000000000e-01
            rra[1].cdp_prep[0].value = NaN
            rra[1].cdp_prep[0].unknown_datapoints = 0
            """
        rrd = RRD(filename=self.rrdfile.name, mode="r", backend=bindings)
        output = StringIO()
        self.assertTrue(os.path.exists(self.rrdfile.name))
        rrd.info(useBindings=True, stream=output)
        for obtained, expected in zip(output.getvalue().split("\n"),
                                      expectedOutput):
            print(("obtained:", obtained))
            print(("expected:", expected))
            if obtained.startswith("filename"):
                self.assertTrue(expected.strip().startswith("filename"))
            else:
                self.assertEqual(obtained.strip(), expected.strip())
        sys.stdout = originalStdout
示例#7
0
class BindingsBackendTestCase(TestCase):

    def setUp(self):
        self.ds = [
            DataSource(dsName="speed", dsType="COUNTER", heartbeat=600)]
        self.rra = [
            RRA(cf="AVERAGE", xff=0.5, steps=1, rows=24),
            RRA(cf="AVERAGE", xff=0.5, steps=6, rows=10)]
        self.rrdfile = tempfile.NamedTemporaryFile()
        self.rrd = RRD(self.rrdfile.name, ds=self.ds, rra=self.rra, 
                       start=920804400, backend=bindings)
        self.rrd.create()

    def test_infoWriteMode(self):
        expectedOutput = """
            rra = [{'rows': 24, 'database': None, 'cf': 'AVERAGE', 'cdp_prep': None, 'beta': None, 'seasonal_period': None, 'steps': 1, 'window_length': None, 'threshold': None, 'alpha': None, 'pdp_per_row': None, 'xff': 0.5, 'ds': [], 'gamma': None, 'rra_num': None}, {'rows': 10, 'database': None, 'cf': 'AVERAGE', 'cdp_prep': None, 'beta': None, 'seasonal_period': None, 'steps': 6, 'window_length': None, 'threshold': None, 'alpha': None, 'pdp_per_row': None, 'xff': 0.5, 'ds': [], 'gamma': None, 'rra_num': None}]
            filename = /tmp/tmpQCLRj0
            start = 920804400
            step = 300
            values = []
            ds = [{'name': 'speed', 'min': 'U', 'max': 'U', 'unknown_sec': None, 'minimal_heartbeat': 600, 'value': None, 'rpn': None, 'type': 'COUNTER', 'last_ds': None}]
            ds[speed].name = speed
            ds[speed].min = U
            ds[speed].max = U
            ds[speed].minimal_heartbeat = 600
            ds[speed].type = COUNTER
            rra[0].rows = 24
            rra[0].cf = AVERAGE
            rra[0].steps = 1
            rra[0].xff = 0.5
            rra[0].ds = []
            rra[1].rows = 10
            rra[1].cf = AVERAGE
            rra[1].steps = 6
            rra[1].xff = 0.5
            rra[1].ds = []
            """.strip().split("\n")
        output = StringIO()
        self.assertTrue(os.path.exists(self.rrdfile.name))
        self.rrd.info(useBindings=True, stream=output)
        for obtained, expected in zip(
            output.getvalue().split("\n"), expectedOutput):
            if obtained.startswith("filename"):
                self.assertTrue(expected.strip().startswith("filename"))
            else:
                self.assertEquals(obtained.strip(), expected.strip())

    def test_infoReadMode(self):
        expectedOutput = """
            filename = "/tmp/tmpP4bTTy"
            rrd_version = "0003"
            step = 300
            last_update = 920804400
            header_size = 800
            ds[speed].index = 0
            ds[speed].type = "COUNTER"
            ds[speed].minimal_heartbeat = 600
            ds[speed].min = NaN
            ds[speed].max = NaN
            ds[speed].last_ds = "U"
            ds[speed].value = 0.0000000000e+00
            ds[speed].unknown_sec = 0
            rra[0].cf = "AVERAGE"
            rra[0].rows = 24
            rra[0].cur_row = 3
            rra[0].pdp_per_row = 1
            rra[0].xff = 5.0000000000e-01
            rra[0].cdp_prep[0].value = NaN
            rra[0].cdp_prep[0].unknown_datapoints = 0
            rra[1].cf = "AVERAGE"
            rra[1].rows = 10
            rra[1].cur_row = 2
            rra[1].pdp_per_row = 6
            rra[1].xff = 5.0000000000e-01
            rra[1].cdp_prep[0].value = NaN
            rra[1].cdp_prep[0].unknown_datapoints = 0
            """
        rrd = RRD(filename=self.rrdfile.name, mode="r", backend=bindings)
        output = StringIO()
        self.assertTrue(os.path.exists(self.rrdfile.name))
        rrd.info(useBindings=True, stream=output)
        for obtained, expected in zip(
            output.getvalue().split("\n"), expectedOutput):
            print "obtained:", obtained
            print "expected:", expected
            if obtained.startswith("filename"):
                self.assertTrue(expected.strip().startswith("filename"))
            else:
                self.assertEquals(obtained.strip(), expected.strip())
        sys.stdout = originalStdout
示例#8
0
myRRD = RRD(filename, step=10, ds=dataSources, rra=roundRobinArchives, start=int(time.time()))
myRRD.create()

# Test for file existence
import os
os.path.isfile(filename)

# Values
# myRRD.bufferValue(str(time.time()), 'q1:q2:q3:lo:hi:total')
myRRD.bufferValue(str(int(time.time())), '1:2:3:0:5:100')
myRRD.bufferValue(str(int(time.time())), '1.2:2.2:3.2:0.2:5.2:90')
myRRD.update()


# Information    
myRRD.info()


# Graph
from pyrrd.graph import DEF, CDEF, VDEF, LINE, AREA, GPRINT
def1 = DEF(rrdfile=myRRD.filename, vname='myspeed', dsName=dataSource.name)
cdef1 = CDEF(vname='kmh', rpn='%s,3600,*' % def1.vname)
cdef2 = CDEF(vname='fast', rpn='kmh,100,GT,kmh,0,IF')
cdef3 = CDEF(vname='good', rpn='kmh,100,GT,0,kmh,IF')
vdef1 = VDEF(vname='mymax', rpn='%s,MAXIMUM' % def1.vname)
vdef2 = VDEF(vname='myavg', rpn='%s,AVERAGE' % def1.vname)
    
line1 = LINE(value=100, color='#990000', legend='Maximum Allowed')
area1 = AREA(defObj=cdef3, color='#006600', legend='Good Speed')
area2 = AREA(defObj=cdef2, color='#CC6633', legend='Too Fast')
line2 = LINE(defObj=vdef2, color='#000099', legend='My Average', stack=True)
示例#9
0
	myRRD.bufferValue('920805600', '12363')
	myRRD.bufferValue('920805900', '12363')
	myRRD.bufferValue('920806200', '12373')
	myRRD.bufferValue('920806500', '12383')
	myRRD.bufferValue('920806800', '12393')
	myRRD.bufferValue('920807100', '12399')
	myRRD.bufferValue('920807400', '12405')
	myRRD.bufferValue('920807700', '12411')
	myRRD.bufferValue('920808000', '12415')
	myRRD.bufferValue('920808300', '12420')
	myRRD.bufferValue('920808600', '12422')
	myRRD.bufferValue('920808900', '12423')
	myRRD.update()

print "myRRD info:",myRRD.info()
print "myRRD Data:",myRRD.getData()

def1 = DEF(rrdfile=myRRD.filename, vname='myspeed', dsName=dataSource.name)
cdef1 = CDEF(vname='kmh', rpn='%s,3600,*' % def1.vname)
cdef2 = CDEF(vname='fast', rpn='kmh,100,GT,kmh,0,IF')
cdef3 = CDEF(vname='good', rpn='kmh,100,GT,0,kmh,IF')
vdef1 = VDEF(vname='mymax', rpn='%s,MAXIMUM' % def1.vname)
vdef2 = VDEF(vname='myavg', rpn='%s,AVERAGE' % def1.vname)

#line1 = LINE(value=100, color='#990000', legend='Maximum Allowed')
area1 = AREA(defObj=cdef3, color='#006600', legend='Good Speed')
area2 = AREA(defObj=cdef2, color='#CC6633', legend='Too Fast')
line2 = LINE(defObj=vdef2, color='#000099', legend='My Average')

gprint1 = GPRINT(vdef2, '%6.3lf kph')