public void testRunPackageScenarios() throws Exception {
ServiceImplementation impl = getServiceImplementation();
RulesRepository repo = impl.getRulesRepository();
RepositoryPackageService repositoryPackageService = getRepositoryPackageService();
PackageItem pkg = repo.createPackage( "testScenarioRunBulk",
"" );
DroolsHeader.updateDroolsHeader( "import org.drools.Person",
pkg );
AssetItem rule1 = pkg.addAsset( "rule_1",
"" );
rule1.updateFormat( AssetFormats.DRL );
rule1.updateContent( "rule 'rule1' \n when \np : Person() \n then \np.setAge(42); \n end" );
rule1.checkin( "" );
//this rule will never fire
AssetItem rule2 = pkg.addAsset( "rule_2",
"" );
rule2.updateFormat( AssetFormats.DRL );
rule2.updateContent( "rule 'rule2' \n when \np : Person(age == 1000) \n then \np.setAge(46); \n end" );
rule2.checkin( "" );
repo.save();
//first, the green scenario
Scenario sc = new Scenario();
FactData person = new FactData();
person.setName( "p" );
person.setType( "Person" );
person.getFieldData().add( new FieldData( "age",
"40" ) );
person.getFieldData().add( new FieldData( "name",
"michael" ) );
sc.getFixtures().add( person );
sc.getFixtures().add( new ExecutionTrace() );
VerifyRuleFired vr = new VerifyRuleFired( "rule1",
1,
null );
sc.getFixtures().add( vr );
VerifyFact vf = new VerifyFact();
vf.setName( "p" );
vf.getFieldValues().add( new VerifyField( "name",
"michael",
"==" ) );
vf.getFieldValues().add( new VerifyField( "age",
"42",
"==" ) );
sc.getFixtures().add( vf );
AssetItem scenario1 = pkg.addAsset( "scen1",
"" );
scenario1.updateFormat( AssetFormats.TEST_SCENARIO );
scenario1.updateContent( ScenarioXMLPersistence.getInstance().marshal( sc ) );
scenario1.checkin( "" );
//now the bad scenario
sc = new Scenario();
person = new FactData();
person.setName( "p" );
person.setType( "Person" );
person.getFieldData().add( new FieldData( "age",
"40" ) );
person.getFieldData().add( new FieldData( "name",
"michael" ) );
sc.getFixtures().add( person );
sc.getFixtures().add( new ExecutionTrace() );
vr = new VerifyRuleFired( "rule2",
1,
null );
sc.getFixtures().add( vr );
AssetItem scenario2 = pkg.addAsset( "scen2",
"" );
scenario2.updateFormat( AssetFormats.TEST_SCENARIO );
scenario2.updateContent( ScenarioXMLPersistence.getInstance().marshal( sc ) );
scenario2.checkin( "" );
AssetItem scenario3 = pkg.addAsset( "scenBOGUS",
"" );
scenario3.updateFormat( AssetFormats.TEST_SCENARIO );
scenario3.updateContent( "SOME RUBBISH" );
scenario3.updateDisabled( true );
scenario3.checkin( "" );
//love you
long time = System.currentTimeMillis();
BulkTestRunResult result = repositoryPackageService.runScenariosInPackage( pkg.getUUID() );
System.err.println( "Time taken for runScenariosInPackage " + (System.currentTimeMillis() - time) );
assertNull( result.getResult() );
assertEquals( 50,
result.getPercentCovered() );