use of com.ctrip.platform.dal.dao.configure.ClusterInfo in project dal by ctripcorp.
the class ApiDataSourceIdentityTest method testMultiHost.
@Test
public void testMultiHost() {
provider.setNormalConfig(false);
ApiDataSourceIdentity id = new ApiDataSourceIdentity(provider);
ClusterInfo clusterInfo = id.getClusterInfo();
Assert.assertEquals(DB_NAME, clusterInfo.getClusterName());
Assert.assertEquals(0, clusterInfo.getShardIndex().intValue());
Assert.assertEquals(DatabaseRole.MASTER, clusterInfo.getRole());
Cluster cluster = clusterInfo.getCluster();
Assert.assertEquals(DB_NAME, cluster.getClusterName());
Assert.assertEquals(ClusterType.NORMAL, cluster.getClusterType());
Assert.assertEquals(DatabaseCategory.MYSQL, cluster.getDatabaseCategory());
Assert.assertFalse(cluster.dbShardingEnabled());
Assert.assertEquals(3, cluster.getDatabases().size());
Set<String> hosts = cluster.getDatabases().stream().map(database -> database.getConnectionString().getPrimaryHost()).collect(Collectors.toSet());
Assert.assertEquals(1, hosts.size());
Assert.assertTrue(hosts.contains("localhost"));
Set<Integer> ports = cluster.getDatabases().stream().map(database -> database.getConnectionString().getPrimaryPort()).collect(Collectors.toSet());
Assert.assertEquals(3, ports.size());
Assert.assertTrue(ports.contains(3306));
Assert.assertTrue(ports.contains(3307));
Assert.assertTrue(ports.contains(3308));
Set<String> zones = cluster.getDatabases().stream().map(database -> database.getZone().toLowerCase()).collect(Collectors.toSet());
Assert.assertEquals(3, zones.size());
Assert.assertTrue(zones.contains("z1"));
Assert.assertTrue(zones.contains("z2"));
Assert.assertTrue(zones.contains("z3"));
ClusterRouteStrategyConfig routeStrategy = cluster.getRouteStrategyConfig();
Assert.assertEquals(RouteStrategyEnum.WRITE_ORDERED.getAlias(), routeStrategy.routeStrategyName());
CaseInsensitiveProperties properties = routeStrategy.routeStrategyProperties();
Assert.assertEquals("z3,z2,z1", properties.get(MultiMasterStrategy.ZONES_PRIORITY));
Assert.assertEquals("10000", properties.get(MultiMasterStrategy.FAILOVER_TIME_MS));
Assert.assertNull(properties.get(MultiMasterStrategy.BLACKLIST_TIMEOUT_MS));
Assert.assertNull(properties.get(MultiMasterStrategy.FIXED_VALIDATE_PERIOD_MS));
}
use of com.ctrip.platform.dal.dao.configure.ClusterInfo in project dal by ctripcorp.
the class ApiDataSourceIdentityTest method testNormal.
@Test
public void testNormal() {
provider.setNormalConfig(true);
ApiDataSourceIdentity id = new ApiDataSourceIdentity(provider);
ClusterInfo clusterInfo = id.getClusterInfo();
Assert.assertEquals(DB_NAME, clusterInfo.getClusterName());
Assert.assertEquals(0, clusterInfo.getShardIndex().intValue());
Assert.assertEquals(DatabaseRole.MASTER, clusterInfo.getRole());
Cluster cluster = clusterInfo.getCluster();
Assert.assertEquals(DB_NAME, cluster.getClusterName());
Assert.assertEquals(ClusterType.NORMAL, cluster.getClusterType());
Assert.assertEquals(DatabaseCategory.MYSQL, cluster.getDatabaseCategory());
Assert.assertFalse(cluster.dbShardingEnabled());
Assert.assertEquals(1, cluster.getDatabases().size());
Database database = cluster.getDatabases().iterator().next();
Assert.assertEquals("localhost", database.getConnectionString().getPrimaryHost());
Assert.assertEquals(3306, database.getConnectionString().getPrimaryPort());
ClusterRouteStrategyConfig routeStrategy = cluster.getRouteStrategyConfig();
Assert.assertNotNull(routeStrategy);
}
use of com.ctrip.platform.dal.dao.configure.ClusterInfo in project dal by ctripcorp.
the class GroupDataSource method createWriteDataSource.
protected DataSource createWriteDataSource() {
ClusterInfo masterClusterInfo = clusterInfo.cloneMaster();
writeDataSource = locator.getDataSource(masterClusterInfo);
return writeDataSource;
}
use of com.ctrip.platform.dal.dao.configure.ClusterInfo in project dal by ctripcorp.
the class GroupDataSource method createReadDataSource.
protected void createReadDataSource() {
int slaveIndex = 0;
for (Database database : cluster.getSlavesOnShard(clusterInfo.getShardIndex())) {
ClusterInfo slaveClusterInfo = clusterInfo.cloneSlaveWithIndex(slaveIndex);
readDataSource.put(database, locator.getDataSource(slaveClusterInfo));
slaveIndex++;
}
readDataSource.put(cluster.getMasterOnShard(clusterInfo.getShardIndex()), createWriteDataSource());
}
Aggregations