Return-Path: Delivered-To: apmail-incubator-harmony-dev-archive@www.apache.org Received: (qmail 17471 invoked from network); 16 Jun 2006 03:19:49 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 16 Jun 2006 03:19:49 -0000 Received: (qmail 68484 invoked by uid 500); 16 Jun 2006 03:19:47 -0000 Delivered-To: apmail-incubator-harmony-dev-archive@incubator.apache.org Received: (qmail 68434 invoked by uid 500); 16 Jun 2006 03:19:47 -0000 Mailing-List: contact harmony-dev-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: harmony-dev@incubator.apache.org Delivered-To: mailing list harmony-dev@incubator.apache.org Received: (qmail 68422 invoked by uid 99); 16 Jun 2006 03:19:47 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 15 Jun 2006 20:19:47 -0700 X-ASF-Spam-Status: No, hits=-0.0 required=10.0 tests=SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (asf.osuosl.org: domain of mloenko@gmail.com designates 66.249.82.195 as permitted sender) Received: from [66.249.82.195] (HELO wx-out-0102.google.com) (66.249.82.195) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 15 Jun 2006 20:19:45 -0700 Received: by wx-out-0102.google.com with SMTP id s6so418048wxc for ; Thu, 15 Jun 2006 20:19:24 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:to:subject:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references; b=RA1AIs9NWOZZT4xI1k/EFV8mgfnr8htZMI2ZBCwEkuclyFmaEHkkR0+uYhaxaz1rLKDQ4+qin0bLAagDN5hwNvBzIkDgyeJI8TEqGl32mS7km5FQ5y54RR8TQ4AkiPzbl8PwxiI4QGbJM1AksL+54b2TB9gOagw41aYLq53uqH8= Received: by 10.70.14.5 with SMTP id 5mr3279448wxn; Thu, 15 Jun 2006 20:19:22 -0700 (PDT) Received: by 10.70.28.12 with HTTP; Thu, 15 Jun 2006 20:19:22 -0700 (PDT) Message-ID: <906dd82e0606152019h20156879w352c5b06cdf692d4@mail.gmail.com> Date: Fri, 16 Jun 2006 10:19:22 +0700 From: "Mikhail Loenko" To: harmony-dev@incubator.apache.org Subject: Re: [classlib] [testing] java.beans tests In-Reply-To: <2c9597b90606151009n2fa5966eq7bfef063dabcc851@mail.gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <2c9597b90606140526r2fa2ea9bpaf6199a7dd1dea03@mail.gmail.com> <44900BB5.9090505@gmail.com> <2c9597b90606140736l2ddd8057i5ea71ba8108857b4@mail.gmail.com> <2c9597b90606140746k494c5c51yd91e63e367b965b4@mail.gmail.com> <44902502.5060702@gmail.com> <906dd82e0606150531r7fef7a50y115a1bcaaa3fd797@mail.gmail.com> <2c9597b90606151009n2fa5966eq7bfef063dabcc851@mail.gmail.com> X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N A user might have one's own "com.foo.HisStringPersistenceDelegate" extending java.beans.PersistenceDelegate and that class might invoke "protected void initialize()" from the super class. If our and RI's initialize work differently then we are in trouble Thanks, Mikhail 2006/6/16, Alexei Zakharov : > To test RI's private methods you need to know the fact of their > existence at least. > > As for protected methods, I agree in general. We need to test it and > to follow the behavior of RI. But in this particular case with > java.beans.PersistenceDelegate I am not 100% sure this makes much > sense. > > Ok, let's be more specific. About how can we test it. We have the > following picture here: > > <=== > > package java.beans; > public abstract class PersistenceDelegate { > protected void initialize(..) {...} > protected abstract Expression instantiate(...); > ... > } > > package com.blah.blah.beans; > class MyStringPersistenceDelegate extends java.beans.PersistenceDelegate { > protected void initialize(..) { > // does some implementation-specific stuff > } > > protected Expression instantiate(...) { > ... > // returns propriatery representation of String in terms of > // java.beans.Expression > } > } > > package java.beans; > public class Encoder { > public PersistenceDelegate getPersistenceDelegate(Class type) { > if (type.equals(String.class)) { > return new com.blah.blah.beans.MyStringPersistenceDelegate(); > } > ... > } > ... > } > > <=== > > Now we like to understand how user is affected if our implementation > of MyStringPersistenceDelegate differs from RI. The user can do > something like > > Encoder enc = new Encoder(); > PersistenceDelegate pd = enc.getPersistenceDelegate(String.class); > Expression exp = pd.instantiate(...); > > from his/her code. (NOTE: this is the only way the user can be > affected by persistence delegates.) > But, this will work only in two cases: > 1) The user extends MyStringPersistenceDelegate. But since this class > is the RI internal class with arbitrary name this will not work on > Harmony anyway because we most likely use different class names for > internal classes. > 2) The user extends java.beans package with additional class. This can > happen. But this is not a recommended practice. Such a user probably > should know what he/she is doing and be ready to face with problems. > > So I'm not sure if we should care about these cases. > > I will write in the separate message why I don't like RI's > StringPersistenceDelegate and why IMHO Harmony "does things right". > > > 2006/6/15, Mikhail Loenko : > > Sure we need to test protected methods and fields. Moreover we need > > to test private methods either via API or by other means. > > > > Alexei, it would be good if you point to a simple test that shows > > difference in behavior, quote the spec and describe, why you think > > Harmony does things right. > > > > Thanks, > > Mikhail > > > > 2006/6/14, Richard Liang : > > > Alexei Zakharov wrote: > > > > BTW, all questionable methods of PersistenceDelegate interface are > > > > protected rather than public. Do we need to test it at all? > > > > > > > Hello Alexei, > > > > > > IMHO, we need to test the protected methods, which are also part of API. > > > > > > > 2006/6/14, Alexei Zakharov : > > > >> Mikhail, Tim, > > > >> > > > >> > I suggest that you raise a few examples here. > > > >> > > > >> The first example that comes to my mind is the RI's implementation of > > > >> PersistenceDelegate for java.lang.String class. (Persistence delegate > > > >> is a class that manages persistence details of his target class and is > > > >> used by java.beans.XMLEncoder). RI's imeplementation just does nothing > > > >> and returns null there applicable. It seems that RI guys simply > > > >> created a stub class they do not actually use. Most likely they > > > >> embedded String-handling logic in some other place in code. IMHO such > > > >> a decision doesn't fully correspond the idea of persistence delegates > > > >> as a place for persistence-handling logic. > > > >> > > > >> BTW, our StringPersistenceDelegateTest (point 2 in my classification) > > > >> also expects some non-stub behavior from StringPersistenceDelegate. It > > > >> seems that people who have created this test also don't like this > > > >> aspect of the RI's implementation. :) > > > >> > > > >> 2006/6/14, Tim Ellison : > > > >> > Alexei Zakharov wrote: > > > >> > > Hello to everyone, > > > >> > > > > > >> > > I am currently investigating tests for java.beans module. > > > >> > > > > >> > Great. > > > >> > > > > >> > > As far as I > > > >> > > understand there were two separate contributions of java.beans tests > > > >> > > from two different parties. And these contributions were merged into > > > >> > > the single combined test suite we have now in svn. As a result > > > >> > > currently we have about 400 test case failures (excluded) out of > > > >> > > approximately 1200. After spending some time on this I realize > > > >> that we > > > >> > > have two types of issues here: > > > >> > > > > > >> > > 1. Test checks the compliance with very deep detail of RI's > > > >> behavior (that > > > >> > > is not in spec). > > > >> > > 2. Test expects the behavior that differs from the RI's behavior > > > >> as well as > > > >> > > from our implementation's behavior. > > > >> > > > > > >> > > As for point 1, I'm unsure here. Do we really need to be completely > > > >> > > identical to the RI in terms of public methods behavior? Some RI > > > >> > > decisions are strange. > > > >> > > > > >> > We need to work the same (possibly unspecified) way as the reference > > > >> > implementation to ensure compatibility for Java apps. An example of > > > >> > some areas we already thought about are listed here [1]. > > > >> > > > > >> > If the decision is strange so that you think it is bug then we may > > > >> > choose to depart from the RI's behavior after discussion on this list, > > > >> > but if it is wrong because you disagree with the approach, then I'm > > > >> > afraid that compatibility wins . I suggest that you raise a few > > > >> > examples here. > > > >> > > > > >> > > For point 2, I believe we should rewrite or delete such tests. > > > >> > > > > >> > Agreed -- please indicate with your JIRA patch why you think they are > > > >> > wrong, and that will help people review you rewrite/deletion request. > > > >> > > > > >> > > Thoughts, suggestions? > > > >> > > > > >> > I'm happy that you are looking into this, and look forward to your > > > >> patches! > > > >> > > > > >> > Regards, > > > >> > Tim > > > >> > > > >> -- > > > >> Alexei Zakharov, > > > >> Intel Middleware Product Division > > > >> > > > > > > > > > > > > > > -- > > > Richard Liang > > > China Software Development Lab, IBM > > > > > > > > > > > > --------------------------------------------------------------------- > > > Terms of use : http://incubator.apache.org/harmony/mailing.html > > > To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org > > > For additional commands, e-mail: harmony-dev-help@incubator.apache.org > > > > > > > > > > --------------------------------------------------------------------- > > Terms of use : http://incubator.apache.org/harmony/mailing.html > > To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org > > For additional commands, e-mail: harmony-dev-help@incubator.apache.org > > > > > > > -- > Alexei Zakharov, > Intel Middleware Product Division > > --------------------------------------------------------------------- > Terms of use : http://incubator.apache.org/harmony/mailing.html > To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org > For additional commands, e-mail: harmony-dev-help@incubator.apache.org > > --------------------------------------------------------------------- Terms of use : http://incubator.apache.org/harmony/mailing.html To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org For additional commands, e-mail: harmony-dev-help@incubator.apache.org