1
2
3
4
5
6 package net.kwfgrid.gworkflowdl.protocol.xupdate;
7
8 import net.kwfgrid.gworkflowdl.protocol.structure.*;
9 import net.kwfgrid.gworkflowdl.protocol.calls.*;
10 import net.kwfgrid.gworkflowdl.structure.*;
11
12 import org.apache.log4j.Logger;
13 import org.apache.log4j.Level;
14
15 /***
16 Test for the XUpdate subsystem.
17 */
18 public class TestXUpdate extends TestCalls {
19 protected static final Logger logger = Logger.getLogger(TestXUpdate.class);
20 protected XUModificationHandler _handler;
21 protected XUMethodCallEncoder _encoder;
22
23 public TestXUpdate() {
24 super();
25 logger.setLevel(Level.DEBUG);
26 creator = new MyCreator(new DefaultCreator());
27 _handler = new XUModificationHandler();
28 _encoder = new XUMethodCallEncoder();
29 }
30
31 protected Object executeCall(IMethodCall call) throws Exception {
32 String mod = _encoder.encode(call);
33 logger.info("\n -------------------- Next modification: "+call.getClass().getName()+" --------------------\n"+mod);
34 _handler.handleModification(call.getTarget(), mod);
35 return null;
36 }
37
38 protected void executeCall(IMethodCall call, Object ret) throws Exception {
39 executeCall(call);
40
41 }
42
43 protected void checkNumberOfEvents(EventChecker thechecker, int num) {
44
45 }
46
47 protected void checkObjectsAddedEvent(Event event, IStructureObject parent, String namespace, String name, Object[] obs) {
48
49 }
50
51 protected void checkObjectsRemovedEvent(Event event, IStructureObject parent, String namespace, String name, Object[] obs) {
52
53 }
54
55 protected void checkPropertyChangeEvent(Event event, IStructureObject parent, String namespace, String name, Object newvalue) {
56
57 }
58
59 public void testEdgeSetPlace() throws Exception {
60 logger.info("testEdgeSetPlace() skipped.");
61 }
62
63 public void testEdgeSetExpression() throws Exception {
64 logger.info("testEdgeSetExpression() skipped.");
65 }
66
67 public void testTokenSet() throws Exception {
68 logger.info("testTokenSet() skipped.");
69 }
70
71 public void testTokenFromXML() throws Exception {
72 logger.info("testTokenFromXML() skipped.");
73 }
74
75 public void testOperationObjectSetObject() throws Exception {
76 logger.info("testOperationObjectSetObject() skipped.");
77 }
78
79 public void testOperationObjectFromXML() throws Exception {
80 logger.info("testOperationObjectFromXML() skipped.");
81 }
82
83 public void testOperationObjectRemoveObject() throws Exception {
84 logger.info("testOperationObjectRemoveObject() skipped.");
85 }
86
87 public void testOperationSetOperationObject() throws Exception {
88 logger.info("testOperationSetOperationObject() skipped.");
89 }
90
91 public void testWorkflowSetProperties() throws Exception {
92 ProtocolWorkflow p = (ProtocolWorkflow)creator.newWorkflow();
93 p.getRoot().addStructureListener(checker);
94
95 ProtocolProperties props = (ProtocolProperties)creator.newProperties();
96 Property np1 = creator.newProperty("key1", "value1");
97 Property np2 = creator.newProperty("key2", "value1");
98 props.setProperties(new Property[] { np1, np2 });
99 p.getProperties().put("kk", "vv");
100 Property op = p.getProperties().getProperty(0);
101 ProtocolProperties oprops = (ProtocolProperties)p.getProperties();
102
103 checker.reset();
104 executeCall(new WorkflowSetProperties(p, props));
105 assertEquals("Wrong number of properties.", 2, p.getProperties().size());
106 assertEquals("Wrong value for key1.", "value1", p.getProperties().get("key1"));
107 assertEquals("Wrong value for key2.", "value1", p.getProperties().get("key2"));
108 }
109
110 public void testTransitionSetProperties() throws Exception {
111 ProtocolTransition p = (ProtocolTransition)creator.newTransition();
112 p.getRoot().addStructureListener(checker);
113
114 ProtocolProperties props = (ProtocolProperties)creator.newProperties();
115 Property np1 = creator.newProperty("key1", "value1");
116 Property np2 = creator.newProperty("key2", "value1");
117 props.setProperties(new Property[] { np1, np2 });
118 p.getProperties().put("kk", "vv");
119 Property op = p.getProperties().getProperty(0);
120 ProtocolProperties oprops = (ProtocolProperties)p.getProperties();
121
122 checker.reset();
123 executeCall(new TransitionSetProperties(p, props));
124 assertEquals("Wrong number of properties.", 2, p.getProperties().size());
125 assertEquals("Wrong value for key1.", "value1", p.getProperties().get("key1"));
126 assertEquals("Wrong value for key2.", "value1", p.getProperties().get("key2"));
127 }
128
129 public void testPlaceSetProperties() throws Exception {
130 ProtocolPlace p = (ProtocolPlace)creator.newPlace();
131 p.getRoot().addStructureListener(checker);
132
133 ProtocolProperties props = (ProtocolProperties)creator.newProperties();
134 Property np1 = creator.newProperty("key1", "value1");
135 Property np2 = creator.newProperty("key2", "value1");
136 props.setProperties(new Property[] { np1, np2 });
137 p.getProperties().put("kk", "vv");
138 Property op = p.getProperties().getProperty(0);
139 ProtocolProperties oprops = (ProtocolProperties)p.getProperties();
140
141 checker.reset();
142 executeCall(new PlaceSetProperties(p, props));
143 assertEquals("Wrong number of properties.", 2, p.getProperties().size());
144 assertEquals("Wrong value for key1.", "value1", p.getProperties().get("key1"));
145 assertEquals("Wrong value for key2.", "value1", p.getProperties().get("key2"));
146 }
147
148 public void testOperationSetClassOperation() throws Exception {
149 ProtocolOperation o = (ProtocolOperation)creator.newOperation();
150 o.getRoot().addStructureListener(checker);
151
152 ProtocolOperationClass co = (ProtocolOperationClass)creator.newOperationClass();
153
154 checker.reset();
155 executeCall(new OperationSetOperationClass(o, co));
156 assertTrue("Wrong type of class operation ("+o.get().getClass().getName()+").", o.get() instanceof OperationClass);
157
158 executeCall(new OperationSetOperationClass(o, null));
159 }
160
161 public void testTokenClass() throws Exception {
162 ProtocolPlace p = (ProtocolPlace)creator.newPlace();
163
164 executeCall(new OwlsAddOwl(p, "tokenClass"));
165 assertEquals("Wrong number of owls.", 1, p.owlsCount());
166 assertEquals("Wrong owl at index 0.", "tokenClass", p.getOwls()[0]);
167
168 executeCall(new OwlsAddOwl(p, "gruetzi"));
169 assertEquals("Wrong number of owls.", 2, p.owlsCount());
170 assertEquals("Wrong owl at index 1.", "gruetzi", p.getOwls()[1]);
171
172 executeCall(new PlaceSetTokenType(p, "data"));
173 assertEquals("Wrong token type.", "data", p.getTokenType());
174
175 executeCall(new OwlsRemoveOwl(p, 0));
176 assertEquals("Wrong number of owls.", 1, p.owlsCount());
177 assertEquals("Wrong owl at index 0.", "gruetzi", p.getOwls()[0]);
178
179 executeCall(new OwlsRemoveOwl(p, 0));
180 assertEquals("Wrong number of owls.", 0, p.owlsCount());
181
182 assertEquals("Wrong token type.", "data", p.getTokenType());
183
184 executeCall(new PlaceSetTokenType(p, null));
185 assertNull("Wrong token type.", p.getTokenType());
186 }
187 }