accumulo-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <>
Subject [jira] [Commented] (ACCUMULO-626) create an iterator fuzz tester
Date Mon, 09 Nov 2015 18:42:11 GMT


ASF GitHub Bot commented on ACCUMULO-626:

Github user wjsl commented on a diff in the pull request:
    --- Diff: iterator-test-harness/src/main/java/org/apache/accumulo/iteratortest/
    @@ -0,0 +1,44 @@
    + * Licensed to the Apache Software Foundation (ASF) under one or more
    + * contributor license agreements.  See the NOTICE file distributed with
    + * this work for additional information regarding copyright ownership.
    + * The ASF licenses this file to you under the Apache License, Version 2.0
    + * (the "License"); you may not use this file except in compliance with
    + * the License.  You may obtain a copy of the License at
    + *
    + *
    + *
    + * Unless required by applicable law or agreed to in writing, software
    + * distributed under the License is distributed on an "AS IS" BASIS,
    + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    + * See the License for the specific language governing permissions and
    + * limitations under the License.
    + */
    +package org.apache.accumulo.iteratortest;
    +import java.util.Objects;
    +import org.apache.accumulo.core.iterators.SortedKeyValueIterator;
    +import org.apache.accumulo.core.iterators.SortedMapIterator;
    +import org.apache.accumulo.core.iterators.system.ColumnFamilySkippingIterator;
    +import org.apache.accumulo.iteratortest.testcases.IteratorTestCase;
    + * A collection of methods that are helpful to the development of {@link IteratorTestCase}s.
    + */
    +public class IteratorTestUtil {
    +  public static SortedKeyValueIterator<Key,Value> instantiateIterator(IteratorTestInput
input) {
    +    try {
    +      return Objects.requireNonNull(input.getIteratorClass()).newInstance();
    +    } catch (InstantiationException | IllegalAccessException e) {
    +      throw new RuntimeException(e);
    +    }
    +  }
    +  public static SortedKeyValueIterator<Key,Value> createSource(IteratorTestInput
input) {
    +    return new ColumnFamilySkippingIterator(new SortedMapIterator(Objects.requireNonNull(input).getInput()));
    --- End diff --
    Might be good to make another iterator here (or wrapping the SMI) that re-uses the Key
and Value instances returned by the getters. Storing the output of a source in a list or map
without making a copy is a common pitfall.
    I had a small iterator benchmark that I modified to printout the identify of each Key
and Value, and currently notice the same Value instance has the potential to be re-used. I
will try to verify if Keys exhibit the same behavior-- I have heard anecdotes that they do.

> create an iterator fuzz tester
> ------------------------------
>                 Key: ACCUMULO-626
>                 URL:
>             Project: Accumulo
>          Issue Type: New Feature
>          Components: test
>            Reporter: Eric Newton
>            Assignee: Josh Elser
> Users often write iterators without fully understanding its limits and lifetime. Accumulo
should have an iterator fuzz-tester which will take user data and run the iterator under extreme
conditions.  For example, it should re-create and re-seek the iterator with every key returned.
 It could automatically compare results of such a run with the naive run, which seeks to the
beginning and scans all the data.

This message was sent by Atlassian JIRA

View raw message