socsvn commit: r240747 - in soc2012/tzabal/server-side:
akcrs-handler akcrs-setup akcrs-website akcrs-website/akcrs
tzabal at FreeBSD.org
tzabal at FreeBSD.org
Wed Aug 22 21:46:24 UTC 2012
Author: tzabal
Date: Wed Aug 22 21:46:20 2012
New Revision: 240747
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=240747
Log:
Fix bug related with the recognize phase.
Modified:
soc2012/tzabal/server-side/akcrs-handler/confirm_report.wsgi
soc2012/tzabal/server-side/akcrs-handler/main.py
soc2012/tzabal/server-side/akcrs-setup/database.sql
soc2012/tzabal/server-side/akcrs-setup/setup
soc2012/tzabal/server-side/akcrs-website/akcrs/models.py
soc2012/tzabal/server-side/akcrs-website/setup.py
Modified: soc2012/tzabal/server-side/akcrs-handler/confirm_report.wsgi
==============================================================================
--- soc2012/tzabal/server-side/akcrs-handler/confirm_report.wsgi Wed Aug 22 20:56:53 2012 (r240746)
+++ soc2012/tzabal/server-side/akcrs-handler/confirm_report.wsgi Wed Aug 22 21:46:20 2012 (r240747)
@@ -19,7 +19,7 @@
report_id = parameters['id'][0]
code = parameters['code'][0]
- db.query = ('SELECT 1'
+ db.query = ('SELECT bug_id '
'FROM reports '
'WHERE id = %s AND confirmation_code = %s AND '
'confirmed = %s')
@@ -29,8 +29,16 @@
response_body = 'Could not execute the query.'
if db.cursor.rowcount == 1:
- db.query = 'UPDATE Reports SET confirmed = %s WHERE id = %s'
- db.values = (True, id)
+ bug_id = db.cursor.fetchone()
+
+ db.query = 'UPDATE reports SET confirmed = %s WHERE id = %s'
+ db.values = (True, report_id)
+
+ if not db.execute_query():
+ response_body = 'Could not execute the query.'
+
+ db.query = 'UPDATE bugs SET reported = reported + 1 WHERE id = %s'
+ db.values = (bug_id, )
if not db.execute_query():
response_body = 'Could not execute the query.'
Modified: soc2012/tzabal/server-side/akcrs-handler/main.py
==============================================================================
--- soc2012/tzabal/server-side/akcrs-handler/main.py Wed Aug 22 20:56:53 2012 (r240746)
+++ soc2012/tzabal/server-side/akcrs-handler/main.py Wed Aug 22 21:46:20 2012 (r240747)
@@ -20,15 +20,19 @@
db = database.Database()
-def move_invalid_report(path):
- if not os.path.isfile(path):
+def move_invalid_report(report):
+ if not os.path.isfile(report.path):
return
if not os.path.isdir(settings.INVALID_REPORTS_DIR):
logging.error('Invalid reports directory does not exist')
return
- shutil.move(path, settings.INVALID_REPORTS_DIR)
+ # If file with same name exists, remove it in order to avoid shutil.Error
+ if os.path.exists(settings.INVALID_REPORTS_DIR + '/' + report.name):
+ os.remove(settings.INVALID_REPORTS_DIR + '/' + report.name)
+
+ shutil.move(report.path, settings.INVALID_REPORTS_DIR)
def send_confirmation_email(report):
@@ -50,7 +54,6 @@
try:
smtpconn = smtplib.SMTP(smtpserver)
- print smtpserver
smtpconn.sendmail(sender, receiver, message.as_string())
except smtplib.SMTPException, err:
logging.info(err)
@@ -73,6 +76,7 @@
def store_report(report):
# Bugs
+ report.bugs_id = None
if report.bug_id == -1:
db.query = ('INSERT INTO bugs (state, reported) '
'VALUES (%s, %s) '
@@ -85,7 +89,8 @@
report.bug_id = db.cursor.fetchone()
db.save()
elif type(report.bug_id) == type([]):
- report.bug_id = -1
+ report.bugs_id = report.bug_id
+ report.bug_id = None
# Users
db.query = 'SELECT id FROM users WHERE email = %s'
@@ -122,18 +127,19 @@
report.confirmation_code = generate_random_string(16)
db.query = """INSERT INTO reports (bug_id, user_id, confirmation_code,
- crashtype, crashdate, hostname, ostype, osrelease, version, machine, panic,
- backtrace, top_significant_func, rem_significant_funcs, ps_axl, vmstat_s,
- vmstat_m, vmstat_z, vmstat_i, pstat_T, pstat_s, iostat, ipcs_a, ipcs_T,
- nfsstat, netstat_s, netstat_m, netstat_id, netstat_anr, netstat_anA,
- netstat_aL, fstat, dmesg, kernelconfig, ddbcapturebuffer)
+ bugs_id, crashtype, crashdate, hostname, ostype, osrelease, version,
+ machine, panic, backtrace, top_significant_func, rem_significant_funcs,
+ ps_axl, vmstat_s, vmstat_m, vmstat_z, vmstat_i, pstat_T, pstat_s, iostat,
+ ipcs_a, ipcs_T, nfsstat, netstat_s, netstat_m, netstat_id, netstat_anr,
+ netstat_anA, netstat_aL, fstat, dmesg, kernelconfig, ddbcapturebuffer)
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s,
- %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)
+ %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)
RETURNING id"""
db.values = (report.bug_id,
report.user_id,
report.confirmation_code,
+ report.bugs_id,
report.data.commands['crashtype'],
report.data.commands['crashdate'],
report.data.commands['hostname'],
@@ -206,8 +212,9 @@
aux = 1
else:
aux = 2
- # If odd, then the average value to the middle element
+ # If odd, then the average value to the middle element (starting from 1)
values[elems_per_set + 1] = avg
+ #values[elems_per_set] = avg
# How the values will be allocated
diff = 1
@@ -268,13 +275,18 @@
# Calculate the significant functions of the reports
significant_funcs = get_significant_funcs(report.data.commands['backtrace'])
- report.top_significant_func = significant_funcs[0]
- report.rem_significant_funcs = significant_funcs[1:]
-
+ if len(significant_funcs) > 1:
+ report.top_significant_func = significant_funcs[0]
+ report.rem_significant_funcs = significant_funcs[1:]
+ elif len(significant_funcs) == 1:
+ report.top_significant_func = significant_funcs[0]
+ report.rem_significant_funcs = []
+ else:
+ report.top_significant_func = report.rem_significant_funcs = []
+
# Retrieve from the database the confirmed reports
- db.query = ('SELECT bug_id, panic, top_significant_func, rem_significant_funcs '
- 'FROM Reports '
- 'WHERE confirmed = true')
+ db.query = ('SELECT bug_id, panic, top_significant_func, '
+ 'rem_significant_funcs FROM Reports')
if not db.execute_query():
return
loggedreports = db.cursor.fetchall()
@@ -310,8 +322,10 @@
# percentages for the remaining significant function names.
# Compare X function names, where X is the length of the report with
# the fewest remaining significant function names
- length = min(len(significant_funcs), len(loggedreport[3]))
- rem_sig_max_percs = allocate_values(length - 1)
+ # sigkrisi tou full sign funcs me tou rem sign funcs twn logged! (fixed)
+ length = min(len(report.rem_significant_funcs), len(loggedreport[3]))
+ #rem_sig_max_percs = allocate_values(length - 1)
+ rem_sig_max_percs = allocate_values(length)
# Then, calculate the percentage of similarity between every remaining
# significant function name based on the previous calculated percentages
@@ -322,18 +336,17 @@
).ratio()
sims[index][1] += rem_sig_max_percs[i] * ratio
- # Find with which reports the examined report is similar based on the value
+ # Find with which bugs the examined report is similar based on the value
# of the limit percentage
passlimit = []
for sim in sims:
if sim[1] >= settings.LIMIT_PERC:
passlimit.append(sim[0])
- # Finally, check if the examined report concluded to refer to none or only
- # one logged bug. If it refers to more than one bugs, then this is an
- # indication that our algorithm is not accurate.
- report.bug_id = -1
- print len(passlimit)
+ # Finally, check if the examined report concluded to refer to none, only
+ # one, or more logged bugs. If it refers to more than one bugs, then this is
+ # an indication that our algorithm is not accurate.
+ report.bug_id = -1 # new bug
if len(passlimit):
if passlimit.count(passlimit[0]) == len(passlimit):
# Refers to a known bug
@@ -488,23 +501,23 @@
report = crashreport.CrashReport(path)
print report
if not check_report(report):
- move_invalid_report(report.path)
+ move_invalid_report(report)
continue
if not parse_crashdata(report):
- move_invalid_report(report.path)
+ move_invalid_report(report)
continue
if not recognize_report(report):
- move_invalid_report(report.path)
+ move_invalid_report(report)
continue
if not store_report(report):
- move_invalid_report(report.path)
+ move_invalid_report(report)
continue
if not send_confirmation_email(report):
- move_invalid_report(report.path)
+ move_invalid_report(report)
continue
discard_report(report.path)
Modified: soc2012/tzabal/server-side/akcrs-setup/database.sql
==============================================================================
--- soc2012/tzabal/server-side/akcrs-setup/database.sql Wed Aug 22 20:56:53 2012 (r240746)
+++ soc2012/tzabal/server-side/akcrs-setup/database.sql Wed Aug 22 21:46:20 2012 (r240747)
@@ -9,7 +9,7 @@
DROP TYPE bugstate;
-CREATE TYPE bugstate AS ENUM ('NOSTATE', 'Open', 'Analyzed', 'Feedback', 'Closed', 'Suspended');
+CREATE TYPE bugstate AS ENUM ('Open', 'Analyzed', 'Feedback', 'Closed', 'Suspended');
CREATE TABLE users
@@ -36,13 +36,14 @@
CREATE TABLE reports
(
id serial NOT NULL,
- bug_id integer NOT NULL,
+ bug_id integer,
user_id integer NOT NULL,
received_datetime timestamp DEFAULT CURRENT_TIMESTAMP,
--received_date date DEFAULT CURRENT_DATE,
--received_time time DEFAULT LOCALTIME,
confirmation_code char(16) NOT NULL,
confirmed boolean DEFAULT false,
+ bugs_id integer[],
crashtype text,
crashdate text,
hostname text,
@@ -79,6 +80,4 @@
CONSTRAINT reports_pkey PRIMARY KEY (id),
CONSTRAINT reports_bug_id_fkey FOREIGN KEY (bug_id) REFERENCES bugs (id),
CONSTRAINT reports_user_id_fkey FOREIGN KEY (user_id) REFERENCES users (id)
-);
-
-INSERT INTO bugs (id, state, reported) VALUES (-1, 'NOSTATE', -1);
\ No newline at end of file
+);
\ No newline at end of file
Modified: soc2012/tzabal/server-side/akcrs-setup/setup
==============================================================================
--- soc2012/tzabal/server-side/akcrs-setup/setup Wed Aug 22 20:56:53 2012 (r240746)
+++ soc2012/tzabal/server-side/akcrs-setup/setup Wed Aug 22 21:46:20 2012 (r240747)
@@ -76,7 +76,7 @@
make config
# Build, install and clean
-make install clean
+make -DBATCH install clean
# Launch Apache at system startup
echo 'apache22_enable="YES"' >> /etc/rc.conf
Modified: soc2012/tzabal/server-side/akcrs-website/akcrs/models.py
==============================================================================
--- soc2012/tzabal/server-side/akcrs-website/akcrs/models.py Wed Aug 22 20:56:53 2012 (r240746)
+++ soc2012/tzabal/server-side/akcrs-website/akcrs/models.py Wed Aug 22 21:46:20 2012 (r240747)
@@ -47,11 +47,12 @@
__tablename__ = 'reports'
id = Column(Integer, Sequence('reports_id_seq'), primary_key=True)
- bug_id = Column(Integer, ForeignKey('bugs.id'), nullable=False)
+ bug_id = Column(Integer, ForeignKey('bugs.id'))
user_id = Column(Integer, ForeignKey('users.id'), nullable=False)
received_datetime = Column(TIMESTAMP, default=datetime.datetime.now)
confirmation_code = Column(CHAR(length=16), nullable=False)
confirmed = Column(Boolean, default='false')
+ bugs_id = Column(ARRAY(Integer))
crashtype = Column(Text)
crashdate = Column(Text)
hostname = Column(Text)
Modified: soc2012/tzabal/server-side/akcrs-website/setup.py
==============================================================================
--- soc2012/tzabal/server-side/akcrs-website/setup.py Wed Aug 22 20:56:53 2012 (r240746)
+++ soc2012/tzabal/server-side/akcrs-website/setup.py Wed Aug 22 21:46:20 2012 (r240747)
@@ -14,8 +14,6 @@
'pyramid_debugtoolbar',
'zope.sqlalchemy',
'waitress',
- # tutorial added dependency. maybe remove (docutils)
- 'docutils',
]
setup(name='akcrs',
More information about the svn-soc-all
mailing list