http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/5a03ef61/extras/rya.prospector/src/test/java/mvm/rya/joinselect/AccumuloSelectivityEvalDAOTest.java ---------------------------------------------------------------------- diff --git a/extras/rya.prospector/src/test/java/mvm/rya/joinselect/AccumuloSelectivityEvalDAOTest.java b/extras/rya.prospector/src/test/java/mvm/rya/joinselect/AccumuloSelectivityEvalDAOTest.java deleted file mode 100644 index f40b63f..0000000 --- a/extras/rya.prospector/src/test/java/mvm/rya/joinselect/AccumuloSelectivityEvalDAOTest.java +++ /dev/null @@ -1,592 +0,0 @@ -package mvm.rya.joinselect; - -/* - * 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.math.BigDecimal; -import java.math.MathContext; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; -import java.util.concurrent.TimeUnit; - -import mvm.rya.accumulo.AccumuloRdfConfiguration; -import mvm.rya.api.RdfCloudTripleStoreConfiguration; -import mvm.rya.api.layout.TablePrefixLayoutStrategy; -import mvm.rya.api.persist.RdfEvalStatsDAO; -import mvm.rya.joinselect.AccumuloSelectivityEvalDAO; -import mvm.rya.prospector.service.ProspectorServiceEvalStatsDAO; - -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.BatchWriterConfig; -import org.apache.accumulo.core.client.Connector; -import org.apache.accumulo.core.client.Instance; -import org.apache.accumulo.core.client.Scanner; -import org.apache.accumulo.core.client.TableExistsException; -import org.apache.accumulo.core.client.TableNotFoundException; -import org.apache.accumulo.core.client.admin.TableOperations; -import org.apache.accumulo.core.client.mock.MockInstance; -import org.apache.accumulo.core.client.security.tokens.PasswordToken; -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.junit.Assert; -import org.junit.Before; -import org.junit.Test; -import org.openrdf.query.MalformedQueryException; -import org.openrdf.query.algebra.StatementPattern; -import org.openrdf.query.algebra.TupleExpr; -import org.openrdf.query.algebra.helpers.StatementPatternCollector; -import org.openrdf.query.parser.ParsedQuery; -import org.openrdf.query.parser.sparql.SPARQLParser; - -import com.google.common.collect.Lists; - -public class AccumuloSelectivityEvalDAOTest { - - private static final String DELIM = "\u0000"; - private final byte[] EMPTY_BYTE = new byte[0]; - private final Value EMPTY_VAL = new Value(EMPTY_BYTE); - - private String q1 = ""// - + "SELECT ?h " // - + "{" // - + " ?h <uri:howlsAt> <uri:moon>. "// - + " ?h <http://www.w3.org/2000/01/rdf-schema#label> <uri:dog> ."// - + " ?h <uri:barksAt> <uri:cat> ."// - + " ?h <uri:peesOn> <uri:hydrant> . "// - + "}";// - - private String q2 = ""// - + "SELECT ?h " // - + "{" // - + " <uri:howlsAt> ?h <uri:moon>. "// - + " <http://www.w3.org/2000/01/rdf-schema#label> ?h <uri:dog> ."// - + " <uri:barksAt> ?h <uri:cat> ."// - + " <uri:peesOn> ?h <uri:hydrant> . "// - + "}";// - - private String q3 = ""// - + "SELECT ?h " // - + "{" // - + " <uri:howlsAt> <uri:moon> ?h. "// - + " <http://www.w3.org/2000/01/rdf-schema#label> <uri:dog> ?h ."// - + " <uri:barksAt> ?h <uri:cat> ."// - + " ?h <uri:peesOn> <uri:hydrant> . "// - + "}";// - - private Connector conn; - AccumuloRdfConfiguration arc; - RdfEvalStatsDAO<RdfCloudTripleStoreConfiguration> res; - BatchWriterConfig config; - Instance mock; - - @Before - public void init() throws AccumuloException, AccumuloSecurityException, TableNotFoundException, TableExistsException { - - mock = new MockInstance("accumulo"); - PasswordToken pToken = new PasswordToken("pass".getBytes()); - conn = mock.getConnector("user", pToken); - - config = new BatchWriterConfig(); - config.setMaxMemory(1000); - config.setMaxLatency(1000, TimeUnit.SECONDS); - config.setMaxWriteThreads(10); - - if (conn.tableOperations().exists("rya_prospects")) { - conn.tableOperations().delete("rya_prospects"); - } - if (conn.tableOperations().exists("rya_selectivity")) { - conn.tableOperations().delete("rya_selectivity"); - } - - arc = new AccumuloRdfConfiguration(); - res = new ProspectorServiceEvalStatsDAO(conn, arc); - arc.setTableLayoutStrategy(new TablePrefixLayoutStrategy()); - arc.setMaxRangesForScanner(300); - - } - - @Test - public void testInitialize() throws AccumuloException, AccumuloSecurityException, TableNotFoundException, TableExistsException { - - AccumuloSelectivityEvalDAO accc = new AccumuloSelectivityEvalDAO(); - accc.setConf(arc); - accc.setConnector(conn); - accc.setRdfEvalDAO(res); - accc.init(); - - TableOperations tos = conn.tableOperations(); - Assert.assertTrue(tos.exists("rya_prospects") && tos.exists("rya_selectivity")); - Assert.assertTrue(accc.isInitialized()); - Assert.assertTrue(accc.getConf().equals(arc)); - Assert.assertTrue(accc.getConnector().equals(conn)); - Assert.assertTrue(accc.getRdfEvalDAO().equals(res)); - - } - - @Test - public void testCardinalityQuery1() throws AccumuloException, AccumuloSecurityException, TableExistsException, TableNotFoundException, - MalformedQueryException { - - AccumuloSelectivityEvalDAO accc = new AccumuloSelectivityEvalDAO(); - accc.setConf(arc); - accc.setRdfEvalDAO(res); - accc.setConnector(conn); - accc.init(); - - BatchWriter bw = conn.createBatchWriter("rya_prospects", config); - - BatchWriter bw1 = conn.createBatchWriter("rya_selectivity", config); - Mutation m = new Mutation(new Text("subjectpredicateobject" + DELIM + "FullTableCardinality")); - m.put(new Text("FullTableCardinality"), new Text("600"), EMPTY_VAL); - List<Mutation> list = Lists.newArrayList(); - list.add(m); - bw1.addMutations(list); - bw1.close(); - - String s1 = "predicateobject" + DELIM + "http://www.w3.org/2000/01/rdf-schema#label" + DELIM + "uri:dog"; - String s2 = "predicateobject" + DELIM + "uri:barksAt" + DELIM + "uri:cat"; - String s3 = "predicateobject" + DELIM + "uri:peesOn" + DELIM + "uri:hydrant"; - List<Mutation> mList = new ArrayList<Mutation>(); - Mutation m1, m2, m3; - - Integer tempInt; - Integer tempInt2; - - for (int i = 1; i < 7; i++) { - tempInt = 5 * i; - tempInt2 = 10 - i; - m1 = new Mutation(s1 + DELIM + i); - m1.put(new Text("count"), new Text(""), new Value((tempInt.toString()).getBytes())); - m2 = new Mutation(s2 + DELIM + (7 - i)); - m2.put(new Text("count"), new Text(""), new Value((tempInt.toString()).getBytes())); - m3 = new Mutation(s3 + DELIM + (10 + i)); - m3.put(new Text("count"), new Text(""), new Value((tempInt2.toString()).getBytes())); - mList.add(m1); - mList.add(m2); - mList.add(m3); - } - - bw.addMutations(mList); - bw.close(); - - List<StatementPattern> spList = getSpList(q1); - long c1 = accc.getCardinality(arc, spList.get(0)); - long c2 = accc.getCardinality(arc, spList.get(1)); - long c3 = accc.getCardinality(arc, spList.get(2)); - long c4 = accc.getCardinality(arc, spList.get(3)); - - Assert.assertTrue(c1 == (long) 0); - Assert.assertTrue(c2 == (long) 5); - Assert.assertTrue(c3 == (long) 30); - Assert.assertTrue(c4 == (long) 9); - - } - - @Test - public void testCardinalityQuery2() throws AccumuloException, AccumuloSecurityException, TableExistsException, TableNotFoundException, - MalformedQueryException { - - AccumuloSelectivityEvalDAO accc = new AccumuloSelectivityEvalDAO(); - accc.setConf(arc); - accc.setConnector(conn); - accc.setRdfEvalDAO(res); - accc.init(); - - BatchWriter bw = conn.createBatchWriter("rya_prospects", config); - - BatchWriter bw1 = conn.createBatchWriter("rya_selectivity", config); - Mutation m = new Mutation(new Text("subjectpredicateobject" + DELIM + "FullTableCardinality")); - m.put(new Text("FullTableCardinality"), new Text("600"), EMPTY_VAL); - List<Mutation> list = Lists.newArrayList(); - list.add(m); - bw1.addMutations(list); - bw1.close(); - - String s1 = "subjectobject" + DELIM + "http://www.w3.org/2000/01/rdf-schema#label" + DELIM + "uri:dog"; - String s2 = "subjectobject" + DELIM + "uri:barksAt" + DELIM + "uri:cat"; - String s3 = "subjectobject" + DELIM + "uri:peesOn" + DELIM + "uri:hydrant"; - List<Mutation> mList = new ArrayList<Mutation>(); - Mutation m1, m2, m3; - - Integer tempInt; - Integer tempInt2; - - for (int i = 1; i < 7; i++) { - tempInt = 5 * i; - tempInt2 = 10 - i; - m1 = new Mutation(s1 + DELIM + i); - m1.put(new Text("count"), new Text(""), new Value((tempInt.toString()).getBytes())); - m2 = new Mutation(s2 + DELIM + (7 - i)); - m2.put(new Text("count"), new Text(""), new Value((tempInt.toString()).getBytes())); - m3 = new Mutation(s3 + DELIM + (10 + i)); - m3.put(new Text("count"), new Text(""), new Value((tempInt2.toString()).getBytes())); - mList.add(m1); - mList.add(m2); - mList.add(m3); - } - bw.addMutations(mList); - bw.close(); - - List<StatementPattern> spList = getSpList(q2); - long c1 = accc.getCardinality(arc, spList.get(0)); - long c2 = accc.getCardinality(arc, spList.get(1)); - long c3 = accc.getCardinality(arc, spList.get(2)); - long c4 = accc.getCardinality(arc, spList.get(3)); - - Assert.assertTrue(c1 == (long) 0); - Assert.assertTrue(c2 == (long) 5); - Assert.assertTrue(c3 == (long) 30); - Assert.assertTrue(c4 == (long) 9); - - } - - @Test - public void testJoinCardinalityQuery1() throws AccumuloException, AccumuloSecurityException, TableExistsException, - TableNotFoundException, MalformedQueryException { - - AccumuloSelectivityEvalDAO accc = new AccumuloSelectivityEvalDAO(); - accc.setConf(arc); - accc.setConnector(conn); - accc.setRdfEvalDAO(res); - accc.init(); - - BatchWriter bw1 = conn.createBatchWriter("rya_prospects", config); - BatchWriter bw2 = conn.createBatchWriter("rya_selectivity", config); - - String s1 = "predicateobject" + DELIM + "http://www.w3.org/2000/01/rdf-schema#label" + DELIM + "uri:dog"; - String s2 = "predicateobject" + DELIM + "uri:barksAt" + DELIM + "uri:cat"; - String s3 = "predicateobject" + DELIM + "uri:peesOn" + DELIM + "uri:hydrant"; - List<Mutation> mList = new ArrayList<Mutation>(); - List<Mutation> mList2 = new ArrayList<Mutation>(); - List<String> sList = Arrays.asList("subjectobject", "subjectpredicate", "subjectsubject", "predicateobject", "predicatepredicate", - "predicatesubject"); - Mutation m1, m2, m3, m4; - - m1 = new Mutation(s1 + DELIM + "1"); - m1.put(new Text("count"), new Text(""), new Value("20".getBytes())); - m2 = new Mutation(s2 + DELIM + "2"); - m2.put(new Text("count"), new Text(""), new Value("15".getBytes())); - m3 = new Mutation(s3 + DELIM + "3"); - m3.put(new Text("count"), new Text(""), new Value("10".getBytes())); - mList.add(m1); - mList.add(m2); - mList.add(m3); - - bw1.addMutations(mList); - bw1.close(); - - m1 = new Mutation(s1); - m2 = new Mutation(s2); - m3 = new Mutation(s3); - int i = 30; - int j = 60; - int k = 90; - Long count1; - Long count2; - Long count3; - - for (String s : sList) { - count1 = (long) i; - count2 = (long) j; - count3 = (long) k; - m1.put(new Text(s), new Text(count1.toString()), EMPTY_VAL); - m2.put(new Text(s), new Text(count2.toString()), EMPTY_VAL); - m3.put(new Text(s), new Text(count3.toString()), EMPTY_VAL); - i = 2 * i; - j = 2 * j; - k = 2 * k; - } - m4 = new Mutation(new Text("subjectpredicateobject" + DELIM + "FullTableCardinality")); - m4.put(new Text("FullTableCardinality"), new Text("600"), EMPTY_VAL); - mList2.add(m1); - mList2.add(m2); - mList2.add(m3); - mList2.add(m4); - bw2.addMutations(mList2); - bw2.close(); - - Scanner scan = conn.createScanner("rya_selectivity", new Authorizations()); - scan.setRange(new Range()); - - for (Map.Entry<Key, Value> entry : scan) { - System.out.println("Key row string is " + entry.getKey().getRow().toString()); - System.out.println("Key is " + entry.getKey()); - System.out.println("Value is " + (new String(entry.getKey().getColumnQualifier().toString()))); - - } - - List<StatementPattern> spList = getSpList(q1); - System.out.println(spList); - List<Double> jCardList = new ArrayList<Double>(); - - for (StatementPattern sp1 : spList) { - for (StatementPattern sp2 : spList) { - jCardList.add(accc.getJoinSelect(arc, sp1, sp2)); - } - } - - System.out.println("Join cardinalities are " + jCardList); - - Assert.assertEquals(0, jCardList.get(0), .001); - Assert.assertEquals(0, jCardList.get(3), .001); - Assert.assertEquals(6.0 / 600, jCardList.get(5), .001); - Assert.assertEquals(6.0 / 600, jCardList.get(6), .001); - Assert.assertEquals(0 / 600, jCardList.get(8), .001); - Assert.assertEquals(6.0 / 600, jCardList.get(7), .001); - Assert.assertEquals(15.0 / 600, jCardList.get(11), .001); - Assert.assertEquals(6.0 / 600, jCardList.get(13), .001); - Assert.assertEquals(10.0 / 600, jCardList.get(15), .001); - - Assert.assertTrue(jCardList.get(0) == 0); - Assert.assertTrue(jCardList.get(3) == 0); - Assert.assertTrue(jCardList.get(5) == .01); - Assert.assertTrue(jCardList.get(6) == .01); - Assert.assertTrue(jCardList.get(8) == 0); - Assert.assertTrue(jCardList.get(7) == (6.0 / 600)); - Assert.assertTrue(jCardList.get(11) == (1.0 / 40)); - Assert.assertTrue(jCardList.get(13) == .01); - Assert.assertTrue(jCardList.get(15) == (10.0 / 600)); - - } - - @Test - public void testJoinCardinalityQuery2() throws AccumuloException, AccumuloSecurityException, TableExistsException, - TableNotFoundException, MalformedQueryException { - - AccumuloSelectivityEvalDAO accc = new AccumuloSelectivityEvalDAO(); - accc.setConf(arc); - accc.setConnector(conn); - accc.setRdfEvalDAO(res); - accc.init(); - - BatchWriter bw1 = conn.createBatchWriter("rya_prospects", config); - BatchWriter bw2 = conn.createBatchWriter("rya_selectivity", config); - - String s1 = "subjectobject" + DELIM + "http://www.w3.org/2000/01/rdf-schema#label" + DELIM + "uri:dog"; - String s2 = "subjectobject" + DELIM + "uri:barksAt" + DELIM + "uri:cat"; - String s3 = "subjectobject" + DELIM + "uri:peesOn" + DELIM + "uri:hydrant"; - String s4 = "objectsubject" + DELIM + "uri:dog" + DELIM + "http://www.w3.org/2000/01/rdf-schema#label"; - String s5 = "objectsubject" + DELIM + "uri:cat" + DELIM + "uri:barksAt"; - String s6 = "objectsubject" + DELIM + "uri:hydrant" + DELIM + "uri:peesOn"; - List<String> sList = Arrays.asList("subjectobject", "subjectpredicate", "subjectsubject", "predicateobject", "predicatepredicate", - "predicatesubject"); - List<Mutation> mList = new ArrayList<Mutation>(); - List<Mutation> mList2 = new ArrayList<Mutation>(); - Mutation m1, m2, m3, m4; - - m1 = new Mutation(s1 + DELIM + "1"); - m1.put(new Text("count"), new Text(""), new Value("2".getBytes())); - m2 = new Mutation(s2 + DELIM + "2"); - m2.put(new Text("count"), new Text(""), new Value("4".getBytes())); - m3 = new Mutation(s3 + DELIM + "3"); - m3.put(new Text("count"), new Text(""), new Value("6".getBytes())); - mList.add(m1); - mList.add(m2); - mList.add(m3); - - bw1.addMutations(mList); - bw1.close(); - - m1 = new Mutation(s4); - m2 = new Mutation(s5); - m3 = new Mutation(s6); - int i = 5; - int j = 6; - int k = 7; - Long count1; - Long count2; - Long count3; - - for (String s : sList) { - count1 = (long) i; - count2 = (long) j; - count3 = (long) k; - m1.put(new Text(s), new Text(count1.toString()), EMPTY_VAL); - m2.put(new Text(s), new Text(count2.toString()), EMPTY_VAL); - m3.put(new Text(s), new Text(count3.toString()), EMPTY_VAL); - i = 2 * i; - j = 2 * j; - k = 2 * k; - } - m4 = new Mutation(new Text("subjectpredicateobject" + DELIM + "FullTableCardinality")); - m4.put(new Text("FullTableCardinality"), new Text("600"), EMPTY_VAL); - mList2.add(m1); - mList2.add(m2); - mList2.add(m3); - mList2.add(m4); - bw2.addMutations(mList2); - bw2.close(); - - List<StatementPattern> spList = getSpList(q2); - // System.out.println(spList); - List<Double> jCardList = new ArrayList<Double>(); - - for (StatementPattern sp1 : spList) { - for (StatementPattern sp2 : spList) { - jCardList.add(accc.getJoinSelect(arc, sp1, sp2)); - } - } - - System.out.println("Join cardinalities are " + jCardList); - - Assert.assertEquals(0, jCardList.get(0), .001); - Assert.assertEquals(0, jCardList.get(3), .001); - Assert.assertEquals(2.0 / 600, jCardList.get(5), .001); - Assert.assertEquals(4.0 / 600, jCardList.get(6), .001); - Assert.assertEquals(.0 / 600, jCardList.get(8), .001); - Assert.assertEquals(6. / 600, jCardList.get(7), .001); - Assert.assertEquals(6. / 600, jCardList.get(11), .001); - - Assert.assertTrue(jCardList.get(0) == 0); - Assert.assertTrue(jCardList.get(3) == 0); - Assert.assertTrue(jCardList.get(5) == (1.0 / 300)); - Assert.assertTrue(jCardList.get(6) == (4.0 / 600)); - Assert.assertTrue(jCardList.get(8) == 0); - Assert.assertTrue(jCardList.get(7) == .01); - Assert.assertTrue(jCardList.get(11) == .01); - - } - - @Test - public void testJoinCardinalityQuery3() throws AccumuloException, AccumuloSecurityException, TableExistsException, - TableNotFoundException, MalformedQueryException { - - AccumuloSelectivityEvalDAO accc = new AccumuloSelectivityEvalDAO(); - accc.setConf(arc); - accc.setConnector(conn); - accc.setRdfEvalDAO(res); - accc.init(); - - BatchWriter bw1 = conn.createBatchWriter("rya_prospects", config); - BatchWriter bw2 = conn.createBatchWriter("rya_selectivity", config); - - String s1 = "subjectpredicate" + DELIM + "http://www.w3.org/2000/01/rdf-schema#label" + DELIM + "uri:dog"; - String s2 = "subjectobject" + DELIM + "uri:barksAt" + DELIM + "uri:cat"; - String s3 = "predicateobject" + DELIM + "uri:peesOn" + DELIM + "uri:hydrant"; - String s4 = "subjectpredicate" + DELIM + "uri:howlsAt" + DELIM + "uri:moon"; - String s5 = "objectsubject" + DELIM + "uri:cat" + DELIM + "uri:barksAt"; - - List<String> sList = Arrays.asList("subjectobject", "objectsubject", "objectobject", "objectpredicate", "subjectpredicate", - "subjectsubject", "predicateobject", "predicatepredicate", "predicatesubject"); - List<Mutation> mList = new ArrayList<Mutation>(); - List<Mutation> mList2 = new ArrayList<Mutation>(); - Mutation m1, m2, m3, m4, m5, m6; - - m1 = new Mutation(s1 + DELIM + "1"); - m1.put(new Text("count"), new Text(""), new Value("15".getBytes())); - m2 = new Mutation(s2 + DELIM + "2"); - m2.put(new Text("count"), new Text(""), new Value("11".getBytes())); - m3 = new Mutation(s3 + DELIM + "3"); - m3.put(new Text("count"), new Text(""), new Value("13".getBytes())); - m4 = new Mutation(s4 + DELIM + "8"); - m4.put(new Text("count"), new Text(""), new Value("20".getBytes())); - m5 = new Mutation(s4 + DELIM + "2"); - m5.put(new Text("count"), new Text(""), new Value("10".getBytes())); - - mList.add(m1); - mList.add(m2); - mList.add(m3); - mList.add(m4); - mList.add(m5); - - bw1.addMutations(mList); - bw1.close(); - - m1 = new Mutation(s1); - m2 = new Mutation(s5); - m3 = new Mutation(s3); - m4 = new Mutation(s4); - int i = 5; - int j = 6; - int k = 7; - int l = 8; - Long count1; - Long count2; - Long count3; - Long count4; - - for (String s : sList) { - count1 = (long) i; - count2 = (long) j; - count3 = (long) k; - count4 = (long) l; - m1.put(new Text(s), new Text(count1.toString()), EMPTY_VAL); - m2.put(new Text(s), new Text(count2.toString()), EMPTY_VAL); - m3.put(new Text(s), new Text(count3.toString()), EMPTY_VAL); - m4.put(new Text(s), new Text(count4.toString()), EMPTY_VAL); - i = 2 * i; - j = 2 * j; - k = 2 * k; - l = 2 * l; - } - m5 = new Mutation(new Text("subjectpredicateobject" + DELIM + "FullTableCardinality")); - m5.put(new Text("FullTableCardinality"), new Text("600"), EMPTY_VAL); - mList2.add(m1); - mList2.add(m2); - mList2.add(m3); - mList2.add(m4); - mList2.add(m5); - bw2.addMutations(mList2); - bw2.close(); - - List<StatementPattern> spList = getSpList(q3); - System.out.println(spList); - List<Double> jCardList = new ArrayList<Double>(); - - for (StatementPattern sp1 : spList) { - for (StatementPattern sp2 : spList) { - jCardList.add(accc.getJoinSelect(arc, sp1, sp2)); - } - } - - MathContext mc = new MathContext(3); - - Assert.assertEquals(3.2 / 600, jCardList.get(0), .001); - Assert.assertEquals(0.5384615384615384 / 600, jCardList.get(3), .001); - Assert.assertEquals(1.3333333333333333 / 600, jCardList.get(5), .001); - Assert.assertEquals(2.6666666666666665 / 600, jCardList.get(6), .001); - Assert.assertEquals(6.4 / 600, jCardList.get(8), .001); - Assert.assertEquals(13. / 600, jCardList.get(15), .001); - - Assert.assertTrue(new BigDecimal(jCardList.get(2)).round(mc).equals(new BigDecimal(64.0 / 6000).round(mc))); - Assert.assertTrue(new BigDecimal(jCardList.get(7)).round(mc).equals(new BigDecimal(7.0 / 7800).round(mc))); - Assert.assertTrue(new BigDecimal(jCardList.get(14)).round(mc).equals(new BigDecimal(112.0 / 7800).round(mc))); - - } - - private List<StatementPattern> getSpList(String query) throws MalformedQueryException { - - SPARQLParser sp = new SPARQLParser(); - ParsedQuery pq = sp.parseQuery(query, null); - TupleExpr te = pq.getTupleExpr(); - - return StatementPatternCollector.process(te); - } - -}
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/5a03ef61/extras/rya.prospector/src/test/java/mvm/rya/joinselect/mr/CardinalityIdentityReducerTest.java ---------------------------------------------------------------------- diff --git a/extras/rya.prospector/src/test/java/mvm/rya/joinselect/mr/CardinalityIdentityReducerTest.java b/extras/rya.prospector/src/test/java/mvm/rya/joinselect/mr/CardinalityIdentityReducerTest.java deleted file mode 100644 index 4a57f31..0000000 --- a/extras/rya.prospector/src/test/java/mvm/rya/joinselect/mr/CardinalityIdentityReducerTest.java +++ /dev/null @@ -1,141 +0,0 @@ -package mvm.rya.joinselect.mr; - -/* - * 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.io.IOException; -import java.util.ArrayList; -import java.util.List; - -import mvm.rya.joinselect.mr.utils.CardList; -import mvm.rya.joinselect.mr.utils.TripleEntry; - -import org.apache.accumulo.core.data.Mutation; -import org.apache.accumulo.core.data.Value; -import org.apache.hadoop.io.Text; -import org.apache.hadoop.mrunit.mapreduce.ReduceDriver; -import org.junit.Test; - -public class CardinalityIdentityReducerTest { - - private static final String DELIM = "\u0000"; - - @Test - public void testCIReducerOneConstant() throws InterruptedException, IOException { - - TripleEntry te = new TripleEntry(new Text("urn:gem:etype#1234"), new Text(""), new Text("subject"), new Text(""), new Text("object")); - CardList cL1 = new CardList(1, 2, 3, 0, 0, 0); - CardList cL2 = new CardList(4, 5, 6, 0, 0, 0); - CardList cl = new CardList(5, 7, 9, 0, 0, 0); - List<CardList> list = new ArrayList<CardList>(); - list.add(cL1); - list.add(cL2); - - Text row = new Text(te.getFirstPos().toString() + DELIM + te.getFirst().toString()); - Mutation m1 = new Mutation(row); - m1.put(new Text(te.getKeyPos().toString() + "subject"), new Text(cl.getcardS().toString()), new Value(new byte[0])); - Mutation m2 = new Mutation(row); - m2.put(new Text(te.getKeyPos().toString() + "predicate"), new Text(cl.getcardP().toString()), new Value(new byte[0])); - Mutation m3 = new Mutation(row); - m3.put(new Text(te.getKeyPos().toString() + "object"), new Text(cl.getcardO().toString()), new Value(new byte[0])); - Text table = new Text(""); - - new ReduceDriver<TripleEntry,CardList,Text,Mutation>().withReducer(new JoinSelectStatisticsSum.CardinalityIdentityReducer()).withInput(te, list) - .withOutput(table, m1).withOutput(table, m2).withOutput(table, m3).runTest(); - - } - - @Test - public void testCIReducerTwoConstant() throws InterruptedException, IOException { - - TripleEntry te = new TripleEntry(new Text("urn:gem:etype#1234"), new Text("urn:gem#pred"), new Text("subject"), new Text("predicate"), new Text("object")); - CardList cL1 = new CardList(1, 2, 3, 0, 0, 0); - CardList cL2 = new CardList(4, 5, 6, 0, 0, 0); - CardList cl = new CardList(5, 7, 9, 0, 0, 0); - List<CardList> list = new ArrayList<CardList>(); - list.add(cL1); - list.add(cL2); - - Text row = new Text(te.getFirstPos().toString() + te.getSecondPos().toString() + DELIM + te.getFirst().toString() + DELIM + te.getSecond()); - Mutation m1 = new Mutation(row); - m1.put(new Text(te.getKeyPos().toString() + "subject"), new Text(cl.getcardS().toString()), new Value(new byte[0])); - Mutation m2 = new Mutation(row); - m2.put(new Text(te.getKeyPos().toString() + "predicate"), new Text(cl.getcardP().toString()), new Value(new byte[0])); - Mutation m3 = new Mutation(row); - m3.put(new Text(te.getKeyPos().toString() + "object"), new Text(cl.getcardO().toString()), new Value(new byte[0])); - Text table = new Text(""); - - new ReduceDriver<TripleEntry,CardList,Text,Mutation>().withReducer(new JoinSelectStatisticsSum.CardinalityIdentityReducer()).withInput(te, list) - .withOutput(table, m1).withOutput(table, m2).withOutput(table, m3).runTest(); - - } - - @Test - public void testJoinTwoVars() throws InterruptedException, IOException { - - TripleEntry te = new TripleEntry(new Text("urn:gem:etype#1234"), new Text(""), new Text("subject"), new Text(""), new Text("predicateobject")); - CardList cL1 = new CardList(0, 0, 0, 1, 2, 3); - CardList cL2 = new CardList(0, 0, 0, 4, 5, 6); - CardList cl = new CardList(0, 0, 0, 5, 7, 9); - List<CardList> list = new ArrayList<CardList>(); - list.add(cL1); - list.add(cL2); - - Text row = new Text(te.getFirstPos().toString() + DELIM + te.getFirst().toString()); - Mutation m1 = new Mutation(row); - m1.put(new Text(te.getKeyPos().toString() + "subjectpredicate"), new Text(cl.getcardSP().toString()), new Value(new byte[0])); - Mutation m2 = new Mutation(row); - m2.put(new Text(te.getKeyPos().toString() + "predicateobject"), new Text(cl.getcardPO().toString()), new Value(new byte[0])); - Mutation m3 = new Mutation(row); - m3.put(new Text(te.getKeyPos().toString() + "objectsubject"), new Text(cl.getcardSO().toString()), new Value(new byte[0])); - Text table = new Text(""); - - new ReduceDriver<TripleEntry,CardList,Text,Mutation>().withReducer(new JoinSelectStatisticsSum.CardinalityIdentityReducer()).withInput(te, list) - .withOutput(table, m1).withOutput(table, m2).withOutput(table, m3).runTest(); - - } - - @Test - public void testJoinTwoVarsReverseOrder() throws InterruptedException, IOException { - - TripleEntry te = new TripleEntry(new Text("urn:gem:etype#1234"), new Text(""), new Text("subject"), new Text(""), new Text("objectpredicate")); - CardList cL1 = new CardList(0, 0, 0, 1, 2, 3); - CardList cL2 = new CardList(0, 0, 0, 4, 5, 6); - CardList cl = new CardList(0, 0, 0, 5, 7, 9); - List<CardList> list = new ArrayList<CardList>(); - list.add(cL1); - list.add(cL2); - - Text row = new Text(te.getFirstPos().toString() + DELIM + te.getFirst().toString()); - Mutation m1 = new Mutation(row); - m1.put(new Text("predicateobject" + "predicatesubject"), new Text(cl.getcardSP().toString()), new Value(new byte[0])); - Mutation m2 = new Mutation(row); - m2.put(new Text("predicateobject" + "objectpredicate"), new Text(cl.getcardPO().toString()), new Value(new byte[0])); - Mutation m3 = new Mutation(row); - m3.put(new Text("predicateobject" + "subjectobject"), new Text(cl.getcardSO().toString()), new Value(new byte[0])); - Text table = new Text(""); - - new ReduceDriver<TripleEntry,CardList,Text,Mutation>().withReducer(new JoinSelectStatisticsSum.CardinalityIdentityReducer()).withInput(te, list) - .withOutput(table, m1).withOutput(table, m2).withOutput(table, m3).runTest(); - - } - -} http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/5a03ef61/extras/rya.prospector/src/test/java/mvm/rya/joinselect/mr/CardinalityMapperTest.java ---------------------------------------------------------------------- diff --git a/extras/rya.prospector/src/test/java/mvm/rya/joinselect/mr/CardinalityMapperTest.java b/extras/rya.prospector/src/test/java/mvm/rya/joinselect/mr/CardinalityMapperTest.java deleted file mode 100644 index 3818300..0000000 --- a/extras/rya.prospector/src/test/java/mvm/rya/joinselect/mr/CardinalityMapperTest.java +++ /dev/null @@ -1,76 +0,0 @@ -package mvm.rya.joinselect.mr; - -/* - * 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.io.IOException; - -import mvm.rya.joinselect.mr.JoinSelectProspectOutput; -import mvm.rya.joinselect.mr.utils.CardinalityType; -import mvm.rya.joinselect.mr.utils.CompositeType; -import mvm.rya.joinselect.mr.utils.TripleCard; - -import org.apache.accumulo.core.data.Key; -import org.apache.accumulo.core.data.Value; -import org.apache.hadoop.io.Text; -import org.apache.hadoop.mrunit.mapreduce.MapDriver; -import org.junit.Test; - -public class CardinalityMapperTest { - - private static final String DELIM = "\u0000"; - - public enum TripleValueType { - subject, predicate, object, subjectpredicate, predicateobject, subjectobject - } - - @Test - public void testOutput() throws InterruptedException, IOException { - - String s = "urn:gem:etype#1234"; - String p = "urn:gem#pred"; - - Text t1 = new Text(TripleValueType.subject.name() + DELIM + s + DELIM + 1); - Text t2 = new Text(TripleValueType.predicate.name() + DELIM + p + DELIM + 2); - Text t3 = new Text(TripleValueType.subjectpredicate.name() + DELIM + s + DELIM + p + DELIM + 3); - - byte[] b = new byte[0]; - byte[] c = "25".getBytes(); - byte[] d = "47".getBytes(); - byte[] e = "15".getBytes(); - - Key key1 = new Key(t1.getBytes(), b, b, b, 1); - Key key2 = new Key(t2.getBytes(), b, b, b, 1); - Key key3 = new Key(t3.getBytes(), b, b, b, 1); - Value val1 = new Value(c); - Value val2 = new Value(d); - Value val3 = new Value(e); - - // System.out.println("Keys are " + key1 + " and " + key2); - - new MapDriver<Key,Value,CompositeType,TripleCard>().withMapper(new JoinSelectProspectOutput.CardinalityMapper()).withInput(key1, val1) - .withInput(key2, val2).withInput(key3, val3).withOutput(new CompositeType(s, 1), new TripleCard(new CardinalityType(25, "subject", 1))) - .withOutput(new CompositeType(p, 1), new TripleCard(new CardinalityType(47, "predicate", 2))) - .withOutput(new CompositeType(s + DELIM + p, 1), new TripleCard(new CardinalityType(15, "subjectpredicate", 3))).runTest(); - - } - -} http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/5a03ef61/extras/rya.prospector/src/test/java/mvm/rya/joinselect/mr/FullTableSizeTest.java ---------------------------------------------------------------------- diff --git a/extras/rya.prospector/src/test/java/mvm/rya/joinselect/mr/FullTableSizeTest.java b/extras/rya.prospector/src/test/java/mvm/rya/joinselect/mr/FullTableSizeTest.java deleted file mode 100644 index 705edb1..0000000 --- a/extras/rya.prospector/src/test/java/mvm/rya/joinselect/mr/FullTableSizeTest.java +++ /dev/null @@ -1,64 +0,0 @@ -package mvm.rya.joinselect.mr; - -/* - * 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.io.IOException; - -import mvm.rya.joinselect.mr.FullTableSize; - -import org.apache.accumulo.core.data.Key; -import org.apache.accumulo.core.data.Mutation; -import org.apache.accumulo.core.data.Value; -import org.apache.hadoop.io.IntWritable; -import org.apache.hadoop.io.Text; -import org.apache.hadoop.mrunit.mapreduce.MapReduceDriver; -import org.junit.Test; - -//TODO fix table names! - -public class FullTableSizeTest { - - private static final String DELIM = "\u0000"; - - @Test - public void testFullTableSize() throws IOException { - - Value value = new Value(new byte[0]); - - Mutation m = new Mutation(new Text("subjectpredicateobject" + DELIM + "FullTableCardinality")); - m.put(new Text("FullTableCardinality"), new Text("15"), new Value(new byte[0])); - - new MapReduceDriver<Key, Value, Text, IntWritable, Text, Mutation>() - .withMapper(new FullTableSize.FullTableMapper()).withInput(new Key(new Text("entry1")), value) - .withInput(new Key(new Text("entry2")), value).withInput(new Key(new Text("entry3")), value) - .withInput(new Key(new Text("entry4")), value).withInput(new Key(new Text("entry5")), value) - .withInput(new Key(new Text("entry6")), value).withInput(new Key(new Text("entry7")), value) - .withInput(new Key(new Text("entry8")), value).withInput(new Key(new Text("entry9")), value) - .withInput(new Key(new Text("entry10")), value).withInput(new Key(new Text("entry11")), value) - .withInput(new Key(new Text("entry12")), value).withInput(new Key(new Text("entry13")), value) - .withInput(new Key(new Text("entry14")), value).withInput(new Key(new Text("entry15")), value) - .withCombiner(new FullTableSize.FullTableCombiner()).withReducer(new FullTableSize.FullTableReducer()) - .withOutput(new Text(""), m).runTest(); - - } - -} http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/5a03ef61/extras/rya.prospector/src/test/java/mvm/rya/joinselect/mr/JoinReducerTest.java ---------------------------------------------------------------------- diff --git a/extras/rya.prospector/src/test/java/mvm/rya/joinselect/mr/JoinReducerTest.java b/extras/rya.prospector/src/test/java/mvm/rya/joinselect/mr/JoinReducerTest.java deleted file mode 100644 index be03565..0000000 --- a/extras/rya.prospector/src/test/java/mvm/rya/joinselect/mr/JoinReducerTest.java +++ /dev/null @@ -1,124 +0,0 @@ -package mvm.rya.joinselect.mr; - -/* - * 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.io.IOException; -import java.util.ArrayList; -import java.util.List; - -import mvm.rya.joinselect.mr.JoinSelectAggregate; -import mvm.rya.joinselect.mr.utils.CardList; -import mvm.rya.joinselect.mr.utils.CardinalityType; -import mvm.rya.joinselect.mr.utils.CompositeType; -import mvm.rya.joinselect.mr.utils.TripleCard; -import mvm.rya.joinselect.mr.utils.TripleEntry; - -import org.apache.hadoop.mrunit.mapreduce.ReduceDriver; -import org.junit.Test; - -public class JoinReducerTest { - - private static final String DELIM = "\u0000"; - - @Test - public void testSingleConstCard() throws InterruptedException, IOException { - - CompositeType ct = new CompositeType("urn:gem:etype#1234", 1); - TripleEntry te = new TripleEntry("urn:gem#pred", "urn:gem:etype#4567", "predicate", "object", "subject"); - CardinalityType c5 = new CardinalityType(45, "object", 0); - CardinalityType c1 = new CardinalityType(25, "subject", 2); - CardinalityType c2 = new CardinalityType(27, "predicate", 2); - CardinalityType c3 = new CardinalityType(29, "object", 2); - CardinalityType c4 = new CardinalityType(31, "predicate", 1); - List<TripleCard> list = new ArrayList<TripleCard>(); - list.add(new TripleCard(c1)); - list.add(new TripleCard(c2)); - list.add(new TripleCard(c3)); - list.add(new TripleCard(c4)); - list.add(new TripleCard(c5)); - list.add(new TripleCard(te)); - System.out.println("List is " + list); - - new ReduceDriver<CompositeType,TripleCard,TripleEntry,CardList>().withReducer(new JoinSelectAggregate.JoinReducer()).withInput(ct, list) - .withOutput(te, new CardList(25, 31, 45, 0, 0, 0)).runTest(); - - } - - @Test - public void testTwoTripleEntry() throws InterruptedException, IOException { - - CompositeType ct = new CompositeType("urn:gem:etype#1234", 1); - TripleEntry te1 = new TripleEntry("urn:gem#pred", "urn:gem:etype#4567", "predicate", "object", "subject"); - TripleEntry te2 = new TripleEntry("urn:gem#8910", "urn:gem:etype#4567", "subject", "predicate", "object"); - CardinalityType c5 = new CardinalityType(45, "object", 0); - CardinalityType c1 = new CardinalityType(25, "subject", 2); - CardinalityType c2 = new CardinalityType(27, "predicate", 2); - CardinalityType c3 = new CardinalityType(29, "object", 2); - CardinalityType c4 = new CardinalityType(31, "predicate", 1); - List<TripleCard> list = new ArrayList<TripleCard>(); - list.add(new TripleCard(c1)); - list.add(new TripleCard(c2)); - list.add(new TripleCard(c3)); - list.add(new TripleCard(c4)); - list.add(new TripleCard(c5)); - list.add(new TripleCard(te1)); - list.add(new TripleCard(te2)); - System.out.println("List is " + list); - - new ReduceDriver<CompositeType,TripleCard,TripleEntry,CardList>().withReducer(new JoinSelectAggregate.JoinReducer()).withInput(ct, list) - .withOutput(te1, new CardList(25, 31, 45, 0, 0, 0)).withOutput(te2, new CardList(25, 31, 45, 0, 0, 0)).runTest(); - - } - - @Test - public void testTwoConstCard() throws InterruptedException, IOException { - - CompositeType ct1 = new CompositeType("urn:gem#pred" + DELIM + "urn:gem:etype#1234", 1); - TripleEntry te1 = new TripleEntry("uri:testSubject", "", "subject", "", "predicateobject"); - TripleEntry te2 = new TripleEntry("uri:testSubject", "", "subject", "", "objectpredicate"); - - CardinalityType c5 = new CardinalityType(45, "subjectobject", 0); - CardinalityType c1 = new CardinalityType(25, "subjectobject", 2); - CardinalityType c2 = new CardinalityType(27, "predicateobject", 5); - CardinalityType c3 = new CardinalityType(29, "predicateobject", 2); - CardinalityType c4 = new CardinalityType(31, "subjectpredicate", 1); - CardinalityType c6 = new CardinalityType(56, "subjectpredicate", 2); - - List<TripleCard> list1 = new ArrayList<TripleCard>(); - - list1.add(new TripleCard(c1)); - list1.add(new TripleCard(c2)); - list1.add(new TripleCard(c3)); - list1.add(new TripleCard(c4)); - list1.add(new TripleCard(c5)); - list1.add(new TripleCard(c6)); - list1.add(new TripleCard(te1)); - list1.add(new TripleCard(te2)); - - // System.out.println("List is " + list); - - new ReduceDriver<CompositeType,TripleCard,TripleEntry,CardList>().withReducer(new JoinSelectAggregate.JoinReducer()).withInput(ct1, list1) - .withOutput(te1, new CardList(0, 0, 0, 31, 29, 45)).withOutput(te2, new CardList(0, 0, 0, 31, 29, 45)).runTest(); - - } - -} http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/5a03ef61/extras/rya.prospector/src/test/java/mvm/rya/joinselect/mr/JoinSelectMapperTest.java ---------------------------------------------------------------------- diff --git a/extras/rya.prospector/src/test/java/mvm/rya/joinselect/mr/JoinSelectMapperTest.java b/extras/rya.prospector/src/test/java/mvm/rya/joinselect/mr/JoinSelectMapperTest.java deleted file mode 100644 index 0d53b90..0000000 --- a/extras/rya.prospector/src/test/java/mvm/rya/joinselect/mr/JoinSelectMapperTest.java +++ /dev/null @@ -1,94 +0,0 @@ -package mvm.rya.joinselect.mr; - -/* - * 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.io.IOException; -import java.util.Map; - -import mvm.rya.joinselect.mr.JoinSelectSpoTableOutput; -import mvm.rya.joinselect.mr.utils.CompositeType; -import mvm.rya.joinselect.mr.utils.TripleCard; -import mvm.rya.joinselect.mr.utils.TripleEntry; -import mvm.rya.api.RdfCloudTripleStoreConstants.TABLE_LAYOUT; -import mvm.rya.api.domain.RyaStatement; -import mvm.rya.api.domain.RyaType; -import mvm.rya.api.domain.RyaURI; -import mvm.rya.api.resolver.triple.TripleRow; -import mvm.rya.api.resolver.triple.TripleRowResolver; -import mvm.rya.api.resolver.triple.TripleRowResolverException; -import mvm.rya.api.resolver.triple.impl.WholeRowTripleResolver; - -import org.apache.accumulo.core.data.Key; -import org.apache.accumulo.core.data.Value; -import org.apache.hadoop.io.IntWritable; -import org.apache.hadoop.io.Text; -import org.apache.hadoop.mrunit.mapreduce.MapDriver; -import org.junit.Test; - -public class JoinSelectMapperTest { - - private static final String DELIM = "\u0000"; - - @Test - public void testOutput() throws TripleRowResolverException, IOException { - - RyaStatement rya = new RyaStatement(new RyaURI("urn:gem:etype#1234"), new RyaURI("urn:gem#pred"), new RyaType("mydata1")); - Text s = new Text(rya.getSubject().getData()); - Text p = new Text(rya.getPredicate().getData()); - Text o = new Text(rya.getObject().getData()); - Text sp = new Text(rya.getSubject().getData() + DELIM + rya.getPredicate().getData()); - Text so = new Text(rya.getSubject().getData() + DELIM + rya.getObject().getData()); - Text po = new Text(rya.getPredicate().getData() + DELIM + rya.getObject().getData()); - Text ps = new Text(rya.getPredicate().getData() + DELIM + rya.getSubject().getData()); - Text op = new Text(rya.getObject().getData() + DELIM + rya.getPredicate().getData()); - Text os = new Text(rya.getObject().getData() + DELIM + rya.getSubject().getData()); - - TripleEntry t1 = new TripleEntry(s, p, new Text("subject"), new Text("predicate"), new Text("object")); - TripleEntry t2 = new TripleEntry(p, o, new Text("predicate"), new Text("object"), new Text("subject")); - TripleEntry t3 = new TripleEntry(o, s, new Text("object"), new Text("subject"), new Text("predicate")); - TripleEntry t4 = new TripleEntry(o, new Text(""), new Text("object"), new Text(""), new Text("subjectpredicate")); - TripleEntry t5 = new TripleEntry(p, new Text(""), new Text("predicate"), new Text(""), new Text("objectsubject")); - TripleEntry t6 = new TripleEntry(s, new Text(""), new Text("subject"), new Text(""), new Text("predicateobject")); - TripleEntry t7 = new TripleEntry(s, new Text(""), new Text("subject"), new Text(""), new Text("objectpredicate")); - TripleEntry t8 = new TripleEntry(p, new Text(""), new Text("predicate"), new Text(""), new Text("subjectobject")); - TripleEntry t9 = new TripleEntry(o, new Text(""), new Text("object"), new Text(""), new Text("predicatesubject")); - - TripleRowResolver trr = new WholeRowTripleResolver(); - Map<TABLE_LAYOUT,TripleRow> map = trr.serialize(rya); - System.out.println(map); - TripleRow tr = map.get(TABLE_LAYOUT.SPO); - System.out.println("Triple row is" + tr); - System.out.println("ColumnV is " + tr.getTimestamp()); - byte[] b = new byte[0]; - Key key = new Key(tr.getRow(), tr.getColumnFamily(), tr.getColumnQualifier(), b, 1); - Value val = new Value(b); - - new MapDriver<Key,Value,CompositeType,TripleCard>().withMapper(new JoinSelectSpoTableOutput.JoinSelectMapper()).withInput(key, val) - .withOutput(new CompositeType(o, new IntWritable(2)), new TripleCard(t1)).withOutput(new CompositeType(s, new IntWritable(2)), new TripleCard(t2)) - .withOutput(new CompositeType(p, new IntWritable(2)), new TripleCard(t3)).withOutput(new CompositeType(po, new IntWritable(2)), new TripleCard(t6)) - .withOutput(new CompositeType(so, new IntWritable(2)), new TripleCard(t5)).withOutput(new CompositeType(sp, new IntWritable(2)), new TripleCard(t4)) - .withOutput(new CompositeType(op, new IntWritable(2)), new TripleCard(t7)).withOutput(new CompositeType(os, new IntWritable(2)), new TripleCard(t8)) - .withOutput(new CompositeType(ps, new IntWritable(2)), new TripleCard(t9)).runTest(); - - } - -} http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/5a03ef61/extras/rya.prospector/src/test/java/mvm/rya/joinselect/mr/JoinSelectProspectOutputTest.java ---------------------------------------------------------------------- diff --git a/extras/rya.prospector/src/test/java/mvm/rya/joinselect/mr/JoinSelectProspectOutputTest.java b/extras/rya.prospector/src/test/java/mvm/rya/joinselect/mr/JoinSelectProspectOutputTest.java deleted file mode 100644 index 19c90a3..0000000 --- a/extras/rya.prospector/src/test/java/mvm/rya/joinselect/mr/JoinSelectProspectOutputTest.java +++ /dev/null @@ -1,89 +0,0 @@ -package mvm.rya.joinselect.mr; - -/* - * 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 static org.junit.Assert.*; - -import org.junit.Test; - -import java.io.IOException; - -import mvm.rya.joinselect.mr.JoinSelectProspectOutput; -import mvm.rya.joinselect.mr.utils.CardinalityType; -import mvm.rya.joinselect.mr.utils.CompositeType; -import mvm.rya.joinselect.mr.utils.TripleCard; - -import org.apache.accumulo.core.data.Key; -import org.apache.accumulo.core.data.Value; -import org.apache.hadoop.io.IntWritable; -import org.apache.hadoop.io.Text; -import org.apache.hadoop.mrunit.mapreduce.MapDriver; -import org.junit.Test; - -public class JoinSelectProspectOutputTest { - - private static final String DELIM = "\u0000"; - - public enum TripleValueType { - subject, predicate, object, subjectpredicate, predicateobject, subjectobject - } - - @Test - public void testOutput() throws InterruptedException, IOException { - - String s = "urn:gem:etype#1234"; - String p = "urn:gem#pred"; - - String ts = "798497748386999999"; - - Text t1 = new Text(TripleValueType.subject.name() + DELIM + s + DELIM + 1); - Text t2 = new Text(TripleValueType.predicate.name() + DELIM + p + DELIM + 2); - Text t3 = new Text(TripleValueType.subjectpredicate.name() + DELIM + s + DELIM + p + DELIM + ts); - - byte[] b = new byte[0]; - byte[] c = "25".getBytes(); - byte[] d = "47".getBytes(); - byte[] e = "15".getBytes(); - - Key key1 = new Key(t1.getBytes(), b, b, b, 1); - Key key2 = new Key(t2.getBytes(), b, b, b, 1); - Key key3 = new Key(t3.getBytes(), b, b, b, 1); - Value val1 = new Value(c); - Value val2 = new Value(d); - Value val3 = new Value(e); - - - - // System.out.println("Keys are " + key1 + " and " + key2); - - new MapDriver<Key, Value, CompositeType, TripleCard>() - .withMapper(new JoinSelectProspectOutput.CardinalityMapper()) - .withInput(key1, val1) - .withInput(key2, val2) - .withInput(key3, val3) - .withOutput(new CompositeType(s, 1), new TripleCard(new CardinalityType(25, "subject", 1))) - .withOutput(new CompositeType(p, 1), new TripleCard(new CardinalityType(47, "predicate", 2))) - .withOutput(new CompositeType(s + DELIM + p, 1), - new TripleCard(new CardinalityType(15, "subjectpredicate", Long.parseLong(ts)))).runTest(); - - } - -} http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/5a03ef61/extras/rya.prospector/src/test/java/mvm/rya/joinselect/mr/JoinSelectStatisticsSumTest.java ---------------------------------------------------------------------- diff --git a/extras/rya.prospector/src/test/java/mvm/rya/joinselect/mr/JoinSelectStatisticsSumTest.java b/extras/rya.prospector/src/test/java/mvm/rya/joinselect/mr/JoinSelectStatisticsSumTest.java deleted file mode 100644 index 98236d3..0000000 --- a/extras/rya.prospector/src/test/java/mvm/rya/joinselect/mr/JoinSelectStatisticsSumTest.java +++ /dev/null @@ -1,60 +0,0 @@ -package mvm.rya.joinselect.mr; - -/* - * 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.io.IOException; - -import mvm.rya.joinselect.mr.JoinSelectStatisticsSum; -import mvm.rya.joinselect.mr.utils.CardList; -import mvm.rya.joinselect.mr.utils.TripleEntry; - -import org.apache.hadoop.io.Text; -import org.apache.hadoop.mrunit.mapreduce.MapDriver; -import org.junit.Test; - -public class JoinSelectStatisticsSumTest { - - @Test - public void testFullTripleEntry() throws InterruptedException, IOException { - - TripleEntry te1 = new TripleEntry(new Text("urn:gem:etype#1234"), new Text("urn:gem#pred"), new Text("subject"), new Text("predicate"), new Text("object")); - CardList cl = new CardList(34, 52, 63, 0, 0, 0); - TripleEntry te2 = new TripleEntry(new Text("urn:gem:etype#1234"), new Text(""), new Text("subject"), new Text(""), new Text("object")); - TripleEntry te3 = new TripleEntry(new Text("urn:gem#pred"), new Text(""), new Text("predicate"), new Text(""), new Text("object")); - - new MapDriver<TripleEntry,CardList,TripleEntry,CardList>().withMapper(new JoinSelectStatisticsSum.CardinalityIdentityMapper()).withInput(te1, cl) - .withOutput(te2, cl).withOutput(te3, cl).withOutput(te1, cl).runTest(); - - } - - @Test - public void testPartialTripleEntry() throws InterruptedException, IOException { - - TripleEntry te1 = new TripleEntry(new Text("urn:gem:etype#1234"), new Text(""), new Text("subject"), new Text(""), new Text("object")); - CardList cl = new CardList(34, 52, 63, 0, 0, 0); - - new MapDriver<TripleEntry,CardList,TripleEntry,CardList>().withMapper(new JoinSelectStatisticsSum.CardinalityIdentityMapper()).withInput(te1, cl) - .withOutput(te1, cl).runTest(); - - } - -}
