EMMA??Coverage??Report??(generated??Fri??May??15??16:21:14??BST??2009)
[all??classes][org.apache.james.mpt.ant]

COVERAGE??SUMMARY??FOR??SOURCE??FILE??[MailProtocolTestTask.java]

nameclass,??%method,??%block,??%line,??%
MailProtocolTestTask.java100%??(2/2)71%????(24/34)64%????(301/474)68%????(85.4/125)

COVERAGE??BREAKDOWN??BY??CLASS??AND??METHOD

nameclass,??%method,??%block,??%line,??%
??????????
class??MailProtocolTestTask100%??(1/1)59%????(13/22)63%????(216/341)67%????(61.9/92)
debug??(char):??void??0%??????(0/1)0%??????(0/14)0%??????(0/2)
getErrorProperty??():??String??0%??????(0/1)0%??????(0/3)0%??????(0/1)
getScript??():??File??0%??????(0/1)0%??????(0/3)0%??????(0/1)
isQuiet??():??boolean??0%??????(0/1)0%??????(0/3)0%??????(0/1)
isSkip??():??boolean??0%??????(0/1)0%??????(0/3)0%??????(0/1)
setErrorProperty??(String):??void??0%??????(0/1)0%??????(0/4)0%??????(0/2)
setQuiet??(boolean):??void??0%??????(0/1)0%??????(0/4)0%??????(0/2)
setShabang??(String):??void??0%??????(0/1)0%??????(0/4)0%??????(0/2)
setSkip??(boolean):??void??0%??????(0/1)0%??????(0/4)0%??????(0/2)
execute??():??void??100%??(1/1)52%????(39/75)52%????(11/21)
note??(String):??void??100%??(1/1)62%????(8/13)75%????(3/4)
doExecute??():??void??100%??(1/1)69%????(95/137)81%????(21.9/27)
MailProtocolTestTask??():??void??100%??(1/1)100%??(23/23)100%??(8/8)
add??(ResourceCollection):??void??100%??(1/1)100%??(13/13)100%??(4/4)
createAddUser??():??MailProtocolTestTask$AddUser??100%??(1/1)100%??(12/12)100%??(3/3)
debug??(String):??void??100%??(1/1)100%??(5/5)100%??(2/2)
getHost??():??String??100%??(1/1)100%??(3/3)100%??(1/1)
getPort??():??int??100%??(1/1)100%??(3/3)100%??(1/1)
getShabang??():??String??100%??(1/1)100%??(3/3)100%??(1/1)
setHost??(String):??void??100%??(1/1)100%??(4/4)100%??(2/2)
setPort??(int):??void??100%??(1/1)100%??(4/4)100%??(2/2)
setScript??(File):??void??100%??(1/1)100%??(4/4)100%??(2/2)
??????????
class??MailProtocolTestTask$AddUser100%??(1/1)92%????(11/12)64%????(85/133)72%????(24.5/34)
setScript??(File):??void??0%??????(0/1)0%??????(0/4)0%??????(0/2)
validate??():??void??100%??(1/1)42%????(13/31)50%????(3.5/7)
execute??():??void??100%??(1/1)57%????(34/60)67%????(8/12)
MailProtocolTestTask$AddUser??(MailProtocolTestTask):??void??100%??(1/1)100%??(6/6)100%??(1/1)
addText??(String):??void??100%??(1/1)100%??(8/8)100%??(2/2)
getPasswd??():??String??100%??(1/1)100%??(3/3)100%??(1/1)
getPort??():??int??100%??(1/1)100%??(3/3)100%??(1/1)
getScript??():??File??100%??(1/1)100%??(3/3)100%??(1/1)
getUser??():??String??100%??(1/1)100%??(3/3)100%??(1/1)
setPasswd??(String):??void??100%??(1/1)100%??(4/4)100%??(2/2)
setPort??(int):??void??100%??(1/1)100%??(4/4)100%??(2/2)
setUser??(String):??void??100%??(1/1)100%??(4/4)100%??(2/2)

1/****************************************************************
2??*??Licensed??to??the??Apache??Software??Foundation??(ASF)??under??one??????*
3??*??or??more??contributor??license??agreements.????See??the??NOTICE??file??*
4??*??distributed??with??this??work??for??additional??information????????????????*
5??*??regarding??copyright??ownership.????The??ASF??licenses??this??file??????*
6??*??to??you??under??the??Apache??License,??Version??2.0??(the????????????????????????*
7??*??"License");??you??may??not??use??this??file??except??in??compliance??????*
8??*??with??the??License.????You??may??obtain??a??copy??of??the??License??at??????*
9??*????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????*
10??*??????http://www.apache.org/licenses/LICENSE-2.0??????????????????????????????????*
11??*????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????*
12??*??Unless??required??by??applicable??law??or??agreed??to??in??writing,??????*
13??*??software??distributed??under??the??License??is??distributed??on??an????*
14??*??"AS??IS"??BASIS,??WITHOUT??WARRANTIES??OR??CONDITIONS??OF??ANY??????????????*
15??*??KIND,??either??express??or??implied.????See??the??License??for??the????????*
16??*??specific??language??governing??permissions??and??limitations????????????*
17??*??under??the??License.??????????????????????????????????????????????????????????????????????????????????????*
18??****************************************************************/
19??
20package??org.apache.james.mpt.ant;
21??
22import??java.io.File;
23import??java.io.FileReader;
24import??java.io.IOException;
25import??java.io.InputStream;
26import??java.io.Reader;
27import??java.io.StringReader;
28import??java.util.ArrayList;
29import??java.util.Collection;
30import??java.util.Iterator;
31??
32import??org.apache.james.mpt.ExternalHostSystem;
33import??org.apache.james.mpt.Monitor;
34import??org.apache.james.mpt.ProtocolSessionBuilder;
35import??org.apache.james.mpt.Runner;
36import??org.apache.james.mpt.ScriptedUserAdder;
37import??org.apache.tools.ant.BuildException;
38import??org.apache.tools.ant.Project;
39import??org.apache.tools.ant.Task;
40import??org.apache.tools.ant.types.Resource;
41import??org.apache.tools.ant.types.ResourceCollection;
42import??org.apache.tools.ant.types.resources.FileResource;
43import??org.apache.tools.ant.types.resources.Union;
44??
45/**
46??*??Task??executes??MPT??scripts??against??a??server
47??*??running??on??a??given??port??and??host.
48??*/
49public??class??MailProtocolTestTask??extends??Task??implements??Monitor??{
50??
51????????private??boolean??quiet??=??false;
52????????private??File??script;
53????????private??Union??scripts;
54????????private??int??port??=??0;
55????????private??String??host??=??"127.0.0.1";
56????????private??boolean??skip??=??false;
57????????private??String??shabang??=??null;
58????????private??Collection<AddUser>??users??=??new??ArrayList<AddUser>();
59????????private??String??errorProperty;
60????????
61????????/**
62??????????*??Gets??the??error??property.
63??????????*??
64??????????*??@return??name??of??the??ant??property??to??be??set??on??error,
65??????????*??null??if??the??script??should??terminate??on??error
66??????????*/
67????????public??String??getErrorProperty()??{
68????????????????return??errorProperty;
69????????}
70??
71????????/**
72??????????*??Sets??the??error??property.
73??????????*??@param??errorProperty??name??of??the??ant??property??to??be??set??on??error,
74??????????*??nul??if??the??script??should??terminate??on??error
75??????????*/
76????????public??void??setErrorProperty(String??errorProperty)??{
77????????????????this.errorProperty??=??errorProperty;
78????????}
79??
80????????/**
81??????????*??Should??progress??output??be??suppressed?
82??????????*??@return??true??if??progress??information??should??be??suppressed,
83??????????*??false??otherwise
84??????????*/
85????????public??boolean??isQuiet()??{
86????????????????return??quiet;
87????????}
88??
89????????/**
90??????????*??Sets??whether??progress??output??should??be??suppressed/
91??????????*??@param??quiet??true??if??progress??information??should??be??suppressed,
92??????????*??false??otherwise
93??????????*/
94????????public??void??setQuiet(boolean??quiet)??{
95????????????????this.quiet??=??quiet;
96????????}
97??
98????????/**
99??????????*??Should??the??execution??be??skipped?
100??????????*??@return??true??if??exection??should??be??skipped,??
101??????????*??otherwise??false
102??????????*/
103????????public??boolean??isSkip()??{
104????????????????return??skip;
105????????}
106??
107????????/**
108??????????*??Sets??execution??skipping.
109??????????*??@param??skip??true??to??skip??excution
110??????????*/
111????????public??void??setSkip(boolean??skip)??{
112????????????????this.skip??=??skip;
113????????}
114??
115????????/**
116??????????*??Gets??the??host??(either??name??or??number)??against??which??this
117??????????*??test??will??run.
118??????????*??@return??host,??not??null
119??????????*/
120????????public??String??getHost()??{
121????????????????return??host;
122????????}
123??
124????????/**
125??????????*??Sets??the??host??(either??name??or??number)??against??which??this
126??????????*??test??will??run.
127??????????*??@param??host??not??null
128??????????*/
129????????public??void??setHost(String??host)??{
130????????????????this.host??=??host;
131????????}
132??
133????????/**
134??????????*??Gets??the??port??against??which??this??test??will??run.
135??????????*??@return??port??number
136??????????*/
137????????public??int??getPort()??{
138????????????????return??port;
139????????}
140??
141????????/**
142??????????*??Sets??the??port??aginst??which??this??test??will??run.
143??????????*??@param??port??port??number
144??????????*/
145????????public??void??setPort(int??port)??{
146????????????????this.port??=??port;
147????????}
148??
149????????/**
150??????????*??Gets??the??script??to??execute.
151??????????*??@return??file??containing??test??script
152??????????*/
153????????public??File??getScript()??{
154????????????????return??script;
155????????}
156??
157????????/**
158??????????*??Sets??the??script??to??execute.
159??????????*??@param??script??not??null
160??????????*/
161????????public??void??setScript(File??script)??{
162????????????????this.script??=??script;
163????????}
164??
165????????/**
166??????????*??Gets??script??shabang.
167??????????*??This??will??be??substituted??for??the??first??server??response.
168??????????*??@return??script??shabang,??
169??????????*??or??null??for??no??shabang
170??????????*/
171????????public??String??getShabang()??{
172????????????????return??shabang;
173????????}
174????????
175????????/**
176??????????*??Sets??the??script??shabang.
177??????????*??When??not??null,??this??value??will??be??used??to??be??substituted??for??the??
178??????????*??first??server??response.
179??????????*??@param??shabang??script??shabang,??
180??????????*??or??null??for??no??shabang.
181??????????*/
182????????public??void??setShabang(String??shabang)??{
183????????????????this.shabang??=??shabang;
184????????}
185??
186????????@Override
187????????public??void??execute()??throws??BuildException??{
188????????????????if??(port??<=??0)??{
189????????????????????????throw??new??BuildException("Port??must??be??set??to??a??positive??integer");
190????????????????}
191????????????????
192????????????????if??(scripts??==??null??&&??script??==??null)??{
193????????????????????????throw??new??BuildException("Scripts??must??be??specified??as??an??embedded??resource??collection");??
194????????????????}
195????????????????
196????????????????if??(scripts??!=??null??&&??script??!=??null)??{
197????????????????????????throw??new??BuildException("Scripts??can??be??specified??either??by??the??script??attribute??or??as??resource??collections??but??not??both.");??
198????????????????}
199????????????????
200????????????????for(final??Iterator??it=users.iterator();it.hasNext();)??{
201????????????????????????final??AddUser??user??=??(AddUser)??it.next();
202????????????????????????user.validate();
203????????????????}
204????????????????
205????????????????if(skip)??{
206????????????????????????log("Skipping??excution");
207????????????????}??else??if??(errorProperty??==??null)??{
208????????????????????????doExecute();
209????????????????}??else??{
210????????????????????????try??{
211????????????????????????????????doExecute();
212????????????????????????}??catch??(BuildException??e)??{
213????????????????????????????????final??Project??project??=??getProject();
214????????????????????????????????project.setProperty(errorProperty,??e.getMessage());
215????????????????????????????????log(e,??Project.MSG_DEBUG);
216????????????????????????}
217????????????????}
218????????}
219??
220????????public??void??add(ResourceCollection??resources)??{
221????????????????if??(scripts??==??null)??{
222????????????????????????scripts??=??new??Union();
223????????????????}
224????????????????scripts.add(resources);
225????????}
226????????
227????????private??void??doExecute()??throws??BuildException??{
228????????????????for??(final??Iterator??it=users.iterator();it.hasNext();)??{
229????????????????????????final??AddUser??userAdder??=??(AddUser)??it.next();
230????????????????????????userAdder.execute();
231????????????????}
232????????????????
233????????????????final??ExternalHostSystem??host??=??new??ExternalHostSystem(getHost(),??getPort(),??this,??getShabang(),??null);
234????????????????final??ProtocolSessionBuilder??builder??=??new??ProtocolSessionBuilder();
235????????????????
236????????????????if??(scripts??==??null)??{
237????????????????????????scripts??=??new??Union();
238????????????????????????scripts.add(new??FileResource(script));
239????????????????}
240????????????????
241????????????????for??(final??Iterator??it=scripts.iterator();it.hasNext();)??{
242????????????????????????final??Resource??resource??=??(Resource)??it.next();
243????????????????????????try??{
244????????????????????????????????final??Runner??runner??=??new??Runner();
245????????????????????????????????
246????????????????????????????????try??{
247????????????????????????????????????????
248????????????????????????????????????????final??InputStream??inputStream??=??resource.getInputStream();
249????????????????????????????????????????final??String??name??=??resource.getName();
250????????????????????????????????????????builder.addProtocolLines(name??==??null?????"[Unknown]"??:??name,??inputStream,??runner.getTestElements());
251????????????????????????????????????????runner.runSessions(host);
252????????????????????????????????????????
253????????????????????????????????}??catch??(UnsupportedOperationException??e)??{
254????????????????????????????????????????log("Resource??cannot??be??read:??"??+??resource.getName(),??Project.MSG_WARN);
255????????????????????????????????}
256????????????????????????}??catch??(IOException??e)??{
257????????????????????????????????throw??new??BuildException("Cannot??load??script??"??+??resource.getName(),??e);
258????????????????????????}??catch??(Exception??e)??{
259????????????????????????????????log(e.getMessage(),??Project.MSG_ERR);
260????????????????????????????????throw??new??BuildException("[FAILURE]??in??script??"??+??resource.getName()??+??"\n"??+??e.getMessage(),??e);
261????????????????????????}
262????????????????????????
263????????????????}
264????????
265????????}
266????????
267????????public??AddUser??createAddUser()??{
268????????????????final??AddUser??result??=??new??AddUser();
269????????????????users.add(result);
270????????????????return??result;
271????????}
272??
273????????/**
274??????????*??Adds??a??user.
275??????????*/
276????????public??class??AddUser??{
277????????????????
278????????????????private??int??port;
279????????????????private??String??user;
280????????????????private??String??passwd;
281????????????????private??File??script;
282????????????????private??String??scriptText;
283??
284????????????????/**
285??????????????????*??Gets??the??port??against??which??the??user??addition
286??????????????????*??script??should??be??executed.
287??????????????????*??@return??port??number
288??????????????????*/
289????????????????public??int??getPort()??{
290????????????????????????return??port;
291????????????????}
292??
293????????????????/**
294??????????????????*??Sets??the??port??against??which??the??user??addition
295??????????????????*??script??should??be??executed.
296??????????????????*??@param??port??port??number
297??????????????????*/
298????????????????public??void??setPort(int??port)??{
299????????????????????????this.port??=??port;
300????????????????}
301??
302????????????????/**
303??????????????????*??Gets??the??password??for??the??user.
304??????????????????*??@return??password??not??null
305??????????????????*/
306????????????????public??String??getPasswd()??{
307????????????????????????return??passwd;
308????????????????}
309??
310????????????????/**
311??????????????????*??Sets??the??password??for??the??user.
312??????????????????*??This??will??be??passed??in??the??user??creation??script.
313??????????????????*??@param??passwd??not??null
314??????????????????*/
315????????????????public??void??setPasswd(String??passwd)??{
316????????????????????????this.passwd??=??passwd;
317????????????????}
318??
319????????????????/**
320??????????????????*??Gets??the??name??of??the??user??to??be??created.
321??????????????????*??@return??user??name,??not??null
322??????????????????*/
323????????????????public??String??getUser()??{
324????????????????????????return??user;
325????????????????}
326??
327????????????????/**
328??????????????????*??Sets??the??name??of??the??user??to??be??created.
329??????????????????*??@param??user??not??null
330??????????????????*/
331????????????????public??void??setUser(String??user)??{
332????????????????????????this.user??=??user;
333????????????????}
334????????????????
335????????????????/**
336??????????????????*??Sets??user??addition??script.
337??????????????????*??@param??scriptText??not??null
338??????????????????*/
339????????????????public??void??addText(String??scriptText)??{
340????????????????????????this.scriptText??=??getProject().replaceProperties(scriptText);
341????????????????}
342??
343????????????????/**
344??????????????????*??Gets??the??file??containing??the??user??creation??script.
345??????????????????*??@return??not??null
346??????????????????*/
347????????????????public??File??getScript()??{
348????????????????????????return??script;
349????????????????}
350??
351????????????????/**
352??????????????????*??Sets??the??file??containing??the??user??creation??script.
353??????????????????*??@param??script??not??null
354??????????????????*/
355????????????????public??void??setScript(File??script)??{
356????????????????????????this.script??=??script;
357????????????????}
358????????????????
359????????????????/**
360??????????????????*??Validates??mandatory??fields??have??been??filled.
361??????????????????*/
362????????????????void??validate()??throws??BuildException??{
363????????????????????????if??(script??==??null??&&??scriptText??==??null)??{
364????????????????????????????????throw??new??BuildException("Either??the??'script'??attribute??must??be??set,??or??the??body??must??contain??the??text??of??the??script");
365????????????????????????}
366????????????????????????
367????????????????????????if??(script??!=??null??&&??scriptText??!=??null)??{
368????????????????????????????????throw??new??BuildException("Choose??either??script??text??or??script??attribute??but??not??both.");
369????????????????????????}
370????????????????????????
371????????????????????????if??(port??<=??0)??{
372????????????????????????????????throw??new??BuildException("'port'??attribute??must??be??set??on??AddUser??to??the??port??against??which??the??script??should??run.");
373????????????????????????}
374????????????????}
375????????????????
376????????????????/**
377??????????????????*??Creates??a??user.
378??????????????????*??@throws??BuildException
379??????????????????*/
380????????????????void??execute()??throws??BuildException??{
381????????????????????????validate();
382????????????????????????try??{
383????????????????????????????????final??File??scriptFile??=??getScript();
384????????????????????????????????final??Reader??reader;
385????????????????????????????????if??(scriptFile??==??null)??{
386????????????????????????????????????????reader??=??new??StringReader(scriptText);
387????????????????????????????????}??else??{
388????????????????????????????????????????reader??=??new??FileReader(scriptFile);
389????????????????????????????????}
390????????????????????????????????final??ScriptedUserAdder??adder??=??new??ScriptedUserAdder(getHost(),??getPort(),??MailProtocolTestTask.this);
391????????????????????????????????adder.addUser(getUser(),??getPasswd(),??reader);
392????????????????????????}??catch??(Exception??e)??{
393????????????????????????????????log(e.getMessage(),??Project.MSG_ERR);
394????????????????????????????????throw??new??BuildException("User??addition??failed:??\n"??+??e.getMessage(),??e);
395????????????????????????}
396????????????????}??
397????????}
398??
399????????public??void??note(String??message)??{
400????????????????if??(quiet)??{
401????????????????????????log(message,??Project.MSG_DEBUG);
402????????????????}??else??{
403????????????????????????log(message,??Project.MSG_INFO);
404????????????????}
405????????}
406??
407????????public??void??debug(char??character)??{
408????????????????log("'"??+??character??+??"'",??Project.MSG_DEBUG);
409????????}
410??
411????????public??void??debug(String??message)??{
412????????????????log(message,??Project.MSG_DEBUG);
413????????}
414}

[all??classes][org.apache.james.mpt.ant]
EMMA??2.0.5312??(C)??Vladimir??Roubtsov