You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sqoop.apache.org by ja...@apache.org on 2015/01/05 08:03:19 UTC
sqoop git commit: SQOOP-1927: Sqoop2: Move CSVURIValidator into
validators package
Repository: sqoop
Updated Branches:
refs/heads/sqoop2 fdc40d39c -> d56d6417f
SQOOP-1927: Sqoop2: Move CSVURIValidator into validators package
(Abraham Elmahrek via Jarek Jarcec Cecho)
Project: http://git-wip-us.apache.org/repos/asf/sqoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/sqoop/commit/d56d6417
Tree: http://git-wip-us.apache.org/repos/asf/sqoop/tree/d56d6417
Diff: http://git-wip-us.apache.org/repos/asf/sqoop/diff/d56d6417
Branch: refs/heads/sqoop2
Commit: d56d6417f4cb908c0cf67d404b20f55abd0061f7
Parents: fdc40d3
Author: Jarek Jarcec Cecho <ja...@apache.org>
Authored: Mon Jan 5 08:02:47 2015 +0100
Committer: Jarek Jarcec Cecho <ja...@apache.org>
Committed: Mon Jan 5 08:02:47 2015 +0100
----------------------------------------------------------------------
.../validation/validators/CSVURIValidator.java | 55 +++++++++++++
.../validators/TestCSVURIValidator.java | 68 ++++++++++++++++
.../kafka/configuration/LinkConfig.java | 20 +----
.../connector/kafka/TestConfigValidator.java | 59 --------------
.../connector/kafka/TestConfiguration.java | 85 ++++++++++++++++++++
5 files changed, 209 insertions(+), 78 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/sqoop/blob/d56d6417/common/src/main/java/org/apache/sqoop/validation/validators/CSVURIValidator.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/sqoop/validation/validators/CSVURIValidator.java b/common/src/main/java/org/apache/sqoop/validation/validators/CSVURIValidator.java
new file mode 100644
index 0000000..a82a238
--- /dev/null
+++ b/common/src/main/java/org/apache/sqoop/validation/validators/CSVURIValidator.java
@@ -0,0 +1,55 @@
+/**
+ * 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.sqoop.validation.validators;
+
+import org.apache.sqoop.validation.Status;
+
+/**
+ * Validate a string takes on the form: host:port,host:port,...
+ */
+public class CSVURIValidator extends AbstractValidator<String> {
+
+ // validate that given string is a comma-separated list of host:port
+ @Override
+ public void validate(String str) {
+ if(str != null && str != "") {
+ String[] pairs = str.split("\\s*,\\s*");
+ for (String pair: pairs) {
+ String[] parts = pair.split("\\s*:\\s*");
+ if (parts.length != 2) {
+ addMessage(Status.ERROR,"can't parse into host:port pairs");
+ } else {
+ String[] rightParts = parts[1].split("/");
+
+ try {
+ int port = Integer.parseInt(rightParts[0]);
+ if (port < 0) {
+ addMessage(Status.ERROR, "Can't parse port less than 0");
+ } else if (port > 65535) {
+ addMessage(Status.ERROR, "Can't parse port greater than 65535");
+ }
+ } catch(NumberFormatException e) {
+ addMessage(Status.ERROR, "Can't parse port");
+ }
+ }
+ }
+ } else {
+ addMessage(Status.ERROR, "Can't be null nor empty");
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/sqoop/blob/d56d6417/common/src/test/java/org/apache/sqoop/validation/validators/TestCSVURIValidator.java
----------------------------------------------------------------------
diff --git a/common/src/test/java/org/apache/sqoop/validation/validators/TestCSVURIValidator.java b/common/src/test/java/org/apache/sqoop/validation/validators/TestCSVURIValidator.java
new file mode 100644
index 0000000..dfb6fdd
--- /dev/null
+++ b/common/src/test/java/org/apache/sqoop/validation/validators/TestCSVURIValidator.java
@@ -0,0 +1,68 @@
+/**
+ * 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.sqoop.validation.validators;
+
+import org.apache.sqoop.validation.Status;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ */
+public class TestCSVURIValidator {
+
+ AbstractValidator validator = new CSVURIValidator();
+
+ @Test
+ public void test() {
+ assertEquals(0, validator.getMessages().size());
+
+ validator.validate("host1:1,host2:2");
+ assertEquals(Status.OK, validator.getStatus());
+ assertEquals(0, validator.getMessages().size());
+ }
+
+ @Test
+ public void testBad() {
+ assertEquals(0, validator.getMessages().size());
+
+ validator.validate("host1");
+ assertEquals(Status.ERROR, validator.getStatus());
+ assertEquals(1, validator.getMessages().size());
+
+ validator.reset();
+ validator.validate("");
+ assertEquals(Status.ERROR, validator.getStatus());
+ assertEquals(1, validator.getMessages().size());
+
+ validator.reset();
+ validator.validate(null);
+ assertEquals(Status.ERROR, validator.getStatus());
+ assertEquals(1, validator.getMessages().size());
+
+ validator.reset();
+ validator.validate("host1:65536");
+ assertEquals(Status.ERROR, validator.getStatus());
+ assertEquals(1, validator.getMessages().size());
+
+ validator.reset();
+ validator.validate("host1:-1");
+ assertEquals(Status.ERROR, validator.getStatus());
+ assertEquals(1, validator.getMessages().size());
+ }
+}
http://git-wip-us.apache.org/repos/asf/sqoop/blob/d56d6417/connector/connector-kafka/src/main/java/org/apache/sqoop/connector/kafka/configuration/LinkConfig.java
----------------------------------------------------------------------
diff --git a/connector/connector-kafka/src/main/java/org/apache/sqoop/connector/kafka/configuration/LinkConfig.java b/connector/connector-kafka/src/main/java/org/apache/sqoop/connector/kafka/configuration/LinkConfig.java
index 98112e7..256ae64 100644
--- a/connector/connector-kafka/src/main/java/org/apache/sqoop/connector/kafka/configuration/LinkConfig.java
+++ b/connector/connector-kafka/src/main/java/org/apache/sqoop/connector/kafka/configuration/LinkConfig.java
@@ -22,28 +22,10 @@ import org.apache.sqoop.model.Input;
import org.apache.sqoop.model.Validator;
import org.apache.sqoop.validation.Status;
import org.apache.sqoop.validation.validators.AbstractValidator;
+import org.apache.sqoop.validation.validators.CSVURIValidator;
@ConfigClass
public class LinkConfig {
@Input(size=1024, validators = { @Validator(CSVURIValidator.class) }) public String brokerList;
@Input(size=255, validators = { @Validator(CSVURIValidator.class) }) public String zookeeperConnect;
-
- public static class CSVURIValidator extends AbstractValidator<String> {
-
- // validate that given string is a comma-separated list of host:port
- @Override
- public void validate(String str) {
- if(str == null || str !="") {
- String[] pairs = str.split("\\s*,\\s*");
- for (String pair: pairs) {
- String[] parts = pair.split("\\s*:\\s*");
- if (parts.length == 1) {
- addMessage(Status.ERROR,"can't parse into host:port pairs");
- }
- }
- } else {
- addMessage(Status.ERROR, "Can't be null nor empty");
- }
- }
- }
}
http://git-wip-us.apache.org/repos/asf/sqoop/blob/d56d6417/connector/connector-kafka/src/test/java/org/apache/sqoop/connector/kafka/TestConfigValidator.java
----------------------------------------------------------------------
diff --git a/connector/connector-kafka/src/test/java/org/apache/sqoop/connector/kafka/TestConfigValidator.java b/connector/connector-kafka/src/test/java/org/apache/sqoop/connector/kafka/TestConfigValidator.java
deleted file mode 100644
index b61d979..0000000
--- a/connector/connector-kafka/src/test/java/org/apache/sqoop/connector/kafka/TestConfigValidator.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/**
- * 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.sqoop.connector.kafka;
-
-import org.apache.sqoop.connector.kafka.configuration.LinkConfig;
-import org.junit.Test;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-public class TestConfigValidator {
- @Test
- public void testValidURI() {
- String[] URI = {
- "broker1:9092",
- "broker1:9092,broker2:9092",
- "zk1:2181/kafka",
- "zk1:2181,zk2:2181/kafka"
- };
-
- for (String uri: URI) {
- LinkConfig.CSVURIValidator validator = new LinkConfig.CSVURIValidator();
- validator.validate(uri);
- assertTrue(validator.getStatus().canProceed());
- }
- }
-
- @Test
- public void testInvalidURI() {
- String[] URI = {
- "",
- "broker",
- "broker1:9092,broker"
- };
- for (String uri: URI) {
- LinkConfig.CSVURIValidator validator = new LinkConfig.CSVURIValidator();
- validator.validate(uri);
- assertFalse(validator.getStatus().canProceed());
- }
-
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/sqoop/blob/d56d6417/connector/connector-kafka/src/test/java/org/apache/sqoop/connector/kafka/TestConfiguration.java
----------------------------------------------------------------------
diff --git a/connector/connector-kafka/src/test/java/org/apache/sqoop/connector/kafka/TestConfiguration.java b/connector/connector-kafka/src/test/java/org/apache/sqoop/connector/kafka/TestConfiguration.java
new file mode 100644
index 0000000..0aca80d
--- /dev/null
+++ b/connector/connector-kafka/src/test/java/org/apache/sqoop/connector/kafka/TestConfiguration.java
@@ -0,0 +1,85 @@
+/**
+ * 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.sqoop.connector.kafka;
+
+import org.apache.sqoop.connector.kafka.configuration.LinkConfiguration;
+import org.apache.sqoop.validation.ConfigValidationResult;
+import org.apache.sqoop.validation.ConfigValidationRunner;
+import org.apache.sqoop.validation.Status;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+public class TestConfiguration {
+ @Test
+ public void testValidURI() {
+ String[] brokerList = {
+ "broker1:9092",
+ "broker1:9092,broker2:9092"
+ };
+
+ String[] zkList = {
+ "zk1:2181/kafka",
+ "zk1:2181,zk2:2181/kafka"
+ };
+
+ ConfigValidationRunner runner = new ConfigValidationRunner();
+ LinkConfiguration linkConfiguration;
+ ConfigValidationResult result;
+
+ for (String brokerURI : brokerList) {
+ for (String zkURI : zkList) {
+ linkConfiguration = new LinkConfiguration();
+ linkConfiguration.linkConfig.brokerList = brokerURI;
+ linkConfiguration.linkConfig.zookeeperConnect = zkURI;
+
+ result = runner.validate(linkConfiguration);
+ assertEquals(Status.OK, result.getStatus());
+ }
+ }
+ }
+
+ @Test
+ public void testInvalidURI() {
+ String[] brokerList = {
+ "",
+ "broker",
+ "broker1:9092,broker"
+ };
+
+ String[] zkList = {
+ "zk1:2181/kafka",
+ "zk1:2181,zk2:2181/kafka"
+ };
+
+ ConfigValidationRunner runner = new ConfigValidationRunner();
+ LinkConfiguration linkConfiguration;
+ ConfigValidationResult result;
+
+ for (String brokerURI : brokerList) {
+ for (String zkURI : zkList) {
+ linkConfiguration = new LinkConfiguration();
+ linkConfiguration.linkConfig.brokerList = brokerURI;
+ linkConfiguration.linkConfig.zookeeperConnect = zkURI;
+
+ result = runner.validate(linkConfiguration);
+ assertEquals(Status.ERROR, result.getStatus());
+ }
+ }
+ }
+}