From f33af6d9e6ead6552a51010062c6db4d58206174 Mon Sep 17 00:00:00 2001 From: emptyOVO Date: Thu, 5 Sep 2024 14:07:50 +0800 Subject: [PATCH] fix: conflicts, add merged tests class --- ...TransformArithmeticFunctionsProcessor.java | 1140 ----------------- ...TestTransformStringFunctionsProcessor.java | 759 ----------- .../TestArithmeticFunctionsProcessor.java | 4 +- .../function/arithmetic/TestAsinFunction.java | 55 + .../arithmetic/TestAtan2Function.java | 55 + .../function/arithmetic/TestAtanFunction.java | 55 + .../function/arithmetic/TestCoshFunction.java | 55 + .../function/arithmetic/TestCotFunction.java | 54 + .../function/arithmetic/TestTanhFunction.java | 55 + .../function/string/TestContainsFunction.java | 65 + .../string/TestFromBase64Function.java} | 35 +- .../string/TestStringFunctionsProcessor.java | 4 +- 12 files changed, 403 insertions(+), 1933 deletions(-) delete mode 100644 inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/TestTransformArithmeticFunctionsProcessor.java delete mode 100644 inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/TestTransformStringFunctionsProcessor.java create mode 100644 inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/function/arithmetic/TestAsinFunction.java create mode 100644 inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/function/arithmetic/TestAtan2Function.java create mode 100644 inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/function/arithmetic/TestAtanFunction.java create mode 100644 inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/function/arithmetic/TestCoshFunction.java create mode 100644 inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/function/arithmetic/TestCotFunction.java create mode 100644 inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/function/arithmetic/TestTanhFunction.java create mode 100644 inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/function/string/TestContainsFunction.java rename inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/{TestTransformFromBase64FunctionProcessor.java => function/string/TestFromBase64Function.java} (68%) diff --git a/inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/TestTransformArithmeticFunctionsProcessor.java b/inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/TestTransformArithmeticFunctionsProcessor.java deleted file mode 100644 index b6254eb35d..0000000000 --- a/inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/TestTransformArithmeticFunctionsProcessor.java +++ /dev/null @@ -1,1140 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.inlong.sdk.transform.process; - -import org.apache.inlong.sdk.transform.decode.SourceDecoderFactory; -import org.apache.inlong.sdk.transform.encode.SinkEncoderFactory; -import org.apache.inlong.sdk.transform.pojo.CsvSourceInfo; -import org.apache.inlong.sdk.transform.pojo.FieldInfo; -import org.apache.inlong.sdk.transform.pojo.KvSinkInfo; -import org.apache.inlong.sdk.transform.pojo.TransformConfig; - -import org.junit.Assert; -import org.junit.Test; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Random; - -/** - * TestArithmeticFunctionsTransformProcessor - * description: test the arithmetic functions in transform processor - */ -public class TestTransformArithmeticFunctionsProcessor { - - private static final List srcFields = new ArrayList<>(); - private static final List dstFields = new ArrayList<>(); - private static final CsvSourceInfo csvSource; - private static final KvSinkInfo kvSink; - - static { - for (int i = 1; i < 5; i++) { - FieldInfo field = new FieldInfo(); - field.setName("numeric" + i); - srcFields.add(field); - } - FieldInfo field = new FieldInfo(); - field.setName("result"); - dstFields.add(field); - csvSource = new CsvSourceInfo("UTF-8", '|', '\\', srcFields); - kvSink = new KvSinkInfo("UTF-8", dstFields); - } - - @Test - public void testSignFunction() throws Exception { - String transformSql = "select sign(numeric1) from source"; - TransformConfig config = new TransformConfig(transformSql); - // case1: sign(3.14159265358979323846) - TransformProcessor processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - List output1 = processor.transform("3.14159265358979323846|4|6|8"); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals(output1.get(0), "result=1"); - // case2: sign(-3.5) - List output2 = processor.transform("-3.5|4|6|8"); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals(output2.get(0), "result=-1"); - // case3: sign(0) - List output3 = processor.transform("0|4|6|8"); - Assert.assertEquals(1, output3.size()); - Assert.assertEquals(output3.get(0), "result=0"); - } - - @Test - public void testModuloFunction() throws Exception { - String transformFunctionSql = "select mod(numeric1,100) from source"; - String transformExpressionSql = "select numeric1 % 100 from source"; - List output1, output2; - String data; - TransformConfig functionConfig = new TransformConfig(transformFunctionSql); - TransformProcessor functionProcessor = TransformProcessor - .create(functionConfig, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - TransformConfig expressionConfig = new TransformConfig(transformExpressionSql); - TransformProcessor expressionProcessor = TransformProcessor - .create(expressionConfig, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - - // case1: "mod(3.1415926,100)" and "3.1415926 % 100" - data = "3.1415926|4a|4|8"; - output1 = functionProcessor.transform(data); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals("result=3.1415926", output1.get(0)); - output2 = expressionProcessor.transform(data); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals("result=3.1415926", output2.get(0)); - - // case2: "mod(-3.1415926,100)" and "-3.1415926 % 100" - data = "-3.1415926|4a|4|8"; - output1 = functionProcessor.transform(data); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals("result=-3.1415926", output1.get(0)); - output2 = expressionProcessor.transform(data); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals("result=-3.1415926", output2.get(0)); - - // case3: "mod(320,100)" and "320 % 100" - data = "320|4a|4|8"; - output1 = functionProcessor.transform(data); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals("result=20", output1.get(0)); - output2 = expressionProcessor.transform(data); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals("result=20", output2.get(0)); - - // case4: "mod(-320,100)" and "-320 % 100" - data = "-320|4a|4|8"; - output1 = functionProcessor.transform(data); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals("result=-20", output1.get(0)); - output2 = expressionProcessor.transform(data); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals("result=-20", output2.get(0)); - - transformFunctionSql = "select mod(numeric1,-10) from source"; - transformExpressionSql = "select numeric1 % -10 from source"; - functionConfig = new TransformConfig(transformFunctionSql); - functionProcessor = TransformProcessor - .create(functionConfig, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - expressionConfig = new TransformConfig(transformExpressionSql); - expressionProcessor = TransformProcessor - .create(expressionConfig, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - - // case5: "mod(9,-10)" and "9 % -10" - data = "9|4a|4|8"; - output1 = functionProcessor.transform(data); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals("result=9", output1.get(0)); - output2 = expressionProcessor.transform(data); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals("result=9", output2.get(0)); - - // case6: "mod(-13,-10)" and "-13 % -10" - data = "-13|4a|4|8"; - output1 = functionProcessor.transform(data); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals("result=-3", output1.get(0)); - output2 = expressionProcessor.transform(data); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals("result=-3", output2.get(0)); - - // case7: "mod(-13.14,-10)" and "-13.14 % -10" - data = "-13.14|4a|4|8"; - output1 = functionProcessor.transform(data); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals("result=-3.14", output1.get(0)); - output2 = expressionProcessor.transform(data); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals("result=-3.14", output2.get(0)); - - // case8: "mod(13.14,-10)" and "13.14 % -10" - data = "13.14|4a|4|8"; - output1 = functionProcessor.transform(data); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals("result=3.14", output1.get(0)); - output2 = expressionProcessor.transform(data); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals("result=3.14", output2.get(0)); - - transformFunctionSql = "select mod(numeric1,-3.14) from source"; - transformExpressionSql = "select numeric1 % -3.14 from source"; - functionConfig = new TransformConfig(transformFunctionSql); - functionProcessor = TransformProcessor - .create(functionConfig, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - expressionConfig = new TransformConfig(transformExpressionSql); - expressionProcessor = TransformProcessor - .create(expressionConfig, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - - // case9: "mod(9,-3.14)" and "9 % -3.14" - data = "9|4a|4|8"; - output1 = functionProcessor.transform(data); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals("result=2.72", output1.get(0)); - output2 = expressionProcessor.transform(data); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals("result=2.72", output2.get(0)); - - // case10: "mod(-9,-3.14)" and "-9 % -3.14" - data = "-9|4a|4|8"; - output1 = functionProcessor.transform(data); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals("result=-2.72", output1.get(0)); - output2 = expressionProcessor.transform(data); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals("result=-2.72", output2.get(0)); - - // case11: "mod(-13.14,-3.14)" and "-13.14 % -3.14" - data = "-13.14|4a|4|8"; - output1 = functionProcessor.transform(data); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals("result=-0.58", output1.get(0)); - output2 = expressionProcessor.transform(data); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals("result=-0.58", output2.get(0)); - - // case12: "mod(13.14,-3.14)" and "13.14 % -3.14" - data = "13.14|4a|4|8"; - output1 = functionProcessor.transform(data); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals("result=0.58", output1.get(0)); - output2 = expressionProcessor.transform(data); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals("result=0.58", output2.get(0)); - - } - - @Test - public void testIfNullFunction() throws Exception { - String transformSql = null, data = null; - TransformConfig config = null; - TransformProcessor processor = null; - List output = null; - - // case1: ifnull(5, 3) - transformSql = "select ifnull(numeric1,numeric2) from source"; - config = new TransformConfig(transformSql); - processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - data = "5|3|3|5"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=5", output.get(0)); - - // case2: ifnull(null,3) - transformSql = "select ifnull(xxd,numeric2) from source"; - config = new TransformConfig(transformSql); - processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - data = "5|3|3|5"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=3", output.get(0)); - - // case3: ifnull(6 / 3,'YES') - transformSql = "select ifnull(numeric1 / numeric2,'YES') from source"; - config = new TransformConfig(transformSql); - processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - data = "6|3|3|5"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=2", output.get(0)); - - // case4: ifnull(6 / 0,'YES') - transformSql = "select ifnull(numeric1 / numeric2,'YES') from source"; - config = new TransformConfig(transformSql); - processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - data = "6|0|3|5"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=YES", output.get(0)); - - // case5: ifnull(6 / 0,3 / 0) - transformSql = "select ifnull(numeric1 / numeric2,numeric3 / numeric2) from source"; - config = new TransformConfig(transformSql); - processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - data = "6|0|3|5"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=null", output.get(0)); - } - - @Test - public void testShaFunction() throws Exception { - String transformSql = null, data = null; - TransformConfig config = null; - TransformProcessor processor = null; - List output = null; - - // case1: sha("") - transformSql = "select sha(numeric1) from source"; - config = new TransformConfig(transformSql); - processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - data = "|3|3|5"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=da39a3ee5e6b4b0d3255bfef95601890afd80709", output.get(0)); - - // case2: sha("5") - data = "5|3|3|5"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=ac3478d69a3c81fa62e60f5c3696165a4e5e6ac4", output.get(0)); - - // case3: sha(null) - transformSql = "select sha(xxd) from source"; - config = new TransformConfig(transformSql); - processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - data = "3|3|3|5"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=null", output.get(0)); - } - - @Test - public void testSha2Function() throws Exception { - String transformSql = null, data = null; - TransformConfig config = null; - TransformProcessor processor = null; - List output = null; - - // case1: sha2("",3) - transformSql = "select sha2(numeric1,numeric2) from source"; - config = new TransformConfig(transformSql); - processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - data = "|3|3|5"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=null", output.get(0)); - - // case2: sha2("5",224) - data = "5|224|3|5"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=b51d18b551043c1f145f22dbde6f8531faeaf68c54ed9dd79ce24d17", output.get(0)); - - // case3: sha2("5",0) - data = "5|0|3|5"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=ef2d127de37b942baad06145e54b0c619a1f22327b2ebbcfbec78f5564afe39d", output.get(0)); - - // case4: sha2(null,224) - transformSql = "select sha2(xxd,224) from source"; - config = new TransformConfig(transformSql); - processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - data = "3|224|3|5"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=null", output.get(0)); - } - - @Test - public void testMd5Function() throws Exception { - String transformSql = "select md5(numeric1) from source"; - TransformConfig config = new TransformConfig(transformSql); - TransformProcessor processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - // case1: md5("1") - List output1 = processor.transform("1|4|6|8"); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals("result=c4ca4238a0b923820dcc509a6f75849b", output1.get(0)); - - // case2: md5("-1") - List output2 = processor.transform("-1|4|6|8"); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals("result=6bb61e3b7bce0931da574d19d1d82c88", output2.get(0)); - - // case3: md5("") - List output3 = processor.transform("|4|6|8"); - Assert.assertEquals(1, output3.size()); - Assert.assertEquals("result=d41d8cd98f00b204e9800998ecf8427e", output3.get(0)); - - // case4: md5(null) - transformSql = "select md5(numericxx) from source"; - config = new TransformConfig(transformSql); - processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - List output4 = processor.transform("1|4|6|8"); - Assert.assertEquals(1, output4.size()); - Assert.assertEquals("result=null", output4.get(0)); - } - - @Test - public void testBitwiseInversionOperator() throws Exception { - String transformSql = null, data = null; - TransformConfig config = null; - TransformProcessor processor = null; - List output = null; - - // case1: ~-4 - transformSql = "select ~numeric1 from source"; - config = new TransformConfig(transformSql); - processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - data = "-4|3|3"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=3", output.get(0)); - - // case2: ~4 - data = "4|3|3"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=18446744073709551611", output.get(0)); - - // case3: ~0 - data = "0|3|3"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=18446744073709551615", output.get(0)); - - // case4: ~~-4 - transformSql = "select ~(~numeric1) from source"; - config = new TransformConfig(transformSql); - processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - data = "-4|3|3"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=18446744073709551612", output.get(0)); - - } - @Test - public void testBitwiseAndOperator() throws Exception { - String transformSql = null, data = null; - TransformConfig config = null; - TransformProcessor processor = null; - List output = null; - - // case1: 18446744073709551615 & -1 - transformSql = "select numeric1 & numeric2 from source"; - config = new TransformConfig(transformSql); - processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - data = "18446744073709551615|-1|3"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=18446744073709551615", output.get(0)); - - // case2: 18446744073709551615 & 0 - data = "18446744073709551615|0|3"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=0", output.get(0)); - } - @Test - public void testBitwiseOrOperator() throws Exception { - String transformSql = null, data = null; - TransformConfig config = null; - TransformProcessor processor = null; - List output = null; - - // case1: 18446744073709551615 | -1 - transformSql = "select numeric1 | numeric2 from source"; - config = new TransformConfig(transformSql); - processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - data = "18446744073709551615|-1|3"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=18446744073709551615", output.get(0)); - - // case2: 4 | 3 - data = "4|3|3"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=7", output.get(0)); - } - @Test - public void testBitwiseRightShiftOperator() throws Exception { - String transformSql = null, data = null; - TransformConfig config = null; - TransformProcessor processor = null; - List output = null; - - // case1: 4 >> -1 - transformSql = "select numeric1 >> numeric2 from source"; - config = new TransformConfig(transformSql); - processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - data = "4|-1|3"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=0", output.get(0)); - - // case2: 9223372036854775808 >> 2 - data = "9223372036854775808|2|3"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=2305843009213693952", output.get(0)); - - // case3: 9223372036854775808 >> 9223372036854775808 - data = "9223372036854775808|9223372036854775808|3"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=0", output.get(0)); - } - @Test - public void testBitwiseLeftShiftOperator() throws Exception { - String transformSql = null, data = null; - TransformConfig config = null; - TransformProcessor processor = null; - List output = null; - - // case1: 9223372036854775807 << 1 - transformSql = "select numeric1 << numeric2 from source"; - config = new TransformConfig(transformSql); - processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - data = "9223372036854775807|1|3"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=18446744073709551614", output.get(0)); - - // case2: 18446744073709551615 << 18446744073709551615 - data = "18446744073709551615|18446744073709551615|3"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=0", output.get(0)); - - // case3: 9223372036854775807 << -1 - data = "9223372036854775807|-1|3"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=0", output.get(0)); - } - @Test - public void testBitwiseXorOperator() throws Exception { - String transformSql = null, data = null; - TransformConfig config = null; - TransformProcessor processor = null; - List output = null; - - // case1: 4 ^ 3 - transformSql = "select numeric1 ^ numeric2 from source"; - config = new TransformConfig(transformSql); - processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - data = "4|3|3"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=7", output.get(0)); - - // case2: 4 ^ -1 - data = "4|-1|3"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=18446744073709551611", output.get(0)); - } - - @Test - public void testRoundFunction() throws Exception { - String transformSql = "select round(numeric1) from source"; - TransformConfig config = new TransformConfig(transformSql); - // case1: round(3.14159265358979323846) - TransformProcessor processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - List output1 = processor.transform("3.14159265358979323846|4|6|8"); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals(output1.get(0), "result=3"); - // case2: round(3.5) - List output2 = processor.transform("3.5|4|6|8"); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals(output2.get(0), "result=4"); - - transformSql = "select round(numeric1,numeric2) from source"; - config = new TransformConfig(transformSql); - // case3: round(3.14159265358979323846,10) - processor = TransformProcessor.create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - List output3 = processor.transform("3.14159265358979323846|10|6|8"); - Assert.assertEquals(1, output3.size()); - Assert.assertEquals(output3.get(0), "result=3.1415926536"); - // case4: round(13.14159265358979323846,-1) - List output4 = processor.transform("13.14159265358979323846|-1|6|8"); - Assert.assertEquals(1, output4.size()); - Assert.assertEquals(output4.get(0), "result=10.0"); - } - - @Test - public void testPowerFunction() throws Exception { - String transformSql = "select power(numeric1, numeric2) from source"; - TransformConfig config = new TransformConfig(transformSql); - // case1: 2^4 - TransformProcessor processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - List output1 = processor.transform("2|4|6|8", new HashMap<>()); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals(output1.get(0), "result=16.0"); - // case2: 2^(-2) - List output2 = processor.transform("2|-2|6|8", new HashMap<>()); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals(output2.get(0), "result=0.25"); - // case3: 4^(0.5) - List output3 = processor.transform("4|0.5|6|8", new HashMap<>()); - Assert.assertEquals(1, output3.size()); - Assert.assertEquals(output3.get(0), "result=2.0"); - } - - @Test - public void testAbsFunction() throws Exception { - String transformSql = "select abs(numeric1) from source"; - TransformConfig config = new TransformConfig(transformSql); - // case1: |2| - TransformProcessor processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - List output1 = processor.transform("2|4|6|8", new HashMap<>()); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals(output1.get(0), "result=2"); - // case2: |-4.25| - List output2 = processor.transform("-4.25|4|6|8", new HashMap<>()); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals(output2.get(0), "result=4.25"); - } - - @Test - public void testSqrtFunction() throws Exception { - String transformSql = "select sqrt(numeric1) from source"; - TransformConfig config = new TransformConfig(transformSql); - // case1: sqrt(9) - TransformProcessor processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - List output1 = processor.transform("9|4|6|8", new HashMap<>()); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals(output1.get(0), "result=3.0"); - // case2: sqrt(5) - List output2 = processor.transform("5|4|6|8", new HashMap<>()); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals(output2.get(0), "result=2.23606797749979"); - } - - @Test - public void testLnFunction() throws Exception { - String transformSql = "select ln(numeric1) from source"; - TransformConfig config = new TransformConfig(transformSql); - // case1: ln(1) - TransformProcessor processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - List output1 = processor.transform("1|4|6|8", new HashMap<>()); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals(output1.get(0), "result=0.0"); - // case2: ln(10) - List output2 = processor.transform("10|4|6|8", new HashMap<>()); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals(output2.get(0), "result=2.302585092994046"); - } - - @Test - public void testRadiansFunction() throws Exception { - String transformSql = "select radians(numeric1) from source"; - TransformConfig config = new TransformConfig(transformSql); - TransformProcessor processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - // case1: radians(10) - List output1 = processor.transform("10|4|6|8", new HashMap<>()); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals(output1.get(0), "result=0.17453292519943295"); - // case2: radians(18.97) - List output2 = processor.transform("18.97|4|6|8", new HashMap<>()); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals(output2.get(0), "result=0.33108895910332425"); - } - - @Test - public void testLog10Function() throws Exception { - String transformSql = "select log10(numeric1) from source"; - TransformConfig config = new TransformConfig(transformSql); - // case1: log10(1) - TransformProcessor processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - List output1 = processor.transform("1|4|6|8", new HashMap<>()); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals(output1.get(0), "result=0.0"); - // case2: log10(1000) - List output2 = processor.transform("1000|4|6|8", new HashMap<>()); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals(output2.get(0), "result=3.0"); - } - - @Test - public void testLog2Function() throws Exception { - String transformSql = "select log2(numeric1) from source"; - TransformConfig config = new TransformConfig(transformSql); - // case1: log2(1) - TransformProcessor processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - List output1 = processor.transform("1|4|6|8", new HashMap<>()); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals(output1.get(0), "result=0.0"); - // case2: log2(32) - List output2 = processor.transform("32|4|6|8", new HashMap<>()); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals(output2.get(0), "result=5.0"); - } - - @Test - public void testLogFunction() throws Exception { - String transformSql1 = "select log(numeric1) from source"; - TransformConfig config1 = new TransformConfig(transformSql1); - // case1: ln(1) - TransformProcessor processor1 = TransformProcessor - .create(config1, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - List output1 = processor1.transform("1|4|6|8", new HashMap<>()); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals(output1.get(0), "result=0.0"); - String transformSql2 = "select log(numeric1, numeric2) from source"; - TransformConfig config2 = new TransformConfig(transformSql2); - // case2: log2(8) - TransformProcessor processor2 = TransformProcessor - .create(config2, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - List output2 = processor2.transform("2|8|6|8", new HashMap<>()); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals(output2.get(0), "result=3.0"); - // case3: log10(100) - TransformProcessor processor3 = TransformProcessor - .create(config2, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - List output3 = processor3.transform("10|100|6|8", new HashMap<>()); - Assert.assertEquals(1, output3.size()); - Assert.assertEquals(output3.get(0), "result=2.0"); - } - - @Test - public void testExpFunction() throws Exception { - String transformSql = "select exp(numeric1) from source"; - TransformConfig config = new TransformConfig(transformSql); - // case1: e^0 - TransformProcessor processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - List output1 = processor.transform("0|4|6|8", new HashMap<>()); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals(output1.get(0), "result=1.0"); - // case2: e^2 - List output2 = processor.transform("2|4|6|8", new HashMap<>()); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals(output2.get(0), "result=7.38905609893065"); - } - - @Test - public void testCeilFunction() throws Exception { - String transformSql = "select ceil(numeric1) from source"; - TransformConfig config = new TransformConfig(transformSql); - // case1: ceil(1.23) - TransformProcessor processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - List output1 = processor.transform("1.23|4|6|8", new HashMap<>()); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals(output1.get(0), "result=2.0"); - // case2: ceil(3) - List output2 = processor.transform("3|-2|6|8", new HashMap<>()); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals(output2.get(0), "result=3.0"); - // case3: ceil(-5.67) - List output3 = processor.transform("-5.67|0.5|6|8", new HashMap<>()); - Assert.assertEquals(1, output3.size()); - Assert.assertEquals(output3.get(0), "result=-5.0"); - } - - @Test - public void testFloorFunction() throws Exception { - String transformSql = "select floor(numeric1) from source"; - TransformConfig config = new TransformConfig(transformSql); - // case1: floor(1.23) - TransformProcessor processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - List output1 = processor.transform("1.23|4|6|8", new HashMap<>()); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals(output1.get(0), "result=1.0"); - // case2: floor(3) - List output2 = processor.transform("3|-2|6|8", new HashMap<>()); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals(output2.get(0), "result=3.0"); - // case3: floor(-5.67) - List output3 = processor.transform("-5.67|0.5|6|8", new HashMap<>()); - Assert.assertEquals(1, output3.size()); - Assert.assertEquals(output3.get(0), "result=-6.0"); - } - - @Test - public void testSinFunction() throws Exception { - String transformSql = "select sin(numeric1) from source"; - TransformConfig config = new TransformConfig(transformSql); - TransformProcessor processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - // case: sin(0) - List output1 = processor.transform("0|4|6|8", new HashMap<>()); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals(output1.get(0), "result=0.0"); - } - - @Test - public void testSinhFunction() throws Exception { - String transformSql = "select sinh(numeric1) from source"; - TransformConfig config = new TransformConfig(transformSql); - TransformProcessor processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - // case1: sinh(0) - List output1 = processor.transform("0|4|6|8", new HashMap<>()); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals(output1.get(0), "result=0.0"); - // case2: sinh(1) - List output2 = processor.transform("1|4|6|8", new HashMap<>()); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals(output2.get(0), "result=1.1752011936438014"); - // case3: sinh(2) - List output3 = processor.transform("2|4|6|8", new HashMap<>()); - Assert.assertEquals(1, output3.size()); - Assert.assertEquals(output3.get(0), "result=3.626860407847019"); - } - - @Test - public void testCosFunction() throws Exception { - String transformSql = "select cos(numeric1) from source"; - TransformConfig config = new TransformConfig(transformSql); - TransformProcessor processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - // case: cos(0) - List output1 = processor.transform("0|4|6|8", new HashMap<>()); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals(output1.get(0), "result=1.0"); - } - - @Test - public void testAcosFunction() throws Exception { - String transformSql = "select acos(numeric1) from source"; - TransformConfig config = new TransformConfig(transformSql); - TransformProcessor processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - // case1: acos(1) - List output1 = processor.transform("1|4|6|8", new HashMap<>()); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals(output1.get(0), "result=0.0"); - // case2: acos(0) - List output2 = processor.transform("0|4|6|8", new HashMap<>()); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals(output2.get(0), "result=1.5707963267948966"); - // case3: acos(-1) - List output3 = processor.transform("-1|4|6|8", new HashMap<>()); - Assert.assertEquals(1, output3.size()); - Assert.assertEquals(output3.get(0), "result=3.141592653589793"); - } - - @Test - public void testTanFunction() throws Exception { - String transformSql = "select tan(numeric1) from source"; - TransformConfig config = new TransformConfig(transformSql); - TransformProcessor processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - // case: tan(0) - List output1 = processor.transform("0|4|6|8", new HashMap<>()); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals(output1.get(0), "result=0.0"); - // case: tan(1) - List output2 = processor.transform("1|4|6|8", new HashMap<>()); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals(output2.get(0), "result=1.5574077246549023"); - // case: tan(2) - List output3 = processor.transform("2|4|6|8", new HashMap<>()); - Assert.assertEquals(1, output3.size()); - Assert.assertEquals(output3.get(0), "result=-2.185039863261519"); - } - - @Test - public void testBinFunction() throws Exception { - String transformSql1 = "select bin(numeric1) from source"; - TransformConfig config1 = new TransformConfig(transformSql1); - TransformProcessor processor1 = TransformProcessor - .create(config1, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - // case: bin(4) - List output1 = processor1.transform("4|5|6|8", new HashMap<>()); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals(output1.get(0), "result=100"); - String transformSql2 = "select bin() from source"; - TransformConfig config2 = new TransformConfig(transformSql2); - TransformProcessor processor2 = TransformProcessor - .create(config2, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - // case: bin() - List output2 = processor2.transform("1|2|3|4", new HashMap<>()); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals(output2.get(0), "result=null"); - } - - @Test - public void testRandFunction() throws Exception { - String transformSql1 = "select rand(numeric1) from source"; - TransformConfig config1 = new TransformConfig(transformSql1); - TransformProcessor processor1 = TransformProcessor - .create(config1, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - // case: rand(1) - List output1 = processor1.transform("1|4|6|8", new HashMap<>()); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals(output1.get(0), "result=" + new Random(1).nextDouble()); - // case: rand(2) - List output2 = processor1.transform("2|4|6|8", new HashMap<>()); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals(output2.get(0), "result=" + new Random(2).nextDouble()); - String transformSql2 = "select rand() from source"; - TransformConfig config2 = new TransformConfig(transformSql2); - TransformProcessor processor2 = TransformProcessor - .create(config2, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - // case: rand() - List output3 = processor2.transform("|||", new HashMap<>()); - Assert.assertEquals(1, output3.size()); - double result = Double.parseDouble(output3.get(0).substring(7)); - Assert.assertTrue(result >= 0.0 && result < 1.0); - } - - @Test - public void testCotFunction() throws Exception { - String transformSql = "select cot(numeric1) from source"; - TransformConfig config = new TransformConfig(transformSql); - TransformProcessor processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - - // case1: cot(1) - List output1 = processor.transform("1|4|6|8"); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals(output1.get(0), "result=0.6420926159343306"); - - // case2: cot(0.5) - List output2 = processor.transform("0.5|4|6|8"); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals(output2.get(0), "result=1.830487721712452"); - - // case3: cot(-1) - List output3 = processor.transform("-1|4|6|8"); - Assert.assertEquals(1, output3.size()); - Assert.assertEquals(output3.get(0), "result=-0.6420926159343306"); - } - - @Test - public void testTanhFunction() throws Exception { - String transformSql = "select tanh(numeric1) from source"; - TransformConfig config = new TransformConfig(transformSql); - TransformProcessor processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - - // case1: tanh(1) - List output1 = processor.transform("1|4|6|8"); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals(output1.get(0), "result=0.7615941559557649"); - - // case2: tanh(0) - List output2 = processor.transform("0|4|6|8"); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals(output2.get(0), "result=0.0"); - - // case3: tanh(-1) - List output3 = processor.transform("-1|4|6|8"); - Assert.assertEquals(1, output3.size()); - Assert.assertEquals(output3.get(0), "result=-0.7615941559557649"); - } - - @Test - public void testCoshFunction() throws Exception { - String transformSql = "select cosh(numeric1) from source"; - TransformConfig config = new TransformConfig(transformSql); - TransformProcessor processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - - // case1: cosh(1) - List output1 = processor.transform("1|4|6|8"); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals(output1.get(0), "result=1.543080634815244"); - - // case2: cosh(0) - List output2 = processor.transform("0|4|6|8"); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals(output2.get(0), "result=1.0"); - - // case3: cosh(-1) - List output3 = processor.transform("-1|4|6|8"); - Assert.assertEquals(1, output3.size()); - Assert.assertEquals(output3.get(0), "result=1.543080634815244"); - } - - @Test - public void testAsinFunction() throws Exception { - String transformSql = "select asin(numeric1) from source"; - TransformConfig config = new TransformConfig(transformSql); - TransformProcessor processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - - // case1: asin(0.5) - List output1 = processor.transform("0.5|4|6|8"); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals(output1.get(0), "result=0.5235987755982989"); - - // case2: asin(0) - List output2 = processor.transform("0|4|6|8"); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals(output2.get(0), "result=0.0"); - - // case3: asin(-0.5) - List output3 = processor.transform("-0.5|4|6|8"); - Assert.assertEquals(1, output3.size()); - Assert.assertEquals(output3.get(0), "result=-0.5235987755982989"); - } - - @Test - public void testAtanFunction() throws Exception { - String transformSql = "select atan(numeric1) from source"; - TransformConfig config = new TransformConfig(transformSql); - TransformProcessor processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - - // case1: atan(1) - List output1 = processor.transform("1|4|6|8"); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals(output1.get(0), "result=0.7853981633974483"); - - // case2: atan(0) - List output2 = processor.transform("0|4|6|8"); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals(output2.get(0), "result=0.0"); - - // case3: atan(-1) - List output3 = processor.transform("-1|4|6|8"); - Assert.assertEquals(1, output3.size()); - Assert.assertEquals(output3.get(0), "result=-0.7853981633974483"); - } - - @Test - public void testAtan2Function() throws Exception { - String transformSql = "select atan2(numeric1, numeric2) from source"; - TransformConfig config = new TransformConfig(transformSql); - TransformProcessor processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - - // case1: atan2(1, 1) - List output1 = processor.transform("1|1|6|8"); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals(output1.get(0), "result=0.7853981633974483"); - - // case2: atan2(1, 0) - List output2 = processor.transform("1|0|6|8"); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals(output2.get(0), "result=1.5707963267948966"); - - // case3: atan2(0, -1) - List output3 = processor.transform("0|-1|6|8"); - Assert.assertEquals(1, output3.size()); - Assert.assertEquals(output3.get(0), "result=3.141592653589793"); - } - - @Test - public void testHexFunction() throws Exception { - String transformSql1 = "select hex(numeric1) from source"; - TransformConfig config1 = new TransformConfig(transformSql1); - TransformProcessor processor1 = TransformProcessor - .create(config1, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - // case: hex(1007) - List output1 = processor1.transform("1007|4|6|8", new HashMap<>()); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals(output1.get(0), "result=3EF"); - // case: hex(3.14) - List output2 = processor1.transform("3.14|4|6|8", new HashMap<>()); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals(output2.get(0), "result=3"); - // case: hex(3.141592653589793) - List output3 = processor1.transform("3.141592653589793|4|6|8", new HashMap<>()); - Assert.assertEquals(1, output3.size()); - Assert.assertEquals(output3.get(0), "result=3"); - // case: hex(-9223372036854775808) - List output4 = processor1.transform("-9223372036854775808|4|6|8", new HashMap<>()); - Assert.assertEquals(1, output4.size()); - Assert.assertEquals(output4.get(0), "result=8000000000000000"); - // case: hex(abc) - List output5 = processor1.transform("abc|4|6|8", new HashMap<>()); - Assert.assertEquals(1, output5.size()); - Assert.assertEquals(output5.get(0), "result=616263"); - } - - @Test - public void testPiFunction() throws Exception { - String transformSql1 = "select pi() from source"; - TransformConfig config1 = new TransformConfig(transformSql1); - TransformProcessor processor1 = TransformProcessor - .create(config1, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - // case: pi() - List output1 = processor1.transform("1007|4|6|8", new HashMap<>()); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals(output1.get(0), "result=3.141592653589793"); - } -} diff --git a/inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/TestTransformStringFunctionsProcessor.java b/inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/TestTransformStringFunctionsProcessor.java deleted file mode 100644 index f099d728dc..0000000000 --- a/inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/TestTransformStringFunctionsProcessor.java +++ /dev/null @@ -1,759 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.inlong.sdk.transform.process; - -import org.apache.inlong.sdk.transform.decode.SourceDecoderFactory; -import org.apache.inlong.sdk.transform.encode.SinkEncoderFactory; -import org.apache.inlong.sdk.transform.pojo.CsvSourceInfo; -import org.apache.inlong.sdk.transform.pojo.FieldInfo; -import org.apache.inlong.sdk.transform.pojo.KvSinkInfo; -import org.apache.inlong.sdk.transform.pojo.TransformConfig; - -import org.junit.Assert; -import org.junit.Test; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -/** - * TestTransformStringFunctionsProcessor - * description: test the string functions in transform processor - */ -public class TestTransformStringFunctionsProcessor { - - private static final List srcFields = new ArrayList<>(); - private static final List dstFields = new ArrayList<>(); - private static final CsvSourceInfo csvSource; - private static final KvSinkInfo kvSink; - - static { - for (int i = 1; i < 4; i++) { - FieldInfo field = new FieldInfo(); - field.setName("string" + i); - srcFields.add(field); - } - for (int i = 1; i < 4; i++) { - FieldInfo field = new FieldInfo(); - field.setName("numeric" + i); - srcFields.add(field); - } - FieldInfo field = new FieldInfo(); - field.setName("result"); - dstFields.add(field); - csvSource = new CsvSourceInfo("UTF-8", '|', '\\', srcFields); - kvSink = new KvSinkInfo("UTF-8", dstFields); - } - - @Test - public void testLowerFunction() throws Exception { - String transformSql1 = "select lower(string1) from source"; - TransformConfig config1 = new TransformConfig(transformSql1); - TransformProcessor processor1 = TransformProcessor - .create(config1, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - // case1: lower("ApPlE") - List output1 = processor1.transform("ApPlE|banana|cloud|2|1|3", new HashMap<>()); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals(output1.get(0), "result=apple"); - - // case2: lower("") - List output2 = processor1.transform("|banana|cloud|2|1|3", new HashMap<>()); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals(output2.get(0), "result="); - - // case3: lower(null) - String transformSql2 = "select lower(xxd) from source"; - TransformConfig config2 = new TransformConfig(transformSql2); - TransformProcessor processor2 = TransformProcessor - .create(config2, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - List output3 = processor2.transform("ApPlE|banana|cloud|2|1|3", new HashMap<>()); - Assert.assertEquals(1, output3.size()); - Assert.assertEquals(output3.get(0), "result=null"); - } - - @Test - public void testUpperFunction() throws Exception { - String transformSql1 = "select upper(string1) from source"; - TransformConfig config1 = new TransformConfig(transformSql1); - TransformProcessor processor1 = TransformProcessor - .create(config1, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - // case1: upper("ApPlE") - List output1 = processor1.transform("ApPlE|banana|cloud|2|1|3", new HashMap<>()); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals(output1.get(0), "result=APPLE"); - - // case2: upper("") - List output2 = processor1.transform("|banana|cloud|2|1|3", new HashMap<>()); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals(output2.get(0), "result="); - - // case3: upper(null) - String transformSql2 = "select upper(xxd) from source"; - TransformConfig config2 = new TransformConfig(transformSql2); - TransformProcessor processor2 = TransformProcessor - .create(config2, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - List output3 = processor2.transform("ApPlE|banana|cloud|2|1|3", new HashMap<>()); - Assert.assertEquals(1, output3.size()); - Assert.assertEquals(output3.get(0), "result=null"); - } - - @Test - public void testSubstringFunction() throws Exception { - String transformSql1 = "select substring(string2, numeric1) from source"; - TransformConfig config1 = new TransformConfig(transformSql1); - TransformProcessor processor1 = TransformProcessor - .create(config1, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - // case1: substring('banana', 2) - List output1 = processor1.transform("apple|banana|cloud|2|1|3", new HashMap<>()); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals(output1.get(0), "result=anana"); - String transformSql2 = "select substring(string1, numeric1, numeric3) from source"; - TransformConfig config2 = new TransformConfig(transformSql2); - TransformProcessor processor2 = TransformProcessor - .create(config2, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - // case2: substring('apple', 1, 3) - List output2 = processor2.transform("apple|banana|cloud|1|1|3", new HashMap<>()); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals(output2.get(0), "result=app"); - // case3: substring('apple', 2, 9) - List output3 = processor2.transform("apple|banana|cloud|2|1|9", new HashMap<>()); - Assert.assertEquals(1, output3.size()); - Assert.assertEquals(output3.get(0), "result=pple"); - } - - @Test - public void testLocateFunction() throws Exception { - String transformSql1 = "select locate(string1, string2) from source"; - TransformConfig config1 = new TransformConfig(transformSql1); - TransformProcessor processor1 = TransformProcessor - .create(config1, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - // case1: locate('app', 'apple') - List output1 = processor1.transform("app|apple|cloud|2|1|3", new HashMap<>()); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals(output1.get(0), "result=1"); - // case2: locate('ape', 'apple') - List output2 = processor1.transform("ape|apple|cloud|2|1|3", new HashMap<>()); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals(output2.get(0), "result=0"); - String transformSql2 = "select locate(string1, string2, numeric1) from source"; - TransformConfig config2 = new TransformConfig(transformSql2); - TransformProcessor processor2 = TransformProcessor - .create(config2, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - // case3: locate('app', 'appapp', 2) - List output3 = processor2.transform("app|appapp|cloud|2|1|3", new HashMap<>()); - Assert.assertEquals(1, output3.size()); - Assert.assertEquals(output3.get(0), "result=4"); - // case4: locate('app', 'appape', 2) - List output4 = processor2.transform("app|appape|cloud|2|1|9", new HashMap<>()); - Assert.assertEquals(1, output4.size()); - Assert.assertEquals(output4.get(0), "result=0"); - // case5: locate('app', null) - List output5 = processor1.transform("app", new HashMap<>()); - Assert.assertEquals(1, output5.size()); - Assert.assertEquals(output5.get(0), "result=null"); - } - - @Test - public void testSpaceFunction() throws Exception { - String transformSql = null, data = null; - TransformConfig config = null; - TransformProcessor processor = null; - List output = null; - - transformSql = "select space(numeric1) from source"; - config = new TransformConfig(transformSql); - processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - // case1: space(5) - data = "hello world|banana|cloud|5|3|3"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result= ", output.get(0)); - - // case2: space(-1) - data = "hello world|banana|cloud|-1|3|3"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=", output.get(0)); - - // case3: space(null) - transformSql = "select space(xxd) from source"; - config = new TransformConfig(transformSql); - processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - data = "hello world|banana|cloud|5|3|3"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=null", output.get(0)); - - } - - @Test - public void testReplicateFunction() throws Exception { - String transformSql1 = "select replicate(string1, numeric1) from source"; - TransformConfig config1 = new TransformConfig(transformSql1); - TransformProcessor processor1 = TransformProcessor - .create(config1, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - // case1: replicate('apple', 2) - List output1 = processor1.transform("apple|banana|cloud|2|1|3", new HashMap<>()); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals(output1.get(0), "result=appleapple"); - String transformSql2 = "select replicate(string2, numeric2) from source"; - TransformConfig config2 = new TransformConfig(transformSql2); - TransformProcessor processor2 = TransformProcessor - .create(config2, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - // case2: replicate('banana', 3) - List output2 = processor2.transform("apple|banana|cloud|1|3|3", new HashMap<>()); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals(output2.get(0), "result=bananabananabanana"); - // case3: replicate('banana', 1) - List output3 = processor2.transform("apple|banana|cloud|1|1|3", new HashMap<>()); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals(output3.get(0), "result=banana"); - // case3: replicate('cloud', 0) - String transformSql3 = "select replicate(string3, numeric3) from source"; - TransformConfig config3 = new TransformConfig(transformSql3); - TransformProcessor processor3 = TransformProcessor - .create(config3, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - List output4 = processor3.transform("apple|banana|cloud|2|1|0", new HashMap<>()); - Assert.assertEquals(1, output4.size()); - Assert.assertEquals(output4.get(0), "result="); - } - - @Test - public void testTrimFunction() throws Exception { - String transformSql1 = "select trim(string1) from source"; - TransformConfig config1 = new TransformConfig(transformSql1); - TransformProcessor processor1 = TransformProcessor - .create(config1, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - // case1: trim(' in long') - List output1 = processor1.transform(" in long|in long | in long ", new HashMap<>()); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals(output1.get(0), "result=in long"); - String transformSql2 = "select trim(string2) from source"; - TransformConfig config2 = new TransformConfig(transformSql2); - TransformProcessor processor2 = TransformProcessor - .create(config2, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - // case2: trim('in long ') - List output2 = processor2.transform(" in long|in long | in long ", new HashMap<>()); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals(output2.get(0), "result=in long"); - String transformSql3 = "select trim(string2) from source"; - TransformConfig config3 = new TransformConfig(transformSql2); - TransformProcessor processor3 = TransformProcessor - .create(config2, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - // case3: trim(' in long ') - List output3 = processor3.transform(" in long|in long | in long ", new HashMap<>()); - Assert.assertEquals(1, output3.size()); - Assert.assertEquals(output3.get(0), "result=in long"); - } - - @Test - public void testReverseFunction() throws Exception { - String transformSql1 = "select reverse(string1) from source"; - TransformConfig config1 = new TransformConfig(transformSql1); - TransformProcessor processor1 = TransformProcessor - .create(config1, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - // case1: reverse('apple') - List output1 = processor1.transform("apple|banana|cloud|2|1|3", new HashMap<>()); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals(output1.get(0), "result=elppa"); - // case2: reverse('ban ana ') - String transformSql2 = "select reverse(string2) from source"; - TransformConfig config2 = new TransformConfig(transformSql2); - TransformProcessor processor2 = TransformProcessor - .create(config2, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - List output2 = processor2.transform("apple|ban ana |cloud|2|1|3", new HashMap<>()); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals(output2.get(0), "result= ana nab"); - // case3: reverse(12345) - List output3 = processor1.transform("12345|banana|cloud|2|1|3", new HashMap<>()); - Assert.assertEquals(1, output3.size()); - Assert.assertEquals(output3.get(0), "result=54321"); - // case4: reverse(null) - List output4 = processor1.transform("|banana|cloud|2|1|3", new HashMap<>()); - Assert.assertEquals(1, output4.size()); - Assert.assertEquals(output4.get(0), "result="); - } - - @Test - public void testToBase64Function() throws Exception { - String transformSql = "select to_base64(string1) from source"; - TransformConfig config = new TransformConfig(transformSql); - TransformProcessor processor1 = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - // to_base64('app-fun') - List output1 = processor1.transform("app-fun", new HashMap<>()); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals(output1.get(0), "result=YXBwLWZ1bg=="); - // to_base64('hello world') - List output2 = processor1.transform("hello world", new HashMap<>()); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals(output2.get(0), "result=aGVsbG8gd29ybGQ="); - } - - @Test - public void testLengthFunction() throws Exception { - String transformSql = "select length(string1) from source"; - TransformConfig config = new TransformConfig(transformSql); - TransformProcessor processor1 = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - // case1: length('hello world') - List output1 = processor1.transform("hello world|apple|cloud|2|1|3", new HashMap<>()); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals("result=11", output1.get(0)); - - transformSql = "select length(xxd) from source"; - config = new TransformConfig(transformSql); - processor1 = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - // case2: length(null) - output1 = processor1.transform("hello world|apple|cloud|2|1|3", new HashMap<>()); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals("result=null", output1.get(0)); - } - - @Test - public void testReplaceFunction() throws Exception { - String transformSql = "select replace(string1, string2, string3) from source"; - TransformConfig config = new TransformConfig(transformSql); - TransformProcessor processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - // case1: replace('hooray', 'oray', 'lly') - List output1 = processor.transform("hooray|oray|lly", new HashMap<>()); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals(output1.get(0), "result=holly"); - // case2: replace('hooray', 'hook', 'hoor') - List output2 = processor.transform("hooray|hook|hoor", new HashMap<>()); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals(output2.get(0), "result=hooray"); - // case3: replace('Hello World', 'World', '') - List output3 = processor.transform("Hello World|World|", new HashMap<>()); - Assert.assertEquals(1, output3.size()); - Assert.assertEquals(output3.get(0), "result=Hello "); - // case4: replace('Hello World', '', 'J') - List output4 = processor.transform("Hello World||J", new HashMap<>()); - Assert.assertEquals(1, output4.size()); - Assert.assertEquals(output4.get(0), "result=JHJeJlJlJoJ JWJoJrJlJdJ"); - // case5: replace('', '', '') - List output5 = processor.transform("||", new HashMap<>()); - Assert.assertEquals(1, output5.size()); - Assert.assertEquals(output5.get(0), "result="); - // case6: replace('abababab', 'ab', 'cd') - List output6 = processor.transform("abababab|ab|cd", new HashMap<>()); - Assert.assertEquals(1, output6.size()); - Assert.assertEquals(output6.get(0), "result=cdcdcdcd"); - // case7: replace('aaa', 'aa', 'd') - List output7 = processor.transform("aaa|aa|d", new HashMap<>()); - Assert.assertEquals(1, output7.size()); - Assert.assertEquals(output7.get(0), "result=da"); - } - - @Test - public void testStrcmpFunction() throws Exception { - String transformSql = null, data = null; - TransformConfig config = null; - TransformProcessor processor = null; - List output = null; - - transformSql = "select strcmp(string1,string2) from source"; - config = new TransformConfig(transformSql); - processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - // case1: strcmp('hello world','banana') - data = "hello world|banana|cloud|5|3|3"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=1", output.get(0)); - - // case2: strcmp('hello world','hello world') - data = "hello world|hello world|cloud|5|3|3"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=0", output.get(0)); - - // case3: strcmp('hello world','zzzzz') - data = "hello world|zzzzz|cloud|5|3|3"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=-1", output.get(0)); - - // case4: strcmp('hello world',null) - transformSql = "select strcmp(string1,xxd) from source"; - config = new TransformConfig(transformSql); - processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - data = "hello world|zzzzz|cloud|5|3|3"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=null", output.get(0)); - } - - @Test - public void testRpadFunction() throws Exception { - String transformSql = null, data = null; - TransformConfig config = null; - TransformProcessor processor = null; - List output = null; - - transformSql = "select rpad(string1,numeric1,string2) from source"; - config = new TransformConfig(transformSql); - processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - // case1: rpad('he',7,'xxd') - data = "he|xxd|cloud|7|3|3"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=hexxdxx", output.get(0)); - - // case2: rpad('he',1,'xxd') - data = "he|xxd|cloud|1|3|3"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=h", output.get(0)); - - // case3: rpad('he',1,'') - data = "he||cloud|1|3|3"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=h", output.get(0)); - - // case4: rpad('he',-1,'xxd') - data = "he|xxd|cloud|-1|3|3"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=null", output.get(0)); - - // case5: rpad(null,5,'xxd') - transformSql = "select rpad(xxd,numeric1,string2) from source"; - config = new TransformConfig(transformSql); - processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - data = "he|xxd|cloud|5|3|3"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=null", output.get(0)); - - // case6: rpad('he',null,'xxd') - transformSql = "select rpad(string1,xxd,string2) from source"; - config = new TransformConfig(transformSql); - processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - data = "he|xxd|cloud|5|3|3"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=null", output.get(0)); - - // case7: rpad('he',5,null) - transformSql = "select rpad(string1,numeric1,xxd) from source"; - config = new TransformConfig(transformSql); - processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - data = "he|xxd|cloud|5|3|3"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=null", output.get(0)); - } - - @Test - public void testLpadFunction() throws Exception { - String transformSql = null, data = null; - TransformConfig config = null; - TransformProcessor processor = null; - List output = null; - - transformSql = "select lpad(string1,numeric1,string2) from source"; - config = new TransformConfig(transformSql); - processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - // case1: lpad('he',7,'xxd') - data = "he|xxd|cloud|7|3|3"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=xxdxxhe", output.get(0)); - - // case2: lpad('he',1,'xxd') - data = "he|xxd|cloud|1|3|3"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=h", output.get(0)); - - // case3: lpad('he',1,'') - data = "he||cloud|1|3|3"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=h", output.get(0)); - - // case4: lpad('he',-1,'xxd') - data = "he|xxd|cloud|-1|3|3"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=null", output.get(0)); - - // case5: lpad(null,5,'xxd') - transformSql = "select lpad(xxd,numeric1,string2) from source"; - config = new TransformConfig(transformSql); - processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - data = "he|xxd|cloud|5|3|3"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=null", output.get(0)); - - // case6: lpad('he',null,'xxd') - transformSql = "select lpad(string1,xxd,string2) from source"; - config = new TransformConfig(transformSql); - processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - data = "he|xxd|cloud|5|3|3"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=null", output.get(0)); - - // case7: lpad('he',5,null) - transformSql = "select lpad(string1,numeric1,xxd) from source"; - config = new TransformConfig(transformSql); - processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - data = "he|xxd|cloud|5|3|3"; - output = processor.transform(data, new HashMap<>()); - Assert.assertEquals(1, output.size()); - Assert.assertEquals("result=null", output.get(0)); - } - - @Test - public void testRightFunction() throws Exception { - String transformSql = "select right(string1,numeric1) from source"; - TransformConfig config = new TransformConfig(transformSql); - TransformProcessor processor1 = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - // case1: right('hello world',5) - String data = "hello world|banana|cloud|5|3|3"; - List output1 = processor1.transform(data, new HashMap<>()); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals("result=world", output1.get(0)); - - // case2: right('hello world',-15) - data = "hello world|banana|cloud|-15|3|3"; - output1 = processor1.transform(data, new HashMap<>()); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals("result=", output1.get(0)); - - // case3: right('hello world',100) - data = "hello world|banana|cloud|100|3|3"; - output1 = processor1.transform(data, new HashMap<>()); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals("result=hello world", output1.get(0)); - - // case4: right(null,5) - transformSql = "select right(xxd,numeric1) from source"; - config = new TransformConfig(transformSql); - processor1 = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - data = "hello world|banana|cloud|5|3|3"; - output1 = processor1.transform(data, new HashMap<>()); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals("result=null", output1.get(0)); - - // case5: right('hello world',null) - transformSql = "select right(string1,xxd) from source"; - config = new TransformConfig(transformSql); - processor1 = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - data = "hello world|banana|cloud|5|3|3"; - output1 = processor1.transform(data, new HashMap<>()); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals("result=null", output1.get(0)); - } - - @Test - public void testLeftFunction() throws Exception { - String transformSql = "select left(string1,numeric1) from source"; - TransformConfig config = new TransformConfig(transformSql); - TransformProcessor processor1 = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - // case1: left('hello world',5) - String data = "hello world|banana|cloud|5|3|3"; - List output1 = processor1.transform(data, new HashMap<>()); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals("result=hello", output1.get(0)); - - // case2: left('hello world',-15) - data = "hello world|banana|cloud|-15|3|3"; - output1 = processor1.transform(data, new HashMap<>()); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals("result=", output1.get(0)); - - // case3: left('hello world',100) - data = "hello world|banana|cloud|100|3|3"; - output1 = processor1.transform(data, new HashMap<>()); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals("result=hello world", output1.get(0)); - - // case4: left(null,5) - transformSql = "select left(xxd,numeric1) from source"; - config = new TransformConfig(transformSql); - processor1 = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - data = "hello world|banana|cloud|5|3|3"; - output1 = processor1.transform(data, new HashMap<>()); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals("result=null", output1.get(0)); - - // case5: left('hello world',null) - transformSql = "select left(string1,xxd) from source"; - config = new TransformConfig(transformSql); - processor1 = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - data = "hello world|banana|cloud|5|3|3"; - output1 = processor1.transform(data, new HashMap<>()); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals("result=null", output1.get(0)); - } - - @Test - public void testTranslateFunction() throws Exception { - String transformSql1 = "select translate(string1, string2, string3) from source"; - TransformConfig config1 = new TransformConfig(transformSql1); - TransformProcessor processor1 = TransformProcessor - .create(config1, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - // case1: translate("hello word!", "el", "EL") - List output1 = processor1.transform("hello word!|el|EL|2|1|3", new HashMap<>()); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals(output1.get(0), "result=hELLo word!"); - String transformSql2 = "select translate(string3, string1, string2) from source"; - TransformConfig config2 = new TransformConfig(transformSql2); - TransformProcessor processor2 = TransformProcessor - .create(config2, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - // case2: translate("hello word!", "el", "EL") - List output2 = processor2.transform("el|EL|hello word!|1|1|3", new HashMap<>()); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals(output2.get(0), "result=hELLo word!"); - // case3: translate('ApaCHe Inlong', CH, ch) - List output3 = processor2.transform("CH|ch|ApaCHe Inlong|2|1|9", new HashMap<>()); - Assert.assertEquals(1, output3.size()); - Assert.assertEquals(output3.get(0), "result=Apache Inlong"); - } - - @Test - public void testInsertFunction() throws Exception { - String transformSql1 = "select insert(string1, numeric1, numeric2, string2) from source"; - TransformConfig config1 = new TransformConfig(transformSql1); - TransformProcessor processor1 = TransformProcessor - .create(config1, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - - // case1: insert('12345678', 3, 4, 'word') -> '12word78' - List output1 = processor1.transform("12345678|word|cloud|3|4|0", new HashMap<>()); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals("result=12word78", output1.get(0)); - - // case2: insert('12345678', -1, 4, 'word') -> '12345678' - List output2 = processor1.transform("12345678|word|cloud|-1|4|0", new HashMap<>()); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals("result=12345678", output2.get(0)); - - // case3: insert('12345678', 3, 100, 'word') -> '12word' - List output3 = processor1.transform("12345678|word|cloud|3|100|0", new HashMap<>()); - Assert.assertEquals(1, output3.size()); - Assert.assertEquals("result=12word", output3.get(0)); - - // case4: insert('', 3, 4, 'word') -> '' - List output4 = processor1.transform("|word|cloud|3|4|0", new HashMap<>()); - Assert.assertEquals(1, output4.size()); - Assert.assertEquals("result=", output4.get(0)); - - // case5: insert('12345678', 3, 4, '') -> '1278' - List output5 = processor1.transform("12345678||cloud|3|4|0", new HashMap<>()); - Assert.assertEquals(1, output5.size()); - Assert.assertEquals("result=1278", output5.get(0)); - } - - @Test - public void testContainsFunction() throws Exception { - String transformSql = "select contains(string1, string2) from source"; - TransformConfig config = new TransformConfig(transformSql); - TransformProcessor processor = TransformProcessor - .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), - SinkEncoderFactory.createKvEncoder(kvSink)); - // case1: contains('Transform SQL', 'SQL') - List output1 = processor.transform("Transform SQL|SQL", new HashMap<>()); - Assert.assertEquals(1, output1.size()); - Assert.assertEquals(output1.get(0), "result=true"); - // case2: contains('', 'SQL') - List output2 = processor.transform("|SQL", new HashMap<>()); - Assert.assertEquals(1, output2.size()); - Assert.assertEquals(output2.get(0), "result=false"); - // case3: contains('Transform SQL', '') - List output3 = processor.transform("Transform SQL|", new HashMap<>()); - Assert.assertEquals(1, output3.size()); - Assert.assertEquals(output3.get(0), "result=true"); - // case4: contains('Transform SQL', 'Transformer') - List output4 = processor.transform("Transform SQL|Transformer", new HashMap<>()); - Assert.assertEquals(1, output4.size()); - Assert.assertEquals(output4.get(0), "result=false"); - // case5: contains('Transform SQL', 'm S') - List output5 = processor.transform("Transform SQL|m S", new HashMap<>()); - Assert.assertEquals(1, output5.size()); - Assert.assertEquals(output5.get(0), "result=true"); - // case6: contains('', '') - List output6 = processor.transform("|", new HashMap<>()); - Assert.assertEquals(1, output6.size()); - Assert.assertEquals(output6.get(0), "result=true"); - } -} diff --git a/inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/function/arithmetic/TestArithmeticFunctionsProcessor.java b/inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/function/arithmetic/TestArithmeticFunctionsProcessor.java index 69b5f25e01..58faece12b 100644 --- a/inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/function/arithmetic/TestArithmeticFunctionsProcessor.java +++ b/inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/function/arithmetic/TestArithmeticFunctionsProcessor.java @@ -31,7 +31,9 @@ TestLogFunction.class, TestLog10Function.class, TestMd5Function.class, TestModuloFunction.class, TestPiFunction.class, TestPowerFunction.class, TestRadiansFunction.class, TestRandFunction.class, TestRoundFunction.class, TestSha2Function.class, TestShaFunction.class, TestSignFunction.class, - TestSinFunction.class, TestSinhFunction.class, TestSqrtFunction.class, TestTanFunction.class + TestSinFunction.class, TestSinhFunction.class, TestSqrtFunction.class, TestTanFunction.class, + TestAsinFunction.class, TestAtanFunction.class, TestAtan2Function.class, TestCoshFunction.class, + TestCoshFunction.class, TestTanhFunction.class }) public class TestArithmeticFunctionsProcessor { } diff --git a/inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/function/arithmetic/TestAsinFunction.java b/inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/function/arithmetic/TestAsinFunction.java new file mode 100644 index 0000000000..5347e1fc32 --- /dev/null +++ b/inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/function/arithmetic/TestAsinFunction.java @@ -0,0 +1,55 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.inlong.sdk.transform.process.function.arithmetic; + +import org.apache.inlong.sdk.transform.decode.SourceDecoderFactory; +import org.apache.inlong.sdk.transform.encode.SinkEncoderFactory; +import org.apache.inlong.sdk.transform.pojo.TransformConfig; +import org.apache.inlong.sdk.transform.process.TransformProcessor; + +import org.junit.Assert; +import org.junit.Test; + +import java.util.List; + +public class TestAsinFunction extends AbstractFunctionArithmeticTestBase { + + @Test + public void testAsinFunction() throws Exception { + String transformSql = "select asin(numeric1) from source"; + TransformConfig config = new TransformConfig(transformSql); + TransformProcessor processor = TransformProcessor + .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), + SinkEncoderFactory.createKvEncoder(kvSink)); + + // case1: asin(0.5) + List output1 = processor.transform("0.5|4|6|8"); + Assert.assertEquals(1, output1.size()); + Assert.assertEquals(output1.get(0), "result=0.5235987755982989"); + + // case2: asin(0) + List output2 = processor.transform("0|4|6|8"); + Assert.assertEquals(1, output2.size()); + Assert.assertEquals(output2.get(0), "result=0.0"); + + // case3: asin(-0.5) + List output3 = processor.transform("-0.5|4|6|8"); + Assert.assertEquals(1, output3.size()); + Assert.assertEquals(output3.get(0), "result=-0.5235987755982989"); + } +} diff --git a/inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/function/arithmetic/TestAtan2Function.java b/inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/function/arithmetic/TestAtan2Function.java new file mode 100644 index 0000000000..ba77363c87 --- /dev/null +++ b/inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/function/arithmetic/TestAtan2Function.java @@ -0,0 +1,55 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.inlong.sdk.transform.process.function.arithmetic; + +import org.apache.inlong.sdk.transform.decode.SourceDecoderFactory; +import org.apache.inlong.sdk.transform.encode.SinkEncoderFactory; +import org.apache.inlong.sdk.transform.pojo.TransformConfig; +import org.apache.inlong.sdk.transform.process.TransformProcessor; + +import org.junit.Assert; +import org.junit.Test; + +import java.util.List; + +public class TestAtan2Function extends AbstractFunctionArithmeticTestBase { + + @Test + public void testAtan2Function() throws Exception { + String transformSql = "select atan2(numeric1, numeric2) from source"; + TransformConfig config = new TransformConfig(transformSql); + TransformProcessor processor = TransformProcessor + .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), + SinkEncoderFactory.createKvEncoder(kvSink)); + + // case1: atan2(1, 1) + List output1 = processor.transform("1|1|6|8"); + Assert.assertEquals(1, output1.size()); + Assert.assertEquals(output1.get(0), "result=0.7853981633974483"); + + // case2: atan2(1, 0) + List output2 = processor.transform("1|0|6|8"); + Assert.assertEquals(1, output2.size()); + Assert.assertEquals(output2.get(0), "result=1.5707963267948966"); + + // case3: atan2(0, -1) + List output3 = processor.transform("0|-1|6|8"); + Assert.assertEquals(1, output3.size()); + Assert.assertEquals(output3.get(0), "result=3.141592653589793"); + } +} diff --git a/inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/function/arithmetic/TestAtanFunction.java b/inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/function/arithmetic/TestAtanFunction.java new file mode 100644 index 0000000000..9471032633 --- /dev/null +++ b/inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/function/arithmetic/TestAtanFunction.java @@ -0,0 +1,55 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.inlong.sdk.transform.process.function.arithmetic; + +import org.apache.inlong.sdk.transform.decode.SourceDecoderFactory; +import org.apache.inlong.sdk.transform.encode.SinkEncoderFactory; +import org.apache.inlong.sdk.transform.pojo.TransformConfig; +import org.apache.inlong.sdk.transform.process.TransformProcessor; + +import org.junit.Assert; +import org.junit.Test; + +import java.util.List; + +public class TestAtanFunction extends AbstractFunctionArithmeticTestBase { + + @Test + public void testAtanFunction() throws Exception { + String transformSql = "select atan(numeric1) from source"; + TransformConfig config = new TransformConfig(transformSql); + TransformProcessor processor = TransformProcessor + .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), + SinkEncoderFactory.createKvEncoder(kvSink)); + + // case1: atan(1) + List output1 = processor.transform("1|4|6|8"); + Assert.assertEquals(1, output1.size()); + Assert.assertEquals(output1.get(0), "result=0.7853981633974483"); + + // case2: atan(0) + List output2 = processor.transform("0|4|6|8"); + Assert.assertEquals(1, output2.size()); + Assert.assertEquals(output2.get(0), "result=0.0"); + + // case3: atan(-1) + List output3 = processor.transform("-1|4|6|8"); + Assert.assertEquals(1, output3.size()); + Assert.assertEquals(output3.get(0), "result=-0.7853981633974483"); + } +} diff --git a/inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/function/arithmetic/TestCoshFunction.java b/inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/function/arithmetic/TestCoshFunction.java new file mode 100644 index 0000000000..29c20fda37 --- /dev/null +++ b/inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/function/arithmetic/TestCoshFunction.java @@ -0,0 +1,55 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.inlong.sdk.transform.process.function.arithmetic; + +import org.apache.inlong.sdk.transform.decode.SourceDecoderFactory; +import org.apache.inlong.sdk.transform.encode.SinkEncoderFactory; +import org.apache.inlong.sdk.transform.pojo.TransformConfig; +import org.apache.inlong.sdk.transform.process.TransformProcessor; + +import org.junit.Assert; +import org.junit.Test; + +import java.util.List; + +public class TestCoshFunction extends AbstractFunctionArithmeticTestBase { + + @Test + public void testCoshFunction() throws Exception { + String transformSql = "select cosh(numeric1) from source"; + TransformConfig config = new TransformConfig(transformSql); + TransformProcessor processor = TransformProcessor + .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), + SinkEncoderFactory.createKvEncoder(kvSink)); + + // case1: cosh(1) + List output1 = processor.transform("1|4|6|8"); + Assert.assertEquals(1, output1.size()); + Assert.assertEquals(output1.get(0), "result=1.543080634815244"); + + // case2: cosh(0) + List output2 = processor.transform("0|4|6|8"); + Assert.assertEquals(1, output2.size()); + Assert.assertEquals(output2.get(0), "result=1.0"); + + // case3: cosh(-1) + List output3 = processor.transform("-1|4|6|8"); + Assert.assertEquals(1, output3.size()); + Assert.assertEquals(output3.get(0), "result=1.543080634815244"); + } +} diff --git a/inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/function/arithmetic/TestCotFunction.java b/inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/function/arithmetic/TestCotFunction.java new file mode 100644 index 0000000000..28dbf02357 --- /dev/null +++ b/inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/function/arithmetic/TestCotFunction.java @@ -0,0 +1,54 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.inlong.sdk.transform.process.function.arithmetic; + +import org.apache.inlong.sdk.transform.decode.SourceDecoderFactory; +import org.apache.inlong.sdk.transform.encode.SinkEncoderFactory; +import org.apache.inlong.sdk.transform.pojo.TransformConfig; +import org.apache.inlong.sdk.transform.process.TransformProcessor; + +import org.junit.Assert; +import org.junit.Test; + +import java.util.List; +public class TestCotFunction extends AbstractFunctionArithmeticTestBase { + + @Test + public void testCotFunction() throws Exception { + String transformSql = "select cot(numeric1) from source"; + TransformConfig config = new TransformConfig(transformSql); + TransformProcessor processor = TransformProcessor + .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), + SinkEncoderFactory.createKvEncoder(kvSink)); + + // case1: cot(1) + List output1 = processor.transform("1|4|6|8"); + Assert.assertEquals(1, output1.size()); + Assert.assertEquals(output1.get(0), "result=0.6420926159343306"); + + // case2: cot(0.5) + List output2 = processor.transform("0.5|4|6|8"); + Assert.assertEquals(1, output2.size()); + Assert.assertEquals(output2.get(0), "result=1.830487721712452"); + + // case3: cot(-1) + List output3 = processor.transform("-1|4|6|8"); + Assert.assertEquals(1, output3.size()); + Assert.assertEquals(output3.get(0), "result=-0.6420926159343306"); + } +} diff --git a/inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/function/arithmetic/TestTanhFunction.java b/inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/function/arithmetic/TestTanhFunction.java new file mode 100644 index 0000000000..027235951f --- /dev/null +++ b/inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/function/arithmetic/TestTanhFunction.java @@ -0,0 +1,55 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.inlong.sdk.transform.process.function.arithmetic; + +import org.apache.inlong.sdk.transform.decode.SourceDecoderFactory; +import org.apache.inlong.sdk.transform.encode.SinkEncoderFactory; +import org.apache.inlong.sdk.transform.pojo.TransformConfig; +import org.apache.inlong.sdk.transform.process.TransformProcessor; + +import org.junit.Assert; +import org.junit.Test; + +import java.util.List; + +public class TestTanhFunction extends AbstractFunctionArithmeticTestBase { + + @Test + public void testTanhFunction() throws Exception { + String transformSql = "select tanh(numeric1) from source"; + TransformConfig config = new TransformConfig(transformSql); + TransformProcessor processor = TransformProcessor + .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), + SinkEncoderFactory.createKvEncoder(kvSink)); + + // case1: tanh(1) + List output1 = processor.transform("1|4|6|8"); + Assert.assertEquals(1, output1.size()); + Assert.assertEquals(output1.get(0), "result=0.7615941559557649"); + + // case2: tanh(0) + List output2 = processor.transform("0|4|6|8"); + Assert.assertEquals(1, output2.size()); + Assert.assertEquals(output2.get(0), "result=0.0"); + + // case3: tanh(-1) + List output3 = processor.transform("-1|4|6|8"); + Assert.assertEquals(1, output3.size()); + Assert.assertEquals(output3.get(0), "result=-0.7615941559557649"); + } +} diff --git a/inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/function/string/TestContainsFunction.java b/inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/function/string/TestContainsFunction.java new file mode 100644 index 0000000000..352f9c46b1 --- /dev/null +++ b/inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/function/string/TestContainsFunction.java @@ -0,0 +1,65 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.inlong.sdk.transform.process.function.string; + +import org.apache.inlong.sdk.transform.decode.SourceDecoderFactory; +import org.apache.inlong.sdk.transform.encode.SinkEncoderFactory; +import org.apache.inlong.sdk.transform.pojo.TransformConfig; +import org.apache.inlong.sdk.transform.process.TransformProcessor; + +import org.junit.Assert; +import org.junit.Test; + +import java.util.HashMap; +import java.util.List; + +public class TestContainsFunction extends AbstractFunctionStringTestBase { + + @Test + public void testContainsFunction() throws Exception { + String transformSql = "select contains(string1, string2) from source"; + TransformConfig config = new TransformConfig(transformSql); + TransformProcessor processor = TransformProcessor + .create(config, SourceDecoderFactory.createCsvDecoder(csvSource), + SinkEncoderFactory.createKvEncoder(kvSink)); + // case1: contains('Transform SQL', 'SQL') + List output1 = processor.transform("Transform SQL|SQL", new HashMap<>()); + Assert.assertEquals(1, output1.size()); + Assert.assertEquals(output1.get(0), "result=true"); + // case2: contains('', 'SQL') + List output2 = processor.transform("|SQL", new HashMap<>()); + Assert.assertEquals(1, output2.size()); + Assert.assertEquals(output2.get(0), "result=false"); + // case3: contains('Transform SQL', '') + List output3 = processor.transform("Transform SQL|", new HashMap<>()); + Assert.assertEquals(1, output3.size()); + Assert.assertEquals(output3.get(0), "result=true"); + // case4: contains('Transform SQL', 'Transformer') + List output4 = processor.transform("Transform SQL|Transformer", new HashMap<>()); + Assert.assertEquals(1, output4.size()); + Assert.assertEquals(output4.get(0), "result=false"); + // case5: contains('Transform SQL', 'm S') + List output5 = processor.transform("Transform SQL|m S", new HashMap<>()); + Assert.assertEquals(1, output5.size()); + Assert.assertEquals(output5.get(0), "result=true"); + // case6: contains('', '') + List output6 = processor.transform("|", new HashMap<>()); + Assert.assertEquals(1, output6.size()); + Assert.assertEquals(output6.get(0), "result=true"); + } +} diff --git a/inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/TestTransformFromBase64FunctionProcessor.java b/inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/function/string/TestFromBase64Function.java similarity index 68% rename from inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/TestTransformFromBase64FunctionProcessor.java rename to inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/function/string/TestFromBase64Function.java index 9684c5fe7c..021ef381d7 100644 --- a/inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/TestTransformFromBase64FunctionProcessor.java +++ b/inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/function/string/TestFromBase64Function.java @@ -15,50 +15,21 @@ * limitations under the License. */ -package org.apache.inlong.sdk.transform.process; +package org.apache.inlong.sdk.transform.process.function.string; import org.apache.inlong.sdk.transform.decode.SourceDecoderFactory; import org.apache.inlong.sdk.transform.encode.SinkEncoderFactory; -import org.apache.inlong.sdk.transform.pojo.CsvSourceInfo; -import org.apache.inlong.sdk.transform.pojo.FieldInfo; -import org.apache.inlong.sdk.transform.pojo.KvSinkInfo; import org.apache.inlong.sdk.transform.pojo.TransformConfig; +import org.apache.inlong.sdk.transform.process.TransformProcessor; import org.junit.Assert; import org.junit.Test; -import java.util.ArrayList; import java.util.HashMap; import java.util.List; -/** - * TestTransformFromBase64FunctionProcessor - * description: test the from_base64 function in transform processor - */ -public class TestTransformFromBase64FunctionProcessor { - - private static final List srcFields = new ArrayList<>(); - private static final List dstFields = new ArrayList<>(); - private static final CsvSourceInfo csvSource; - private static final KvSinkInfo kvSink; +public class TestFromBase64Function extends AbstractFunctionStringTestBase { - static { - for (int i = 1; i < 4; i++) { - FieldInfo field = new FieldInfo(); - field.setName("string" + i); - srcFields.add(field); - } - for (int i = 1; i < 4; i++) { - FieldInfo field = new FieldInfo(); - field.setName("numeric" + i); - srcFields.add(field); - } - FieldInfo field = new FieldInfo(); - field.setName("result"); - dstFields.add(field); - csvSource = new CsvSourceInfo("UTF-8", '|', '\\', srcFields); - kvSink = new KvSinkInfo("UTF-8", dstFields); - } @Test public void testFromBase64Function() throws Exception { String transformSql = "select from_base64(string1) from source"; diff --git a/inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/function/string/TestStringFunctionsProcessor.java b/inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/function/string/TestStringFunctionsProcessor.java index baff9823e7..40447d9a10 100644 --- a/inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/function/string/TestStringFunctionsProcessor.java +++ b/inlong-sdk/transform-sdk/src/test/java/org/apache/inlong/sdk/transform/process/function/string/TestStringFunctionsProcessor.java @@ -28,6 +28,8 @@ TestLocateFunction.class, TestLowerFunction.class, TestLpadFunction.class, TestReplaceFunction.class, TestReplicateFunction.class, TestReverseFunction.class, TestRightFunction.class, TestRpadFunction.class, TestSpaceFunction.class, TestStrcmpFunction.class, TestSubstringFunction.class, TestToBase64Function.class, - TestTranslateFunction.class, TestTrimFunction.class, TestUpperFunction.class}) + TestTranslateFunction.class, TestTrimFunction.class, TestUpperFunction.class, TestContainsFunction.class, + TestFromBase64Function.class +}) public class TestStringFunctionsProcessor { }