5
0
mirror of https://github.com/apache/sqoop.git synced 2025-05-07 04:59:26 +08:00

SQOOP-2341: Sqoop2: Test repository infrastructure

(Syed Hashmi via Abraham Elmahrek)
This commit is contained in:
Abraham Elmahrek 2015-05-14 20:10:13 -07:00
parent ad632361bb
commit d2cf56680a
5 changed files with 173 additions and 15 deletions

View File

@ -0,0 +1,45 @@
/**
* 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.common.test.repository;
import java.util.HashMap;
import java.util.Map;
/**
This class encapsulates the logic around generating properties for using
derby as repository provider in Integration Tests
*/
public class DerbyRepositoryProvider extends RepositoryProviderBase {
@Override
public Map<String,String> getPropertiesMap() {
Map<String, String> properties = new HashMap<String, String>();
properties.put("org.apache.sqoop.repository.provider", "org.apache.sqoop.repository.JdbcRepositoryProvider");
properties.put("org.apache.sqoop.repository.schema.immutable", "false");
properties.put("org.apache.sqoop.repository.jdbc.handler", "org.apache.sqoop.repository.derby.DerbyRepositoryHandler");
properties.put("org.apache.sqoop.repository.jdbc.transaction.isolation", "READ_COMMITTED");
properties.put("org.apache.sqoop.repository.jdbc.maximum.connections", "10");
properties.put("org.apache.sqoop.repository.jdbc.url=jdbc:derby:memory:myDB;create", "true");
properties.put("org.apache.sqoop.repository.jdbc.driver", "org.apache.derby.jdbc.EmbeddedDriver");
properties.put("org.apache.sqoop.repository.jdbc.user", "sa");
properties.put("org.apache.sqoop.repository.jdbc.password", "");
return properties;
}
}

View File

@ -0,0 +1,58 @@
/**
* 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.common.test.repository;
import java.util.HashMap;
import java.util.Map;
public class PostgresqlRepositoryProvider extends RepositoryProviderBase {
private static final String DRIVER = "org.postgresql.Driver";
private static final String CONNECTION = System.getProperties().getProperty(
"sqoop.repository.postgresql.jdbc.url",
"jdbc:postgresql://localhost/test"
);
private static final String USERNAME = System.getProperties().getProperty(
"sqoop.repository.postgresql.username",
"sqoop"
);
private static final String PASSWORD = System.getProperties().getProperty(
"sqoop.repository.postgresql.password",
"sqoop"
);
@Override
public Map<String,String> getPropertiesMap() {
Map<String, String> properties = new HashMap<String, String>();
properties.put("org.apache.sqoop.repository.provider", "org.apache.sqoop.repository.JdbcRepositoryProvider");
properties.put("org.apache.sqoop.repository.schema.immutable", "false");
properties.put("org.apache.sqoop.repository.jdbc.handler", "org.apache.sqoop.repository.postgresql.PostgresqlRepositoryHandler");
properties.put("org.apache.sqoop.repository.jdbc.transaction.isolation", "READ_COMMITTED");
properties.put("org.apache.sqoop.repository.jdbc.maximum.connections", "10");
properties.put("org.apache.sqoop.repository.jdbc.url", CONNECTION);
properties.put("org.apache.sqoop.repository.jdbc.driver", DRIVER);
properties.put("org.apache.sqoop.repository.jdbc.user", USERNAME);
properties.put("org.apache.sqoop.repository.jdbc.password", PASSWORD);
return properties;
}
}

View File

@ -0,0 +1,25 @@
/**
* 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.common.test.repository;
import java.util.Map;
public abstract class RepositoryProviderBase {
public abstract Map<String,String> getPropertiesMap();
}

View File

@ -0,0 +1,41 @@
/**
* 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.common.test.repository;
import java.util.Map;
/**
* Instantiate the right class for handling repository specific properties
*/
public class RepositoryProviderFactory {
public static final String REPOSITORY_CLASS_PROPERTY = "sqoop.repository.handler.class";
public static Map<String, String> getRepositoryProperties() throws ClassNotFoundException, IllegalAccessException, InstantiationException {
String className = System.getProperty(REPOSITORY_CLASS_PROPERTY);
RepositoryProviderBase repoProvider;
if(className == null) {
repoProvider = new DerbyRepositoryProvider();
} else {
Class<?> klass = Class.forName(className);
repoProvider = (RepositoryProviderBase) klass.newInstance();
}
return repoProvider.getPropertiesMap();
}
}

View File

@ -20,6 +20,7 @@
import org.apache.commons.io.FileUtils; import org.apache.commons.io.FileUtils;
import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.conf.Configuration;
import org.apache.sqoop.core.ConfigurationConstants; import org.apache.sqoop.core.ConfigurationConstants;
import org.apache.sqoop.common.test.repository.RepositoryProviderFactory;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
@ -104,7 +105,7 @@ public String getLogPath() {
* *
* @throws IOException * @throws IOException
*/ */
protected void prepareTemporaryPath() throws IOException { protected void prepareTemporaryPath() throws Exception {
File tmpDir = new File(getTemporaryPath()); File tmpDir = new File(getTemporaryPath());
File configDir = new File(getConfigurationPath()); File configDir = new File(getConfigurationPath());
File logDir = new File(getLogPath()); File logDir = new File(getLogPath());
@ -168,20 +169,8 @@ protected Map<String, String> getLoggerConfiguration() {
return properties; return properties;
} }
protected Map<String, String> getRepositoryConfiguration() { protected Map<String, String> getRepositoryConfiguration() throws Exception {
Map<String, String> properties = new HashMap<String, String>(); return RepositoryProviderFactory.getRepositoryProperties();
properties.put("org.apache.sqoop.repository.provider", "org.apache.sqoop.repository.JdbcRepositoryProvider");
properties.put("org.apache.sqoop.repository.schema.immutable", "false");
properties.put("org.apache.sqoop.repository.jdbc.handler", "org.apache.sqoop.repository.derby.DerbyRepositoryHandler");
properties.put("org.apache.sqoop.repository.jdbc.transaction.isolation", "READ_COMMITTED");
properties.put("org.apache.sqoop.repository.jdbc.maximum.connections", "10");
properties.put("org.apache.sqoop.repository.jdbc.url=jdbc:derby:memory:myDB;create", "true");
properties.put("org.apache.sqoop.repository.jdbc.driver", "org.apache.derby.jdbc.EmbeddedDriver");
properties.put("org.apache.sqoop.repository.jdbc.user", "sa");
properties.put("org.apache.sqoop.repository.jdbc.password", "");
return properties;
} }
protected Map<String, String> getSubmissionEngineConfiguration() { protected Map<String, String> getSubmissionEngineConfiguration() {