<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    paulwong

    「測(cè)試」 - 接口測(cè)試 & mock工具M(jìn)oco

    當(dāng)需要調(diào)用第三方HTTP接口時(shí),別人的接口還沒完成,可先根據(jù)接口定義文檔,返回適當(dāng)?shù)臄?shù)據(jù),以便開發(fā)。

    在LINUX上的部署結(jié)構(gòu)為:
    ├── boot
    │   ├── moco-runner-1.1.0-standalone.jar
    │   └── .version
    ├── foo.json
    ├── logs
    │   ├── back
    │   └── moco.log
    ├── moco.sh
    └── startup-moco.sh

    .version文件:
    /path/to/boot/moco-runner-1.1.0-standalone.jar 1.1.0

    moco.sh
    #!/usr/bin/env bash

    # Ensure this file is executable via `chmod a+x moco`, then place it
    # somewhere on your $PATH, like ~/bin. The rest of moco will be
    # installed upon first run into the ~/.moco directory.

    if [ `id -u` -eq 0 ] && [ "$MOCO_ROOT" = "" ]; then
        echo "WARNING: You're currently running as root; probably by accident."
        echo "Press control-C to abort or Enter to continue as root."
        echo "Set MOCO_ROOT to disable this warning."
        read _
    fi

    echo $*

    #export MOCO_HOME="$
    {MOCO_HOME:-"$HOME/.moco"}"
    export MOCO_HOME=$(cd `dirname $0`; cd boot; pwd)
    VERSION_LOG_FILE="$MOCO_HOME/.version"

    # Determine the Java command to use to start the JVM.
    if [ -n "$JAVA_HOME" ] ; then
        if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
            # IBM's JDK on AIX uses strange locations for the executables
            JAVACMD="$JAVA_HOME/jre/sh/java"
        else
            JAVACMD="$JAVA_HOME/bin/java"
        fi
        if [ ! -x "$JAVACMD" ] ; then
            die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME

    Please set the JAVA_HOME variable in your environment to match the
    location of your Java installation."
        fi
    else
        JAVACMD="java"
        which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.

    Please set the JAVA_HOME variable in your environment to match the
    location of your Java installation."
    fi

    if [ "$HTTP_CLIENT" = "" ]; then
        if type -p curl >/dev/null 2>&1; then
            if [ "$https_proxy" != "" ]; then
                CURL_PROXY="-x $https_proxy"
            fi
            HTTP_CLIENT="curl $CURL_PROXY -f -L -o"
        else
            HTTP_CLIENT="wget -O"
        fi
    fi

    function download_failed_message 
    {
        echo "Failed to download $1"
        echo "It's possible your HTTP client's certificate store does not have the"
        echo "correct certificate authority needed. This is often caused by an"
        echo "out-of-date version of libssl. Either upgrade it or set HTTP_CLIENT"
        echo "to turn off certificate checks
    :"
        echo "  export HTTP_CLIENT=\"wget --no-check-certificate -O\" # or"
        echo "  export HTTP_CLIENT=\"curl --insecure -f -L -o\""
        echo "It's also possible that you're behind a firewall haven't yet"
        echo "set HTTP_PROXY and HTTPS_PROXY."
    }

    function download 
    {
        $HTTP_CLIENT "$2.pending" "$1"
        if [ $? == 0 ]; then
            # TODO
    : checksum
            mv -f "$2.pending" "$2"
        else
            rm "$2.pending" 2> /dev/null
            download_failed_message "$1"
            exit 1
        fi
    }

    function parse_tag 
    {
       tag_value=`grep "<$2>.*<.$2>" $1 | sed -e "s/^.*<$2/<$2/" | cut -f2 -d">"| cut -f1 -d"<"`
    }

    function parse_maven_metadata 
    {
        MOCO_METADATA_URL="http
    ://repo1.maven.org/maven2/com/github/dreamhead/moco-runner/maven-metadata.xml"
        MOCO_METADATA="/tmp/maven-metadata.xml"
        download $MOCO_METADATA_URL $MOCO_METADATA
        parse_tag $MOCO_METADATA latest
        LATEST_VERSION=$tag_value
    }

    function parse_standalone_latest_url 
    {
        parse_maven_metadata
        VERSION=${LATEST_VERSION%
    }
        LATEST_MOCO_STANDALONE_JAR="moco-runner-$VERSION-standalone.jar"
        MOCO_STANDLONE_URL="http://repo1.maven.org/maven2/com/github/dreamhead/moco-runner/$LATEST_VERSION/$LATEST_MOCO_STANDALONE_JAR"
    }

    function install 
    {
        echo "Install moco"
        echo "Parse the latest version of moco"
        parse_standalone_latest_url
        echo "Download the latest moco
    : $LATEST_VERSION"
        MOCO_STANDALONE="$MOCO_HOME/$LATEST_MOCO_STANDALONE_JAR"
        echo "$MOCO_STANDALONE $LATEST_VERSION" >> $VERSION_LOG_FILE
        download $MOCO_STANDLONE_URL $MOCO_STANDALONE
    }

    function load_current_version 
    {
        read MOCO_STANDALONE CURRENT_VERSION < $VERSION_LOG_FILE
        if [[ "$(uname)" -ne "Darwin" && "$(expr substr $(uname -s) 2 6)" == "CYGWIN"   ]];then
            MOCO_STANDALONE=`cygpath -m "$MOCO_STANDALONE"`
        fi
    }

    function usage 
    {
      printf "
    options
    :
           help      show help
           start     start server, e.g. moco start -p 12306 -c configfile.json
           shutdown  shutdown moco server 
           upgrade   upgrade moco
    "
    }

    if [ ! -e "$MOCO_HOME" ]
    then
        mkdir "$MOCO_HOME"
        install
    fi

    if [ "$1" = "start" ]; then
        echo "Starting"
        load_current_version
        exec "$JAVACMD" -jar "$MOCO_STANDALONE" $*
    elif [ "$1" = "http" ]; then
        echo "Starting HTTP server"
        load_current_version
        exec "$JAVACMD" -jar "$MOCO_STANDALONE" $*
    elif [ "$1" = "https" ]; then
        echo "Starting HTTPS server"
        load_current_version
        exec "$JAVACMD" -jar "$MOCO_STANDALONE" $*
    elif [ "$1" = "socket" ]; then
        echo "Starting Socket server"
        load_current_version
        exec "$JAVACMD" -jar "$MOCO_STANDALONE" $*
    elif [ "$1" = "shutdown" ]; then
        echo "Shutting down server"
        load_current_version
        exec "$JAVACMD" -jar "$MOCO_STANDALONE" $*
    elif [ "$1" = "upgrade" ]; then
        echo "Check the new version"
        parse_maven_metadata
        load_current_version

        if [ "$LATEST_VERSION" = "$CURRENT_VERSION" ]; then
            echo "The current version of moco is the latest"
        else
            echo "Upgrading"
            rm $VERSION_LOG_FILE
            install
        fi
    elif [ "$1" = "version" ]; then
        load_current_version
        echo "Moco version: $CURRENT_VERSION"
    elif [ "$1" = "help" ]; then
        usage
    else
        usage
    fi

    這是根據(jù)GIT上的原始文件作的修改。

    startup-moco.sh
    CMD_PATH=$(cd `dirname $0`; pwd)

    # 項(xiàng)目日志輸出絕對(duì)路徑
    LOG_DIR=$
    {CMD_PATH}"/logs"
    LOG_FILE="moco.log"
    LOG_PATH="$
    {LOG_DIR}/${LOG_FILE}"

    # 當(dāng)前時(shí)間
    NOW=`date +'%Y-%m-%m-%H-%M-%S'`
    NOW_PRETTY=`date +'%Y-%m-%m %H:%M:%S'`

    # 啟動(dòng)日志
    STARTUP_LOG="================================================ $
    {NOW_PRETTY} ================================================\n"

    # 日志備份目錄
    LOG_BACK_DIR="$
    {LOG_DIR}/back/"

    # 如果logs文件夾不存在,則創(chuàng)建文件夾
    if [[ ! -d "$
    {LOG_DIR}" ]]; then
      mkdir "$
    {LOG_DIR}"
    fi

    # 如果logs/back文件夾不存在,則創(chuàng)建文件夾
    if [[ ! -d "$
    {LOG_BACK_DIR}" ]]; then
      mkdir "$
    {LOG_BACK_DIR}"
    fi

    # 如果項(xiàng)目運(yùn)行日志存在,則重命名備份
    if [[ -f "$
    {LOG_PATH}" ]]; then
        mv $
    {LOG_PATH} "${LOG_BACK_DIR}/${APPLICATION}_back_${NOW}.log"
    fi

    # 創(chuàng)建新的項(xiàng)目運(yùn)行日志
    echo "" > $
    {LOG_PATH}

    # 可支持多個(gè)json配置文件
    $CMD_PATH/moco.sh http -p 8088 -g "${CMD_PATH}/root.json" > ${LOG_PATH} 2>&1 &

    # 打印啟動(dòng)日志
    echo -e $
    {STARTUP_LOG}

    root.json
    [
        
    {
            "context"
    : "/service-a",
            "include": "foo.json"
        
    },
        
    {
            "context"
    : "/service-b",
            "include": "bar.json"
        
    }
    ]

    foo.json
    [
        
    {
            "request"
    : {
                "method": "post",
                "forms": {
                    "method": "uploadKycInfo"
                
    }
            },
            "response": 
    {
                "json"
    : {
                    "response": {
                        "subcode": "10000",
                        "submsg": "Success",
                        "sndDt": "20210121101800",
                        "remark": "上傳驗(yàn)證基本信息",
                        "msgBody": {
                            "merOrdrNo": "A00120210121654321",
                            "retCode": "00000",
                            "retMsg": "成功/處理完成",
                            "remark": "上傳詳情或上傳信息的簡(jiǎn)要描述"
                        
    }
                    },
                    "code": "0000",
                    "msg": "處理完成",
                    "sign": "DF2659FE3EB8184561135D9F55F5EF5"
                }
            }
        }
    ]

    訪問路徑:
    http://ip:port/service-a/

    https://github.com/dreamhead/moco/blob/master/moco-doc/apis.md
    https://zhuanlan.zhihu.com/p/60076337 
    https://www.programmersought.com/article/68272293688/

    posted on 2021-01-21 14:09 paulwong 閱讀(596) 評(píng)論(0)  編輯  收藏 所屬分類: RESTFUL-API


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲综合在线另类色区奇米| 精品日韩亚洲AV无码一区二区三区 | 精品一区二区三区无码免费视频| 一二三四影视在线看片免费 | 亚洲精品97久久中文字幕无码| 久久av无码专区亚洲av桃花岛| 精品久久久久久久久亚洲偷窥女厕| a毛片免费全部在线播放**| 最近中文字幕免费mv视频8| 亚洲热妇无码AV在线播放| 亚洲一卡一卡二新区无人区| 美女巨胸喷奶水视频www免费| 成人免费看吃奶视频网站| 亚洲AV无码久久精品成人| 色噜噜的亚洲男人的天堂| 1000部无遮挡拍拍拍免费视频观看| 一本色道久久88综合亚洲精品高清 | 亚洲国产精品无码专区在线观看| 亚洲欧美成人av在线观看| 日本人成在线视频免费播放| 国产一精品一aⅴ一免费| 亚洲小视频在线播放| 国内精品免费久久影院| 国产高清免费观看| 亚洲国产成人久久| 国产一区二区免费视频| 日韩精品成人亚洲专区| 亚洲综合一区无码精品| 1000部夫妻午夜免费| 亚洲处破女AV日韩精品| 高清免费久久午夜精品| 在线观看视频免费国语| 亚洲电影免费观看| 免费日本一区二区| 美腿丝袜亚洲综合| 免费一级毛suv好看的国产网站| 成年女人毛片免费播放视频m| 亚洲最大视频网站| 午夜视频在线免费观看| 亚洲精品你懂的在线观看| 一级毛片a免费播放王色电影 |