|
@@ -0,0 +1,68 @@
|
|
|
+import org.dbsyncer.connector.config.DatabaseConfig;
|
|
|
+import org.dbsyncer.connector.database.DatabaseConnectorMapper;
|
|
|
+import org.junit.Test;
|
|
|
+import org.slf4j.Logger;
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
+
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.util.concurrent.*;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @author AE86
|
|
|
+ * @version 1.0.0
|
|
|
+ * @date 2022/4/11 20:19
|
|
|
+ */
|
|
|
+public class SqlServerConnectionTest {
|
|
|
+
|
|
|
+ private final Logger logger = LoggerFactory.getLogger(getClass());
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testConnection() throws InterruptedException {
|
|
|
+ DatabaseConfig config = new DatabaseConfig();
|
|
|
+ config.setUrl("jdbc:sqlserver://127.0.0.1:1433;DatabaseName=test");
|
|
|
+ config.setUsername("sa");
|
|
|
+ config.setPassword("123");
|
|
|
+ config.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
|
|
|
+ final DatabaseConnectorMapper connectorMapper = new DatabaseConnectorMapper(config);
|
|
|
+
|
|
|
+ // 模拟并发
|
|
|
+ final int threadSize = 100;
|
|
|
+ final ExecutorService pool = Executors.newFixedThreadPool(threadSize);
|
|
|
+ final CyclicBarrier barrier = new CyclicBarrier(threadSize);
|
|
|
+ final CountDownLatch latch = new CountDownLatch(threadSize);
|
|
|
+ for (int i = 0; i < threadSize; i++) {
|
|
|
+ final int k = i + 3;
|
|
|
+ pool.submit(() -> {
|
|
|
+ try {
|
|
|
+ barrier.await();
|
|
|
+
|
|
|
+ // 模拟操作
|
|
|
+ System.out.println(String.format("%s %s:%s", LocalDateTime.now(), Thread.currentThread().getName(), k));
|
|
|
+
|
|
|
+ Object execute = connectorMapper.execute(tem -> tem.queryForObject("select 1", Integer.class));
|
|
|
+ System.out.println(String.format("%s %s:%s execute=>%s", LocalDateTime.now(), Thread.currentThread().getName(), k, execute));
|
|
|
+
|
|
|
+ } catch (InterruptedException e) {
|
|
|
+ logger.error(e.getMessage());
|
|
|
+ } catch (BrokenBarrierException e) {
|
|
|
+ logger.error(e.getMessage());
|
|
|
+ } catch (Exception e) {
|
|
|
+ logger.error(e.getMessage());
|
|
|
+ } finally {
|
|
|
+ latch.countDown();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ latch.await();
|
|
|
+ logger.info("try to shutdown");
|
|
|
+ pool.shutdown();
|
|
|
+ } catch (InterruptedException e) {
|
|
|
+ logger.error(e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ TimeUnit.SECONDS.sleep(3);
|
|
|
+ logger.info("test end");
|
|
|
+ }
|
|
|
+}
|