[rules-users] Drools 6 Junit Random Failures

Stephen Masters stephen.masters at me.com
Tue Apr 29 07:09:23 EDT 2014


Looks close enough to what I tend to do. It could be worth firing off something like the following to double-check that your knowledge base and working memory are as expected prior to each test.


    /**
     * Iterates through the facts currently in working memory, and logs their details.
     * 
     * @param session The session to search for facts.
     */
    public static void printFacts(KieSession session) {
        StringBuilder sb = new StringBuilder();
        sb.append("\n************************************************************");
        sb.append("\nThe following facts are currently in the system...");
        for (Object fact : session.getObjects()) {
            sb.append("\n\nFact: “ + fact.toString());
        }
        sb.append("\n************************************************************\n");
        log.info(sb.toString());
    }
    
    /**
     * 
     * @return A String detailing the packages and rules in this knowledge base.
     */
    public static String kbaseDetails(KieBase kbase) {
        StringBuilder sb = new StringBuilder();
        for (KiePackage p : kbase.getKiePackages()) {
            sb.append("\n  Package : " + p.getName());
            for (Rule r : p.getRules()) {
                sb.append("\n    Rule: " + r.getName());
            }
        }
        return "Knowledge base built with packages: " + sb.toString();
    }



On 29 Apr 2014, at 09:47, richardhands <richard.hands at uk.sopragroup.com> wrote:

> I've written a base class to do the heavy lifting of creating all the Kie
> resources etc and to give me a stateless session back that my unit tests can
> all use.  Each test calls the method in this base class to set up stuff, and
> then adds facts and globals and does a fireall.
> 
> however, i get random unit test failures.  sometimes the suite will work
> perfectly, sometimes rule x will fail, sometimes rule f will fail etc.  I'm
> convinced it's got to be something to do with the way i'm setting up the
> initial resources, and maybe they're getting re-used incorrectly from one
> test to another (i expect a brand new clean statelesssession on each test)
> but i can't see what i'm doing wrong.  The documentation around the new Kie
> stuff is still being built around how i'm trying to do stuff, so i'm a bit
> lost.  Each unit test class is designed to test all the rules in on .drl
> file, but there can be many .drl files in one package so i don't want to use
> the api's for loading a package, i am having to create a filesystem and load
> the drl file into it.  can anyone see anything obviously wrong in my base
> class that might cause this intermittent failure?
> 
> thanks
> 
> 
> 
> 
> 
> 
> --
> View this message in context: http://drools.46999.n3.nabble.com/Drools-6-Junit-Random-Failures-tp4029379.html
> Sent from the Drools: User forum mailing list archive at Nabble.com.
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20140429/49b0e405/attachment-0001.html 


More information about the rules-users mailing list