Esempio n. 1
0
 def connect(self):
     if self._connected():
         self._comm.pushMessage(
             TracerError(type(self), 'Dump database is already connected.'))
     try:
         self._connect()
     except Exception as e:
         self._comm.pushMessage(TracerError(type(self), e))
     self._comm.pushMessage(TracerMessage('Connected to dump database.'))
Esempio n. 2
0
 def disconnect(self):
     if not self._connected():
         self._comm.pushMessage(
             TracerError(type(self), 'Database is already disconnected.'))
     try:
         self._disconnect()
     except Exception as e:
         self._comm.pushMessage(TracerError(type(self), e))
     else:
         self._comm.pushMessage(
             TracerMessage('Disconnected from Dump database.'))
Esempio n. 3
0
 def runDump(self):
     while True:
         try:
             line = self._comm.popLine()
             if line:
                 self._parser.parse(line)
                 self._linesProcessed += 1
                 event = self._parser.popEvent()
                 if event:
                     self._dump(event)
                     self._eventsDumped += 1
                     if self._eventsDumped % 10000 == 0:
                         self._comm.pushMessage(
                             TracerMessage(
                                 'Dumped {} events, {} lines processed, {} lines left.'
                                 .format(self._eventsDumped,
                                         self._linesProcessed,
                                         self._comm.linesLeft())))
         except EOFReached:
             print('\nAll data has been processed. Exiting...')
             self._comm.stop()
             break
         except Exception as e:
             self._comm.pushMessage(TracerError(type(self), e))
         if self._comm.stopped():
             break
     self.disconnect()
Esempio n. 4
0
 def disconnect(self):
     try:
         self._svcAux.trace_stop(self._traceId)
         self._svcAux.close()
         self._svc.close()
         self._traceId = 0
     except Exception as e:
         self._comm.pushMessage(TracerError(type(self), e))
     else:
         self._comm.pushMessage(
             TracerMessage("Disconnected from traced DB."))
Esempio n. 5
0
 def runTrace(self):
     while True:
         try:
             line = self._svc.readline()
             while not self._comm.pushLine(line):
                 if self._comm.stopped():
                     break
         except Exception as e:
             self._comm.pushMessage(TracerError(type(self), e))
         if self._comm.stopped():
             break
     self.disconnect()
Esempio n. 6
0
 def createDb(self):
     if os.path.exists(self._dbPath):
         self._comm.pushMessage(
             TracerMessage('Dump database file already exists.'))
         return
     try:
         self._createDb()
     except Exception as e:
         self._comm.pushMessage(TracerError(type(self), e))
     else:
         self._comm.pushMessage(
             TracerMessage('Dump database file created: {}.'.format(
                 self._dbPath)))
Esempio n. 7
0
 def _dump(self, event):
     try:
         self._connection.begin()
         cur = self._connection.cursor()
         fields = vars(event)
         fieldNames = ','.join(tuple(fields.keys()))
         fieldValues = tuple(fields.values())
         placeholders = ','.join('?' * len(fields))
         cur.execute(
             'insert into trace_data_parsed ({}) values ({}) '.format(
                 fieldNames, placeholders), fieldValues)
     except Exception as e:
         self._connection.rollback()
         self._comm.pushMessage(TracerError(type(self), e))
     self._connection.commit()
Esempio n. 8
0
 def connect(self):
     try:
         self._svc = fdb.services.connect(
             host=self._traceParams.host,
             user=self._traceParams.login,
             password=self._traceParams.password)
         if self._svc.engine_version >= 3.0:
             self._svc.charset = 'UTF8'
         # Because trace session blocks the connection, we need another one to stop trace session!
         self._svcAux = fdb.services.connect(
             host=self._traceParams.host,
             user=self._traceParams.login,
             password=self._traceParams.password)
         self._traceId = self._svc.trace_start(self._traceParams.traceConf,
                                               'test_trace1')
     except Exception as e:
         self._comm.pushMessage(TracerError(type(self), e))
     else:
         self._comm.pushMessage(TracerMessage("Connected to traced DB."))