[
https://issues.jboss.org/browse/JBRULES-3320?page=com.atlassian.jira.plug...
]
Edson Tirelli edited comment on JBRULES-3320 at 4/30/12 12:26 PM:
------------------------------------------------------------------
My understanding is that this test is wrong. The behavior of the engine is correct. I will
comment inline on the results you are seeing using >>>:
{panel}
Update #1: ShiftAssignment set from 100 to 101
intervalRequirementPartiallyCovered -> IntervalRequirement: interval: 100,
staffingRequired: 2 covered by 1 ShiftAssignment(s)
intervalRequirementNotCovered -> IntervalRequirement: interval: 103, staffingRequired:
2
intervalRequirementNotCovered -> IntervalRequirement: interval: 102, staffingRequired:
2
intervalRequirementNotCovered -> IntervalRequirement: interval: 101, staffingRequired:
2
COMMENTS: correct
Update #2:ShiftAssignment set from 100 to 103
intervalRequirementPartiallyCovered -> IntervalRequirement: interval: 101,
staffingRequired: 2 covered by 1 ShiftAssignment(s)
intervalRequirementPartiallyCovered -> IntervalRequirement: interval: 102,
staffingRequired: 2 covered by 1 ShiftAssignment(s)
intervalRequirementPartiallyCovered -> IntervalRequirement: interval: 100,
staffingRequired: 2 covered by 1 ShiftAssignment(s)
COMMENTS: intervalRequirementNotCovered rule should have fired for interval 103
*>>> The engine is not firing the rule for interval 103 because if was already
fired in the previous scenario and the IntervalRequirement fact did not change.*
Update #3:ShiftAssignment set from 100 to 102
intervalRequirementNotCovered -> IntervalRequirement: interval: 102, staffingRequired:
2
intervalRequirementPartiallyCovered -> IntervalRequirement: interval: 101,
staffingRequired: 2 covered by 1 ShiftAssignment(s)
intervalRequirementPartiallyCovered -> IntervalRequirement: interval: 100,
staffingRequired: 2 covered by 1 ShiftAssignment(s)
COMMENT: intervalRequirementNotCovered rule should have fired for interval 103
*>>> The engine is not firing the rule for interval 103 because if was already
fired in the first scenario and the IntervalRequirement fact did not change.*
Update #4:ShiftAssignment set from 100 to 104
intervalRequirementPartiallyCovered -> IntervalRequirement: interval: 102,
staffingRequired: 2 covered by 1 ShiftAssignment(s)
intervalRequirementPartiallyCovered -> IntervalRequirement: interval: 103,
staffingRequired: 2 covered by 1 ShiftAssignment(s)
intervalRequirementPartiallyCovered -> IntervalRequirement: interval: 101,
staffingRequired: 2 covered by 1 ShiftAssignment(s)
intervalRequirementPartiallyCovered -> IntervalRequirement: interval: 100,
staffingRequired: 2 covered by 1 ShiftAssignment(s)
COMMENT: correct
{panel}
The log on the last scenario for me correctly shows:
{panel}
Update #5:ShiftAssignment set from 100 to 101
ShiftAssignment set from 100 to 101
intervalRequirementNotCovered -> IntervalRequirement: interval: 103, staffingRequired:
2
intervalRequirementNotCovered -> IntervalRequirement: interval: 102, staffingRequired:
2
intervalRequirementNotCovered -> IntervalRequirement: interval: 101, staffingRequired:
2
intervalRequirementPartiallyCovered -> IntervalRequirement: interval: 100,
staffingRequired: 2 covered by 1 ShiftAssignment(s)
{panel}
I am testing this against 5.4 and 5.5 HEAD as of today.
I am closing this ticket as not a bug. Feel free to reopen the ticket if you still see a
problem.
was (Author: tirelli):
My understanding is that this test is wrong. The behavior of the engine is correct. I
will comment inline on the results you are seeing using >>>:
Update #1: ShiftAssignment set from 100 to 101
intervalRequirementPartiallyCovered -> IntervalRequirement: interval: 100,
staffingRequired: 2 covered by 1 ShiftAssignment(s)
intervalRequirementNotCovered -> IntervalRequirement: interval: 103, staffingRequired:
2
intervalRequirementNotCovered -> IntervalRequirement: interval: 102, staffingRequired:
2
intervalRequirementNotCovered -> IntervalRequirement: interval: 101, staffingRequired:
2
COMMENTS: correct
Update #2:ShiftAssignment set from 100 to 103
intervalRequirementPartiallyCovered -> IntervalRequirement: interval: 101,
staffingRequired: 2 covered by 1 ShiftAssignment(s)
intervalRequirementPartiallyCovered -> IntervalRequirement: interval: 102,
staffingRequired: 2 covered by 1 ShiftAssignment(s)
intervalRequirementPartiallyCovered -> IntervalRequirement: interval: 100,
staffingRequired: 2 covered by 1 ShiftAssignment(s)
COMMENTS: intervalRequirementNotCovered rule should have fired for interval 103
>> The engine is not firing the rule for interval 103 because if
was already fired in the previous scenario and the IntervalRequirement fact did not
change.
Update #3:ShiftAssignment set from 100 to 102
intervalRequirementNotCovered -> IntervalRequirement: interval: 102, staffingRequired:
2
intervalRequirementPartiallyCovered -> IntervalRequirement: interval: 101,
staffingRequired: 2 covered by 1 ShiftAssignment(s)
intervalRequirementPartiallyCovered -> IntervalRequirement: interval: 100,
staffingRequired: 2 covered by 1 ShiftAssignment(s)
COMMENT: intervalRequirementNotCovered rule should have fired for interval 103
>> The engine is not firing the rule for interval 103 because if
was already fired in the first scenario and the IntervalRequirement fact did not change.
Update #4:ShiftAssignment set from 100 to 104
intervalRequirementPartiallyCovered -> IntervalRequirement: interval: 102,
staffingRequired: 2 covered by 1 ShiftAssignment(s)
intervalRequirementPartiallyCovered -> IntervalRequirement: interval: 103,
staffingRequired: 2 covered by 1 ShiftAssignment(s)
intervalRequirementPartiallyCovered -> IntervalRequirement: interval: 101,
staffingRequired: 2 covered by 1 ShiftAssignment(s)
intervalRequirementPartiallyCovered -> IntervalRequirement: interval: 100,
staffingRequired: 2 covered by 1 ShiftAssignment(s)
COMMENT: correct
The log on the last scenario for me correctly shows:
Update #5:ShiftAssignment set from 100 to 101
ShiftAssignment set from 100 to 101
intervalRequirementNotCovered -> IntervalRequirement: interval: 103, staffingRequired:
2
intervalRequirementNotCovered -> IntervalRequirement: interval: 102, staffingRequired:
2
intervalRequirementNotCovered -> IntervalRequirement: interval: 101, staffingRequired:
2
intervalRequirementPartiallyCovered -> IntervalRequirement: interval: 100,
staffingRequired: 2 covered by 1 ShiftAssignment(s)
I am testing this against 5.4 and 5.5 HEAD as of today.
I am closing this ticket as not a bug. Feel free to reopen the ticket if you still see a
problem.
Stateful memory corruption for repetitive updates on the same facts
-------------------------------------------------------------------
Key: JBRULES-3320
URL:
https://issues.jboss.org/browse/JBRULES-3320
Project: Drools
Issue Type: Bug
Security Level: Public(Everyone can see)
Components: drools-core (expert)
Affects Versions: 5.3.0.Final, 5.4.0.Beta1
Environment: Windows 7 64, Java HotSpot(TM) 64-Bit Server 1.6.0_25
Reporter: guy ramirez
Assignee: Edson Tirelli
Fix For: 5.4.0.Final, 5.5.0.Beta1
Multiple updates to the same fact does not yield the expected results (similar to
JBRULES-2809 issue)
The provided UT (see 'steps to reproduce' section) makes use of 2 fact instances:
one IntervalRequirement (never updated) and one ShiftAssignment.
The same ShiftAssignment will be updated multiple times to cover one or more
IntervalRequirement(s).
Here is the output of the test without executing the assertions. For each update I have
added comments explaining what the expected results should be:
Update #1: ShiftAssignment set from 100 to 101
intervalRequirementPartiallyCovered -> IntervalRequirement: interval: 100,
staffingRequired: 2 covered by 1 ShiftAssignment(s)
intervalRequirementNotCovered -> IntervalRequirement: interval: 103, staffingRequired:
2
intervalRequirementNotCovered -> IntervalRequirement: interval: 102, staffingRequired:
2
intervalRequirementNotCovered -> IntervalRequirement: interval: 101, staffingRequired:
2
COMMENTS: correct
Update #2:ShiftAssignment set from 100 to 103
intervalRequirementPartiallyCovered -> IntervalRequirement: interval: 101,
staffingRequired: 2 covered by 1 ShiftAssignment(s)
intervalRequirementPartiallyCovered -> IntervalRequirement: interval: 102,
staffingRequired: 2 covered by 1 ShiftAssignment(s)
intervalRequirementPartiallyCovered -> IntervalRequirement: interval: 100,
staffingRequired: 2 covered by 1 ShiftAssignment(s)
COMMENTS: intervalRequirementNotCovered rule should have fired for interval 103
Update #3:ShiftAssignment set from 100 to 102
intervalRequirementNotCovered -> IntervalRequirement: interval: 102, staffingRequired:
2
intervalRequirementPartiallyCovered -> IntervalRequirement: interval: 101,
staffingRequired: 2 covered by 1 ShiftAssignment(s)
intervalRequirementPartiallyCovered -> IntervalRequirement: interval: 100,
staffingRequired: 2 covered by 1 ShiftAssignment(s)
COMMENT: intervalRequirementNotCovered rule should have fired for interval 103
Update #4:ShiftAssignment set from 100 to 104
intervalRequirementPartiallyCovered -> IntervalRequirement: interval: 102,
staffingRequired: 2 covered by 1 ShiftAssignment(s)
intervalRequirementPartiallyCovered -> IntervalRequirement: interval: 103,
staffingRequired: 2 covered by 1 ShiftAssignment(s)
intervalRequirementPartiallyCovered -> IntervalRequirement: interval: 101,
staffingRequired: 2 covered by 1 ShiftAssignment(s)
intervalRequirementPartiallyCovered -> IntervalRequirement: interval: 100,
staffingRequired: 2 covered by 1 ShiftAssignment(s)
COMMENT: correct
Update #5:ShiftAssignment set from 100 to 101
intervalRequirementTotallyCovered -> IntervalRequirement: interval: 100,
staffingRequired: 2 covered by 2 ShiftAssignment(s)
intervalRequirementNotCovered -> IntervalRequirement: interval: 103, staffingRequired:
2
intervalRequirementNotCovered -> IntervalRequirement: interval: 102, staffingRequired:
2
intervalRequirementNotCovered -> IntervalRequirement: interval: 101, staffingRequired:
2
COMMENT: results should have been identical of that of update #1:
intervalRequirementPartiallyCovered should have fired for interval 100, instead
intervalRequirementTotallyCovered rule fired.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see:
http://www.atlassian.com/software/jira