From b73979360e91dccdd7e9761b6d3caa53ffce765a Mon Sep 17 00:00:00 2001 From: qiaozhanwei Date: Mon, 30 Dec 2019 19:01:08 +0800 Subject: [PATCH] DataSourceMapperTest UT modify #1465 (#1642) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * remove LogViewServiceGrpc.java file and pom modify * remove kazoo * remove kazoo * remove kazoo * remove common monitor package * add license * remove kazoo modify * remove kazoo modify * remove kazoo modify * remove kazoo modify * remove kazoo modify * remove kazoo modify * install.sh remove python kazoo * add system param whether repeat running * remove kazoo modify * BusinessTimeUtils remove whther repeat running inner param * add AccessTokenMapperTest UT * CI UT yml modify,start postgresql and zookeeper by default * add AlertGroupMapperTest UT in github action * Conflicts reslove * AlertMappert UT modify * AlertMappert UT modify * AlertMappert UT modify * CommandMapperTest UT modify * DataSourceMapperTest UT modify --- .../dao/mapper/DataSourceMapperTest.java | 299 +++++++++++++----- 1 file changed, 226 insertions(+), 73 deletions(-) diff --git a/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/mapper/DataSourceMapperTest.java b/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/mapper/DataSourceMapperTest.java index 79b25dd5f..c82623623 100644 --- a/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/mapper/DataSourceMapperTest.java +++ b/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/mapper/DataSourceMapperTest.java @@ -18,6 +18,7 @@ package org.apache.dolphinscheduler.dao.mapper; import org.apache.dolphinscheduler.common.enums.DbType; +import org.apache.dolphinscheduler.common.utils.DateUtils; import org.apache.dolphinscheduler.dao.entity.DataSource; import org.apache.dolphinscheduler.dao.entity.DatasourceUser; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -27,88 +28,116 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.annotation.Rollback; import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.transaction.annotation.Transactional; -import java.util.Date; -import java.util.List; +import java.util.*; +import static org.hamcrest.Matchers.*; +import static org.junit.Assert.*; + +/** + * datasource mapper test + */ @RunWith(SpringRunner.class) @SpringBootTest +@Transactional +@Rollback(true) public class DataSourceMapperTest { + /** + * datasource mapper + */ @Autowired DataSourceMapper dataSourceMapper; + /** + * datasource user relation mapper + */ @Autowired DataSourceUserMapper dataSourceUserMapper; /** - * insert - * @return DataSource + * test insert */ - private DataSource insertOne(){ - //insertOne - DataSource dataSource = new DataSource(); - dataSource.setUserId(4); - dataSource.setName("data source test"); - dataSource.setType(DbType.MYSQL); - dataSource.setNote("mysql test"); - dataSource.setConnectionParams("hello mysql"); - dataSource.setUpdateTime(new Date()); - dataSource.setCreateTime(new Date()); - dataSourceMapper.insert(dataSource); - return dataSource; + @Test + public void testInsert(){ + DataSource dataSource = createDataSource(); + assertNotNull(dataSource.getId()); + assertThat(dataSource.getId(), greaterThan(0)); } /** - * test update + * test query */ @Test - public void testUpdate(){ - //insertOne - DataSource dataSource = insertOne(); - //update - dataSource.setUpdateTime(new Date()); - int update = dataSourceMapper.updateById(dataSource); - Assert.assertEquals(update, 1); - dataSourceMapper.deleteById(dataSource.getId()); + public void testSelectById() { + DataSource expectedDataSource = createDataSource(); + DataSource actualDataSource = dataSourceMapper.selectById(expectedDataSource.getId()); + assertEquals(expectedDataSource, actualDataSource); } + /** - * test delete + * test query */ @Test - public void testDelete(){ + public void testUpdate() { + DataSource expectedDataSource = createDataSource(); + + expectedDataSource.setName("modify " + expectedDataSource.getName()); + expectedDataSource.setNote("modifiy " + expectedDataSource.getNote()); + expectedDataSource.setUserId(2); + expectedDataSource.setType(DbType.HIVE); + expectedDataSource.setConnectionParams("modify " + expectedDataSource.getConnectionParams()); + expectedDataSource.setUpdateTime(DateUtils.getCurrentDate()); - DataSource dataSource = insertOne(); - int delete = dataSourceMapper.deleteById(dataSource.getId()); - Assert.assertEquals(delete, 1); + dataSourceMapper.updateById(expectedDataSource); + + DataSource actualDataSource = dataSourceMapper.selectById(expectedDataSource.getId()); + + assertEquals(expectedDataSource, actualDataSource); } + /** - * test query + * test delete */ @Test - public void testQuery() { - DataSource dataSource = insertOne(); - //query - List dataSources = dataSourceMapper.selectList(null); - Assert.assertNotEquals(dataSources.size(), 0); - dataSourceMapper.deleteById(dataSource.getId()); + public void testDelete(){ + DataSource expectedDataSource = createDataSource(); + + dataSourceMapper.deleteById(expectedDataSource.getId()); + + DataSource actualDataSource = dataSourceMapper.selectById(expectedDataSource.getId()); + + assertNull(actualDataSource); } + + /** * test query datasource by type */ @Test public void testQueryDataSourceByType() { - DataSource dataSource = insertOne(); - //query - List dataSources = dataSourceMapper.queryDataSourceByType( - 0, DbType.MYSQL.ordinal() - ); - Assert.assertNotEquals(dataSources.size(), 0); - dataSourceMapper.deleteById(dataSource.getId()); + Integer userId = 1; + + Map datasourceMap = createDataSourceMap(userId, "test"); + + List actualDataSources = dataSourceMapper.queryDataSourceByType( + 0, DbType.MYSQL.ordinal()); + + assertThat(actualDataSources.size(), greaterThanOrEqualTo(2)); + + for (DataSource actualDataSource : actualDataSources){ + DataSource expectedDataSource = datasourceMap.get(actualDataSource.getId()); + if (expectedDataSource != null){ + assertEquals(expectedDataSource,actualDataSource); + } + } + } /** @@ -116,12 +145,23 @@ public class DataSourceMapperTest { */ @Test public void testSelectPaging() { - DataSource dataSource = insertOne(); - Page page = new Page(1, 3); - IPage dataSourceIPage = dataSourceMapper.selectPaging(page, - 4, null); - Assert.assertNotEquals(dataSourceIPage.getTotal(), 0); - dataSourceMapper.deleteById(dataSource.getId()); + String name = "test"; + Integer userId = 1; + + Map expectedDataSourceMap = createDataSourceMap(userId, name); + + Page page = new Page(0, 4); + + IPage dataSourceIPage = dataSourceMapper.selectPaging(page, userId, name); + List actualDataSources = dataSourceIPage.getRecords(); + + for (DataSource actualDataSource : actualDataSources){ + DataSource expectedDataSource = expectedDataSourceMap.get(actualDataSource.getId()); + if (expectedDataSource != null){ + assertEquals(expectedDataSource,actualDataSource); + } + } + } /** @@ -129,10 +169,17 @@ public class DataSourceMapperTest { */ @Test public void testQueryDataSourceByName() { - DataSource dataSource = insertOne(); - List dataSources = dataSourceMapper.queryDataSourceByName("data source test"); - Assert.assertNotEquals(dataSources.size(), 0); - dataSourceMapper.deleteById(dataSource.getId()); + String name = "test"; + DataSource expectedDataSource = createDataSource(name); + + List actualDataSources = dataSourceMapper.queryDataSourceByName(name); + + for (DataSource actualDataSource : actualDataSources){ + if (expectedDataSource.getId() == actualDataSource.getId()){ + assertEquals(expectedDataSource,actualDataSource); + } + } + } /** @@ -140,17 +187,20 @@ public class DataSourceMapperTest { */ @Test public void testQueryAuthedDatasource() { + String name = "test"; + Integer userId = 1; - DataSource dataSource = insertOne(); - DatasourceUser datasourceUser = new DatasourceUser(); - datasourceUser.setUserId(3); - datasourceUser.setDatasourceId(dataSource.getId()); - dataSourceUserMapper.insert(datasourceUser); + Map expectedDataSourceMap = createDataSourceMap(userId, name); + + List actualDataSources = dataSourceMapper.queryAuthedDatasource(userId); + + for (DataSource actualDataSource : actualDataSources){ + DataSource expectedDataSource = expectedDataSourceMap.get(actualDataSource.getId()); + if (expectedDataSource != null){ + assertEquals(expectedDataSource,actualDataSource); + } + } - List dataSources = dataSourceMapper.queryAuthedDatasource(3); - Assert.assertNotEquals(dataSources.size(), 0); - dataSourceMapper.deleteById(dataSource.getId()); - dataSourceUserMapper.deleteById(datasourceUser.getId()); } /** @@ -158,10 +208,19 @@ public class DataSourceMapperTest { */ @Test public void testQueryDatasourceExceptUserId() { - DataSource dataSource = insertOne(); - List dataSources = dataSourceMapper.queryDatasourceExceptUserId(3); - Assert.assertNotEquals(dataSources.size(), 0); - dataSourceMapper.deleteById(dataSource.getId()); + String name = "test"; + Integer userId = 1; + + Map expectedDataSourceMap = createDataSourceMap(userId, name); + + List actualDataSources = dataSourceMapper.queryDatasourceExceptUserId(userId); + + for (DataSource actualDataSource : actualDataSources){ + DataSource expectedDataSource = expectedDataSourceMap.get(actualDataSource.getId()); + if (expectedDataSource != null){ + assertEquals(expectedDataSource,actualDataSource); + } + } } /** @@ -169,13 +228,107 @@ public class DataSourceMapperTest { */ @Test public void testListAllDataSourceByType() { + Integer count = 10; + + Map expectedDataSourceMap = createDataSourceMap(count); + + List actualDataSources = dataSourceMapper.listAllDataSourceByType(DbType.MYSQL.ordinal()); + + assertThat(actualDataSources.size(), greaterThanOrEqualTo(count)); + + for (DataSource actualDataSource : actualDataSources){ + DataSource expectedDataSource = expectedDataSourceMap.get(actualDataSource.getId()); + if (expectedDataSource != null){ + assertEquals(expectedDataSource,actualDataSource); + } + } + } + + /** + * create datasource relation + * @param userId + */ + private Map createDataSourceMap(Integer userId,String name){ + + Map dataSourceMap = new HashMap<>(); + + DataSource dataSource = createDataSource(userId, name); + + dataSourceMap.put(dataSource.getId(),dataSource); + + DataSource otherDataSource = createDataSource(userId + 1,name); + + DatasourceUser datasourceUser = new DatasourceUser(); + + datasourceUser.setDatasourceId(otherDataSource.getId()); + datasourceUser.setUserId(userId); + datasourceUser.setPerm(7); + datasourceUser.setCreateTime(DateUtils.getCurrentDate()); + datasourceUser.setUpdateTime(DateUtils.getCurrentDate()); + + dataSourceUserMapper.insert(datasourceUser); + + dataSourceMap.put(otherDataSource.getId(), otherDataSource); + + return dataSourceMap; + } + + /** + * create datasource map + * @param count datasource count + * @return datasource map + */ + private Map createDataSourceMap(Integer count){ + Map dataSourceMap = new HashMap<>(); - DataSource dataSource = insertOne(); + for (int i = 0 ; i < count ;i++){ + DataSource dataSource = createDataSource("test"); + dataSourceMap.put(dataSource.getId(),dataSource); + } - List dataSources = dataSourceMapper.queryDataSourceByType(4, DbType.MYSQL.ordinal()); - Assert.assertNotEquals(dataSources.size(), 0); - List dataSources2 = dataSourceMapper.queryDataSourceByType(10091, DbType.MYSQL.ordinal()); - Assert.assertEquals(dataSources2.size(), 0); - dataSourceMapper.deleteById(dataSource.getId()); + return dataSourceMap; } + + + /** + * create datasource + * @return datasource + */ + private DataSource createDataSource(){ + return createDataSource(1,"test"); + } + + + /** + * create datasource + * @param name name + * @return datasource + */ + private DataSource createDataSource(String name){ + return createDataSource(1,name); + } + + /** + * create datasource + * @param userId userId + * @param name name + * @return datasource + */ + private DataSource createDataSource(Integer userId,String name){ + Random random = new Random(); + DataSource dataSource = new DataSource(); + dataSource.setUserId(userId); + dataSource.setName(name); + dataSource.setType(DbType.MYSQL); + dataSource.setNote("mysql test"); + dataSource.setConnectionParams("hello mysql"); + dataSource.setUpdateTime(DateUtils.getCurrentDate()); + dataSource.setCreateTime(DateUtils.getCurrentDate()); + + dataSourceMapper.insert(dataSource); + + return dataSource; + } + + } \ No newline at end of file -- GitLab