diff options
| author | wangkuan <[email protected]> | 2024-10-11 18:28:28 +0800 |
|---|---|---|
| committer | wangkuan <[email protected]> | 2024-10-11 18:28:28 +0800 |
| commit | b400832690c4e7f50aded6b9651793f0a2870253 (patch) | |
| tree | 827fe506681ff974ccd72d0c531831e925d0817a | |
| parent | 917f76f0b606de313ccaf9d27b22652cd96a9c60 (diff) | |
[improve][core]UuidV5函数多个字段之间采用"_"拼接
| -rw-r--r-- | groot-bootstrap/src/test/java/com/geedgenetworks/bootstrap/main/simple/JobEtlTest.java | 2 | ||||
| -rw-r--r-- | groot-core/src/main/java/com/geedgenetworks/core/udf/uuid/NameSpaceType.java (renamed from groot-core/src/main/java/com/geedgenetworks/core/udf/uuid/NameSpace.java) | 12 | ||||
| -rw-r--r-- | groot-core/src/main/java/com/geedgenetworks/core/udf/uuid/UuidV5.java | 11 | ||||
| -rw-r--r-- | groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/UuidFunctionTest.java | 63 |
4 files changed, 72 insertions, 16 deletions
diff --git a/groot-bootstrap/src/test/java/com/geedgenetworks/bootstrap/main/simple/JobEtlTest.java b/groot-bootstrap/src/test/java/com/geedgenetworks/bootstrap/main/simple/JobEtlTest.java index 5f9117d..1ec85c7 100644 --- a/groot-bootstrap/src/test/java/com/geedgenetworks/bootstrap/main/simple/JobEtlTest.java +++ b/groot-bootstrap/src/test/java/com/geedgenetworks/bootstrap/main/simple/JobEtlTest.java @@ -73,7 +73,7 @@ public class JobEtlTest { Assert.assertEquals("MULTIPATH_ETHERNET", CollectSink.values.get(0).getExtractedFields().get("tunnels_schema_type").toString()); Assert.assertEquals(36, CollectSink.values.get(0).getExtractedFields().get("log_uuid").toString().length()); Assert.assertEquals(36, CollectSink.values.get(0).getExtractedFields().get("log_uuid_v7").toString().length()); - Assert.assertEquals("b9dd71a2-ddcc-5707-9073-30ec900d5c8b", CollectSink.values.get(0).getExtractedFields().get("ip_uuid").toString()); + Assert.assertEquals("dacad383-8355-5493-9e1e-20ef5cd8b8fd", CollectSink.values.get(0).getExtractedFields().get("ip_uuid").toString()); } diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/uuid/NameSpace.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/uuid/NameSpaceType.java index 8c6d69f..1f6fd85 100644 --- a/groot-core/src/main/java/com/geedgenetworks/core/udf/uuid/NameSpace.java +++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/uuid/NameSpaceType.java @@ -6,7 +6,7 @@ import java.util.UUID; import static com.geedgenetworks.common.exception.CommonErrorCode.ILLEGAL_ARGUMENT; -public enum NameSpace { +public enum NameSpaceType { NAMESPACE_IP("NAMESPACE_IP",UUID.fromString("6ba7b890-9dad-11d1-80b4-00c04fd430c8")), NAMESPACE_DOMAIN("NAMESPACE_DOMAIN", UUID.fromString("6ba7b891-9dad-11d1-80b4-00c04fd430c8")), @@ -14,17 +14,17 @@ public enum NameSpace { NAMESPACE_SUBSCRIBER("NAMESPACE_SUBSCRIBER", UUID.fromString("6ba7b893-9dad-11d1-80b4-00c04fd430c8")); private final String name; private final UUID uuid; - NameSpace(String name, UUID uuid) { + NameSpaceType(String name, UUID uuid) { this.name = name; this.uuid = uuid; } public static UUID getUuidByName(String name) { - for (NameSpace nameSpace : NameSpace.values()) { - if (nameSpace.name.equals(name)) { - return nameSpace.uuid; + for (NameSpaceType nameSpaceType : NameSpaceType.values()) { + if (nameSpaceType.name.equals(name)) { + return nameSpaceType.uuid; } } - throw new GrootStreamRuntimeException(ILLEGAL_ARGUMENT,"No enum constant " + NameSpace.class.getCanonicalName() + "." + name); + throw new GrootStreamRuntimeException(ILLEGAL_ARGUMENT,"No enum constant " + NameSpaceType.class.getCanonicalName() + "." + name); } } diff --git a/groot-core/src/main/java/com/geedgenetworks/core/udf/uuid/UuidV5.java b/groot-core/src/main/java/com/geedgenetworks/core/udf/uuid/UuidV5.java index 0f237a5..85199af 100644 --- a/groot-core/src/main/java/com/geedgenetworks/core/udf/uuid/UuidV5.java +++ b/groot-core/src/main/java/com/geedgenetworks/core/udf/uuid/UuidV5.java @@ -30,15 +30,18 @@ public class UuidV5 implements ScalarFunction { throw new GrootStreamRuntimeException(CommonErrorCode.ILLEGAL_ARGUMENT, "parameters must containkey namespace"); } this.outputFieldName = udfContext.getOutput_fields().get(0); - this.lookupFieldNames = udfContext.getOutput_fields(); - this.nameBasedGenerator = Generators.nameBasedGenerator(NameSpace.getUuidByName(udfContext.getParameters().get("namespace").toString())); + this.lookupFieldNames = udfContext.getLookup_fields(); + this.nameBasedGenerator = Generators.nameBasedGenerator(NameSpaceType.getUuidByName(udfContext.getParameters().get("namespace").toString())); } @Override public Event evaluate(Event event) { StringBuilder sb = new StringBuilder(); - for(String lookupField:lookupFieldNames){ - sb.append(event.getExtractedFields().getOrDefault(lookupField,"")); + for (int i = 0; i < lookupFieldNames.size(); i++) { + sb.append(event.getExtractedFields().getOrDefault(lookupFieldNames.get(i), "")); + if (i < lookupFieldNames.size() - 1) { + sb.append("_"); + } } event.getExtractedFields() .put(outputFieldName, nameBasedGenerator.generate(sb.toString())); diff --git a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/UuidFunctionTest.java b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/UuidFunctionTest.java index 525eb8f..65e5a94 100644 --- a/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/UuidFunctionTest.java +++ b/groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/UuidFunctionTest.java @@ -63,21 +63,74 @@ public class UuidFunctionTest { assertEquals(36, result1.getExtractedFields().get("uuid").toString().length()); } @Test - public void testUuidV5() { + public void testUuidV5ForNameSpaceIp() { udfContext = new UDFContext(); - UuidV5 uuid = new UuidV5(); + UuidV5 uuidv5 = new UuidV5(); parameters = new HashMap<>(); udfContext.setParameters(parameters); udfContext.setLookup_fields(List.of("client_ip","server_ip")); udfContext.setOutput_fields(Collections.singletonList("uuid")); parameters.put("namespace","NAMESPACE_IP"); - uuid.open(null, udfContext); + uuidv5.open(null, udfContext); Event event = new Event(); Map<String, Object> extractedFields = new HashMap<>(); extractedFields.put("client_ip", "1.1.1.1"); extractedFields.put("server_ip", "1.1.1.2"); event.setExtractedFields(extractedFields); - Event result1 = uuid.evaluate(event); - assertEquals("b9dd71a2-ddcc-5707-9073-30ec900d5c8b", result1.getExtractedFields().get("uuid").toString()); + Event result1 = uuidv5.evaluate(event); + assertEquals("52530d0c-07df-5c4b-a659-661242575386", result1.getExtractedFields().get("uuid").toString()); + } + + @Test + public void testUuidV5ForNameSpaceDomain() { + udfContext = new UDFContext(); + UuidV5 uuidv5 = new UuidV5(); + parameters = new HashMap<>(); + udfContext.setParameters(parameters); + udfContext.setLookup_fields(List.of("domain")); + udfContext.setOutput_fields(Collections.singletonList("uuid")); + parameters.put("namespace","NAMESPACE_DOMAIN"); + uuidv5.open(null, udfContext); + Event event = new Event(); + Map<String, Object> extractedFields = new HashMap<>(); + extractedFields.put("domain", "baidu"); + event.setExtractedFields(extractedFields); + Event result1 = uuidv5.evaluate(event); + assertEquals("fd67cec1-6b33-5def-835c-fbe32f1ce4a4", result1.getExtractedFields().get("uuid").toString()); + } + @Test + public void testUuidV5ForNameSpaceApp() { + udfContext = new UDFContext(); + UuidV5 uuidv5 = new UuidV5(); + parameters = new HashMap<>(); + udfContext.setParameters(parameters); + udfContext.setLookup_fields(List.of("app")); + udfContext.setOutput_fields(Collections.singletonList("uuid")); + parameters.put("namespace","NAMESPACE_APP"); + uuidv5.open(null, udfContext); + Event event = new Event(); + Map<String, Object> extractedFields = new HashMap<>(); + extractedFields.put("app", "54321"); + event.setExtractedFields(extractedFields); + Event result1 = uuidv5.evaluate(event); + assertEquals("194b8304-64f0-599e-bf7a-66cbc21bf6ee", result1.getExtractedFields().get("uuid").toString()); + } + + @Test + public void testUuidV5ForNameSpaceSubid() { + udfContext = new UDFContext(); + UuidV5 uuidv5 = new UuidV5(); + parameters = new HashMap<>(); + udfContext.setParameters(parameters); + udfContext.setLookup_fields(List.of("subid")); + udfContext.setOutput_fields(Collections.singletonList("uuid")); + parameters.put("namespace","NAMESPACE_SUBSCRIBER"); + uuidv5.open(null, udfContext); + Event event = new Event(); + Map<String, Object> extractedFields = new HashMap<>(); + extractedFields.put("subid", "test1"); + event.setExtractedFields(extractedFields); + Event result1 = uuidv5.evaluate(event); + assertEquals("9b154520-3c29-541c-bb81-f649354dae67", result1.getExtractedFields().get("uuid").toString()); } } |
