summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwangkuan <[email protected]>2024-10-11 18:28:28 +0800
committerwangkuan <[email protected]>2024-10-11 18:28:28 +0800
commitb400832690c4e7f50aded6b9651793f0a2870253 (patch)
tree827fe506681ff974ccd72d0c531831e925d0817a
parent917f76f0b606de313ccaf9d27b22652cd96a9c60 (diff)
[improve][core]UuidV5函数多个字段之间采用"_"拼接
-rw-r--r--groot-bootstrap/src/test/java/com/geedgenetworks/bootstrap/main/simple/JobEtlTest.java2
-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.java11
-rw-r--r--groot-core/src/test/java/com/geedgenetworks/core/udf/test/simple/UuidFunctionTest.java63
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());
}
}