6 changed files with 140 additions and 1 deletions
@ -0,0 +1,109 @@ |
|||||
|
/** |
||||
|
* Copyright © 2016-2017 The Thingsboard Authors |
||||
|
* |
||||
|
* Licensed 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.thingsboard.server.dao; |
||||
|
|
||||
|
import com.google.common.base.Charsets; |
||||
|
import com.google.common.io.Resources; |
||||
|
import lombok.extern.slf4j.Slf4j; |
||||
|
import org.junit.Before; |
||||
|
import org.junit.rules.ExternalResource; |
||||
|
import org.junit.rules.TestRule; |
||||
|
import org.junit.runner.Description; |
||||
|
import org.junit.runners.model.Statement; |
||||
|
import ru.yandex.qatools.embed.postgresql.EmbeddedPostgres; |
||||
|
|
||||
|
import java.io.IOException; |
||||
|
import java.io.InputStream; |
||||
|
import java.net.URL; |
||||
|
import java.sql.Connection; |
||||
|
import java.sql.DriverManager; |
||||
|
import java.sql.SQLException; |
||||
|
import java.util.List; |
||||
|
import java.util.Properties; |
||||
|
|
||||
|
import static ru.yandex.qatools.embed.postgresql.distribution.Version.Main.V9_6; |
||||
|
|
||||
|
/** |
||||
|
* Created by Valerii Sosliuk on 6/24/2017. |
||||
|
*/ |
||||
|
@Slf4j |
||||
|
public class CustomPostgresUnit extends ExternalResource { |
||||
|
|
||||
|
private static final String HOST = "host"; |
||||
|
private static final String PORT = "port"; |
||||
|
private static final String DATABASE = "database"; |
||||
|
private static final String USERNAME = "username"; |
||||
|
private static final String PASSWORD = "password"; |
||||
|
|
||||
|
private List<String> sqlFiles; |
||||
|
private Properties properties; |
||||
|
|
||||
|
private EmbeddedPostgres postgres; |
||||
|
|
||||
|
public CustomPostgresUnit(List<String> sqlFiles, String configurationFileName) { |
||||
|
this.sqlFiles = sqlFiles; |
||||
|
this.properties = loadProperties(configurationFileName); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public void before() { |
||||
|
postgres = new EmbeddedPostgres(V9_6); |
||||
|
load(); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public void after() { |
||||
|
postgres.stop(); |
||||
|
} |
||||
|
|
||||
|
private void load() { |
||||
|
Connection conn = null; |
||||
|
try { |
||||
|
String url = postgres.start(properties.getProperty(HOST), |
||||
|
Integer.parseInt(properties.getProperty(PORT)), |
||||
|
properties.getProperty(DATABASE), |
||||
|
properties.getProperty(USERNAME), |
||||
|
properties.getProperty(PASSWORD)); |
||||
|
|
||||
|
conn = DriverManager.getConnection(url); |
||||
|
for (String sqlFile : sqlFiles) { |
||||
|
URL sqlFileUrl = Resources.getResource(sqlFile); |
||||
|
String sql = Resources.toString(sqlFileUrl, Charsets.UTF_8); |
||||
|
conn.createStatement().execute(sql); |
||||
|
} |
||||
|
} catch (IOException | SQLException e) { |
||||
|
throw new RuntimeException("Unable to start embedded postgres. Reason: " + e.getMessage(), e); |
||||
|
} finally { |
||||
|
if (conn != null) { |
||||
|
try { |
||||
|
conn.close(); |
||||
|
} catch (SQLException e) { |
||||
|
log.error(e.getMessage(), e); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
private Properties loadProperties(String fileName) { |
||||
|
final Properties properties = new Properties(); |
||||
|
try (final InputStream stream = this.getClass().getClassLoader().getResourceAsStream(fileName)) { |
||||
|
properties.load(stream); |
||||
|
return properties; |
||||
|
} catch (IOException e) { |
||||
|
throw new RuntimeException(e.getMessage(), e); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,5 @@ |
|||||
|
host: localhost |
||||
|
port: 5433 |
||||
|
database: thingsboard |
||||
|
username: postgres |
||||
|
password: postgres |
||||
Loading…
Reference in new issue