Philip,
I need some help debugging an issue in the DailyProjectCoverage2.
Here is how to reproduce it:
1) Rename TestDailyProjectCoverage2.brokenTestProjectCoverage2() to
TestDailyProjectCoverage2.testProjectCoverage2().
2) Run the unit test and it _should_fail. If you are running in
Eclipse you should see the following output.
[CoverageRawDataMap for
TestDailyProjectCoverage2 on 08-Jan-2004
JBlanket
C: 1077800628000
[fileName, , uncovered, 5, runTime, 1077800628000,
misc, , granularity, method, tool, JBlanket, covered, 4, className,
org.hackystat.stdext.activity.analysis.activetime.TestActiveTimeTrend,
tstamp, 1073568438246, pMap,
000400004misc0000000009className00069org.hackystat.stdext.activity.analysis.activetime.TestActiveTimeTrend]
[fileName, , uncovered, 3, runTime, 1077800628000,
misc, , granularity, method, tool, JBlanket, covered, 3, className,
org.hackystat.stdext.activity.analysis.projectactivetime.TestProjectActiveTime,
tstamp, 1073568438248, pMap,
000400004misc0000000009className00078org.hackystat.stdext.activity.analysis.projectactivetime.TestProjectActiveTime]
[fileName, , uncovered, 2, runTime, 1077800628000,
misc, , granularity, method, tool, JBlanket, covered, 2, className,
org.hackystat.stdext.common.selector.interval.DayInterval, tstamp,
1073568438305, pMap,
000400004misc0000000009className00057org.hackystat.stdext.common.selector.interval.DayInterval]
[fileName, , uncovered, 5, runTime, 1077800628000,
misc, , granularity, method, tool, JBlanket, covered, 8, className,
org.hackystat.stdext.common.selector.interval.IntervalSelector, tstamp,
1073568438309, pMap,
000400004misc0000000009className00062org.hackystat.stdext.common.selector.interval.IntervalSelector]
[fileName, , uncovered, 0, runTime, 1077800628000,
misc, , granularity, method, tool, JBlanket, covered, 4, className,
org.hackystat.stdext.common.selector.interval.IntervalUtility, tstamp,
1073568438310, pMap,
000400004misc0000000009className00061org.hackystat.stdext.common.selector.interval.IntervalUtility]
[fileName, , uncovered, 1, runTime, 1077800628000,
misc, , granularity, method, tool, JBlanket, covered, 1, className,
org.hackystat.stdext.project.ProjectException, tstamp, 1073568438390,
pMap,
000400004misc0000000009className00045org.hackystat.stdext.project.ProjectException]
[fileName, , uncovered, 0, runTime, 1077800628000,
misc, , granularity, method, tool, JBlanket, covered, 4, className,
org.hackystat.stdext.test.HackystatCommandUnitTest, tstamp,
1073568438534, pMap,
000400004misc0000000009className00050org.hackystat.stdext.test.HackystatCommandUnitTest]
[fileName, , uncovered, 2, runTime, 1077800628000,
misc, , granularity, method, tool, JBlanket, covered, 0, className,
org.hackystat.stdext.test.HackystatTestException, tstamp, 1073568438535,
pMap,
000400004misc0000000009className00048org.hackystat.stdext.test.HackystatTestException]
[fileName, , uncovered, 0, runTime, 1077800628000,
misc, , granularity, method, tool, JBlanket, covered, 4, className,
org.hackystat.stdext.test.Parameters, tstamp, 1073568438536, pMap,
000400004misc0000000009className00036org.hackystat.stdext.test.Parameters]
[fileName, , uncovered, 0, runTime, 1077800628000,
misc, , granularity, method, tool, JBlanket, covered, 3, className,
org.hackystat.stdext.test.TestParameters, tstamp, 1073568438537, pMap,
000400004misc0000000009className00040org.hackystat.stdext.test.TestParameters]
]
accessing getNumCovered()
[CoverageFilePatternCache for TestDailyProjectCoverage2 08-Jan-2004
JBlanket
<FilePattern: C:\**> method numcovered:33 numuncovered:18
]
topLevelWorkspace=C:\work\hackyStdExt\
topLevelWorkspaceName=C:
metricValue=33
topLevelWorkspace=C:\svn\
topLevelWorkspaceName=C:
metricValue=33
topLevelWorkspace=C:\cvs\
topLevelWorkspaceName=C:
metricValue=33
accessing getNumUncovered()
[CoverageFilePatternCache for TestDailyProjectCoverage2 08-Jan-2004
JBlanket
<FilePattern: C:\**> method numcovered:33 numuncovered:18
<FilePattern: **> method numcovered:99
]
topLevelWorkspace=C:\work\hackyStdExt\
topLevelWorkspaceName=C:
metricValue=18
topLevelWorkspace=C:\svn\
topLevelWorkspaceName=C:
metricValue=18
topLevelWorkspace=C:\cvs\
topLevelWorkspaceName=C:
metricValue=18
numCovered=99
numUncovered=54
Notice the 99 actual value is exactly 3 times the expected
value. My guess is that the problem is from the 3 workspaces within
the project. Note that there seems to be no workspace root.
So, the three workspaces (C:\work\hackyStdExt\, C:\svn\, C:\cvs\) have
the same top level workspace (C:\). thus the following algorithm in
the CoverageFilePatternCache.updateCacheWithWildCards() process the same
toplevel workspace three times (which could be incorrect or correct
depending on how you look at it).
// Case 2: FP is
wildcard, G is not.
if
((filePattern.equals(
this
.
wildCardFilePattern))
&&
!granularity.equals(
this
.
wildCardGranularity)) {
// Iterate over
top-level workspaces in this project.
for
(Iterator i =
this
.
project
.getWorkspaceSetIterator();
i.hasNext(); ) {
Workspace topLevelWorkspace =
(Workspace)i.next();
System.out
.println(
"topLevelWorkspace=" +
topLevelWorkspace.getCanonicalPath());
String topLevelWorkspaceName =
topLevelWorkspace.getTopLevelWorkspaceName();
System.out
.println(
"topLevelWorkspaceName="
+ topLevelWorkspaceName);
FilePattern
topLevelFilePattern =
new
FilePattern(topLevelWorkspaceName +
"/**");
// Get the size
value for the top-level file pattern and this g.
long
metricValue =
this
.getCoverageMetricValue(topLevelFilePattern, granularity,
metricName);
System.out
.println(
"metricValue=" +
metricValue);
// Update the
cache for ["**", g, m] We always want a cache hit for a wild
card.
this
.incCache(filePattern,
granularity, metricName, metricValue);
}
}
It seems to me that if we want to change
"<FilePattern: **> method
numcovered:99 " to
"<FilePattern: **> method
numcovered:33", then we would have to put the toplevel
workspaces into a Set to make sure we only process unique top level file
patterns.
Anyway, let me know what you think. The good news is that if it
does get fixed, then the unit test will pass.
Thanks, Aaron
- [HACKYSTAT-DEV-L] Help with a problem in DailyProject... Aaron Kagawa
- Re: [HACKYSTAT-DEV-L] Help with a problem in Dai... Philip Johnson
- Re: [HACKYSTAT-DEV-L] Help with a problem in... Aaron Akihisa Kagawa
- Re: [HACKYSTAT-DEV-L] Help with a proble... (Cedric) Qin ZHANG
- Re: [HACKYSTAT-DEV-L] Help with a pr... Aaron Kagawa
- Re: [HACKYSTAT-DEV-L] Help with a pr... Philip Johnson
- Re: [HACKYSTAT-DEV-L] Help with... Aaron Kagawa
- Re: [HACKYSTAT-DEV-L] Help ... Philip Johnson
- Re: [HACKYSTAT-DEV-L] H... Hongbing Kou
- Re: [HACKYSTAT-DEV-L] H... Aaron Akihisa Kagawa
- Re: [HACKYSTAT-DEV-L] H... Aaron Kagawa
