Skip to content

Commit

Permalink
renaming to defrule and adding multipkg support
Browse files Browse the repository at this point in the history
  • Loading branch information
narkisr committed Apr 1, 2012
1 parent 514a0aa commit 092a0e9
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 20 deletions.
2 changes: 1 addition & 1 deletion src/gelfino/drools/dsl.clj
Expand Up @@ -77,7 +77,7 @@ end"
:else ""
))

(defmacro def-rulestream [sname [_ n _when then]]
(defmacro defrule [sname [_ n _when then]]
`(do
~(register-action sname then)
(def ~sname
Expand Down
9 changes: 5 additions & 4 deletions src/gelfino/drools/straping.clj
Expand Up @@ -35,12 +35,13 @@
(defn- add-actions [session]
(.setGlobal session "actions" actions) session)

(defn drools-session [&{:keys [pkg path clock] :or {clock "realtime"}}]
(defn drools-session [&{:keys [pkgs path clock] :or {clock "realtime"}}]
(set-non-strict)
(if (nil? pkg)
(if (nil? pkgs)
(.add builder (ResourceFactory/newFileResource path) ResourceType/DRL)
(.add builder (ResourceFactory/newDescrResource pkg) ResourceType/DESCR))
(doseq [p pkgs]
(.add builder (ResourceFactory/newDescrResource p) ResourceType/DESCR)))
(validate "Unable to compile.")
(if (nil? pkg)
(if (nil? pkgs)
(build-session clock)
(add-actions (build-session clock))))
35 changes: 20 additions & 15 deletions test/gelfino/test/drools/dsl.clj
Expand Up @@ -7,15 +7,15 @@

(def result (ref {:infos false :four-errors false}))

(def-rulestream infos
(defrule infos
(rule info-messages
(when $message :> Message (== level "INFO" )
:from (entry-point "event-stream"))
(then
(dosync
(alter result assoc :infos true)))))

(def-rulestream four-errors
(defrule four-errors
(rule info-messages
(when Number (> intValue 3) :from
(accumulate $message :> Message (== level "ERROR") :over (window :time 1 m)
Expand Down Expand Up @@ -43,28 +43,33 @@
(is (= "actions.deref().get(\"infos\").invoke();\n" consequence))
(is (not (nil? action )))))

(def session (drools-session :pkgs [infos four-errors] :clock "pseudo"))

(def now (.getTime (java.util.Date.)))


(deftest infos-session-run
(let [session (drools-session :pkg infos)
(let [clock (.getSessionClock session)
entry (.getWorkingMemoryEntryPoint session "event-stream")]
(.insert entry (Message. "INFO" 123))
(.insert entry (Message. "bla" 124))
(.fireAllRules session))
(is (= (@result :infos) true)))
(.insert entry (Message. "INFO" now))
(.insert entry (Message. "bla" (+ 1000 now)))
(.advanceTime clock 1 TimeUnit/SECONDS)
(.fireAllRules session)
(is (= (@result :infos) true))))

(deftest infos-session-run
(let [session (drools-session :pkg four-errors :clock "pseudo" )
clock (.getSessionClock session)
now (.getTime (java.util.Date.))

(deftest four-in-a-row
(let [clock (.getSessionClock session)
entry (.getWorkingMemoryEntryPoint session "event-stream")]
;(.insert entry (Message. "INFO" now ))
(.insert entry (Message. "ERROR" now))
(.insert entry (Message. "ERROR" (+ 3000 now)))
(.insert entry (Message. "ERROR" (+ 4000 now)))
(.insert entry (Message. "INFO" (+ 5000 now)))
(.insert entry (Message. "ERROR" (+ 6000 now)))
(.insert entry (Message. "ERROR" (+ 7000 now)))
(.advanceTime clock 10 TimeUnit/SECONDS)
(.fireAllRules session))
(is (= (@result :four-errors) true)))
(.fireAllRules session)
(is (= (@result :four-errors) true))))


(deftest level-lhs
(let [{{[{constraint :constraint {entry :entryId} :source}] :descrs} :lhs} rules-map
Expand Down

0 comments on commit 092a0e9

Please sign in to comment.