Skip to content

Commit

Permalink
[ISSUE#7757] Fix jraft read request deserialize to write request prob…
Browse files Browse the repository at this point in the history
…lem. (#7797)

* Fix jraft read request deserialize to write request problem.

* For checkstyle.
  • Loading branch information
KomachiSion authored Feb 21, 2022
1 parent 1c5cf5e commit 72ce3e0
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 28 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -40,12 +40,12 @@ public class ProtoMessageUtil {
public static Message parse(byte[] bytes) {
Message result;
try {
result = WriteRequest.parseFrom(bytes);
result = ReadRequest.parseFrom(bytes);
return result;
} catch (Throwable ignore) {
}
try {
result = ReadRequest.parseFrom(bytes);
result = WriteRequest.parseFrom(bytes);
return result;
} catch (Throwable ignore) {
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,61 +21,73 @@
import com.alibaba.nacos.consistency.entity.ReadRequest;
import com.alibaba.nacos.consistency.entity.WriteRequest;
import com.google.protobuf.ByteString;
import org.junit.Assert;
import org.junit.Test;

import static org.junit.Assert.assertEquals;

public class ProtoMessageUtilTest {

@Test
public void testProto() throws Exception {
WriteRequest request = WriteRequest.newBuilder()
.setKey("test-proto-new")
.build();
WriteRequest request = WriteRequest.newBuilder().setKey("test-proto-new").build();

byte[] bytes = request.toByteArray();
Log log = Log.parseFrom(bytes);
Assert.assertEquals(request.getKey(), log.getKey());
assertEquals(request.getKey(), log.getKey());
}

@Test
public void testParseReadRequest() {
String group = "test";
ByteString data = ByteString.copyFrom("data".getBytes());
ReadRequest testCase = ReadRequest.newBuilder().setGroup(group).setData(data).build();
Object actual = ProtoMessageUtil.parse(testCase.toByteArray());
assertEquals(ReadRequest.class, testCase.getClass());
assertEquals(group, ((ReadRequest) actual).getGroup());
assertEquals(data, ((ReadRequest) actual).getData());
}

@Test
public void testParseWriteRequest() {
String group = "test";
ByteString data = ByteString.copyFrom("data".getBytes());
WriteRequest testCase = WriteRequest.newBuilder().setGroup(group).setData(data).build();
Object actual = ProtoMessageUtil.parse(testCase.toByteArray());
assertEquals(WriteRequest.class, testCase.getClass());
assertEquals(group, ((WriteRequest) actual).getGroup());
assertEquals(data, ((WriteRequest) actual).getData());
}

@Test
public void testConvertToReadRequest() {
ByteString data = ByteString.copyFrom("data".getBytes());
String group = "test";

GetRequest getRequest = GetRequest.newBuilder()
.setGroup(group)
.setData(data)
.putExtendInfo("k", "v")
.build();
GetRequest getRequest = GetRequest.newBuilder().setGroup(group).setData(data).putExtendInfo("k", "v").build();
ReadRequest readRequest = ProtoMessageUtil.convertToReadRequest(getRequest);

Assert.assertEquals(group, readRequest.getGroup());
assertEquals(group, readRequest.getGroup());

Assert.assertEquals(data, readRequest.getData());
assertEquals(data, readRequest.getData());

Assert.assertEquals(1, readRequest.getExtendInfoCount());
assertEquals(1, readRequest.getExtendInfoCount());
}

@Test
public void testConvertToWriteRequest() {
ByteString data = ByteString.copyFrom("data".getBytes());
Log log = Log.newBuilder()
.setKey("key")
.setGroup("group")
.setData(data)
.setOperation("o")
.putExtendInfo("k", "v")
.build();
Log log = Log.newBuilder().setKey("key").setGroup("group").setData(data).setOperation("o")
.putExtendInfo("k", "v").build();
WriteRequest writeRequest = ProtoMessageUtil.convertToWriteRequest(log);

Assert.assertEquals(1, writeRequest.getExtendInfoCount());
assertEquals(1, writeRequest.getExtendInfoCount());

Assert.assertEquals(data, writeRequest.getData());
assertEquals(data, writeRequest.getData());

Assert.assertEquals("key", writeRequest.getKey());
assertEquals("key", writeRequest.getKey());

Assert.assertEquals("group", writeRequest.getGroup());
assertEquals("group", writeRequest.getGroup());

Assert.assertEquals("o", writeRequest.getOperation());
assertEquals("o", writeRequest.getOperation());
}
}
}

0 comments on commit 72ce3e0

Please sign in to comment.