From 72ce3e08846a598573b4a6fa9442bfbe20d1cc35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E7=BF=8A=20SionYang?= Date: Mon, 21 Feb 2022 16:17:09 +0800 Subject: [PATCH] [ISSUE#7757] Fix jraft read request deserialize to write request problem. (#7797) * Fix jraft read request deserialize to write request problem. * For checkstyle. --- .../nacos/consistency/ProtoMessageUtil.java | 4 +- .../consistency/ProtoMessageUtilTest.java | 64 +++++++++++-------- 2 files changed, 40 insertions(+), 28 deletions(-) diff --git a/consistency/src/main/java/com/alibaba/nacos/consistency/ProtoMessageUtil.java b/consistency/src/main/java/com/alibaba/nacos/consistency/ProtoMessageUtil.java index 9bcc0c66b4b..7a59e3da18f 100644 --- a/consistency/src/main/java/com/alibaba/nacos/consistency/ProtoMessageUtil.java +++ b/consistency/src/main/java/com/alibaba/nacos/consistency/ProtoMessageUtil.java @@ -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) { } diff --git a/consistency/src/test/java/com/alibaba/nacos/consistency/ProtoMessageUtilTest.java b/consistency/src/test/java/com/alibaba/nacos/consistency/ProtoMessageUtilTest.java index 7333d5749dc..d5406f9deac 100644 --- a/consistency/src/test/java/com/alibaba/nacos/consistency/ProtoMessageUtilTest.java +++ b/consistency/src/test/java/com/alibaba/nacos/consistency/ProtoMessageUtilTest.java @@ -21,20 +21,41 @@ 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 @@ -42,40 +63,31 @@ 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()); } -} \ No newline at end of file +}