Skip to content

Commit

Permalink
[tx-control] Switch dependencies to release versions
Browse files Browse the repository at this point in the history
git-svn-id: https://svn.apache.org/repos/asf/aries/trunk@1748528 13f79535-47bb-0310-9956-ffa450edef68
  • Loading branch information
timothyjward committed Jun 15, 2016
1 parent 5c2d1ab commit f6f7de7
Show file tree
Hide file tree
Showing 12 changed files with 187 additions and 69 deletions.
6 changes: 0 additions & 6 deletions tx-control/tx-control-itests/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -124,12 +124,6 @@
<version>3.1.4.RELEASE</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.aries.testsupport</groupId>
<artifactId>org.apache.aries.testsupport.unit</artifactId>
<version>2.0.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>

<!-- pax exam -->
<dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,14 @@
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.List;
import java.util.NoSuchElementException;
import java.util.Properties;

import org.apache.aries.itest.AbstractIntegrationTest;
import javax.inject.Inject;

import org.h2.tools.Server;
import org.junit.After;
import org.junit.Before;
Expand All @@ -43,30 +47,41 @@
import org.ops4j.pax.exam.junit.PaxExam;
import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy;
import org.ops4j.pax.exam.spi.reactors.PerClass;
import org.osgi.framework.BundleContext;
import org.osgi.framework.Filter;
import org.osgi.framework.FrameworkUtil;
import org.osgi.framework.InvalidSyntaxException;
import org.osgi.framework.ServiceReference;
import org.osgi.service.cm.ConfigurationAdmin;
import org.osgi.service.jdbc.DataSourceFactory;
import org.osgi.service.transaction.control.TransactionControl;
import org.osgi.service.transaction.control.jdbc.JDBCConnectionProvider;
import org.osgi.service.transaction.control.jdbc.JDBCConnectionProviderFactory;
import org.osgi.util.tracker.ServiceTracker;

@RunWith(PaxExam.class)
@ExamReactorStrategy(PerClass.class)
public abstract class AbstractTransactionTest extends AbstractIntegrationTest {

public abstract class AbstractTransactionTest {
private static final String TX_CONTROL_FILTER = "org.apache.aries.tx.control.itests.filter";
private static final String REMOTE_DB_PROPERTY = "org.apache.aries.tx.control.itests.remotedb";
private static final String CONFIGURED_PROVIDER_PROPERTY = "org.apache.aries.tx.control.itests.configured";

@Inject
BundleContext context;

protected TransactionControl txControl;

protected Connection connection;

private Server server;

private final List<ServiceTracker<?,?>> trackers = new ArrayList<>();

@Before
public void setUp() throws Exception {

txControl = context().getService(TransactionControl.class,
txControl = getService(TransactionControl.class,
System.getProperty(TX_CONTROL_FILTER), 5000);

Properties jdbc = new Properties();
Expand Down Expand Up @@ -99,12 +114,43 @@ public void setUp() throws Exception {
});
}

private <T> T getService(Class<T> clazz, long timeout) {
try {
return getService(clazz, null, timeout);
} catch (InvalidSyntaxException e) {
throw new IllegalArgumentException(e);
}
}

private <T> T getService(Class<T> clazz, String filter, long timeout) throws InvalidSyntaxException {
Filter f = FrameworkUtil.createFilter(filter == null ? "(|(foo=bar)(!(foo=bar)))" : filter);

ServiceTracker<T, T> tracker = new ServiceTracker<T, T>(context, clazz, null) {
@Override
public T addingService(ServiceReference<T> reference) {
return f.match(reference) ? super.addingService(reference) : null;
}
};

tracker.open();
try {
T t = tracker.waitForService(timeout);
if(t == null) {
throw new NoSuchElementException(clazz.getName());
}
return t;
} catch (InterruptedException e) {
throw new RuntimeException("Error waiting for service " + clazz.getName(), e);
} finally {
trackers.add(tracker);
}
}

private Connection programaticConnection(Properties jdbc) {

JDBCConnectionProviderFactory resourceProviderFactory = context()
.getService(JDBCConnectionProviderFactory.class, 5000);
JDBCConnectionProviderFactory resourceProviderFactory = getService(JDBCConnectionProviderFactory.class, 5000);

DataSourceFactory dsf = context().getService(DataSourceFactory.class, 5000);
DataSourceFactory dsf = getService(DataSourceFactory.class, 5000);

return resourceProviderFactory.getProviderFor(dsf, jdbc, null).getResource(txControl);
}
Expand All @@ -115,7 +161,7 @@ private Connection configuredConnection(Properties jdbc) throws IOException {
String type = System.getProperty(CONFIGURED_PROVIDER_PROPERTY);

jdbc.setProperty(DataSourceFactory.OSGI_JDBC_DRIVER_CLASS, "org.h2.Driver");
ConfigurationAdmin cm = context().getService(ConfigurationAdmin.class, 5000);
ConfigurationAdmin cm = getService(ConfigurationAdmin.class, 5000);

String pid = "local".equals(type) ? "org.apache.aries.tx.control.jdbc.local"
: "org.apache.aries.tx.control.jdbc.xa";
Expand All @@ -126,7 +172,7 @@ private Connection configuredConnection(Properties jdbc) throws IOException {
pid, null);
config.update((Hashtable)jdbc);

return context().getService(JDBCConnectionProvider.class, 5000).getResource(txControl);
return getService(JDBCConnectionProvider.class, 5000).getResource(txControl);
}

@After
Expand All @@ -143,12 +189,14 @@ public void tearDown() {
if(server != null) {
server.stop();
}

trackers.stream().forEach(ServiceTracker::close);

connection = null;
}

private void clearConfiguration() {
ConfigurationAdmin cm = context().getService(ConfigurationAdmin.class, 5000);
ConfigurationAdmin cm = getService(ConfigurationAdmin.class, 5000);
org.osgi.service.cm.Configuration[] cfgs = null;
try {
cfgs = cm.listConfigurations(null);
Expand Down Expand Up @@ -184,7 +232,6 @@ public Option[] localEmbeddedH2LocalTxConfiguration() {
return options(junitBundles(), systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value("INFO"),
when(localRepo != null)
.useOptions(CoreOptions.vmOption("-Dorg.ops4j.pax.url.mvn.localRepository=" + localRepo)),
mavenBundle("org.apache.aries.testsupport", "org.apache.aries.testsupport.unit").versionAsInProject(),
localTxControlService(),
localJdbcResourceProviderWithH2(),
when(testSpecificOptions != null).useOptions(testSpecificOptions),
Expand All @@ -207,7 +254,6 @@ public Option[] localServerH2LocalTxConfiguration() {
return options(junitBundles(), systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value("INFO"),
when(localRepo != null)
.useOptions(CoreOptions.vmOption("-Dorg.ops4j.pax.url.mvn.localRepository=" + localRepo)),
mavenBundle("org.apache.aries.testsupport", "org.apache.aries.testsupport.unit").versionAsInProject(),
localTxControlService(),
localJdbcResourceProviderWithH2(),
systemProperty(REMOTE_DB_PROPERTY).value(getRemoteDBPath()),
Expand All @@ -231,7 +277,6 @@ public Option[] localConfigAdminDrivenH2LocalTxConfiguration() {
return options(junitBundles(), systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value("INFO"),
when(localRepo != null)
.useOptions(CoreOptions.vmOption("-Dorg.ops4j.pax.url.mvn.localRepository=" + localRepo)),
mavenBundle("org.apache.aries.testsupport", "org.apache.aries.testsupport.unit").versionAsInProject(),
localTxControlService(),
localJdbcResourceProviderWithH2(),
systemProperty(REMOTE_DB_PROPERTY).value(getRemoteDBPath()),
Expand All @@ -257,7 +302,6 @@ public Option[] localEmbeddedH2XATxConfiguration() {
return options(junitBundles(), systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value("INFO"),
when(localRepo != null)
.useOptions(CoreOptions.vmOption("-Dorg.ops4j.pax.url.mvn.localRepository=" + localRepo)),
mavenBundle("org.apache.aries.testsupport", "org.apache.aries.testsupport.unit").versionAsInProject(),
xaTxControlService(),
localJdbcResourceProviderWithH2(),
when(testSpecificOptions != null).useOptions(testSpecificOptions),
Expand All @@ -280,7 +324,6 @@ public Option[] localServerH2XATxConfiguration() {
return options(junitBundles(), systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value("INFO"),
when(localRepo != null)
.useOptions(CoreOptions.vmOption("-Dorg.ops4j.pax.url.mvn.localRepository=" + localRepo)),
mavenBundle("org.apache.aries.testsupport", "org.apache.aries.testsupport.unit").versionAsInProject(),
xaTxControlService(),
localJdbcResourceProviderWithH2(),
systemProperty(REMOTE_DB_PROPERTY).value(getRemoteDBPath()),
Expand All @@ -304,7 +347,6 @@ public Option[] localConfigAdminDrivenH2XATxConfiguration() {
return options(junitBundles(), systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value("INFO"),
when(localRepo != null)
.useOptions(CoreOptions.vmOption("-Dorg.ops4j.pax.url.mvn.localRepository=" + localRepo)),
mavenBundle("org.apache.aries.testsupport", "org.apache.aries.testsupport.unit").versionAsInProject(),
xaTxControlService(),
localJdbcResourceProviderWithH2(),
systemProperty(REMOTE_DB_PROPERTY).value(getRemoteDBPath()),
Expand All @@ -330,7 +372,6 @@ public Option[] xaServerH2XATxConfiguration() {
return options(junitBundles(), systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value("INFO"),
when(localRepo != null)
.useOptions(CoreOptions.vmOption("-Dorg.ops4j.pax.url.mvn.localRepository=" + localRepo)),
mavenBundle("org.apache.aries.testsupport", "org.apache.aries.testsupport.unit").versionAsInProject(),
xaTxControlService(),
xaJdbcResourceProviderWithH2(),
systemProperty(REMOTE_DB_PROPERTY).value(getRemoteDBPath()),
Expand All @@ -354,7 +395,6 @@ public Option[] xaConfigAdminDrivenH2XATxConfiguration() {
return options(junitBundles(), systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value("INFO"),
when(localRepo != null)
.useOptions(CoreOptions.vmOption("-Dorg.ops4j.pax.url.mvn.localRepository=" + localRepo)),
mavenBundle("org.apache.aries.testsupport", "org.apache.aries.testsupport.unit").versionAsInProject(),
xaTxControlService(),
xaJdbcResourceProviderWithH2(),
systemProperty(REMOTE_DB_PROPERTY).value(getRemoteDBPath()),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@
import javax.transaction.xa.XAResource;
import javax.transaction.xa.Xid;

import org.apache.aries.itest.AbstractIntegrationTest;
import org.h2.tools.Server;
import org.junit.After;
import org.junit.Before;
Expand All @@ -58,7 +57,7 @@

@RunWith(PaxExam.class)
@ExamReactorStrategy(PerClass.class)
public class XATransactionTest extends AbstractIntegrationTest {
public class XATransactionTest {

@Inject
@Filter("(osgi.xa.enabled=true)")
Expand All @@ -67,6 +66,10 @@ public class XATransactionTest extends AbstractIntegrationTest {
@Inject
@Filter("(osgi.xa.enabled=true)")
private JDBCConnectionProviderFactory factory;

@Inject
@Filter("(osgi.jdbc.driver.class=org.h2.Driver)")
private DataSourceFactory dsf;

protected Connection connection1;
protected Connection connection2;
Expand All @@ -88,10 +91,10 @@ public void setUp() throws Exception {
String jdbcUrl2 = "jdbc:h2:tcp://127.0.0.1:" + server2.getPort() + "/" + getRemoteDBPath("db2");

jdbc.setProperty(DataSourceFactory.JDBC_URL, jdbcUrl1);
connection1 = programaticConnection(jdbc);
connection1 = factory.getProviderFor(dsf, jdbc, null).getResource(txControl);

jdbc.setProperty(DataSourceFactory.JDBC_URL, jdbcUrl2);
connection2 = programaticConnection(jdbc);
connection2 = factory.getProviderFor(dsf, jdbc, null).getResource(txControl);

txControl.required(() -> {
Statement s = connection1.createStatement();
Expand All @@ -111,16 +114,6 @@ public void setUp() throws Exception {
});
}

private Connection programaticConnection(Properties jdbc) {

JDBCConnectionProviderFactory resourceProviderFactory = context()
.getService(JDBCConnectionProviderFactory.class, 5000);

DataSourceFactory dsf = context().getService(DataSourceFactory.class, 5000);

return resourceProviderFactory.getProviderFor(dsf, jdbc, null).getResource(txControl);
}

@After
public void tearDown() {

Expand Down Expand Up @@ -230,7 +223,6 @@ public Option[] xaServerH2XATxConfiguration() {
return options(junitBundles(), systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value("INFO"),
when(localRepo != null)
.useOptions(CoreOptions.vmOption("-Dorg.ops4j.pax.url.mvn.localRepository=" + localRepo)),
mavenBundle("org.apache.aries.testsupport", "org.apache.aries.testsupport.unit").versionAsInProject(),
mavenBundle("org.apache.aries.tx-control", "tx-control-service-xa").versionAsInProject(),
mavenBundle("com.h2database", "h2").versionAsInProject(),
mavenBundle("org.apache.aries.tx-control", "tx-control-provider-jdbc-xa").versionAsInProject(),
Expand Down
6 changes: 0 additions & 6 deletions tx-control/tx-control-jpa-itests/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -94,12 +94,6 @@
<version>1.4.191</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.aries.testsupport</groupId>
<artifactId>org.apache.aries.testsupport.unit</artifactId>
<version>2.0.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>

<!-- pax exam -->
<dependency>
Expand Down
Loading

0 comments on commit f6f7de7

Please sign in to comment.