KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > hero > client > test > ProjectSessionTests


1 package hero.client.test;
2
3 /*
4 *
5 * NodeTests.java -
6 * Copyright (C) 2002 Ecoo Team
7 * charoy@loria.fr
8 *
9 *
10 * This program is free software; you can redistribute it and/or
11 * modify it under the terms of the GNU Lesser General Public License
12 * as published by the Free Software Foundation; either version 2
13 * of the License, or (at your option) any later version.
14 *
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU Lesser General Public License for more details.
19 *
20 * You should have received a copy of the GNU Lesser General Public License
21 * along with this program; if not, write to the Free Software
22 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
23 */

24
25 import hero.interfaces.BnEdgeValue;
26 import hero.interfaces.BnRoleMapperValue;
27 import hero.interfaces.BnNodePropertyValue;
28 import hero.interfaces.BnNodeValue;
29 import hero.interfaces.BnProjectHome;
30 import hero.interfaces.BnProjectPropertyValue;
31 import hero.interfaces.BnProjectValue;
32 import hero.interfaces.BnUser;
33 import hero.interfaces.BnUserHome;
34 import hero.interfaces.BnUserLightValue;
35 import hero.interfaces.BnUserUtil;
36 import hero.interfaces.BnUserValue;
37 import hero.interfaces.Constants;
38 import hero.interfaces.ProjectSession;
39 import hero.interfaces.ProjectSessionHome;
40 import hero.interfaces.ProjectSessionUtil;
41 import hero.interfaces.UserSession;
42 import hero.interfaces.UserSessionHome;
43 import hero.interfaces.UserSessionUtil;
44 import hero.util.DuplicatedEdgeException;
45 import hero.util.HeroException;
46
47 import java.util.ArrayList JavaDoc;
48 import java.util.Collection JavaDoc;
49 import java.util.Iterator JavaDoc;
50
51 import junit.framework.TestCase;
52 import junit.framework.TestSuite;
53
54 public class ProjectSessionTests extends TestCase {
55     private BnProjectHome projecth;
56     private ProjectSessionHome projectSessionh;
57
58     public ProjectSessionTests(String JavaDoc testname) {
59     super(testname);
60     }
61     
62     public static TestSuite suite() {
63     return new TestSuite(ProjectSessionTests.class);
64     }
65
66     public void setUp() throws Exception JavaDoc {
67     }
68
69     public void testCreateProjectSession() throws Exception JavaDoc {
70     ProjectSessionHome lHome=ProjectSessionUtil.getHome();
71     ProjectSession lProject = lHome.create();
72     lProject.initProject("projectsession");
73     BnProjectValue pv=lProject.getDetails();
74     BnUserLightValue[] uv=pv.getBnUsers();
75     int i=0;
76     while (i<uv.length) {
77         if (uv[i].getName().equals("admin"))
78         break;
79         i++;
80     }
81     assertTrue("Admin is in the projet",i<uv.length);
82     }
83
84     public void testCloneProjectSession() throws Exception JavaDoc {
85     ProjectSessionHome lHome=ProjectSessionUtil.getHome();
86     ProjectSession lProject = lHome.create();
87     lProject.initProject("projectsource");
88     lProject.addNode("nclone",Constants.Nd.AND_JOIN_NODE);
89     lProject.addNode("c1",Constants.Nd.AND_JOIN_NODE);
90     lProject.addNode("c2",Constants.Nd.AND_JOIN_NODE);
91     lProject.setNodeRole("nclone","admin");
92     lProject.setNodeRole("c1","admin");
93     lProject.setNodeRole("c2","admin");
94     String JavaDoc edge1=lProject.addEdge("c1","c2");
95     lProject = lHome.create();
96     lProject.initProject("projectsource","tralara");
97     BnProjectValue pv=lProject.getDetails();
98     assertTrue("Clone failure1",pv.getBnNodes().length==3);
99     assertTrue("Clone failure2",pv.getName().equalsIgnoreCase("tralara"));
100     }
101     
102    public void testImportProject() throws Exception JavaDoc {
103     ProjectSessionHome lHome=ProjectSessionUtil.getHome();
104     ProjectSession lProject = lHome.create();
105     lProject.initProject("projectS");
106     lProject.addNode("nclone",Constants.Nd.AND_JOIN_NODE);
107     lProject.addNode("c1",Constants.Nd.AND_JOIN_NODE);
108     lProject.addNode("c2",Constants.Nd.AND_JOIN_NODE);
109     lProject.setNodeRole("nclone","admin");
110     lProject.setNodeRole("c1","admin");
111     lProject.setNodeRole("c2","admin");
112     String JavaDoc edge1=lProject.addEdge("c1","c2");
113
114     lProject = lHome.create();
115     lProject.initProject("pDest");
116     
117     lProject.addNode("nclone2",Constants.Nd.AND_JOIN_NODE);
118     lProject.setNodeRole("nclone2","admin");
119     lProject.importProject("projectS","pDest");
120     BnProjectValue pv=lProject.getDetails();
121     assertTrue("Clone failure1",pv.getBnNodes().length==4);
122     assertTrue("Clone failure2",pv.getName().equalsIgnoreCase("pDest"));
123     }
124
125     public void testAddUserToProject() throws Exception JavaDoc {
126     ProjectSessionHome lHome=ProjectSessionUtil.getHome();
127     ProjectSession lProject = lHome.create();
128     lProject.initProject("projectadduser");
129     BnUserHome uHome = BnUserUtil.getHome();
130     BnUserValue pdata=new BnUserValue();
131     pdata.setName("bidochon");
132     pdata.setPassword("bidochon");
133     pdata.setEmail("bidochon@loria.fr");
134     BnUser lUser = uHome.create(pdata);
135     lProject.addUser("bidochon");
136     pdata.setName("marcel");
137     pdata.setPassword("marcel");
138     pdata.setEmail("marcel@loria.fr");
139     lUser = uHome.create(pdata);
140     lProject.addUser("marcel");
141     pdata.setName("germaine");
142     pdata.setPassword("germaine");
143     pdata.setEmail("germaine@loria.fr");
144     lUser = uHome.create(pdata);
145     lProject.addUser("germaine");
146     assertTrue(lProject.containsUser("bidochon"));
147     }
148
149     public void testAddNodeToProject() throws Exception JavaDoc {
150     ProjectSessionHome lHome=ProjectSessionUtil.getHome();
151     ProjectSession lProject = lHome.create();
152     lProject.initProject("projectaddnode");
153     lProject.addNode("thenode",1);
154     BnNodeValue nv=lProject.getNodeValue("thenode");
155     assertTrue("Creator not correctly set",nv.getCreator().equals("admin"));
156     }
157
158     public void testAddEdgeToProject() throws Exception JavaDoc {
159     ProjectSessionHome lHome=ProjectSessionUtil.getHome();
160     ProjectSession lProject = lHome.create();
161     lProject.initProject("projectaddedge");
162     lProject.addNode("thenode",Constants.Nd.AND_JOIN_NODE);
163     lProject.addNode("thenode2",Constants.Nd.AND_JOIN_NODE);
164     String JavaDoc ename=lProject.addEdge("thenode","thenode2");
165     BnEdgeValue ev=lProject.getEdgeValue(ename);
166     BnNodeValue nv=lProject.getNodeValue("thenode2");
167     assertTrue("addEdge failed a1",ev.getState()==Constants.Ed.INITIAL);
168     assertTrue("bad node state test3",nv.getState()==Constants.Nd.INITIAL); }
169
170     public void testProjectSessionAddUser() throws Exception JavaDoc {
171     ProjectSessionHome projectSessionh=ProjectSessionUtil.getHome();
172     ProjectSession pss = projectSessionh.create();
173     pss.initProject("pst");
174
175     try {
176         pss.addUser("badUser");
177         assertTrue("Should have throw EJBException",false);
178     } catch (Exception JavaDoc e) {
179         //expected behavior
180
}
181     }
182
183     public void testProjectSessionAddNode() throws Exception JavaDoc {
184     ProjectSessionHome projectSessionh=ProjectSessionUtil.getHome();
185     ProjectSession pss = projectSessionh.create();
186     pss.initProject("pst2");
187     pss.addNode("test",Constants.Nd.AND_JOIN_NODE);
188     BnNodeValue pv=pss.getNodeValue("test");
189
190     assertTrue("Creator not correctly set",pv.getCreator().equals("admin"));
191     }
192
193     public void testProjectSessionAddEdgesState() throws Exception JavaDoc {
194     ProjectSessionHome projectSessionh=ProjectSessionUtil.getHome();
195     ProjectSession pss = projectSessionh.create();
196     pss.initProject("w");
197
198     pss.addNode("node1",Constants.Nd.AND_JOIN_NODE);
199     pss.addNode("node2",Constants.Nd.AND_JOIN_NODE);
200     pss.addNode("node3",Constants.Nd.AND_JOIN_NODE);
201     String JavaDoc edname=pss.addEdge("node1","node2");
202     BnEdgeValue ev=pss.getEdgeValue(edname);
203     BnNodeValue nv=pss.getNodeValue("node2");
204     assertTrue("addEdge failed a1",ev.getState()==Constants.Ed.INITIAL);
205     assertTrue("addEdge failed a1/n2",nv.getState()==Constants.Nd.INITIAL);
206     edname=pss.addEdge("node2","node3");
207     ev=pss.getEdgeValue(edname);
208     BnNodeValue nv2=pss.getNodeValue("node2");
209     BnNodeValue nv3=pss.getNodeValue("node3");
210     assertTrue("addEdge failed a2",ev.getState()==Constants.Ed.INITIAL);
211     assertTrue("addEdge failed a2/nv2",nv2.getState()==Constants.Nd.INITIAL);
212     assertTrue("addEdge failed a2/nv3",nv3.getState()==Constants.Nd.INITIAL);
213     }
214
215     public void testcheckDuplicateEdge() throws Exception JavaDoc {
216     
217     try {
218         ProjectSessionHome projectSessionh=ProjectSessionUtil.getHome();
219         ProjectSession pss = projectSessionh.create();
220         pss.initProject("wde");
221         
222         pss.addNode("node1",Constants.Nd.AND_JOIN_NODE);
223         pss.addNode("node2",Constants.Nd.AND_JOIN_NODE);
224         pss.addEdge("node1","node2");
225         
226         pss.addNode("node3",Constants.Nd.AND_JOIN_NODE);
227         pss.addEdge("node2","node3");
228         
229         pss.addNode("node4",Constants.Nd.AND_JOIN_NODE);
230         pss.addEdge("node1","node4");
231         
232         pss.addEdge("node1","node2");
233         assertTrue("Should have thrown a DuplicatedEdgeException",false);
234     }catch(DuplicatedEdgeException e){}
235     }
236
237     public void testDynamicProject() throws Exception JavaDoc {
238     UserSessionHome usersh=UserSessionUtil.getHome();
239     ProjectSessionHome projectSessionh=ProjectSessionUtil.getHome();
240     ProjectSession pss = projectSessionh.create();
241     pss.initProject("dynamic");
242
243     pss.addNode("n1",Constants.Nd.AND_JOIN_NODE);
244     pss.addNode("n2",Constants.Nd.AND_JOIN_NODE);
245     pss.addEdge("n1","n2");
246     pss.setNodeRole("n1","admin");
247     pss.setNodeRole("n1","admin");
248
249     UserSession usr=usersh.create();
250
251     usr.startActivity("dynamic","n1");
252
253     pss.addNode("n3",Constants.Nd.AND_JOIN_NODE);
254     String JavaDoc edge2=pss.addEdge("n2","n3");
255
256     assertTrue("dynamic change failed - n1",pss.getNodeValue("n1").getState()==Constants.Nd.EXECUTING);
257     assertTrue("dynamic change failed - n2",pss.getNodeValue("n2").getState()==Constants.Nd.ANTICIPABLE);
258     assertTrue("dynamic change failed - n3",pss.getNodeValue("n3").getState()==Constants.Nd.INITIAL);
259
260     usr.startActivity("dynamic","n2");
261
262     assertTrue("dynamic change failed - n1.1",pss.getNodeValue("n1").getState()==Constants.Nd.EXECUTING);
263     assertTrue("dynamic change failed - n2.1",pss.getNodeValue("n2").getState()==Constants.Nd.ANTICIPATING);
264     assertTrue("dynamic change failed - n3.1",pss.getNodeValue("n3").getState()==Constants.Nd.ANTICIPABLE);
265
266     pss.deleteEdge(edge2);
267
268     assertTrue("dynamic change failed - n1.2",pss.getNodeValue("n1").getState()==Constants.Nd.EXECUTING);
269     assertTrue("dynamic change failed - n2.2",pss.getNodeValue("n2").getState()==Constants.Nd.ANTICIPATING);
270     assertTrue("dynamic change failed - n3.2",pss.getNodeValue("n3").getState()==Constants.Nd.READY);
271
272     pss.addEdge("n2","n3");
273
274     assertTrue("dynamic change failed - n1.3",pss.getNodeValue("n1").getState()==Constants.Nd.EXECUTING);
275     assertTrue("dynamic change failed - n2.3",pss.getNodeValue("n2").getState()==Constants.Nd.ANTICIPATING);
276     assertTrue("dynamic change failed - n3.3",pss.getNodeValue("n3").getState()==Constants.Nd.ANTICIPABLE);
277
278     }
279     
280     public void TestDynamicProject2() throws Exception JavaDoc {
281     UserSessionHome usersh=UserSessionUtil.getHome();
282     ProjectSessionHome projectSessionh=ProjectSessionUtil.getHome();
283
284     ProjectSession pss = projectSessionh.create();
285     pss.initProject("dynamic2");
286
287     pss.addNode("n1",Constants.Nd.AND_JOIN_NODE);
288     pss.addNode("n2",Constants.Nd.AND_JOIN_NODE);
289     String JavaDoc edge1=pss.addEdge("n1","n2");
290     pss.setNodeRole("n1","admin");
291     pss.setNodeRole("n2","admin");
292     
293     UserSession usr=usersh.create();
294
295     usr.startActivity("dynamic2","n1");
296
297     pss.addNode("n3",Constants.Nd.AND_JOIN_NODE);
298     pss.addEdge("n2","n3");
299
300     assertTrue("dynamic change failed - n1",pss.getEdgeValue("n1").getState()==Constants.Nd.EXECUTING);
301     assertTrue("dynamic change failed - n2",pss.getEdgeValue("n2").getState()==Constants.Nd.ANTICIPABLE);
302     assertTrue("dynamic change failed - n3",pss.getEdgeValue("n3").getState()==Constants.Nd.INITIAL);
303
304     pss.addNode("n4",Constants.Nd.AND_JOIN_NODE);
305     pss.addEdge("n1","n4");
306     pss.deleteEdge(edge1);
307
308     assertTrue("dynamic change failed - n1.1",pss.getEdgeValue("n1").getState()==Constants.Nd.EXECUTING);
309     assertTrue("dynamic change failed - n2.1",pss.getEdgeValue("n2").getState()==Constants.Nd.READY);
310     assertTrue("dynamic change failed - n3.1",pss.getEdgeValue("n3").getState()==Constants.Nd.INITIAL);
311     assertTrue("dynamic change failed - n4.1",pss.getEdgeValue("n4").getState()==Constants.Nd.ANTICIPABLE);
312     }
313
314     public void testDeleteNode() throws Exception JavaDoc {
315     UserSessionHome usersh=UserSessionUtil.getHome();
316     ProjectSessionHome projectSessionh=ProjectSessionUtil.getHome();
317     
318     ProjectSession pss = projectSessionh.create();
319     pss.initProject("deleteNode");
320
321     pss.addNode("n1",Constants.Nd.AND_JOIN_NODE);
322     pss.addNode("n2",Constants.Nd.AND_JOIN_NODE);
323     String JavaDoc edge1=pss.addEdge("n1","n2");
324     pss.setNodeRole("n1","admin");
325     pss.setNodeRole("n2","admin");
326
327     try {
328         pss.deleteNode("n2");
329     } catch (HeroException he) {
330         assertTrue("Deletion Failed",false);
331     }
332     
333     UserSession usr=usersh.create();
334
335     usr.startActivity("deleteNode","n1");
336     try {
337         pss.deleteNode("n1");
338         assertTrue("Deletion Should have Failed",false);
339     } catch (HeroException he) { // Normal Behavior
340
}
341     }
342
343
344     public void testPropertyNode() throws Exception JavaDoc {
345     ProjectSessionHome projectSessionh=ProjectSessionUtil.getHome();
346     
347     ProjectSession pss = projectSessionh.create();
348     pss.initProject("propertyNode");
349
350     pss.addNode("n1",Constants.Nd.AND_JOIN_NODE);
351     pss.addNode("n2",Constants.Nd.AND_JOIN_NODE);
352     String JavaDoc edge1=pss.addEdge("n1","n2");
353     pss.setNodeRole("n1","admin");
354     pss.setNodeRole("n2","admin");
355     pss.setNodeProperty("n1","kpn1","vpn1");
356     pss.setNodeProperty("n2","kpn2","vpn2");
357     pss.setNodeProperty("n2","kpn2","vpn22");
358     
359     pss.deleteNode("n2");
360     
361     }
362
363     public void testDeletePropertyNode() throws Exception JavaDoc {
364     ProjectSessionHome projectSessionh=ProjectSessionUtil.getHome();
365     ProjectSession pss = projectSessionh.create();
366     pss.initProject("propertyNode");
367
368     pss.deleteNodeProperty("n1","kpn1");
369     
370     }
371
372     public void testPropertyProject() throws Exception JavaDoc {
373     ProjectSessionHome projectSessionh=ProjectSessionUtil.getHome();
374     ProjectSession pss = projectSessionh.create();
375     pss.initProject("propertyNode");
376
377     pss.setProperty("maintenant","ara");
378     pss.setProperty("deja","ahora");
379     pss.setProperty("deja","ja");
380     
381     }
382     public void testDeletePropertyProject() throws Exception JavaDoc {
383     ProjectSessionHome projectSessionh=ProjectSessionUtil.getHome();
384     ProjectSession pss = projectSessionh.create();
385     pss.initProject("propertyNode");
386
387     pss.deleteProperty("maintenant");
388     }
389
390
391     public void testNodePropertyPropagate() throws Exception JavaDoc {
392     UserSessionHome usersh=UserSessionUtil.getHome();
393     ProjectSessionHome projectSessionh=ProjectSessionUtil.getHome();
394     ProjectSession pss = projectSessionh.create();
395     pss.initProject("propertyNode");
396
397     pss.addNode("n5",Constants.Nd.AND_JOIN_NODE);
398     pss.addNode("n6",Constants.Nd.AND_JOIN_NODE);
399     String JavaDoc edge1=pss.addEdge("n5","n6");
400     pss.setNodeRole("n5","admin");
401     pss.setNodeRole("n6","admin");
402     pss.setNodeProperty("n5","value","15");
403     pss.setNodeProperty("n5","value2","10");
404     pss.setNodeProperty("n6","value","25");
405
406     UserSession usr=usersh.create();
407     usr.startActivity("propertyNode","n5");
408     usr.terminateActivity("propertyNode","n5");
409     }
410
411   public void testGetPropertiesNode() throws Exception JavaDoc {
412
413     ProjectSessionHome projectSessionh=ProjectSessionUtil.getHome();
414     ProjectSession pss = projectSessionh.create();
415     pss.initProject("propertyNode");
416
417     pss.addNode("p1",Constants.Nd.AND_JOIN_NODE);
418
419     pss.setNodeProperty("p1","k1","10");
420     
421     Collection JavaDoc c=pss.getNodeProperties("p1");
422         
423     for(Iterator JavaDoc i=c.iterator();i.hasNext();){
424         BnNodePropertyValue p=(BnNodePropertyValue)i.next();
425         String JavaDoc key=p.getTheKey();
426         String JavaDoc value=p.getTheValue();
427         assertTrue("Get BnNode Properties",key.equalsIgnoreCase("k1"));
428         
429     }
430     }
431   public void testGetProperties() throws Exception JavaDoc {
432
433     ProjectSessionHome projectSessionh=ProjectSessionUtil.getHome();
434     ProjectSession pss = projectSessionh.create();
435     pss.initProject("propertyNode");
436
437     pss.setProperty("pk1","xxx");
438     
439     Collection JavaDoc c=pss.getProperties();
440         
441     for(Iterator JavaDoc i=c.iterator();i.hasNext();){
442         BnProjectPropertyValue p=(BnProjectPropertyValue)i.next();
443         String JavaDoc key=p.getTheKey();
444         String JavaDoc value=p.getTheValue();
445         if (value.equals("xxx"))
446             assertTrue("Get Properties",key.equals("pk1"));
447     }
448     }
449
450  public void testNodeDeadline() throws Exception JavaDoc {
451
452     ProjectSessionHome projectSessionh=ProjectSessionUtil.getHome();
453     ProjectSession pss = projectSessionh.create();
454     pss.initProject("deadlineNode");
455         
456     pss.addNode("d1",Constants.Nd.AND_JOIN_NODE);
457     pss.setNodeRole("d1","admin");
458     pss.setNodeDeadline("d1",System.currentTimeMillis()+(long)10000);
459     }
460
461
462    public void testJavaHook() throws Exception JavaDoc {
463     ProjectSessionHome projectSessionh=ProjectSessionUtil.getHome();
464     UserSessionHome usersh=UserSessionUtil.getHome();
465     UserSession usr=usersh.create();
466     ProjectSession pss=projectSessionh.create();
467     pss.initProject("hookProject");
468     pss.addHook("hero.hook.TestHook",hero.interfaces.Constants.Nd.AFTERSTART,Constants.Hook.JAVA);
469     pss.addNode("h2",Constants.Nd.AND_JOIN_NODE);
470     pss.setNodeRole("h2","admin");
471     pss.addNode("h1",Constants.Nd.AND_JOIN_NODE);
472     pss.addNodeHook("h1","hero.hook.TestHook",hero.interfaces.Constants.Nd.AFTERSTART,Constants.Hook.JAVA);
473     pss.setNodeRole("h1","admin");
474
475     usr.startActivity("hookProject","h1");
476     usr.terminateActivity("hookProject","h1");
477     usr.startActivity("hookProject","h2");
478     usr.terminateActivity("hookProject","h2");
479     pss.deleteNodeHook("h1","hero.hook.TestHook");
480
481    }
482    
483    public void testJavaHookInstance() throws Exception JavaDoc {
484     ProjectSessionHome projectSessionh=ProjectSessionUtil.getHome();
485     UserSessionHome usersh=UserSessionUtil.getHome();
486     UserSession usr=usersh.create();
487     ProjectSession pss=projectSessionh.create();
488     pss.initModel("hookProjectInst");
489     pss.addHook("hero.hook.TestHook",hero.interfaces.Constants.Nd.AFTERSTART,Constants.Hook.JAVA);
490     pss.addNode("h2",Constants.Nd.AND_JOIN_NODE);
491     pss.setNodeRole("h2","admin");
492     pss.addNode("h1",Constants.Nd.AND_JOIN_NODE);
493     pss.addNodeHook("h1","hero.hook.TestHook",hero.interfaces.Constants.Nd.AFTERSTART,Constants.Hook.JAVA);
494     pss.setNodeRole("h1","admin");
495     
496     String JavaDoc instName = pss.instantiateProject("hookProjectInst");
497
498     usr.startActivity(instName,"h1");
499     usr.terminateActivity(instName,"h1");
500     usr.startActivity(instName,"h2");
501     usr.terminateActivity(instName,"h2");
502    }
503
504    public void testNodeInterHook() throws Exception JavaDoc {
505     ProjectSessionHome projectSessionh=ProjectSessionUtil.getHome();
506     UserSessionHome usersh=UserSessionUtil.getHome();
507     UserSession usr=usersh.create();
508     ProjectSession pss = projectSessionh.create();
509     pss.initProject("hookInterNode");
510     pss.addNode("h2",Constants.Nd.AND_JOIN_NODE);
511     pss.setNodeRole("h2","admin");
512     pss.addNode("h1",Constants.Nd.AND_JOIN_NODE);
513     pss.setNodeRole("h1","admin");
514     String JavaDoc edge1=pss.addEdge("h1","h2");
515     String JavaDoc script =
516         "import hero.interfaces.BnProjectLocal;\n"
517         + "import hero.interfaces.BnNodeLocal;\n"
518         + "afterStart (Object b,Object n) {\n\n\n"
519         + "System.out.println(\"InteractiveBnNodee Hook test, node: \"+n.getName());"
520         + "}";
521     pss.addNodeInterHook("h1","interTest",hero.interfaces.Constants.Nd.AFTERSTART,Constants.Hook.BSINTERACTIVE,script);
522     usr.startActivity("hookInterNode","h1");
523     usr.terminateActivity("hookInterNode","h1");
524    }
525
526    public void testNodeInterHookProperty() throws Exception JavaDoc {
527     ProjectSessionHome projectSessionh=ProjectSessionUtil.getHome();
528     UserSessionHome usersh=UserSessionUtil.getHome();
529     UserSession usr=usersh.create();
530     ProjectSession pss = projectSessionh.create();
531     pss.initProject("hookInterNodeP");
532     pss.addNode("h2",Constants.Nd.AND_JOIN_NODE);
533     pss.setNodeRole("h2","admin");
534     pss.addNode("h1",Constants.Nd.AND_JOIN_NODE);
535     pss.setNodeProperty("h1","testp1","testv1",true);
536     pss.setNodeProperty("h1","testp2","testv2",true);
537     pss.setNodeRole("h1","admin");
538     String JavaDoc edge1=pss.addEdge("h1","h2");
539     String JavaDoc script =
540         "import hero.interfaces.BnProjectLocal;\n"
541         + "import hero.interfaces.BnNodeLocal;\n"
542         + "afterStart (Object b,Object n) {\n\n\n"
543         + "System.out.println(\"InteractiveBnNodee Hook properties tests, node: \"+n.getName());\n"
544         + "System.out.println(\"property \"+testp2);\n"
545         + "}";
546     pss.addNodeInterHook("h1","interTest",hero.interfaces.Constants.Nd.AFTERSTART,Constants.Hook.BSINTERACTIVE,script);
547     usr.startActivity("hookInterNodeP","h1");
548     usr.terminateActivity("hookInterNodeP","h1");
549    }
550     
551     public void testProjectInterHook() throws Exception JavaDoc {
552     ProjectSessionHome projectSessionh=ProjectSessionUtil.getHome();
553     UserSessionHome usersh=UserSessionUtil.getHome();
554     UserSession usr=usersh.create();
555     ProjectSession pss = projectSessionh.create();
556     pss.initProject("hookInterProject");
557     pss.addNode("h2",Constants.Nd.AND_JOIN_NODE);
558     pss.setNodeRole("h2","admin");
559     pss.addNode("h1",Constants.Nd.AND_JOIN_NODE);
560     pss.setNodeRole("h1","admin");
561     String JavaDoc edge1=pss.addEdge("h1","h2");
562     String JavaDoc script =
563         "import hero.interfaces.BnProjectLocal;\n"
564         + "import hero.interfaces.BnNodeLocal;\n"
565         + "afterStart (Object b,Object n) {\n\n\n"
566         + "System.out.println(\"InteractiveBnProjectt Hook test, node: \"+n.getName());"
567         + "}";
568     pss.addInterHook("projectInterTest",hero.interfaces.Constants.Nd.AFTERSTART,Constants.Hook.BSINTERACTIVE,script);
569     usr.startActivity("hookInterProject","h1");
570     usr.terminateActivity("hookInterProject","h1");
571    }
572
573     public void testDuplicatedInterHook() throws Exception JavaDoc {
574     ProjectSessionHome projectSessionh=ProjectSessionUtil.getHome();
575     UserSessionHome usersh=UserSessionUtil.getHome();
576     UserSession usr=usersh.create();
577     ProjectSession pss = projectSessionh.create();
578     pss.initProject("dupliHookInter");
579     pss.addNode("h2",Constants.Nd.AND_JOIN_NODE);
580     pss.setNodeRole("h2","admin");
581     pss.addNode("h1",Constants.Nd.AND_JOIN_NODE);
582     pss.setNodeRole("h1","admin");
583     String JavaDoc edge1=pss.addEdge("h1","h2");
584     String JavaDoc script =
585         "import hero.interfaces.BnProjectLocal;\n"
586         + "import hero.interfaces.BnNodeLocal;\n"
587         + "afterStart (Object b,Object n) {\n\n\n"
588         + "System.out.println(\"InteractiveBnProjectt Hook test, node: \"+n.getName()+\" project: \"+(n.getBnProject()).getName());"
589         + "}";
590     pss.addInterHook("projectInterTest",hero.interfaces.Constants.Nd.AFTERSTART,Constants.Hook.BSINTERACTIVE,script);
591     try {
592         pss.addInterHook("projectInterTest",hero.interfaces.Constants.Nd.AFTERSTART,Constants.Hook.BSINTERACTIVE,script);
593         assertTrue("should have failed", false);
594     } catch (HeroException h) {
595         // normal behavior
596
}
597     usr.startActivity("dupliHookInter","h1");
598     usr.terminateActivity("dupliHookInter","h1");
599    }
600     
601    public void testSubProcess() throws Exception JavaDoc {
602
603       ProjectSessionHome projectSessionh=ProjectSessionUtil.getHome();
604       ProjectSession pss = projectSessionh.create();
605       pss.initProject("SubProject");
606       pss.addNode("subNode1",Constants.Nd.AND_JOIN_NODE);
607       pss.addNode("subNode2",Constants.Nd.AND_JOIN_NODE);
608       pss.addEdge("subNode1","subNode2");
609       
610       ProjectSession pss1 = projectSessionh.create();
611       pss1 = projectSessionh.create();
612       pss1.initProject("ParentProject");
613       pss1.addNode("node1",Constants.Nd.AND_JOIN_NODE);
614       pss1.addNode("node2",Constants.Nd.AND_JOIN_NODE);
615       pss1.addNode("SubProject",Constants.Nd.SUB_PROCESS_NODE);
616       pss1.addEdge("node1","SubProject");
617       pss1.addEdge("SubProject","node2");
618       UserSessionHome usersh=UserSessionUtil.getHome();
619       UserSession usr=usersh.create();
620       usr.startActivity("ParentProject","node1");
621       usr.terminateActivity("ParentProject","node1");
622       
623       assertTrue("SubProcess Error", pss1.getNodeState("SubProject")==Constants.Nd.EXECUTING);
624     
625       // Terminate all SubProcess activities
626

627       usr.startActivity("SubProject","subNode1");
628       usr.startActivity("SubProject","subNode2");
629       usr.terminateActivity("SubProject","subNode1");
630       usr.terminateActivity("SubProject","subNode2");
631       assertTrue("SubProcess Error", pss1.getNodeState("SubProject")==Constants.Nd.TERMINATED);
632       }
633       
634     public void testSimpleInstantiation() throws Exception JavaDoc {
635
636       ProjectSessionHome projectSessionh=ProjectSessionUtil.getHome();
637       ProjectSession pss = projectSessionh.create();
638       pss.initModel("Instantiation");
639       pss.addNode("node1",Constants.Nd.AND_JOIN_NODE);
640       pss.addNode("node2",Constants.Nd.AND_JOIN_NODE);
641       pss.addNode("node3",Constants.Nd.AND_JOIN_NODE);
642       pss.addNode("node4",Constants.Nd.AND_JOIN_AUTOMATIC_NODE);
643       pss.addEdge("node1","node2");
644       pss.addEdge("node2","node3");
645       pss.addEdge("node2","node4");
646       String JavaDoc script =
647             "import hero.interfaces.BnProjectLocal;\n"
648             + "import hero.interfaces.BnNodeLocal;\n"
649             + "afterStart (Object b,Object n) {\n\n\n"
650             + "System.out.println(\"Instantiation test, node: \"+n.getName()+\" project: \"+(n.getBnProject()).getName());"
651             + "}";
652       pss.addNodeInterHook("node2","node2",hero.interfaces.Constants.Nd.AFTERSTART,Constants.Hook.BSINTERACTIVE,script);
653       pss.addUser("admin2");
654       pss.setUserRole("admin2","InitialRole");
655       pss.setNodeRole("node1","admin");
656       
657       ProjectSession pss1 = projectSessionh.create();
658       String JavaDoc instName=pss1.instantiateProject("Instantiation");
659       assertTrue("Instantiation Error, instance name error", pss1.getName().equals(instName));
660       assertTrue("Instantiation Error, role error in node1", pss1.getNodeRoleName("node1").equals("admin"));
661       Collection JavaDoc users = pss1.getUsers();
662       assertTrue("Instantiation Error, user admin2 does not exist", users.contains("admin2"));
663       assertTrue("Instantiation Error, type error in node1", pss1.getNodeType("node1")== Constants.Nd.AND_JOIN_NODE);
664     }
665     
666     public void testSubProcessInstantiation() throws Exception JavaDoc {
667
668       ProjectSessionHome projectSessionh=ProjectSessionUtil.getHome();
669       
670       ProjectSession psSub = projectSessionh.create();
671       psSub.initProject("node5");
672       psSub.addNode("subNode1",Constants.Nd.AND_JOIN_NODE);
673       psSub.addNode("subNode2",Constants.Nd.AND_JOIN_NODE);
674       psSub.addEdge("subNode1","subNode2");
675       
676       String JavaDoc script =
677             "import hero.interfaces.BnProjectLocal;\n"
678             + "import hero.interfaces.BnNodeLocal;\n"
679             + "afterStart (Object b,Object n) {\n\n\n"
680             + "System.out.println(\"SPInstantiation test, SubProcess: \"+n.getName()+\" project: \"+(n.getBnProject()).getName());"
681             + "}";
682       psSub.addNodeInterHook("subNode2","subNode2",hero.interfaces.Constants.Nd.AFTERSTART,Constants.Hook.BSINTERACTIVE,script);
683       psSub.addUser("admin2");
684       psSub.setNodeRole("subNode1","admin");
685       
686       ProjectSession pss = projectSessionh.create();
687       pss.initModel("SPInstantiation");
688       pss.addNode("node1",Constants.Nd.AND_JOIN_NODE);
689       pss.addNode("node2",Constants.Nd.AND_JOIN_NODE);
690       pss.addNode("node3",Constants.Nd.AND_JOIN_NODE);
691       pss.addNode("node4",Constants.Nd.AND_JOIN_AUTOMATIC_NODE);
692       pss.addNodeSubProcess("node5","SPInstantiation");
693       pss.addEdge("node1","node2");
694       pss.addEdge("node2","node3");
695       pss.addEdge("node2","node4");
696       pss.addEdge("node3","node5");
697       script =
698             "import hero.interfaces.BnProjectLocal;\n"
699             + "import hero.interfaces.BnNodeLocal;\n"
700             + "afterStart (Object b,Object n) {\n\n\n"
701             + "System.out.println(\"SPInstantiation test, node: \"+n.getName()+\" project: \"+(n.getBnProject()).getName());"
702             + "}";
703      pss.addNodeInterHook("node2","node2",hero.interfaces.Constants.Nd.AFTERSTART,Constants.Hook.BSINTERACTIVE,script);
704      pss.addUser("admin2");
705      pss.setUserRole("admin2","InitialRole");
706      pss.setNodeRole("node1","admin");
707      ProjectSession pss1 = projectSessionh.create();
708      String JavaDoc instName=pss1.instantiateProject("SPInstantiation");
709      assertTrue("Instantiation Error, instance name error", pss1.getName().equals(instName));
710      assertTrue("Instantiation Error, role error in node1", pss1.getNodeRoleName("node1").equals("admin"));
711      Collection JavaDoc users = pss1.getUsers();
712      assertTrue("Instantiation Error, user admin2 does not exist", users.contains("admin2"));
713      assertTrue("Instantiation Error, type error in node1", pss1.getNodeType("node1")== Constants.Nd.AND_JOIN_NODE);
714     }
715     
716     public void testGetProjectNameOfInstance() throws Exception JavaDoc {
717         ProjectSessionHome projectSessionh=ProjectSessionUtil.getHome();
718         ProjectSession ps = projectSessionh.create();
719         ps.initModel("ofInstance");
720         ProjectSession pss1 = projectSessionh.create();
721         String JavaDoc instanceName = pss1.instantiateProject("ofInstance");
722         String JavaDoc projectName = pss1.getProjectNameOfInstance(instanceName);
723         assertTrue("Error in getProjectNameOfInstance",projectName.equals("ofInstance"));
724         try {
725             projectName = pss1.getProjectNameOfInstance("ofInstance");
726          } catch (Exception JavaDoc io) {
727             assertTrue("getProjectNameOfInstance error when is not a valid instance",true);
728          }
729     }
730     
731     public void testGetParent() throws Exception JavaDoc {
732         // Test when we creates a subProcess activity within a project
733
ProjectSessionHome projectSessionh=ProjectSessionUtil.getHome();
734         ProjectSession ps = projectSessionh.create();
735         ps.initModel("getParent");
736         ProjectSession ps2 = projectSessionh.create();
737         ps2.initModel("getParent2");
738         ps.addNodeSubProcess("node","getParent2");
739         
740         ps2.initProject("node");
741         String JavaDoc p= ps2.getParent();
742         assertTrue("Error in getParent when add subProcess",p.equals("getParent"));
743         
744         // Test when we creates an instance of a project
745
String JavaDoc instance=ps.instantiateProject("getParent");
746         String JavaDoc pInstance=ps.getParent();
747         assertTrue("Error in getParent when instantiate",pInstance.equals(instance));
748         
749     }
750     
751     public void testUnsetUserRole() throws Exception JavaDoc {
752         ProjectSessionHome projectSessionh=ProjectSessionUtil.getHome();
753         ProjectSession ps = projectSessionh.create();
754         ps.initProject("unset");
755         ProjectSession ps2 = projectSessionh.create();
756         ps2.initProject("unset2");
757         
758         ps.addUser("admin2");
759         ps.setUserRole("admin2","InitialRole");
760         ps2.addUser("admin2");
761         ps2.setUserRole("admin2","InitialRole");
762
763         ps.unsetUserRole("admin2","InitialRole");
764         Collection JavaDoc names = ps.getUserRolesInProjectNames("admin2");
765         
766         assertTrue("Error in unset user roles: InitialRole",!names.contains("InitialRole"));
767         assertTrue("Error in unset user roles: admin",names.contains("admin2"));
768     }
769     
770     public void testIteration() throws Exception JavaDoc {
771         ProjectSessionHome projectSessionh=ProjectSessionUtil.getHome();
772         ProjectSession ps = projectSessionh.create();
773         ps.initModel("Iteration");
774         
775         // add Nodes
776
ps.addNode("node0",Constants.Nd.AND_JOIN_NODE);
777         ps.addNode("node1",Constants.Nd.AND_JOIN_NODE);
778         ps.addNode("node2",Constants.Nd.AND_JOIN_NODE);
779         ps.addNode("node3",Constants.Nd.AND_JOIN_NODE);
780         ps.addNode("node4",Constants.Nd.AND_JOIN_NODE);
781         ps.addNode("node5",Constants.Nd.AND_JOIN_NODE);
782         ps.addNode("node6",Constants.Nd.AND_JOIN_NODE);
783         ps.addNode("node7",Constants.Nd.AND_JOIN_NODE);
784         ps.addNode("node8",Constants.Nd.AND_JOIN_AUTOMATIC_NODE);
785         ps.setNodeTraditional("node8");
786         ps.addNode("node9",Constants.Nd.AND_JOIN_AUTOMATIC_NODE);
787         ps.setNodeTraditional("node9");
788
789         // add Edges
790

791         ps.addEdge("node0","node1");
792         ps.addEdge("node1","node3");
793         ps.addEdge("node1","node4");
794         ps.addEdge("node1","node5");
795         ps.addEdge("node3","node6");
796         ps.addEdge("node4","node6");
797         ps.addEdge("node4","node2");
798         ps.addEdge("node5","node6");
799         ps.addEdge("node6","node7");
800         ps.addEdge("node3","node8");
801         ps.addEdge("node8","node9");
802         ps.addEdge("node5","node4");
803         
804         // set Iteration
805
ps.addIteration("node6","node1","iterate.equals(\"true\")");
806         
807         // Set user role
808
ps.setUserRole("admin","InitialRole");
809         // Instantiate project
810
String JavaDoc project = ps.instantiateProject("Iteration");
811         ps.setProperty("iterate","true");
812         
813         UserSessionHome usersh=UserSessionUtil.getHome();
814         UserSession usr=usersh.create();
815         usr.startActivity(project,"node0");
816                 
817         assertTrue("Error in Iterate, startActivity node0: node0 failed",ps.getNodeValue("node0").getState() == Constants.Nd.EXECUTING);
818         assertTrue("Error in Iterate, startActivity node0: node1 failed",ps.getNodeValue("node1").getState() == Constants.Nd.ANTICIPABLE);
819         
820         usr.terminateActivity(project,"node0");
821         
822         assertTrue("Error in Iterate, terminateActivity node0: node0 failed",ps.getNodeValue("node0").getState() == Constants.Nd.TERMINATED);
823         assertTrue("Error in Iterate, terminateActivity node0: node1 failed",ps.getNodeValue("node1").getState() == Constants.Nd.READY);
824         int index = 0;
825         while (index<2)
826         {
827             usr.startActivity(project,"node1");
828             assertTrue("Error in Iterate, startActivity node1: node1 failed",ps.getNodeValue("node1").getState() == Constants.Nd.EXECUTING);
829             assertTrue("Error in Iterate, startActivity node1: node3 failed",ps.getNodeValue("node3").getState() == Constants.Nd.ANTICIPABLE);
830             assertTrue("Error in Iterate, startActivity node1: node4 failed",ps.getNodeValue("node4").getState() == Constants.Nd.INITIAL);
831             assertTrue("Error in Iterate, startActivity node1: node5 failed",ps.getNodeValue("node5").getState() == Constants.Nd.ANTICIPABLE);
832             
833             usr.terminateActivity(project,"node1");
834             assertTrue("Error in Iterate, terminateActivity node1: node1 failed",ps.getNodeValue("node1").getState() == Constants.Nd.TERMINATED);
835             assertTrue("Error in Iterate, terminateActivity node1: node3 failed",ps.getNodeValue("node3").getState() == Constants.Nd.READY);
836             assertTrue("Error in Iterate, terminateActivity node1: node4 failed",ps.getNodeValue("node4").getState() == Constants.Nd.INITIAL);
837             assertTrue("Error in Iterate, terminateActivity node1: node5 failed",ps.getNodeValue("node5").getState() == Constants.Nd.READY);
838             
839             usr.startActivity(project,"node3");
840             usr.startActivity(project,"node5");
841             usr.startActivity(project,"node4");
842             try{
843                 usr.startActivity(project,"node2");
844                 assertTrue("Error in Iterate, startActivity node2: node2 should be failed",false);
845             }catch(Exception JavaDoc e){}
846             
847             usr.terminateActivity(project,"node3");
848             usr.terminateActivity(project,"node5");
849             usr.terminateActivity(project,"node4");
850             
851             assertTrue("Error in Iterate, terminateActivity node3: node8 failed",ps.getNodeValue("node8").getState() == Constants.Nd.INITIAL);
852             usr.startActivity(project,"node6");
853             usr.terminateActivity(project,"node6");
854             assertTrue("Error in Iterate, terminateActivity node6: node6 failed",ps.getNodeValue("node6").getState() == Constants.Nd.INITIAL);
855             index++;
856         }
857         
858         usr.startActivity(project,"node1");
859         assertTrue("Error in Iterate, startActivity node1: node1 failed",ps.getNodeValue("node1").getState() == Constants.Nd.EXECUTING);
860         assertTrue("Error in Iterate, startActivity node1: node2 failed",ps.getNodeValue("node2").getState() == Constants.Nd.INITIAL);
861         assertTrue("Error in Iterate, startActivity node1: node3 failed",ps.getNodeValue("node3").getState() == Constants.Nd.ANTICIPABLE);
862         assertTrue("Error in Iterate, startActivity node1: node4 failed",ps.getNodeValue("node4").getState() == Constants.Nd.INITIAL);
863         assertTrue("Error in Iterate, startActivity node1: node5 failed",ps.getNodeValue("node5").getState() == Constants.Nd.ANTICIPABLE);
864             
865         usr.terminateActivity(project,"node1");
866         assertTrue("Error in Iterate, terminateActivity node1: node1 failed",ps.getNodeValue("node1").getState() == Constants.Nd.TERMINATED);
867         assertTrue("Error in Iterate, terminateActivity node1: node2 failed",ps.getNodeValue("node2").getState() == Constants.Nd.INITIAL);
868         assertTrue("Error in Iterate, terminateActivity node1: node3 failed",ps.getNodeValue("node3").getState() == Constants.Nd.READY);
869         assertTrue("Error in Iterate, terminateActivity node1: node4 failed",ps.getNodeValue("node4").getState() == Constants.Nd.INITIAL);
870         assertTrue("Error in Iterate, terminateActivity node1: node5 failed",ps.getNodeValue("node5").getState() == Constants.Nd.READY);
871             
872         try{
873             usr.startActivity(project,"node2");
874             assertTrue("Error in Iterate, startActivity node2: node2 should be failed",false);
875         }catch(Exception JavaDoc e){}
876         usr.startActivity(project,"node3");
877         usr.startActivity(project,"node5");
878         usr.startActivity(project,"node4");
879         
880         usr.terminateActivity(project,"node3");
881         usr.terminateActivity(project,"node5");
882         usr.terminateActivity(project,"node4");
883             
884         assertTrue("Error in Iterate, terminateActivity node3: node8 failed",ps.getNodeValue("node8").getState() == Constants.Nd.INITIAL);
885         usr.startActivity(project,"node6");
886         
887         ps.setProperty("iterate","false");
888         
889         usr.terminateActivity(project,"node6");
890         assertTrue("Error in Iterate, terminateActivity node6: node6 failed",ps.getNodeValue("node6").getState() == Constants.Nd.TERMINATED);
891         
892         assertTrue("Error in Iterate, terminateActivity node6, after iterate: node7 failed",ps.getNodeValue("node7").getState() == Constants.Nd.READY);
893         assertTrue("Error in Iterate, terminateActivity node6, after iterate: node2 failed",ps.getNodeValue("node2").getState() == Constants.Nd.READY);
894         assertTrue("Error in Iterate, terminateActivity node6, after iterate: node8 failed",ps.getNodeValue("node8").getState() == Constants.Nd.TERMINATED);
895         assertTrue("Error in Iterate, terminateActivity node6, after iterate: node9 failed",ps.getNodeValue("node9").getState() == Constants.Nd.TERMINATED);
896         
897     }
898     
899     public void testMapper() throws Exception JavaDoc {
900
901           ProjectSessionHome projectSessionh=ProjectSessionUtil.getHome();
902           ProjectSession pss = projectSessionh.create();
903           String JavaDoc projectName = "TestMapperProperties5";
904           pss.initModel(projectName);
905           
906           String JavaDoc role1="Admintata";
907           pss.addRole(role1, "role pour activity 1");
908           pss.addNode("node1",Constants.Nd.AND_JOIN_NODE);
909           pss.setNodeRole("node1",role1);
910               
911           // add mapper
912
pss.addRoleMapper(role1,"mapper1",Constants.Mapper.PROPERTIES);
913           
914           java.util.Collection JavaDoc co = null;
915           co = pss.getRoleMappers();
916           java.util.Iterator JavaDoc it =co.iterator();
917           String JavaDoc mapperName ="";
918           int mapperType = 100;
919           while (it.hasNext()){
920             BnRoleMapperValue mv = (BnRoleMapperValue)it.next();
921             mapperName = mv.getName();
922             mapperType = mv.getType();
923           }
924           System.out.println("mapperName = " + mapperName);
925           assertTrue("Error retreiving the created mapper name","mapper1".equals(mapperName));
926           assertTrue("Error retreiving the created mapper id", Constants.Mapper.PROPERTIES == mapperType);
927           
928           // Execution of the mapper at instantiation
929
pss.instantiateProject(projectName);
930          
931           String JavaDoc creator = pss.getCreator();
932           co = pss.getUserRolesInProjectNames(creator);
933           assertTrue("Role Admintata has not been set to the creator", co.contains(creator));
934         }
935
936     public void testLazyInstantiation() throws Exception JavaDoc {
937         ProjectSessionHome projectSessionh=ProjectSessionUtil.getHome();
938         ProjectSession ps = projectSessionh.create();
939         ps.initModel("LazyProject");
940         
941         // add Nodes
942
ps.addNode("node0",Constants.Nd.AND_JOIN_NODE);
943         ps.addNode("node1",Constants.Nd.AND_JOIN_NODE);
944         ps.addNode("node3",Constants.Nd.AND_JOIN_NODE);
945         ps.addNode("node4",Constants.Nd.OR_JOIN_NODE);
946         ps.setNodeTraditional("node4");
947         ps.addNode("node5",Constants.Nd.AND_JOIN_NODE);
948         
949         // add Edges
950
ps.addEdge("node0","node1");
951         ps.addEdge("node1","node3");
952         ps.addEdge("node1","node4");
953         ps.addEdge("node1","node5");
954         
955         ps.addRoleMapper("InitialRole","roleMapperTest",Constants.Mapper.PROPERTIES);
956
957         String JavaDoc instName = ps.instantiateProject("LazyProject");
958         assertTrue("Error in number of nodes after instantiation, number of nodes:"+ps.getNodesNames().size(),ps.getNodesNames().size()==1);
959         
960         UserSessionHome userSessionh = UserSessionUtil.getHome();
961         UserSession us = userSessionh.create();
962         assertTrue("Error in roleMapper",us.getToDoList(instName).contains("node0"));
963     }
964     
965     public void testLazyInstantiationexecution() throws Exception JavaDoc {
966         ProjectSessionHome projectSessionh=ProjectSessionUtil.getHome();
967         ProjectSession ps = projectSessionh.create();
968         ps.initModel("LazyProjectExec");
969         
970         // add Nodes
971
ps.addNode("node0",Constants.Nd.AND_JOIN_NODE);
972         ps.addNode("node1",Constants.Nd.AND_JOIN_NODE);
973         ps.addNode("node2",Constants.Nd.AND_JOIN_NODE);
974         ps.addNode("node3",Constants.Nd.AND_JOIN_NODE);
975         ps.addNode("node4",Constants.Nd.OR_JOIN_NODE);
976         ps.setNodeTraditional("node4");
977         ps.addNode("node5",Constants.Nd.AND_JOIN_NODE);
978         ps.addNode("node6",Constants.Nd.AND_JOIN_NODE);
979         ps.addNode("node7",Constants.Nd.AND_JOIN_NODE);
980         ps.addNode("node8",Constants.Nd.AND_JOIN_AUTOMATIC_NODE);
981         ps.setNodeTraditional("node8");
982         ps.addNode("node9",Constants.Nd.AND_JOIN_AUTOMATIC_NODE);
983         ps.setNodeTraditional("node9");
984         
985         // add Edges
986
ps.addEdge("node0","node1");
987         ps.addEdge("node1","node3");
988         ps.addEdge("node1","node4");
989         ps.addEdge("node1","node5");
990         ps.addEdge("node3","node6");
991         ps.addEdge("node4","node6");
992         ps.addEdge("node4","node2");
993         ps.addEdge("node5","node6");
994         ps.addEdge("node6","node7");
995         ps.addEdge("node3","node8");
996         ps.addEdge("node8","node9");
997         ps.addEdge("node5","node4");
998         
999         String JavaDoc instName = ps.instantiateProject("LazyProjectExec");
1000        UserSessionHome userSessionh = UserSessionUtil.getHome();
1001        UserSession us = userSessionh.create();
1002        us.startActivity(instName,"node0");
1003        assertTrue("Error in number of nodes after start node0, number of nodes:"+ps.getNodesNames().size(),ps.getNodesNames().size()==5);
1004        assertTrue("Error in state of node0 after start node0",ps.getNodeValue("node0").getState() == Constants.Nd.EXECUTING);
1005        assertTrue("Error in state of node1 after start node0",ps.getNodeValue("node1").getState() == Constants.Nd.ANTICIPABLE);
1006        assertTrue("Error in state of node3 after start node0",ps.getNodeValue("node3").getState() == Constants.Nd.INITIAL);
1007        assertTrue("Error in state of node4 after start node0",ps.getNodeValue("node4").getState() == Constants.Nd.INITIAL);
1008        assertTrue("Error in state of node5 after start node0",ps.getNodeValue("node5").getState() == Constants.Nd.INITIAL);
1009        us.terminateActivity(instName,"node0");
1010        assertTrue("Error in number of nodes after terminate node0, number of nodes:"+ps.getNodesNames().size(),ps.getNodesNames().size()==5);
1011        assertTrue("Error in state of node0 after terminate node0",ps.getNodeValue("node0").getState() == Constants.Nd.TERMINATED);
1012        assertTrue("Error in state of node1 after terminate node0",ps.getNodeValue("node1").getState() == Constants.Nd.READY);
1013        assertTrue("Error in state of node3 after terminate node0",ps.getNodeValue("node3").getState() == Constants.Nd.INITIAL);
1014        assertTrue("Error in state of node4 after terminate node0",ps.getNodeValue("node4").getState() == Constants.Nd.INITIAL);
1015        assertTrue("Error in state of node5 after terminate node0",ps.getNodeValue("node5").getState() == Constants.Nd.INITIAL);
1016        us.startActivity(instName,"node1");
1017        assertTrue("Error in number of nodes after start node1, number of nodes:"+ps.getNodesNames().size(),ps.getNodesNames().size()==7);
1018        assertTrue("Error in state of node1 after start node1",ps.getNodeValue("node1").getState() == Constants.Nd.EXECUTING);
1019        assertTrue("Error in state of node3 after start node1",ps.getNodeValue("node3").getState() == Constants.Nd.ANTICIPABLE);
1020        assertTrue("Error in state of node4 after start node1",ps.getNodeValue("node4").getState() == Constants.Nd.INITIAL);
1021        assertTrue("Error in state of node5 after start node1",ps.getNodeValue("node5").getState() == Constants.Nd.ANTICIPABLE);
1022        assertTrue("Error in state of node6 after start node1",ps.getNodeValue("node6").getState() == Constants.Nd.INITIAL);
1023        assertTrue("Error in state of node8 after start node1",ps.getNodeValue("node8").getState() == Constants.Nd.INITIAL);
1024        us.startActivity(instName,"node3");
1025        us.startActivity(instName,"node5");
1026        assertTrue("Error in number of nodes after start node3 and node5, number of nodes:"+ps.getNodesNames().size(),ps.getNodesNames().size()==7);
1027        assertTrue("Error in state of node1 after start node3 and node5",ps.getNodeValue("node1").getState() == Constants.Nd.EXECUTING);
1028        assertTrue("Error in state of node3 after start node3 and node5",ps.getNodeValue("node3").getState() == Constants.Nd.ANTICIPATING);
1029        assertTrue("Error in state of node4 after start node3 and node5",ps.getNodeValue("node4").getState() == Constants.Nd.INITIAL);
1030        assertTrue("Error in state of node5 after start node3 and node5",ps.getNodeValue("node5").getState() == Constants.Nd.ANTICIPATING);
1031        assertTrue("Error in state of node6 after start node3 and node5",ps.getNodeValue("node6").getState() == Constants.Nd.INITIAL);
1032        assertTrue("Error in state of node8 after start node3 and node5",ps.getNodeValue("node8").getState() == Constants.Nd.INITIAL);
1033        us.terminateActivity(instName,"node1");
1034        us.terminateActivity(instName,"node3");
1035        us.terminateActivity(instName,"node5");
1036        assertTrue("Error in number of nodes after start node3 and node5, number of nodes:"+ps.getNodesNames().size(),ps.getNodesNames().size()==9);
1037        assertTrue("Error in state of node1 after terminate node1,node3 and node5",ps.getNodeValue("node1").getState() == Constants.Nd.TERMINATED);
1038        assertTrue("Error in state of node2 after terminate node1,node3 and node5",ps.getNodeValue("node2").getState() == Constants.Nd.INITIAL);
1039        assertTrue("Error in state of node3 after terminate node1,node3 and node5",ps.getNodeValue("node3").getState() == Constants.Nd.TERMINATED);
1040        assertTrue("Error in state of node4 after terminate node1,node3 and node5",ps.getNodeValue("node4").getState() == Constants.Nd.READY);
1041        assertTrue("Error in state of node5 after terminate node1,node3 and node5",ps.getNodeValue("node5").getState() == Constants.Nd.TERMINATED);
1042        assertTrue("Error in state of node6 after terminate node1,node3 and node5",ps.getNodeValue("node6").getState() == Constants.Nd.INITIAL);
1043        assertTrue("Error in state of node8 after terminate node1,node3 and node5",ps.getNodeValue("node8").getState() == Constants.Nd.TERMINATED);
1044        assertTrue("Error in state of node9 after terminate node1,node3 and node5",ps.getNodeValue("node9").getState() == Constants.Nd.TERMINATED);
1045        us.startActivity(instName,"node4");
1046        us.terminateActivity(instName,"node4");
1047        
1048        us.startActivity(instName,"node6");
1049        us.terminateActivity(instName,"node6");
1050        
1051        us.startActivity(instName,"node7");
1052        us.terminateActivity(instName,"node7");
1053        
1054        try{
1055            us.terminate(instName);
1056            assertTrue("Error in terminate project, terminate project should be failed",false);
1057        }catch(Exception JavaDoc e){}
1058        
1059        us.startActivity(instName,"node2");
1060        us.terminateActivity(instName,"node2");
1061        
1062        us.terminate(instName);
1063    }
1064    
1065    public void testSubProcessesIteration() throws Exception JavaDoc {
1066        ProjectSessionHome projectSessionh=ProjectSessionUtil.getHome();
1067        
1068        ProjectSession ps1 = projectSessionh.create();
1069        ps1.initModel("oneSubProject");
1070        ps1.addNode("test1",Constants.Nd.AND_JOIN_NODE);
1071        ps1.addNode("test2",Constants.Nd.AND_JOIN_NODE);
1072        ps1.addEdge("test1","test2");
1073        
1074        ProjectSession ps = projectSessionh.create();
1075        ps.initModel("oneTestProject");
1076        ps.addNode("node1",Constants.Nd.AND_JOIN_NODE);
1077        ps.addNode("node3",Constants.Nd.AND_JOIN_NODE);
1078        ps.addNodeSubProcess("node2","oneSubProject");
1079                
1080        ps.addEdge("node1","node2");
1081        ps.addEdge("node2","node3");
1082        
1083        ps.setNodeProperty("node1","prop","ok",true);
1084        ps.addRoleMapper("InitialRole","roleMapperTest",Constants.Mapper.PROPERTIES);
1085        
1086        ps.addIteration("node3","node1","prop.equals(\"ok\")");
1087        String JavaDoc instName = ps.instantiateProject("oneTestProject");
1088        UserSessionHome userSessionh = UserSessionUtil.getHome();
1089        UserSession us = userSessionh.create();
1090        assertTrue("Error in roleMapper",us.getToDoList(instName).contains("node1"));
1091        int index = 0;
1092        String JavaDoc actName=null;
1093        while (index<3)
1094        {
1095            us.startActivity(instName,"node1");
1096            us.terminateActivity(instName,"node1");
1097            Collection JavaDoc inst = us.getProjectInstancesNames("node2");
1098            Iterator JavaDoc instances = inst.iterator();
1099            actName = (String JavaDoc)instances.next();
1100            assertTrue("Error in Iteration, subProcess is not reinitialized",us.getNode(actName,"test1").getState()==Constants.Nd.READY);
1101            
1102            us.startActivity(actName,"test1");
1103            us.terminateActivity(actName,"test1");
1104            us.startActivity(actName,"test2");
1105            us.terminateActivity(actName,"test2");
1106                            
1107            us.startActivity(instName,"node3");
1108            us.terminateActivity(instName,"node3");
1109            assertTrue("Error in Iteration",us.getToDoList(instName).contains("node1"));
1110            assertTrue("Error in Iteration, subProcess is not reinitialized",us.getToDoList(actName).isEmpty());
1111            assertTrue("Error in Iteration, subProcess is not reinitialized",us.getNode(actName,"test1").getState()==Constants.Nd.INITIAL);
1112            index++;
1113        }
1114        
1115        us.startActivity(instName,"node1");
1116        us.terminateActivity(instName,"node1");
1117        Collection JavaDoc inst = us.getProjectInstancesNames("node2");
1118        Iterator JavaDoc instances = inst.iterator();
1119        actName = (String JavaDoc)instances.next();
1120        
1121        us.startActivity(actName,"test1");
1122        us.terminateActivity(actName,"test1");
1123        us.startActivity(actName,"test2");
1124        us.terminateActivity(actName,"test2");
1125            
1126        us.startActivity(instName,"node3");
1127        
1128        ps.setNodeProperty("node3","prop","nok",true);
1129        
1130        us.terminateActivity(instName,"node3");
1131        assertTrue("Error in Iteration",us.getToDoList(instName).isEmpty());
1132        assertTrue("Error in Iteration",us.getToDoList(actName).isEmpty());
1133        assertTrue("Error in Iteration, subProcess is not reinitialized",us.getNode(actName,"test1").getState()==Constants.Nd.TERMINATED);
1134    }
1135    
1136    public void testSubProcessesIterationOnlySubProcesses() throws Exception JavaDoc {
1137        ProjectSessionHome projectSessionh=ProjectSessionUtil.getHome();
1138        
1139        ProjectSession ps1 = projectSessionh.create();
1140        ps1.initModel("SubProject1");
1141        ps1.addNode("test1",Constants.Nd.AND_JOIN_NODE);
1142        ps1.addNode("test2",Constants.Nd.AND_JOIN_NODE);
1143        ps1.addEdge("test1","test2");
1144        
1145        ProjectSession ps2 = projectSessionh.create();
1146        ps2.initModel("SubProject2");
1147        ps2.addNode("test1",Constants.Nd.AND_JOIN_NODE);
1148        ps2.addNode("test2",Constants.Nd.AND_JOIN_NODE);
1149        ps2.addEdge("test1","test2");
1150        
1151        ProjectSession ps = projectSessionh.create();
1152        ps.initModel("MyProjectIte");
1153        ps.addNodeSubProcess("node1","SubProject1");
1154        ps.addNodeSubProcess("node2bis","SubProject2");
1155        
1156        ps.addEdge("node1","node2bis");
1157        
1158        ps.setNodeProperty("node1","prop","ok",true);
1159        ps.addRoleMapper("InitialRole","roleMapperTest",Constants.Mapper.PROPERTIES);
1160        
1161        ps.addIteration("node2bis","node1","prop.equals(\"ok\")");
1162        
1163        String JavaDoc instName = ps.instantiateProject("MyProjectIte");
1164        UserSessionHome userSessionh = UserSessionUtil.getHome();
1165        UserSession us = userSessionh.create();
1166        
1167        Collection JavaDoc inst = us.getProjectInstancesNames("node1");
1168        Iterator JavaDoc instances = inst.iterator();
1169        String JavaDoc actName = (String JavaDoc)instances.next();
1170                
1171        int index = 0;
1172        while (index<3)
1173        {
1174            us.startActivity(actName,"test1");
1175            us.terminateActivity(actName,"test1");
1176            us.startActivity(actName,"test2");
1177            us.terminateActivity(actName,"test2");
1178
1179            inst = us.getProjectInstancesNames("node2bis");
1180            instances = inst.iterator();
1181            actName = (String JavaDoc)instances.next();
1182            
1183            us.startActivity(actName,"test1");
1184            us.terminateActivity(actName,"test1");
1185            us.startActivity(actName,"test2");
1186            us.terminateActivity(actName,"test2");
1187                                    
1188            inst = us.getProjectInstancesNames("node1");
1189            instances = inst.iterator();
1190            actName = (String JavaDoc)instances.next();
1191            
1192            index++;
1193        }
1194        
1195        us.startActivity(actName,"test1");
1196        us.terminateActivity(actName,"test1");
1197        us.startActivity(actName,"test2");
1198        us.terminateActivity(actName,"test2");
1199                    
1200        inst = us.getProjectInstancesNames("node2bis");
1201        instances = inst.iterator();
1202        String JavaDoc actName2 = (String JavaDoc)instances.next();
1203        
1204        us.startActivity(actName2,"test1");
1205        us.terminateActivity(actName2,"test1");
1206        us.startActivity(actName2,"test2");
1207        
1208        ps.initProject(actName2); // Special case for subprocess iteration
1209
ps.setProperty("prop","nok");
1210        us.terminateActivity(actName2,"test2");
1211                        
1212        assertTrue("Error in Iteration, subProcess is not reinitialized",us.getNode(actName2,"test1").getState()==Constants.Nd.TERMINATED);
1213        
1214        assertTrue("Error in Iteration, subProcess is not reinitialized",us.getNode(actName,"test1").getState()==Constants.Nd.TERMINATED);
1215        
1216    }
1217
1218    public void testUnsetUser() throws Exception JavaDoc {
1219        ProjectSessionHome projectSessionh=ProjectSessionUtil.getHome();
1220        ProjectSession ps = projectSessionh.create();
1221        ps.initProject("unsetUser");
1222        ProjectSession ps2 = projectSessionh.create();
1223        ps2.initProject("unsetUser2");
1224        
1225        ps.addUser("admin2");
1226        assertTrue("Error in add user: ",ps.getUsers().contains("admin2"));
1227        
1228        ps2.addUser("admin2");
1229        assertTrue("Error in add user (2): ",ps2.getUsers().contains("admin2"));
1230        
1231        ps.unsetUser("admin2");
1232        assertTrue("Error in unset user: ",!ps.getUsers().contains("admin2"));
1233        assertTrue("Error in add user (3): ",ps2.getUsers().contains("admin2"));
1234        
1235        ps2.unsetUser("admin2");
1236        assertTrue("Error in unset user (2): ",!ps2.getUsers().contains("admin2"));
1237    }
1238    
1239    public void testGetUsersRole() throws Exception JavaDoc {
1240        ProjectSessionHome projectSessionh=ProjectSessionUtil.getHome();
1241        ProjectSession ps = projectSessionh.create();
1242        ps.initProject("getUsersRole");
1243        ps.addUser("admin2");
1244        
1245        ps.addRole("roleTest","");
1246        ps.setUserRole("admin2","roleTest");
1247        
1248        assertTrue("Error in getUsersRole (1): ",ps.getUsersRole("roleTest").contains("admin2"));
1249        assertTrue("Error in getUsersRole (1): ",!ps.getUsersRole("roleTest").contains("admin"));
1250    }
1251    
1252    public void testPropertyPossibleValues() throws Exception JavaDoc {
1253        ProjectSessionHome projectSessionh=ProjectSessionUtil.getHome();
1254        ProjectSession ps = projectSessionh.create();
1255        ps.initProject("ProjectPossibleValues");
1256        ArrayList JavaDoc values = new ArrayList JavaDoc();
1257        values.add("value1");
1258        values.add("value2");
1259        
1260        ps.setPropertyPossibleValues("key1",values);
1261        try{
1262            ps.setProperty("key1","value3");
1263            assertTrue("Error setProperty should be failed",false);
1264        }catch(Exception JavaDoc e){}
1265        ps.setProperty("key1","value2");
1266    }
1267    
1268    public void testNodePropertyPossibleValues() throws Exception JavaDoc {
1269        UserSessionHome usersh=UserSessionUtil.getHome();
1270        UserSession user = usersh.create();
1271        
1272        ProjectSessionHome projectSessionh=ProjectSessionUtil.getHome();
1273        ProjectSession ps = projectSessionh.create();
1274        ps.initModel("ProjectNodesPossibleValues");
1275        ps.addNode("node1",1);
1276        ps.addNode("node2",1);
1277        ps.addNode("node3",1);
1278        ps.addEdge("node1","node2");
1279        ps.addEdge("node2","node3");
1280        ps.setNodeRole("node1",Constants.ADMIN);
1281        ps.setNodeRole("node2",Constants.ADMIN);
1282        ps.setNodeRole("node3",Constants.ADMIN);
1283        ArrayList JavaDoc values = new ArrayList JavaDoc();
1284        values.add("value1");
1285        values.add("value2");
1286        
1287        ps.setNodePropertyPossibleValues("node1","key1",values);
1288        try{
1289            ps.setNodeProperty("node1","key1","value3");
1290            assertTrue("Error setNodeProperty should be failed",false);
1291        }catch(Exception JavaDoc e){}
1292        ps.setNodeProperty("node1","key1","value2",true);
1293        String JavaDoc instName=ps.instantiateProject("ProjectNodesPossibleValues");
1294        
1295        user.startActivity(instName,"node1");
1296        user.terminateActivity(instName,"node1");
1297        
1298        BnNodePropertyValue pv = ps.getNodeProperty("node2","key1");
1299        
1300        assertTrue("Error testNodeProperty after instantiation", pv.getPossibleValues().size()==2);
1301        
1302        user.startActivity(instName,"node2");
1303        user.terminateActivity(instName,"node2");
1304        
1305        pv = ps.getNodeProperty("node3","key1");
1306        
1307        assertTrue("Error testNodeProperty after instantiation 2", pv.getPossibleValues().size()==2);
1308    }
1309}
1310
Popular Tags