# Version 1.0 # 此程序在 node 0.6.6 ~ 0.7.4 下测试通过 你可以按照以下流程来部署测试程序: #1 运行```sample``` 目录下的 ```service.js``` ``` node service.js & ``` 这个进程会在3561,3562 端口提供http 服务,来模拟真实的数据源 用curl 测试如下: ``` curl http://localhost:3561/?fm=m ``` response : ``` { "columns" : ["id","sex"], "data" : [ [1,"m"], [2,"m"], [5,"m"], [7,"m"], [9,"m"] ] } ``` ``` curl http://localhost:3562/?minId=4 ``` response: ``` { "columns" : ["id","name","type"], "data" : [ [5,"n5","t5"], [6,"n6","t6"], [7,"n7","t7"], [8,"n8","t8"], [9,"n9","t9"], [10,"n10","t10"] ] } ```` #2 确认loader 配置正确 在 src/source/ 下,service_a.js ,service_b.js 为以上两个端口服务相应的loader, 如果默认的3561,3562 端口被占用,请确认其配置做相应修改 #3 确认sql 模板配置 目前iTier 仅支持三级目录配置,查看 resources/test/sources/test.json, 比如 其中有 test_service_a ,test_service_b 相应的sql模板: "test_service_a" : { "config":"select id as num from service_a.table where ##fm## order by num DESC limit 1,2", "params":{ "fm":[{ "type":"string", "pos":"##fm##" }] } } #4 启动 iTier 服务 运行 run.sh ,默认会在3459端口进行监听(配置见 conf.js) #5 测试服务 现在你可以测试在sql模板配置的所有服务 测试服务:test_service_a: 测试命令:curl http://127.0.0.1:3459/test/sources/test/test_service_a/where/fm:eq:f 后台操作:后台会对 test_service_a 的模板算子 ##fm## 替换为 fm=m 返回结果: { "columns" : ["num"], "data":[ [8], [6] ] } 测试服务:test_servie_b: 测试命令:curl http://127.0.0.1:3459/test/sources/test/test_service_b/where/minId:eq:3 返回结果: { "columns":["name"], "data":[ ["n9"], ["n8"], ["n7"], ["n6"], ["n5"], ["n4"], ["n10"] ] } 测试命令:test_innerjoin: 测试命令:curl http://127.0.0.1:3459/test/sources/test/test_innerjoin/where/fm:eq:f/where/minId:eq:3 后台操作:替换后的sql 语句为 "select * from service_a.table as sa inner join service_b.table as sb on sa.id=sb.id where fm=f and minId=3" 返回结果: { "columns" : ["id","sex","name","type"], "data" : [ [4,"f","n4","t4"], [6,"f","n6","t6"], [8,"f","n8","t8"], [10,"f","n10","t10"] ] }