feat: 项目整体命名修改cache-schema-checker
All checks were successful
缓存序列化结构检查 / cache-schema-check (push) Has been skipped

This commit is contained in:
2026-07-14 11:03:34 +08:00
parent 114b053733
commit 110beb79c0
42 changed files with 197 additions and 199 deletions

View File

@@ -0,0 +1,64 @@
package com.codechecker.cache.diff;
import com.codechecker.cache.schema.FieldSchema;
import com.codechecker.cache.schema.JsonType;
import com.codechecker.cache.schema.TypeSchema;
import org.junit.jupiter.api.Test;
import java.util.List;
import java.util.stream.Collectors;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
class SchemaDifferTest {
@Test
void detectsWrapperMoveAndAddition() {
TypeSchema oldS = new TypeSchema("TenantVO");
oldS.add(new FieldSchema("dbName", JsonType.STRING, "String"));
oldS.add(new FieldSchema("linkList", JsonType.ARRAY, "List"));
oldS.add(new FieldSchema("linkList[]", JsonType.OBJECT, "TenantLinkModel"));
oldS.add(new FieldSchema("linkList[].id", JsonType.STRING, "String"));
TypeSchema newS = new TypeSchema("CacheEnvelope");
newS.add(new FieldSchema("vo", JsonType.OBJECT, "TenantVO"));
newS.add(new FieldSchema("vo.dbName", JsonType.STRING, "String"));
newS.add(new FieldSchema("vo.linkList", JsonType.ARRAY, "List"));
newS.add(new FieldSchema("vo.linkList[]", JsonType.OBJECT, "TenantLinkModel"));
newS.add(new FieldSchema("vo.linkList[].id", JsonType.STRING, "String"));
newS.add(new FieldSchema("expiresAtMs", JsonType.NUMBER, "Long"));
List<SchemaChange> changes = new SchemaDiffer().diff(oldS, newS);
List<ChangeType> types = changes.stream().map(SchemaChange::getChangeType).collect(Collectors.toList());
assertTrue(types.contains(ChangeType.WRAPPER_ADDED), "应检测到包装层新增");
assertTrue(types.contains(ChangeType.FIELD_PATH_MOVED), "应检测到字段路径迁移");
assertTrue(types.contains(ChangeType.FIELD_ADDED), "应检测到新增字段 expiresAtMs");
long moved = changes.stream().filter(c -> c.getChangeType() == ChangeType.FIELD_PATH_MOVED).count();
assertEquals(2, moved, "dbName 与 linkList[].id 均应迁移");
}
@Test
void detectsTypeChange() {
TypeSchema oldS = new TypeSchema("A");
oldS.add(new FieldSchema("count", JsonType.STRING, "String"));
TypeSchema newS = new TypeSchema("A");
newS.add(new FieldSchema("count", JsonType.NUMBER, "Integer"));
List<SchemaChange> changes = new SchemaDiffer().diff(oldS, newS);
assertEquals(1, changes.size());
assertEquals(ChangeType.TYPE_CHANGED, changes.get(0).getChangeType());
assertEquals(Severity.P0, changes.get(0).getSeverity());
}
@Test
void noChangeWhenIdentical() {
TypeSchema a = new TypeSchema("A");
a.add(new FieldSchema("x", JsonType.STRING, "String"));
TypeSchema b = new TypeSchema("A");
b.add(new FieldSchema("x", JsonType.STRING, "String"));
assertTrue(new SchemaDiffer().diff(a, b).isEmpty());
}
}