Which line is line 89?

Also it's preferable to do:
assertEquals(3, versionMap.size());
vs:
assertTrue(versionMap.size() == 3);

since the error messages from the former are more descriptive
"expected 3 was 2".

looking at the code it looks like it should work...

On Wed, Feb 23, 2011 at 11:07 PM, 陈加俊 <[email protected]> wrote:
>  This is my test case ,but I get NPE some times .
>
> java.lang.NullPointerException
> at
> com.uuwatch.idm.hbase.GetRowVersionsTest.testGetRowMultipleVersions(GetRowVersionsTest.java:89)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
> at
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
> at
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
> at
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
> at
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
> at
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
> at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> at
> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)
> at
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
>
> public class GetRowVersionsTest extends TestCase
> {
>    private final byte[] family    = Bytes.toBytes("log");
>
>    private final byte[] qualifier = Bytes.toBytes("siteUrl");
>
>    private final byte[] rowKey    = Bytes.toBytes(1);
>
>    private final HTable table     =
> IDMHBaseConfiguration.getTable(BigTableName.getSite());
>
>    private final long   ts1       = 1298529542218L;
>
>    private final long   ts2       = ts1 + 100;
>
>    private final long   ts3       = ts1 + 100;
>
>    private final byte[] value1    = Bytes.toBytes("value1");
>
>    private final byte[] value2    = Bytes.toBytes("value2");
>
>    private final byte[] value3    = Bytes.toBytes("value3");
>
>    private void insert(final long ts, final byte[] value) throws
> IOException
>    {
>        final Put put = new Put(rowKey);
>        put.add(family, qualifier, ts, value);
>        table.put(put);
>    }
>
>    private void sleep()
>    {
>        try
>        {
>            Thread.sleep(1000);
>        }
>        catch (final InterruptedException e)
>        {
>            e.printStackTrace();
>        }
>    }
>
>    @Test
>    public void testGetRowMultipleVersions() throws Exception
>    {
>        insert(ts1, value1);
>        sleep();
>        insert(ts2, value2);
>        sleep();
>        insert(ts3, value3);
>        sleep();
>
>        // check getRow with multiple versions
>        final Get get = new Get(rowKey);
>        get.setMaxVersions();
>        final Result r = table.get(get);
>        final NavigableMap<byte[], NavigableMap<byte[], NavigableMap<Long,
> byte[]>>> map = r.getMap();
>        final NavigableMap<byte[], NavigableMap<Long, byte[]>> familyMap =
> map.get(family);
>        final NavigableMap<Long, byte[]> versionMap =
> familyMap.get(qualifier);
>        for (final Map.Entry<Long, byte[]> entry : versionMap.entrySet())
>        {
>            System.err.println(entry.getKey());
>            System.err.println(Bytes.toString(entry.getValue()));
>        }
>        //        assertTrue(versionMap.size() == 3);
>
>        //        assertTrue(value1 == versionMap.get(ts1));
>        //        assertTrue(value2 == versionMap.get(ts2));
>        //        assertTrue(value3 == versionMap.get(ts3));
>
>        //        table.delete(new Delete(rowKey));
>        //        assertTrue(table.get(get).size() == 0);
>        //        table.close();
>    }
> }
>
>
> On Thu, Feb 24, 2011 at 11:07 AM, Tatsuya Kawano <[email protected]>wrote:
>
>> Hi Jiajun,
>>
>> Make sure you don't have the same timestamp on every versions of puts; try
>> to put Thread.sleep() in your test(?) codes when necessary.
>>
>> You might not want to specify the timestamp by yourself but want to let
>> HBase to store appropriate ones.
>>
>> --
>> Tatsuya Kawano (Mr.)
>> Tokyo, Japan
>>
>>
>> On Feb 24, 2011, at 11:30 AM, Ryan Rawson <[email protected]> wrote:
>>
>> > There are test cases for this, the functionality DOES work, something is
>> up...
>> >
>> > Without full code and full descriptions of your tables, debugging is
>> > harder than it needs to be.  It's probably a simple typo or something,
>> > check your code and table descriptions again. Many people rely on the
>> > multi version query capabilities and it is very unlikely to be broken
>> > in a released version of hbase.
>> >
>> > On Wed, Feb 23, 2011 at 6:27 PM, 陈加俊 <[email protected]> wrote:
>> >>  final List<KeyValue> list = result.list();
>> >>           for (final KeyValue it : list)
>> >>           {
>> >>               System.out.println(Bytes.toString(it.getKey()));
>> >>               System.out.println(Bytes.toString(it.getValue()));
>> >>           }
>> >> I can only get the last version!  why ? Is there any testcase in Hbase?
>> >>
>> >> On Thu, Feb 24, 2011 at 9:56 AM, 陈加俊 <[email protected]> wrote:
>> >>
>> >>> /**
>> >>>   * Create a sorted list of the KeyValue's in this result.
>> >>>   *
>> >>>   * @return The sorted list of KeyValue's.
>> >>>   */
>> >>>  public List<KeyValue> list() {
>> >>>    if(this.kvs == null) {
>> >>>      readFields();
>> >>>    }
>> >>>    return isEmpty()? null: Arrays.asList(sorted());
>> >>>  }
>> >>>
>> >>> I will try it . Thank you very much!
>> >>>
>> >>> On Thu, Feb 24, 2011 at 9:45 AM, Buttler, David <[email protected]>
>> wrote:
>> >>>
>> >>>> Result.list() ?
>> >>>> Putting the hbase source into your IDE of choice (yay Eclipse!) is
>> really
>> >>>> helpful
>> >>>>
>> >>>> Dave
>> >>>>
>> >>>>
>> >>>> -----Original Message-----
>> >>>> From: 陈加俊 [mailto:[email protected]]
>> >>>> Sent: Wednesday, February 23, 2011 5:42 PM
>> >>>> To: [email protected]
>> >>>> Cc: Buttler, David
>> >>>> Subject: Re: I can't get many versions of the specified column,but
>> only
>> >>>> get the latest version of the specified column
>> >>>>
>> >>>> Thank you David !
>> >>>>
>> >>>> I alter the table schema as follow:
>> >>>>
>> >>>>> alter 'cjjIndexPageModify', {NAME => 'log' , VERSIONS => 5 , METHOD
>> =>
>> >>>> 'add'}
>> >>>>
>> >>>> How to iterate over KeyValues?  which method in Result?
>> >>>>
>> >>>> On Thu, Feb 24, 2011 at 9:27 AM, Buttler, David <[email protected]>
>> >>>> wrote:
>> >>>>
>> >>>>> What is your table schema set to?  By default it holds 3 versions.
>> >>>>> Also, you might iterating over KeyValues instead of using the Map
>> since
>> >>>> you
>> >>>>> don't really care about the organization, just the time.
>> >>>>>
>> >>>>> Dave
>> >>>>>
>> >>>>> -----Original Message-----
>> >>>>> From: 陈加俊 [mailto:[email protected]]
>> >>>>> Sent: Wednesday, February 23, 2011 5:22 PM
>> >>>>> To: [email protected]
>> >>>>> Cc: Stack
>> >>>>> Subject: Re: I can't get many versions of the specified column,but
>> only
>> >>>> get
>> >>>>> the latest version of the specified column
>> >>>>>
>> >>>>> I execute it five times at diffrent time.
>> >>>>>
>> >>>>> //put data by version
>> >>>>>
>> >>>>> final Put p = new Put(key); // key
>> >>>>> final long ts = System.currentTimeMillis();
>> >>>>>      p.add(FAMILY, q1, ts,v1);
>> >>>>>      p.add(FAMILY, q2, ts,v2);
>> >>>>>      p.add(FAMILY, q3, ts,v3);
>> >>>>>     table.put(p);
>> >>>>>
>> >>>>> So I can get five versions ,right?
>> >>>>>
>> >>>>> On Thu, Feb 24, 2011 at 2:06 AM, Stack <[email protected]> wrote:
>> >>>>>
>> >>>>>> What do you get for a result?
>> >>>>>>
>> >>>>>> You are only entering a single version of each column, a single
>> >>>>>> version of FAMILY:q1, a single version FAMILY:q2, and a FAMILY:q3.
>> >>>>>>
>> >>>>>> St.Ack
>> >>>>>>
>> >>>>>> On Wed, Feb 23, 2011 at 2:54 AM, 陈加俊 <[email protected]> wrote:
>> >>>>>>> I can't get many versions of the specified column,but only get the
>> >>>>> latest
>> >>>>>>> version of the specified column. Is there anyone  help me?
>> >>>>>>>
>> >>>>>>> //put data by version
>> >>>>>>>
>> >>>>>>> final Put p = new Put(key); // key
>> >>>>>>> final long ts = System.currentTimeMillis();
>> >>>>>>>      p.add(FAMILY, q1, ts,v1);
>> >>>>>>>      p.add(FAMILY, q2, ts,v2);
>> >>>>>>>      p.add(FAMILY, q3, ts,v3);
>> >>>>>>>
>> >>>>>>>     table.put(p);
>> >>>>>>>
>> >>>>>>>
>> >>>>>>> //get all versions of data
>> >>>>>>>
>> >>>>>>> final Get get = new Get(key);
>> >>>>>>>          get.addFamily(FAMILY);
>> >>>>>>>          get.setMaxVersions(10);
>> >>>>>>>          final Result result = htable.get(get);
>> >>>>>>>
>> >>>>>>>          final NavigableMap<byte[], NavigableMap<byte[],
>> >>>>>>> NavigableMap<Long, byte[]>>> map = result.getMap();
>> >>>>>>>          final Set<Entry<byte[], NavigableMap<byte[],
>> >>>>>>> NavigableMap<Long, byte[]>>>> entrySet = map.entrySet();
>> >>>>>>>          final Iterator<Entry<byte[], NavigableMap<byte[],
>> >>>>>>> NavigableMap<Long, byte[]>>>> iterator = entrySet
>> >>>>>>>                  .iterator();
>> >>>>>>>          while (iterator.hasNext())
>> >>>>>>>          {
>> >>>>>>>              final Entry<byte[], NavigableMap<byte[],
>> >>>>>>> NavigableMap<Long, byte[]>>> next = iterator.next();
>> >>>>>>>              System.out.println(Bytes.toString(next.getKey()));
>> >>>>> //family
>> >>>>>>>              for (final Entry<byte[], NavigableMap<Long, byte[]>>
>> >>>>>>> item : next.getValue().entrySet())
>> >>>>>>>              {
>> >>>>>>>                  System.out.println(Bytes.toString(item.getKey()));
>> >>>>>>>                  for (final Entry<Long, byte[]> _item :
>> >>>>>>> item.getValue().entrySet())
>> >>>>>>>                  {
>> >>>>>>>                      System.out.println(_item.getKey()); //q
>> >>>>>>>
>> >>>>>> System.out.println(Bytes.toString(_item.getValue()));
>> >>>>>>> //value
>> >>>>>>>                  }
>> >>>>>>>              }
>> >>>>>>>
>> >>>>>>>          }
>> >>>>>>>
>> >>>>>>> --
>> >>>>>>> Thanks & Best regards
>> >>>>>>> jiajun
>> >>>>>>>
>> >>>>>>
>> >>>>>
>> >>>>>
>> >>>>>
>> >>>>> --
>> >>>>> Thanks & Best regards
>> >>>>> jiajun
>> >>>>>
>> >>>>
>> >>>>
>> >>>>
>> >>>> --
>> >>>> Thanks & Best regards
>> >>>> jiajun
>> >>>>
>> >>>
>> >>>
>> >>>
>> >>> --
>> >>> Thanks & Best regards
>> >>> jiajun
>> >>>
>> >>>
>> >>
>> >>
>> >> --
>> >> Thanks & Best regards
>> >> jiajun
>> >>
>>
>
>
>
> --
> Thanks & Best regards
> jiajun
>

Reply via email to