emma-announce Mailing List for EMMA code coverage
Brought to you by:
vlad_r
You can subscribe to this list here.
2004 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
(2) |
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2005 |
Jan
|
Feb
|
Mar
(1) |
Apr
(1) |
May
(2) |
Jun
(2) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <vl...@tr...> - 2005-06-22 02:53:18
|
The most significant change in this v2.1 stable build update is the addition of a new tool, ctl. This tool allows remote control over EMMA runtime. Several control commands are currently implemented: - download coverage data to a local file, - remotely dump coverage data, - reset coverage data in a remote JVM. J2EE/application server users should find the new capability very useful, since it is now possible to collect coverage data without a JVM exit, across the network, and without having to deal with classloading problems in exit hook threads that plagued v2.0. Following the usual EMMA design, this functionality is exposed in equal measure via a new command line tool and a new ANT task. Because this is an early access build, the official documentation has not been updated yet (this will happen when v2.1 releases). Until then, see the update below for the new tool usage details. ************************************************ CUMULATIVE LIST OF IMPLEMENTED FEATURE REQUESTS: ************************************************ 2.1.5320 ~~~~~~~~ 977714 support runtime coverage data collection without a JVM exit http://sf.net/tracker/index.php?func=detail&aid=977714&group_id=108932&atid=651900 1167510 reset coverage data http://sf.net/tracker/?group_id=108932&atid=651900&func=detail&aid=1167510 A new processor, CtlProcessor (used by a new 'emma ctl' command line tool and a new <ctl> ANT task) can communicate with a JVM running EMMA-instrumented classes via a TCP socket. On each invocation, the processor dispatches a series of control commands such as 'coverage.get', 'coverage.dump', and 'coverage.reset', for example: <emma> <ctl connect="localhost:47653" > <command name="coverage.get" args="mycoverage.ec" /> <command>coverage.reset</command> <!-- alternate command syntax --> </ctl> </emma> or java -cp ... emma ctl -connect localhost:47653 \ -command coverage.get,mycoverage.ec \ -command coverage.reset This will download current coverage data from a JVM at a given TCP address and save it into a local file 'mycoverage.ec', followed by a coverage reset. The connection string above is in the form "host:port", where the host defaults to 'localhost' and the port to 47653. Currently, there are three commands with the following arguments: coverage.get[,<output pathname>][,<merge>][,<disable exit hook>] coverage.dump[,<output pathname>][,<merge>][,<disable exit hook>] coverage.reset The first one asks the server JVM to send its current coverage data to the client ctl tool over the socket connection, the second one asks the server JVM to dump coverage data on the *server* machine. Consequently, the optional argument <pathname> (defaults to 'coverage.ec') is interpreted either on the client or on the server machine, depending on the command used (the two machines can even run different OSes). The <merge> boolean flag has the usual semantics. Finally, the last argument indicates whether to disable the usual dump-coverage-on-JVM-exit behavior. Set it to 'false' if you want v2.0 behavior. The last command will zero out all coverage numbers, except for class coverage (class coverage corresponds to class loading, so it can't be reset). Subsequent code execution will induce new coverage, of course. Neither command suspends the JVM. A command sequence can contain any number of commands. Note that in ANT, <command name="coverage.get" args="mycoverage.ec" /> is the same as <command>coverage.get,mycoverage.ec</command>. Use commas to delimit arguments. If you want to skip an argument, use comma delimiters to indicate that you are happy with its default, e.g, <command>coverage.get,,,false</command>. NOTE: 'coverage.reset' currently resets all static initializers. This is not correct (since those can never execute again) and will be fixed in the future. This new functionality is controlled by a new set of EMMA properties: rt.control: true rt.control.host: localhost rt.control.port: 47653 2.1.5214 ~~~~~~~~ 974340 make concurrent output file writing safer http://sf.net/tracker/?group_id=108932&atid=651900&func=detail&aid=974340 v2.1 will default to using a machine-global mutex when writing to the coverage output file. This mutex implementation is based on a UDP socket and will work in any J2SE version. Locking behavior is controlled by a new set of EMMA properties: rt.filelock: true rt.filelock.portbase: 59141 rt.filelock.maxtime: 120000 rt.filelock.retries: 11 File locking is enabled by default but can be disabled using 'rt.filelock' boolean property. The UDP port acquired is a sum of 'rt.filelockbase' and an offset (0-254) that is derived from the file's canonical pathname. This ensures that concurrent JVMs writing to *different* files are unlikely to serialize each other on the same socket mutex. 'rt.filelock.maxtime' and 'rt.filelock.retries' specify for how long to try getting the lock and in how many retry attempts, before erroring out. The retry scheme is exponential backout. 2.1.5124 ~~~~~~~~ 999764 'v'/'version' command line option http://sf.net/tracker/?group_id=108932&atid=651900&func=detail&aid=999764 The traditional -v|-version option is now accepted by all command line tools, to help with issue submission. 977738 an option to auto-exclude empty classes http://sf.net/tracker/?group_id=108932&atid=651900&func=detail&aid=977738 v2.1 will default to automatically excluding all classes with no methods (javac has a flaw whereby it will emit such classes for certain code patterns). This behavior is controlled by a new boolean property 'instr.exclude_empty_classes' that defaults to 'true'. Because such empty classes affect class coverage, users who wish to retain their existing coverage numbers can turn this exclusion off. Note that all other types of coverage are unaffected. ************************************************ CUMULATIVE LIST OF FIXED DEFECTS: ************************************************ 2.1.5214 ~~~~~~~~ 1189166 AIOOBE when handling report properties http://sf.net/tracker/?group_id=108932&atid=651897&func=detail&aid=1189166 1015721 whitespace at end of property values http://sf.net/tracker/?group_id=108932&atid=651897&func=detail&aid=1015721 1077741 report tool problem with "/"-prefixed report locations http://sf.net/tracker/?group_id=108932&atid=651897&func=detail&aid=1077741 1002854 sourcepath and java file locations http://sf.net/tracker/?group_id=108932&atid=651897&func=detail&aid=1002854 2.1.5124 ~~~~~~~~ (none) |
From: <vl...@tr...> - 2005-06-13 01:33:13
|
Release build 2.0.5312 fixes a few minor bugs. ************************************************ LIST OF FIXED DEFECTS: ************************************************ 2.0.5312 ~~~~~~~~ 1189166 AIOOBE when handling report properties http://sf.net/tracker/index.php?func=detail&aid=1189166&group_id=108932&atid=651897 988160 negative coverage numbers for very large projects http://sf.net/tracker/index.php?func=detail&aid=988160&group_id=108932&atid=651897 |
From: <vl...@tr...> - 2005-05-14 18:57:18
|
This early access v2.1 build fixes an assortment of small bugs and implements a feature that's been on frequently requested list for months. ************************************************ CUMULATIVE LIST OF IMPLEMENTED FEATURE REQUESTS: ************************************************ 2.1.5214 ~~~~~~~~ 974340 make concurrent output file writing safer http://sf.net/tracker/?group_id=108932&atid=651900&func=detail&aid=974340 v2.1 will default to using a machine-global mutex when writing to the coverage output file. This mutex implementation is based on a UDP socket and will work in any J2SE version. Locking behavior is controlled by a new set of EMMA properties: rt.filelock: true rt.filelock.portbase: 59141 rt.filelock.maxtime: 120000 rt.filelock.retries: 11 File locking is enabled by default but can be disabled using 'rt.filelock' boolean property. The UDP port acquired is a sum of 'rt.filelockbase' and an offset (0-254) that is derived from the file's canonical pathname. This ensures that concurrent JVMs writing to *different* files are unlikely to serialize each other on the same socket mutex. 'rt.filelock.maxtime' and 'rt.filelock.retries' specify for how long to try getting the lock and in how many retry attempts, before erroring out. The retry scheme is exponential backout. 2.1.5124 ~~~~~~~~ 999764 'v'/'version' command line option http://sf.net/tracker/?group_id=108932&atid=651900&func=detail&aid=999764 The traditional -v|-version option is now accepted by all command line tools, to help with issue submission. 977738 an option to auto-exclude empty classes http://sf.net/tracker/?group_id=108932&atid=651900&func=detail&aid=977738 v2.1 will default to automatically excluding all classes with no methods (javac has a flaw whereby it will emit such classes for certain code patterns). This behavior is controlled by a new boolean property 'instr.exclude_empty_classes' that defaults to 'true'. Because such empty classes affect class coverage, users who wish to retain their existing coverage numbers can turn this exclusion off. Note that all other types of coverage are unaffected. ************************************************ CUMULATIVE LIST OF FIXED DEFECTS: ************************************************ 2.1.5214 ~~~~~~~~ 1189166 AIOOBE when handling report properties http://sf.net/tracker/?group_id=108932&atid=651897&func=detail&aid=1189166 1015721 whitespace at end of property values http://sf.net/forum/forum.php?forum_id=386606 1077741 report tool problem with "/"-prefixed report locations http://sf.net/tracker/?group_id=108932&atid=651897&func=detail&aid=1077741 1002854 sourcepath and java file locations http://sf.net/tracker/?group_id=108932&atid=651897&func=detail&aid=1002854 2.1.5124 ~~~~~~~~ (none) |
From: <vl...@tr...> - 2005-04-24 22:17:05
|
Stable build 2.1.5124 marks the beginning of v2.1 development. FEATURE REQUESTS IMPLEMENTED: 999764 'v'/'version' command line option The traditional -v|-version option is now accepted by all command line tools, to help with issue submission. 977738 an option to auto-exclude empty classes v2.1 will default to automatically excluding all classes with no methods (javac has a flaw whereby it will emit such classes for certain code patterns). This behavior is controlled by a new boolean property 'instr.exclude_empty_classes' that defaults to 'true'. Because such empty classes affect class coverage, users who wish to retain their existing coverage numbers can turn this exclusion off. Note that all other types of coverage are unaffected. Vlad Roubtsov |
From: <vl...@tr...> - 2005-03-13 01:23:14
|
This is a bugfix/stable build of EMMA plugin for Maven 1.0. Refer to version 0.2 release notes for installation and usage instructions. DEFECTS FIXED IN v0.4: 1160469 maven emma:report goal doesn't work if tests not forked 1159069 emma.internal.enabled is not being set properly 1158200 Maven reports do not generate correctly after a clean DEFECTS FIXED IN v0.3: 1144463 Source not visible in Maven Report |
From: <vl...@tr...> - 2004-09-29 02:20:48
|
To encourage testing we have released the current version of Maven plugin: http://sourceforge.net/project/showfiles.php?group_id=108932&package_id=131130 This version can also be built using the instructions (BUILD.txt) in "maven" module of EMMA CVS repository (maven/1.0/ subdirectory). Because the plugin is not yet available at ibiblio or any other public URL there are extra project configuration steps involved in order to add the plugin to a Maven build. They are detailed in the plugin release notes: http://sourceforge.net/project/shownotes.php?release_id=271370 Please give it a try and perhaps contribute an idea. The remaining work plan is detailed as the "Plugin - Maven" subproject in the SF Task Manager. Cheers, Vlad. |
From: <vl...@tr...> - 2004-07-19 03:01:34
|
Release 2.0.4217 contains bug fixes and various low-hanging fruit improvements. The codebase is being moved closer to being a better starting point for the future 2.1 branch. FEATURE REQUESTS IMPLEMENTED: 975695 silent mode for data collection 979973 logging infrastructure enhancements There have been several requests for a feature to silence logging in EMMA-instrumented classes (used by builds that validate stdout output). This has been implemented. Additionally, log output from EMMA runtime used to omit "EMMA:" prefix. This has been corrected and can be used for simple grep filtering of EMMA output as well. The documentation has been updated to reflected new verbosity-related properties, but briefly you can use several mechanism to control EMMA verbosity: (1) a JVM system property: java -Demma.verbosity.level={silent,quiet,info,verbose} (2) property "verbosity.level" set in a classpath resource "emma.properties" or in a file pointed to by -Demma.properties JVM system setting (3) for EMMA ANT tasks you can (additionally) set verbosity via a new task attribute "verbosity" of <emma>, <emmarun>, <instr>, <report>, <merge>. Note that different subtasks can have their verbosities set to different level. In other words, the new property follows the usual EMMA property inheritance mechanism. 988785 improve instr output dir validation To prevent users from mistakenly asking EMMA to output intrumented classes in a directory that appears in the input path, the instr tool will now validate that the output dir does not have one of the input dirs as its parent. DEFECTS FIXED: 988160 Negative number displayed in report for line % The fix removes an int multiplication overflow when a coverage report is generated for a very large codebase (thousands of classes). 989071 incremental instrumentation disabled for jar input Unnoticed until now, the instr tool used incorrectly formed output file descriptors when detecting whether instrumented classes were more recent than the source files. As a result, the output classes were always regenerated (this happened for jar inputs only). Cheers, Vlad. |
From: <vl...@tr...> - 2004-07-09 03:49:13
|
Release 2.0.4208 contains minor code refactorings and bug fixes. FEATURE REQUESTS IMPLEMENTED: 976873 instrumenting classloader should define Packages A small enhancement that improves compatibility between emmarun and uninstrumented runtimes. DEFECTS FIXED: 962009 -Demma.properties not implemented 979976 "properties" attribute of <emma> not implemented Although documented in the reference manual, support for setting a block of tool properties via -Demma.properties JVM property was omitted from the first public release. This gap has now been closed. As EMMA acquires more and more settings, users should find it more convenient to be able to externalize their configurations in a properties file (as opposed to setting them one by one) that could be pointed to by -Demma.properties (previously this has been possible only by placing such a file in the classpath). The second issue was not stricly a bug, but it complements the first one when using EMMA in ANT: it is now possible to load a block of properties by specifying properties='...file...' attribute on the top-level <emma> task. These properties cascade down to (and can be overridden by) <instr>, <report>, etc subtasks and their nested elements. |
From: <vl...@tr...> - 2004-06-28 01:45:39
|
Release 2.0.4127 fixes a bug in the implementation of feature request 971176 and significantly improves classloading in EMMA's shutdown hook responsible for coverage data dumping. DEFECTS FIXED: 978671 classloading problem in RT exit hook thread http://sourceforge.net/tracker/index.php?func=detail&aid=978671&group_id=108932&atid=651897 Although not a strictly supported scenario, it occurred to me that I can fix the issues users experience when deploying emma.jar as an application-level (not container-level) lib in a J2EE application (that is, without installing it as a standard JRE extension as required by the documentation). The solution is interesting technically, but has only been tested in a scenario that simulates a J2EE container. I would be most curious to see if it works with WebLogic, Websphere, etc. 979717 Source not linking in EMMA report http://sourceforge.net/tracker/index.php?func=detail&aid=979717&group_id=108932&atid=651897 This corrects an embarrassing mistake in how sample classes without full debug info are listed by the report generators. Unfortunately, the bug in build 4120 made tracking down classes compiled without debug info more difficult than no output at all. I hope this build resolves this issue for good. |