View Javadoc

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *     http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing, software
13   * distributed under the License is distributed on an "AS IS" BASIS,
14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   * See the License for the specific language governing permissions and
16   * limitations under the License.
17   */
18  
19  package org.apache.hadoop.hbase.codec.prefixtree.row.data;
20  
21  import java.io.ByteArrayOutputStream;
22  import java.io.IOException;
23  import java.util.List;
24  
25  import org.apache.hadoop.hbase.KeyValue;
26  import org.apache.hadoop.hbase.KeyValueTestUtil;
27  import org.apache.hadoop.hbase.codec.prefixtree.encode.PrefixTreeEncoder;
28  import org.apache.hadoop.hbase.codec.prefixtree.encode.column.ColumnNodeWriter;
29  import org.apache.hadoop.hbase.codec.prefixtree.encode.row.RowNodeWriter;
30  import org.apache.hadoop.hbase.codec.prefixtree.encode.tokenize.TokenizerNode;
31  import org.apache.hadoop.hbase.codec.prefixtree.row.BaseTestRowData;
32  import org.apache.hadoop.hbase.util.Bytes;
33  
34  import com.google.common.collect.Lists;
35  
36  /*
37   * test different timestamps
38   * 
39   * http://pastebin.com/7ks8kzJ2
40   * http://pastebin.com/MPn03nsK
41   */
42  public class TestRowDataUrlsExample extends BaseTestRowData{
43  
44    static String TENANT_ID = Integer.toString(95322);
45    static String APP_ID = Integer.toString(12);
46    static List<String> URLS = Lists.newArrayList(
47        "com.dablog/2011/10/04/boating", 
48        "com.dablog/2011/10/09/lasers", 
49        "com.jamiesrecipes", //this nub helped find a bug
50        "com.jamiesrecipes/eggs");
51    static String FAMILY = "hits";
52    static List<String> BROWSERS = Lists.newArrayList(
53        "Chrome", "IE8", "IE9beta");//, "Opera", "Safari");
54  	static long TIMESTAMP = 1234567890;
55  
56  	static int MAX_VALUE = 50;
57  
58  	static List<KeyValue> kvs = Lists.newArrayList();
59  	static{
60  		for(String rowKey : URLS){
61  			for(String qualifier : BROWSERS){
62  			  KeyValue kv = new KeyValue(
63  						Bytes.toBytes(rowKey), 
64  						Bytes.toBytes(FAMILY), 
65  						Bytes.toBytes(qualifier), 
66  						TIMESTAMP, 
67  						KeyValue.Type.Put, 
68  						Bytes.toBytes("VvvV"));
69  				kvs.add(kv);
70  			}
71  		}
72  	}
73  
74  	/**
75  	 * Used for generating docs.
76  	 */
77  	public static void main(String... args) throws IOException{
78      System.out.println("-- inputs --");
79      System.out.println(KeyValueTestUtil.toStringWithPadding(kvs, true));
80  		ByteArrayOutputStream os = new ByteArrayOutputStream(1<<20);
81      PrefixTreeEncoder encoder = new PrefixTreeEncoder(os, false);
82  
83      for(KeyValue kv : kvs){
84        encoder.write(kv);
85      }
86      encoder.flush();
87  
88      System.out.println("-- qualifier SortedPtBuilderNodes --");
89      for(TokenizerNode tokenizer : encoder.getQualifierWriter().getNonLeaves()){
90        System.out.println(tokenizer);
91      }
92      for(TokenizerNode tokenizerNode : encoder.getQualifierWriter().getLeaves()){
93        System.out.println(tokenizerNode);
94      }
95  
96      System.out.println("-- qualifier PtColumnNodeWriters --");
97      for(ColumnNodeWriter writer : encoder.getQualifierWriter().getColumnNodeWriters()){
98        System.out.println(writer);
99      }
100 
101     System.out.println("-- rowKey SortedPtBuilderNodes --");
102     for(TokenizerNode tokenizerNode : encoder.getRowWriter().getNonLeaves()){
103       System.out.println(tokenizerNode);
104     }
105     for(TokenizerNode tokenizerNode : encoder.getRowWriter().getLeaves()){
106       System.out.println(tokenizerNode);
107     }
108 
109     System.out.println("-- row PtRowNodeWriters --");
110     for(RowNodeWriter writer : encoder.getRowWriter().getNonLeafWriters()){
111       System.out.println(writer);
112     }
113     for(RowNodeWriter writer : encoder.getRowWriter().getLeafWriters()){
114       System.out.println(writer);
115     }
116 
117     System.out.println("-- concatenated values --");
118     System.out.println(Bytes.toStringBinary(encoder.getValueByteRange().deepCopyToNewArray()));
119 	}
120 
121 	@Override
122 	public List<KeyValue> getInputs() {
123 		return kvs;
124 	}
125 
126 }