There are 4 more tests that use
EventFilters.filter() method and not all of them need
to be changed to call EventFilters
.filtered(Event event, String typeName).
Specifically,
vmTestbase/nsk/jdi/ExceptionEvent/exception/exception001/TestDescription.java
and
vmTestbase/nsk/jdi/ExceptionEvent/catchLocation/location001/TestDescription.java
tests expect to receive an ExceptionEvent for
NumberFormatException exception and the location of
this event happens to be not the debuggee class (
java.lang.Integer:652). The tests pass now and
changing them to use EventFilters .filtered(event, debugeeName) makes
them fail.
Please review the updated fix the
uses this approach.
Hi Daniil,
It looks good in general.
Some minor comments though.
http://cr.openjdk.java.net/~dtitov/8203809/webrev.01/test/hotspot/jtreg/vmTestbase/nsk/share/jdi/EventFilters.java.udiff.html
+
+ // Filters out events with location not matching the given type.
+ public static boolean filteredByLocation(Event event, String typeName) {
+ if (event instanceof Locatable) {
+ Location location = ((Locatable) event).location();
+ if (location != null) {
+ ReferenceType declaringType = location.declaringType();
+ if (declaringType != null && typeName.equals(declaringType.name())) {
+ return false;
+ }
+ }
+ }
+ return true;
+ }
+
+ // Filters out internal JFR events and events with location not matching
+ // the given type.
+ public static boolean filtered(Event event, String typeName) {
+
+ return filtered(event) || filteredByLocation(event,typeName);
+
+ }
+
+
There are a couple of extra empty lines.
I'm suggesting to get rid of the
second method and rename filteredByLocation()
to filtered():
+ // Filters out events with location not matching the given type.
+ public static boolean filtered(Event event, String typeName) {
+ if (event instanceof Locatable) {
+ Location location = ((Locatable) event).location();
+ if (location != null) {
+ ReferenceType declaringType = location.declaringType();
+ if (declaringType != null && typeName.equals(declaringType.name())) {
+ return false;
+ }
+ }
+ }
+ return true;
+ }
As I understand, it should filter out the events
post on the JFR threads.
Please, correct me if I'm wrong.
My view is that we may want to get rid of the
filtered(Event event) method and
convert all the tests to use the filtered(Event
event, String typeName) instead.
Thank you a lot for taking care
about these issues!
Thanks,
Serguei
On 6/11/18 17:52, Daniil Titov wrote: