[
https://issues.apache.org/jira/browse/FELIX-2280?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12862283#action_12862283
]
Christian Müller commented on FELIX-2280:
-----------------------------------------
Hey Jamie,
good to hear from you. :o)
You can skip my first patch, because in the mean time I have done some
development. i wrote a lot of integration test (against a real database) to
discover the actual behavior. After that, I wrote the same tests a unit tests
using EasyMock. Than I updated the unit and integration tests to a behavior,
what I would expect. At present, I update the three implementations to succeed
the tests.
At the end, I plan to provide two patches. One contains the modified code and
the unit tests (using EasyMock). The second patch will include the Integration
tests (annotated with @Ignore) which could be useful to test the implementation
against a real database with less expenditure.
I was wondering, that the current implementation of MySQLJDBCLock fails in a
simple integration test (using the mysql-connector-java 5.1.12 and mysql server
5.1.44):
public class MySQLJDBCLockIntegrationTest {
private MySQLJDBCLock lock1, lock2;
private Properties props1;
@Before
public void setUp() {
BootstrapLogManager.setProperties(new Properties());
props1 = new Properties();
props1.put("karaf.lock.jdbc.url", "jdbc:mysql://127.0.0.1:3306/test");
props1.put("karaf.lock.jdbc.driver", "com.mysql.jdbc.Driver");
props1.put("karaf.lock.jdbc.user", "root");
props1.put("karaf.lock.jdbc.password", "");
props1.put("karaf.lock.jdbc.table", "LOCK_TABLE_1");
props1.put("karaf.lock.jdbc.clustername", "karaf");
props1.put("karaf.lock.jdbc.timeout", "5");
}
@Test
public void lockOnSameCluster() throws Exception {
lock1 = new MySQLJDBCLock(props1);
lock2 = new MySQLJDBCLock(props1);
boolean lock1Aquired = lock1.lock();
assertTrue(lock1Aquired);
boolean lock2Aquired = lock2.lock();
assertFalse(lock2Aquired);
lock1.release();
lock2Aquired = lock2.lock();
assertTrue(lock2Aquired);
}
}
Regards,
Christian
> To much code duplication in DefaultJDBCLock, OracleJDBCLock and MySQLJDBCLock
> -----------------------------------------------------------------------------
>
> Key: FELIX-2280
> URL: https://issues.apache.org/jira/browse/FELIX-2280
> Project: Felix
> Issue Type: Improvement
> Components: Karaf
> Affects Versions: karaf-1.4.0
> Environment: All
> Reporter: Christian Müller
> Attachments: FELIX-2280.patch
>
>
> org.apache.felix.karaf.main.DefaultJDBCLock,
> org.apache.felix.karaf.main.MySQLJDBCLock and
> org.apache.felix.karaf.main.OracleJDBCLock has to much code duplications. I
> propose a solution like in ActiveMQ [package
> org.apache.activemq.store.jdbc.adapter|http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/store/jdbc/adapter/].
> And we should implement some unit tests for it.
> If it's fine for you, I will try to improve this part of karaf and provide a
> patch for it.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.