RYA-67 Making Accumulo integration tests faster by sharing MiniAccumulo Each test execution shares a MiniAccumulo instance via a static singleton. Tests have been updated to use different rya instance names and different user names to make the tests independent from other tests.
Project: http://git-wip-us.apache.org/repos/asf/incubator-rya/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-rya/commit/d3ba442f Tree: http://git-wip-us.apache.org/repos/asf/incubator-rya/tree/d3ba442f Diff: http://git-wip-us.apache.org/repos/asf/incubator-rya/diff/d3ba442f Branch: refs/heads/master Commit: d3ba442f045932f8cc70b4c4eb139a8debc1de40 Parents: 643608c Author: Jonathan Wonders <jwonder...@gmail.com> Authored: Thu May 18 20:19:26 2017 -0400 Committer: Aaron Mihalik <miha...@alum.mit.edu> Committed: Fri Jun 2 18:49:20 2017 -0400 ---------------------------------------------------------------------- dao/accumulo.rya/pom.xml | 3 + .../org/apache/rya/accumulo/AccumuloITBase.java | 29 +- .../apache/rya/accumulo/AccumuloRyaITBase.java | 73 +---- .../rya/accumulo/MiniAccumuloSingleton.java | 84 ++++++ .../rya/accumulo/RyaTestInstanceRule.java | 94 +++++++ .../AccumuloRyaDetailsRepositoryIT.java | 20 +- .../api/client/accumulo/AccumuloAddUserIT.java | 129 ++++----- .../client/accumulo/AccumuloCreatePCJIT.java | 39 +-- .../client/accumulo/AccumuloDeletePCJIT.java | 36 +-- .../accumulo/AccumuloGetInstanceDetailsIT.java | 14 +- .../api/client/accumulo/AccumuloInstallIT.java | 4 +- .../accumulo/AccumuloListInstancesIT.java | 19 ++ .../accumulo/AccumuloLoadStatementsFileIT.java | 9 +- .../client/accumulo/AccumuloRemoveUserIT.java | 63 +++-- .../client/accumulo/AccumuloUninstallIT.java | 2 +- .../rya/api/client/accumulo/FluoITBase.java | 120 ++++---- .../org/apache/rya/shell/RyaShellITBase.java | 25 +- .../accumulo/PcjTablesIntegrationTest.java | 43 +-- .../rya/indexing/pcj/fluo/FluoITBase.java | 282 +++++++++++++++++++ .../indexing/pcj/fluo/KafkaExportITBase.java | 6 - .../rya/indexing/pcj/fluo/RyaExportITBase.java | 114 +------- .../indexing/pcj/fluo/api/GetPcjMetadataIT.java | 10 +- .../indexing/pcj/fluo/api/GetQueryReportIT.java | 5 +- .../pcj/fluo/integration/CreateDeleteIT.java | 14 +- .../indexing/pcj/fluo/integration/InputIT.java | 16 +- .../indexing/pcj/fluo/integration/QueryIT.java | 11 +- .../pcj/fluo/integration/RyaExportIT.java | 4 +- .../RyaInputIncrementalUpdateIT.java | 12 +- .../pcj/fluo/integration/StreamingTestIT.java | 4 +- .../HistoricStreamingVisibilityIT.java | 12 +- .../pcj/fluo/visibility/PcjVisibilityIT.java | 45 +-- 31 files changed, 792 insertions(+), 549 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/d3ba442f/dao/accumulo.rya/pom.xml ---------------------------------------------------------------------- diff --git a/dao/accumulo.rya/pom.xml b/dao/accumulo.rya/pom.xml index 6248475..5812cda 100644 --- a/dao/accumulo.rya/pom.xml +++ b/dao/accumulo.rya/pom.xml @@ -129,6 +129,9 @@ under the License. <artifactId>maven-shade-plugin</artifactId> <executions> <execution> + <goals> + <goal>shade</goal> + </goals> <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" /> http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/d3ba442f/dao/accumulo.rya/src/test/java/org/apache/rya/accumulo/AccumuloITBase.java ---------------------------------------------------------------------- diff --git a/dao/accumulo.rya/src/test/java/org/apache/rya/accumulo/AccumuloITBase.java b/dao/accumulo.rya/src/test/java/org/apache/rya/accumulo/AccumuloITBase.java index 5225555..6d66090 100644 --- a/dao/accumulo.rya/src/test/java/org/apache/rya/accumulo/AccumuloITBase.java +++ b/dao/accumulo.rya/src/test/java/org/apache/rya/accumulo/AccumuloITBase.java @@ -18,8 +18,6 @@ */ package org.apache.rya.accumulo; -import java.io.IOException; - import org.apache.accumulo.core.client.AccumuloException; import org.apache.accumulo.core.client.AccumuloSecurityException; import org.apache.accumulo.core.client.Connector; @@ -27,9 +25,8 @@ import org.apache.accumulo.minicluster.MiniAccumuloCluster; import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.apache.zookeeper.ClientCnxn; -import org.junit.After; -import org.junit.Before; import org.junit.BeforeClass; +import org.junit.Rule; /** * Boilerplate code for a unit test that uses a {@link MiniAccumuloCluster}. @@ -39,26 +36,17 @@ import org.junit.BeforeClass; */ public class AccumuloITBase { - // Managed the MiniAccumuloCluster - private MiniAccumuloClusterInstance cluster = null; + private static MiniAccumuloClusterInstance cluster = MiniAccumuloSingleton.getInstance(); + + @Rule + public RyaTestInstanceRule testInstance = new RyaTestInstanceRule(false); + @BeforeClass public static void killLoudLogs() { Logger.getLogger(ClientCnxn.class).setLevel(Level.ERROR); } - @Before - public void initCluster() throws IOException, InterruptedException, AccumuloException, AccumuloSecurityException { - cluster = new MiniAccumuloClusterInstance(); - cluster.startMiniAccumulo(); - } - - - @After - public void tearDownCluster() throws IOException, InterruptedException { - cluster.stopMiniAccumulo(); - } - /** * @return The {@link MiniAccumuloClusterInstance} used by the tests. */ @@ -102,4 +90,9 @@ public class AccumuloITBase { public Connector getConnector() throws AccumuloException, AccumuloSecurityException { return cluster.getConnector(); } + + public String getRyaInstanceName() { + return testInstance.getRyaInstanceName(); + } + } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/d3ba442f/dao/accumulo.rya/src/test/java/org/apache/rya/accumulo/AccumuloRyaITBase.java ---------------------------------------------------------------------- diff --git a/dao/accumulo.rya/src/test/java/org/apache/rya/accumulo/AccumuloRyaITBase.java b/dao/accumulo.rya/src/test/java/org/apache/rya/accumulo/AccumuloRyaITBase.java index a832c32..41d5cea 100644 --- a/dao/accumulo.rya/src/test/java/org/apache/rya/accumulo/AccumuloRyaITBase.java +++ b/dao/accumulo.rya/src/test/java/org/apache/rya/accumulo/AccumuloRyaITBase.java @@ -18,31 +18,7 @@ */ package org.apache.rya.accumulo; -import java.io.IOException; -import java.util.Date; -import java.util.concurrent.atomic.AtomicInteger; - -import org.apache.accumulo.core.client.AccumuloException; -import org.apache.accumulo.core.client.AccumuloSecurityException; -import org.apache.accumulo.core.client.TableNotFoundException; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.BeforeClass; - -import com.google.common.base.Optional; - -import org.apache.rya.accumulo.instance.AccumuloRyaInstanceDetailsRepository; -import org.apache.rya.api.instance.RyaDetails; -import org.apache.rya.api.instance.RyaDetails.EntityCentricIndexDetails; -import org.apache.rya.api.instance.RyaDetails.FreeTextIndexDetails; -import org.apache.rya.api.instance.RyaDetails.GeoIndexDetails; -import org.apache.rya.api.instance.RyaDetails.JoinSelectivityDetails; -import org.apache.rya.api.instance.RyaDetails.PCJIndexDetails; -import org.apache.rya.api.instance.RyaDetails.ProspectorDetails; -import org.apache.rya.api.instance.RyaDetails.TemporalIndexDetails; -import org.apache.rya.api.instance.RyaDetailsRepository; -import org.apache.rya.api.instance.RyaDetailsRepository.AlreadyInitializedException; -import org.apache.rya.api.instance.RyaDetailsRepository.RyaDetailsRepositoryException; +import org.junit.Rule; /** * Contains boilerplate code for spinning up a Mini Accumulo Cluster and initializing @@ -51,59 +27,20 @@ import org.apache.rya.api.instance.RyaDetailsRepository.RyaDetailsRepositoryExce */ public class AccumuloRyaITBase { - // Managed the MiniAccumuloCluster - private static final MiniAccumuloClusterInstance cluster = new MiniAccumuloClusterInstance(); - - // Manage the Rya instances that are hosted on the cluster - protected static final AtomicInteger ryaInstanceNameCounter = new AtomicInteger(1); - private String ryaInstanceName; - - @BeforeClass - public static void initCluster() throws IOException, InterruptedException, AccumuloException, AccumuloSecurityException { - cluster.startMiniAccumulo(); - } - - @Before - public void prepareForNextTest() throws AccumuloException, AccumuloSecurityException, TableNotFoundException, AlreadyInitializedException, RyaDetailsRepositoryException { - // Get the next Rya instance name. - ryaInstanceName = "testInstance" + ryaInstanceNameCounter.getAndIncrement() + "_"; - - // Create Rya Details for the instance name. - final RyaDetailsRepository detailsRepo = new AccumuloRyaInstanceDetailsRepository(cluster.getConnector(), ryaInstanceName); - - final RyaDetails details = RyaDetails.builder() - .setRyaInstanceName(ryaInstanceName) - .setRyaVersion("0.0.0.0") - .setFreeTextDetails( new FreeTextIndexDetails(true) ) - .setEntityCentricIndexDetails( new EntityCentricIndexDetails(true) ) - //RYA-215 .setGeoIndexDetails( new GeoIndexDetails(true) ) - .setTemporalIndexDetails( new TemporalIndexDetails(true) ) - .setPCJIndexDetails( - PCJIndexDetails.builder() - .setEnabled(true) ) - .setJoinSelectivityDetails( new JoinSelectivityDetails( Optional.<Date>absent() ) ) - .setProspectorDetails( new ProspectorDetails( Optional.<Date>absent() )) - .build(); - - detailsRepo.initialize(details); - } - - @AfterClass - public static void tearDownCluster() throws IOException, InterruptedException { - cluster.stopMiniAccumulo(); - } + @Rule + public RyaTestInstanceRule testInstance = new RyaTestInstanceRule(true); /** * @return The {@link MiniAccumuloClusterInstance} used by the tests. */ public MiniAccumuloClusterInstance getClusterInstance() { - return cluster; + return MiniAccumuloSingleton.getInstance(); } /** * @return The name of the Rya instance that is being used for the current test. */ public String getRyaInstanceName() { - return ryaInstanceName; + return testInstance.getRyaInstanceName(); } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/d3ba442f/dao/accumulo.rya/src/test/java/org/apache/rya/accumulo/MiniAccumuloSingleton.java ---------------------------------------------------------------------- diff --git a/dao/accumulo.rya/src/test/java/org/apache/rya/accumulo/MiniAccumuloSingleton.java b/dao/accumulo.rya/src/test/java/org/apache/rya/accumulo/MiniAccumuloSingleton.java new file mode 100644 index 0000000..8d731d3 --- /dev/null +++ b/dao/accumulo.rya/src/test/java/org/apache/rya/accumulo/MiniAccumuloSingleton.java @@ -0,0 +1,84 @@ +/** + * 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. + */ +package org.apache.rya.accumulo; + +import org.apache.accumulo.core.client.AccumuloException; +import org.apache.accumulo.core.client.AccumuloSecurityException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; + +public final class MiniAccumuloSingleton { + + public static MiniAccumuloClusterInstance getInstance() { + return InstanceHolder.SINGLETON.instance; + } + + private MiniAccumuloSingleton() { + // hiding implicit default constructor + } + + private enum InstanceHolder { + + SINGLETON; + + private final Logger log; + private final MiniAccumuloClusterInstance instance; + + InstanceHolder() { + this.log = LoggerFactory.getLogger(MiniAccumuloSingleton.class); + this.instance = new MiniAccumuloClusterInstance(); + try { + this.instance.startMiniAccumulo(); + + // JUnit does not have an overall lifecycle event for tearing down + // this kind of resource, but shutdown hooks work alright in practice + // since this should only be used during testing + + // The only other alternative for lifecycle management is to use a + // suite lifecycle to enclose the tests that need this resource. + // In practice this becomes unwieldy. + + Runtime.getRuntime().addShutdownHook(new Thread() { + @Override + public void run() { + try { + InstanceHolder.this.instance.stopMiniAccumulo(); + } catch (Throwable t) { + // logging frameworks will likely be shut down + t.printStackTrace(System.err); + } + } + }); + + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + log.error("Interrupted while starting mini accumulo", e); + } catch (IOException | AccumuloException | AccumuloSecurityException e) { + log.error("Unexpected error while starting mini accumulo", e); + } catch (Throwable e) { + // catching throwable because failure to construct an enum + // instance will lead to another error being thrown downstream + log.error("Unexpected throwable while starting mini accumulo", e); + } + } + } + +} http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/d3ba442f/dao/accumulo.rya/src/test/java/org/apache/rya/accumulo/RyaTestInstanceRule.java ---------------------------------------------------------------------- diff --git a/dao/accumulo.rya/src/test/java/org/apache/rya/accumulo/RyaTestInstanceRule.java b/dao/accumulo.rya/src/test/java/org/apache/rya/accumulo/RyaTestInstanceRule.java new file mode 100644 index 0000000..38b4b43 --- /dev/null +++ b/dao/accumulo.rya/src/test/java/org/apache/rya/accumulo/RyaTestInstanceRule.java @@ -0,0 +1,94 @@ +package org.apache.rya.accumulo; + +import com.google.common.base.Optional; +import org.apache.rya.accumulo.instance.AccumuloRyaInstanceDetailsRepository; +import org.apache.rya.api.client.Install.InstallConfiguration; +import org.apache.rya.api.client.RyaClient; +import org.apache.rya.api.instance.RyaDetails; +import org.apache.rya.api.instance.RyaDetails.EntityCentricIndexDetails; +import org.apache.rya.api.instance.RyaDetails.FreeTextIndexDetails; +import org.apache.rya.api.instance.RyaDetails.JoinSelectivityDetails; +import org.apache.rya.api.instance.RyaDetails.PCJIndexDetails; +import org.apache.rya.api.instance.RyaDetails.ProspectorDetails; +import org.apache.rya.api.instance.RyaDetails.TemporalIndexDetails; +import org.apache.rya.api.instance.RyaDetailsRepository; +import org.junit.rules.ExternalResource; + +import java.util.concurrent.atomic.AtomicInteger; + +/** + * 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. + */ +public class RyaTestInstanceRule extends ExternalResource { + + private static final MiniAccumuloClusterInstance cluster = MiniAccumuloSingleton.getInstance(); + private static final AtomicInteger ryaInstanceNameCounter = new AtomicInteger(1); + private static final AtomicInteger userId = new AtomicInteger(1); + + private final boolean install; + private String ryaInstanceName; + + public RyaTestInstanceRule(boolean install) { + this.install = install; + } + + public String getRyaInstanceName() { + if (ryaInstanceName == null) { + throw new IllegalStateException("Cannot get rya instance name outside of a test execution."); + } + return ryaInstanceName; + } + + public String createUniqueUser() { + int id = userId.getAndIncrement(); + return "user_" + id; + } + + @Override + protected void before() throws Throwable { + + // Get the next Rya instance name. + ryaInstanceName = "testInstance_" + ryaInstanceNameCounter.getAndIncrement(); + + if (install) { + // Create Rya Details for the instance name. + final RyaDetailsRepository detailsRepo = new AccumuloRyaInstanceDetailsRepository(cluster.getConnector(), ryaInstanceName); + + final RyaDetails details = RyaDetails.builder() + .setRyaInstanceName(ryaInstanceName) + .setRyaVersion("0.0.0.0") + .setFreeTextDetails(new FreeTextIndexDetails(true)) + .setEntityCentricIndexDetails(new EntityCentricIndexDetails(true)) + //RYA-215 .setGeoIndexDetails( new GeoIndexDetails(true) ) + .setTemporalIndexDetails(new TemporalIndexDetails(true)) + .setPCJIndexDetails(PCJIndexDetails.builder().setEnabled(true)) + .setJoinSelectivityDetails(new JoinSelectivityDetails(Optional.absent())) + .setProspectorDetails(new ProspectorDetails(Optional.absent())) + .build(); + + detailsRepo.initialize(details); + } + } + + @Override + protected void after() { + ryaInstanceName = null; + // TODO consider teardown of instance (probably requires additional features) + } + +} http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/d3ba442f/dao/accumulo.rya/src/test/java/org/apache/rya/accumulo/instance/AccumuloRyaDetailsRepositoryIT.java ---------------------------------------------------------------------- diff --git a/dao/accumulo.rya/src/test/java/org/apache/rya/accumulo/instance/AccumuloRyaDetailsRepositoryIT.java b/dao/accumulo.rya/src/test/java/org/apache/rya/accumulo/instance/AccumuloRyaDetailsRepositoryIT.java index 50783af..93ae174 100644 --- a/dao/accumulo.rya/src/test/java/org/apache/rya/accumulo/instance/AccumuloRyaDetailsRepositoryIT.java +++ b/dao/accumulo.rya/src/test/java/org/apache/rya/accumulo/instance/AccumuloRyaDetailsRepositoryIT.java @@ -56,7 +56,7 @@ public class AccumuloRyaDetailsRepositoryIT extends AccumuloITBase { @Test public void initializeAndGet() throws AccumuloException, AccumuloSecurityException, AlreadyInitializedException, RyaDetailsRepositoryException { - final String instanceName = "testInstance"; + final String instanceName = getRyaInstanceName(); // Create the metadata object the repository will be initialized with. final RyaDetails details = RyaDetails.builder() @@ -98,7 +98,7 @@ public class AccumuloRyaDetailsRepositoryIT extends AccumuloITBase { @Test(expected = AlreadyInitializedException.class) public void initialize_alreadyInitialized() throws AlreadyInitializedException, RyaDetailsRepositoryException, AccumuloException, AccumuloSecurityException { - final String instanceName = "testInstance"; + final String instanceName = getRyaInstanceName(); // Create the metadata object the repository will be initialized with. final RyaDetails details = RyaDetails.builder() @@ -139,7 +139,7 @@ public class AccumuloRyaDetailsRepositoryIT extends AccumuloITBase { public void getRyaInstance_notInitialized() throws AccumuloException, AccumuloSecurityException, NotInitializedException, RyaDetailsRepositoryException { // Setup the repository that will be tested using a mini instance of Accumulo. final Connector connector = getClusterInstance().getConnector(); - final RyaDetailsRepository repo = new AccumuloRyaInstanceDetailsRepository(connector, "testInstance"); + final RyaDetailsRepository repo = new AccumuloRyaInstanceDetailsRepository(connector, getRyaInstanceName()); // Try to fetch the details from the uninitialized repository. repo.getRyaInstanceDetails(); @@ -147,7 +147,7 @@ public class AccumuloRyaDetailsRepositoryIT extends AccumuloITBase { @Test public void isInitialized_true() throws AccumuloException, AccumuloSecurityException, AlreadyInitializedException, RyaDetailsRepositoryException { - final String instanceName = "testInstance"; + final String instanceName = getRyaInstanceName(); // Create the metadata object the repository will be initialized with. final RyaDetails details = RyaDetails.builder() @@ -176,7 +176,7 @@ public class AccumuloRyaDetailsRepositoryIT extends AccumuloITBase { // Setup the repository that will be tested using a mini instance of Accumulo. final MiniAccumuloClusterInstance clusterInstance = getClusterInstance(); final Connector connector = clusterInstance.getConnector(); - final RyaDetailsRepository repo = new AccumuloRyaInstanceDetailsRepository(connector, "testInstance"); + final RyaDetailsRepository repo = new AccumuloRyaInstanceDetailsRepository(connector, instanceName); // Initialize the repository repo.initialize(details); @@ -189,7 +189,7 @@ public class AccumuloRyaDetailsRepositoryIT extends AccumuloITBase { public void isInitialized_false() throws AccumuloException, AccumuloSecurityException, RyaDetailsRepositoryException { // Setup the repository that will be tested using a mock instance of Accumulo. final Connector connector = getClusterInstance().getConnector(); - final RyaDetailsRepository repo = new AccumuloRyaInstanceDetailsRepository(connector, "testInstance"); + final RyaDetailsRepository repo = new AccumuloRyaInstanceDetailsRepository(connector, getRyaInstanceName()); // Ensure the repository reports that is has not been initialized. assertFalse( repo.isInitialized() ); @@ -197,7 +197,7 @@ public class AccumuloRyaDetailsRepositoryIT extends AccumuloITBase { @Test public void update() throws AlreadyInitializedException, RyaDetailsRepositoryException, AccumuloException, AccumuloSecurityException { - final String instanceName = "testInstance"; + final String instanceName = getRyaInstanceName(); // Create the metadata object the repository will be initialized with. final RyaDetails details = RyaDetails.builder() @@ -225,7 +225,7 @@ public class AccumuloRyaDetailsRepositoryIT extends AccumuloITBase { // Setup the repository that will be tested using a mini instance of Accumulo. final Connector connector = getClusterInstance().getConnector(); - final RyaDetailsRepository repo = new AccumuloRyaInstanceDetailsRepository(connector, "testInstance"); + final RyaDetailsRepository repo = new AccumuloRyaInstanceDetailsRepository(connector, instanceName); // Initialize the repository repo.initialize(details); @@ -245,7 +245,7 @@ public class AccumuloRyaDetailsRepositoryIT extends AccumuloITBase { @Test(expected = ConcurrentUpdateException.class) public void update_outOfDate() throws AccumuloException, AccumuloSecurityException, AlreadyInitializedException, RyaDetailsRepositoryException { - final String instanceName = "testInstance"; + final String instanceName = getRyaInstanceName(); // Create the metadata object the repository will be initialized with. final RyaDetails details = RyaDetails.builder() @@ -273,7 +273,7 @@ public class AccumuloRyaDetailsRepositoryIT extends AccumuloITBase { // Setup the repository that will be tested using a mini instance of Accumulo. final Connector connector = getClusterInstance().getConnector(); - final RyaDetailsRepository repo = new AccumuloRyaInstanceDetailsRepository(connector, "testInstance"); + final RyaDetailsRepository repo = new AccumuloRyaInstanceDetailsRepository(connector, instanceName); // Initialize the repository repo.initialize(details); http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/d3ba442f/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/AccumuloAddUserIT.java ---------------------------------------------------------------------- diff --git a/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/AccumuloAddUserIT.java b/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/AccumuloAddUserIT.java index 53e0bf6..787d110 100644 --- a/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/AccumuloAddUserIT.java +++ b/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/AccumuloAddUserIT.java @@ -32,6 +32,8 @@ import org.apache.rya.api.client.RyaClient; import org.apache.rya.api.instance.RyaDetails; import org.apache.rya.indexing.accumulo.ConfigUtils; import org.apache.rya.sail.config.RyaSailFactory; +import org.junit.After; +import org.junit.Before; import org.junit.Test; import org.openrdf.model.ValueFactory; import org.openrdf.sail.Sail; @@ -44,31 +46,44 @@ import com.google.common.collect.ImmutableList; */ public class AccumuloAddUserIT extends AccumuloITBase { + private String ADMIN_USER = testInstance.createUniqueUser(); + + @Before + public void beforeClass() throws Exception { + final SecurityOperations secOps = super.getConnector().securityOperations(); + + // Create the user that will install the instance of Rya. + secOps.createLocalUser(ADMIN_USER, new PasswordToken(ADMIN_USER)); + secOps.grantSystemPermission(ADMIN_USER, SystemPermission.CREATE_TABLE); + } + + @After + public void afterClass() throws Exception { + final SecurityOperations secOps = super.getConnector().securityOperations(); + secOps.dropLocalUser(ADMIN_USER); + } + /** * Ensure that the user who installs the instance of Rya is reported as being a user who can access it. */ @Test public void ryaDetailsIncludesOriginalUser() throws Exception { - final SecurityOperations secOps = super.getConnector().securityOperations(); - // Create the user that will install the instance of Rya. - secOps.createLocalUser("userA", new PasswordToken("userA")); - secOps.grantSystemPermission("userA", SystemPermission.CREATE_TABLE); // Create a Rya Client for that user. final RyaClient userAClient = AccumuloRyaClientFactory.build( - new AccumuloConnectionDetails("userA", "userA".toCharArray(), getInstanceName(), getZookeepers()), - super.getClusterInstance().getCluster().getConnector("userA", "userA")); + new AccumuloConnectionDetails(ADMIN_USER, ADMIN_USER.toCharArray(), getInstanceName(), getZookeepers()), + super.getClusterInstance().getCluster().getConnector(ADMIN_USER, ADMIN_USER)); // Install the instance of Rya. - userAClient.getInstall().install("testInstance_", InstallConfiguration.builder().build()); + userAClient.getInstall().install(getRyaInstanceName(), InstallConfiguration.builder().build()); // Ensure the Rya instance's details only contain the username of the user who installed the instance. final ImmutableList<String> expectedUsers = ImmutableList.<String>builder() - .add("userA") + .add(ADMIN_USER) .build(); - final RyaDetails details = userAClient.getGetInstanceDetails().getDetails("testInstance_").get(); + final RyaDetails details = userAClient.getGetInstanceDetails().getDetails(getRyaInstanceName()).get(); assertEquals(expectedUsers, details.getUsers()); } @@ -77,32 +92,29 @@ public class AccumuloAddUserIT extends AccumuloITBase { */ @Test public void userAddedAlsoAddedToRyaDetails() throws Exception { + String user = testInstance.createUniqueUser(); final SecurityOperations secOps = super.getConnector().securityOperations(); - // Create the user that will install the instance of Rya. - secOps.createLocalUser("userA", new PasswordToken("userA")); - secOps.grantSystemPermission("userA", SystemPermission.CREATE_TABLE); - final RyaClient userAClient = AccumuloRyaClientFactory.build( - new AccumuloConnectionDetails("userA", "userA".toCharArray(), getInstanceName(), getZookeepers()), - super.getClusterInstance().getCluster().getConnector("userA", "userA")); + new AccumuloConnectionDetails(ADMIN_USER, ADMIN_USER.toCharArray(), getInstanceName(), getZookeepers()), + super.getClusterInstance().getCluster().getConnector(ADMIN_USER, ADMIN_USER)); // Create the user that will be added to the instance of Rya. - secOps.createLocalUser("userB", new PasswordToken("userB")); + secOps.createLocalUser(user, new PasswordToken(user)); // Install the instance of Rya. - userAClient.getInstall().install("testInstance_", InstallConfiguration.builder().build()); + userAClient.getInstall().install(getRyaInstanceName(), InstallConfiguration.builder().build()); // Add the user. - userAClient.getAddUser().addUser("testInstance_", "userB"); + userAClient.getAddUser().addUser(getRyaInstanceName(), user); // Ensure the Rya instance's details have been updated to include the added user. final ImmutableList<String> expectedUsers = ImmutableList.<String>builder() - .add("userA") - .add("userB") + .add(ADMIN_USER) + .add(user) .build(); - final RyaDetails details = userAClient.getGetInstanceDetails().getDetails("testInstance_").get(); + final RyaDetails details = userAClient.getGetInstanceDetails().getDetails(getRyaInstanceName()).get(); assertEquals(expectedUsers, details.getUsers()); } @@ -111,21 +123,18 @@ public class AccumuloAddUserIT extends AccumuloITBase { */ @Test public void userNotAddedCanNotInsert() throws Exception { + String user = testInstance.createUniqueUser(); final SecurityOperations secOps = super.getConnector().securityOperations(); - // Create the user that will install the instance of Rya. - secOps.createLocalUser("userA", new PasswordToken("userA")); - secOps.grantSystemPermission("userA", SystemPermission.CREATE_TABLE); - final RyaClient userAClient = AccumuloRyaClientFactory.build( - new AccumuloConnectionDetails("userA", "userA".toCharArray(), getInstanceName(), getZookeepers()), - super.getClusterInstance().getCluster().getConnector("userA", "userA")); + new AccumuloConnectionDetails(ADMIN_USER, ADMIN_USER.toCharArray(), getInstanceName(), getZookeepers()), + super.getClusterInstance().getCluster().getConnector(ADMIN_USER, ADMIN_USER)); // Install the instance of Rya. - userAClient.getInstall().install("testInstance_", InstallConfiguration.builder().build()); + userAClient.getInstall().install(getRyaInstanceName(), InstallConfiguration.builder().build()); // Create the user that will not be added to the instance of Rya, but will try to scan it. - secOps.createLocalUser("userB", new PasswordToken("userB")); + secOps.createLocalUser(user, new PasswordToken(user)); //Try to add a statement the Rya instance with the unauthorized user. This should fail. boolean securityExceptionThrown = false; @@ -133,8 +142,8 @@ public class AccumuloAddUserIT extends AccumuloITBase { Sail sail = null; SailConnection sailConn = null; try { - final AccumuloRdfConfiguration userBConf = makeRyaConfig("testInstance_", "userB", "userB", getInstanceName(), getZookeepers()); - sail = RyaSailFactory.getInstance(userBConf); + final AccumuloRdfConfiguration userCConf = makeRyaConfig(getRyaInstanceName(), user, user, getInstanceName(), getZookeepers()); + sail = RyaSailFactory.getInstance(userCConf); sailConn = sail.getConnection(); final ValueFactory vf = sail.getValueFactory(); @@ -147,14 +156,10 @@ public class AccumuloAddUserIT extends AccumuloITBase { } } finally { if(sailConn != null) { - try { - sailConn.close(); - } finally { } + sailConn.close(); } if(sail != null) { - try { - sail.shutDown(); - } finally { } + sail.shutDown(); } } @@ -166,32 +171,29 @@ public class AccumuloAddUserIT extends AccumuloITBase { */ @Test public void userAddedCanInsert() throws Exception { + String user = testInstance.createUniqueUser(); final SecurityOperations secOps = super.getConnector().securityOperations(); - // Create the user that will install the instance of Rya. - secOps.createLocalUser("userA", new PasswordToken("userA")); - secOps.grantSystemPermission("userA", SystemPermission.CREATE_TABLE); - final RyaClient userAClient = AccumuloRyaClientFactory.build( - new AccumuloConnectionDetails("userA", "userA".toCharArray(), getInstanceName(), getZookeepers()), - super.getClusterInstance().getCluster().getConnector("userA", "userA")); + new AccumuloConnectionDetails(ADMIN_USER, ADMIN_USER.toCharArray(), getInstanceName(), getZookeepers()), + super.getClusterInstance().getCluster().getConnector(ADMIN_USER, ADMIN_USER)); // Create the user that will not be added to the instance of Rya, but will try to scan it. - secOps.createLocalUser("userB", new PasswordToken("userB")); + secOps.createLocalUser(user, new PasswordToken(user)); // Install the instance of Rya. - userAClient.getInstall().install("testInstance_", InstallConfiguration.builder().build()); + userAClient.getInstall().install(getRyaInstanceName(), InstallConfiguration.builder().build()); // Add the user. - userAClient.getAddUser().addUser("testInstance_", "userB"); + userAClient.getAddUser().addUser(getRyaInstanceName(), user); // Try to add a statement to the Rya instance. This should succeed. Sail sail = null; SailConnection sailConn = null; try { - final AccumuloRdfConfiguration userBConf = makeRyaConfig("testInstance_", "userB", "userB", getInstanceName(), getZookeepers()); - sail = RyaSailFactory.getInstance(userBConf); + final AccumuloRdfConfiguration userDConf = makeRyaConfig(getRyaInstanceName(), user, user, getInstanceName(), getZookeepers()); + sail = RyaSailFactory.getInstance(userDConf); sailConn = sail.getConnection(); final ValueFactory vf = sail.getValueFactory(); @@ -201,14 +203,10 @@ public class AccumuloAddUserIT extends AccumuloITBase { } finally { if(sailConn != null) { - try { - sailConn.close(); - } finally { } + sailConn.close(); } if(sail != null) { - try { - sail.shutDown(); - } finally { } + sail.shutDown(); } } } @@ -218,33 +216,30 @@ public class AccumuloAddUserIT extends AccumuloITBase { */ @Test public void addUserTwice() throws Exception { + String user = testInstance.createUniqueUser(); final SecurityOperations secOps = super.getConnector().securityOperations(); - // Create the user that will install the instance of Rya. - secOps.createLocalUser("userA", new PasswordToken("userA")); - secOps.grantSystemPermission("userA", SystemPermission.CREATE_TABLE); - final RyaClient userAClient = AccumuloRyaClientFactory.build( - new AccumuloConnectionDetails("userA", "userA".toCharArray(), getInstanceName(), getZookeepers()), - super.getClusterInstance().getCluster().getConnector("userA", "userA")); + new AccumuloConnectionDetails(ADMIN_USER, ADMIN_USER.toCharArray(), getInstanceName(), getZookeepers()), + super.getClusterInstance().getCluster().getConnector(ADMIN_USER, ADMIN_USER)); // Create the user that will not be added to the instance of Rya, but will try to scan it. - secOps.createLocalUser("userB", new PasswordToken("userB")); + secOps.createLocalUser(user, new PasswordToken(user)); // Install the instance of Rya. - userAClient.getInstall().install("testInstance_", InstallConfiguration.builder().build()); + userAClient.getInstall().install(getRyaInstanceName(), InstallConfiguration.builder().build()); // Add the user. - userAClient.getAddUser().addUser("testInstance_", "userB"); - userAClient.getAddUser().addUser("testInstance_", "userB"); + userAClient.getAddUser().addUser(getRyaInstanceName(), user); + userAClient.getAddUser().addUser(getRyaInstanceName(), user); // Ensure the Rya instance's details only contain the username of the user who installed the instance. final ImmutableList<String> expectedUsers = ImmutableList.<String>builder() - .add("userA") - .add("userB") + .add(ADMIN_USER) + .add(user) .build(); - final RyaDetails details = userAClient.getGetInstanceDetails().getDetails("testInstance_").get(); + final RyaDetails details = userAClient.getGetInstanceDetails().getDetails(getRyaInstanceName()).get(); assertEquals(expectedUsers, details.getUsers()); } http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/d3ba442f/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/AccumuloCreatePCJIT.java ---------------------------------------------------------------------- diff --git a/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/AccumuloCreatePCJIT.java b/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/AccumuloCreatePCJIT.java index f900837..cb4b29a 100644 --- a/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/AccumuloCreatePCJIT.java +++ b/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/AccumuloCreatePCJIT.java @@ -52,13 +52,8 @@ public class AccumuloCreatePCJIT extends FluoITBase { @Test public void createPCJ() throws Exception { + AccumuloConnectionDetails connectionDetails = createConnectionDetails(); // Initialize the commands that will be used by this test. - final AccumuloConnectionDetails connectionDetails = new AccumuloConnectionDetails( - ACCUMULO_USER, - ACCUMULO_PASSWORD.toCharArray(), - super.cluster.getInstanceName(), - super.cluster.getZooKeepers()); - final CreatePCJ createPCJ = new AccumuloCreatePCJ(connectionDetails, accumuloConn); // Create a PCJ. @@ -68,10 +63,10 @@ public class AccumuloCreatePCJIT extends FluoITBase { "?x <http://talksTo> <http://Eve>. " + "?x <http://worksAt> <http://TacoJoint>." + "}"; - final String pcjId = createPCJ.createPCJ(RYA_INSTANCE_NAME, sparql); + final String pcjId = createPCJ.createPCJ(getRyaInstanceName(), sparql); // Verify the RyaDetails were updated to include the new PCJ. - final Optional<RyaDetails> ryaDetails = new AccumuloGetInstanceDetails(connectionDetails, accumuloConn).getDetails(RYA_INSTANCE_NAME); + final Optional<RyaDetails> ryaDetails = new AccumuloGetInstanceDetails(connectionDetails, accumuloConn).getDetails(getRyaInstanceName()); final PCJDetails pcjDetails = ryaDetails.get().getPCJIndexDetails().getPCJDetails().get(pcjId); assertEquals(pcjId, pcjDetails.getId()); @@ -79,7 +74,8 @@ public class AccumuloCreatePCJIT extends FluoITBase { assertEquals(PCJUpdateStrategy.INCREMENTAL, pcjDetails.getUpdateStrategy().get()); // Verify the PCJ's metadata was initialized. - try(final PrecomputedJoinStorage pcjStorage = new AccumuloPcjStorage(accumuloConn, RYA_INSTANCE_NAME)) { + + try(final PrecomputedJoinStorage pcjStorage = new AccumuloPcjStorage(accumuloConn, getRyaInstanceName())) { final PcjMetadata pcjMetadata = pcjStorage.getPcjMetadata(pcjId); assertEquals(sparql, pcjMetadata.getSparql()); assertEquals(0L, pcjMetadata.getCardinality()); @@ -120,21 +116,14 @@ public class AccumuloCreatePCJIT extends FluoITBase { @Test(expected = InstanceDoesNotExistException.class) public void createPCJ_instanceDoesNotExist() throws InstanceDoesNotExistException, RyaClientException { - final AccumuloConnectionDetails connectionDetails = new AccumuloConnectionDetails( - ACCUMULO_USER, - ACCUMULO_PASSWORD.toCharArray(), - super.cluster.getInstanceName(), - super.cluster.getZooKeepers()); - // Create a PCJ for a Rya instance that doesn't exist. - final CreatePCJ createPCJ = new AccumuloCreatePCJ(connectionDetails, accumuloConn); + final CreatePCJ createPCJ = new AccumuloCreatePCJ(createConnectionDetails(), accumuloConn); createPCJ.createPCJ("invalidInstanceName", "SELECT * where { ?a ?b ?c }"); } @Test(expected = RyaClientException.class) public void createPCJ_invalidSparql() throws DuplicateInstanceNameException, RyaClientException { // Install an instance of Rya. - final String instanceName = "testInstance_"; final InstallConfiguration installConfig = InstallConfiguration.builder() .setEnableTableHashPrefix(true) .setEnableEntityCentricIndex(false) @@ -142,20 +131,14 @@ public class AccumuloCreatePCJIT extends FluoITBase { .setEnableTemporalIndex(false) .setEnablePcjIndex(true) .setEnableGeoIndex(false) - .setFluoPcjAppName("fluo_app_name") + .setFluoPcjAppName(getRyaInstanceName()) .build(); - final AccumuloConnectionDetails connectionDetails = new AccumuloConnectionDetails( - ACCUMULO_USER, - ACCUMULO_PASSWORD.toCharArray(), - super.cluster.getInstanceName(), - super.cluster.getZooKeepers()); - - final Install install = new AccumuloInstall(connectionDetails, accumuloConn); - install.install(instanceName, installConfig); + final Install install = new AccumuloInstall(createConnectionDetails(), accumuloConn); + install.install(getRyaInstanceName(), installConfig); // Create a PCJ using invalid SPARQL. - final CreatePCJ createPCJ = new AccumuloCreatePCJ(connectionDetails, accumuloConn); - createPCJ.createPCJ(instanceName, "not valid sparql"); + final CreatePCJ createPCJ = new AccumuloCreatePCJ(createConnectionDetails(), accumuloConn); + createPCJ.createPCJ(getRyaInstanceName(), "not valid sparql"); } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/d3ba442f/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/AccumuloDeletePCJIT.java ---------------------------------------------------------------------- diff --git a/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/AccumuloDeletePCJIT.java b/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/AccumuloDeletePCJIT.java index fd75167..4c6d976 100644 --- a/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/AccumuloDeletePCJIT.java +++ b/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/AccumuloDeletePCJIT.java @@ -48,13 +48,7 @@ public class AccumuloDeletePCJIT extends FluoITBase { @Test public void deletePCJ() throws InstanceDoesNotExistException, RyaClientException, PCJStorageException, RepositoryException { // Initialize the commands that will be used by this test. - final AccumuloConnectionDetails connectionDetails = new AccumuloConnectionDetails( - ACCUMULO_USER, - ACCUMULO_PASSWORD.toCharArray(), - super.cluster.getInstanceName(), - super.cluster.getZooKeepers()); - - final CreatePCJ createPCJ = new AccumuloCreatePCJ(connectionDetails, accumuloConn); + final CreatePCJ createPCJ = new AccumuloCreatePCJ(createConnectionDetails(), accumuloConn); // Create a PCJ. final String sparql = @@ -63,7 +57,7 @@ public class AccumuloDeletePCJIT extends FluoITBase { "?x <http://talksTo> <http://Eve>. " + "?x <http://worksAt> <http://TacoJoint>." + "}"; - final String pcjId = createPCJ.createPCJ(RYA_INSTANCE_NAME, sparql); + final String pcjId = createPCJ.createPCJ(getRyaInstanceName(), sparql); // Verify a Query ID was added for the query within the Fluo app. List<String> fluoQueryIds = new ListQueryIds().listQueryIds(fluoClient); @@ -85,7 +79,8 @@ public class AccumuloDeletePCJIT extends FluoITBase { // Verify the correct results were exported. fluo.waitForObservers(); - try(final PrecomputedJoinStorage pcjStorage = new AccumuloPcjStorage(accumuloConn, RYA_INSTANCE_NAME)) { + + try(final PrecomputedJoinStorage pcjStorage = new AccumuloPcjStorage(accumuloConn, getRyaInstanceName())) { final Set<BindingSet> results = Sets.newHashSet( pcjStorage.listResults(pcjId) ); final MapBindingSet bob = new MapBindingSet(); @@ -97,9 +92,10 @@ public class AccumuloDeletePCJIT extends FluoITBase { final Set<BindingSet> expected = Sets.<BindingSet>newHashSet(bob, charlie); assertEquals(expected, results); + // Delete the PCJ. - final DeletePCJ deletePCJ = new AccumuloDeletePCJ(connectionDetails, accumuloConn); - deletePCJ.deletePCJ(RYA_INSTANCE_NAME, pcjId); + final DeletePCJ deletePCJ = new AccumuloDeletePCJ(createConnectionDetails(), accumuloConn); + deletePCJ.deletePCJ(getRyaInstanceName(), pcjId); // Ensure the PCJ's metadata has been removed from the storage. assertTrue( pcjStorage.listPcjs().isEmpty() ); @@ -115,27 +111,15 @@ public class AccumuloDeletePCJIT extends FluoITBase { @Test(expected = InstanceDoesNotExistException.class) public void deletePCJ_instanceDoesNotExist() throws InstanceDoesNotExistException, RyaClientException { - final AccumuloConnectionDetails connectionDetails = new AccumuloConnectionDetails( - ACCUMULO_USER, - ACCUMULO_PASSWORD.toCharArray(), - super.cluster.getInstanceName(), - super.cluster.getZooKeepers()); - // Delete a PCJ for a Rya instance that doesn't exist. - final DeletePCJ deletePCJ = new AccumuloDeletePCJ(connectionDetails, accumuloConn); + final DeletePCJ deletePCJ = new AccumuloDeletePCJ(createConnectionDetails(), accumuloConn); deletePCJ.deletePCJ("doesNotExist", "randomID"); } @Test(expected = RyaClientException.class) public void deletePCJ_pcjDoesNotExist() throws InstanceDoesNotExistException, RyaClientException { - final AccumuloConnectionDetails connectionDetails = new AccumuloConnectionDetails( - ACCUMULO_USER, - ACCUMULO_PASSWORD.toCharArray(), - super.cluster.getInstanceName(), - super.cluster.getZooKeepers()); - // Delete the PCJ. - final DeletePCJ deletePCJ = new AccumuloDeletePCJ(connectionDetails, accumuloConn); - deletePCJ.deletePCJ(RYA_INSTANCE_NAME, "randomID"); + final DeletePCJ deletePCJ = new AccumuloDeletePCJ(createConnectionDetails(), accumuloConn); + deletePCJ.deletePCJ(getRyaInstanceName(), "randomID"); } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/d3ba442f/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/AccumuloGetInstanceDetailsIT.java ---------------------------------------------------------------------- diff --git a/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/AccumuloGetInstanceDetailsIT.java b/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/AccumuloGetInstanceDetailsIT.java index 4f12954..e7ae332 100644 --- a/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/AccumuloGetInstanceDetailsIT.java +++ b/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/AccumuloGetInstanceDetailsIT.java @@ -54,7 +54,7 @@ public class AccumuloGetInstanceDetailsIT extends AccumuloITBase { @Test public void getDetails() throws AccumuloException, AccumuloSecurityException, DuplicateInstanceNameException, RyaClientException { // Install an instance of Rya. - final String instanceName = "instance_name"; + final String instanceName = getRyaInstanceName(); final InstallConfiguration installConfig = InstallConfiguration.builder() .setEnableTableHashPrefix(true) .setEnableEntityCentricIndex(true) @@ -106,19 +106,17 @@ public class AccumuloGetInstanceDetailsIT extends AccumuloITBase { getZookeepers()); final GetInstanceDetails getInstanceDetails = new AccumuloGetInstanceDetails(connectionDetails, getConnector()); - getInstanceDetails.getDetails("instance_name"); + getInstanceDetails.getDetails("instance_name_does_not_exist"); } @Test public void getDetails_instanceDoesNotHaveDetails() throws AccumuloException, AccumuloSecurityException, InstanceDoesNotExistException, RyaClientException, TableExistsException { // Mimic a pre-details rya install. - final String instanceName = "instance_name"; - final TableOperations tableOps = getConnector().tableOperations(); - final String spoTableName = instanceName + RdfCloudTripleStoreConstants.TBL_SPO_SUFFIX; - final String ospTableName = instanceName + RdfCloudTripleStoreConstants.TBL_OSP_SUFFIX; - final String poTableName = instanceName + RdfCloudTripleStoreConstants.TBL_PO_SUFFIX; + final String spoTableName = getRyaInstanceName() + RdfCloudTripleStoreConstants.TBL_SPO_SUFFIX; + final String ospTableName = getRyaInstanceName() + RdfCloudTripleStoreConstants.TBL_OSP_SUFFIX; + final String poTableName = getRyaInstanceName() + RdfCloudTripleStoreConstants.TBL_PO_SUFFIX; tableOps.create(spoTableName); tableOps.create(ospTableName); tableOps.create(poTableName); @@ -131,7 +129,7 @@ public class AccumuloGetInstanceDetailsIT extends AccumuloITBase { getZookeepers()); final GetInstanceDetails getInstanceDetails = new AccumuloGetInstanceDetails(connectionDetails, getConnector()); - final Optional<RyaDetails> details = getInstanceDetails.getDetails(instanceName); + final Optional<RyaDetails> details = getInstanceDetails.getDetails(getRyaInstanceName()); assertFalse( details.isPresent() ); } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/d3ba442f/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/AccumuloInstallIT.java ---------------------------------------------------------------------- diff --git a/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/AccumuloInstallIT.java b/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/AccumuloInstallIT.java index 739d216..da717d7 100644 --- a/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/AccumuloInstallIT.java +++ b/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/AccumuloInstallIT.java @@ -40,7 +40,7 @@ public class AccumuloInstallIT extends AccumuloITBase { @Test public void install() throws AccumuloException, AccumuloSecurityException, DuplicateInstanceNameException, RyaClientException, NotInitializedException, RyaDetailsRepositoryException { // Install an instance of Rya. - final String instanceName = "testInstance_"; + final String instanceName = getRyaInstanceName(); final InstallConfiguration installConfig = InstallConfiguration.builder() .setEnableTableHashPrefix(false) .setEnableEntityCentricIndex(false) @@ -68,7 +68,7 @@ public class AccumuloInstallIT extends AccumuloITBase { @Test(expected = DuplicateInstanceNameException.class) public void install_alreadyExists() throws DuplicateInstanceNameException, RyaClientException, AccumuloException, AccumuloSecurityException { // Install an instance of Rya. - final String instanceName = "testInstance_"; + final String instanceName = getRyaInstanceName(); final InstallConfiguration installConfig = InstallConfiguration.builder().build(); final AccumuloConnectionDetails connectionDetails = new AccumuloConnectionDetails( http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/d3ba442f/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/AccumuloListInstancesIT.java ---------------------------------------------------------------------- diff --git a/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/AccumuloListInstancesIT.java b/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/AccumuloListInstancesIT.java index 42467dd..f8aadb8 100644 --- a/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/AccumuloListInstancesIT.java +++ b/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/AccumuloListInstancesIT.java @@ -25,6 +25,10 @@ import java.util.List; import org.apache.accumulo.core.client.AccumuloException; import org.apache.accumulo.core.client.AccumuloSecurityException; +import org.apache.accumulo.core.client.admin.SecurityOperations; +import org.apache.accumulo.core.client.admin.TableOperations; +import org.apache.accumulo.core.security.SystemPermission; +import org.junit.Before; import org.junit.Test; import com.beust.jcommander.internal.Lists; @@ -40,6 +44,21 @@ import org.apache.rya.api.client.RyaClientException; */ public class AccumuloListInstancesIT extends AccumuloITBase { + @Before + public void setup() throws Exception { + // this is a bit of a hack to clear any existing instances before + // adding the instances we want to exist for testing the list command + TableOperations tableOps = getConnector().tableOperations(); + SecurityOperations secOps = getConnector().securityOperations(); + secOps.grantSystemPermission("root", SystemPermission.DROP_TABLE); + + for (String tableName : getConnector().tableOperations().list()) { + if (!tableName.startsWith("accumulo.")) { + tableOps.delete(tableName); + } + } + } + @Test public void listInstances_hasRyaDetailsTable() throws AccumuloException, AccumuloSecurityException, RyaClientException { // Install a few instances of Rya using the install command. http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/d3ba442f/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/AccumuloLoadStatementsFileIT.java ---------------------------------------------------------------------- diff --git a/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/AccumuloLoadStatementsFileIT.java b/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/AccumuloLoadStatementsFileIT.java index 656737a..5f73bac 100644 --- a/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/AccumuloLoadStatementsFileIT.java +++ b/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/AccumuloLoadStatementsFileIT.java @@ -60,13 +60,12 @@ public class AccumuloLoadStatementsFileIT extends AccumuloITBase { getZookeepers()); final RyaClient ryaClient = AccumuloRyaClientFactory.build(connectionDetails, getConnector()); - ryaClient.getLoadStatementsFile().loadStatements("testInstance_", Paths.get("src/test/resources/example.ttl"), RDFFormat.TURTLE); + ryaClient.getLoadStatementsFile().loadStatements(getRyaInstanceName(), Paths.get("src/test/resources/example.ttl"), RDFFormat.TURTLE); } @Test public void loadTurtleFile() throws Exception { // Install an instance of Rya. - final String instanceName = "testInstance_"; final InstallConfiguration installConfig = InstallConfiguration.builder() .setEnableTableHashPrefix(false) .setEnableEntityCentricIndex(false) @@ -85,10 +84,10 @@ public class AccumuloLoadStatementsFileIT extends AccumuloITBase { final RyaClient ryaClient = AccumuloRyaClientFactory.build(connectionDetails, getConnector()); final Install install = ryaClient.getInstall(); - install.install(instanceName, installConfig); + install.install(getRyaInstanceName(), installConfig); // Load the test statement file. - ryaClient.getLoadStatementsFile().loadStatements("testInstance_", Paths.get("src/test/resources/example.ttl"), RDFFormat.TURTLE); + ryaClient.getLoadStatementsFile().loadStatements(getRyaInstanceName(), Paths.get("src/test/resources/example.ttl"), RDFFormat.TURTLE); // Verify that the statements were loaded. final ValueFactory vf = new ValueFactoryImpl(); @@ -101,7 +100,7 @@ public class AccumuloLoadStatementsFileIT extends AccumuloITBase { final List<Statement> statements = new ArrayList<>(); final WholeRowTripleResolver tripleResolver = new WholeRowTripleResolver(); - final Scanner scanner = getConnector().createScanner("testInstance_spo", new Authorizations()); + final Scanner scanner = getConnector().createScanner(getRyaInstanceName() + "spo", new Authorizations()); final Iterator<Entry<Key, Value>> it = scanner.iterator(); while(it.hasNext()) { final Entry<Key, Value> next = it.next(); http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/d3ba442f/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/AccumuloRemoveUserIT.java ---------------------------------------------------------------------- diff --git a/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/AccumuloRemoveUserIT.java b/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/AccumuloRemoveUserIT.java index 69780bc..f6ec5da 100644 --- a/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/AccumuloRemoveUserIT.java +++ b/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/AccumuloRemoveUserIT.java @@ -49,38 +49,41 @@ public class AccumuloRemoveUserIT extends AccumuloITBase { */ @Test public void removedUserNotInDetails() throws Exception { + String adminUser = testInstance.createUniqueUser(); + String user = testInstance.createUniqueUser(); final SecurityOperations secOps = super.getConnector().securityOperations(); // Create the user that will install the instance of Rya. - secOps.createLocalUser("userA", new PasswordToken("userA")); - secOps.grantSystemPermission("userA", SystemPermission.CREATE_TABLE); + secOps.createLocalUser(adminUser, new PasswordToken(adminUser)); + secOps.grantSystemPermission(adminUser, SystemPermission.CREATE_TABLE); + final RyaClient userAClient = AccumuloRyaClientFactory.build( - new AccumuloConnectionDetails("userA", "userA".toCharArray(), getInstanceName(), getZookeepers()), - super.getClusterInstance().getCluster().getConnector("userA", "userA")); + new AccumuloConnectionDetails(adminUser, adminUser.toCharArray(), getInstanceName(), getZookeepers()), + super.getClusterInstance().getCluster().getConnector(adminUser, adminUser)); // Create the user that will be added to the instance of Rya. - secOps.createLocalUser("userB", new PasswordToken("userB")); + secOps.createLocalUser(user, new PasswordToken(user)); final RyaClient userBClient = AccumuloRyaClientFactory.build( - new AccumuloConnectionDetails("userB", "userB".toCharArray(), getInstanceName(), getZookeepers()), - super.getClusterInstance().getCluster().getConnector("userB", "userB")); + new AccumuloConnectionDetails(user, user.toCharArray(), getInstanceName(), getZookeepers()), + super.getClusterInstance().getCluster().getConnector(user, user)); // Install the instance of Rya. - userAClient.getInstall().install("testInstance_", InstallConfiguration.builder().build()); + userAClient.getInstall().install(getRyaInstanceName(), InstallConfiguration.builder().build()); // Add userB. - userAClient.getAddUser().addUser("testInstance_", "userB"); + userAClient.getAddUser().addUser(getRyaInstanceName(), user); // Remove userA. - userBClient.getRemoveUser().removeUser("testInstance_", "userA"); + userBClient.getRemoveUser().removeUser(getRyaInstanceName(), adminUser); // Ensure the Rya instance's details have been updated to include the added user. final ImmutableList<String> expectedUsers = ImmutableList.<String>builder() - .add("userB") + .add(user) .build(); - final RyaDetails details = userBClient.getGetInstanceDetails().getDetails("testInstance_").get(); + final RyaDetails details = userBClient.getGetInstanceDetails().getDetails(getRyaInstanceName()).get(); assertEquals(expectedUsers, details.getUsers()); } @@ -89,31 +92,33 @@ public class AccumuloRemoveUserIT extends AccumuloITBase { */ @Test public void removedUserCanNotInsert() throws Exception { + String adminUser = testInstance.createUniqueUser(); + String user = testInstance.createUniqueUser(); final SecurityOperations secOps = super.getConnector().securityOperations(); // Create the user that will install the instance of Rya. - secOps.createLocalUser("userA", new PasswordToken("userA")); - secOps.grantSystemPermission("userA", SystemPermission.CREATE_TABLE); + secOps.createLocalUser(adminUser, new PasswordToken(adminUser)); + secOps.grantSystemPermission(adminUser, SystemPermission.CREATE_TABLE); final RyaClient userAClient = AccumuloRyaClientFactory.build( - new AccumuloConnectionDetails("userA", "userA".toCharArray(), getInstanceName(), getZookeepers()), - super.getClusterInstance().getCluster().getConnector("userA", "userA")); + new AccumuloConnectionDetails(adminUser, adminUser.toCharArray(), getInstanceName(), getZookeepers()), + super.getClusterInstance().getCluster().getConnector(adminUser, adminUser)); // Create the user that will be added to the instance of Rya. - secOps.createLocalUser("userB", new PasswordToken("userB")); + secOps.createLocalUser(user, new PasswordToken(user)); - final RyaClient userBClient = AccumuloRyaClientFactory.build( - new AccumuloConnectionDetails("userB", "userB".toCharArray(), getInstanceName(), getZookeepers()), - super.getClusterInstance().getCluster().getConnector("userB", "userB")); + final RyaClient userCClient = AccumuloRyaClientFactory.build( + new AccumuloConnectionDetails(user, user.toCharArray(), getInstanceName(), getZookeepers()), + super.getClusterInstance().getCluster().getConnector(user, user)); // Install the instance of Rya. - userAClient.getInstall().install("testInstance_", InstallConfiguration.builder().build()); + userAClient.getInstall().install(getRyaInstanceName(), InstallConfiguration.builder().build()); - // Add userB. - userAClient.getAddUser().addUser("testInstance_", "userB"); + // Add userC. + userAClient.getAddUser().addUser(getRyaInstanceName(), user); // Remove userA. - userBClient.getRemoveUser().removeUser("testInstance_", "userA"); + userCClient.getRemoveUser().removeUser(getRyaInstanceName(), adminUser); // Show that userA can not insert anything. boolean securityExceptionThrown = false; @@ -121,7 +126,7 @@ public class AccumuloRemoveUserIT extends AccumuloITBase { Sail sail = null; SailConnection sailConn = null; try { - final AccumuloRdfConfiguration userAConf = makeRyaConfig("testInstance_", "userA", "userA", getInstanceName(), getZookeepers()); + final AccumuloRdfConfiguration userAConf = makeRyaConfig(getRyaInstanceName(), adminUser, adminUser, getInstanceName(), getZookeepers()); sail = RyaSailFactory.getInstance(userAConf); sailConn = sail.getConnection(); @@ -135,14 +140,10 @@ public class AccumuloRemoveUserIT extends AccumuloITBase { } } finally { if(sailConn != null) { - try { - sailConn.close(); - } finally { } + sailConn.close(); } if(sail != null) { - try { - sail.shutDown(); - } finally { } + sail.shutDown(); } } http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/d3ba442f/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/AccumuloUninstallIT.java ---------------------------------------------------------------------- diff --git a/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/AccumuloUninstallIT.java b/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/AccumuloUninstallIT.java index 3966ddf..c4e4d54 100644 --- a/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/AccumuloUninstallIT.java +++ b/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/AccumuloUninstallIT.java @@ -64,7 +64,7 @@ public class AccumuloUninstallIT extends AccumuloITBase { getZookeepers()); final Install install = new AccumuloInstall(connectionDetails, getConnector()); - final String ryaInstanceName = "testInstance_"; + final String ryaInstanceName = getRyaInstanceName(); install.install(ryaInstanceName, installConfig); // Check that the instance exists. http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/d3ba442f/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/FluoITBase.java ---------------------------------------------------------------------- diff --git a/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/FluoITBase.java b/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/FluoITBase.java index a650bad..2e16412 100644 --- a/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/FluoITBase.java +++ b/extras/indexing/src/test/java/org/apache/rya/api/client/accumulo/FluoITBase.java @@ -20,8 +20,6 @@ package org.apache.rya.api.client.accumulo; import static com.google.common.base.Preconditions.checkNotNull; -import java.io.File; -import java.io.IOException; import java.net.UnknownHostException; import java.util.ArrayList; import java.util.HashMap; @@ -35,9 +33,11 @@ import org.apache.accumulo.core.client.Instance; import org.apache.accumulo.core.client.ZooKeeperInstance; import org.apache.accumulo.core.client.security.tokens.PasswordToken; import org.apache.accumulo.minicluster.MiniAccumuloCluster; -import org.apache.accumulo.minicluster.MiniAccumuloConfig; import org.apache.log4j.Level; import org.apache.log4j.Logger; +import org.apache.rya.accumulo.MiniAccumuloClusterInstance; +import org.apache.rya.accumulo.MiniAccumuloSingleton; +import org.apache.rya.accumulo.RyaTestInstanceRule; import org.apache.rya.indexing.pcj.fluo.app.export.rya.RyaExportParameters; import org.apache.rya.indexing.pcj.fluo.app.observers.FilterObserver; import org.apache.rya.indexing.pcj.fluo.app.observers.JoinObserver; @@ -48,13 +48,12 @@ import org.apache.zookeeper.ClientCnxn; import org.junit.After; import org.junit.Before; import org.junit.BeforeClass; +import org.junit.Rule; import org.openrdf.repository.RepositoryConnection; import org.openrdf.repository.RepositoryException; import org.openrdf.sail.Sail; import org.openrdf.sail.SailException; -import com.google.common.io.Files; - import org.apache.fluo.api.client.FluoAdmin; import org.apache.fluo.api.client.FluoAdmin.AlreadyInitializedException; import org.apache.fluo.api.client.FluoAdmin.TableExistsException; @@ -85,45 +84,49 @@ import org.apache.rya.sail.config.RyaSailFactory; public abstract class FluoITBase { private static final Logger log = Logger.getLogger(FluoITBase.class); - protected static final String RYA_INSTANCE_NAME = "test_"; + // Mini Accumulo Cluster + private static MiniAccumuloClusterInstance clusterInstance = MiniAccumuloSingleton.getInstance(); + private static MiniAccumuloCluster cluster; - protected static final String ACCUMULO_USER = "root"; - protected static final String ACCUMULO_PASSWORD = "password"; + private static String instanceName = null; + private static String zookeepers = null; - // Mini Accumulo Cluster - protected MiniAccumuloCluster cluster; protected static Connector accumuloConn = null; - protected String instanceName = null; - protected String zookeepers = null; // Fluo data store and connections. protected MiniFluo fluo = null; protected FluoClient fluoClient = null; - protected final String appName = "IntegrationTests"; // Rya data store and connections. protected RyaSailRepository ryaRepo = null; protected RepositoryConnection ryaConn = null; + @Rule + public RyaTestInstanceRule testInstance = new RyaTestInstanceRule(false); + @BeforeClass - public static void killLoudLogs() { + public static void beforeClass() throws Exception { Logger.getLogger(ClientCnxn.class).setLevel(Level.ERROR); + + // Setup and start the Mini Accumulo. + cluster = clusterInstance.getCluster(); + + // Store a connector to the Mini Accumulo. + instanceName = cluster.getInstanceName(); + zookeepers = cluster.getZooKeepers(); + + final Instance instance = new ZooKeeperInstance(instanceName, zookeepers); + accumuloConn = instance.getConnector(clusterInstance.getUsername(), new PasswordToken(clusterInstance.getPassword())); } @Before - public void setupMiniResources() - throws IOException, InterruptedException, AccumuloException, AccumuloSecurityException, RepositoryException, - RyaDAOException, NumberFormatException, InferenceEngineException, AlreadyInitializedException, - TableExistsException, AlreadyInitializedException, RyaDetailsRepositoryException, DuplicateInstanceNameException, RyaClientException, SailException { - // Initialize the Mini Accumulo that will be used to host Rya and Fluo. - setupMiniAccumulo(); - + public void setupMiniResources() throws Exception { // Initialize the Mini Fluo that will be used to store created queries. fluo = startMiniFluo(); fluoClient = FluoFactory.newClient(fluo.getClientConfiguration()); // Initialize the Rya that will be used by the tests. - ryaRepo = setupRya(ACCUMULO_USER, ACCUMULO_PASSWORD, instanceName, zookeepers, appName); + ryaRepo = setupRya(); ryaConn = ryaRepo.getConnection(); } @@ -169,31 +172,18 @@ public abstract class FluoITBase { } } - if(cluster != null) { - try { - log.info("Shutting down the Mini Accumulo being used as a Rya store."); - cluster.stop(); - log.info("Mini Accumulo being used as a Rya store shut down."); - } catch(final Exception e) { - log.error("Could not shut down the Mini Accumulo.", e); - } - } } - private void setupMiniAccumulo() throws IOException, InterruptedException, AccumuloException, AccumuloSecurityException { - final File miniDataDir = Files.createTempDir(); - - // Setup and start the Mini Accumulo. - final MiniAccumuloConfig cfg = new MiniAccumuloConfig(miniDataDir, ACCUMULO_PASSWORD); - cluster = new MiniAccumuloCluster(cfg); - cluster.start(); - - // Store a connector to the Mini Accumulo. - instanceName = cluster.getInstanceName(); - zookeepers = cluster.getZooKeepers(); + public String getRyaInstanceName() { + return testInstance.getRyaInstanceName(); + } - final Instance instance = new ZooKeeperInstance(instanceName, zookeepers); - accumuloConn = instance.getConnector(ACCUMULO_USER, new PasswordToken(ACCUMULO_PASSWORD)); + public AccumuloConnectionDetails createConnectionDetails() { + return new AccumuloConnectionDetails( + clusterInstance.getUsername(), + clusterInstance.getPassword().toCharArray(), + clusterInstance.getInstanceName(), + clusterInstance.getZookeepers()); } /** @@ -210,9 +200,9 @@ public abstract class FluoITBase { ryaParams.setExportToRya(true); ryaParams.setAccumuloInstanceName(instanceName); ryaParams.setZookeeperServers(zookeepers); - ryaParams.setExporterUsername(ACCUMULO_USER); - ryaParams.setExporterPassword(ACCUMULO_PASSWORD); - ryaParams.setRyaInstanceName(RYA_INSTANCE_NAME); + ryaParams.setExporterUsername(clusterInstance.getUsername()); + ryaParams.setExporterPassword(clusterInstance.getPassword()); + ryaParams.setRyaInstanceName(getRyaInstanceName()); return params; } @@ -240,13 +230,13 @@ public abstract class FluoITBase { final FluoConfiguration config = new FluoConfiguration(); config.setMiniStartAccumulo(false); config.setAccumuloInstance(instanceName); - config.setAccumuloUser(ACCUMULO_USER); - config.setAccumuloPassword(ACCUMULO_PASSWORD); + config.setAccumuloUser(clusterInstance.getUsername()); + config.setAccumuloPassword(clusterInstance.getPassword()); config.setInstanceZookeepers(zookeepers + "/fluo"); config.setAccumuloZookeepers(zookeepers); - config.setApplicationName(appName); - config.setAccumuloTable("fluo" + appName); + config.setApplicationName(getRyaInstanceName()); + config.setAccumuloTable("fluo" + getRyaInstanceName()); config.addObservers(observers); @@ -258,38 +248,30 @@ public abstract class FluoITBase { /** * Sets up a Rya instance. */ - protected RyaSailRepository setupRya(final String user, final String password, final String instanceName, final String zookeepers, final String appName) + protected RyaSailRepository setupRya() throws AccumuloException, AccumuloSecurityException, RepositoryException, RyaDAOException, NumberFormatException, UnknownHostException, InferenceEngineException, AlreadyInitializedException, RyaDetailsRepositoryException, DuplicateInstanceNameException, RyaClientException, SailException { - checkNotNull(user); - checkNotNull(password); checkNotNull(instanceName); checkNotNull(zookeepers); - checkNotNull(appName); // Setup Rya configuration values. final AccumuloRdfConfiguration conf = new AccumuloRdfConfiguration(); - conf.setTablePrefix(RYA_INSTANCE_NAME); + conf.setTablePrefix(getRyaInstanceName()); conf.setDisplayQueryPlan(true); conf.setBoolean(ConfigUtils.USE_MOCK_INSTANCE, false); - conf.set(ConfigUtils.CLOUDBASE_USER, user); - conf.set(ConfigUtils.CLOUDBASE_PASSWORD, password); - conf.set(ConfigUtils.CLOUDBASE_INSTANCE, instanceName); - conf.set(ConfigUtils.CLOUDBASE_ZOOKEEPERS, zookeepers); + conf.set(ConfigUtils.CLOUDBASE_USER, clusterInstance.getUsername()); + conf.set(ConfigUtils.CLOUDBASE_PASSWORD, clusterInstance.getPassword()); + conf.set(ConfigUtils.CLOUDBASE_INSTANCE, clusterInstance.getInstanceName()); + conf.set(ConfigUtils.CLOUDBASE_ZOOKEEPERS, clusterInstance.getZookeepers()); conf.set(ConfigUtils.USE_PCJ, "true"); - conf.set(ConfigUtils.FLUO_APP_NAME, appName); + conf.set(ConfigUtils.FLUO_APP_NAME, getRyaInstanceName()); conf.set(ConfigUtils.PCJ_STORAGE_TYPE, PrecomputedJoinIndexerConfig.PrecomputedJoinStorageType.ACCUMULO.toString()); conf.set(ConfigUtils.PCJ_UPDATER_TYPE, PrecomputedJoinIndexerConfig.PrecomputedJoinUpdaterType.FLUO.toString()); conf.set(ConfigUtils.CLOUDBASE_AUTHS, ""); // Install the test instance of Rya. - final AccumuloConnectionDetails connectionDetails = new AccumuloConnectionDetails( - ACCUMULO_USER, - ACCUMULO_PASSWORD.toCharArray(), - cluster.getInstanceName(), - cluster.getZooKeepers()); - final Install install = new AccumuloInstall(connectionDetails, accumuloConn); + final Install install = new AccumuloInstall(createConnectionDetails(), accumuloConn); final InstallConfiguration installConfig = InstallConfiguration.builder() .setEnableTableHashPrefix(true) @@ -298,9 +280,9 @@ public abstract class FluoITBase { .setEnableTemporalIndex(true) .setEnablePcjIndex(true) .setEnableGeoIndex(true) - .setFluoPcjAppName(appName) + .setFluoPcjAppName(getRyaInstanceName()) .build(); - install.install(RYA_INSTANCE_NAME, installConfig); + install.install(getRyaInstanceName(), installConfig); // Connect to the instance of Rya that was just installed. final Sail sail = RyaSailFactory.getInstance(conf); http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/d3ba442f/extras/rya.console/src/test/java/org/apache/rya/shell/RyaShellITBase.java ---------------------------------------------------------------------- diff --git a/extras/rya.console/src/test/java/org/apache/rya/shell/RyaShellITBase.java b/extras/rya.console/src/test/java/org/apache/rya/shell/RyaShellITBase.java index 9727852..bcbaa5b 100644 --- a/extras/rya.console/src/test/java/org/apache/rya/shell/RyaShellITBase.java +++ b/extras/rya.console/src/test/java/org/apache/rya/shell/RyaShellITBase.java @@ -25,10 +25,13 @@ import org.apache.accumulo.core.client.AccumuloSecurityException; import org.apache.accumulo.minicluster.MiniAccumuloCluster; import org.apache.log4j.Level; import org.apache.log4j.Logger; +import org.apache.rya.accumulo.MiniAccumuloSingleton; +import org.apache.rya.accumulo.RyaTestInstanceRule; import org.apache.zookeeper.ClientCnxn; import org.junit.After; import org.junit.Before; import org.junit.BeforeClass; +import org.junit.Rule; import org.springframework.shell.Bootstrap; import org.springframework.shell.core.JLineShellComponent; @@ -42,11 +45,6 @@ import org.apache.rya.accumulo.MiniAccumuloClusterInstance; public class RyaShellITBase { /** - * The cluster that will be used. - */ - private MiniAccumuloClusterInstance cluster = null; - - /** * The bootstrap that was used to initialize the Shell that will be tested. */ private Bootstrap bootstrap; @@ -56,6 +54,9 @@ public class RyaShellITBase { */ private JLineShellComponent shell; + @Rule + public RyaTestInstanceRule testInstance = new RyaTestInstanceRule(false); + @BeforeClass public static void killLoudLogs() { Logger.getLogger(ClientCnxn.class).setLevel(Level.ERROR); @@ -63,10 +64,6 @@ public class RyaShellITBase { @Before public void startShell() throws IOException, InterruptedException, AccumuloException, AccumuloSecurityException { - // Start the cluster. - cluster = new MiniAccumuloClusterInstance(); - cluster.startMiniAccumulo(); - // Bootstrap the shell with the test bean configuration. bootstrap = new Bootstrap(new String[]{}, new String[]{"file:src/test/resources/RyaShellTest-context.xml"}); shell = bootstrap.getJLineShellComponent(); @@ -75,9 +72,6 @@ public class RyaShellITBase { @After public void stopShell() throws IOException, InterruptedException { shell.stop(); - - // Stop the cluster. - cluster.stopMiniAccumulo(); } /** @@ -98,6 +92,11 @@ public class RyaShellITBase { * @return The cluster that is hosting the test. */ public MiniAccumuloCluster getCluster() { - return cluster.getCluster(); + return MiniAccumuloSingleton.getInstance().getCluster(); + } + + public String getInstanceName() { + return testInstance.getRyaInstanceName(); } + } \ No newline at end of file