mirror of
https://github.com/apache/activemq-artemis.git
synced 2025-03-01 06:49:25 +00:00
ARTEMIS-2471 JdbcNodeManager doesn't use jdbc-user and jdbc-password tags
This commit is contained in:
parent
0106329816
commit
a9ce90f97a
@ -88,6 +88,8 @@ public final class JdbcNodeManager extends NodeManager {
|
||||
configuration.getJdbcLockRenewPeriodMillis(),
|
||||
configuration.getJdbcLockAcquisitionTimeoutMillis(),
|
||||
configuration.getJdbcConnectionUrl(),
|
||||
configuration.getJdbcUser(),
|
||||
configuration.getJdbcPassword(),
|
||||
configuration.getJdbcDriverClassName(),
|
||||
sqlProvider,
|
||||
scheduledExecutorService,
|
||||
@ -126,6 +128,8 @@ public final class JdbcNodeManager extends NodeManager {
|
||||
long lockRenewPeriodMillis,
|
||||
long lockAcquisitionTimeoutMillis,
|
||||
String jdbcUrl,
|
||||
String user,
|
||||
String password,
|
||||
String driverClass,
|
||||
SQLProvider provider,
|
||||
ScheduledExecutorService scheduledExecutorService,
|
||||
@ -137,6 +141,8 @@ public final class JdbcNodeManager extends NodeManager {
|
||||
executorFactory == null ? null : executorFactory.getExecutor(),
|
||||
lockExpirationMillis,
|
||||
jdbcUrl,
|
||||
user,
|
||||
password,
|
||||
driverClass,
|
||||
provider),
|
||||
lockRenewPeriodMillis,
|
||||
|
@ -76,6 +76,26 @@ final class JdbcSharedStateManager extends AbstractJDBCDriver implements SharedS
|
||||
null,
|
||||
locksExpirationMillis,
|
||||
jdbcConnectionUrl,
|
||||
null,
|
||||
null,
|
||||
jdbcDriverClass,
|
||||
provider);
|
||||
}
|
||||
|
||||
public static JdbcSharedStateManager usingConnectionUrl(String holderId,
|
||||
long locksExpirationMillis,
|
||||
String jdbcConnectionUrl,
|
||||
String user,
|
||||
String password,
|
||||
String jdbcDriverClass,
|
||||
SQLProvider provider) {
|
||||
return JdbcSharedStateManager.usingConnectionUrl(holderId,
|
||||
-1,
|
||||
null,
|
||||
locksExpirationMillis,
|
||||
jdbcConnectionUrl,
|
||||
user,
|
||||
password,
|
||||
jdbcDriverClass,
|
||||
provider);
|
||||
}
|
||||
@ -85,6 +105,8 @@ final class JdbcSharedStateManager extends AbstractJDBCDriver implements SharedS
|
||||
Executor networkTimeoutExecutor,
|
||||
long locksExpirationMillis,
|
||||
String jdbcConnectionUrl,
|
||||
String user,
|
||||
String password,
|
||||
String jdbcDriverClass,
|
||||
SQLProvider provider) {
|
||||
final JdbcSharedStateManager sharedStateManager = new JdbcSharedStateManager(holderId, locksExpirationMillis);
|
||||
@ -92,6 +114,8 @@ final class JdbcSharedStateManager extends AbstractJDBCDriver implements SharedS
|
||||
sharedStateManager.setJdbcConnectionUrl(jdbcConnectionUrl);
|
||||
sharedStateManager.setJdbcDriverClass(jdbcDriverClass);
|
||||
sharedStateManager.setSqlProvider(provider);
|
||||
sharedStateManager.setUser(user);
|
||||
sharedStateManager.setPassword(password);
|
||||
try {
|
||||
sharedStateManager.start();
|
||||
return sharedStateManager;
|
||||
|
@ -0,0 +1,121 @@
|
||||
/*
|
||||
* 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.activemq.artemis.core.server.impl.jdbc;
|
||||
|
||||
import java.sql.DriverManager;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.concurrent.CountDownLatch;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
|
||||
import org.apache.activemq.artemis.core.config.storage.DatabaseStorageConfiguration;
|
||||
import org.apache.activemq.artemis.tests.util.ActiveMQTestBase;
|
||||
import org.junit.After;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.junit.runners.Parameterized;
|
||||
|
||||
@RunWith(Parameterized.class)
|
||||
public class JdbcNodeManagerTest extends ActiveMQTestBase {
|
||||
|
||||
@Parameterized.Parameter
|
||||
public boolean useAuthentication;
|
||||
private DatabaseStorageConfiguration dbConf;
|
||||
private ScheduledExecutorService leaseLockExecutor;
|
||||
|
||||
@Parameterized.Parameters(name = "authentication = {0}")
|
||||
public static Collection<Object[]> data() {
|
||||
return Arrays.asList(new Object[][]{{false}, {true}});
|
||||
}
|
||||
|
||||
@Before
|
||||
public void configure() {
|
||||
if (useAuthentication) {
|
||||
System.setProperty("derby.connection.requireAuthentication", "true");
|
||||
System.setProperty("derby.user." + getJdbcUser(), getJdbcPassword());
|
||||
}
|
||||
dbConf = createDefaultDatabaseStorageConfiguration();
|
||||
dbConf.setJdbcUser(getJdbcUser());
|
||||
dbConf.setJdbcPassword(getJdbcPassword());
|
||||
leaseLockExecutor = Executors.newSingleThreadScheduledExecutor();
|
||||
}
|
||||
|
||||
@After
|
||||
public void shutdownExecutors() throws InterruptedException {
|
||||
try {
|
||||
final CountDownLatch latch = new CountDownLatch(1);
|
||||
leaseLockExecutor.execute(latch::countDown);
|
||||
Assert.assertTrue("the scheduler of the lease lock has some pending task in ", latch.await(10, TimeUnit.SECONDS));
|
||||
} finally {
|
||||
leaseLockExecutor.shutdownNow();
|
||||
}
|
||||
}
|
||||
|
||||
@After
|
||||
@Override
|
||||
public void shutdownDerby() {
|
||||
try {
|
||||
if (useAuthentication) {
|
||||
DriverManager.getConnection("jdbc:derby:;shutdown=true", getJdbcUser(), getJdbcPassword());
|
||||
} else {
|
||||
DriverManager.getConnection("jdbc:derby:;shutdown=true");
|
||||
}
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
if (useAuthentication) {
|
||||
System.clearProperty("derby.connection.requireAuthentication");
|
||||
System.clearProperty("derby.user." + getJdbcUser());
|
||||
}
|
||||
}
|
||||
|
||||
protected String getJdbcUser() {
|
||||
if (useAuthentication) {
|
||||
return System.getProperty("jdbc.user", "testuser");
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
protected String getJdbcPassword() {
|
||||
if (useAuthentication) {
|
||||
return System.getProperty("jdbc.password", "testpassword");
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldStartAndStopGracefullyTest() throws Exception {
|
||||
final AtomicReference<String> criticalError = new AtomicReference<>();
|
||||
final JdbcNodeManager nodeManager = JdbcNodeManager.with(dbConf, leaseLockExecutor, null, (code, message, file) -> criticalError.lazySet(message));
|
||||
try {
|
||||
nodeManager.start();
|
||||
} finally {
|
||||
nodeManager.stop();
|
||||
final String error = criticalError.get();
|
||||
if (error != null) {
|
||||
Assert.fail(error);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user