mirror of https://github.com/tikv/client-java.git
parent
7278d5aa1d
commit
f4e7c302ad
|
|
@ -42,9 +42,11 @@ public class MockThreeStoresTest extends PDMockServerTest {
|
||||||
public void setup() throws IOException {
|
public void setup() throws IOException {
|
||||||
super.setup();
|
super.setup();
|
||||||
|
|
||||||
int basePort;
|
int[] ports = new int[3];
|
||||||
try (ServerSocket s = new ServerSocket(0)) {
|
for (int i = 0; i < ports.length; i++) {
|
||||||
basePort = s.getLocalPort();
|
try (ServerSocket s = new ServerSocket(0)) {
|
||||||
|
ports[i] = s.getLocalPort();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableList<Metapb.Peer> peers =
|
ImmutableList<Metapb.Peer> peers =
|
||||||
|
|
@ -65,17 +67,17 @@ public class MockThreeStoresTest extends PDMockServerTest {
|
||||||
stores =
|
stores =
|
||||||
ImmutableList.of(
|
ImmutableList.of(
|
||||||
Metapb.Store.newBuilder()
|
Metapb.Store.newBuilder()
|
||||||
.setAddress("127.0.0.1:" + basePort)
|
.setAddress("127.0.0.1:" + ports[0])
|
||||||
.setVersion("5.0.0")
|
.setVersion("5.0.0")
|
||||||
.setId(0x1)
|
.setId(0x1)
|
||||||
.build(),
|
.build(),
|
||||||
Metapb.Store.newBuilder()
|
Metapb.Store.newBuilder()
|
||||||
.setAddress("127.0.0.1:" + (basePort + 1))
|
.setAddress("127.0.0.1:" + ports[1])
|
||||||
.setVersion("5.0.0")
|
.setVersion("5.0.0")
|
||||||
.setId(0x2)
|
.setId(0x2)
|
||||||
.build(),
|
.build(),
|
||||||
Metapb.Store.newBuilder()
|
Metapb.Store.newBuilder()
|
||||||
.setAddress("127.0.0.1:" + (basePort + 2))
|
.setAddress("127.0.0.1:" + ports[2])
|
||||||
.setVersion("5.0.0")
|
.setVersion("5.0.0")
|
||||||
.setId(0x3)
|
.setId(0x3)
|
||||||
.build());
|
.build());
|
||||||
|
|
@ -101,9 +103,9 @@ public class MockThreeStoresTest extends PDMockServerTest {
|
||||||
region.getPeers(0),
|
region.getPeers(0),
|
||||||
region.getPeersList(),
|
region.getPeersList(),
|
||||||
stores.stream().map(TiStore::new).collect(Collectors.toList()));
|
stores.stream().map(TiStore::new).collect(Collectors.toList()));
|
||||||
for (int i = 0; i < 3; i++) {
|
for (int port : ports) {
|
||||||
KVMockServer server = new KVMockServer();
|
KVMockServer server = new KVMockServer();
|
||||||
server.start(this.region, basePort + i);
|
server.start(this.region, port);
|
||||||
servers.add(server);
|
servers.add(server);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,8 @@ public class PDClientMockTest extends PDMockServerTest {
|
||||||
@Test
|
@Test
|
||||||
public void testCreate() throws Exception {
|
public void testCreate() throws Exception {
|
||||||
try (PDClient client = session.getPDClient()) {
|
try (PDClient client = session.getPDClient()) {
|
||||||
assertEquals(LOCAL_ADDR + ":" + leader.port, client.getPdClientWrapper().getLeaderInfo());
|
assertEquals(
|
||||||
|
LOCAL_ADDR + ":" + leader.getPort(), client.getPdClientWrapper().getLeaderInfo());
|
||||||
assertEquals(CLUSTER_ID, client.getHeader().getClusterId());
|
assertEquals(CLUSTER_ID, client.getHeader().getClusterId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -55,17 +56,19 @@ public class PDClientMockTest extends PDMockServerTest {
|
||||||
@Test
|
@Test
|
||||||
public void testSwitchLeader() throws Exception {
|
public void testSwitchLeader() throws Exception {
|
||||||
try (PDClient client = session.getPDClient()) {
|
try (PDClient client = session.getPDClient()) {
|
||||||
client.trySwitchLeader(HTTP + LOCAL_ADDR + ":" + (leader.port + 1));
|
// Switch leader to server 1
|
||||||
|
client.trySwitchLeader(HTTP + LOCAL_ADDR + ":" + pdServers.get(1).getPort());
|
||||||
assertEquals(
|
assertEquals(
|
||||||
client.getPdClientWrapper().getLeaderInfo(), HTTP + LOCAL_ADDR + ":" + (leader.port + 1));
|
client.getPdClientWrapper().getLeaderInfo(),
|
||||||
|
HTTP + LOCAL_ADDR + ":" + pdServers.get(1).getPort());
|
||||||
}
|
}
|
||||||
tearDown();
|
tearDown();
|
||||||
setup(LOCAL_ADDR_IPV6);
|
setup(LOCAL_ADDR_IPV6);
|
||||||
try (PDClient client = session.getPDClient()) {
|
try (PDClient client = session.getPDClient()) {
|
||||||
client.trySwitchLeader(HTTP + LOCAL_ADDR_IPV6 + ":" + (leader.port + 2));
|
client.trySwitchLeader(HTTP + LOCAL_ADDR_IPV6 + ":" + pdServers.get(2).getPort());
|
||||||
assertEquals(
|
assertEquals(
|
||||||
client.getPdClientWrapper().getLeaderInfo(),
|
client.getPdClientWrapper().getLeaderInfo(),
|
||||||
HTTP + LOCAL_ADDR_IPV6 + ":" + (leader.port + 2));
|
HTTP + LOCAL_ADDR_IPV6 + ":" + pdServers.get(2).getPort());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -37,8 +37,7 @@ import org.tikv.kvproto.Pdpb.TsoRequest;
|
||||||
import org.tikv.kvproto.Pdpb.TsoResponse;
|
import org.tikv.kvproto.Pdpb.TsoResponse;
|
||||||
|
|
||||||
public class PDMockServer extends PDGrpc.PDImplBase {
|
public class PDMockServer extends PDGrpc.PDImplBase {
|
||||||
|
private int port;
|
||||||
public int port;
|
|
||||||
private long clusterId;
|
private long clusterId;
|
||||||
private Server server;
|
private Server server;
|
||||||
|
|
||||||
|
|
@ -148,4 +147,8 @@ public class PDMockServer extends PDGrpc.PDImplBase {
|
||||||
public long getClusterId() {
|
public long getClusterId() {
|
||||||
return clusterId;
|
return clusterId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public long getPort() {
|
||||||
|
return port;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -38,28 +38,30 @@ public abstract class PDMockServerTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
void setup(String addr) throws IOException {
|
void setup(String addr) throws IOException {
|
||||||
int basePort;
|
int[] ports = new int[3];
|
||||||
try (ServerSocket s = new ServerSocket(0)) {
|
for (int i = 0; i < ports.length; i++) {
|
||||||
basePort = s.getLocalPort();
|
try (ServerSocket s = new ServerSocket(0)) {
|
||||||
|
ports[i] = s.getLocalPort();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < 3; i++) {
|
for (int i = 0; i < ports.length; i++) {
|
||||||
PDMockServer server = new PDMockServer();
|
PDMockServer server = new PDMockServer();
|
||||||
server.start(CLUSTER_ID, basePort + i);
|
server.start(CLUSTER_ID, ports[i]);
|
||||||
server.addGetMembersListener(
|
server.addGetMembersListener(
|
||||||
(request) ->
|
(request) ->
|
||||||
GrpcUtils.makeGetMembersResponse(
|
GrpcUtils.makeGetMembersResponse(
|
||||||
server.getClusterId(),
|
server.getClusterId(),
|
||||||
GrpcUtils.makeMember(1, "http://" + addr + ":" + basePort),
|
GrpcUtils.makeMember(1, "http://" + addr + ":" + ports[0]),
|
||||||
GrpcUtils.makeMember(2, "http://" + addr + ":" + (basePort + 1)),
|
GrpcUtils.makeMember(2, "http://" + addr + ":" + ports[1]),
|
||||||
GrpcUtils.makeMember(3, "http://" + addr + ":" + (basePort + 2))));
|
GrpcUtils.makeMember(3, "http://" + addr + ":" + ports[2])));
|
||||||
pdServers.add(server);
|
pdServers.add(server);
|
||||||
if (i == 0) {
|
if (i == 0) {
|
||||||
leader = server;
|
leader = server;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TiConfiguration conf = TiConfiguration.createDefault(addr + ":" + leader.port);
|
TiConfiguration conf = TiConfiguration.createDefault(addr + ":" + ports[0]);
|
||||||
conf.setKvMode("RAW");
|
conf.setKvMode("RAW");
|
||||||
conf.setWarmUpEnable(false);
|
conf.setWarmUpEnable(false);
|
||||||
conf.setTimeout(2000);
|
conf.setTimeout(2000);
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,6 @@ import org.tikv.kvproto.Pdpb;
|
||||||
import org.tikv.raw.RawKVClient;
|
import org.tikv.raw.RawKVClient;
|
||||||
|
|
||||||
public class SeekLeaderStoreTest extends MockThreeStoresTest {
|
public class SeekLeaderStoreTest extends MockThreeStoresTest {
|
||||||
|
|
||||||
private RawKVClient createClient() {
|
private RawKVClient createClient() {
|
||||||
return session.createRawClient();
|
return session.createRawClient();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,6 @@ import org.tikv.common.KVMockServer.State;
|
||||||
import org.tikv.raw.RawKVClient;
|
import org.tikv.raw.RawKVClient;
|
||||||
|
|
||||||
public class SeekProxyStoreTest extends MockThreeStoresTest {
|
public class SeekProxyStoreTest extends MockThreeStoresTest {
|
||||||
|
|
||||||
private RawKVClient createClient() {
|
private RawKVClient createClient() {
|
||||||
return session.createRawClient();
|
return session.createRawClient();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue