| package org.apache.rya.accumulo.documentIndex; |
| |
| /* |
| * 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 |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * 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. |
| */ |
| |
| import java.util.Collection; |
| import java.util.List; |
| import java.util.Map; |
| |
| import org.apache.accumulo.core.client.AccumuloException; |
| import org.apache.accumulo.core.client.AccumuloSecurityException; |
| import org.apache.accumulo.core.client.BatchWriter; |
| import org.apache.accumulo.core.client.Connector; |
| import org.apache.accumulo.core.client.IteratorSetting; |
| import org.apache.accumulo.core.client.Scanner; |
| import org.apache.accumulo.core.client.TableExistsException; |
| import org.apache.accumulo.core.client.mock.MockInstance; |
| import org.apache.accumulo.core.data.Key; |
| import org.apache.accumulo.core.data.Mutation; |
| import org.apache.accumulo.core.data.Range; |
| import org.apache.accumulo.core.data.Value; |
| import org.apache.accumulo.core.security.Authorizations; |
| import org.apache.hadoop.io.Text; |
| import org.apache.rya.accumulo.AccumuloRdfConfiguration; |
| import org.apache.rya.accumulo.RyaTableMutationsFactory; |
| import org.apache.rya.api.domain.RyaStatement; |
| import org.apache.rya.api.domain.RyaType; |
| import org.apache.rya.api.domain.RyaURI; |
| import org.apache.rya.api.resolver.RdfToRyaConversions; |
| import org.apache.rya.api.resolver.RyaContext; |
| import org.apache.rya.api.resolver.RyaToRdfConversions; |
| import org.apache.rya.api.resolver.RyaTripleContext; |
| import org.apache.rya.indexing.accumulo.entity.EntityCentricIndex; |
| import org.eclipse.rdf4j.model.vocabulary.XMLSchema; |
| import org.eclipse.rdf4j.query.MalformedQueryException; |
| import org.eclipse.rdf4j.query.QueryEvaluationException; |
| import org.eclipse.rdf4j.query.TupleQueryResultHandlerException; |
| import org.eclipse.rdf4j.query.algebra.StatementPattern; |
| import org.eclipse.rdf4j.query.algebra.TupleExpr; |
| import org.eclipse.rdf4j.query.algebra.helpers.StatementPatternCollector; |
| import org.eclipse.rdf4j.query.parser.ParsedQuery; |
| import org.eclipse.rdf4j.query.parser.sparql.SPARQLParser; |
| import org.eclipse.rdf4j.repository.RepositoryException; |
| import org.junit.Assert; |
| import org.junit.Before; |
| import org.junit.Test; |
| |
| import com.google.common.primitives.Bytes; |
| |
| |
| public class DocumentIndexIntersectingIteratorTest { |
| |
| |
| |
| private Connector accCon; |
| String tablename = "table"; |
| |
| |
| @Before |
| public void init() throws RepositoryException, TupleQueryResultHandlerException, QueryEvaluationException, |
| MalformedQueryException, AccumuloException, AccumuloSecurityException, TableExistsException { |
| |
| accCon = new MockInstance().getConnector("root", "".getBytes()); |
| accCon.tableOperations().create(tablename); |
| |
| } |
| |
| @Test |
| public void testBasicColumnObj() throws Exception { |
| |
| BatchWriter bw = null; |
| |
| bw = accCon.createBatchWriter(tablename, 500L * 1024L * 1024L, Long.MAX_VALUE, 30); |
| |
| for (int i = 0; i < 100; i++) { |
| |
| Mutation m = new Mutation(new Text("" + i)); |
| m.put(new Text("cf"), new Text(null + "\u0000" + "obj" + "\u0000" + "cq"), new Value(new byte[0])); |
| m.put(new Text("cF"), new Text(null + "\u0000" +"obj" + "\u0000" + "cQ"), new Value(new byte[0])); |
| |
| if (i == 30 || i == 60) { |
| m.put(new Text("CF"), new Text(null + "\u0000" +"obj" + "\u0000" + "CQ"), new Value(new byte[0])); |
| } |
| |
| bw.addMutation(m); |
| |
| } |
| |
| DocumentIndexIntersectingIterator dii = new DocumentIndexIntersectingIterator(); |
| TextColumn tc1 = new TextColumn(new Text("cf"), new Text("obj" + "\u0000" + "cq" )); |
| TextColumn tc2 = new TextColumn(new Text("cF"), new Text("obj" + "\u0000" + "cQ" )); |
| TextColumn tc3 = new TextColumn(new Text("CF"), new Text("obj" + "\u0000" + "CQ" )); |
| |
| TextColumn[] tc = new TextColumn[3]; |
| tc[0] = tc1; |
| tc[1] = tc2; |
| tc[2] = tc3; |
| |
| IteratorSetting is = new IteratorSetting(30, "fii", DocumentIndexIntersectingIterator.class); |
| |
| dii.setColumnFamilies(is, tc); |
| |
| Scanner scan = accCon.createScanner(tablename, new Authorizations("auths")); |
| scan.addScanIterator(is); |
| |
| int results = 0; |
| System.out.println("************************Test 1****************************"); |
| for (Map.Entry<Key, Value> e : scan) { |
| System.out.println(e); |
| results++; |
| } |
| |
| |
| Assert.assertEquals(2, results); |
| |
| |
| |
| |
| } |
| |
| |
| |
| |
| |
| |
| |
| @Test |
| public void testBasicColumnObjPrefix() throws Exception { |
| |
| BatchWriter bw = null; |
| |
| bw = accCon.createBatchWriter(tablename, 500L * 1024L * 1024L, Long.MAX_VALUE, 30); |
| |
| for (int i = 0; i < 100; i++) { |
| |
| Mutation m = new Mutation(new Text("" + i)); |
| m.put(new Text("cf"), new Text(null + "\u0000" +"obj" + "\u0000" + "cq" ), new Value(new byte[0])); |
| m.put(new Text("cF"), new Text(null + "\u0000" +"obj" + "\u0000" + "cQ"), new Value(new byte[0])); |
| |
| if (i == 30 || i == 60) { |
| m.put(new Text("CF"), new Text(null + "\u0000" +"obj" + "\u0000" + "CQ" ), new Value(new byte[0])); |
| } |
| |
| |
| |
| bw.addMutation(m); |
| |
| } |
| |
| DocumentIndexIntersectingIterator dii = new DocumentIndexIntersectingIterator(); |
| TextColumn tc1 = new TextColumn(new Text("cf"), new Text("obj" + "\u0000" + "cq")); |
| TextColumn tc2 = new TextColumn(new Text("cF"), new Text("obj" + "\u0000" + "cQ")); |
| TextColumn tc3 = new TextColumn(new Text("CF"), new Text("obj")); |
| |
| TextColumn[] tc = new TextColumn[3]; |
| tc[0] = tc1; |
| tc[1] = tc2; |
| tc[2] = tc3; |
| |
| tc3.setIsPrefix(true); |
| |
| IteratorSetting is = new IteratorSetting(30, "fii", DocumentIndexIntersectingIterator.class); |
| |
| dii.setColumnFamilies(is, tc); |
| |
| Scanner scan = accCon.createScanner(tablename, new Authorizations("auths")); |
| scan.addScanIterator(is); |
| |
| int results = 0; |
| System.out.println("************************Test 2****************************"); |
| for (Map.Entry<Key, Value> e : scan) { |
| System.out.println(e); |
| results++; |
| } |
| |
| |
| Assert.assertEquals(2, results); |
| |
| |
| |
| |
| } |
| |
| |
| |
| |
| @Test |
| public void testBasicColumnSubjObjPrefix() throws Exception { |
| |
| BatchWriter bw = null; |
| |
| bw = accCon.createBatchWriter(tablename, 500L * 1024L * 1024L, Long.MAX_VALUE, 30); |
| |
| for (int i = 0; i < 100; i++) { |
| |
| Mutation m = new Mutation(new Text("" + i)); |
| m.put(new Text("cf"), new Text(null + "\u0000" +"obj" + "\u0000" + "cq"), new Value(new byte[0])); |
| m.put(new Text("cF"), new Text(null + "\u0000" +"obj" + "\u0000" + "cQ"), new Value(new byte[0])); |
| |
| if (i == 30 ) { |
| m.put(new Text("CF"), new Text(null + "\u0000" +"obj" + "\u0000" + "CQ"), new Value(new byte[0])); |
| } |
| |
| if (i == 60) { |
| m.put(new Text("CF"), new Text(null + "\u0000" +"subj" + "\u0000" + "CQ"), new Value(new byte[0])); |
| } |
| |
| |
| |
| |
| bw.addMutation(m); |
| |
| } |
| |
| DocumentIndexIntersectingIterator dii = new DocumentIndexIntersectingIterator(); |
| TextColumn tc1 = new TextColumn(new Text("cf"), new Text("obj" + "\u0000" + "cq" )); |
| TextColumn tc2 = new TextColumn(new Text("cF"), new Text("obj" + "\u0000" + "cQ")); |
| TextColumn tc3 = new TextColumn(new Text("CF"), new Text("subj")); |
| |
| TextColumn[] tc = new TextColumn[3]; |
| tc[0] = tc1; |
| tc[1] = tc2; |
| tc[2] = tc3; |
| |
| tc3.setIsPrefix(true); |
| |
| IteratorSetting is = new IteratorSetting(30, "fii", DocumentIndexIntersectingIterator.class); |
| |
| dii.setColumnFamilies(is, tc); |
| |
| Scanner scan = accCon.createScanner(tablename, new Authorizations("auths")); |
| scan.addScanIterator(is); |
| |
| int results = 0; |
| System.out.println("************************Test 3****************************"); |
| for (Map.Entry<Key, Value> e : scan) { |
| System.out.println(e); |
| results++; |
| } |
| |
| |
| Assert.assertEquals(1, results); |
| |
| |
| |
| |
| } |
| |
| |
| |
| |
| @Test |
| public void testOneHundredColumnSubjObj() throws Exception { |
| |
| BatchWriter bw = null; |
| |
| bw = accCon.createBatchWriter(tablename, 500L * 1024L * 1024L, Long.MAX_VALUE, 30); |
| |
| for (int i = 0; i < 100; i++) { |
| |
| Mutation m = new Mutation(new Text("" + i)); |
| |
| for(int j= 0; j < 100; j++) { |
| m.put(new Text("cf" + j), new Text(null + "\u0000" +"obj" + "\u0000" + "cq" + j), new Value(new byte[0])); |
| } |
| |
| if (i == 30 ) { |
| m.put(new Text("cf" + 100), new Text(null + "\u0000" +"obj" + "\u0000" + "cq" + 100), new Value(new byte[0])); |
| } |
| |
| if (i == 60) { |
| m.put(new Text("cf" + 100), new Text(null + "\u0000" +"subj" + "\u0000" + "cq" + 100), new Value(new byte[0])); |
| } |
| |
| |
| |
| |
| bw.addMutation(m); |
| |
| } |
| |
| DocumentIndexIntersectingIterator dii = new DocumentIndexIntersectingIterator(); |
| TextColumn tc1 = new TextColumn(new Text("cf" + 20), new Text("obj" + "\u0000" + "cq" + 20)); |
| TextColumn tc2 = new TextColumn(new Text("cf" + 50), new Text("obj" + "\u0000" + "cq" + 50)); |
| TextColumn tc3 = new TextColumn(new Text("cf" + 100), new Text("obj" + "\u0000" + "cq" + 100)); |
| |
| TextColumn[] tc = new TextColumn[3]; |
| tc[0] = tc1; |
| tc[1] = tc2; |
| tc[2] = tc3; |
| |
| IteratorSetting is = new IteratorSetting(30, "fii", DocumentIndexIntersectingIterator.class); |
| |
| dii.setColumnFamilies(is, tc); |
| |
| Scanner scan = accCon.createScanner(tablename, new Authorizations("auths")); |
| scan.addScanIterator(is); |
| |
| int results = 0; |
| System.out.println("************************Test 4****************************"); |
| for (Map.Entry<Key, Value> e : scan) { |
| System.out.println(e); |
| results++; |
| } |
| |
| |
| Assert.assertEquals(1, results); |
| |
| |
| |
| |
| } |
| |
| |
| |
| |
| @Test |
| public void testOneHundredColumnObjPrefix() throws Exception { |
| |
| BatchWriter bw = null; |
| |
| bw = accCon.createBatchWriter(tablename, 500L * 1024L * 1024L, Long.MAX_VALUE, 30); |
| |
| for (int i = 0; i < 100; i++) { |
| |
| Mutation m = new Mutation(new Text("" + i)); |
| |
| for(int j= 0; j < 100; j++) { |
| m.put(new Text("cf" + j), new Text(null + "\u0000" +"obj" + "\u0000" + "cq" + j ), new Value(new byte[0])); |
| } |
| |
| if (i == 30 || i == 60 || i == 90 || i == 99) { |
| m.put(new Text("cf" + 100), new Text(null + "\u0000" +"obj" + "\u0000" + "cq" + (100 + i)), new Value(new byte[0])); |
| } |
| |
| |
| |
| |
| |
| |
| bw.addMutation(m); |
| |
| } |
| |
| DocumentIndexIntersectingIterator dii = new DocumentIndexIntersectingIterator(); |
| TextColumn tc1 = new TextColumn(new Text("cf" + 20), new Text("obj" + "\u0000" + "cq" + 20)); |
| TextColumn tc2 = new TextColumn(new Text("cf" + 50), new Text("obj" + "\u0000" + "cq" + 50)); |
| TextColumn tc3 = new TextColumn(new Text("cf" + 100), new Text("obj")); |
| |
| TextColumn[] tc = new TextColumn[3]; |
| tc[0] = tc1; |
| tc[1] = tc2; |
| tc[2] = tc3; |
| |
| tc3.setIsPrefix(true); |
| |
| IteratorSetting is = new IteratorSetting(30, "fii", DocumentIndexIntersectingIterator.class); |
| |
| dii.setColumnFamilies(is, tc); |
| |
| Scanner scan = accCon.createScanner(tablename, new Authorizations("auths")); |
| scan.addScanIterator(is); |
| |
| int results = 0; |
| System.out.println("************************Test 5****************************"); |
| for (Map.Entry<Key, Value> e : scan) { |
| System.out.println(e); |
| results++; |
| } |
| |
| |
| Assert.assertEquals(4, results); |
| |
| |
| |
| |
| } |
| |
| |
| |
| |
| |
| |
| |
| @Test |
| public void testOneHundredColumnMultipleEntriesPerSubject() throws Exception { |
| |
| BatchWriter bw = null; |
| |
| bw = accCon.createBatchWriter(tablename, 500L * 1024L * 1024L, Long.MAX_VALUE, 30); |
| |
| for (int i = 0; i < 100; i++) { |
| |
| Mutation m = new Mutation(new Text("" + i)); |
| |
| for(int j= 0; j < 100; j++) { |
| m.put(new Text("cf" + j), new Text(null + "\u0000" +"obj" + "\u0000" + "cq" + j ), new Value(new byte[0])); |
| } |
| |
| if (i == 30 || i == 60 || i == 90 || i == 99) { |
| m.put(new Text("cf" + 100), new Text(null + "\u0000" +"obj" + "\u0000" + "cq" + (100 + i)), new Value(new byte[0])); |
| m.put(new Text("cf" + 100), new Text(null + "\u0000" +"obj" + "\u0000" + "cq" + (100 + i + 1)), new Value(new byte[0])); |
| } |
| |
| |
| |
| |
| |
| |
| bw.addMutation(m); |
| |
| } |
| |
| DocumentIndexIntersectingIterator dii = new DocumentIndexIntersectingIterator(); |
| TextColumn tc1 = new TextColumn(new Text("cf" + 20), new Text("obj" + "\u0000" + "cq" + 20 )); |
| TextColumn tc2 = new TextColumn(new Text("cf" + 50), new Text("obj" + "\u0000" + "cq" + 50)); |
| TextColumn tc3 = new TextColumn(new Text("cf" + 100), new Text("obj")); |
| |
| tc3.setIsPrefix(true); |
| |
| TextColumn[] tc = new TextColumn[3]; |
| tc[0] = tc1; |
| tc[1] = tc2; |
| tc[2] = tc3; |
| |
| IteratorSetting is = new IteratorSetting(30, "fii", DocumentIndexIntersectingIterator.class); |
| |
| dii.setColumnFamilies(is, tc); |
| |
| Scanner scan = accCon.createScanner(tablename, new Authorizations("auths")); |
| scan.addScanIterator(is); |
| |
| int results = 0; |
| System.out.println("************************Test 6****************************"); |
| for (Map.Entry<Key, Value> e : scan) { |
| System.out.println(e); |
| results++; |
| } |
| |
| |
| Assert.assertEquals(8, results); |
| |
| |
| |
| |
| } |
| |
| |
| |
| |
| |
| @Test |
| public void testOneHundredColumnSubjObjPrefix() throws Exception { |
| |
| BatchWriter bw = null; |
| |
| bw = accCon.createBatchWriter(tablename, 500L * 1024L * 1024L, Long.MAX_VALUE, 30); |
| |
| for (int i = 0; i < 100; i++) { |
| |
| Mutation m = new Mutation(new Text("" + i)); |
| |
| for(int j= 0; j < 100; j++) { |
| m.put(new Text("cf" + j), new Text(null + "\u0000" +"obj" + "\u0000" + "cq" + j), new Value(new byte[0])); |
| } |
| |
| if (i == 30 || i == 60 || i == 90 || i == 99) { |
| m.put(new Text("cf" + 100), new Text(null + "\u0000" +"obj" + "\u0000" + "cq" + (100 + i)), new Value(new byte[0])); |
| m.put(new Text("cf" + 100), new Text(null + "\u0000" +"subj" + "\u0000" + "cq" + (100 + i + 1)), new Value(new byte[0])); |
| } |
| |
| |
| |
| |
| |
| |
| bw.addMutation(m); |
| |
| } |
| |
| DocumentIndexIntersectingIterator dii = new DocumentIndexIntersectingIterator(); |
| TextColumn tc1 = new TextColumn(new Text("cf" + 20), new Text("obj" + "\u0000" + "cq" + 20)); |
| TextColumn tc2 = new TextColumn(new Text("cf" + 50), new Text("obj" + "\u0000" + "cq" + 50)); |
| TextColumn tc3 = new TextColumn(new Text("cf" + 100), new Text("subj")); |
| |
| tc3.setIsPrefix(true); |
| |
| TextColumn[] tc = new TextColumn[3]; |
| tc[0] = tc1; |
| tc[1] = tc2; |
| tc[2] = tc3; |
| |
| IteratorSetting is = new IteratorSetting(30, "fii", DocumentIndexIntersectingIterator.class); |
| |
| dii.setColumnFamilies(is, tc); |
| |
| Scanner scan = accCon.createScanner(tablename, new Authorizations("auths")); |
| scan.addScanIterator(is); |
| |
| int results = 0; |
| System.out.println("************************Test 7****************************"); |
| for (Map.Entry<Key, Value> e : scan) { |
| System.out.println(e); |
| results++; |
| } |
| |
| |
| Assert.assertEquals(4, results); |
| |
| |
| |
| |
| } |
| |
| |
| |
| |
| |
| |
| @Test |
| public void testOneHundredColumnSubjObjPrefixFourTerms() throws Exception { |
| |
| BatchWriter bw = null; |
| |
| bw = accCon.createBatchWriter(tablename, 500L * 1024L * 1024L, Long.MAX_VALUE, 30); |
| |
| for (int i = 0; i < 100; i++) { |
| |
| Mutation m = new Mutation(new Text("" + i)); |
| |
| for(int j= 0; j < 100; j++) { |
| m.put(new Text("cf" + j), new Text(null + "\u0000" +"obj" + "\u0000" + "cq" + j), new Value(new byte[0])); |
| } |
| |
| if (i == 30 || i == 60 || i == 90 || i == 99) { |
| m.put(new Text("cf" + 100), new Text(null + "\u0000" +"obj" + "\u0000" + "cq" + (100 + i)), new Value(new byte[0])); |
| m.put(new Text("cf" + 100), new Text(null + "\u0000" +"subj" + "\u0000" + "cq" + (100 + i + 1)), new Value(new byte[0])); |
| } |
| |
| |
| |
| |
| |
| |
| bw.addMutation(m); |
| |
| } |
| |
| DocumentIndexIntersectingIterator dii = new DocumentIndexIntersectingIterator(); |
| TextColumn tc1 = new TextColumn(new Text("cf" + 20), new Text("obj" + "\u0000" + "cq" + 20)); |
| TextColumn tc2 = new TextColumn(new Text("cf" + 50), new Text("obj" + "\u0000" + "cq" + 50)); |
| TextColumn tc3 = new TextColumn(new Text("cf" + 100), new Text("subj")); |
| TextColumn tc4 = new TextColumn(new Text("cf" + 100), new Text("obj")); |
| |
| tc3.setIsPrefix(true); |
| tc4.setIsPrefix(true); |
| |
| TextColumn[] tc = new TextColumn[4]; |
| tc[0] = tc1; |
| tc[1] = tc2; |
| tc[2] = tc3; |
| tc[3] = tc4; |
| |
| IteratorSetting is = new IteratorSetting(30, "fii", DocumentIndexIntersectingIterator.class); |
| |
| dii.setColumnFamilies(is, tc); |
| |
| Scanner scan = accCon.createScanner(tablename, new Authorizations("auths")); |
| scan.addScanIterator(is); |
| |
| int results = 0; |
| System.out.println("************************Test 8****************************"); |
| for (Map.Entry<Key, Value> e : scan) { |
| System.out.println(e); |
| results++; |
| } |
| |
| |
| Assert.assertEquals(4, results); |
| |
| |
| |
| |
| } |
| |
| |
| |
| |
| |
| |
| //@Test |
| public void testOneHundredColumnSameCf() throws Exception { |
| |
| BatchWriter bw = null; |
| |
| bw = accCon.createBatchWriter(tablename, 500L * 1024L * 1024L, Long.MAX_VALUE, 30); |
| |
| for (int i = 0; i < 100; i++) { |
| |
| Mutation m = new Mutation(new Text("" + i)); |
| |
| for(int j= 0; j < 100; j++) { |
| m.put(new Text("cf"), new Text(null + "\u0000" +"obj" + "\u0000" + "cq" + j), new Value(new byte[0])); |
| } |
| |
| |
| |
| bw.addMutation(m); |
| |
| } |
| |
| DocumentIndexIntersectingIterator dii = new DocumentIndexIntersectingIterator(); |
| TextColumn tc1 = new TextColumn(new Text("cf" ), new Text("obj" + "\u0000" + "cq" + 20)); |
| TextColumn tc2 = new TextColumn(new Text("cf"), new Text("obj" + "\u0000" + "cq" + 50)); |
| TextColumn tc3 = new TextColumn(new Text("cf" ), new Text("obj" + "\u0000" + "cq" + 80)); |
| TextColumn tc4 = new TextColumn(new Text("cf"), new Text("obj")); |
| |
| tc4.setIsPrefix(true); |
| |
| TextColumn[] tc = new TextColumn[4]; |
| tc[0] = tc1; |
| tc[1] = tc2; |
| tc[2] = tc3; |
| tc[3] = tc4; |
| |
| IteratorSetting is = new IteratorSetting(30, "fii", DocumentIndexIntersectingIterator.class); |
| |
| dii.setColumnFamilies(is, tc); |
| |
| Scanner scan = accCon.createScanner(tablename, new Authorizations("auths")); |
| scan.addScanIterator(is); |
| |
| int results = 0; |
| System.out.println("************************Test 9****************************"); |
| for (Map.Entry<Key, Value> e : scan) { |
| //System.out.println(e); |
| results++; |
| } |
| |
| |
| Assert.assertEquals(10000, results); |
| |
| |
| |
| |
| } |
| |
| |
| |
| |
| |
| @Test |
| public void testGeneralStarQuery() throws Exception { |
| |
| BatchWriter bw = null; |
| |
| bw = accCon.createBatchWriter(tablename, 500L * 1024L * 1024L, Long.MAX_VALUE, 30); |
| |
| |
| |
| for (int i = 0; i < 100; i++) { |
| |
| Mutation m = new Mutation(new Text("" + i)); |
| |
| m.put(new Text("cf" + 1), new Text(null + "\u0000" +"obj" + "\u0000" + "cq" + 1), new Value(new byte[0])); |
| m.put(new Text("cf" + 2), new Text(null + "\u0000" +"obj" + "\u0000" + "cq" + 2 ), new Value(new byte[0])); |
| m.put(new Text("cf" + 1), new Text(null + "\u0000" +"subj" + "\u0000" + "cq" + 1 ), new Value(new byte[0])); |
| m.put(new Text("cf" + 2), new Text(null + "\u0000" +"subj" + "\u0000" + "cq" + 2 ), new Value(new byte[0])); |
| |
| |
| |
| if(i == 30 || i == 60 ) { |
| m.put(new Text("cf" + 3), new Text(null + "\u0000" +"obj" + "\u0000" + "cq" + 3), new Value(new byte[0])); |
| m.put(new Text("cf" + 3), new Text(null + "\u0000" +"subj" + "\u0000" + "cq" + 3), new Value(new byte[0])); |
| } |
| |
| bw.addMutation(m); |
| |
| } |
| |
| |
| DocumentIndexIntersectingIterator dii = new DocumentIndexIntersectingIterator(); |
| TextColumn tc1 = new TextColumn(new Text("cf" + 1 ), new Text("obj" + "\u0000" + "cq" + 1)); |
| TextColumn tc2 = new TextColumn(new Text("cf" + 2), new Text("obj" + "\u0000" + "cq" + 2)); |
| TextColumn tc3 = new TextColumn(new Text("cf" + 3), new Text("subj" + "\u0000" + "cq" + 3)); |
| |
| |
| TextColumn[] tc = new TextColumn[3]; |
| tc[0] = tc1; |
| tc[1] = tc2; |
| tc[2] = tc3; |
| |
| |
| IteratorSetting is = new IteratorSetting(30, "fii", DocumentIndexIntersectingIterator.class); |
| |
| dii.setColumnFamilies(is, tc); |
| |
| Scanner scan = accCon.createScanner(tablename, new Authorizations("auths")); |
| scan.addScanIterator(is); |
| |
| int results = 0; |
| System.out.println("************************Test 10****************************"); |
| for (Map.Entry<Key, Value> e : scan) { |
| System.out.println(e); |
| results++; |
| } |
| |
| |
| Assert.assertEquals(2, results); |
| |
| |
| |
| |
| } |
| |
| |
| |
| |
| |
| |
| |
| @Test |
| public void testGeneralStarQuerySubjPrefix() throws Exception { |
| |
| BatchWriter bw = null; |
| |
| bw = accCon.createBatchWriter(tablename, 500L * 1024L * 1024L, Long.MAX_VALUE, 30); |
| |
| |
| |
| for (int i = 0; i < 100; i++) { |
| |
| Mutation m = new Mutation(new Text("" + i)); |
| |
| m.put(new Text("cf" + 1), new Text(null + "\u0000" +"obj" + "\u0000" + "cq" + 1), new Value(new byte[0])); |
| m.put(new Text("cf" + 2), new Text(null + "\u0000" +"obj" + "\u0000" + "cq" + 2 ), new Value(new byte[0])); |
| m.put(new Text("cf" + 1), new Text(null + "\u0000" +"subj" + "\u0000" + "cq" + 1), new Value(new byte[0])); |
| m.put(new Text("cf" + 2), new Text(null + "\u0000" +"subj" + "\u0000" + "cq" + 2), new Value(new byte[0])); |
| |
| |
| |
| if(i == 30 || i == 60 || i == 90 || i == 99) { |
| m.put(new Text("cf" + 3), new Text(null + "\u0000" +"obj" + "\u0000" + "cq" + 3), new Value(new byte[0])); |
| m.put(new Text("cf" + 3), new Text(null + "\u0000" +"subj" + "\u0000" + "cq" + 3), new Value(new byte[0])); |
| } |
| |
| bw.addMutation(m); |
| |
| } |
| |
| |
| DocumentIndexIntersectingIterator dii = new DocumentIndexIntersectingIterator(); |
| TextColumn tc1 = new TextColumn(new Text("cf" + 1 ), new Text("obj" + "\u0000" + "cq" + 1)); |
| TextColumn tc2 = new TextColumn(new Text("cf" + 2), new Text("obj" + "\u0000" + "cq" + 2)); |
| TextColumn tc3 = new TextColumn(new Text("cf" + 3), new Text("subj")); |
| |
| tc3.setIsPrefix(true); |
| |
| TextColumn[] tc = new TextColumn[3]; |
| tc[0] = tc1; |
| tc[1] = tc2; |
| tc[2] = tc3; |
| |
| |
| IteratorSetting is = new IteratorSetting(30, "fii", DocumentIndexIntersectingIterator.class); |
| |
| dii.setColumnFamilies(is, tc); |
| |
| Scanner scan = accCon.createScanner(tablename, new Authorizations("auths")); |
| scan.addScanIterator(is); |
| |
| int results = 0; |
| System.out.println("************************Test 11****************************"); |
| for (Map.Entry<Key, Value> e : scan) { |
| System.out.println(e); |
| results++; |
| } |
| |
| |
| Assert.assertEquals(4, results); |
| |
| |
| |
| |
| } |
| |
| |
| |
| |
| |
| @Test |
| public void testGeneralStarQueryMultipleSubjPrefix() throws Exception { |
| |
| BatchWriter bw = null; |
| |
| bw = accCon.createBatchWriter(tablename, 500L * 1024L * 1024L, Long.MAX_VALUE, 30); |
| |
| |
| |
| for (int i = 0; i < 100; i++) { |
| |
| Mutation m = new Mutation(new Text("" + i)); |
| |
| m.put(new Text("cf" + 1), new Text(null + "\u0000" +"obj" + "\u0000" + "cq" + 1), new Value(new byte[0])); |
| m.put(new Text("cf" + 2), new Text(null + "\u0000" +"obj" + "\u0000" + "cq" + 2 ), new Value(new byte[0])); |
| m.put(new Text("cf" + 1), new Text(null + "\u0000" +"subj" + "\u0000" + "cq" + 1 ), new Value(new byte[0])); |
| m.put(new Text("cf" + 2), new Text(null + "\u0000" +"subj" + "\u0000" + "cq" + 2), new Value(new byte[0])); |
| |
| |
| |
| if(i == 30 || i == 60 || i == 90 || i == 99) { |
| m.put(new Text("cf" + 3), new Text(null + "\u0000" +"obj" + "\u0000" + "cq" + 3 ), new Value(new byte[0])); |
| m.put(new Text("cf" + 3), new Text(null + "\u0000" +"subj" + "\u0000" + "cq" + 3), new Value(new byte[0])); |
| m.put(new Text("cf" + 3), new Text(null + "\u0000" +"obj" + "\u0000" + "cq" + 4), new Value(new byte[0])); |
| m.put(new Text("cf" + 3), new Text(null + "\u0000" +"subj" + "\u0000" + "cq" + 4), new Value(new byte[0])); |
| m.put(new Text("cf" + 3), new Text(null + "\u0000" +"obj" + "\u0000" + "cq" + 5), new Value(new byte[0])); |
| m.put(new Text("cf" + 3), new Text(null + "\u0000" +"subj" + "\u0000" + "cq" + 5), new Value(new byte[0])); |
| } |
| |
| bw.addMutation(m); |
| |
| } |
| |
| |
| |
| TextColumn tc1 = new TextColumn(new Text("cf" + 1 ), new Text("obj" + "\u0000" + "cq" + 1)); |
| TextColumn tc2 = new TextColumn(new Text("cf" + 2), new Text("obj" + "\u0000" + "cq" + 2)); |
| TextColumn tc3 = new TextColumn(new Text("cf" + 3), new Text("subj")); |
| |
| tc3.setIsPrefix(true); |
| |
| TextColumn[] tc = new TextColumn[3]; |
| tc[0] = tc1; |
| tc[1] = tc2; |
| tc[2] = tc3; |
| |
| |
| IteratorSetting is = new IteratorSetting(30, "fii", DocumentIndexIntersectingIterator.class); |
| |
| DocumentIndexIntersectingIterator.setColumnFamilies(is, tc); |
| |
| Scanner scan = accCon.createScanner(tablename, new Authorizations("auths")); |
| scan.addScanIterator(is); |
| |
| int results = 0; |
| System.out.println("************************Test 12****************************"); |
| for (Map.Entry<Key, Value> e : scan) { |
| System.out.println(e); |
| results++; |
| } |
| |
| |
| Assert.assertEquals(12, results); |
| |
| |
| |
| |
| } |
| |
| |
| |
| |
| @Test |
| public void testFixedRangeColumnValidateExact() throws Exception { |
| |
| BatchWriter bw = null; |
| |
| bw = accCon.createBatchWriter(tablename, 500L * 1024L * 1024L, Long.MAX_VALUE, 30); |
| |
| |
| |
| for (int i = 0; i < 100; i++) { |
| |
| Mutation m = new Mutation(new Text("" + i)); |
| |
| m.put(new Text("cf" + 1), new Text(null + "\u0000" +"obj" + "\u0000" + "cq" + 1 ), new Value(new byte[0])); |
| m.put(new Text("cf" + 2), new Text(null + "\u0000" +"obj" + "\u0000" + "cq" + 2), new Value(new byte[0])); |
| m.put(new Text("cf" + 1), new Text(null + "\u0000" +"subj" + "\u0000" + "cq" + 1), new Value(new byte[0])); |
| m.put(new Text("cf" + 2), new Text(null + "\u0000" +"subj" + "\u0000" + "cq" + 2), new Value(new byte[0])); |
| |
| |
| |
| if(i == 30 || i == 60 || i == 90 || i == 99) { |
| m.put(new Text("cf" + 3), new Text(null + "\u0000" +"obj" + "\u0000" + "cq" + 3), new Value(new byte[0])); |
| m.put(new Text("cf" + 3), new Text(null + "\u0000" +"subj" + "\u0000" + "cq" + 3), new Value(new byte[0])); |
| m.put(new Text("cf" + 3), new Text(null + "\u0000" +"obj" + "\u0000" + "cq" + 4), new Value(new byte[0])); |
| m.put(new Text("cf" + 3), new Text(null + "\u0000" +"subj" + "\u0000" + "cq" + 4), new Value(new byte[0])); |
| m.put(new Text("cf" + 3), new Text(null + "\u0000" +"obj" + "\u0000" + "cq" + 5), new Value(new byte[0])); |
| m.put(new Text("cf" + 3), new Text(null + "\u0000" +"subj" + "\u0000" + "cq" + 5), new Value(new byte[0])); |
| } |
| |
| bw.addMutation(m); |
| |
| } |
| |
| |
| |
| TextColumn tc1 = new TextColumn(new Text("cf" + 1 ), new Text("obj" + "\u0000" + "cq" + 1)); |
| TextColumn tc2 = new TextColumn(new Text("cf" + 2), new Text("obj" + "\u0000" + "cq" + 2)); |
| TextColumn tc3 = new TextColumn(new Text("cf" + 3), new Text("subj" + "\u0000" + "cq" + 3)); |
| TextColumn tc4 = new TextColumn(new Text("cf" + 3), new Text("subj" + "\u0000" + "cq" + 4)); |
| TextColumn tc5 = new TextColumn(new Text("cf" + 3), new Text("subj" + "\u0000" + "cq" + 5)); |
| |
| |
| |
| TextColumn[] tc = new TextColumn[5]; |
| tc[0] = tc1; |
| tc[1] = tc2; |
| tc[2] = tc3; |
| tc[3] = tc4; |
| tc[4] = tc5; |
| |
| |
| IteratorSetting is = new IteratorSetting(30, "fii", DocumentIndexIntersectingIterator.class); |
| |
| DocumentIndexIntersectingIterator.setColumnFamilies(is, tc); |
| |
| Scanner scan = accCon.createScanner(tablename, new Authorizations("auths")); |
| scan.setRange(Range.exact(new Text("" + 30))); |
| scan.addScanIterator(is); |
| |
| int results = 0; |
| System.out.println("************************Test 14****************************"); |
| for (Map.Entry<Key, Value> e : scan) { |
| System.out.println(e); |
| results++; |
| } |
| |
| |
| Assert.assertEquals(1, results); |
| |
| |
| |
| |
| } |
| |
| |
| |
| |
| |
| |
| @Test |
| public void testLubmLikeTest() throws Exception { |
| |
| BatchWriter bw = null; |
| |
| bw = accCon.createBatchWriter(tablename, 500L * 1024L * 1024L, Long.MAX_VALUE, 30); |
| |
| |
| |
| for (int i = 0; i < 100; i++) { |
| |
| Mutation m1 = new Mutation(new Text("ProfessorA" + i)); |
| Mutation m2= new Mutation(new Text("ProfessorB" + i)); |
| |
| m1.put(new Text("http://swat.cse.lehigh.edu/onto/univ-bench.owl#doctoralDegreeFrom"), |
| new Text(null + "\u0000" +"object" + "\u0000" + "http://www.University" + i + ".edu"), new Value(new byte[0])); |
| m2.put(new Text("http://swat.cse.lehigh.edu/onto/univ-bench.owl#doctoralDegreeFrom"), |
| new Text(null + "\u0000" +"object" + "\u0000" + "http://www.University" + i + ".edu"), new Value(new byte[0])); |
| m1.put(new Text("http://swat.cse.lehigh.edu/onto/univ-bench.owl#teacherOf"), |
| new Text(null + "\u0000" +"object" + "\u0000" + "http://Course" + i), new Value(new byte[0])); |
| m2.put(new Text("http://swat.cse.lehigh.edu/onto/univ-bench.owl#teacherOf"), |
| new Text(null + "\u0000" +"object" + "\u0000" + "http://Course" + i), new Value(new byte[0])); |
| |
| |
| bw.addMutation(m1); |
| bw.addMutation(m2); |
| |
| } |
| |
| |
| |
| TextColumn tc1 = new TextColumn(new Text("http://swat.cse.lehigh.edu/onto/univ-bench.owl#doctoralDegreeFrom" ), |
| new Text("object" + "\u0000" + "http://www.University" + 30 + ".edu")); |
| TextColumn tc2 = new TextColumn(new Text("http://swat.cse.lehigh.edu/onto/univ-bench.owl#teacherOf"), |
| new Text("object" + "\u0000" + "http://Course" + 30)); |
| |
| |
| |
| |
| TextColumn[] tc = new TextColumn[2]; |
| tc[0] = tc1; |
| tc[1] = tc2; |
| |
| |
| IteratorSetting is = new IteratorSetting(30, "fii", DocumentIndexIntersectingIterator.class); |
| |
| DocumentIndexIntersectingIterator.setColumnFamilies(is, tc); |
| |
| Scanner scan = accCon.createScanner(tablename, new Authorizations("auths")); |
| scan.addScanIterator(is); |
| |
| int results = 0; |
| System.out.println("************************Test 15****************************"); |
| for (Map.Entry<Key, Value> e : scan) { |
| System.out.println(e); |
| results++; |
| } |
| |
| |
| Assert.assertEquals(2, results); |
| |
| |
| |
| |
| } |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| @Test |
| public void testFixedRangeColumnValidateSubjPrefix() throws Exception { |
| |
| BatchWriter bw = null; |
| |
| bw = accCon.createBatchWriter(tablename, 500L * 1024L * 1024L, Long.MAX_VALUE, 30); |
| |
| |
| |
| for (int i = 0; i < 100; i++) { |
| |
| Mutation m = new Mutation(new Text("" + i)); |
| |
| m.put(new Text("cf" + 1), new Text(null + "\u0000" +"obj" + "\u0000" + "cq" + 1 ), new Value(new byte[0])); |
| m.put(new Text("cf" + 2), new Text(null + "\u0000" +"obj" + "\u0000" + "cq" + 2), new Value(new byte[0])); |
| m.put(new Text("cf" + 1), new Text(null + "\u0000" +"subj" + "\u0000" + "cq" + 1 ), new Value(new byte[0])); |
| m.put(new Text("cf" + 2), new Text(null + "\u0000" +"subj" + "\u0000" + "cq" + 2 ), new Value(new byte[0])); |
| |
| |
| |
| if(i == 30 || i == 60 || i == 90 || i == 99) { |
| m.put(new Text("cf" + 3), new Text(null + "\u0000" +"obj" + "\u0000" + "cq" + 3 ), new Value(new byte[0])); |
| m.put(new Text("cf" + 3), new Text(null + "\u0000" +"subj" + "\u0000" + "cq" + 3), new Value(new byte[0])); |
| m.put(new Text("cf" + 3), new Text(null + "\u0000" +"obj" + "\u0000" + "cq" + 4), new Value(new byte[0])); |
| m.put(new Text("cf" + 3), new Text(null + "\u0000" +"subj" + "\u0000" + "cq" + 4 ), new Value(new byte[0])); |
| m.put(new Text("cf" + 3), new Text(null + "\u0000" +"obj" + "\u0000" + "cq" + 5 ), new Value(new byte[0])); |
| m.put(new Text("cf" + 3), new Text(null + "\u0000" +"subj" + "\u0000" + "cq" + 5 ), new Value(new byte[0])); |
| } |
| |
| bw.addMutation(m); |
| |
| } |
| |
| |
| |
| TextColumn tc1 = new TextColumn(new Text("cf" + 1 ), new Text("obj" + "\u0000" + "cq" + 1)); |
| TextColumn tc2 = new TextColumn(new Text("cf" + 2), new Text("obj" + "\u0000" + "cq" + 2)); |
| TextColumn tc3 = new TextColumn(new Text("cf" + 3), new Text("subj")); |
| |
| tc3.setIsPrefix(true); |
| |
| TextColumn[] tc = new TextColumn[3]; |
| tc[0] = tc1; |
| tc[1] = tc2; |
| tc[2] = tc3; |
| |
| |
| IteratorSetting is = new IteratorSetting(30, "fii", DocumentIndexIntersectingIterator.class); |
| |
| DocumentIndexIntersectingIterator.setColumnFamilies(is, tc); |
| |
| Scanner scan = accCon.createScanner(tablename, new Authorizations("auths")); |
| scan.setRange(Range.exact(new Text("" + 30))); |
| scan.addScanIterator(is); |
| |
| int results = 0; |
| System.out.println("************************Test 13****************************"); |
| for (Map.Entry<Key, Value> e : scan) { |
| System.out.println(e); |
| results++; |
| } |
| |
| |
| Assert.assertEquals(3, results); |
| |
| |
| |
| |
| } |
| |
| |
| |
| |
| |
| //@Test |
| //public void testRangeBound() { |
| // |
| // BatchWriter bw = null; |
| // |
| // try { |
| // |
| // |
| // |
| // |
| // for (int i = 0; i < 100; i++) { |
| // |
| // Mutation m = new Mutation(new Text("" + i)); |
| // |
| // m.put(new Text("cf" + 1), new Text("obj" + "\u0000" + "cq" + 1), new Value(new byte[0])); |
| // m.put(new Text("cf" + 2), new Text("obj" + "\u0000" + "cq" + 2), new Value(new byte[0])); |
| // m.put(new Text("cf" + 1), new Text("subj" + "\u0000" + "cq" + 1), new Value(new byte[0])); |
| // m.put(new Text("cf" + 2), new Text("subj" + "\u0000" + "cq" + 2), new Value(new byte[0])); |
| // |
| // |
| // |
| // if(i == 30 || i == 60 || i == 90 || i == 99) { |
| // m.put(new Text("cf" + 3), new Text("obj" + "\u0000" + "cq" + 3), new Value(new byte[0])); |
| // m.put(new Text("cf" + 3), new Text("subj" + "\u0000" + "cq" + 3), new Value(new byte[0])); |
| // m.put(new Text("cf" + 3), new Text("obj" + "\u0000" + "cq" + 4), new Value(new byte[0])); |
| // m.put(new Text("cf" + 3), new Text("subj" + "\u0000" + "cq" + 4), new Value(new byte[0])); |
| // m.put(new Text("cf" + 3), new Text("obj" + "\u0000" + "cq" + 5), new Value(new byte[0])); |
| // m.put(new Text("cf" + 3), new Text("subj" + "\u0000" + "cq" + 5), new Value(new byte[0])); |
| // } |
| // |
| // bw.addMutation(m); |
| // |
| // } |
| // |
| // |
| // |
| // Text cf = new Text("cf" + 3); |
| // Text cq = new Text("obj" + "\u0000" + "cq" + 3); |
| // |
| // Scanner scan = accCon.createScanner(tablename, new Authorizations("auths")); |
| // scan.fetchColumn(cf, cq ); |
| // scan.setRange(new Range()); |
| // |
| // |
| // int results = 0; |
| // System.out.println("************************Test 14****************************"); |
| // for (Map.Entry<Key, Value> e : scan) { |
| // System.out.println(e); |
| // results++; |
| // } |
| // |
| // |
| // |
| // |
| // |
| // |
| // } catch (MutationsRejectedException e) { |
| // // TODO Auto-generated catch block |
| // e.printStackTrace(); |
| // } catch (TableNotFoundException e) { |
| // // TODO Auto-generated catch block |
| // e.printStackTrace(); |
| // } |
| // |
| //} |
| |
| |
| |
| |
| |
| @Test |
| public void testContext1() throws Exception { |
| |
| BatchWriter bw = null; |
| |
| bw = accCon.createBatchWriter(tablename, 500L * 1024L * 1024L, Long.MAX_VALUE, 30); |
| |
| |
| |
| for (int i = 0; i < 100; i++) { |
| |
| Mutation m = new Mutation(new Text("" + i)); |
| |
| m.put(new Text("cf" + 1), new Text("context1" + "\u0000" + "obj" + "\u0000" + "cq" + 1 ), new Value(new byte[0])); |
| m.put(new Text("cf" + 2), new Text("context1" + "\u0000" +"obj" + "\u0000" + "cq" + 2 ), new Value(new byte[0])); |
| |
| |
| if(i == 30 || i == 60 || i == 90 || i == 99) { |
| m.put(new Text("cf" + 3), new Text("context1" + "\u0000" +"obj" + "\u0000" + "cq" + 3 ), new Value(new byte[0])); |
| m.put(new Text("cf" + 3), new Text("context2" + "\u0000" +"obj" + "\u0000" + "cq" + 4 ), new Value(new byte[0])); |
| m.put(new Text("cf" + 3), new Text("context1" + "\u0000" +"obj" + "\u0000" + "cq" + 5 ), new Value(new byte[0])); |
| |
| } |
| |
| bw.addMutation(m); |
| |
| } |
| |
| |
| |
| TextColumn tc1 = new TextColumn(new Text("cf" + 1 ), new Text("obj" + "\u0000" + "cq" + 1)); |
| TextColumn tc2 = new TextColumn(new Text("cf" + 2), new Text("obj" + "\u0000" + "cq" + 2)); |
| TextColumn tc3 = new TextColumn(new Text("cf" + 3), new Text("obj")); |
| |
| tc3.setIsPrefix(true); |
| |
| TextColumn[] tc = new TextColumn[3]; |
| tc[0] = tc1; |
| tc[1] = tc2; |
| tc[2] = tc3; |
| |
| |
| IteratorSetting is = new IteratorSetting(30, "fii", DocumentIndexIntersectingIterator.class); |
| |
| DocumentIndexIntersectingIterator.setColumnFamilies(is, tc); |
| DocumentIndexIntersectingIterator.setContext(is, "context1"); |
| |
| Scanner scan = accCon.createScanner(tablename, new Authorizations("auths")); |
| |
| scan.addScanIterator(is); |
| |
| int results = 0; |
| System.out.println("************************Test 14****************************"); |
| for (Map.Entry<Key, Value> e : scan) { |
| System.out.println(e); |
| results++; |
| } |
| |
| |
| Assert.assertEquals(8, results); |
| |
| |
| |
| |
| } |
| |
| |
| |
| |
| |
| |
| |
| @Test |
| public void testContext2() throws Exception { |
| |
| BatchWriter bw = null; |
| |
| bw = accCon.createBatchWriter(tablename, 500L * 1024L * 1024L, Long.MAX_VALUE, 30); |
| |
| |
| |
| for (int i = 0; i < 100; i++) { |
| |
| Mutation m = new Mutation(new Text("" + i)); |
| |
| m.put(new Text("cf" + 1), new Text("context1" + "\u0000" +"obj" + "\u0000" + "cq" + 1 ), new Value(new byte[0])); |
| m.put(new Text("cf" + 2), new Text("context1" + "\u0000" +"obj" + "\u0000" + "cq" + 2 ), new Value(new byte[0])); |
| m.put(new Text("cf" + 2), new Text("context2" + "\u0000" +"obj" + "\u0000" + "cq" + 2 ), new Value(new byte[0])); |
| |
| |
| if(i == 30 || i == 60 || i == 90 || i == 99) { |
| m.put(new Text("cf" + 3), new Text("context1" + "\u0000" +"obj" + "\u0000" + "cq" + 3), new Value(new byte[0])); |
| m.put(new Text("cf" + 3), new Text("context2" + "\u0000" +"obj" + "\u0000" + "cq" + 4 ), new Value(new byte[0])); |
| m.put(new Text("cf" + 3), new Text("context3" + "\u0000" +"obj" + "\u0000" + "cq" + 5 ), new Value(new byte[0])); |
| |
| } |
| |
| bw.addMutation(m); |
| |
| } |
| |
| |
| |
| TextColumn tc1 = new TextColumn(new Text("cf" + 1 ), new Text("obj" + "\u0000" + "cq" + 1)); |
| TextColumn tc2 = new TextColumn(new Text("cf" + 2), new Text("obj" + "\u0000" + "cq" + 2)); |
| TextColumn tc3 = new TextColumn(new Text("cf" + 3), new Text("obj")); |
| |
| tc3.setIsPrefix(true); |
| |
| TextColumn[] tc = new TextColumn[3]; |
| tc[0] = tc1; |
| tc[1] = tc2; |
| tc[2] = tc3; |
| |
| |
| IteratorSetting is = new IteratorSetting(30, "fii", DocumentIndexIntersectingIterator.class); |
| |
| DocumentIndexIntersectingIterator.setColumnFamilies(is, tc); |
| DocumentIndexIntersectingIterator.setContext(is, "context2"); |
| |
| Scanner scan = accCon.createScanner(tablename, new Authorizations("auths")); |
| |
| scan.addScanIterator(is); |
| |
| int results = 0; |
| System.out.println("************************Test 15****************************"); |
| for (Map.Entry<Key, Value> e : scan) { |
| System.out.println(e); |
| results++; |
| } |
| |
| |
| Assert.assertEquals(0, results); |
| |
| |
| |
| |
| } |
| |
| |
| |
| |
| |
| |
| |
| |
| @Test |
| public void testContext3() throws Exception { |
| |
| BatchWriter bw = null; |
| |
| bw = accCon.createBatchWriter(tablename, 500L * 1024L * 1024L, Long.MAX_VALUE, 30); |
| |
| |
| |
| for (int i = 0; i < 100; i++) { |
| |
| Mutation m = new Mutation(new Text("" + i)); |
| |
| m.put(new Text("cf" + 1), new Text("context1" + "\u0000" +"obj" + "\u0000" + "cq" + 1 + "\u0000" + "context1"), new Value(new byte[0])); |
| m.put(new Text("cf" + 2), new Text("context1" + "\u0000" +"obj" + "\u0000" + "cq" + 2 + "\u0000" + "context1"), new Value(new byte[0])); |
| m.put(new Text("cf" + 1), new Text("context2" + "\u0000" +"obj" + "\u0000" + "cq" + 1 + "\u0000" + "context2"), new Value(new byte[0])); |
| m.put(new Text("cf" + 2), new Text("context2" + "\u0000" +"obj" + "\u0000" + "cq" + 2 + "\u0000" + "context2"), new Value(new byte[0])); |
| |
| |
| if(i == 30 || i == 60 || i == 90 || i == 99) { |
| m.put(new Text("cf" + 3), new Text("context1" + "\u0000" +"obj" + "\u0000" + "cq" + 3 ), new Value(new byte[0])); |
| m.put(new Text("cf" + 3), new Text("context2" + "\u0000" +"obj" + "\u0000" + "cq" + 4 ), new Value(new byte[0])); |
| m.put(new Text("cf" + 3), new Text("context3" + "\u0000" +"obj" + "\u0000" + "cq" + 5 ), new Value(new byte[0])); |
| |
| } |
| |
| bw.addMutation(m); |
| |
| } |
| |
| |
| |
| TextColumn tc1 = new TextColumn(new Text("cf" + 1 ), new Text("obj" + "\u0000" + "cq" + 1)); |
| TextColumn tc2 = new TextColumn(new Text("cf" + 2), new Text("obj" + "\u0000" + "cq" + 2)); |
| TextColumn tc3 = new TextColumn(new Text("cf" + 3), new Text("obj")); |
| |
| tc3.setIsPrefix(true); |
| |
| TextColumn[] tc = new TextColumn[3]; |
| tc[0] = tc1; |
| tc[1] = tc2; |
| tc[2] = tc3; |
| |
| |
| IteratorSetting is = new IteratorSetting(30, "fii", DocumentIndexIntersectingIterator.class); |
| |
| DocumentIndexIntersectingIterator.setColumnFamilies(is, tc); |
| DocumentIndexIntersectingIterator.setContext(is, "context2"); |
| |
| Scanner scan = accCon.createScanner(tablename, new Authorizations("auths")); |
| |
| scan.addScanIterator(is); |
| |
| int results = 0; |
| System.out.println("************************Test 16****************************"); |
| for (Map.Entry<Key, Value> e : scan) { |
| System.out.println(e); |
| results++; |
| } |
| |
| |
| Assert.assertEquals(4, results); |
| |
| |
| |
| |
| } |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| @Test |
| public void testContext4() throws Exception { |
| |
| BatchWriter bw = null; |
| |
| bw = accCon.createBatchWriter(tablename, 500L * 1024L * 1024L, Long.MAX_VALUE, 30); |
| |
| |
| |
| for (int i = 0; i < 100; i++) { |
| |
| Mutation m = new Mutation(new Text("" + i)); |
| |
| m.put(new Text("cf" + 1), new Text("context1" + "\u0000" +"obj" + "\u0000" + "cq" + 1), new Value(new byte[0])); |
| m.put(new Text("cf" + 2), new Text("context1" + "\u0000" +"obj" + "\u0000" + "cq" + 2), new Value(new byte[0])); |
| m.put(new Text("cf" + 1), new Text("context2" + "\u0000" +"obj" + "\u0000" + "cq" + 1), new Value(new byte[0])); |
| m.put(new Text("cf" + 2), new Text("context2" + "\u0000" +"obj" + "\u0000" + "cq" + 2), new Value(new byte[0])); |
| |
| |
| if(i == 30 || i == 60 || i == 90 || i == 99) { |
| m.put(new Text("cf" + 3), new Text("context1" + "\u0000" +"obj" + "\u0000" + "cq" + 3), new Value(new byte[0])); |
| m.put(new Text("cf" + 3), new Text("context2" + "\u0000" +"obj" + "\u0000" + "cq" + 3), new Value(new byte[0])); |
| |
| |
| } |
| |
| bw.addMutation(m); |
| |
| } |
| |
| |
| |
| TextColumn tc1 = new TextColumn(new Text("cf" + 1 ), new Text("obj" + "\u0000" + "cq" + 1)); |
| TextColumn tc2 = new TextColumn(new Text("cf" + 2), new Text("obj" + "\u0000" + "cq" + 2)); |
| TextColumn tc3 = new TextColumn(new Text("cf" + 3), new Text("obj")); |
| |
| tc3.setIsPrefix(true); |
| |
| TextColumn[] tc = new TextColumn[3]; |
| tc[0] = tc1; |
| tc[1] = tc2; |
| tc[2] = tc3; |
| |
| |
| IteratorSetting is = new IteratorSetting(30, "fii", DocumentIndexIntersectingIterator.class); |
| |
| DocumentIndexIntersectingIterator.setColumnFamilies(is, tc); |
| |
| |
| Scanner scan = accCon.createScanner(tablename, new Authorizations("auths")); |
| |
| scan.addScanIterator(is); |
| |
| int results = 0; |
| System.out.println("************************Test 17****************************"); |
| for (Map.Entry<Key, Value> e : scan) { |
| System.out.println(e); |
| results++; |
| } |
| |
| |
| Assert.assertEquals(8, results); |
| |
| |
| |
| |
| |
| } |
| |
| |
| |
| |
| |
| @Test |
| public void testContext5() throws Exception { |
| |
| BatchWriter bw = null; |
| |
| bw = accCon.createBatchWriter(tablename, 500L * 1024L * 1024L, Long.MAX_VALUE, 30); |
| |
| |
| |
| for (int i = 0; i < 100; i++) { |
| |
| Mutation m = new Mutation(new Text("" + i)); |
| |
| m.put(new Text("cf" + 1), new Text("context1" + "\u0000" + "obj" + "\u0000" + "cq" + 1), new Value(new byte[0])); |
| m.put(new Text("cf" + 2), new Text("context1" + "\u0000" + "obj" + "\u0000" + "cq" + 2), new Value(new byte[0])); |
| m.put(new Text("cf" + 1), new Text("context2" + "\u0000" + "obj" + "\u0000" + "cq" + 1), new Value(new byte[0])); |
| m.put(new Text("cf" + 2), new Text("context2" + "\u0000" + "obj" + "\u0000" + "cq" + 2), new Value(new byte[0])); |
| m.put(new Text("cf" + 1), new Text(null + "\u0000" + "obj" + "\u0000" + "cq" + 1 ), new Value(new byte[0])); |
| m.put(new Text("cf" + 2), new Text(null + "\u0000" + "obj" + "\u0000" + "cq" + 2 ), new Value(new byte[0])); |
| |
| |
| if(i == 30 || i == 60 || i == 90 || i == 99) { |
| m.put(new Text("cf" + 3), new Text("context1" + "\u0000" + "obj" + "\u0000" + "cq" + 3), new Value(new byte[0])); |
| m.put(new Text("cf" + 3), new Text("context2" + "\u0000" + "obj" + "\u0000" + "cq" + 3 ), new Value(new byte[0])); |
| m.put(new Text("cf" + 3), new Text(null + "\u0000" + "obj" + "\u0000" + "cq" + 3 ), new Value(new byte[0])); |
| |
| |
| } |
| |
| bw.addMutation(m); |
| |
| } |
| |
| |
| |
| TextColumn tc1 = new TextColumn(new Text("cf" + 1 ), new Text("obj" + "\u0000" + "cq" + 1)); |
| TextColumn tc2 = new TextColumn(new Text("cf" + 2), new Text("obj" + "\u0000" + "cq" + 2)); |
| TextColumn tc3 = new TextColumn(new Text("cf" + 3), new Text("obj")); |
| |
| tc3.setIsPrefix(true); |
| |
| TextColumn[] tc = new TextColumn[3]; |
| tc[0] = tc1; |
| tc[1] = tc2; |
| tc[2] = tc3; |
| |
| |
| IteratorSetting is = new IteratorSetting(30, "fii", DocumentIndexIntersectingIterator.class); |
| |
| DocumentIndexIntersectingIterator.setColumnFamilies(is, tc); |
| |
| |
| Scanner scan = accCon.createScanner(tablename, new Authorizations("auths")); |
| |
| scan.addScanIterator(is); |
| |
| int results = 0; |
| System.out.println("************************Test 18****************************"); |
| for (Map.Entry<Key, Value> e : scan) { |
| System.out.println(e); |
| results++; |
| } |
| |
| |
| Assert.assertEquals(12, results); |
| |
| |
| |
| |
| } |
| |
| |
| |
| |
| |
| |
| @Test |
| public void testContext6() throws Exception { |
| |
| BatchWriter bw = null; |
| |
| bw = accCon.createBatchWriter(tablename, 500L * 1024L * 1024L, Long.MAX_VALUE, 30); |
| |
| |
| |
| for (int i = 0; i < 100; i++) { |
| |
| Mutation m = new Mutation(new Text("row" + i)); |
| |
| |
| m.put(new Text("cf" + 1), new Text("context1" + "\u0000" + "obj" + "\u0000" + "cq" + i), new Value(new byte[0])); |
| m.put(new Text("cf" + 2), new Text("context1" + "\u0000" + "subj" + "\u0000" + "cq" + i), new Value(new byte[0])); |
| m.put(new Text("cf" + 1), new Text("context2" + "\u0000" + "obj" + "\u0000" + "cq" + i), new Value(new byte[0])); |
| m.put(new Text("cf" + 2), new Text("context2" + "\u0000" + "subj" + "\u0000" + "cq" + i), new Value(new byte[0])); |
| |
| |
| bw.addMutation(m); |
| |
| |
| } |
| |
| |
| |
| TextColumn tc1 = new TextColumn(new Text("cf" + 1 ), new Text("obj" )); |
| TextColumn tc2 = new TextColumn(new Text("cf" + 2), new Text("subj" )); |
| |
| |
| tc1.setIsPrefix(true); |
| tc2.setIsPrefix(true); |
| |
| TextColumn[] tc = new TextColumn[2]; |
| tc[0] = tc1; |
| tc[1] = tc2; |
| |
| |
| |
| IteratorSetting is = new IteratorSetting(30, "fii", DocumentIndexIntersectingIterator.class); |
| |
| DocumentIndexIntersectingIterator.setColumnFamilies(is, tc); |
| DocumentIndexIntersectingIterator.setContext(is, "context2"); |
| |
| Scanner scan = accCon.createScanner(tablename, new Authorizations("auths")); |
| |
| scan.addScanIterator(is); |
| |
| int results = 0; |
| System.out.println("************************Test 19****************************"); |
| for (Map.Entry<Key, Value> e : scan) { |
| System.out.println(e); |
| results++; |
| } |
| |
| |
| Assert.assertEquals(100, results); |
| |
| |
| |
| |
| } |
| |
| |
| |
| @Test |
| public void testContext7() throws Exception { |
| |
| BatchWriter bw = null; |
| |
| bw = accCon.createBatchWriter(tablename, 500L * 1024L * 1024L, Long.MAX_VALUE, 30); |
| |
| |
| |
| for (int i = 0; i < 10; i++) { |
| |
| Mutation m = new Mutation(new Text("row" + i)); |
| |
| |
| m.put(new Text("cf" + 1), new Text("context1" + "\u0000" + "obj" + "\u0000" + "cq" + i), new Value(new byte[0])); |
| m.put(new Text("cf" + 2), new Text("context1" + "\u0000" + "obj" + "\u0000" + "cq" + i), new Value(new byte[0])); |
| m.put(new Text("cf" + 2), new Text("context1" + "\u0000" + "obj" + "\u0000" + "cq" + 100 + i), new Value(new byte[0])); |
| m.put(new Text("cf" + 1), new Text("context2" + "\u0000" + "obj" + "\u0000" + "cq" + i), new Value(new byte[0])); |
| m.put(new Text("cf" + 2), new Text("context2" + "\u0000" + "obj" + "\u0000" + "cq" + i), new Value(new byte[0])); |
| m.put(new Text("cf" + 2), new Text("context2" + "\u0000" + "obj" + "\u0000" + "cq" + 100+i), new Value(new byte[0])); |
| |
| |
| bw.addMutation(m); |
| |
| |
| } |
| |
| |
| |
| TextColumn tc1 = new TextColumn(new Text("cf" + 1 ), new Text("obj" )); |
| TextColumn tc2 = new TextColumn(new Text("cf" + 2), new Text("obj" )); |
| |
| |
| tc1.setIsPrefix(true); |
| tc2.setIsPrefix(true); |
| |
| TextColumn[] tc = new TextColumn[2]; |
| tc[0] = tc1; |
| tc[1] = tc2; |
| |
| |
| |
| IteratorSetting is = new IteratorSetting(30, "fii", DocumentIndexIntersectingIterator.class); |
| |
| DocumentIndexIntersectingIterator.setColumnFamilies(is, tc); |
| |
| |
| Scanner scan = accCon.createScanner(tablename, new Authorizations("auths")); |
| |
| scan.addScanIterator(is); |
| |
| int results = 0; |
| System.out.println("************************Test 20****************************"); |
| for (Map.Entry<Key, Value> e : scan) { |
| System.out.println(e); |
| results++; |
| } |
| |
| |
| Assert.assertEquals(40, results); |
| |
| |
| |
| |
| } |
| |
| |
| |
| |
| |
| |
| |
| @Test |
| public void testSerialization1() throws Exception { |
| |
| BatchWriter bw = null; |
| AccumuloRdfConfiguration acc = new AccumuloRdfConfiguration(); |
| acc.set(AccumuloRdfConfiguration.CONF_ADDITIONAL_INDEXERS, EntityCentricIndex.class.getName()); |
| RyaTableMutationsFactory rtm = new RyaTableMutationsFactory(RyaTripleContext.getInstance(acc)); |
| |
| bw = accCon.createBatchWriter(tablename, 500L * 1024L * 1024L, Long.MAX_VALUE, 30); |
| |
| |
| |
| for (int i = 0; i < 20; i++) { |
| |
| |
| RyaStatement rs1 = new RyaStatement(new RyaURI("uri:" + i ), new RyaURI("uri:cf1"), new RyaType(XMLSchema.STRING, "cq1")); |
| RyaStatement rs2 = new RyaStatement(new RyaURI("uri:" + i ), new RyaURI("uri:cf2"), new RyaType(XMLSchema.STRING, "cq2")); |
| RyaStatement rs3 = null; |
| RyaStatement rs4 = null; |
| |
| if(i == 5 || i == 15) { |
| rs3 = new RyaStatement(new RyaURI("uri:" +i ), new RyaURI("uri:cf3"), new RyaType(XMLSchema.INTEGER,Integer.toString(i))); |
| rs4 = new RyaStatement(new RyaURI("uri:" +i ), new RyaURI("uri:cf3"), new RyaType(XMLSchema.STRING,Integer.toString(i))); |
| } |
| |
| |
| |
| Collection<Mutation> m1 = EntityCentricIndex.createMutations(rs1); |
| for (Mutation m : m1) { |
| bw.addMutation(m); |
| } |
| Collection<Mutation> m2 = EntityCentricIndex.createMutations(rs2); |
| for (Mutation m : m2) { |
| bw.addMutation(m); |
| } |
| if (rs3 != null) { |
| Collection<Mutation> m3 = EntityCentricIndex.createMutations(rs3); |
| for (Mutation m : m3) { |
| bw.addMutation(m); |
| } |
| } |
| if (rs4 != null) { |
| Collection<Mutation> m4 = EntityCentricIndex.createMutations(rs4); |
| for (Mutation m : m4) { |
| bw.addMutation(m); |
| } |
| } |
| |
| |
| |
| |
| |
| } |
| |
| String q1 = "" // |
| + "SELECT ?X ?Y1 ?Y2 " // |
| + "{"// |
| + "?X <uri:cf1> ?Y1 ."// |
| + "?X <uri:cf2> ?Y2 ."// |
| + "?X <uri:cf3> 5 ."// |
| + "}"; |
| |
| |
| String q2 = "" // |
| + "SELECT ?X ?Y1 ?Y2 " // |
| + "{"// |
| + "?X <uri:cf1> ?Y1 ."// |
| + "?X <uri:cf2> ?Y2 ."// |
| + "?X <uri:cf3> \"15\" ."// |
| + "}"; |
| |
| |
| |
| SPARQLParser parser = new SPARQLParser(); |
| |
| ParsedQuery pq1 = parser.parseQuery(q1, null); |
| ParsedQuery pq2 = parser.parseQuery(q2, null); |
| |
| TupleExpr te1 = pq1.getTupleExpr(); |
| TupleExpr te2 = pq2.getTupleExpr(); |
| |
| List<StatementPattern> spList1 = StatementPatternCollector.process(te1); |
| List<StatementPattern> spList2 = StatementPatternCollector.process(te2); |
| |
| System.out.println(spList1); |
| System.out.println(spList2); |
| |
| RyaType rt1 = RdfToRyaConversions.convertValue(spList1.get(2).getObjectVar().getValue()); |
| RyaType rt2 = RdfToRyaConversions.convertValue(spList2.get(2).getObjectVar().getValue()); |
| |
| RyaURI predURI1 = (RyaURI) RdfToRyaConversions.convertValue(spList1.get(0).getPredicateVar().getValue()); |
| RyaURI predURI2 = (RyaURI) RdfToRyaConversions.convertValue(spList1.get(1).getPredicateVar().getValue()); |
| RyaURI predURI3 = (RyaURI) RdfToRyaConversions.convertValue(spList1.get(2).getPredicateVar().getValue()); |
| |
| // System.out.println("to string" + spList1.get(2).getObjectVar().getValue().stringValue()); |
| // System.out.println("converted obj" + rt1.getData()); |
| // System.out.println("equal: " + rt1.getData().equals(spList1.get(2).getObjectVar().getValue().stringValue())); |
| |
| |
| System.out.println(rt1); |
| System.out.println(rt2); |
| |
| RyaContext rc = RyaContext.getInstance(); |
| |
| byte[][] b1 = rc.serializeType(rt1); |
| byte[][] b2 = rc.serializeType(rt2); |
| |
| byte[] b3 = Bytes.concat("object".getBytes(), "\u0000".getBytes(), b1[0], b1[1]); |
| byte[] b4 = Bytes.concat("object".getBytes(), "\u0000".getBytes(), b2[0], b2[1]); |
| |
| System.out.println(new String(b3)); |
| System.out.println(new String(b4)); |
| |
| TextColumn tc1 = new TextColumn(new Text(predURI1.getData()), new Text("object")); |
| TextColumn tc2 = new TextColumn(new Text(predURI2.getData()), new Text("object")); |
| TextColumn tc3 = new TextColumn(new Text(predURI3.getData()), new Text(b3)); |
| |
| tc1.setIsPrefix(true); |
| tc2.setIsPrefix(true); |
| |
| TextColumn[] tc = new TextColumn[3]; |
| tc[0] = tc1; |
| tc[1] = tc2; |
| tc[2] = tc3; |
| |
| IteratorSetting is = new IteratorSetting(30, "fii", DocumentIndexIntersectingIterator.class); |
| |
| DocumentIndexIntersectingIterator.setColumnFamilies(is, tc); |
| |
| Scanner scan = accCon.createScanner(tablename, new Authorizations("auths")); |
| |
| scan.addScanIterator(is); |
| |
| int results = 0; |
| System.out.println("************************Test 21****************************"); |
| Text t = null; |
| for (Map.Entry<Key, Value> e : scan) { |
| t = e.getKey().getColumnQualifier(); |
| System.out.println(e); |
| results++; |
| } |
| |
| Assert.assertEquals(1, results); |
| String [] s = t.toString().split("\u001D" + "\u001E"); |
| String[] s1 = s[2].split("\u0000"); |
| RyaType rt = rc.deserialize(s1[2].getBytes()); |
| System.out.println("Rya type is " + rt); |
| org.eclipse.rdf4j.model.Value v = RyaToRdfConversions.convertValue(rt); |
| Assert.assertTrue(v.equals(spList1.get(2).getObjectVar().getValue())); |
| |
| tc1 = new TextColumn(new Text(predURI1.getData()), new Text("object")); |
| tc2 = new TextColumn(new Text(predURI2.getData()), new Text("object")); |
| tc3 = new TextColumn(new Text(predURI3.getData()), new Text(b4)); |
| |
| tc1.setIsPrefix(true); |
| tc2.setIsPrefix(true); |
| |
| tc = new TextColumn[3]; |
| tc[0] = tc1; |
| tc[1] = tc2; |
| tc[2] = tc3; |
| |
| is = new IteratorSetting(30, "fii", DocumentIndexIntersectingIterator.class); |
| |
| DocumentIndexIntersectingIterator.setColumnFamilies(is, tc); |
| |
| scan = accCon.createScanner(tablename, new Authorizations("auths")); |
| |
| scan.addScanIterator(is); |
| |
| results = 0; |
| System.out.println("************************Test 21****************************"); |
| |
| for (Map.Entry<Key, Value> e : scan) { |
| t = e.getKey().getColumnQualifier(); |
| System.out.println(e); |
| results++; |
| } |
| |
| Assert.assertEquals(1, results); |
| s = t.toString().split("\u001D" + "\u001E"); |
| s1 = s[2].split("\u0000"); |
| rt = rc.deserialize(s1[2].getBytes()); |
| System.out.println("Rya type is " + rt); |
| v = RyaToRdfConversions.convertValue(rt); |
| Assert.assertTrue(v.equals(spList2.get(2).getObjectVar().getValue())); |
| |
| |
| |
| |
| } |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| } |