Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

an intermediate tier based on node

branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 config
Octocat-spinner-32 core
Octocat-spinner-32 node_modules
Octocat-spinner-32 resources
Octocat-spinner-32 sample
Octocat-spinner-32 src
Octocat-spinner-32 test
Octocat-spinner-32 README.md
Octocat-spinner-32 conf.js
Octocat-spinner-32 run.sh
Octocat-spinner-32 sql.txt
README.md

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"]
        ]
      }
Something went wrong with that request. Please try again.