Skip to content

Commit f1438a8

Browse files
committed
优化测试
1 parent d156c6d commit f1438a8

File tree

6 files changed

+204
-66
lines changed

6 files changed

+204
-66
lines changed

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
## hsweb 3.0
22
[![Maven metadata URI](https://img.shields.io/maven-metadata/v/http/nexus.hsweb.me/content/groups/public/org/hswebframework/web/hsweb-framework/maven-metadata.xml.svg)](http://nexus.hsweb.me/#nexus-search;quick~hsweb-framework)
33
[![Codecov](https://codecov.io/gh/hs-web/hsweb-framework/branch/master/graph/badge.svg)](https://codecov.io/gh/hs-web/hsweb-framework/branch/master)
4-
[![sonar](https://sonarcloud.io/api/badges/measure?key=org.hswebframework.web:hsweb-framework&metric=bugs)](https://sonarcloud.io/dashboard?id=org.hswebframework.web%3Ahsweb-framework)
4+
[![Sonar Coverage](https://sonarcloud.io/api/badges/measure?key=org.hswebframework.web:hsweb-framework&metric=coverage)](https://sonarcloud.io/dashboard?id=org.hswebframework.web%3Ahsweb-framework)
5+
[![Sonar Bugs](https://sonarcloud.io/api/badges/measure?key=org.hswebframework.web:hsweb-framework&metric=bugs)](https://sonarcloud.io/dashboard?id=org.hswebframework.web%3Ahsweb-framework)
56
[![Build Status](https://travis-ci.org/hs-web/hsweb-framework.svg?branch=master)](https://travis-ci.org/hs-web/hsweb-framework)
67
[![License](https://img.shields.io/badge/license-Apache%202-4EB1BA.svg?style=flat-square)](https://www.apache.org/licenses/LICENSE-2.0.html)
78
[![Insight.io](https://www.insight.io/repoBadge/github.com/hs-web/hsweb-framework)](https://insight.io/github.com/hs-web/hsweb-framework)
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,18 @@
11
package org.hswebframework.web.entity.datasource;
22

3+
import lombok.*;
34
import org.hswebframework.web.commons.entity.SimpleGenericEntity;
45

56
/**
67
* 数据源配置
78
*
89
* @author hsweb-generator-online
910
*/
11+
@EqualsAndHashCode(callSuper = true)
12+
@Data
13+
@Builder
14+
@NoArgsConstructor
15+
@AllArgsConstructor
1016
public class SimpleDataSourceConfigEntity extends SimpleGenericEntity<String> implements DataSourceConfigEntity {
1117
//数据源名称
1218
private String name;
@@ -16,68 +22,4 @@ public class SimpleDataSourceConfigEntity extends SimpleGenericEntity<String> im
1622
private java.util.Date createDate;
1723
//备注
1824
private String describe;
19-
20-
/**
21-
* @return 数据源名称
22-
*/
23-
@Override
24-
public String getName() {
25-
return this.name;
26-
}
27-
28-
/**
29-
* @param name 数据源名称
30-
*/
31-
@Override
32-
public void setName(String name) {
33-
this.name = name;
34-
}
35-
36-
/**
37-
* @return 是否启用
38-
*/
39-
@Override
40-
public Long getEnabled() {
41-
return this.enabled;
42-
}
43-
44-
/**
45-
* @param enabled 是否启用
46-
*/
47-
@Override
48-
public void setEnabled(Long enabled) {
49-
this.enabled = enabled;
50-
}
51-
52-
/**
53-
* @return 创建日期
54-
*/
55-
@Override
56-
public java.util.Date getCreateDate() {
57-
return this.createDate;
58-
}
59-
60-
/**
61-
* @param createDate 创建日期
62-
*/
63-
@Override
64-
public void setCreateDate(java.util.Date createDate) {
65-
this.createDate = createDate;
66-
}
67-
68-
/**
69-
* @return 备注
70-
*/
71-
@Override
72-
public String getDescribe() {
73-
return this.describe;
74-
}
75-
76-
/**
77-
* @param describe 备注
78-
*/
79-
@Override
80-
public void setDescribe(String describe) {
81-
this.describe = describe;
82-
}
8325
}

hsweb-system/hsweb-system-datasource/hsweb-system-datasource-service/hsweb-system-datasource-service-simple/pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,5 +27,11 @@
2727
<artifactId>hsweb-datasource-api</artifactId>
2828
<version>${project.version}</version>
2929
</dependency>
30+
<dependency>
31+
<groupId>org.hswebframework.web</groupId>
32+
<artifactId>hsweb-datasource-jta</artifactId>
33+
<version>${project.version}</version>
34+
<optional>true</optional>
35+
</dependency>
3036
</dependencies>
3137
</project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
package org.hswebframework.web.service.datasource.simple;
2+
3+
import com.alibaba.fastjson.JSON;
4+
import org.hswebframework.web.commons.entity.factory.EntityFactory;
5+
import org.hswebframework.web.datasource.jta.AtomikosDataSourceConfig;
6+
import org.hswebframework.web.datasource.jta.JtaDataSourceRepository;
7+
import org.hswebframework.web.entity.datasource.DataSourceConfigEntity;
8+
import org.hswebframework.web.service.datasource.DataSourceConfigService;
9+
import org.springframework.beans.factory.annotation.Autowired;
10+
11+
import java.util.List;
12+
import java.util.Map;
13+
import java.util.Properties;
14+
import java.util.stream.Collectors;
15+
16+
/**
17+
* @author zhouhao
18+
* @since 1.0
19+
*/
20+
public class InServiceJtaDataSourceRepository implements JtaDataSourceRepository {
21+
private DataSourceConfigService dataSourceConfigService;
22+
23+
private EntityFactory entityFactory;
24+
25+
@Autowired
26+
public void setEntityFactory(EntityFactory entityFactory) {
27+
this.entityFactory = entityFactory;
28+
}
29+
30+
@Autowired
31+
public void setDataSourceConfigService(DataSourceConfigService dataSourceConfigService) {
32+
this.dataSourceConfigService = dataSourceConfigService;
33+
}
34+
35+
protected AtomikosDataSourceConfig convert(DataSourceConfigEntity entity) {
36+
if (null == entity) {
37+
return null;
38+
}
39+
Map<String, Object> config = entity.getProperties();
40+
if (config == null) {
41+
return null;
42+
}
43+
Object xaProperties = config.get("xaProperties");
44+
Properties properties = new Properties();
45+
46+
if (xaProperties instanceof String) {
47+
xaProperties = JSON.parseObject(((String) xaProperties));
48+
}
49+
if (xaProperties instanceof Map) {
50+
properties.putAll(((Map) xaProperties));
51+
}
52+
config.remove("xaProperties");
53+
AtomikosDataSourceConfig target = entityFactory.copyProperties(config, new AtomikosDataSourceConfig());
54+
target.setId(entity.getId());
55+
target.setName(entity.getName());
56+
target.setDescribe(entity.getDescribe());
57+
target.setXaProperties(properties);
58+
return target;
59+
}
60+
61+
@Override
62+
public List<AtomikosDataSourceConfig> findAll() {
63+
return dataSourceConfigService.select().stream()
64+
.map(this::convert)
65+
.collect(Collectors.toList());
66+
}
67+
68+
@Override
69+
public AtomikosDataSourceConfig findById(String dataSourceId) {
70+
return convert(dataSourceConfigService.selectByPk(dataSourceId));
71+
}
72+
73+
@Override
74+
public AtomikosDataSourceConfig add(AtomikosDataSourceConfig config) {
75+
throw new UnsupportedOperationException("add AtomikosDataSourceConfig not support");
76+
}
77+
78+
@Override
79+
public AtomikosDataSourceConfig remove(String dataSourceId) {
80+
throw new UnsupportedOperationException("remove datasource not support");
81+
}
82+
}

hsweb-system/hsweb-system-datasource/hsweb-system-datasource-service/hsweb-system-datasource-service-simple/src/main/java/org/hswebframework/web/service/datasource/simple/SimpleDataSourceConfigService.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@
22

33
import org.hswebframework.web.dao.datasource.DataSourceConfigDao;
44
import org.hswebframework.web.entity.datasource.DataSourceConfigEntity;
5+
import org.hswebframework.web.service.EnableCacheGenericEntityService;
56
import org.hswebframework.web.service.GenericEntityService;
67
import org.hswebframework.web.id.IDGenerator;
78
import org.hswebframework.web.service.datasource.DataSourceConfigService;
89
import org.springframework.beans.factory.annotation.Autowired;
10+
import org.springframework.cache.annotation.CacheConfig;
911
import org.springframework.stereotype.Service;
1012

1113
/**
@@ -14,7 +16,8 @@
1416
* @author hsweb-generator-online
1517
*/
1618
@Service("dataSourceConfigService")
17-
public class SimpleDataSourceConfigService extends GenericEntityService<DataSourceConfigEntity, String>
19+
@CacheConfig(cacheNames = "data-source")
20+
public class SimpleDataSourceConfigService extends EnableCacheGenericEntityService<DataSourceConfigEntity, String>
1821
implements DataSourceConfigService {
1922
@Autowired
2023
private DataSourceConfigDao dataSourceConfigDao;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
package org.hswebframework.web.service.datasource.simple;
2+
3+
import org.hswebframework.web.commons.entity.factory.MapperEntityFactory;
4+
import org.hswebframework.web.datasource.jta.AtomikosDataSourceConfig;
5+
import org.hswebframework.web.entity.datasource.DataSourceConfigEntity;
6+
import org.hswebframework.web.entity.datasource.SimpleDataSourceConfigEntity;
7+
import org.hswebframework.web.service.datasource.DataSourceConfigService;
8+
import org.junit.Assert;
9+
import org.junit.Before;
10+
import org.junit.Test;
11+
import org.junit.runner.RunWith;
12+
import org.mockito.InjectMocks;
13+
import org.mockito.Mock;
14+
import org.mockito.runners.MockitoJUnitRunner;
15+
16+
import java.util.*;
17+
18+
import static org.junit.Assert.*;
19+
import static org.mockito.Mockito.*;
20+
21+
/**
22+
* @author zhouhao
23+
* @since 3.0
24+
*/
25+
@RunWith(MockitoJUnitRunner.class)
26+
public class InServiceJtaDataSourceRepositoryTests {
27+
28+
@InjectMocks
29+
InServiceJtaDataSourceRepository repository = new InServiceJtaDataSourceRepository();
30+
31+
@Mock
32+
DataSourceConfigService dataSourceConfigService;
33+
34+
AtomikosDataSourceConfig config = new AtomikosDataSourceConfig();
35+
36+
{
37+
repository.setEntityFactory(new MapperEntityFactory());
38+
config.setMinPoolSize(12);
39+
config.setMaxPoolSize(999);
40+
config.setId("test-ds");
41+
config.setName("测试");
42+
config.setDescribe("测试");
43+
config.setXaDataSourceClassName("com.alibaba.druid.DruidDataSource");
44+
Properties properties = new Properties();
45+
properties.setProperty("url", "jdbc:h2:mem:core;DB_CLOSE_ON_EXIT=FALSE");
46+
properties.setProperty("username", "sa");
47+
properties.setProperty("password", "");
48+
config.setXaProperties(properties);
49+
}
50+
51+
@Before
52+
public void init() {
53+
DataSourceConfigEntity configEntity = SimpleDataSourceConfigEntity
54+
.builder()
55+
.createDate(new Date())
56+
.describe("测试")
57+
.enabled(1L)
58+
.name("测试")
59+
.build();
60+
Map<String, Object> properties = new HashMap<>();
61+
properties.put("minPoolSize", config.getMinPoolSize() + "");
62+
properties.put("maxPoolSize", config.getMaxPoolSize() + "");
63+
properties.put("borrowConnectionTimeout", config.getBorrowConnectionTimeout());
64+
properties.put("reapTimeout", config.getReapTimeout());
65+
properties.put("initTimeout", config.getInitTimeout());
66+
properties.put("xaDataSourceClassName", config.getXaDataSourceClassName());
67+
properties.put("xaProperties", config.getXaProperties());
68+
configEntity.setProperties(properties);
69+
configEntity.setId("test-ds");
70+
when(dataSourceConfigService.selectByPk("test-ds")).thenReturn(configEntity);
71+
when(dataSourceConfigService.select()).thenReturn(new ArrayList<>(Arrays.asList(configEntity)));
72+
}
73+
74+
@Test
75+
public void testQuery() {
76+
AtomikosDataSourceConfig dataSourceConfig = repository.findById("test-ds");
77+
assertNotNull(dataSourceConfig);
78+
assertEquals(dataSourceConfig.hashCode(), config.hashCode());
79+
}
80+
81+
@Test
82+
public void testQuery2() {
83+
AtomikosDataSourceConfig dataSourceConfig = repository.findAll().get(0);
84+
assertNotNull(dataSourceConfig);
85+
assertEquals(dataSourceConfig.hashCode(), config.hashCode());
86+
}
87+
88+
@Test
89+
public void testUD() {
90+
try {
91+
repository.remove("test-ds");
92+
assertTrue(false);
93+
} catch (UnsupportedOperationException e) {
94+
95+
}
96+
try {
97+
repository.add(config);
98+
assertTrue(false);
99+
} catch (UnsupportedOperationException e) {
100+
101+
}
102+
}
103+
104+
}

0 commit comments

Comments
 (0)