Skip to content

Commit 15b09de

Browse files
author
孙健
committed
add diff file method in testing
1 parent fdd2cdf commit 15b09de

File tree

4 files changed

+128
-60
lines changed

4 files changed

+128
-60
lines changed

src/main/java/org/nlpcn/jcoder/controller/ApiAction.java

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import java.security.MessageDigest;
1111
import java.security.NoSuchAlgorithmException;
1212
import java.util.Collection;
13+
import java.util.Date;
1314
import java.util.List;
1415
import java.util.Map;
1516
import java.util.Map.Entry;
@@ -38,6 +39,7 @@
3839
import org.nlpcn.jcoder.util.ExceptionUtil;
3940
import org.nlpcn.jcoder.util.JavaDocUtil;
4041
import org.nlpcn.jcoder.util.JavaSource2RpcUtil;
42+
import org.nlpcn.jcoder.util.Restful;
4143
import org.nlpcn.jcoder.util.StaticValue;
4244
import org.nutz.ioc.loader.annotation.Inject;
4345
import org.nutz.ioc.loader.annotation.IocBean;
@@ -57,7 +59,7 @@
5759
@IocBean
5860
public class ApiAction {
5961

60-
private static final Logger LOG = LoggerFactory.getLogger(ApiAction.class) ;
62+
private static final Logger LOG = LoggerFactory.getLogger(ApiAction.class);
6163

6264
private static final Set<String> DEFAULT_METHODS = Sets.newHashSet("GET", "POST", "PUT", "DELETE");
6365

@@ -81,7 +83,7 @@ public Object api(@Param(value = "type", df = "1") int type) {
8183
new JavaRunner(t).compile();
8284
compile = true;
8385
} catch (Exception e1) {
84-
LOG.error(e1.getMessage(),e1);
86+
LOG.error(e1.getMessage(), e1);
8587
}
8688
try {
8789
cd = JavaDocUtil.parse(new StringReader(t.getCode()));
@@ -486,5 +488,30 @@ public Object stopApi(@Param("json") String jsonTask) {
486488
}
487489
}
488490

491+
/**
492+
* 停止一个api任务
493+
*
494+
* @param jsonTask
495+
* @return
496+
*/
497+
@At("/api_diff")
498+
@Ok("json")
499+
public Object diff(String name, String code) {
500+
501+
Task task = TaskService.findTaskByCache(name);
502+
503+
if (task == null) {
504+
return Restful.instance(false, "notFound");
505+
}
506+
507+
if (code.trim().equals(task.getCode().trim())) {
508+
return Restful.instance(true, "same");
509+
}
510+
511+
Date updateTime = task.getUpdateTime();
512+
513+
return Restful.instance(false, "unSame", updateTime);
514+
515+
}
489516

490517
}

src/main/java/org/nlpcn/jcoder/run/mvc/ApiLoadings.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import java.lang.reflect.Method;
55
import java.lang.reflect.Modifier;
66
import java.util.ArrayList;
7-
import java.util.Collections;
87
import java.util.List;
98
import java.util.Map;
109

@@ -74,7 +73,7 @@ public static ActionInfo createInfo(Method method) {
7473
ActionInfo ai = new ActionInfo();
7574
evalEncoding(ai, Mirror.getAnnotationDeep(method, Encoding.class));
7675
evalHttpAdaptor(ai, Mirror.getAnnotationDeep(method, AdaptBy.class));
77-
evalActionFilters(ai, Mirror.getAnnotationDeep(ai.getModuleType(), Filters.class), Mirror.getAnnotationDeep(method, Filters.class));
76+
evalActionFilters(ai, Mirror.getAnnotationDeep(method.getDeclaringClass(), Filters.class), Mirror.getAnnotationDeep(method, Filters.class));
7877
evalActionChainMaker(ai, Mirror.getAnnotationDeep(method, Chain.class));
7978
evalHttpMethod(ai, method, Mirror.getAnnotationDeep(method, Execute.class), Mirror.getAnnotationDeep(method, DefaultExecute.class));
8079
ai.setMethod(method);

src/main/java/org/nlpcn/jcoder/util/Testing.java

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,18 @@
22

33
import java.io.File;
44
import java.io.FileNotFoundException;
5+
import java.io.IOException;
56
import java.lang.reflect.Field;
7+
import java.nio.file.FileVisitResult;
8+
import java.nio.file.Files;
9+
import java.nio.file.Path;
10+
import java.nio.file.SimpleFileVisitor;
11+
import java.nio.file.attribute.BasicFileAttributes;
12+
import java.util.ArrayList;
613
import java.util.Arrays;
714
import java.util.HashMap;
15+
import java.util.List;
16+
import java.util.Map;
817
import java.util.ResourceBundle;
918
import java.util.UUID;
1019

@@ -14,6 +23,7 @@
1423
import org.nlpcn.commons.lang.util.StringUtil;
1524
import org.nlpcn.jcoder.server.rpc.client.RpcClient;
1625
import org.nlpcn.jcoder.server.rpc.client.RpcRequest;
26+
import org.nutz.http.Http;
1727
import org.nutz.ioc.Ioc;
1828
import org.nutz.ioc.impl.NutIoc;
1929
import org.nutz.ioc.loader.annotation.Inject;
@@ -22,6 +32,8 @@
2232
import org.slf4j.Logger;
2333
import org.slf4j.LoggerFactory;
2434

35+
import com.alibaba.fastjson.JSONObject;
36+
2537
/**
2638
* Test your task
2739
*
@@ -127,4 +139,46 @@ public static Object remote(int timeout, Class<?> c, String methodName, Object..
127139

128140
}
129141

142+
/**
143+
* 对比本地代码和线上代码的不同
144+
*
145+
* @param apiPath 本地代码路径
146+
* @param apiPath 线上api地址
147+
* @return
148+
* @throws IOException
149+
*/
150+
public static void diffCode(String apiPath, String ipPort) throws IOException {
151+
152+
List<Path> lists = new ArrayList<>();
153+
154+
Files.walkFileTree(new File(apiPath).toPath(), new SimpleFileVisitor<Path>() {
155+
@Override
156+
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
157+
if (file.toString().endsWith(".java")) {
158+
lists.add(file);
159+
}
160+
return FileVisitResult.CONTINUE;
161+
}
162+
});
163+
164+
lists.forEach(p -> {
165+
Map<String, Object> params = new HashMap<>();
166+
File f = p.toFile();
167+
String fileName = f.getName();
168+
params.put("name", fileName.substring(0, fileName.length() - 5));
169+
params.put("code", IOUtil.getContent(f, "utf-8"));
170+
JSONObject parse = JSONObject.parseObject(Http.post("http://" + ipPort + "/api_diff", params, 30000));
171+
172+
if (parse.getBooleanValue("ok")) {
173+
System.out.println(f.getAbsolutePath() + "\t same");
174+
} else if (parse.getDate("obj") != null) {
175+
System.err.println(f.getAbsolutePath() + "\t notsame, online time: " + DateUtils.formatDate(parse.getDate("obj"), "yyyyMMddHHmmss") + " localfile time:"
176+
+ DateUtils.formatDate(f.lastModified(), "yyyyMMddHHmmss"));
177+
} else {
178+
System.err.println(f.getAbsolutePath() + " not found online");
179+
}
180+
181+
});
182+
}
183+
130184
}
Lines changed: 44 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,44 @@
1-
//package cn.com.infcn.api.test;
2-
//
3-
//import java.util.Date;
4-
//
5-
//import org.nlpcn.jcoder.filter.TokenFilter;
6-
//import org.nlpcn.jcoder.run.annotation.Cache;
7-
//import org.nlpcn.jcoder.run.annotation.Execute;
8-
//import org.nlpcn.jcoder.util.DateUtils;
9-
//import org.nlpcn.jcoder.util.Restful;
10-
//import org.nlpcn.jcoder.util.Testing;
11-
//import org.nutz.ioc.loader.annotation.Inject;
12-
//import org.nutz.mvc.annotation.By;
13-
//import org.nutz.mvc.annotation.Filters;
14-
//import org.nutz.mvc.annotation.Param;
15-
//import org.slf4j.Logger;
16-
//
17-
///**
18-
// * 测试api
19-
// *
20-
// * @author Ansj
21-
// *
22-
// */
23-
//public class TestApi {
24-
//
25-
// public static void main(String[] args) throws Exception {
26-
// Restful test = Testing.instance(TestApi.class,"/Users/sunjian/Documents/workspace/jcoder_sdk_search/src/test/resources/ioc.js").test("ansj", new Date()) ;
27-
//
28-
// System.out.println(test.getObj());
29-
// }
30-
//
31-
//
32-
// @Inject
33-
// private Logger log;
34-
//
35-
// int k = 0 ;
36-
// /**
37-
// * 测试创建api
38-
// *
39-
// * @param name 姓名
40-
// * @param aaa 日期
41-
// * @return 拼接好的字符串
42-
// */
43-
// @Execute
44-
// @Cache(size = 100, time = 20)
45-
// @Filters(@By(type=.class) )
46-
// public Restful test(String name, Date aaa) {
47-
// for (int i = 0; i < 100; i++) {
48-
// log.info("" + i);
49-
// }
50-
//
51-
// aaa.getTime();
52-
//
53-
// return Restful.instance("ok " + name + " " + DateUtils.formatDate(aaa, DateUtils.SDF_FORMAT)+" num: "+(k++));
54-
// }
55-
//
56-
//}
1+
package cn.com.infcn.api.test;
2+
3+
import java.io.IOException;
4+
import java.util.Date;
5+
6+
import org.nlpcn.jcoder.filter.TokenFilter;
7+
import org.nlpcn.jcoder.run.annotation.Execute;
8+
import org.nlpcn.jcoder.util.Restful;
9+
import org.nlpcn.jcoder.util.Testing;
10+
import org.nutz.ioc.loader.annotation.Inject;
11+
import org.nutz.mvc.annotation.By;
12+
import org.nutz.mvc.annotation.Filters;
13+
import org.slf4j.Logger;
14+
15+
/**
16+
* 测试api
17+
*
18+
* @author Ansj
19+
*
20+
*/
21+
22+
public class TestApi {
23+
24+
25+
@Inject
26+
private Logger log;
27+
28+
/**
29+
* 测试创建api
30+
*
31+
* @param name 姓名
32+
* @param aaa 日期
33+
* @return 拼接好的字符串
34+
*/
35+
@Execute
36+
@Filters(@By(type=TokenFilter.class) )
37+
public Restful test(String name, Date aaa) {
38+
return Restful.instance("ok");
39+
}
40+
41+
public static void main(String[] args) throws IOException {
42+
Testing.diffCode("/Users/sunjian/Documents/workspace/jcoder/src/test/java", "localhost:8080");
43+
}
44+
}

0 commit comments

Comments
 (0)