Request for review : 7121314 : Behavior mismatch between AbstractCollection.toArray(T[] ) and its spec

Sean Chou zhouyx at linux.vnet.ibm.com
Mon Mar 26 05:02:16 UTC 2012


Hi Ulf,

    Comment inlined.

On Sat, Mar 24, 2012 at 5:09 AM, Ulf Zibis <Ulf.Zibis at gmx.de> wrote:

> Hi Sean,
>
> Am 23.03.2012 07:45, schrieb Sean Chou:
>
>> Hi Ulf,
>>
>>    I'm sorry I didn't quite get your testcase.
>>
> This is not a testcase, just a draft of an additionally more flexible test
> object to replace TConcurrentHashMap/2.
>
>
>  Will you please provide a jtreg style testcase with main method ?
>>
> Well, as I'm missing your agreement, that David's test implementation
> doesn't guarantee to test the right toArray method of AbstractCollection as
> I explained before, I'm afraid that additional effort would be for garbage.
>
Every testcase or fix goes this way, like the first testcase I provided. If
your suggestion is valuable, I don't think it will be wasted.


>
> Aside, as the instantiation of (several) ConcurrentHashMap subclassed test
> objects seems more expensive, I believe, my simple TestCollection would
> increase the performance of the testcases.

What's the exact problem you want to fix in this case?



>
>
>   I was thinking you were worried by the comment "// inherits from
>> AbstractCollection.toArray()" and "map2", if that was the case, I would
>> like to modify.
>>
> This is additionally true, but not my main issue, as later to me it turned
> out, that "// inherits from AbstractCollection.toArray()" is not enough to
> guarantee that the right toArray method is actually tested, aside to look
> not obvious IMO.
>
If you really have this concern, you should provide your testcase !



>
> -Ulf
>
> P.S.: better rename to:
>    void setPseudoConcurrentSizeCourse(**int... sizes) {...}
>
>
>
>> On Fri, Mar 23, 2012 at 5:57 AM, Ulf Zibis <Ulf.Zibis at gmx.de <mailto:
>> Ulf.Zibis at gmx.de>> wrote:
>>
>>    Hi Sean,
>>
>>    bad news ;-) ...
>>
>>    Am 22.03.2012 08:28, schrieb Sean Chou:
>>
>>        Hi Ulf,
>>
>>           I'm glad you agreed my suggestion.
>>
>>        To all:
>>           Can this patch be committed as it has been reviewed by David
>> Holmes and Mike Duigou,
>>        and Ulf also says agreed  ?
>>
>>
>>    I agree with your implementation of AbstractCollection, but NOT with
>> the test.
>>    For correct testing I suggest to use:
>>
>>    /**
>>     *
>>     * @author Ulf Zibis
>>     */
>>    public class TestCollection<E> extends AbstractCollection<E> {
>>
>>       private E[] elements;
>>       private int[] sizes;
>>       private int nextSize;
>>
>>       public TestCollection(E[] elements) {
>>           this.elements = elements;
>>           setConcurrentSizeCourse(null);
>>       }
>>
>>       void setConcurrentSizeCourse(int... sizes) {
>>           this.sizes = sizes == null ? new int[]{elements.length} : sizes;
>>           nextSize = 0;
>>       }
>>
>>       @Override
>>       public int size() {
>>           return sizes[nextSize == sizes.length-1 ? nextSize :
>> nextSize++];
>>       }
>>
>>       @Override
>>       public Iterator<E> iterator() {
>>           return new Iterator<>() {
>>
>>               int pos = 0;
>>
>>               public boolean hasNext() {
>>                   return pos < sizes[nextSize];
>>               }
>>
>>               public E next() {
>>                   return elements[pos++];
>>               }
>>
>>               public void remove() {
>>                   throw new UnsupportedOperationException(**"Not
>> supported yet.");
>>               }
>>           };
>>       }
>>    }
>>
>>    -Ulf
>>
>>
>>
>>
>> --
>> Best Regards,
>> Sean Chou
>>
>>


-- 
Best Regards,
Sean Chou



More information about the core-libs-dev mailing list