Merge pull request #15 from smgoller/sole-tenant

Convert to sole tenant style cluster.
diff --git a/harness/src/main/java/org/apache/geode/perftest/infrastructure/ssh/SshInfrastructureFactory.java b/harness/src/main/java/org/apache/geode/perftest/infrastructure/ssh/SshInfrastructureFactory.java
index 00ed0c5..f63cda2 100644
--- a/harness/src/main/java/org/apache/geode/perftest/infrastructure/ssh/SshInfrastructureFactory.java
+++ b/harness/src/main/java/org/apache/geode/perftest/infrastructure/ssh/SshInfrastructureFactory.java
@@ -19,13 +19,14 @@
 
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.List;
 
 import org.apache.geode.perftest.infrastructure.Infrastructure;
 import org.apache.geode.perftest.infrastructure.InfrastructureFactory;
 
 public class SshInfrastructureFactory implements InfrastructureFactory {
 
-  private final Collection<String> hosts;
+  private final List<String> hosts;
   private final String user;
 
   public SshInfrastructureFactory(String user, String... hosts) {
@@ -34,8 +35,12 @@
   }
 
   @Override
-  public Infrastructure create(int nodes) throws Exception {
-    return new SshInfrastructure(hosts, user);
+  public Infrastructure create(int nodes) {
+    if (nodes > hosts.size()) {
+      throw new IllegalStateException(
+          "Not enough hosts to create " + nodes + " nodes. Available hosts: " + hosts);
+    }
+    return new SshInfrastructure(hosts.subList(0, nodes), user);
   }
 
   public Collection<String> getHosts() {
diff --git a/harness/src/test/java/org/apache/geode/perftest/infrastructure/ssh/SshInfrastructureFactoryTest.java b/harness/src/test/java/org/apache/geode/perftest/infrastructure/ssh/SshInfrastructureFactoryTest.java
new file mode 100644
index 0000000..9c929a1
--- /dev/null
+++ b/harness/src/test/java/org/apache/geode/perftest/infrastructure/ssh/SshInfrastructureFactoryTest.java
@@ -0,0 +1,36 @@
+/*
+ * 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.geode.perftest.infrastructure.ssh;
+
+import org.assertj.core.api.Assertions;
+import org.junit.Test;
+
+import org.apache.geode.perftest.infrastructure.Infrastructure;
+
+public class SshInfrastructureFactoryTest {
+
+  @Test
+  public void ignoresExtraHosts() {
+    SshInfrastructureFactory factory =
+        new SshInfrastructureFactory("user", "localhost", "localhost", "localhost");
+    Infrastructure infra = factory.create(2);
+
+    Assertions.assertThat(infra.getNodes()).hasSize(2);
+  }
+
+}