You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by tv...@apache.org on 2013/08/30 18:49:56 UTC
[2/2] git commit: [#6530] Add error handling to individual tool
importers
[#6530] Add error handling to individual tool importers
Signed-off-by: Tim Van Steenburgh <tv...@gmail.com>
Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/ea27c57b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/ea27c57b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/ea27c57b
Branch: refs/heads/tv/6530
Commit: ea27c57bd32f2d6e9bc4fe5234706104205438b3
Parents: 149d465
Author: Tim Van Steenburgh <tv...@gmail.com>
Authored: Fri Aug 30 16:49:24 2013 +0000
Committer: Tim Van Steenburgh <tv...@gmail.com>
Committed: Fri Aug 30 16:49:24 2013 +0000
----------------------------------------------------------------------
ForgeImporters/forgeimporters/base.py | 7 +++---
ForgeImporters/forgeimporters/google/code.py | 13 +++++++++-
ForgeImporters/forgeimporters/google/tracker.py | 13 +++++++++-
.../forgeimporters/tests/test_base.py | 26 ++++++++++++--------
ForgeImporters/forgeimporters/trac/tickets.py | 13 +++++++++-
5 files changed, 55 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/ea27c57b/ForgeImporters/forgeimporters/base.py
----------------------------------------------------------------------
diff --git a/ForgeImporters/forgeimporters/base.py b/ForgeImporters/forgeimporters/base.py
index 69db8d6..54f006b 100644
--- a/ForgeImporters/forgeimporters/base.py
+++ b/ForgeImporters/forgeimporters/base.py
@@ -76,11 +76,10 @@ def import_tool(importer_name, project_name=None, mount_point=None, mount_label=
g.post_event('import_tool_task_failed',
error=str(e),
traceback=traceback.format_exc(),
- importer_name=importer_name,
+ importer_source=importer.source,
+ importer_tool_label=importer.tool_label,
project_name=project_name,
- mount_point=mount_point,
- mount_label=mount_label,
- **kw)
+ )
class ProjectExtractor(object):
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/ea27c57b/ForgeImporters/forgeimporters/google/code.py
----------------------------------------------------------------------
diff --git a/ForgeImporters/forgeimporters/google/code.py b/ForgeImporters/forgeimporters/google/code.py
index 60a0158..5adaaa0 100644
--- a/ForgeImporters/forgeimporters/google/code.py
+++ b/ForgeImporters/forgeimporters/google/code.py
@@ -16,6 +16,7 @@
# under the License.
import urllib2
+import traceback
import formencode as fe
from formencode import validators as fev
@@ -83,7 +84,17 @@ def get_repo_class(type_):
@task(notifications_disabled=True)
def import_tool(**kw):
- GoogleRepoImporter().import_tool(c.project, c.user, **kw)
+ try:
+ importer = GoogleRepoImporter()
+ importer.import_tool(c.project, c.user, **kw)
+ except Exception as e:
+ g.post_event('import_tool_task_failed',
+ error=str(e),
+ traceback=traceback.format_exc(),
+ importer_source=importer.source,
+ importer_tool_label=importer.tool_label,
+ project_name=kw.get('project_name'),
+ )
class GoogleRepoImportForm(fe.schema.Schema):
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/ea27c57b/ForgeImporters/forgeimporters/google/tracker.py
----------------------------------------------------------------------
diff --git a/ForgeImporters/forgeimporters/google/tracker.py b/ForgeImporters/forgeimporters/google/tracker.py
index eb97c07..e5c8dc3 100644
--- a/ForgeImporters/forgeimporters/google/tracker.py
+++ b/ForgeImporters/forgeimporters/google/tracker.py
@@ -17,6 +17,7 @@
from collections import defaultdict
from datetime import datetime
+import traceback
from formencode import validators as fev
@@ -53,7 +54,17 @@ from forgeimporters.base import (
@task(notifications_disabled=True)
def import_tool(**kw):
- GoogleCodeTrackerImporter().import_tool(c.project, c.user, **kw)
+ try:
+ importer = GoogleCodeTrackerImporter()
+ importer.import_tool(c.project, c.user, **kw)
+ except Exception as e:
+ g.post_event('import_tool_task_failed',
+ error=str(e),
+ traceback=traceback.format_exc(),
+ importer_source=importer.source,
+ importer_tool_label=importer.tool_label,
+ project_name=kw.get('project_name'),
+ )
class GoogleCodeTrackerImportForm(ToolImportForm):
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/ea27c57b/ForgeImporters/forgeimporters/tests/test_base.py
----------------------------------------------------------------------
diff --git a/ForgeImporters/forgeimporters/tests/test_base.py b/ForgeImporters/forgeimporters/tests/test_base.py
index a61ecda..f6d443f 100644
--- a/ForgeImporters/forgeimporters/tests/test_base.py
+++ b/ForgeImporters/forgeimporters/tests/test_base.py
@@ -54,20 +54,26 @@ def test_import_tool(g, c, by_name):
mount_label='mount_label')
assert not g.post_event.called
-@mock.patch.object(base.ToolImporter, 'by_name')
+
+@mock.patch.object(base.traceback, 'format_exc')
+@mock.patch.object(base, 'ToolImporter')
@mock.patch.object(base, 'g')
-def test_import_tool_failed(g, by_name):
- by_name.side_effect = RuntimeError('my error')
- base.import_tool('importer_name', project_name='project_name',
- mount_point='mount_point', mount_label='mount_label', other='other')
+def test_import_tool_failed(g, ToolImporter, format_exc):
+ format_exc.return_value = 'my traceback'
+
+ importer = mock.Mock(source='importer_source',
+ tool_label='importer_tool_label')
+ importer.import_tool.side_effect = RuntimeError('my error')
+ ToolImporter.by_name.return_value = importer
+
+ base.import_tool('importer_name', project_name='project_name')
g.post_event.assert_called_once_with(
'import_tool_task_failed',
- error=by_name.side_effect,
- importer_name='importer_name',
+ error=str(importer.import_tool.side_effect),
+ traceback='my traceback',
+ importer_source='importer_source',
+ importer_tool_label='importer_tool_label',
project_name='project_name',
- mount_point='mount_point',
- mount_label='mount_label',
- other='other',
)
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/ea27c57b/ForgeImporters/forgeimporters/trac/tickets.py
----------------------------------------------------------------------
diff --git a/ForgeImporters/forgeimporters/trac/tickets.py b/ForgeImporters/forgeimporters/trac/tickets.py
index 941ff32..7876b44 100644
--- a/ForgeImporters/forgeimporters/trac/tickets.py
+++ b/ForgeImporters/forgeimporters/trac/tickets.py
@@ -20,6 +20,7 @@ from datetime import (
timedelta,
)
import json
+import traceback
from formencode import validators as fev
@@ -59,7 +60,17 @@ from forgetracker.scripts.import_tracker import import_tracker
@task(notifications_disabled=True)
def import_tool(**kw):
- TracTicketImporter().import_tool(c.project, c.user, **kw)
+ try:
+ importer = TracTicketImporter()
+ importer.import_tool(c.project, c.user, **kw)
+ except Exception as e:
+ g.post_event('import_tool_task_failed',
+ error=str(e),
+ traceback=traceback.format_exc(),
+ importer_source=importer.source,
+ importer_tool_label=importer.tool_label,
+ project_name=kw.get('trac_url'),
+ )
class TracTicketImportForm(ToolImportForm):