Lines 20-30
Link Here
|
20 |
import junit.framework.*; |
20 |
import junit.framework.*; |
21 |
import org.eclipse.core.resources.*; |
21 |
import org.eclipse.core.resources.*; |
22 |
import org.eclipse.core.runtime.*; |
22 |
import org.eclipse.core.runtime.*; |
|
|
23 |
import org.eclipse.core.runtime.preferences.IEclipsePreferences; |
24 |
import org.eclipse.core.runtime.preferences.InstanceScope; |
23 |
import org.eclipse.jdt.core.*; |
25 |
import org.eclipse.jdt.core.*; |
24 |
import org.eclipse.jdt.core.tests.builder.TestingEnvironment; |
26 |
import org.eclipse.jdt.core.tests.builder.TestingEnvironment; |
25 |
import org.eclipse.jdt.core.tests.junit.extension.TestCase; |
27 |
import org.eclipse.jdt.core.tests.junit.extension.TestCase; |
26 |
import org.eclipse.jdt.core.tests.model.AbstractJavaModelTests; |
28 |
import org.eclipse.jdt.core.tests.model.AbstractJavaModelTests; |
27 |
import org.eclipse.jdt.core.tests.performance.util.JdtCorePerformanceMeter; |
29 |
import org.eclipse.jdt.core.tests.performance.util.JdtCorePerformanceMeter; |
|
|
30 |
import org.eclipse.jdt.core.tests.performance.util.Statistics; |
28 |
import org.eclipse.jdt.core.tests.util.Util; |
31 |
import org.eclipse.jdt.core.tests.util.Util; |
29 |
import org.eclipse.jdt.internal.compiler.batch.Main; |
32 |
import org.eclipse.jdt.internal.compiler.batch.Main; |
30 |
import org.eclipse.jdt.internal.compiler.impl.CompilerOptions; |
33 |
import org.eclipse.jdt.internal.compiler.impl.CompilerOptions; |
Lines 33-38
Link Here
|
33 |
import org.eclipse.jdt.internal.core.JavaModelManager; |
36 |
import org.eclipse.jdt.internal.core.JavaModelManager; |
34 |
import org.eclipse.jdt.internal.core.JavaProject; |
37 |
import org.eclipse.jdt.internal.core.JavaProject; |
35 |
import org.eclipse.jdt.internal.core.search.indexing.IndexManager; |
38 |
import org.eclipse.jdt.internal.core.search.indexing.IndexManager; |
|
|
39 |
import org.eclipse.test.internal.performance.data.DataPoint; |
36 |
import org.eclipse.test.performance.Dimension; |
40 |
import org.eclipse.test.performance.Dimension; |
37 |
import org.eclipse.test.performance.Performance; |
41 |
import org.eclipse.test.performance.Performance; |
38 |
|
42 |
|
Lines 167-174
Link Here
|
167 |
// Time measuring |
171 |
// Time measuring |
168 |
long startMeasuring, testDuration; |
172 |
long startMeasuring, testDuration; |
169 |
|
173 |
|
170 |
// Standard deviation threshold. Statistic should not be take into account when it's reached |
174 |
// Error threshold. Statistic should not be take into account when it's reached |
171 |
protected final static double STDDEV_THRESHOLD = 0.02; // default is 2% |
175 |
protected final static double ERROR_THRESHOLD = 0.005; // default is 0.5% |
|
|
176 |
protected final static String ERROR_STRING; |
177 |
static { |
178 |
NumberFormat valueFormat = NumberFormat.getNumberInstance(); |
179 |
valueFormat.setMaximumFractionDigits(1); |
180 |
ERROR_STRING = valueFormat.format(ERROR_THRESHOLD*100); |
181 |
} |
172 |
|
182 |
|
173 |
/** |
183 |
/** |
174 |
* Variable used for log files. |
184 |
* Variable used for log files. |
Lines 184-190
Link Here
|
184 |
private final static File INVALID_DIR = new File("Invalid"); |
194 |
private final static File INVALID_DIR = new File("Invalid"); |
185 |
protected static File LOG_DIR; |
195 |
protected static File LOG_DIR; |
186 |
// Types of statistic which can be stored. |
196 |
// Types of statistic which can be stored. |
187 |
protected final static String[] LOG_TYPES = { "cpu", "elapsed" }; |
197 |
protected final static String[] DIM_NAMES = { "cpu", "elapsed", "heap" }; |
188 |
// Main version which is logged |
198 |
// Main version which is logged |
189 |
protected final static String LOG_VERSION; |
199 |
protected final static String LOG_VERSION; |
190 |
static { |
200 |
static { |
Lines 198-203
Link Here
|
198 |
// Patch version currently applied: may be null! |
208 |
// Patch version currently applied: may be null! |
199 |
protected final static String PATCH_ID = System.getProperty("patch"); |
209 |
protected final static String PATCH_ID = System.getProperty("patch"); |
200 |
protected static String RUN_ID; |
210 |
protected static String RUN_ID; |
|
|
211 |
|
212 |
// Format to store/display numbers |
213 |
private NumberFormat percentFormat = NumberFormat.getPercentInstance(); |
214 |
private final NumberFormat d2Format = NumberFormat.getNumberInstance(); |
215 |
{ |
216 |
percentFormat.setMaximumFractionDigits(1); |
217 |
d2Format.setMaximumFractionDigits(2); |
218 |
} |
201 |
|
219 |
|
202 |
// Filter to get only the 3.0 plugins |
220 |
// Filter to get only the 3.0 plugins |
203 |
class FullSourceProjectsFilter implements FileFilter { |
221 |
class FullSourceProjectsFilter implements FileFilter { |
Lines 343-351
Link Here
|
343 |
*/ |
361 |
*/ |
344 |
static void createPrintStream(Class testClass, PrintStream[] logStreams, int count, String prefix) { |
362 |
static void createPrintStream(Class testClass, PrintStream[] logStreams, int count, String prefix) { |
345 |
if (LOG_DIR != null) { |
363 |
if (LOG_DIR != null) { |
346 |
for (int i=0, ln=LOG_TYPES.length; i<ln; i++) { |
364 |
for (int i=0, ln=DIM_NAMES.length; i<ln; i++) { |
347 |
String suiteTypeName = suiteTypeShortName(testClass); |
365 |
String suiteTypeName = suiteTypeShortName(testClass); |
348 |
File logFile = new File(LOG_DIR, suiteTypeName+'_'+LOG_TYPES[i]+".log"); |
366 |
File logFile = new File(LOG_DIR, suiteTypeName+'_'+DIM_NAMES[i]+".log"); |
349 |
if (TOUCH) { |
367 |
if (TOUCH) { |
350 |
System.out.println("Log file "+logFile.getPath()+" would be opened."); |
368 |
System.out.println("Log file "+logFile.getPath()+" would be opened."); |
351 |
return; |
369 |
return; |
Lines 411-475
Link Here
|
411 |
if (TOUCH) return; |
429 |
if (TOUCH) return; |
412 |
|
430 |
|
413 |
// Perfs comment buffers |
431 |
// Perfs comment buffers |
414 |
String[] comments = new String[2]; |
432 |
int length = DIM_NAMES.length; |
|
|
433 |
String[] comments = new String[length]; |
415 |
|
434 |
|
416 |
// Log perf result |
435 |
// Log perf result |
417 |
boolean haveTimes = JdtCorePerformanceMeter.CPU_TIMES != null && JdtCorePerformanceMeter.ELAPSED_TIMES != null; |
436 |
boolean haveStats = JdtCorePerformanceMeter.STATISTICS != null; |
418 |
if (haveTimes) { |
437 |
if (haveStats) { |
419 |
NumberFormat pFormat = NumberFormat.getPercentInstance(); |
438 |
DataPoint[] dataPoints = (DataPoint[]) JdtCorePerformanceMeter.STATISTICS.get(this.scenarioReadableName); |
420 |
pFormat.setMaximumFractionDigits(1); |
439 |
if (dataPoints != null) { |
421 |
NumberFormat dFormat = NumberFormat.getNumberInstance(); |
440 |
Statistics statistics = new Statistics(dataPoints); |
422 |
dFormat.setMaximumFractionDigits(0); |
441 |
for (int idx=0; idx<length; idx++) { |
423 |
String stddevThresholdStr = dFormat.format(STDDEV_THRESHOLD*100); |
442 |
storeDimension(logStreams, comments, statistics, idx); |
424 |
NumberFormat dFormat2 = NumberFormat.getNumberInstance(); |
|
|
425 |
dFormat2.setMaximumFractionDigits(2); |
426 |
try { |
427 |
// Store CPU Time |
428 |
JdtCorePerformanceMeter.Statistics cpuStats = (JdtCorePerformanceMeter.Statistics) JdtCorePerformanceMeter.CPU_TIMES.get(this.scenarioReadableName); |
429 |
if (cpuStats != null) { |
430 |
double percent = cpuStats.stddev/cpuStats.average; |
431 |
if (percent > STDDEV_THRESHOLD) { |
432 |
//if (logStreams[0] != null) logStreams[0].print("'"); // disable over threshold result for xls table |
433 |
System.out.println(" WARNING: CPU time standard deviation is over "+stddevThresholdStr+"%: "+dFormat2.format(cpuStats.stddev)+"/"+cpuStats.average+"="+ pFormat.format(percent)); |
434 |
comments[0] = "stddev=" + pFormat.format(percent); |
435 |
} |
436 |
if (logStreams[0] != null) { |
437 |
logStreams[0].print(""+cpuStats.sum+"\t"); |
438 |
} |
439 |
} else { |
440 |
Thread.sleep(1000); |
441 |
System.err.println(this.scenarioShortName+": we should have stored CPU time!"); |
442 |
Thread.sleep(1000); |
443 |
} |
443 |
} |
444 |
// Store Elapsed time |
444 |
} else { |
445 |
JdtCorePerformanceMeter.Statistics elapsedStats = (JdtCorePerformanceMeter.Statistics) JdtCorePerformanceMeter.ELAPSED_TIMES.get(this.scenarioReadableName); |
445 |
try { |
446 |
if (elapsedStats != null) { |
446 |
haveStats = false; |
447 |
double percent = elapsedStats.stddev/elapsedStats.average; |
|
|
448 |
if (percent > STDDEV_THRESHOLD) { |
449 |
//if (logStreams[1] != null) logStreams[1].print("'"); // disable over threshold result for xls table |
450 |
System.out.println(" WARNING: Elapsed time standard deviation is over "+stddevThresholdStr+"%: "+dFormat.format(elapsedStats.stddev)+"/"+elapsedStats.average+"="+ pFormat.format(percent)); |
451 |
comments[1] = "stddev=" + pFormat.format(percent); |
452 |
} |
453 |
if (logStreams[1] != null) { |
454 |
logStreams[1].print(""+elapsedStats.sum+"\t"); |
455 |
} |
456 |
} else { |
457 |
Thread.sleep(1000); |
447 |
Thread.sleep(1000); |
458 |
System.err.println(this.scenarioShortName+": we should have stored Elapsed time"); |
448 |
System.err.println(this.scenarioShortName+": we should have stored statistics!"); |
459 |
Thread.sleep(1000); |
449 |
Thread.sleep(1000); |
|
|
450 |
} catch (InterruptedException e) { |
451 |
// do nothing |
460 |
} |
452 |
} |
461 |
} catch (InterruptedException e) { |
|
|
462 |
// do nothing |
463 |
} |
453 |
} |
464 |
} |
454 |
} |
465 |
|
455 |
|
466 |
// Update comment buffers |
456 |
// Update comment buffers |
467 |
StringBuffer[] scenarioComments = (StringBuffer[]) SCENARII_COMMENT.get(getClass()); |
457 |
StringBuffer[] scenarioComments = (StringBuffer[]) SCENARII_COMMENT.get(getClass()); |
468 |
if (scenarioComments == null) { |
458 |
if (scenarioComments == null) { |
469 |
scenarioComments = new StringBuffer[LOG_TYPES.length]; |
459 |
scenarioComments = new StringBuffer[length]; |
470 |
SCENARII_COMMENT.put(getClass(), scenarioComments); |
460 |
SCENARII_COMMENT.put(getClass(), scenarioComments); |
471 |
} |
461 |
} |
472 |
for (int i=0, ln=LOG_TYPES.length; i<ln; i++) { |
462 |
for (int i=0; i<length; i++) { |
473 |
if (this.scenarioComment != null || comments[i] != null) { |
463 |
if (this.scenarioComment != null || comments[i] != null) { |
474 |
if (scenarioComments[i] == null) { |
464 |
if (scenarioComments[i] == null) { |
475 |
scenarioComments[i] = new StringBuffer(); |
465 |
scenarioComments[i] = new StringBuffer(); |
Lines 492-498
Link Here
|
492 |
if (count == 0) { |
482 |
if (count == 0) { |
493 |
for (int i=0, ln=logStreams.length; i<ln; i++) { |
483 |
for (int i=0, ln=logStreams.length; i<ln; i++) { |
494 |
if (logStreams[i] != null) { |
484 |
if (logStreams[i] != null) { |
495 |
if (haveTimes) { |
485 |
if (haveStats) { |
496 |
if (scenarioComments[i] != null) { |
486 |
if (scenarioComments[i] != null) { |
497 |
logStreams[i].print(scenarioComments[i].toString()); |
487 |
logStreams[i].print(scenarioComments[i].toString()); |
498 |
} |
488 |
} |
Lines 505-510
Link Here
|
505 |
} |
495 |
} |
506 |
} |
496 |
} |
507 |
|
497 |
|
|
|
498 |
private void storeDimension(PrintStream[] logStreams, String[] comments, Statistics statistics, int index) { |
499 |
System.out.println(" - "+statistics.toString(index)); |
500 |
double stddev = statistics.getStddev(index); |
501 |
double average = statistics.getAverage(index); |
502 |
long count = statistics.getCount(index); |
503 |
double error = stddev / Math.sqrt(count); |
504 |
if ((error/average) > ERROR_THRESHOLD) { |
505 |
//if (logStreams[0] != null) logStreams[0].print("'"); // disable over threshold result for xls table |
506 |
System.out.println(" WARNING: "+DIM_NAMES[index]+" error is over "+ERROR_STRING+"%: "+d2Format.format(stddev)+"/sqrt("+count+")="+ percentFormat.format(error/average)); |
507 |
comments[index] = "err=" + percentFormat.format(error/average); |
508 |
} |
509 |
if (logStreams[index] != null) { |
510 |
logStreams[index].print(""+statistics.getSum(index)+"\t"); |
511 |
} |
512 |
} |
513 |
|
508 |
/** |
514 |
/** |
509 |
* Perform gc several times to be sure that it won't take time while executing current test. |
515 |
* Perform gc several times to be sure that it won't take time while executing current test. |
510 |
*/ |
516 |
*/ |
Lines 595-600
Link Here
|
595 |
final IWorkspaceRoot workspaceRoot = workspace.getRoot(); |
601 |
final IWorkspaceRoot workspaceRoot = workspace.getRoot(); |
596 |
String targetWorkspacePath = workspaceRoot.getLocation().toFile().getCanonicalPath(); |
602 |
String targetWorkspacePath = workspaceRoot.getLocation().toFile().getCanonicalPath(); |
597 |
|
603 |
|
|
|
604 |
// Modify resources workspace preferences to avoid disturbing tests while running them |
605 |
IEclipsePreferences resourcesPreferences = new InstanceScope().getNode(ResourcesPlugin.PI_RESOURCES); |
606 |
resourcesPreferences.put(ResourcesPlugin.PREF_AUTO_REFRESH, "false"); |
607 |
workspace.getDescription().setSnapshotInterval(Long.MAX_VALUE); |
608 |
workspace.getDescription().setAutoBuilding(false); |
609 |
|
598 |
// Get projects directories |
610 |
// Get projects directories |
599 |
File wkspDir = new File(targetWorkspacePath); |
611 |
File wkspDir = new File(targetWorkspacePath); |
600 |
FullSourceProjectsFilter filter = new FullSourceProjectsFilter(); |
612 |
FullSourceProjectsFilter filter = new FullSourceProjectsFilter(); |
Lines 763-867
Link Here
|
763 |
} |
775 |
} |
764 |
|
776 |
|
765 |
/** |
777 |
/** |
766 |
* Start a build on given projkect or workspace using given options. |
|
|
767 |
* |
768 |
* @param javaProject Project which must be (full) build or null if all workspace has to be built. |
769 |
* @param options Options used while building |
770 |
*/ |
771 |
protected void build(final IJavaProject javaProject, Hashtable options, boolean noWarning) throws IOException, CoreException { |
772 |
if (DEBUG) System.out.print("\tstart build..."); |
773 |
JavaCore.setOptions(options); |
774 |
if (PRINT) System.out.println("JavaCore options: "+options); |
775 |
|
776 |
// Build workspace if no project |
777 |
if (javaProject == null) { |
778 |
// single measure |
779 |
runGc(); |
780 |
startMeasuring(); |
781 |
ENV.fullBuild(); |
782 |
stopMeasuring(); |
783 |
} else { |
784 |
if (PRINT) System.out.println("Project options: "+javaProject.getOptions(false)); |
785 |
// warm-up |
786 |
ENV.fullBuild(javaProject.getProject().getName()); |
787 |
|
788 |
// measures |
789 |
int max = MEASURES_COUNT / 2; |
790 |
for (int i=0; i<max; i++) { |
791 |
runGc(); |
792 |
startMeasuring(); |
793 |
IWorkspaceRunnable compilation = new IWorkspaceRunnable() { |
794 |
public void run(IProgressMonitor monitor) throws CoreException { |
795 |
ENV.fullBuild(javaProject.getPath()); |
796 |
} |
797 |
}; |
798 |
IWorkspace workspace = ResourcesPlugin.getWorkspace(); |
799 |
workspace.run( |
800 |
compilation, |
801 |
null/*don't take any lock*/, |
802 |
IWorkspace.AVOID_UPDATE, |
803 |
null/*no progress available here*/); |
804 |
stopMeasuring(); |
805 |
} |
806 |
} |
807 |
|
808 |
// Verify markers |
809 |
IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot(); |
810 |
IMarker[] markers = workspaceRoot.findMarkers(IJavaModelMarker.JAVA_MODEL_PROBLEM_MARKER, true, IResource.DEPTH_INFINITE); |
811 |
List resources = new ArrayList(); |
812 |
List messages = new ArrayList(); |
813 |
int warnings = 0; |
814 |
for (int i = 0, length = markers.length; i < length; i++) { |
815 |
IMarker marker = markers[i]; |
816 |
switch (((Integer) marker.getAttribute(IMarker.SEVERITY)).intValue()) { |
817 |
case IMarker.SEVERITY_ERROR: |
818 |
resources.add(marker.getResource().getName()); |
819 |
messages.add(marker.getAttribute(IMarker.MESSAGE)); |
820 |
break; |
821 |
case IMarker.SEVERITY_WARNING: |
822 |
warnings++; |
823 |
if (noWarning) { |
824 |
resources.add(marker.getResource().getName()); |
825 |
messages.add(marker.getAttribute(IMarker.MESSAGE)); |
826 |
} |
827 |
break; |
828 |
} |
829 |
} |
830 |
workspaceRoot.deleteMarkers(IJavaModelMarker.JAVA_MODEL_PROBLEM_MARKER, true, IResource.DEPTH_INFINITE); |
831 |
|
832 |
// Assert result |
833 |
int size = messages.size(); |
834 |
if (size > 0) { |
835 |
StringBuffer debugBuffer = new StringBuffer(); |
836 |
for (int i=0; i<size; i++) { |
837 |
debugBuffer.append(resources.get(i)); |
838 |
debugBuffer.append(":\n\t"); |
839 |
debugBuffer.append(messages.get(i)); |
840 |
debugBuffer.append('\n'); |
841 |
} |
842 |
System.out.println(this.scenarioShortName+": Unexpected ERROR marker(s):\n" + debugBuffer.toString()); |
843 |
System.out.println("--------------------"); |
844 |
} |
845 |
if (DEBUG) System.out.println("done"); |
846 |
|
847 |
// Commit measure |
848 |
commitMeasurements(); |
849 |
assertPerformance(); |
850 |
|
851 |
// Store warning |
852 |
if (warnings>0) { |
853 |
System.out.println("\t- "+warnings+" warnings found while performing build."); |
854 |
} |
855 |
if (this.scenarioComment == null) { |
856 |
this.scenarioComment = new StringBuffer("["+TEST_POSITION+"]"); |
857 |
} else { |
858 |
this.scenarioComment.append(' '); |
859 |
} |
860 |
this.scenarioComment.append("warn="); |
861 |
this.scenarioComment.append(warnings); |
862 |
} |
863 |
|
864 |
/** |
865 |
* Delete a directory from file system. |
778 |
* Delete a directory from file system. |
866 |
* @param directory |
779 |
* @param directory |
867 |
*/ |
780 |
*/ |
Lines 905-995
Link Here
|
905 |
return options; |
818 |
return options; |
906 |
} |
819 |
} |
907 |
|
820 |
|
908 |
/* |
|
|
909 |
* Full Build using batch compiler |
910 |
*/ |
911 |
protected void compile(String pluginID, String options, boolean log, String[] srcPaths) throws IOException, CoreException { |
912 |
IWorkspace workspace = ResourcesPlugin.getWorkspace(); |
913 |
final IWorkspaceRoot workspaceRoot = workspace.getRoot(); |
914 |
final String targetWorkspacePath = workspaceRoot.getProject(pluginID).getLocation().toFile().getCanonicalPath(); |
915 |
String logFileName = targetWorkspacePath + File.separator + getName()+".log"; |
916 |
String workspacePath = workspaceRoot.getLocation().toFile().getCanonicalPath()+File.separator; |
917 |
String binPath = File.separator+"bin"+File.pathSeparator; |
918 |
String classpath = " -cp " + |
919 |
workspacePath+"org.eclipse.osgi" + binPath + |
920 |
workspacePath+"org.eclipse.jface" + binPath + |
921 |
workspacePath+"org.eclipse.core.runtime" + binPath + |
922 |
workspacePath+"org.eclipse.core.resources"+binPath + |
923 |
workspacePath+"org.eclipse.text"+binPath; |
924 |
String sources = srcPaths == null ? " "+targetWorkspacePath : ""; |
925 |
if (srcPaths != null) { |
926 |
for (int i=0, l=srcPaths.length; i<l; i++) { |
927 |
String path = workspacePath + pluginID + File.separator + srcPaths[i]; |
928 |
if (path.indexOf(" ") > 0) { |
929 |
path = "\"" + path + "\""; |
930 |
} |
931 |
sources += " " + path; |
932 |
} |
933 |
} |
934 |
|
935 |
// Warm up |
936 |
String compliance = " -" + (COMPLIANCE==null ? "1.4" : COMPLIANCE); |
937 |
final String cmdLine = classpath + compliance + " -g -preserveAllLocals "+(options==null?"":options)+" -d " + COMPILER_OUTPUT_DIR + (log?" -log "+logFileName:"") + sources; |
938 |
if (PRINT) System.out.println(" Compiler command line = "+cmdLine); |
939 |
int warnings = 0; |
940 |
StringWriter errStrWriter = new StringWriter(); |
941 |
PrintWriter err = new PrintWriter(errStrWriter); |
942 |
PrintWriter out = new PrintWriter(new StringWriter()); |
943 |
Main warmup = new Main(out, err, false); |
944 |
warmup.compile(Main.tokenize(cmdLine)); |
945 |
if (warmup.globalErrorsCount > 0) { |
946 |
System.out.println(this.scenarioShortName+": "+warmup.globalErrorsCount+" Unexpected compile ERROR!"); |
947 |
if (DEBUG) { |
948 |
System.out.println(errStrWriter.toString()); |
949 |
System.out.println("--------------------"); |
950 |
} |
951 |
} |
952 |
if (!"none".equals(COMPILER_OUTPUT_DIR)) { |
953 |
cleanupDirectory(new File(COMPILER_OUTPUT_DIR)); |
954 |
} |
955 |
warnings = warmup.globalWarningsCount; |
956 |
if (!log) Util.writeToFile(errStrWriter.toString(), logFileName); |
957 |
|
958 |
// Clean writer |
959 |
err = null; |
960 |
out = null; |
961 |
errStrWriter = null; |
962 |
|
963 |
// Measures |
964 |
for (int i = 0; i < MEASURES_COUNT; i++) { |
965 |
runGc(); |
966 |
NullPrintWriter nullPrint= new NullPrintWriter(); |
967 |
Main main = new Main(nullPrint, nullPrint, false); |
968 |
startMeasuring(); |
969 |
main.compile(Main.tokenize(cmdLine)); |
970 |
stopMeasuring(); |
971 |
if (!"none".equals(COMPILER_OUTPUT_DIR)) { |
972 |
cleanupDirectory(new File(COMPILER_OUTPUT_DIR)); |
973 |
} |
974 |
} |
975 |
|
976 |
// Commit measures |
977 |
commitMeasurements(); |
978 |
assertPerformance(); |
979 |
|
980 |
// Store warning |
981 |
if (warnings>0) { |
982 |
System.out.println("\t- "+warnings+" warnings found while performing batch compilation."); |
983 |
} |
984 |
if (this.scenarioComment == null) { |
985 |
this.scenarioComment = new StringBuffer("["+TEST_POSITION+"]"); |
986 |
} else { |
987 |
this.scenarioComment.append(' '); |
988 |
} |
989 |
this.scenarioComment.append("warn="); |
990 |
this.scenarioComment.append(warnings); |
991 |
} |
992 |
|
993 |
/** |
821 |
/** |
994 |
* @see org.eclipse.jdt.core.tests.model.AbstractJavaModelTests#createJavaProject(String, String[], String[], String[][], String[][], String[], String[][], String[][], boolean[], String, String[], String[][], String[][], String) |
822 |
* @see org.eclipse.jdt.core.tests.model.AbstractJavaModelTests#createJavaProject(String, String[], String[], String[][], String[][], String[], String[][], String[][], boolean[], String, String[], String[][], String[][], String) |
995 |
*/ |
823 |
*/ |