File tree Expand file tree Collapse file tree 2 files changed +16
-8
lines changed
Expand file tree Collapse file tree 2 files changed +16
-8
lines changed Original file line number Diff line number Diff line change @@ -14,10 +14,13 @@ object IOUtils {
1414 def clean (dataDir : String ): Unit = clean(new File (dataDir))
1515
1616 def coverageFile (dataDir : File ): File = coverageFile(dataDir.getAbsolutePath)
17- def coverageFile (dataDir : String ): File = new File (dataDir + " / " + CoverageFileName )
17+ def coverageFile (dataDir : String ): File = new File (dataDir, CoverageFileName )
1818
19+ /**
20+ * @return the measurement file for the current thread.
21+ */
1922 def measurementFile (dataDir : File ): File = measurementFile(dataDir.getAbsolutePath)
20- def measurementFile (dataDir : String ): File = new File (dataDir + " / " + MeasurementsPrefix + Thread .currentThread.getId)
23+ def measurementFile (dataDir : String ): File = new File (dataDir, MeasurementsPrefix + Thread .currentThread.getId)
2124
2225 def findMeasurementFiles (dataDir : String ): Array [File ] = findMeasurementFiles(new File (dataDir))
2326 def findMeasurementFiles (dataDir : File ): Array [File ] = dataDir.listFiles(new FileFilter {
@@ -141,4 +144,4 @@ object IOUtils {
141144 reader.close()
142145 coverage
143146 }
144- }
147+ }
Original file line number Diff line number Diff line change @@ -5,6 +5,8 @@ import java.io.FileWriter
55/** @author Stephen Samuel */
66object Invoker {
77
8+ val threadFile = new ThreadLocal [FileWriter ]
9+
810 /**
911 * We record that the given id has been invoked by appending its id to the coverage
1012 * data file.
@@ -23,9 +25,12 @@ object Invoker {
2325 def invoked (id : Int , dataDir : String ) = {
2426 // Each thread writes to a separate measurement file, to reduce contention
2527 // and because file appends via FileWriter are not atomic on Windows.
26- val file = IOUtils .measurementFile(dataDir)
27- val writer = new FileWriter (file, true )
28- writer.append(id.toString + ';' )
29- writer.close()
28+ var writer = threadFile.get()
29+ if (writer == null ) {
30+ val file = IOUtils .measurementFile(dataDir)
31+ writer = new FileWriter (file, true )
32+ threadFile.set(writer)
33+ }
34+ writer.append(id.toString + ';' ).flush()
3035 }
31- }
36+ }
You can’t perform that action at this time.
0 commit comments