From: <dm...@us...> - 2010-10-11 16:06:12
|
Revision: 3766 http://bigdata.svn.sourceforge.net/bigdata/?rev=3766&view=rev Author: dmacgbr Date: 2010-10-11 16:06:05 +0000 (Mon, 11 Oct 2010) Log Message: ----------- Add class to run SPARQL test suite against a running federation. Supply the config file via the system property '-Dbigdata.configuration' Added Paths: ----------- branches/QUADS_QUERY_BRANCH/bigdata-sails/src/test/com/bigdata/rdf/sail/tck/BigdataFederationSparqlTest.java branches/QUADS_QUERY_BRANCH/bigdata-sails/src/test/com/bigdata/rdf/sail/tck/log4j.properties Added: branches/QUADS_QUERY_BRANCH/bigdata-sails/src/test/com/bigdata/rdf/sail/tck/BigdataFederationSparqlTest.java =================================================================== --- branches/QUADS_QUERY_BRANCH/bigdata-sails/src/test/com/bigdata/rdf/sail/tck/BigdataFederationSparqlTest.java (rev 0) +++ branches/QUADS_QUERY_BRANCH/bigdata-sails/src/test/com/bigdata/rdf/sail/tck/BigdataFederationSparqlTest.java 2010-10-11 16:06:05 UTC (rev 3766) @@ -0,0 +1,146 @@ +/* + +Copyright (C) SYSTAP, LLC 2006-2008. All rights reserved. + +Contact: + SYSTAP, LLC + 4501 Tower Road + Greensboro, NC 27410 + lic...@bi... + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; version 2 of the License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +*/ +package com.bigdata.rdf.sail.tck; + +import java.util.Properties; +import java.util.UUID; + +import junit.framework.Test; + +import org.apache.log4j.Logger; +import org.openrdf.query.Dataset; +import org.openrdf.query.parser.sparql.ManifestTest; +import org.openrdf.query.parser.sparql.SPARQLQueryTest; +import org.openrdf.repository.Repository; +import org.openrdf.repository.dataset.DatasetRepository; + +import com.bigdata.journal.ITx; +import com.bigdata.rdf.sail.BigdataSail; +import com.bigdata.rdf.sail.BigdataSailRepository; +import com.bigdata.rdf.store.ScaleOutTripleStore; +import com.bigdata.service.jini.JiniClient; +import com.bigdata.service.jini.JiniFederation; + +/** + * @author <a href="mailto:dm...@us...">David MacMillan</a> + * @version $Id$ + */ +public class BigdataFederationSparqlTest extends SPARQLQueryTest +{ + public static Test suite () + throws Exception + { + return ManifestTest.suite + ( + new Factory () + { + public SPARQLQueryTest createSPARQLQueryTest ( String URI, String name, String query, String results, Dataset dataSet, boolean laxCardinality) + { + return new BigdataFederationSparqlTest ( URI, name, query, results, dataSet, laxCardinality ) ; + } + } + ) ; + } + + public BigdataFederationSparqlTest ( String URI, String name, String query, String results, Dataset dataSet, boolean laxCardinality ) + { + super ( URI, name, query, results, dataSet, laxCardinality ) ; + } + + @Override public void tearDown () + throws Exception + { + super.tearDown () ; + _ts.destroy () ; + _ts = null ; + } + + @Override protected Repository newRepository () + throws Exception + { + return new DatasetRepository ( new BigdataSailRepository ( new BigdataSail ( newTripleStore () ) ) ) ; + } + + private ScaleOutTripleStore newTripleStore () + throws Exception + { + _ts = new ScaleOutTripleStore ( getFederation (), newNamespace (), ITx.UNISOLATED, getProperties () ) ; + _ts.create () ; + return _ts ; + } + + private JiniFederation<Object> getFederation () + throws Exception + { + if ( null == _fed ) + { + JiniClient<Object> jc = new JiniClient<Object> ( new String [] { getConfiguration () } ) ; + _fed = jc.connect () ; + } + return _fed ; + } + + private String getConfiguration () + throws Exception + { + String c = System.getProperty ( CONFIG_PROPERTY ) ; + if ( null == c ) + throw new Exception ( String.format ( "Configuration property not set. Specify as: -D%s=<filename or URL>", CONFIG_PROPERTY ) ) ; + return c ; + } + + private String newNamespace () + { + return "SPARQLTest_" + UUID.randomUUID ().toString () ; + } + + private Properties getProperties () + { + if ( null == _properties ) + { + // + // TODO What do we really need here? Don't some of these entail others? + // + _properties = new Properties () ; + _properties.put ( BigdataSail.Options.QUADS_MODE, "true" ) ; + _properties.put ( BigdataSail.Options.TRUTH_MAINTENANCE, "false" ) ; + _properties.put ( BigdataSail.Options.NATIVE_JOINS, "true" ) ; + _properties.put ( BigdataSail.Options.QUERY_TIME_EXPANDER, "true" ) ; + _properties.put ( BigdataSail.Options.ALLOW_AUTO_COMMIT, "true" ) ; + _properties.put ( BigdataSail.Options.ISOLATABLE_INDICES, "false" ) ; + _properties.put ( BigdataSail.Options.STAR_JOINS, "false" ) ; + _properties.put ( BigdataSail.Options.TEXT_INDEX, "false" ) ; + } + return _properties ; + } + + public static final String CONFIG_PROPERTY = "bigdata.configuration" ; + + private static final Logger _logger = Logger.getLogger ( BigdataFederationSparqlTest.class ) ; + + private JiniFederation<Object> _fed = null ; + private ScaleOutTripleStore _ts = null ; + private Properties _properties = null ; +} \ No newline at end of file Added: branches/QUADS_QUERY_BRANCH/bigdata-sails/src/test/com/bigdata/rdf/sail/tck/log4j.properties =================================================================== --- branches/QUADS_QUERY_BRANCH/bigdata-sails/src/test/com/bigdata/rdf/sail/tck/log4j.properties (rev 0) +++ branches/QUADS_QUERY_BRANCH/bigdata-sails/src/test/com/bigdata/rdf/sail/tck/log4j.properties 2010-10-11 16:06:05 UTC (rev 3766) @@ -0,0 +1,101 @@ +# Default log4j configuration. See the individual classes for the +# specific loggers, but generally they are named for the class in +# which they are defined. + +# Default log4j configuration for testing purposes. + +log4j.rootCategory=WARN, dest1 +#log4j.rootCategory=DEBUG, dest1 + +# Loggers. +#log4j.logger.com.bigdata=ERROR +#log4j.logger.com.bigdata.rdf.sail.TestNamedGraphs=INFO +#log4j.logger.com.bigdata.rdf.sail.BigdataEvaluationStrategyImpl=INFO +log4j.logger.com.bigdata.rdf.sail.tck.DavidsBigdataSparqlTest=INFO +#log4j.logger.com.bigdata.btree.compression=INFO +#log4j.logger.com.bigdata.journal.IJournal=INFO +#log4j.logger.com.bigdata.resources=INFO +#log4j.logger.com.bigdata.journal.AbstractTask=INFO +#log4j.logger.com.bigdata.journal.WriteExecutorService=INFO +#log4j.logger.com.bigdata.journal.QueueLengthTask=INFO +#log4j.logger.com.bigdata.journal.AbstractBufferStrategy=INFO, A2 +#log4j.logger.com.bigdata.resources.ResourceManager=INFO, dest1, A2 +#log4j.logger.com.bigdata.resources.StoreManager=INFO +#log4j.logger.com.bigdata.resources.OverflowManager=INFO +#log4j.logger.com.bigdata.resources.PostProcessOldJournalTask=INFO +#log4j.logger.com.bigdata.resources.AbstractResourceManagerTask=INFO +#log4j.logger.com.bigdata.resources.IndexManager=INFO +#log4j.logger.com.bigdata.resources.ResourceFileFilter=INFO +#log4j.logger.com.bigdata.btree.UnisolatedReadWriteIndex=DEBUG +# +#log4j.logger.com.bigdata.service=DEBUG +#log4j.logger.com.bigdata.service.jini.AbstractServer=INFO +#log4j.logger.com.bigdata.service.IBigdataFederation=INFO +#log4j.logger.com.bigdata.service.ClientIndexView=INFO +#log4j.logger.com.bigdata.service.DataServiceIndex=INFO +#log4j.logger.com.bigdata.service.LoadBalancerService=INFO +#log4j.logger.com.bigdata.service.LoadBalancerService$UpdateTask=INFO +#log4j.logger.com.bigdata.service.DataService$StartPerformanceCounterCollectionTask=INFO +#log4j.logger.com.bigdata.service.DataService$ReportTask=INFO +#log4j.logger.com.bigdata.service.AbstractFederation$ReportTask=INFO +# +#log4j.logger.com.bigdata.service.ResultSet=INFO +#log4j.logger.com.bigdata.search=INFO +#log4j.logger.com.bigdata.relation=INFO +#log4j.logger.com.bigdata.relation.locator=DEBUG +#log4j.logger.com.bigdata.rdf.rules=INFO +#log4j.logger.com.bigdata.relation.rule.eval=INFO +#log4j.logger.com.bigdata.relation.rule.eval.RuleState=DEBUG +#log4j.logger.com.bigdata.relation.rule.eval.NestedSubqueryEvaluator=DEBUG +#log4j.logger.com.bigdata.relation.accesspath.AbstractArrayBuffer=DEBUG +#log4j.logger.com.bigdata.relation.accesspath.BlockingBuffer=INFO +#log4j.logger.com.bigdata.rdf.spo.DistinctTermScanner$DistinctTermScanTask=INFO +#log4j.logger.com.bigdata.service.IBigdataFederation=DEBUG +#log4j.logger.com.bigdata.rdf=INFO +#log4j.logger.com.bigdata.rdf.store.ITripleStore=DEBUG +#log4j.logger.com.bigdata.rdf.rio=DEBUG +#log4j.logger.com.bigdata.rdf.rio.StatementBuffer=INFO +#log4j.logger.com.bigdata.rdf.rio.AbstractStatementBuffer=INFO +#log4j.logger.com.bigdata.rdf.lexicon.LexiconRelation=INFO +#log4j.logger.com.bigdata.rdf.lexicon.TermIdEncoder=DEBUG +#log4j.logger.com.bigdata.rdf.store.BigdataStatementIteratorImpl=DEBUG +#log4j.logger.com.bigdata.rdf.lexicon.Term2IdWriteProc=DEBUG +#log4j.logger.com.bigdata.rdf.store.IndexWriteProc=WARN +#log4j.logger.com.bigdata.rdf.store.AbstractTripleStore=INFO +#log4j.logger.com.bigdata.rdf.store.ConcurrentDataLoader=INFO +#log4j.logger.com.bigdata.rdf.store.ConcurrentDataLoader$WorkflowTask=INFO +#log4j.logger.com.bigdata.rdf.store.ConcurrentDataLoader$VerifyStatementBuffer=INFO +#log4j.logger.com.bigdata.rdf.store.DataLoader=INFO +# Note: turns on ground truth testing (not scalable). +#log4j.logger.com.bigdata.rdf.store.Term2IdWriteProc=DEBUG +#log4j.logger.com.bigdata.rdf.spo.ISPOBuffer=DEBUG +#log4j.logger.com.bigdata.rdf.spo.SPOIterator=WARN +#log4j.logger.com.bigdata.rdf.inf.TruthMaintenance=DEBUG +#log4j.logger.com.bigdata.rdf.inf.InferenceEngine=INFO +#log4j.logger.com.bigdata.rdf.inf.Justification=DEBUG +#log4j.logger.com.bigdata.rdf.inf.BackchainOwlSameAs2=DEBUG + +# Test case logger (logging of statements does lots of RMI when using a federation). +#log4j.logger.junit.framework.Test=INFO + +# WARNING Generating caller location information is extremely slow. +# It's use should be avoided unless execution speed is not an issue. +# This applies to %L %l %M %m %F %C etc. Pretty much anything useful :-( + +log4j.appender.dest1=org.apache.log4j.ConsoleAppender +log4j.appender.dest1.layout=org.apache.log4j.PatternLayout +#log4j.appender.dest1.layout.ConversionPattern=%-5p: %m%n +#log4j.appender.dest1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n +#log4j.appender.dest1.layout.ConversionPattern=%-4r(%d) [%t] %-5p %c(%l:%M) %x - %m%n +#log4j.appender.dest1.layout.ConversionPattern=%-5p: %r %X{trial} %X{depth} [%t] %l: %m%n +log4j.appender.dest1.layout.ConversionPattern=%d %t %-5p: %c: %m%n + +# A2 is set to be a FileAppender. +log4j.appender.A2=org.apache.log4j.FileAppender +log4j.appender.A2.Threshold=DEBUG +log4j.appender.A2.File=ResourceManager.log +log4j.appender.A2.Append=true + +# A2 uses PatternLayout. +log4j.appender.A2.layout=org.apache.log4j.PatternLayout +log4j.appender.A2.layout.ConversionPattern=%5p [%t] %l %d - %m%n \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |