|
@@ -129,6 +129,8 @@ func TestInterpreter(t *testing.T) {
|
|
|
|
|
|
ds := NewScriptingInterpreter(testScriptDir, gm)
|
|
|
|
|
|
+
|
|
|
+
|
|
|
writeScript(`
|
|
|
log("test insert")
|
|
|
`)
|
|
@@ -143,6 +145,20 @@ log("test insert")
|
|
|
t.Error(err)
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+ writeScript(`
|
|
|
+raise("some error")
|
|
|
+`)
|
|
|
+
|
|
|
+ if err := ds.Run(); err == nil || err.Error() != `ECAL error in eliasdb-runtime: some error () (Line:2 Pos:1)
|
|
|
+ raise("some error") (testscripts/main.ecal:2)` {
|
|
|
+ t.Error("Unexpected result:", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
writeScript(`
|
|
|
db.storeNode("main", {
|
|
|
"key" : "foo",
|
|
@@ -218,11 +234,27 @@ sink mysink
|
|
|
kindmatch [ "db.*.*" ],
|
|
|
{
|
|
|
log("Got event: ", event)
|
|
|
- if event.state.node.key == "foo2" {
|
|
|
- raise("Oh no")
|
|
|
- }
|
|
|
- if event.state.node.key == "foo3" {
|
|
|
- db.raiseGraphEventHandled()
|
|
|
+ if event.state["node"] != NULL {
|
|
|
+ if event.state.node.key == "foo2" {
|
|
|
+ raise("Oh no")
|
|
|
+ }
|
|
|
+ if event.state.node.key == "foo3" {
|
|
|
+ db.raiseGraphEventHandled()
|
|
|
+ }
|
|
|
+ } elif event.state["edge"] != NULL {
|
|
|
+ if event.state.edge.key == "foo2" {
|
|
|
+ raise("Oh no edge")
|
|
|
+ }
|
|
|
+ if event.state.edge.key == "foo3" and event.kind == "db.edge.created" {
|
|
|
+ raise("Oh no edge2")
|
|
|
+ }
|
|
|
+ if event.state.edge.key == "foo3" and event.kind == "db.edge.updated" {
|
|
|
+ raise("Oh no edge3")
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if event.state.key == "foo3" {
|
|
|
+ db.raiseGraphEventHandled()
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
`)
|
|
@@ -278,7 +310,7 @@ Got event: {
|
|
|
}))
|
|
|
|
|
|
if err == nil || err.Error() != `GraphError: Graph rule error (Taskerror:
|
|
|
-EliasDB: db.node.store -> mysink : ECAL error in eliasdb-runtime: Oh no () (Line:7 Pos:5))` {
|
|
|
+EliasDB: db.node.store -> mysink : ECAL error in eliasdb-runtime: Oh no () (Line:8 Pos:7))` {
|
|
|
t.Error("Unexpected result:", err)
|
|
|
return
|
|
|
}
|
|
@@ -288,6 +320,74 @@ EliasDB: db.node.store -> mysink : ECAL error in eliasdb-runtime: Oh no () (Line
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+ err = gm.UpdateNode("main", data.NewGraphNodeFromMap(map[string]interface{}{
|
|
|
+ "key": "foo",
|
|
|
+ "kind": "bar",
|
|
|
+ "data": 1234,
|
|
|
+ }))
|
|
|
+
|
|
|
+ if err != nil {
|
|
|
+ t.Error("Unexpected result:", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ err = gm.StoreEdge("main", data.NewGraphEdgeFromNode(data.NewGraphNodeFromMap(map[string]interface{}{
|
|
|
+ "key": "foo2",
|
|
|
+ "kind": "e",
|
|
|
+ "end1cascading": true,
|
|
|
+ "end1key": "a",
|
|
|
+ "end1kind": "b",
|
|
|
+ "end1role": "role1",
|
|
|
+ "end2cascading": false,
|
|
|
+ "end2key": "c",
|
|
|
+ "end2kind": "d",
|
|
|
+ "end2role": "role2",
|
|
|
+ })))
|
|
|
+
|
|
|
+ if err == nil || err.Error() != `GraphError: Graph rule error (Taskerror:
|
|
|
+EliasDB: db.edge.store -> mysink : ECAL error in eliasdb-runtime: Oh no edge () (Line:15 Pos:7))` {
|
|
|
+ t.Error("Unexpected result:", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ err = gm.StoreEdge("main", data.NewGraphEdgeFromNode(data.NewGraphNodeFromMap(map[string]interface{}{
|
|
|
+ "key": "foo3",
|
|
|
+ "kind": "e",
|
|
|
+ "end1cascading": true,
|
|
|
+ "end1key": "foo",
|
|
|
+ "end1kind": "bar",
|
|
|
+ "end1role": "role1",
|
|
|
+ "end2cascading": false,
|
|
|
+ "end2key": "foo",
|
|
|
+ "end2kind": "bar",
|
|
|
+ "end2role": "role2",
|
|
|
+ })))
|
|
|
+
|
|
|
+ if err == nil || err.Error() != `GraphError: Graph rule error (Taskerror:
|
|
|
+EliasDB: db.edge.created -> mysink : ECAL error in eliasdb-runtime: Oh no edge2 () (Line:18 Pos:7))` {
|
|
|
+ t.Error("Unexpected result:", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ err = gm.StoreEdge("main", data.NewGraphEdgeFromNode(data.NewGraphNodeFromMap(map[string]interface{}{
|
|
|
+ "key": "foo3",
|
|
|
+ "kind": "e",
|
|
|
+ "end1cascading": true,
|
|
|
+ "end1key": "foo",
|
|
|
+ "end1kind": "bar",
|
|
|
+ "end1role": "role1",
|
|
|
+ "end2cascading": false,
|
|
|
+ "end2key": "foo",
|
|
|
+ "end2kind": "bar",
|
|
|
+ "end2role": "role2",
|
|
|
+ })))
|
|
|
+
|
|
|
+ if err == nil || err.Error() != `GraphError: Graph rule error (Taskerror:
|
|
|
+EliasDB: db.edge.updated -> mysink : ECAL error in eliasdb-runtime: Oh no edge3 () (Line:21 Pos:7))` {
|
|
|
+ t.Error("Unexpected result:", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
|
|
|
err = gm.StoreNode("main", data.NewGraphNodeFromMap(map[string]interface{}{
|
|
@@ -305,4 +405,22 @@ EliasDB: db.node.store -> mysink : ECAL error in eliasdb-runtime: Oh no () (Line
|
|
|
t.Error("Unexpected result:", res, err)
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
+ err = gm.UpdateNode("main", data.NewGraphNodeFromMap(map[string]interface{}{
|
|
|
+ "key": "foo3",
|
|
|
+ "kind": "bar",
|
|
|
+ "data": 123,
|
|
|
+ }))
|
|
|
+
|
|
|
+ if err != nil {
|
|
|
+ t.Error("Unexpected result:", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ _, err = gm.RemoveNode("main", "foo3", "bar")
|
|
|
+
|
|
|
+ if err != nil {
|
|
|
+ t.Error("Unexpected result:", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
}
|