NOVA 配套工具

nova 命令行工具

  • 单文件轻量级nova命令行客户端 (php 5.6+ & swoole);
  • 内部泛化调用实现,手工编解码,不依赖具体nova-service Thrift stub包;

安装

php zanphp/src/toolkil/nova.php install

参数说明

Usage: nova -h主机 -p端口 -m方法 -a参数
    -h nova 服务主机
    -p nova 服务端口
    -m nova服务.nova方法
        例如(以下方thrift为例)
            ${thrift-namespace}.${thrift-service}.${thrift-method}
            com.yourcompany.demo.service.demoService.returnString
    -a nova服务参数, json字符串
        例如 complexMethod 方法
        '{"paraBool":true, "paraI32": 42,"paraDouble":3.14, "paraString":"hello", "baseStruct":{}, "returnList":[{}], "returnSet":{}, "returnMap":{}, "errorLevel":1}'

使用

服务 tcp-demo 项目服务:

namespace nova com.yourcompany.demo.service

service DemoService {
    void    throwException() throws (1:DemoServiceException.DemoServiceException e);

    void    returnVoid();

    bool    returnBool();
    i32     returnI32();
    double  returnDouble();
    string  returnString();
    ErrorLevel.ErrorLevel returnEnum();


    BaseStruct.BaseStruct returnBaseStruct();
    MixedStruct.MixedStruct returnMixedStruct();
    list<BaseStruct.BaseStruct> returnList();
    set<BaseStruct.BaseStruct> returnSet();
    map<string, BaseStruct.BaseStruct> returnMap();

    void   paraBaseNoReturn(1:string paraString, 2:ErrorLevel.ErrorLevel errorLevel);

    void   paraMixedNoReturn (
        1:bool paraBool,
        2:i32 paraI32,
        3:double paraDouble,
        4:string paraString,
        5:BaseStruct.BaseStruct baseStruct,
        6:list<BaseStruct.BaseStruct> returnList,
        7:set<BaseStruct.BaseStruct> returnSet,
        8:map<string, BaseStruct.BaseStruct> returnMap,
        9:ErrorLevel.ErrorLevel errorLevel
    );

    map<string, BaseStruct.BaseStruct> complexMethod(
        1:bool paraBool,
        2:i32 paraI32,
        3:double paraDouble,
        4:string paraString,
        5:BaseStruct.BaseStruct baseStruct,
        6:list<BaseStruct.BaseStruct> returnList,
        7:set<BaseStruct.BaseStruct> returnSet,
        8:map<string, BaseStruct.BaseStruct> returnMap,
        9:ErrorLevel.ErrorLevel errorLevel
    )
}
nova -h127.0.0.1 -p8100 -mcom.yourcompany.demo.service.returnVoid -a='{}'

{
    "code": 0,
    "message": "Service \"Com\\Yourcompany\\Demo\\Service\" not found"
}
nova -h127.0.0.1 -p8100 -mcom.yourcompany.demo.service.demoService.returnVoid -a '{}'

null
nova -h127.0.0.1 -p8100 -mcom.yourcompany.demo.service.demoService.returnString -a '{}'

"aaaaaaaaaaaaaaaaaaaa"
nova -h127.0.0.1 -p8100 -mcom.yourcompany.demo.service.demoService.returnBaseStruct -a '{}'

{
    "propBool": true,
    "propByte": "a",
    "propI16": 10,
    "propI32": 100,
    "propI64": 1000,
    "propDouble": 1000,
    "propString": "BaseStruct",
    "errorLevel": null
}
nova -h127.0.0.1 -p8100 -mcom.yourcompany.demo.service.demoService.paraBaseNoReturn -a '{}'

{
    "code": 0,
    "message": "Too few arguments to paraBaseNoReturn, 0 passed and at least 2 expected"
}
nova -h127.0.0.1 -p8100 -mcom.yourcompany.demo.service.demoService.complexMethod -a '{"paraBool":true}'

{
    "code": 0,
    "message": "Too few arguments to complexMethod, 1 passed and at least 9 expected"
}
nova -h127.0.0.1 -p8100 -mcom.yourcompany.demo.service.demoService.complexMethod -a '{"paraBool":true, "paraI32": 42,"paraDouble":3.14, "paraString":"hello", "baseStruct":null, "returnList":[1,2,3], "returnSet":null, "returnMap":null, "errorLevel":1}'

{
    "code": 0,
    "message": "Invalid <baseStruct> type, expects object"
}
nova -h127.0.0.1 -p8100 -mcom.yourcompany.demo.service.demoService.complexMethod -a '{"paraBool":true, "paraI32": 42,"paraDouble":3.14, "paraString":"hello", "baseStruct":{}, "returnList":[1,2,3], "returnSet":null, "returnMap":null, "errorLevel":1}'

{
    "code": 0,
    "message": "Invalid <returnList[0]> type, expects object"
}
nova -h127.0.0.1 -p8100 -mcom.yourcompany.demo.service.demoService.complexMethod -a '{"paraBool":true, "paraI32": 42,"paraDouble":3.14, "paraString":"hello", "baseStruct":{}, "returnList":[{}], "returnSet":{}, "returnMap":{}, "errorLevel":1}'

{
    "paraBool": true,
    "paraI32": 42,
    "paraDouble": 3.1400000000000001,
    "paraString": "hello",
    "baseStruct": {
        "propBool": null,
        "propByte": null,
        "propI16": null,
        "propI32": null,
        "propI64": null,
        "propDouble": null,
        "propString": null,
        "errorLevel": null
    },
    "returnList": [
        {
            "propBool": null,
            "propByte": null,
            "propI16": null,
            "propI32": null,
            "propI64": null,
            "propDouble": null,
            "propString": null,
            "errorLevel": null
        }
    ],
    "returnSet": [],
    "returnMap": [],
    "errorLevel": 1
}