ReleaseId releaseId1 = ks.newReleaseId( "org.kie", "test-upgrade", "1.0.0" );
KieModule km = createAndDeployJar( ks, releaseId1, drl1 + drl2 + drl3 );
// Create a session and fire rules
KieContainer kc = ks.newKieContainer( km.getReleaseId() );
KiePackage kpkg = ( (KieContainerImpl) kc ).getKieBase().getKiePackage( "org.drools.compiler" );
assertEquals( 3, kpkg.getRules().size() );
Map<String, Rule> rules = rulestoMap( kpkg.getRules() );
assertNotNull( ( (org.drools.core.definitions.rule.impl.RuleImpl) rules.get( "R1" ) ) );
assertNotNull( ( (org.drools.core.definitions.rule.impl.RuleImpl) rules.get( "R2" ) ) );
assertNotNull( ( (org.drools.core.definitions.rule.impl.RuleImpl) rules.get( "R3" ) ) );
RuleBase rb_1 = ( (InternalRuleBase) ( (KnowledgeBaseImpl) kc.getKieBase() ).getRuleBase() );
RuleTerminalNode rtn1_1 = (RuleTerminalNode) ( (InternalRuleBase) ( (KnowledgeBaseImpl) kc.getKieBase() ).getRuleBase() ).getReteooBuilder().getTerminalNodes( "R1" )[ 0 ];
RuleTerminalNode rtn2_1 = (RuleTerminalNode) ( (InternalRuleBase) ( (KnowledgeBaseImpl) kc.getKieBase() ).getRuleBase() ).getReteooBuilder().getTerminalNodes( "R2" )[ 0 ];
RuleTerminalNode rtn3_1 = (RuleTerminalNode) ( (InternalRuleBase) ( (KnowledgeBaseImpl) kc.getKieBase() ).getRuleBase() ).getReteooBuilder().getTerminalNodes( "R3" )[ 0 ];
// Create a new jar for version 1.1.0
ReleaseId releaseId2 = ks.newReleaseId( "org.kie", "test-upgrade", "1.1.0" );
km = createAndDeployJar( ks, releaseId2, drl1 + drl3 );
// try to update the container to version 1.1.0
kc.updateToVersion( releaseId2 );
InternalRuleBase rb_2 = ( (InternalRuleBase) ( (KnowledgeBaseImpl) kc.getKieBase() ).getRuleBase() );
assertSame( rb_1, rb_2 );
RuleTerminalNode rtn1_2 = (RuleTerminalNode) rb_2.getReteooBuilder().getTerminalNodes( "R1" )[ 0 ];
RuleTerminalNode rtn3_2 = (RuleTerminalNode) rb_2.getReteooBuilder().getTerminalNodes( "R3" )[ 0 ];
assertNull( rb_2.getReteooBuilder().getTerminalNodes( "R2" ) );
assertSame( rtn3_1, rtn3_2 );
assertSame( rtn1_1, rtn1_2 );
kpkg = ( (KieContainerImpl) kc ).getKieBase().getKiePackage( "org.drools.compiler" );
assertEquals( 2, kpkg.getRules().size() );
rules = rulestoMap( kpkg.getRules() );
assertNotNull( ( (org.drools.core.definitions.rule.impl.RuleImpl) rules.get( "R1" ) ) );
assertNull( ( (org.drools.core.definitions.rule.impl.RuleImpl) rules.get( "R2" ) ) );
assertNotNull( ( (org.drools.core.definitions.rule.impl.RuleImpl) rules.get( "R3" ) ) );
}