From 724300c0762f6f7d0110cb4b3f15bc83ab80d041 Mon Sep 17 00:00:00 2001 From: ViacheslavKlimov Date: Tue, 29 Aug 2023 15:41:35 +0300 Subject: [PATCH] Fix tenant profile Java serialization; add test --- .../common/data/queue/ProcessingStrategy.java | 7 ++++- .../common/data/queue/SubmitStrategy.java | 7 ++++- .../dao/service/TenantProfileServiceTest.java | 27 +++++++++++++++++++ 3 files changed, 39 insertions(+), 2 deletions(-) diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/queue/ProcessingStrategy.java b/common/data/src/main/java/org/thingsboard/server/common/data/queue/ProcessingStrategy.java index e1889ed759..4ad8265c22 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/queue/ProcessingStrategy.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/queue/ProcessingStrategy.java @@ -17,8 +17,13 @@ package org.thingsboard.server.common.data.queue; import lombok.Data; +import java.io.Serializable; + @Data -public class ProcessingStrategy { +public class ProcessingStrategy implements Serializable { + + private static final long serialVersionUID = 293598327194813L; + private ProcessingStrategyType type; private int retries; private double failurePercentage; diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/queue/SubmitStrategy.java b/common/data/src/main/java/org/thingsboard/server/common/data/queue/SubmitStrategy.java index 18198ee6d3..63461951c4 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/queue/SubmitStrategy.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/queue/SubmitStrategy.java @@ -17,8 +17,13 @@ package org.thingsboard.server.common.data.queue; import lombok.Data; +import java.io.Serializable; + @Data -public class SubmitStrategy { +public class SubmitStrategy implements Serializable { + + private static final long serialVersionUID = 2938457983298400L; + private SubmitStrategyType type; private int batchSize; } \ No newline at end of file diff --git a/dao/src/test/java/org/thingsboard/server/dao/service/TenantProfileServiceTest.java b/dao/src/test/java/org/thingsboard/server/dao/service/TenantProfileServiceTest.java index 7b5e016d14..94d3b8f98e 100644 --- a/dao/src/test/java/org/thingsboard/server/dao/service/TenantProfileServiceTest.java +++ b/dao/src/test/java/org/thingsboard/server/dao/service/TenantProfileServiceTest.java @@ -24,6 +24,7 @@ import org.junit.jupiter.api.Assertions; import org.springframework.beans.factory.annotation.Autowired; import org.thingsboard.server.common.data.DataConstants; import org.thingsboard.server.common.data.EntityInfo; +import org.thingsboard.server.common.data.FSTUtils; import org.thingsboard.server.common.data.Tenant; import org.thingsboard.server.common.data.TenantProfile; import org.thingsboard.server.common.data.id.TenantId; @@ -45,6 +46,9 @@ import java.util.Collections; import java.util.List; import java.util.stream.Collectors; +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; + @DaoSqlTest public class TenantProfileServiceTest extends AbstractServiceTest { @@ -295,6 +299,29 @@ public class TenantProfileServiceTest extends AbstractServiceTest { } + @Test + public void testTenantProfileSerialization_fst() { + TenantProfile tenantProfile = new TenantProfile(); + TenantProfileData profileData = new TenantProfileData(); + tenantProfile.setProfileData(profileData); + profileData.setConfiguration(new DefaultTenantProfileConfiguration()); + addMainQueueConfig(tenantProfile); + + byte[] serialized = assertDoesNotThrow(() -> { + return FSTUtils.encode(tenantProfile); + }); + assertDoesNotThrow(() -> { + FSTUtils.encode(profileData); + }); + + TenantProfile deserialized = assertDoesNotThrow(() -> { + return FSTUtils.decode(serialized); + }); + assertThat(deserialized).isEqualTo(tenantProfile); + assertThat(deserialized.getProfileData()).isNotNull(); + assertThat(deserialized.getProfileData().getQueueConfiguration()).isNotEmpty(); + } + public static TenantProfile createTenantProfile(String name) { TenantProfile tenantProfile = new TenantProfile(); tenantProfile.setName(name);