You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@metron.apache.org by ce...@apache.org on 2016/06/24 13:59:16 UTC
incubator-metron git commit: METRON-255: Expose the
IPProtocolTransformer as a function in the Stellar transformation language.
This closes apache/incubator-metron#172
Repository: incubator-metron
Updated Branches:
refs/heads/master ca4adc892 -> 112a770f7
METRON-255: Expose the IPProtocolTransformer as a function in the Stellar transformation language. This closes apache/incubator-metron#172
Project: http://git-wip-us.apache.org/repos/asf/incubator-metron/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-metron/commit/112a770f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-metron/tree/112a770f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-metron/diff/112a770f
Branch: refs/heads/master
Commit: 112a770f78c4aa98799aee792fda47636cec27fe
Parents: ca4adc8
Author: cstella <ce...@gmail.com>
Authored: Fri Jun 24 09:59:02 2016 -0400
Committer: cstella <ce...@gmail.com>
Committed: Fri Jun 24 09:59:02 2016 -0400
----------------------------------------------------------------------
.../common/dsl/TransformationFunctions.java | 2 ++
.../IPProtocolTransformation.java | 25 +++++++++++++++++++-
.../transformation/TransformationTest.java | 8 +++++++
3 files changed, 34 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-metron/blob/112a770f/metron-platform/metron-common/src/main/java/org/apache/metron/common/dsl/TransformationFunctions.java
----------------------------------------------------------------------
diff --git a/metron-platform/metron-common/src/main/java/org/apache/metron/common/dsl/TransformationFunctions.java b/metron-platform/metron-common/src/main/java/org/apache/metron/common/dsl/TransformationFunctions.java
index 3cc51ce..2ff120d 100644
--- a/metron-platform/metron-common/src/main/java/org/apache/metron/common/dsl/TransformationFunctions.java
+++ b/metron-platform/metron-common/src/main/java/org/apache/metron/common/dsl/TransformationFunctions.java
@@ -22,6 +22,7 @@ import org.apache.metron.common.dsl.functions.DateFunctions;
import org.apache.metron.common.dsl.functions.MapFunctions;
import org.apache.metron.common.dsl.functions.NetworkFunctions;
import org.apache.metron.common.dsl.functions.StringFunctions;
+import org.apache.metron.common.field.transformation.IPProtocolTransformation;
import org.apache.metron.common.utils.ConversionUtils;
import java.util.List;
@@ -48,6 +49,7 @@ public enum TransformationFunctions implements Function<List<Object>, Object> {
,URL_TO_PATH(new NetworkFunctions.URLToPath())
,URL_TO_PROTOCOL(new NetworkFunctions.URLToProtocol())
,TO_EPOCH_TIMESTAMP(new DateFunctions.ToTimestamp())
+ ,PROTOCOL_TO_NAME(new IPProtocolTransformation())
;
Function<List<Object>, Object> func;
TransformationFunctions(Function<List<Object>, Object> func) {
http://git-wip-us.apache.org/repos/asf/incubator-metron/blob/112a770f/metron-platform/metron-common/src/main/java/org/apache/metron/common/field/transformation/IPProtocolTransformation.java
----------------------------------------------------------------------
diff --git a/metron-platform/metron-common/src/main/java/org/apache/metron/common/field/transformation/IPProtocolTransformation.java b/metron-platform/metron-common/src/main/java/org/apache/metron/common/field/transformation/IPProtocolTransformation.java
index b0e9a9c..c789018 100644
--- a/metron-platform/metron-common/src/main/java/org/apache/metron/common/field/transformation/IPProtocolTransformation.java
+++ b/metron-platform/metron-common/src/main/java/org/apache/metron/common/field/transformation/IPProtocolTransformation.java
@@ -19,10 +19,15 @@
package org.apache.metron.common.field.transformation;
+import org.apache.hadoop.yarn.util.ConverterUtils;
+import org.apache.metron.common.utils.ConversionUtils;
+
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
+import java.util.function.Function;
-public class IPProtocolTransformation extends SimpleFieldTransformation {
+public class IPProtocolTransformation extends SimpleFieldTransformation implements Function<List<Object>, Object> {
private final static Map<Integer, String> PROTOCOLS = new HashMap<>();
@@ -175,4 +180,22 @@ public class IPProtocolTransformation extends SimpleFieldTransformation {
}
return ret;
}
+
+
+ @Override
+ public Object apply(List<Object> objects) {
+ Object keyObj = objects.get(0);
+ if(keyObj == null) {
+ return keyObj;
+ }
+ Integer key = ConversionUtils.convert(keyObj, Integer.class);
+ if(key == null ) {
+ return keyObj;
+ }
+ Object ret = PROTOCOLS.get(key);
+ if(ret == null ) {
+ return keyObj;
+ }
+ return ret;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-metron/blob/112a770f/metron-platform/metron-common/src/test/java/org/apache/metron/common/transformation/TransformationTest.java
----------------------------------------------------------------------
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/transformation/TransformationTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/transformation/TransformationTest.java
index 7884098..d0f32ef 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/transformation/TransformationTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/transformation/TransformationTest.java
@@ -105,6 +105,14 @@ public class TransformationTest {
}
@Test
+ public void testProtocolToName() {
+ String query = "PROTOCOL_TO_NAME(protocol)";
+ Assert.assertEquals("TCP", run(query, ImmutableMap.of("protocol", "6")));
+ Assert.assertEquals("TCP", run(query, ImmutableMap.of("protocol", 6)));
+ Assert.assertEquals(null, run(query, ImmutableMap.of("foo", 6)));
+ Assert.assertEquals("chicken", run(query, ImmutableMap.of("protocol", "chicken")));
+ }
+ @Test
public void testDateConversion() {
long expected =1452013350000L;
{