Files
meta-kit/src/test/java/RunTest.java
2022-11-03 10:58:48 +08:00

676 lines
20 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import net.tccn.base.*;
import net.tccn.base.dbq.fbean.FBean;
import net.tccn.base.dbq.jdbc.api.DbAccount;
import net.tccn.base.dbq.jdbc.api.DbKit;
import net.tccn.base.dbq.parser.ParseMysql;
import net.tccn.dict.Dict;
import net.tccn.dict.DictKit;
import net.tccn.meta.MetaService;
import net.tccn.meta.MetaTable;
import net.tccn.qtask.TaskEntity;
import net.tccn.qtask.TaskKit;
import net.tccn.user.User;
import org.apache.poi.ss.usermodel.Workbook;
import org.junit.Test;
import org.redkale.convert.json.JsonConvert;
import org.redkale.source.CacheMemorySource;
import org.redkale.util.TypeToken;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.lang.reflect.Type;
import java.util.*;
import java.util.concurrent.locks.ReentrantReadWriteLock;
import java.util.function.BiPredicate;
import java.util.function.Predicate;
import static java.util.Arrays.asList;
/**
* @author: liangxianyou at 2019/1/20 12:43.
*/
public class RunTest<T> {
static {
MetaKit.init();
}
JsonConvert convert = JsonConvert.root();
/*public static Task A = new Task("mysql", "select * from user where userid=#(userid)", "查询用户列表", Kv.of("userid", 1));
public static Task B = new Task("method", "User.say", "user调用", Kv.of("name", "张三").set("age", 13));
public static Task C = new Task("http", "http://127.0.0.1/meta/db_plat_list?platToken=3421432", "查询数据平台列表", Kv.of("abx", "abx111"));
public static Task d = new Task("es", "http://192.168.91.5:9200/_sql?", "查询数据平台列表", Kv.of("sql", "select * from basic_iotdevice_all limit 10"));
public static Task e = new Task("http", "http://192.168.91.5:9200/_sql?sql=select%20*%20from%20basic_iotdevice_all%20limit%2010", "查询数据平台列表", Kv.of());
*/
//@Test
/*public void qtaskTest() {
long start = System.currentTimeMillis();
Object query = QRuner.query(d);
System.out.printf("耗时:%s MS" ,System.currentTimeMillis() - start);
System.out.println();
System.out.println(query);
//System.out.println(query.getClass());
}*/
ParseMysql parser = new ParseMysql();
//@Test
public void parseFBeanTest() {
String str = "{'platToken':'ipsm_v4','name':'historyTrack'," +
"'filters':[{'col':'ap.comName','value':'贵阳市第十九中学','type':'LIKE'},{'col':'','value':'name=213113','type':'SQL'}," +
"{'col':'age','values':[1,2],'type':'RANGE'}]," +
"'orders':[],'limit':{'pn':1,'ps':10,'total':1}}";
FBean fBean = convert.convertFrom(FBean.class, str);
String[] parse = parser.parseList(fBean);
System.out.println("count:" + parse[0]);
System.out.println("list:" + parse[1]);
}
//@Test
public void jdbcTest() {
//DbAccount jdbcAccount = new DbAccount("jdbc:mysql://192.168.202.11:3306/gxbii_dev", "root", "eversec123098");
DbAccount dbAccount = new DbAccount();
dbAccount.setCate("mysql");
dbAccount.setUrl("jdbc:mysql://192.168.202.11:3306/gxbii_dev");
dbAccount.setUser("root");
dbAccount.setPwd("eversec123098");
DbKit dbKit = new DbKit(dbAccount, "");
//String sql = "select * from basic_concat limit 1";
String sql = "show databases;";
// find list
List<Map> list = dbKit.findList(sql, Map.class);
System.out.println(list.get(0));
//find count
/*long total = dbKit.queryColumn("select count(1) from basic_device", long.class);
System.out.println(total);
System.out.println(int.class);*/
}
//@Test
public void toAsTest() {
Date date = Kv.toAs("2019-03-17 12:11:12", Date.class);
System.out.println(date);
System.out.println("--------------");
Long aLong = Kv.toAs("34132213", Long.class);
System.out.println(aLong);
System.out.println("--------------");
Integer integer = Kv.toAs("34132213", Integer.class);
System.out.println(integer);
System.out.println("--------------");
Short aShort = Kv.toAs("121", short.class);
System.out.println(aShort);
System.out.println("--------------");
Double aDouble = Kv.toAs("4658132213", double.class);
System.out.println(aDouble);
System.out.println("--------------");
String s = Kv.toAs("4658132213", String.class);
System.out.println(s);
System.out.println("--------------");
//Date date1 = Kv.toAs("Sun Mar 17 12:11:12 CST 2019", Date.class);
//System.out.println(date1);
}
//@Test
public void buildeDetailTest() {
Kv kv = MetaKit.buildeDetail(MetaKit.getMetaService("user_service", "3421432"));
System.out.println(kv);
}
//@Test
public void upDb$() {
/*MetaKit.getMetaServices().forEach(m -> {
List<String> shows = new ArrayList<>();
m.getShows().forEach(x -> {
shows.add(x.replace(".", "$"));
});
m.setShows(shows);
m.update();
});*/
//System.out.println("a$id".split("[$]")[0]);
System.out.println("x.abx".replace(".", "\\."));
}
//@Test
public void findMaxNum() {
int xx = asList("1", "5", "3").stream().filter(x -> !x.isEmpty()).mapToInt(x -> {
return Integer.parseInt(x) * 2;
}).min().orElseGet(() -> 0);
System.out.println(xx);
}
//@Test
public void userCreate() {
User user = new User();
user.setUsername("admin");
user.setCreateTime(System.currentTimeMillis());
user.setPwd(User.md5IfNeed("123456"));
user.setStatus(1);
user.save();
}
//@Test
public void t() {
System.out.println(MetaKit.nextAlias());
}
//@Test
public void kvTest() {
/*Map map = new HashMap<>();
map.put("name", "xxxx");
map.put("age", 12);
map.put("abx", 123);
UserBean user = Kv.toBean(map, UserBean.class);
Kv kv = Kv.toKv(user, "name", "abxx=age");
System.out.println(user);
System.out.println(kv);*/
Class[] clazzs = {
int.class, long.class, short.class, byte.class,
Integer.class, Long.class, Short.class, Byte.class, float.class, Float.class,
String.class,
};
Object[] ks = new Object[]{"1", (int)1, (Integer)1, 1l, 1.0, 1f, 1.0d};
for (Object k : ks) {
System.out.println("--------------------------------------------");
for (Class v : clazzs) {
System.out.printf("%s -> %s = ", k.getClass().getSimpleName(), v.getSimpleName());
Object o = Kv.toAs(k, v);
switch (v.getSimpleName()) {
case "int":
System.out.println((int)o);break;
case "Integer":
System.out.println((Integer)o);break;
case "long":
System.out.println((long)o);break;
case "Long":
System.out.println((Long)o);break;
case "short":
System.out.println((short)o);break;
case "Short":
System.out.println((Short)o);break;
case "byte":
System.out.println((byte)o);break;
case "float":
System.out.println((float)o);break;
case "Float":
System.out.println((Float)o);break;
case "Byte":
System.out.println((Byte)o);break;
case "String":
System.out.println((String)o);break;
}
}
}
}
//@Test
public void tplTest() {
TplKit use = TplKit.use(true);
use.addTpl(new File(FileKit.rootPath(), "tpl")); //ok
String tpl = use.getTpl("db.table_list", Kv.of("catalogs", asList("redbbs")));
System.out.println(tpl);
}
//@Test
public void T() {
List<MetaTable> metaTables = MetaKit.getMetaTables();
System.out.println(metaTables.size());
}
TplKit tplKit = TplKit.use();
// @Test
public void buildMethod() {
tplKit.addTpl(new File(FileKit.rootPath(), "/tpl/_t.tpl"));
//buildMethod("table_link_list", "实体表包含link信息的列表");
buildMethod("link_info", "关联信息 ");
}
private void buildMethod(String url, String comment) {
String[] arr = url.split("_");
String methodName = "";
for (int i = 0; i < arr.length; i++) {
if (i == 0) {
methodName = arr[i].toLowerCase();
} else {
methodName += toUpperCaseFirst(arr[i].toLowerCase());
}
}
Kv kv = Kv.of("url", url).set("comment", comment).set("methodName", methodName);
String tpl = tplKit.getTpl("service.method", kv, false);
System.out.println(tpl);
}
private String toUpperCaseFirst(String str) {
return str.substring(0, 1).toUpperCase() + str.substring(1);
}
//@Test
public void taskRunTest() {
TaskEntity entity = TaskEntity.dao.findByKey("23074420");
if (entity != null) {
System.out.printf("------------------------%n%s%n------------------------%n", convert.convertTo(TaskKit.taskRun(entity)));
}
}
//@Test
public void dataToFileTest() {
List<MetaService> metaServices = MetaService.dao.find();
MetaKit metaKit = new MetaKit();
File file = new File("tmp/metaKit.json");
file.getParentFile().mkdirs();
FileKit.strToFile(convert.convertTo(metaKit), file);
}
//@Test
public void readJson() {
File file = new File("tmp/MetaService.json");
try {
Type type = new TypeToken<List<MetaService>>() {
}.getType();
List<MetaService> list = convert.convertFrom(type, new FileInputStream(file));
System.out.println(list);
} catch (IOException e) {
e.printStackTrace();
}
Class clazz = MetaService.class;
//File file = new File(String.format("tmp/%s.json", clazz.getSimpleName()));
/*
写入数据到 文件
MetaKit.cacheSave(MetaTable.class);
MetaKit.cacheSave(MetaLink.class);
MetaKit.cacheSave(MetaService.class);
MetaKit.cacheSave(DbAccount.class);
MetaKit.cacheSave(SysPlat.class);*/
}
//@Test
public void cacheMemorySourceTest() {
CacheMemorySource source = new CacheMemorySource("");
//MetaKit.dcate = "db";
//MetaKit.init();
List<MetaTable> list = MetaKit.getMetaTables();
list.forEach(x -> {
source.set(x.getKey(), x.getClass(), x);
});
MetaTable metaTable = (MetaTable) source.get(list.get(0).getKey(), MetaTable.class);
metaTable.setAlias("xxxxx");
metaTable = (MetaTable) source.get(list.get(0).getKey(), MetaTable.class);
System.out.println(metaTable);
}
public List<Map> dbKitTest() {
DbAccount dbAccount = new DbAccount();
dbAccount.setCate("mysql");
dbAccount.setUrl("jdbc:mysql://192.168.202.11:3306/gxbii_dev");
dbAccount.setUser("root");
dbAccount.setPwd("eversec123098");
DbKit dbKit = new DbKit(dbAccount, "");
String sql = "select platID,platDomain,platIP from basic_domain limit 10";
String countSql = "select count(*) from basic_domain";
// find list
List<Map> list = dbKit.findList(sql, Map.class);
int total = dbKit.findColumn(countSql, int.class);
System.out.println("总记录数:" + total);
System.out.println(list);
return list;
}
// 通用导出组件测试
//@Test
public void exportTest() {
List<Map> list = dbKitTest();
Kv kv = Kv.of("platID", "平台id")
.set("platDomain", "平台域名").set("platIP", "平台IP");
try {
Workbook workbook = ExcelKit.exportExcel(list, kv);
workbook.write(new FileOutputStream(new File("tmp/basic_domain.xls")));
} catch (Exception e) {
e.printStackTrace();
}
}
//@Test
public void switchTest() {
String a = "2";
switch (a) {
case "1":
System.out.println(1);
case "2":
System.out.println(2);
case "3":
System.out.println(3);
case "4":
System.out.println(4);
}
System.out.println("end");
}
//@Test
public void exceptionTest() {
try {
throw new CfgException("hello exception: %s - %s - %s", 1, 2, "x");
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
/**
* IP区间包含IP数计算含首尾
*
* @param startIp 其实ip
* @param endIp 结束ip
* @return
*/
public int ipv4Count(String startIp, String endIp) {
String[] srartArr = startIp.split("[.]");
String[] endArr = endIp.split("[.]");
int[] c = new int[4];
int[] carryOver = {16581375, 65025, 255, 1}; // IP进位数
for (int i = 0; i < 4; i++) {
if (!srartArr[i].equals(endArr[i])) {
c[i] = Integer.parseInt(endArr[i]) - Integer.parseInt(srartArr[i]);
}
}
int count = 0;
for (int i = 0; i < c.length; i++) {
if (c[i] != 0) {
count += c[i] * carryOver[i];
}
}
return (count < 0 ? -count : count) + 1;
}
//@Test
public void timerTest() {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println("run task..");
}
}, 5000, 2000);
int[] n = {0};
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println("周期任务 .. " + ++n[0]);
if (n[0] == 2) {
System.out.println("周期任务完成");
cancel();
}
}
}, 6000, 1000);
try {
Thread.sleep(1000 * 10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//---------------------------- LOCK TEST -----------------------------
ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
ReentrantReadWriteLock.WriteLock writeLock = lock.writeLock();
ReentrantReadWriteLock.ReadLock readLock = lock.readLock();
int[] n = {0};
public String read() {
readLock.lock();
try {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("read result:" + n[0]);
return n[0] + "";
} finally {
readLock.unlock();
}
}
public void write() {
writeLock.lock();
try {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
n[0]++;
} finally {
writeLock.unlock();
}
}
//@Test
public void lockTest() {
new Thread(() -> {
for (int i = 0; i < 50; i++) {
read();
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
new Thread(() -> {
for (int i = 0; i < 50; i++) {
write();
System.out.println("写入数据次数:--------" + (i + 1));
try {
Thread.sleep(150);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
new Thread(() -> {
for (int i = 0; i < 50; i++) {
write();
System.out.println("write--------" + (i + 1));
}
}).start();
try {
Thread.sleep(1000 * 30);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//@Test
public void tx() {
System.out.println(ipv4Count("0.0.0.2", "0.0.0.0"));
}
Predicate<Dict> isProvice = (s) -> String.valueOf(s.getValue()).trim().endsWith("0000");
Predicate<Dict> isCity = (s) -> !isProvice.test(s) && String.valueOf(s.getValue()).trim().endsWith("00");
BiPredicate<Dict, Dict> belongProvice = (p, x) -> String.valueOf(x.getValue()).trim().startsWith(String.valueOf(p.getValue()).trim().substring(0, 2));
@Test
public void dictTest() {
MetaKit.init();
System.out.println("-------- 1 -------");
DictKit dictKit = DictKit.use("ipsm_v4");
System.out.println(dictKit.getDictLabel("useSubclass", "3"));
System.out.println(dictKit.getDictValue("isp", "广电"));
/*List<Dict> list = dictKit.getDicts("city");
list.stream().filter(x -> x.getValue().startsWith("52") && isCity.test(x)).sorted((a, b) -> a.getValue().compareTo(b.getValue())).forEach(x -> {
System.out.println(x);
});
List<Map> data = new ArrayList<>();
list.stream().filter(x -> isProvice.test(x)).sorted((a, b) -> a.getValue().compareTo(b.getValue())).forEach(x -> {
Kv kv = Kv.of("value", x.get("value")).set("label", x.get("label"));
List<Kv> childs = new ArrayList<>();
list.stream().filter(y -> y.getValue().startsWith(x.getValue().substring(0,2))
&& isCity.test(y)
).forEach(y -> {
childs.add(Kv.of("label", y.get("label")).set("value", y.get("value")));
});
childs.forEach(y -> {
List<Kv> childs2 = new ArrayList<>();
list.stream().filter(z -> z.getValue().startsWith(String.valueOf(y.get("value")).substring(0, 3))
&& !z.getValue().endsWith("00")
).forEach(z -> {
childs2.add(Kv.of("label", z.get("label")).set("value", z.get("value")));
});
y.set("childs", childs2);
});
kv.set("childs", childs);
data.add(kv);
});
FileKit.strToFile(convert.convertTo(data), new File("tmp/city.json"));*/
}
public void dictType() {
}
//@Test
public void txx() {
//2400:18c0:0:0:0:0:0:0
//System.out.println(Integer.parseInt("2400", 16));
//System.out.println(Math.pow(2, 32));
/*String[] arr = "213123".split("");
for (String x : arr) {
System.out.println(x);
}*/
/*for (int i = 1; i < 8; i++) {
String v = "1";
for (int j = 0; j < i; j++) {
v = ride(v , "65536");
}
System.out.printf("%s - %s%n", i, v);
}*/
/*String ip = "::9";
System.out.println(ipv6Num("::1"));
System.out.println(ip);*/
//System.out.println(ipv6Num("2400:18c0:0:0:0:0:0:0"));
/*for (int x = 0; x < 100; x++) {
for (int y = 0; y < 100; y++) {
long a = Integer.parseInt(IpKit.add(x + "", y + ""));
long b = x + y;
if (a != b) {
System.out.printf("%d + %d = %s, \t %s \n", x, y, a, b);
} else {
System.out.printf("=");
}
}
}*/
/*System.out.println(toNum("127.0.0.1"));
System.out.println(ipCount("0::0:0", "0::0:2"));*/
//System.out.println(toNum("254.16.3.56"));
}
}