You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2021/02/19 09:18:11 UTC
[shardingsphere] branch master updated: Add unit test for
scaling-core. (#9437)
This is an automated email from the ASF dual-hosted git repository.
panjuan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new 948b7ff Add unit test for scaling-core. (#9437)
948b7ff is described below
commit 948b7ff41c9f2b5525b8aba76d7a77ba086caabe
Author: 邱鹿 Lucas <lu...@163.com>
AuthorDate: Fri Feb 19 17:17:45 2021 +0800
Add unit test for scaling-core. (#9437)
* Add ServerConfigurationYamlSwapperTest
* Add ScalingEntryLoaderTest
* Refactor IncrementalTaskTest
* Refactor InventoryTaskTest
* Refactor InventoryTaskTest
Co-authored-by: qiulu3 <Lucas209910>
---
.../shardingsphere/scaling/core/api/JobInfo.java | 2 -
.../core/job/task/incremental/IncrementalTask.java | 28 ++++++----
.../yaml/ServerConfigurationYamlSwapperTest.java | 65 ++++++++++++++++++++++
.../job/task/incremental/IncrementalTaskTest.java | 55 ++++++++----------
.../core/job/task/inventory/InventoryTaskTest.java | 55 +++++-------------
.../scaling/core/spi/ScalingEntryLoaderTest.java} | 40 +++++--------
6 files changed, 132 insertions(+), 113 deletions(-)
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/api/JobInfo.java b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/api/JobInfo.java
index 5b89afd..40bfe84 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/api/JobInfo.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/api/JobInfo.java
@@ -20,7 +20,6 @@ package org.apache.shardingsphere.scaling.core.api;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
-import lombok.ToString;
/**
* Job info.
@@ -28,7 +27,6 @@ import lombok.ToString;
@RequiredArgsConstructor
@Getter
@Setter
-@ToString
public final class JobInfo {
private final long jobId;
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/task/incremental/IncrementalTask.java b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/task/incremental/IncrementalTask.java
index ff2c888..9a905cb 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/task/incremental/IncrementalTask.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/job/task/incremental/IncrementalTask.java
@@ -77,18 +77,7 @@ public final class IncrementalTask extends AbstractScalingExecutor implements Sc
dumper = DumperFactory.newInstanceLogDumper(dumperConfig, progress.getPosition());
Collection<Importer> importers = instanceImporters();
instanceChannel(importers);
- Future<?> future = ScalingContext.getInstance().getIncrementalDumperExecuteEngine().submitAll(importers, new ExecuteCallback() {
-
- @Override
- public void onSuccess() {
- }
-
- @Override
- public void onFailure(final Throwable throwable) {
- log.error("get an error when migrating the increment data", throwable);
- dumper.stop();
- }
- });
+ Future<?> future = ScalingContext.getInstance().getIncrementalDumperExecuteEngine().submitAll(importers, getExecuteCallback());
dumper.start();
waitForResult(future);
dataSourceManager.close();
@@ -116,6 +105,21 @@ public final class IncrementalTask extends AbstractScalingExecutor implements Sc
}
}
+ private ExecuteCallback getExecuteCallback() {
+ return new ExecuteCallback() {
+
+ @Override
+ public void onSuccess() {
+ }
+
+ @Override
+ public void onFailure(final Throwable throwable) {
+ log.error("get an error when migrating the increment data", throwable);
+ dumper.stop();
+ }
+ };
+ }
+
private void waitForResult(final Future<?> future) {
try {
future.get();
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/config/yaml/ServerConfigurationYamlSwapperTest.java b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/config/yaml/ServerConfigurationYamlSwapperTest.java
new file mode 100644
index 0000000..a918088
--- /dev/null
+++ b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/config/yaml/ServerConfigurationYamlSwapperTest.java
@@ -0,0 +1,65 @@
+/*
+ * 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.shardingsphere.scaling.core.config.yaml;
+
+import org.apache.shardingsphere.governance.core.yaml.config.YamlGovernanceCenterConfiguration;
+import org.apache.shardingsphere.governance.core.yaml.config.YamlGovernanceConfiguration;
+import org.apache.shardingsphere.governance.repository.api.config.GovernanceCenterConfiguration;
+import org.apache.shardingsphere.governance.repository.api.config.GovernanceConfiguration;
+import org.apache.shardingsphere.scaling.core.config.ServerConfiguration;
+import org.junit.Test;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
+public final class ServerConfigurationYamlSwapperTest {
+
+ private final ServerConfigurationYamlSwapper serverConfigurationYamlSwapper = new ServerConfigurationYamlSwapper();
+
+ @Test
+ public void assertSwapToYamlConfiguration() {
+ YamlServerConfiguration yamlServerConfig = serverConfigurationYamlSwapper.swapToYamlConfiguration(mockServerConfig());
+ assertThat(yamlServerConfig.getScaling().getWorkerThread(), is(10));
+ assertThat(yamlServerConfig.getGovernance().getName(), is("test"));
+ assertThat(yamlServerConfig.getGovernance().getRegistryCenter().getType(), is("Zookeeper"));
+ }
+
+ @Test
+ public void assertSwapToObject() {
+ ServerConfiguration serverConfig = serverConfigurationYamlSwapper.swapToObject(mockYamlServerConfig());
+ assertThat(serverConfig.getWorkerThread(), is(10));
+ assertThat(serverConfig.getGovernanceConfig().getName(), is("test"));
+ }
+
+ private ServerConfiguration mockServerConfig() {
+ ServerConfiguration result = new ServerConfiguration();
+ result.setWorkerThread(10);
+ result.setGovernanceConfig(new GovernanceConfiguration("test", new GovernanceCenterConfiguration("Zookeeper", "localhost:2181", null), false));
+ return result;
+ }
+
+ private YamlServerConfiguration mockYamlServerConfig() {
+ YamlServerConfiguration result = new YamlServerConfiguration();
+ YamlGovernanceConfiguration governance = new YamlGovernanceConfiguration();
+ governance.setName("test");
+ governance.setRegistryCenter(new YamlGovernanceCenterConfiguration());
+ result.setGovernance(governance);
+ result.getScaling().setWorkerThread(10);
+ return result;
+ }
+}
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/job/task/incremental/IncrementalTaskTest.java b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/job/task/incremental/IncrementalTaskTest.java
index d2fae00..ccb7884 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/job/task/incremental/IncrementalTaskTest.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/job/task/incremental/IncrementalTaskTest.java
@@ -17,56 +17,47 @@
package org.apache.shardingsphere.scaling.core.job.task.incremental;
-import org.apache.shardingsphere.scaling.core.config.DumperConfiguration;
-import org.apache.shardingsphere.scaling.core.config.ImporterConfiguration;
import org.apache.shardingsphere.scaling.core.config.ScalingContext;
import org.apache.shardingsphere.scaling.core.config.ServerConfiguration;
-import org.apache.shardingsphere.scaling.core.config.datasource.ScalingDataSourceConfiguration;
-import org.apache.shardingsphere.scaling.core.config.datasource.StandardJDBCDataSourceConfiguration;
+import org.apache.shardingsphere.scaling.core.config.TaskConfiguration;
+import org.apache.shardingsphere.scaling.core.job.JobContext;
import org.apache.shardingsphere.scaling.core.job.position.PlaceholderPosition;
import org.apache.shardingsphere.scaling.core.job.task.ScalingTaskFactory;
+import org.apache.shardingsphere.scaling.core.util.ResourceUtil;
import org.junit.After;
import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
-import java.util.HashMap;
-import java.util.Map;
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
public final class IncrementalTaskTest {
- private static final String DATA_SOURCE_URL = "jdbc:h2:mem:test_db;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MySQL";
-
- private static final String USERNAME = "root";
-
- private static final String PASSWORD = "password";
-
private IncrementalTask incrementalTask;
- @Before
- public void setUp() {
+ @BeforeClass
+ public static void beforeClass() {
ScalingContext.getInstance().init(new ServerConfiguration());
- incrementalTask = ScalingTaskFactory.createIncrementalTask(3, mockDumperConfig(), mockImporterConfiguration());
}
- @After
- public void tearDown() {
- incrementalTask.stop();
+ @Before
+ public void setUp() {
+ TaskConfiguration taskConfig = new JobContext(ResourceUtil.mockJobConfig()).getTaskConfigs().iterator().next();
+ taskConfig.getDumperConfig().setPosition(new PlaceholderPosition());
+ incrementalTask = ScalingTaskFactory.createIncrementalTask(3, taskConfig.getDumperConfig(), taskConfig.getImporterConfig());
}
- private ImporterConfiguration mockImporterConfiguration() {
- ImporterConfiguration result = new ImporterConfiguration();
- result.setDataSourceConfig(new StandardJDBCDataSourceConfiguration(DATA_SOURCE_URL, USERNAME, PASSWORD));
- return result;
+ @Test
+ public void assertStart() {
+ incrementalTask.start();
+ assertThat(incrementalTask.getTaskId(), is("ds_0"));
+ assertTrue(incrementalTask.getProgress().getPosition() instanceof PlaceholderPosition);
}
- private DumperConfiguration mockDumperConfig() {
- ScalingDataSourceConfiguration dataSourceConfig = new StandardJDBCDataSourceConfiguration(DATA_SOURCE_URL, USERNAME, PASSWORD);
- DumperConfiguration result = new DumperConfiguration();
- result.setDataSourceName("ds0");
- result.setDataSourceConfig(dataSourceConfig);
- Map<String, String> tableMap = new HashMap<>(1, 1);
- tableMap.put("t_order", "t_order");
- result.setTableNameMap(tableMap);
- result.setPosition(new PlaceholderPosition());
- return result;
+ @After
+ public void tearDown() {
+ incrementalTask.stop();
}
}
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/job/task/inventory/InventoryTaskTest.java b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/job/task/inventory/InventoryTaskTest.java
index c37916a..33e9dfd 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/job/task/inventory/InventoryTaskTest.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/job/task/inventory/InventoryTaskTest.java
@@ -20,52 +20,34 @@ package org.apache.shardingsphere.scaling.core.job.task.inventory;
import org.apache.shardingsphere.scaling.core.common.datasource.DataSourceManager;
import org.apache.shardingsphere.scaling.core.common.exception.ScalingTaskExecuteException;
import org.apache.shardingsphere.scaling.core.config.DumperConfiguration;
-import org.apache.shardingsphere.scaling.core.config.HandleConfiguration;
-import org.apache.shardingsphere.scaling.core.config.ImporterConfiguration;
import org.apache.shardingsphere.scaling.core.config.InventoryDumperConfiguration;
import org.apache.shardingsphere.scaling.core.config.ScalingContext;
import org.apache.shardingsphere.scaling.core.config.ServerConfiguration;
import org.apache.shardingsphere.scaling.core.config.TaskConfiguration;
-import org.apache.shardingsphere.scaling.core.config.datasource.ScalingDataSourceConfiguration;
-import org.apache.shardingsphere.scaling.core.config.datasource.StandardJDBCDataSourceConfiguration;
+import org.apache.shardingsphere.scaling.core.job.JobContext;
import org.apache.shardingsphere.scaling.core.job.position.FinishedPosition;
-import org.apache.shardingsphere.scaling.core.job.position.PrimaryKeyPosition;
+import org.apache.shardingsphere.scaling.core.util.ResourceUtil;
import org.junit.After;
-import org.junit.Before;
+import org.junit.BeforeClass;
import org.junit.Test;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
-import java.util.Collections;
import static org.junit.Assert.assertFalse;
public final class InventoryTaskTest {
- private static final String DATA_SOURCE_URL = "jdbc:h2:mem:test_db;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MySQL";
+ private static TaskConfiguration taskConfig;
- private static final String USERNAME = "root";
+ private final DataSourceManager dataSourceManager = new DataSourceManager();
- private static final String PASSWORD = "password";
-
- private TaskConfiguration taskConfig;
-
- private DataSourceManager dataSourceManager;
-
- @Before
- public void setUp() {
- DumperConfiguration dumperConfig = mockDumperConfig();
- ImporterConfiguration importerConfig = mockImporterConfig();
+ @BeforeClass
+ public static void beforeClass() {
ScalingContext.getInstance().init(new ServerConfiguration());
- taskConfig = new TaskConfiguration(new HandleConfiguration(), dumperConfig, importerConfig);
- dataSourceManager = new DataSourceManager();
- }
-
- @After
- public void tearDown() {
- dataSourceManager.close();
+ taskConfig = new JobContext(ResourceUtil.mockJobConfig()).getTaskConfigs().iterator().next();
}
@Test(expected = ScalingTaskExecuteException.class)
@@ -87,6 +69,11 @@ public final class InventoryTaskTest {
assertFalse(inventoryTask.getProgress().getPosition() instanceof FinishedPosition);
}
+ @After
+ public void tearDown() {
+ dataSourceManager.close();
+ }
+
private void initTableData(final DumperConfiguration dumperConfig) throws SQLException {
DataSource dataSource = dataSourceManager.getDataSource(dumperConfig.getDataSourceConfig());
try (Connection connection = dataSource.getConnection();
@@ -96,20 +83,4 @@ public final class InventoryTaskTest {
statement.execute("INSERT INTO t_order (id, user_id) VALUES (1, 'xxx'), (999, 'yyy')");
}
}
-
- private DumperConfiguration mockDumperConfig() {
- ScalingDataSourceConfiguration dataSourceConfig = new StandardJDBCDataSourceConfiguration(DATA_SOURCE_URL, USERNAME, PASSWORD);
- DumperConfiguration result = new DumperConfiguration();
- result.setDataSourceConfig(dataSourceConfig);
- result.setPosition(new PrimaryKeyPosition(1, 100));
- result.setTableNameMap(Collections.emptyMap());
- return result;
- }
-
- private ImporterConfiguration mockImporterConfig() {
- ScalingDataSourceConfiguration dataSourceConfig = new StandardJDBCDataSourceConfiguration(DATA_SOURCE_URL, USERNAME, PASSWORD);
- ImporterConfiguration result = new ImporterConfiguration();
- result.setDataSourceConfig(dataSourceConfig);
- return result;
- }
}
diff --git a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/api/JobInfo.java b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/spi/ScalingEntryLoaderTest.java
similarity index 58%
copy from shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/api/JobInfo.java
copy to shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/spi/ScalingEntryLoaderTest.java
index 5b89afd..70aecf4 100644
--- a/shardingsphere-scaling/shardingsphere-scaling-core/src/main/java/org/apache/shardingsphere/scaling/core/api/JobInfo.java
+++ b/shardingsphere-scaling/shardingsphere-scaling-core/src/test/java/org/apache/shardingsphere/scaling/core/spi/ScalingEntryLoaderTest.java
@@ -15,33 +15,23 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.scaling.core.api;
+package org.apache.shardingsphere.scaling.core.spi;
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
-import lombok.Setter;
-import lombok.ToString;
+import org.apache.shardingsphere.scaling.core.fixture.FixtureH2ScalingEntry;
+import org.junit.Test;
-/**
- * Job info.
- */
-@RequiredArgsConstructor
-@Getter
-@Setter
-@ToString
-public final class JobInfo {
-
- private final long jobId;
-
- private boolean active;
-
- private String status;
-
- private String[] tables;
-
- private int shardingTotalCount;
+import static org.junit.Assert.assertTrue;
+
+public final class ScalingEntryLoaderTest {
- private int inventoryFinishedPercentage;
+ @Test
+ public void assertGetFixtureInstance() {
+ ScalingEntry actual = ScalingEntryLoader.getInstance("H2");
+ assertTrue(actual instanceof FixtureH2ScalingEntry);
+ }
- private long incrementalAverageDelayMilliseconds = -1;
+ @Test(expected = UnsupportedOperationException.class)
+ public void assertGetInstanceFailure() {
+ ScalingEntryLoader.getInstance("None");
+ }
}