| package org.apache.rya.sail.config; |
| |
| /* |
| * 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.assertFalse; |
| import static org.junit.Assert.assertTrue; |
| |
| import java.io.InputStream; |
| import java.io.StringReader; |
| import java.util.HashMap; |
| import java.util.Map; |
| |
| import org.apache.rya.sail.config.RyaAccumuloSailConfig; |
| import org.apache.rya.sail.config.RyaAccumuloSailFactory; |
| |
| import org.apache.commons.io.IOUtils; |
| import org.junit.Assert; |
| import org.junit.Ignore; |
| import org.junit.Test; |
| import org.openrdf.model.Graph; |
| import org.openrdf.model.Resource; |
| import org.openrdf.model.Statement; |
| import org.openrdf.model.ValueFactory; |
| import org.openrdf.model.impl.LinkedHashModel; |
| import org.openrdf.model.util.GraphUtil; |
| import org.openrdf.model.vocabulary.RDF; |
| import org.openrdf.repository.Repository; |
| import org.openrdf.repository.RepositoryConnection; |
| import org.openrdf.repository.config.ConfigTemplate; |
| import org.openrdf.repository.config.RepositoryConfig; |
| import org.openrdf.repository.config.RepositoryConfigSchema; |
| import org.openrdf.repository.config.RepositoryConfigUtil; |
| import org.openrdf.repository.config.RepositoryImplConfig; |
| import org.openrdf.repository.config.RepositoryRegistry; |
| import org.openrdf.repository.manager.LocalRepositoryManager; |
| import org.openrdf.repository.sail.config.SailRepositoryConfig; |
| import org.openrdf.repository.sail.config.SailRepositoryFactory; |
| import org.openrdf.rio.RDFFormat; |
| import org.openrdf.rio.RDFParser; |
| import org.openrdf.rio.Rio; |
| import org.openrdf.rio.helpers.StatementCollector; |
| import org.openrdf.sail.config.SailFactory; |
| import org.openrdf.sail.config.SailRegistry; |
| |
| import com.google.common.collect.ImmutableMap; |
| import com.google.common.io.Files; |
| |
| public class RyaAccumuloSailFactoryTest { |
| |
| private static RepositoryImplConfig getConfig() { |
| RyaAccumuloSailConfig c = new RyaAccumuloSailConfig(); |
| c.setUser("root"); |
| c.setPassword(""); |
| c.setInstance("mock-instance"); |
| c.setMock(true); |
| return new SailRepositoryConfig(c); |
| } |
| |
| @Ignore |
| @Test |
| public void testCreateAccumuloSail() throws Exception { |
| SailRepositoryFactory f = new SailRepositoryFactory(); |
| Repository r = f.getRepository(getConfig()); |
| r.initialize(); |
| RepositoryConnection rc = r.getConnection(); |
| rc.close(); |
| } |
| |
| @Ignore |
| @Test |
| public void testAddStatement() throws Exception { |
| SailRepositoryFactory f = new SailRepositoryFactory(); |
| Repository r = f.getRepository(getConfig()); |
| r.initialize(); |
| RepositoryConnection rc = r.getConnection(); |
| |
| ValueFactory vf = rc.getValueFactory(); |
| Statement s = vf.createStatement(vf.createURI("u:a"), vf.createURI("u:b"), vf.createURI("u:c")); |
| |
| assertFalse(rc.hasStatement(s, false)); |
| |
| rc.add(s); |
| |
| Assert.assertTrue(rc.hasStatement(s, false)); |
| rc.close(); |
| } |
| |
| @Test |
| public void testCreateFromTemplateName() throws Exception { |
| LocalRepositoryManager repoman = new LocalRepositoryManager(Files.createTempDir()); |
| repoman.initialize(); |
| |
| |
| |
| try(InputStream templateStream = RepositoryConfig.class.getResourceAsStream("RyaAccumuloSail.ttl")) { |
| String template = IOUtils.toString(templateStream); |
| |
| final ConfigTemplate configTemplate = new ConfigTemplate(template); |
| final Map<String, String> valueMap = ImmutableMap.<String, String> builder() |
| .put("Repository ID", "RyaAccumuloSail") |
| .put("Repository title", "RyaAccumuloSail Store") |
| .put("Rya Accumulo user", "root") |
| .put("Rya Accumulo password", "") |
| .put("Rya Accumulo instance", "dev") |
| .put("Rya Accumulo zookeepers", "zoo1,zoo2,zoo3") |
| .put("Rya Accumulo is mock", "true") |
| .build(); |
| |
| final String configString = configTemplate.render(valueMap); |
| |
| // final Repository systemRepo = this.state.getManager().getSystemRepository(); |
| final Graph graph = new LinkedHashModel(); |
| final RDFParser rdfParser = Rio.createParser(RDFFormat.TURTLE); |
| rdfParser.setRDFHandler(new StatementCollector(graph)); |
| rdfParser.parse(new StringReader(configString), RepositoryConfigSchema.NAMESPACE); |
| final Resource repositoryNode = GraphUtil.getUniqueSubject(graph, RDF.TYPE, |
| RepositoryConfigSchema.REPOSITORY); |
| final RepositoryConfig repConfig = RepositoryConfig.create(graph, repositoryNode); |
| repConfig.validate(); |
| |
| |
| repoman.addRepositoryConfig(repConfig); |
| |
| Repository r = repoman.getRepository("RyaAccumuloSail"); |
| r.initialize(); |
| |
| } |
| |
| } |
| |
| @Test |
| public void testRyaAccumuloSailInManager() throws Exception { |
| // Class<SailFactory> clazz = SailFactory.class; |
| // ServiceLoader<SailFactory> loader = java.util.ServiceLoader.load(clazz, clazz.getClassLoader()); |
| // |
| // Iterator<SailFactory> services = loader.iterator(); |
| // |
| // while (services.hasNext()) |
| // System.out.println(services.next()); |
| |
| |
| |
| String ryaSailKey = RyaAccumuloSailFactory.SAIL_TYPE; |
| |
| assertTrue("Connot find RyaAccumuloSailFactory in Registry", SailRegistry.getInstance().has(ryaSailKey)); |
| |
| SailFactory factory = SailRegistry.getInstance().get(ryaSailKey); |
| Assert.assertNotNull("Cannot create RyaAccumuloSailFactory", factory); |
| |
| |
| // for (String s : SailRegistry.getInstance().getKeys()) { |
| // System.out.println("SailRegistry :: " + s); |
| // } |
| // System.out.println("Factory :: " + factory.getClass().getName()); |
| for (String s : RepositoryRegistry.getInstance().getKeys()) { |
| System.out.println("RepositoryRegistry :: " + s); |
| } |
| // RepositoryManager m = new LocalRepositoryManager(Files.createTempDir()); |
| // m.initialize(); |
| // for (String s : RepositoryConfigUtil.getRepositoryIDs(m.getSystemRepository())) { |
| // System.out.println("System :: " + s); |
| // } |
| // RepositoryConnection rc = m.getSystemRepository().getConnection(); |
| // RepositoryResult<Statement> results = rc.getStatements(null, null, null, false); |
| // while(results.hasNext()) { |
| // System.out.println("System :: " + results.next().toString()); |
| // } |
| // RepositoryProvider.getRepository("SYSTEM"); |
| // RepositoryConfigSchema |
| // RepositoryProvider.getRepository("RyaAccumuloSail"); |
| } |
| |
| @Test |
| public void testParseTemplate() throws Exception{ |
| String template = IOUtils.toString(ClassLoader.getSystemResourceAsStream("org/openrdf/repository/config/RyaAccumuloSail.ttl")); |
| ConfigTemplate ct = new ConfigTemplate(template); |
| System.out.println(ct.getVariableMap()); |
| } |
| } |