aboutsummaryrefslogtreecommitdiff
path: root/contrib/storage-opentsdb/src/test/java/org/apache/drill/store/openTSDB/TestOpenTSDBPlugin.java
diff options
context:
space:
mode:
authorVolodymyr Vysotskyi <vvovyk@gmail.com>2018-03-01 14:52:28 +0200
committerArina Ielchiieva <arina.yelchiyeva@gmail.com>2018-03-03 19:47:41 +0200
commit4bd3cc2995ab7bd94ca5f5a8838b0d02fb396c3e (patch)
tree415e1f34cc3315c6d5118a6f3829bf45752e316c /contrib/storage-opentsdb/src/test/java/org/apache/drill/store/openTSDB/TestOpenTSDBPlugin.java
parent57e5ab26659e1fa393f8963435de946e0da949be (diff)
DRILL-6198: OpenTSDB unit tests fail when Lilith client is running
closes #1142
Diffstat (limited to 'contrib/storage-opentsdb/src/test/java/org/apache/drill/store/openTSDB/TestOpenTSDBPlugin.java')
-rw-r--r--contrib/storage-opentsdb/src/test/java/org/apache/drill/store/openTSDB/TestOpenTSDBPlugin.java41
1 files changed, 35 insertions, 6 deletions
diff --git a/contrib/storage-opentsdb/src/test/java/org/apache/drill/store/openTSDB/TestOpenTSDBPlugin.java b/contrib/storage-opentsdb/src/test/java/org/apache/drill/store/openTSDB/TestOpenTSDBPlugin.java
index 27ca09c61..0c1fb5ef5 100644
--- a/contrib/storage-opentsdb/src/test/java/org/apache/drill/store/openTSDB/TestOpenTSDBPlugin.java
+++ b/contrib/storage-opentsdb/src/test/java/org/apache/drill/store/openTSDB/TestOpenTSDBPlugin.java
@@ -21,13 +21,18 @@ import com.github.tomakehurst.wiremock.junit.WireMockRule;
import org.apache.drill.PlanTestBase;
import org.apache.drill.common.exceptions.UserRemoteException;
import org.apache.drill.exec.store.StoragePluginRegistry;
-import org.apache.drill.exec.store.openTSDB.OpenTSDBStoragePlugin;
import org.apache.drill.exec.store.openTSDB.OpenTSDBStoragePluginConfig;
import org.junit.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Rule;
import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.net.BindException;
+import java.net.ServerSocket;
import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson;
@@ -50,18 +55,19 @@ import static org.apache.drill.store.openTSDB.TestDataHolder.SAMPLE_DATA_FOR_POS
import static org.apache.drill.store.openTSDB.TestDataHolder.SAMPLE_DATA_FOR_POST_REQUEST_WITH_TAGS;
public class TestOpenTSDBPlugin extends PlanTestBase {
+ private static final Logger logger = LoggerFactory.getLogger(TestOpenTSDBPlugin.class);
- protected static OpenTSDBStoragePlugin storagePlugin;
- protected static OpenTSDBStoragePluginConfig storagePluginConfig;
+ private static int portNumber;
@Rule
- public WireMockRule wireMockRule = new WireMockRule(10000);
+ public WireMockRule wireMockRule = new WireMockRule(portNumber);
@BeforeClass
public static void setup() throws Exception {
+ portNumber = getFreePortNumber(10_000, 200);
final StoragePluginRegistry pluginRegistry = getDrillbitContext().getStorage();
- storagePlugin = (OpenTSDBStoragePlugin) pluginRegistry.getPlugin(OpenTSDBStoragePluginConfig.NAME);
- storagePluginConfig = storagePlugin.getConfig();
+ OpenTSDBStoragePluginConfig storagePluginConfig =
+ new OpenTSDBStoragePluginConfig(String.format("http://localhost:%s", portNumber));
storagePluginConfig.setEnabled(true);
pluginRegistry.createOrUpdate(OpenTSDBStoragePluginConfig.NAME, storagePluginConfig, true);
}
@@ -185,4 +191,27 @@ public class TestOpenTSDBPlugin extends PlanTestBase {
test("describe `warp.speed.test`");
Assert.assertEquals(1, testSql("show tables"));
}
+
+ /**
+ * Checks that port with specified number is free and returns it.
+ * Otherwise, increases port number and checks until free port is found
+ * or the number of attempts is reached specified numberOfAttempts
+ *
+ * @param portNumber initial port number
+ * @param numberOfAttempts max number of attempts to find port with greater number
+ * @return free port number
+ * @throws BindException if free port was not found and all attempts were used.
+ */
+ private static int getFreePortNumber(int portNumber, int numberOfAttempts) throws IOException {
+ for (int i = portNumber; i <= portNumber + numberOfAttempts; i++) {
+ try (ServerSocket socket = new ServerSocket(i)) {
+ return socket.getLocalPort();
+ } catch (BindException e) {
+ logger.warn("Port {} is already in use.", i);
+ }
+ }
+
+ throw new BindException(String.format("Free port could not be found in the range [%s-%s].\n" +
+ "Please release any of used ports in this range.", portNumber, portNumber + numberOfAttempts));
+ }
}