summaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorzhanghongqing <[email protected]>2022-07-07 14:07:27 +0800
committerzhanghongqing <[email protected]>2022-07-07 14:07:27 +0800
commitf552793230d0428cbc63714ee296c1ce4971a31b (patch)
tree1bf3a26d957710b261f61a65559d393f55bf9382 /src/test
Initial commit
Diffstat (limited to 'src/test')
-rw-r--r--src/test/java/com/zdjizhi/EncryptorTest.java35
-rw-r--r--src/test/java/com/zdjizhi/FunctionTest.java52
-rw-r--r--src/test/java/com/zdjizhi/json/JsonPathTest.java79
-rw-r--r--src/test/java/com/zdjizhi/json/JsonTest.java23
-rw-r--r--src/test/java/com/zdjizhi/nacos/NacosTest.java101
-rw-r--r--src/test/java/com/zdjizhi/nacos/SchemaListener.java136
6 files changed, 426 insertions, 0 deletions
diff --git a/src/test/java/com/zdjizhi/EncryptorTest.java b/src/test/java/com/zdjizhi/EncryptorTest.java
new file mode 100644
index 0000000..9bd8e71
--- /dev/null
+++ b/src/test/java/com/zdjizhi/EncryptorTest.java
@@ -0,0 +1,35 @@
+package com.zdjizhi;
+
+import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;
+import org.junit.Test;
+
+/**
+ * @author qidaijie
+ * @Package com.zdjizhi
+ * @Description:
+ * @date 2022/3/1610:55
+ */
+public class EncryptorTest {
+
+
+ @Test
+ public void passwordTest(){
+ StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
+ // 配置加密解密的密码/salt值
+ encryptor.setPassword("galaxy");
+ // 对"raw_password"进行加密:S5kR+Y7CI8k7MaecZpde25yK8NKUnd6p
+ String pin = "galaxy2019";
+ String encPin = encryptor.encrypt(pin);
+ String user = "admin";
+ String encUser = encryptor.encrypt(user);
+ System.out.println(encPin);
+ System.out.println(encUser);
+ // 再进行解密:raw_password
+ String rawPwd = encryptor.decrypt("ENC(6MleDyA3Z73HSaXiKsDJ2k7Ys8YWLhEJ)");
+ String rawUser = encryptor.decrypt("ENC(nnasyGpHKGFA4KW0zro9MDdw==)");
+
+ System.out.println("The username is: "+rawPwd);
+ System.out.println("The pin is: "+rawUser);
+ }
+
+}
diff --git a/src/test/java/com/zdjizhi/FunctionTest.java b/src/test/java/com/zdjizhi/FunctionTest.java
new file mode 100644
index 0000000..c667224
--- /dev/null
+++ b/src/test/java/com/zdjizhi/FunctionTest.java
@@ -0,0 +1,52 @@
+package com.zdjizhi;
+
+import com.zdjizhi.common.FlowWriteConfig;
+import com.zdjizhi.utils.IpLookupV2;
+import com.zdjizhi.utils.general.CityHash;
+import org.junit.Test;
+
+import java.math.BigInteger;
+import java.util.Calendar;
+
+/**
+ * @author qidaijie
+ * @Package com.zdjizhi
+ * @Description:
+ * @date 2021/11/611:38
+ */
+public class FunctionTest {
+
+ private static IpLookupV2 ipLookup = new IpLookupV2.Builder(false)
+ .loadDataFileV4(FlowWriteConfig.TOOLS_LIBRARY + "ip_v4.mmdb")
+// .loadDataFileV6(FlowWriteConfig.TOOLS_LIBRARY + "ip_v6_built_in.mmdb")
+// .loadDataFilePrivateV4(FlowWriteConfig.TOOLS_LIBRARY + "ip_v4_user_defined.mmdb")
+// .loadDataFilePrivateV6(FlowWriteConfig.TOOLS_LIBRARY + "ip_v6_user_defined.mmdb")
+ .loadAsnDataFile(FlowWriteConfig.TOOLS_LIBRARY + "asn_v4.mmdb")
+ .loadAsnDataFileV6(FlowWriteConfig.TOOLS_LIBRARY + "asn_v6.mmdb")
+ .build();
+
+ @Test
+ public void CityHashTest() {
+
+ byte[] dataBytes = String.valueOf(613970406986188816L).getBytes();
+ long hashValue = CityHash.CityHash64(dataBytes, 0, dataBytes.length);
+ String decimalValue = Long.toUnsignedString(hashValue, 10);
+ BigInteger result = new BigInteger(decimalValue);
+ System.out.println(result);
+ }
+
+ @Test
+ public void ipLookupTest() {
+ String ip = "0.255.255.254";
+ System.out.println(ipLookup.cityLookupDetail(ip));
+ System.out.println(ipLookup.countryLookup(ip));
+ }
+
+ @Test
+ public void timestampTest(){
+ Calendar cal = Calendar.getInstance();
+ Long utcTime=cal.getTimeInMillis();
+ System.out.println(utcTime);
+ System.out.println(System.currentTimeMillis());
+ }
+}
diff --git a/src/test/java/com/zdjizhi/json/JsonPathTest.java b/src/test/java/com/zdjizhi/json/JsonPathTest.java
new file mode 100644
index 0000000..cd7ada3
--- /dev/null
+++ b/src/test/java/com/zdjizhi/json/JsonPathTest.java
@@ -0,0 +1,79 @@
+package com.zdjizhi.json;
+
+import cn.hutool.log.Log;
+import cn.hutool.log.LogFactory;
+import com.alibaba.nacos.api.NacosFactory;
+import com.alibaba.nacos.api.PropertyKeyConst;
+import com.alibaba.nacos.api.config.ConfigService;
+import com.alibaba.nacos.api.config.listener.Listener;
+import com.alibaba.nacos.api.exception.NacosException;
+import com.jayway.jsonpath.DocumentContext;
+import com.jayway.jsonpath.JsonPath;
+import com.zdjizhi.common.FlowWriteConfig;
+import com.zdjizhi.utils.StringUtil;
+import org.junit.Test;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Properties;
+import java.util.concurrent.Executor;
+
+/**
+ * @author qidaijie
+ * @Package com.zdjizhi.json
+ * @Description:
+ * @date 2022/3/2410:22
+ */
+public class JsonPathTest {
+ private static final Log logger = LogFactory.get();
+
+ private static Properties propNacos = new Properties();
+
+ /**
+ * 获取需要删除字段的列表
+ */
+ private static ArrayList<String> dropList = new ArrayList<>();
+
+ /**
+ * 在内存中加载反射类用的map
+ */
+ private static HashMap<String, Class> map;
+
+ /**
+ * 获取任务列表
+ * list的每个元素是一个四元字符串数组 (有format标识的字段,补全的字段,用到的功能函数,用到的参数),例如:
+ * (mail_subject mail_subject decode_of_base64 mail_subject_charset)
+ */
+ private static ArrayList<String[]> jobList;
+
+ private static String schema;
+
+ static {
+ propNacos.setProperty(PropertyKeyConst.SERVER_ADDR, FlowWriteConfig.NACOS_SERVER);
+ propNacos.setProperty(PropertyKeyConst.NAMESPACE, FlowWriteConfig.NACOS_SCHEMA_NAMESPACE);
+ propNacos.setProperty(PropertyKeyConst.USERNAME, FlowWriteConfig.NACOS_USERNAME);
+ propNacos.setProperty(PropertyKeyConst.PASSWORD, FlowWriteConfig.NACOS_PIN);
+ try {
+ ConfigService configService = NacosFactory.createConfigService(propNacos);
+ String dataId = FlowWriteConfig.NACOS_DATA_ID;
+ String group = FlowWriteConfig.NACOS_GROUP;
+ String config = configService.getConfig(dataId, group, 5000);
+ if (StringUtil.isNotBlank(config)) {
+ schema = config;
+ }
+ } catch (NacosException e) {
+ logger.error("Get Schema config from Nacos error,The exception message is :" + e.getMessage());
+ }
+ }
+
+ @Test
+ public void parseSchemaGetFields() {
+ DocumentContext parse = JsonPath.parse(schema);
+ List<Object> fields = parse.read("$.fields[*]");
+ for (Object field : fields) {
+ String name = JsonPath.read(field, "$.name").toString();
+ String type = JsonPath.read(field, "$.type").toString();
+ }
+ }
+}
diff --git a/src/test/java/com/zdjizhi/json/JsonTest.java b/src/test/java/com/zdjizhi/json/JsonTest.java
new file mode 100644
index 0000000..597da40
--- /dev/null
+++ b/src/test/java/com/zdjizhi/json/JsonTest.java
@@ -0,0 +1,23 @@
+package com.zdjizhi.json;
+
+import com.zdjizhi.utils.JsonMapper;
+import com.zdjizhi.utils.json.JsonParseUtil;
+import org.junit.Test;
+
+import java.util.Map;
+
+/**
+ * @author qidaijie
+ * @Package com.zdjizhi.json
+ * @Description:
+ * @date 2022/5/515:08
+ */
+public class JsonTest {
+
+ @Test
+ public void JacksonTest() {
+ String value = "{\"common_log_id\":null}";
+ Map<String, Object> json = (Map<String, Object>) JsonMapper.fromJsonString(value, Map.class);
+ System.out.println(json.get("common_log_id"));
+ }
+} \ No newline at end of file
diff --git a/src/test/java/com/zdjizhi/nacos/NacosTest.java b/src/test/java/com/zdjizhi/nacos/NacosTest.java
new file mode 100644
index 0000000..7745d5f
--- /dev/null
+++ b/src/test/java/com/zdjizhi/nacos/NacosTest.java
@@ -0,0 +1,101 @@
+package com.zdjizhi.nacos;
+
+import com.alibaba.nacos.api.NacosFactory;
+import com.alibaba.nacos.api.PropertyKeyConst;
+import com.alibaba.nacos.api.config.ConfigService;
+import com.alibaba.nacos.api.config.listener.Listener;
+import com.alibaba.nacos.api.exception.NacosException;
+import org.junit.Test;
+
+import java.io.IOException;
+import java.io.StringReader;
+import java.util.Properties;
+import java.util.concurrent.Executor;
+
+
+/**
+ * @author qidaijie
+ * @Package com.zdjizhi
+ * @Description:
+ * @date 2022/3/1016:58
+ */
+public class NacosTest {
+
+ /**
+ * <dependency>
+ * <groupId>com.alibaba.nacos</groupId>
+ * <artifactId>nacos-client</artifactId>
+ * <version>1.2.0</version>
+ * </dependency>
+ */
+
+ private static Properties properties = new Properties();
+ /**
+ * config data id = config name
+ */
+ private static final String DATA_ID = "dos_detection.properties";
+ /**
+ * config group
+ */
+ private static final String GROUP = "Galaxy";
+
+ private void getProperties() {
+ properties.setProperty(PropertyKeyConst.SERVER_ADDR, "192.168.44.67:8848");
+ properties.setProperty(PropertyKeyConst.NAMESPACE, "f507879a-8b1b-4330-913e-83d4fcdc14bb");
+ properties.setProperty(PropertyKeyConst.USERNAME, "nacos");
+ properties.setProperty(PropertyKeyConst.PASSWORD, "nacos");
+ }
+
+
+ @Test
+ public void GetConfigurationTest() {
+ try {
+ getProperties();
+ ConfigService configService = NacosFactory.createConfigService(properties);
+ String content = configService.getConfig(DATA_ID, GROUP, 5000);
+ Properties nacosConfigMap = new Properties();
+ nacosConfigMap.load(new StringReader(content));
+ System.out.println(nacosConfigMap.getProperty("source.kafka.servers"));
+ System.out.println(content);
+ } catch (NacosException | IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ }
+
+ @Test
+ public void ListenerConfigurationTest() {
+ getProperties();
+ try {
+ //first get config
+ ConfigService configService = NacosFactory.createConfigService(properties);
+ String config = configService.getConfig(DATA_ID, GROUP, 5000);
+ System.out.println(config);
+
+ //start listenner
+ configService.addListener(DATA_ID, GROUP, new Listener() {
+ @Override
+ public Executor getExecutor() {
+ return null;
+ }
+
+ @Override
+ public void receiveConfigInfo(String configMsg) {
+ System.out.println(configMsg);
+ }
+ });
+ } catch (NacosException e) {
+ e.printStackTrace();
+ }
+
+ //keep running,change nacos config,print new config
+ while (true) {
+ try {
+ Thread.sleep(5000);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+}
diff --git a/src/test/java/com/zdjizhi/nacos/SchemaListener.java b/src/test/java/com/zdjizhi/nacos/SchemaListener.java
new file mode 100644
index 0000000..741b2a3
--- /dev/null
+++ b/src/test/java/com/zdjizhi/nacos/SchemaListener.java
@@ -0,0 +1,136 @@
+package com.zdjizhi.nacos;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.nacos.api.NacosFactory;
+import com.alibaba.nacos.api.PropertyKeyConst;
+import com.alibaba.nacos.api.config.ConfigService;
+import com.alibaba.nacos.api.config.listener.Listener;
+import com.alibaba.nacos.api.exception.NacosException;
+import com.zdjizhi.common.FlowWriteConfig;
+import com.zdjizhi.utils.StringUtil;
+import org.junit.Test;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Properties;
+import java.util.concurrent.Executor;
+
+/**
+ * @author qidaijie
+ * @Package com.zdjizhi.nacos
+ * @Description:
+ * @date 2022/3/1714:57
+ */
+public class SchemaListener {
+
+ private static Properties properties = new Properties();
+ private static ArrayList<String[]> jobList;
+
+
+ static {
+ properties.setProperty(PropertyKeyConst.SERVER_ADDR, "192.168.40.43:8848");
+ properties.setProperty(PropertyKeyConst.NAMESPACE, "test");
+ properties.setProperty(PropertyKeyConst.USERNAME, "nacos");
+ properties.setProperty(PropertyKeyConst.PASSWORD, "nacos");
+
+ try {
+ ConfigService configService = NacosFactory.createConfigService(properties);
+ String dataId = "session_record.json";
+ String group = "Galaxy";
+ jobList = getJobListFromHttp(configService.getConfig(dataId, group, 5000));
+ configService.addListener(dataId, group, new Listener() {
+ @Override
+ public Executor getExecutor() {
+ return null;
+ }
+
+ @Override
+ public void receiveConfigInfo(String configMsg) {
+ jobList = getJobListFromHttp(configMsg);
+ }
+ });
+ } catch (NacosException e) {
+ e.printStackTrace();
+ }
+ }
+
+
+ @Test
+ public void dealCommonMessage() {
+ //keep running,change nacos config,print new config
+ while (true) {
+ try {
+ System.out.println(Arrays.toString(jobList.get(0)));
+ Thread.sleep(5000);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ /**
+ * 根据http链接获取schema,解析之后返回一个任务列表 (useList toList funcList paramlist)
+ *
+ * @return 任务列表
+ */
+ private static ArrayList<String[]> getJobListFromHttp(String schema) {
+ ArrayList<String[]> list = new ArrayList<>();
+
+ //获取fields,并转化为数组,数组的每个元素都是一个name doc type
+ JSONObject schemaJson = JSON.parseObject(schema);
+ JSONArray fields = (JSONArray) schemaJson.get("fields");
+
+ for (Object field : fields) {
+
+ if (JSON.parseObject(field.toString()).containsKey("doc")) {
+ Object doc = JSON.parseObject(field.toString()).get("doc");
+
+ if (JSON.parseObject(doc.toString()).containsKey("format")) {
+ String name = JSON.parseObject(field.toString()).get("name").toString();
+ Object format = JSON.parseObject(doc.toString()).get("format");
+ JSONObject formatObject = JSON.parseObject(format.toString());
+
+ String functions = formatObject.get("functions").toString();
+ String appendTo = null;
+ String params = null;
+
+ if (formatObject.containsKey("appendTo")) {
+ appendTo = formatObject.get("appendTo").toString();
+ }
+
+ if (formatObject.containsKey("param")) {
+ params = formatObject.get("param").toString();
+ }
+
+
+ if (StringUtil.isNotBlank(appendTo) && StringUtil.isBlank(params)) {
+ String[] functionArray = functions.split(FlowWriteConfig.FORMAT_SPLITTER);
+ String[] appendToArray = appendTo.split(FlowWriteConfig.FORMAT_SPLITTER);
+
+ for (int i = 0; i < functionArray.length; i++) {
+ list.add(new String[]{name, appendToArray[i], functionArray[i], null});
+ }
+
+ } else if (StringUtil.isNotBlank(appendTo) && StringUtil.isNotBlank(params)) {
+ String[] functionArray = functions.split(FlowWriteConfig.FORMAT_SPLITTER);
+ String[] appendToArray = appendTo.split(FlowWriteConfig.FORMAT_SPLITTER);
+ String[] paramArray = params.split(FlowWriteConfig.FORMAT_SPLITTER);
+
+ for (int i = 0; i < functionArray.length; i++) {
+ list.add(new String[]{name, appendToArray[i], functionArray[i], paramArray[i]});
+
+ }
+ } else {
+ list.add(new String[]{name, name, functions, params});
+ }
+
+ }
+ }
+
+ }
+ return list;
+ }
+
+}