/
AbstractIntegrationTest.java
120 lines (102 loc) · 4.14 KB
/
AbstractIntegrationTest.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
/*
* SymmetricDS is an open source database synchronization solution.
*
* Copyright (C) Chris Henson <chenson42@users.sourceforge.net>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, see
* <http://www.gnu.org/licenses/>.
*/
package org.jumpmind.symmetric.test;
import javax.sql.DataSource;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jumpmind.symmetric.ISymmetricEngine;
import org.jumpmind.symmetric.common.Constants;
import org.jumpmind.symmetric.db.IDbDialect;
import org.jumpmind.symmetric.util.AppUtils;
import org.junit.AfterClass;
import org.junit.Before;
import org.springframework.jdbc.core.JdbcTemplate;
public class AbstractIntegrationTest extends AbstractTest {
protected final Log logger = LogFactory.getLog(getClass());
protected String client;
protected String root;
protected JdbcTemplate rootJdbcTemplate;
protected JdbcTemplate clientJdbcTemplate;
protected static boolean standalone = true;
public void init(String client, String root) {
this.client = client;
this.root = root;
}
public AbstractIntegrationTest() throws Exception {
try {
if (standalone) {
String[] databases = TestSetupUtil.lookupDatabasePairs(
DatabaseTestSuite.DEFAULT_TEST_PREFIX).iterator().next();
logger.info("Running test in standalone mode with databases " + databases[0]
+ " and " + databases[1]);
init(databases[0], databases[1]);
standalone = false;
TestSetupUtil.setup(DatabaseTestSuite.DEFAULT_TEST_PREFIX,
TestConstants.TEST_ROOT_DOMAIN_SETUP_SCRIPT, databases[0], databases[1]);
}
} catch (Exception e) {
logger.error(e,e);
throw e;
}
}
@Override
protected String printDatabases() {
return printRootAndClientDatabases();
}
protected ISymmetricEngine getRootEngine() {
return TestSetupUtil.getRootEngine();
}
protected ISymmetricEngine getClientEngine() {
return TestSetupUtil.getClientEngine();
}
protected IDbDialect getRootDbDialect() {
return AppUtils.find(Constants.DB_DIALECT, getRootEngine());
}
protected IDbDialect getClientDbDialect() {
return AppUtils.find(Constants.DB_DIALECT, getClientEngine());
}
protected String printRootAndClientDatabases() {
return " The root database is " + root + " and the client database is " + client + ".";
}
@SuppressWarnings("unchecked")
protected <T> T findOnClient(String name) {
return (T) AppUtils.find(name, getClientEngine());
}
@SuppressWarnings("unchecked")
protected <T> T findOnRoot(String name) {
return (T) AppUtils.find(name, getRootEngine());
}
@Before
public void setupTemplates() {
rootJdbcTemplate = new JdbcTemplate((DataSource) AppUtils.find(Constants.DATA_SOURCE,
getRootEngine()));
clientJdbcTemplate = new JdbcTemplate((DataSource) AppUtils.find(Constants.DATA_SOURCE,
getClientEngine()));
}
@AfterClass
public static void cleanup() throws Exception {
if (standalone) {
standalone = false;
LogFactory.getLog(AbstractDatabaseTest.class).info(
"Cleaning up after test in standalone mode");
TestSetupUtil.cleanup();
}
}
}