示例#1
0
    def take_action(self, parsed_args):
        self.db = db.DB(parsed_args.database)
        cache = db_linecache.DBLineCache(self.db, parsed_args.run_id)
        self.out = output.OutputFormatter(cache.getline)

        run_details = self.db.get_run(parsed_args.run_id)
        self.out.start_run(
            run_details.id,
            run_details.cwd,
            run_details.description,
            run_details.start_time,
        )
        for t in self.db.get_trace(parsed_args.run_id):
            self.out.trace(
                t.run_id,
                t.event,
                t.func_name,
                t.line_no,
                t.filename,
                t.trace_arg,
                t.local_vars,
                t.timestamp,
            )
        self.out.end_run(
            run_details.id,
            run_details.end_time,
            run_details.error_message,
            None,  # run_details.traceback,
        )
示例#2
0
 def setUp(self):
     super(TraceTest, self).setUp()
     self.useFixture(fixtures.FakeLogger())
     self.db = db.DB(':memory:')
     self.db.start_run(
         '12345',
         '/no/such/dir',
         'command line would go here',
         1370436103.65,
     )
     self.local_values = {'name': ['value', 'pairs']}
     self.trace_arg = [{'complex': 'value'}]
     self.db.trace(
         run_id='12345',
         call_id='abcd',
         event='test',
         func_name='test_trace',
         line_no=99,
         filename='test_db.py',
         trace_arg=self.trace_arg,
         local_vars=self.local_values,
         timestamp=1370436104.65,
     )
     self.db.trace(
         run_id='12345',
         call_id='abcd',
         event='test',
         func_name='test_trace',
         line_no=100,
         filename='test_db.py',
         trace_arg=self.trace_arg,
         local_vars=self.local_values,
         timestamp=1370436104.65,
     )
示例#3
0
 def take_action(self, parsed_args):
     self.db = db.DB(parsed_args.database)
     runs = ((r.id, r.cwd, ' '.join(r.description),
              _format_timestamp(r.start_time),
              _format_timestamp(r.end_time), r.error_message)
             for r in self.db.get_runs(only_errors=parsed_args.errors))
     return (self.DEFAULT_COLUMNS, runs)
示例#4
0
 def take_action(self, parsed_args):
     self.db = db.DB(parsed_args.database)
     run_details = self.db.get_run(parsed_args.run_id)
     if not run_details.stats:
         print 'No profiling data was collected'
     else:
         run_details.stats.sort_stats(parsed_args.sort_order)
         run_details.stats.print_stats()
示例#5
0
 def take_action(self, parsed_args):
     db_ = db.DB(parsed_args.database)
     try:
         db_.delete_run(parsed_args.run_id)
         self.log.info(u"Deleted run {}".format(parsed_args.run_id))
     except db.NoSuchRun:
         self.log.warn(u"No run found with id '{}' delete failed".format(
             parsed_args.run_id))
 def _process_data(self, database, q):
     the_db = db.DB(database)
     while True:
         next_data = q.get()
         if next_data is None:
             q.task_done()
             break
         self._dispatch_one(the_db, next_data)
         q.task_done()
     return
 def take_action(self, parsed_args):
     database = db.DB(parsed_args.database)
     output_dir = parsed_args.output_directory or parsed_args.run_id
     report = html.HTMLReport(
         run_id=parsed_args.run_id,
         output_dir=output_dir,
         database=database,
         title=parsed_args.title or parsed_args.run_id,
         per_page=parsed_args.items_per_page,
     )
     report.run()
 def _copy_run(self, input_name, output_name, run_id):
     input_db = db.DB(input_name)
     run = input_db.get_run(run_id)
     output_db = db.DB(output_name)
     start_time = time.mktime(run.start_time.timetuple())
     output_db.start_run(
         run_id,
         run.cwd,
         run.description,
         start_time,
     )
     self.log.debug('Copying trace data')
     for t in input_db.get_trace(run_id):
         timestamp = time.mktime(t.timestamp.timetuple())
         output_db.trace(
             t.run_id,
             t.call_id,
             t.event,
             t.func_name,
             t.line_no,
             t.filename,
             t.trace_arg,
             t.local_vars,
             timestamp,
         )
     for f_info in input_db.get_files_for_run(run_id):
         self.log.debug('Adding cached file %s', f_info.name)
         f_body = input_db.get_cached_file(run_id, f_info.name)
         output_db.cache_file_for_run(
             run_id,
             f_info.name,
             f_body,
         )
     end_time = time.mktime(run.end_time.timetuple())
     output_db.end_run(
         run_id=run_id,
         end_time=end_time,
         message=run.error_message,
         traceback=run.traceback,
         stats=stats.stats_to_blob(run.stats),
     )
示例#9
0
 def _process_data(self, database, q):
     the_db = db.DB(database)
     while True:
         next_data = q.get()
         if next_data is None:
             q.task_done()
             break
         try:
             self._dispatch_one(the_db, next_data)
         except:
             LOG.exception('error processing %r', next_data)
         q.task_done()
     return
 def setUp(self):
     super(QueryWithStatsTest, self).setUp()
     self.useFixture(fixtures.FakeLogger())
     self.db = db.DB(':memory:')
     self.db.start_run(
         '12345',
         '/no/such/dir',
         ['command', 'line', 'would', 'go', 'here'],
         1370436103.65,
     )
     self.local_values = {'name': ['value', 'pairs']}
     self.trace_arg = [{'complex': 'value'}]
     self.db.trace(
         run_id='12345',
         thread_id='t1',
         call_id='abcd',
         event='test',
         func_name='test_trace',
         line_no=99,
         filename='test_db.py',
         trace_arg=self.trace_arg,
         local_vars=self.local_values,
         timestamp=1370436104.65,
     )
     self.db.trace(
         run_id='12345',
         thread_id='t1',
         call_id='abcd',
         event='test',
         func_name='test_trace',
         line_no=100,
         filename='test_db.py',
         trace_arg=self.trace_arg,
         local_vars=self.local_values,
         timestamp=1370436104.65,
     )
     self.db.start_run(
         '6789',
         '/no/such/dir',
         ['command', 'line', 'would', 'go', 'here'],
         1370436104.65,
     )
     stats_data = stats.stats_to_blob(pstats.Stats(profile.Profile()))
     self.db.end_run(
         '6789',
         1370436105.65,
         'error message',
         None,
         stats=stats_data,
     )
示例#11
0
 def setUp(self):
     super(FileCacheTest, self).setUp()
     self.useFixture(fixtures.FakeLogger())
     self.db = db.DB(':memory:')
     self.db.start_run(
         '12345',
         '/no/such/dir',
         ['command', 'line', 'would', 'go', 'here'],
         1370436103.65,
     )
     self.db.start_run(
         '6789',
         '/no/such/dir',
         ['command', 'line', 'would', 'go', 'here'],
         1370436103.65,
     )
示例#12
0
 def setUp(self):
     super(DBFileCacheTest, self).setUp()
     self.useFixture(fixtures.FakeLogger())
     self.db = db.DB(':memory:')
     self.db.start_run(
         '12345',
         '/no/such/dir',
         ['command', 'line', 'would', 'go', 'here'],
         1370436103.65,
     )
     self.db.cache_file_for_run(
         '12345',
         'test-file.txt',
         'this would be the body\nline two\nline three',
     )
     self.cache = db_linecache.DBLineCache(self.db, '12345')
 def setUp(self):
     super(DBFileCacheTest, self).setUp()
     self.useFixture(fixtures.FakeLogger())
     self.db = db.DB(':memory:')
     self.db.start_run(
         '12345',
         '/no/such/dir',
         ['command', 'line', 'would', 'go', 'here'],
         1370436103.65,
     )
     self.db.cache_file_for_run(
         '12345',
         'test-file.txt',
         'this would be the body\nline two\nline three',
     )
     self.db.cache_file_for_run(
         '12345',
         'with-comments.txt',
         '\n'.join([
             '# start comment',
             'line two',
             '',
             '  # middle comment',
             '',
             'end line',
             '# comment',
             'last line',
         ]),
     )
     self.db.cache_file_for_run(
         '12345',
         'multi-line-comments.txt',
         '\n'.join([
             '# start comment',
             '# comment line 2',
             'non-comment 1',
             '',
             '  # middle comment',
             '  # middle comment line 2',
             '',
             'middle line',
             '# last comment',
             '# last comment line 2',
             'last line',
         ]),
     )
     self.cache = db_linecache.DBLineCache(self.db, '12345')
    def test_commit(self):
        with db.transaction(self.db.conn) as c:
            c.execute("""
                INSERT INTO run (id, cwd, description, start_time)
                VALUES ('12345', 'cwd-here', 'useful description',
                        1370436103.65)
                """)

            db2 = db.DB(':memory:')
            c2 = db2.conn.cursor()
            c2.execute('select * from run')
            d = c2.fetchall()
            self.assertEqual(d, [])

        c3 = self.db.conn.cursor()
        c3.execute('select * from run')
        d = c3.fetchall()
        self.assertEqual(len(d), 1)
    def test_rollback(self):
        try:
            with db.transaction(self.db.conn) as c:
                c.execute("""
                    INSERT INTO run (id, cwd, description, start_time)
                    VALUES ('12345', 'cwd-here', 'useful description',
                            1370436103.65)
                    """)

                db2 = db.DB(':memory:')
                c2 = db2.conn.cursor()
                c2.execute('select * from run')
                d = c2.fetchall()
                self.assertEqual(d, [])
                raise RuntimeError('testing')
        except RuntimeError as err:
            self.assertEqual(str(err), 'testing')

        c3 = self.db.conn.cursor()
        c3.execute('select * from run')
        d = c3.fetchall()
        self.assertEqual(len(d), 0)
 def take_action(self, parsed_args):
     self.db = db.DB(parsed_args.database)
     run = self.db.get_run(parsed_args.run_id)
     details = {
         'id': run.id,
         'cwd': run.cwd,
         'description': run.description,
         'start_time': run.start_time.isoformat(),
         'end_time': run.end_time.isoformat(),
         'error_message': run.error_message,
         'traceback': run.traceback,
     }
     output.dump_dictionary(details, self.log.info, 0)
     threads = list(self.db.get_thread_details(parsed_args.run_id))
     if len(threads) > 1:
         for thread in threads:
             td = {
                 'id': thread.id,
                 'start_time': thread.start_time.isoformat(),
                 'end_time': thread.end_time.isoformat(),
             }
             output.dump_dictionary(td, self.log.info, 0)
     return
 def __init__(self, database_name):
     super(DBHook, self).__init__()
     self._db = db.DB(database_name)
示例#18
0
文件: local.py 项目: religiose/smiley
 def __init__(self, database):
     self.db = db.DB(database)
     self._reset_cache()
 def take_action(self, parsed_args):
     self.db = db.DB(parsed_args.database)
     threads = list(self.db.get_thread_details(parsed_args.run_id))
     return (('ID', 'Start', 'End', 'Num Events', 'Num Locations'), threads)
示例#20
0
 def take_action(self, parsed_args):
     self.db = db.DB(parsed_args.database)
     run_details = self.db.get_run(parsed_args.run_id)
     run_details.stats.dump_stats(parsed_args.filename)
示例#21
0
 def setUp(self):
     super(TransactionTest, self).setUp()
     self.useFixture(fixtures.FakeLogger())
     self.db = db.DB(':memory:')