summaryrefslogtreecommitdiffstats
path: root/src/report-python
diff options
context:
space:
mode:
Diffstat (limited to 'src/report-python')
-rw-r--r--src/report-python/__init__.py9
-rw-r--r--src/report-python/common.h9
-rw-r--r--src/report-python/crash_data.c19
-rw-r--r--src/report-python/dump_dir.c1
-rw-r--r--src/report-python/reportmodule.c10
-rw-r--r--src/report-python/run_event.c29
-rwxr-xr-xsrc/report-python/test_full2
-rwxr-xr-xsrc/report-python/test_full217
-rwxr-xr-xsrc/report-python/test_run_event_state14
9 files changed, 67 insertions, 33 deletions
diff --git a/src/report-python/__init__.py b/src/report-python/__init__.py
index 892d7c2a..0b0f5685 100644
--- a/src/report-python/__init__.py
+++ b/src/report-python/__init__.py
@@ -119,11 +119,12 @@ def createAlertSignature(component, hashmarkername, hashvalue, summary, alertSig
return cd
def report(cd, io_unused):
- dd = cd.create_dump_dir()
- dir_name = dd.name
- dd.close()
+ #dd = cd.create_dump_dir()
+ #dir_name = dd.name
+ #dd.close()
#r = os.spawnlp(P_WAIT, "abrt-handle-crashdump", "abrt-handle-crashdump", "-d", dirname, "-e" , "report");
+ ### Silmpler alternative:
state = run_event_state()
#state.logging_callback = logfunc
- r = state.run_event(dir_name, "report")
+ r = state.run_event_on_crash_data(cd, "report")
return r
diff --git a/src/report-python/common.h b/src/report-python/common.h
index f77e5a31..d6d209e9 100644
--- a/src/report-python/common.h
+++ b/src/report-python/common.h
@@ -18,6 +18,10 @@
*/
#include <Python.h>
+#include "dump_dir.h"
+#include "crash_data.h"
+#include "run_event.h"
+
/* exception object */
extern PyObject *ReportError;
@@ -36,3 +40,8 @@ typedef struct {
PyObject_HEAD
struct dump_dir *dd;
} p_dump_dir;
+
+typedef struct {
+ PyObject_HEAD
+ crash_data_t *cd;
+} p_crash_data;
diff --git a/src/report-python/crash_data.c b/src/report-python/crash_data.c
index 8ae597c3..04a721cc 100644
--- a/src/report-python/crash_data.c
+++ b/src/report-python/crash_data.c
@@ -20,15 +20,8 @@
#include <structmember.h>
#include <errno.h>
-#include "crash_data.h"
-#include "dump_dir.h"
#include "common.h"
-typedef struct {
- PyObject_HEAD
- crash_data_t *cd;
-} p_crash_data;
-
static void
p_crash_data_dealloc(PyObject *pself)
{
@@ -92,8 +85,8 @@ static PyObject *p_get_crash_data_item(PyObject *pself, PyObject *args)
return Py_BuildValue("sI", ci->content, ci->flags);
}
-/* struct dump_dir *create_dump_dir(crash_data_t *crash_data, const char *base_dir_name); */
-static PyObject *p_create_dump_dir(PyObject *pself, PyObject *args)
+/* struct dump_dir *create_dump_dir_from_crash_data(crash_data_t *crash_data, const char *base_dir_name); */
+static PyObject *p_create_dump_dir_from_crash_data(PyObject *pself, PyObject *args)
{
p_crash_data *self = (p_crash_data*)pself;
const char *base_dir_name = NULL;
@@ -104,7 +97,7 @@ static PyObject *p_create_dump_dir(PyObject *pself, PyObject *args)
p_dump_dir *new_dd = PyObject_New(p_dump_dir, &p_dump_dir_type);
if (!new_dd)
return NULL;
- struct dump_dir *dd = create_dump_dir(self->cd, base_dir_name);
+ struct dump_dir *dd = create_dump_dir_from_crash_data(self->cd, base_dir_name);
if (!dd)
{
PyObject_Del((PyObject*)new_dd);
@@ -121,9 +114,9 @@ static PyObject *p_create_dump_dir(PyObject *pself, PyObject *args)
static PyMethodDef p_crash_data_methods[] = {
/* method_name, func, flags, doc_string */
- { "add" , p_crash_data_add, METH_VARARGS },
- { "get" , p_get_crash_data_item, METH_VARARGS },
- { "create_dump_dir", p_create_dump_dir, METH_VARARGS },
+ { "add" , p_crash_data_add , METH_VARARGS },
+ { "get" , p_get_crash_data_item , METH_VARARGS },
+ { "create_dump_dir", p_create_dump_dir_from_crash_data, METH_VARARGS },
{ NULL }
};
diff --git a/src/report-python/dump_dir.c b/src/report-python/dump_dir.c
index 04a58d31..249a9478 100644
--- a/src/report-python/dump_dir.c
+++ b/src/report-python/dump_dir.c
@@ -22,7 +22,6 @@
#include <structmember.h>
#include <errno.h>
-#include "dump_dir.h"
#include "common.h"
/*** init/cleanup ***/
diff --git a/src/report-python/reportmodule.c b/src/report-python/reportmodule.c
index 6dda73cf..bd74cff3 100644
--- a/src/report-python/reportmodule.c
+++ b/src/report-python/reportmodule.c
@@ -17,18 +17,16 @@
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#include <Python.h>
-#include "common.h"
-#include "crash_data.h"
-#include "dump_dir.h"
+#include "common.h"
PyObject *ReportError;
static PyMethodDef module_methods[] = {
/* method_name, func, flags, doc_string */
- { "dd_opendir" , p_dd_opendir, METH_VARARGS, NULL },
- { "dd_create" , p_dd_create, METH_VARARGS, NULL },
- { "delete_dump_dir", p_delete_dump_dir, METH_VARARGS, NULL },
+ { "dd_opendir" , p_dd_opendir , METH_VARARGS },
+ { "dd_create" , p_dd_create , METH_VARARGS },
+ { "delete_dump_dir", p_delete_dump_dir, METH_VARARGS },
{ NULL }
};
diff --git a/src/report-python/run_event.c b/src/report-python/run_event.c
index 0bef3b21..6131df8e 100644
--- a/src/report-python/run_event.c
+++ b/src/report-python/run_event.c
@@ -20,8 +20,9 @@
#include <structmember.h>
#include <errno.h>
-#include "run_event.h"
#include "common.h"
+#include "crash_data.h"
+#include "run_event.h"
typedef struct {
PyObject_HEAD
@@ -71,7 +72,7 @@ static void p_run_event_state_dealloc(PyObject *pself)
/*** methods ***/
-/* First, C-level callback helpers for run_event(): */
+/* First, C-level callback helpers for run_event_on_FOO(): */
static int post_run_callback(const char *dump_dir_name, void *param)
{
PyObject *obj = (PyObject*)param;
@@ -94,8 +95,8 @@ static char *logging_callback(char *log_line, void *param)
return log_line; /* signaling to caller that we didnt consume the string */
}
-/* int run_event(struct run_event_state *state, const char *dump_dir_name, const char *event); */
-static PyObject *p_run_event(PyObject *pself, PyObject *args)
+/* int run_event_on_dir_name(struct run_event_state *state, const char *dump_dir_name, const char *event); */
+static PyObject *p_run_event_on_dir_name(PyObject *pself, PyObject *args)
{
p_run_event_state *self = (p_run_event_state*)pself;
const char *dump_dir_name;
@@ -104,7 +105,22 @@ static PyObject *p_run_event(PyObject *pself, PyObject *args)
{
return NULL;
}
- int r = run_event(self->state, dump_dir_name, event);
+ int r = run_event_on_dir_name(self->state, dump_dir_name, event);
+ PyObject *obj = Py_BuildValue("i", r);
+ return obj;
+}
+
+/* int run_event_on_crash_data(struct run_event_state *state, crash_data_t *data, const char *event); */
+static PyObject *p_run_event_on_crash_data(PyObject *pself, PyObject *args)
+{
+ p_run_event_state *self = (p_run_event_state*)pself;
+ p_crash_data *cd;
+ const char *event;
+ if (!PyArg_ParseTuple(args, "O!s", &p_crash_data_type, &cd, &event))
+ {
+ return NULL;
+ }
+ int r = run_event_on_crash_data(self->state, cd->cd, event);
PyObject *obj = Py_BuildValue("i", r);
return obj;
}
@@ -177,7 +193,8 @@ static int set_logging_callback(PyObject *pself, PyObject *callback, void *unuse
static PyMethodDef p_run_event_state_methods[] = {
/* method_name, func, flags, doc_string */
- { "run_event", p_run_event, METH_VARARGS },
+ { "run_event_on_dir_name" , p_run_event_on_dir_name , METH_VARARGS },
+ { "run_event_on_crash_data", p_run_event_on_crash_data, METH_VARARGS },
{ NULL }
};
diff --git a/src/report-python/test_full b/src/report-python/test_full
index 05020f05..103535dd 100755
--- a/src/report-python/test_full
+++ b/src/report-python/test_full
@@ -12,7 +12,7 @@ def run_event_on_crash_data(cd, event, log_function = None):
if log_function: # maybe if callable(log_function)?
run_state.logging_callback = log_function
print "Running event:", event
- r = run_state.run_event(dir_name, event)
+ r = run_state.run_event_on_dir_name(dir_name, event)
print "Deleting:", dir_name
delete_dump_dir(dir_name)
return r;
diff --git a/src/report-python/test_full2 b/src/report-python/test_full2
new file mode 100755
index 00000000..734946eb
--- /dev/null
+++ b/src/report-python/test_full2
@@ -0,0 +1,17 @@
+#!/usr/bin/python
+
+import sys
+from report import *
+
+def log_function(line):
+ print "LOG:", line
+
+cd = crash_data()
+cd.add("foo", "bar")
+cd.add("analyzer", "baz", CD_FLAG_ISNOTEDITABLE)
+
+st = run_event_state()
+st.logging_callback = log_function
+r = st.run_event_on_crash_data(cd, "post-create")
+
+print "Result:", r
diff --git a/src/report-python/test_run_event_state1 b/src/report-python/test_run_event_state1
index fa5d61a8..b30f8b55 100755
--- a/src/report-python/test_run_event_state1
+++ b/src/report-python/test_run_event_state1
@@ -20,8 +20,8 @@ if not dd:
dd.save_text("analyzer", "foo")
dd.close()
-res.run_event("testdir", "post-create")
+res.run_event_on_dir_name("testdir", "post-create")
dd = dd_opendir("testdir")
-#dd.delete()
+dd.delete()
dd.close()