開源一款超實用的一套dubbo測試工具

不知道你是否在工作中有遇到過類似情況:
dubbo接口調試複雜,需要通過telnet命令或者通過consumer調用來觸發。
telnet語句參數格式複雜,每次編寫都要小心謹慎,一旦出錯又需重來。
複雜對象參數傳參調用接口複雜,編寫java api調用接口時間成本較高。

在這裏插入圖片描述
上述這些坑我在工作中都有遇見過,發現大部分耗時都會卡在調用dubbo服務做自測的階段,所以後來花費了寫業餘時間寫了一款高效的dubbo測試工具開源給大家使用。
這款工具目前已在實際工作中應用半年多,基本功能已經成熟,後續依舊會進行版本維護。
相關的代碼地址爲:
https://gitee.com/IdeaHome_admin/dubbo-proxy-tools

ps: 如果大家喜歡,希望能給出一顆寶貴的star


關於如何部署本工具


下載了gitlab的代碼之後,你會看到有兩個文件包:iubbo-proxy和iubbo-proxy-web,它們分別正好對應了後端代碼和前端代碼。
在這裏插入圖片描述

前端代碼的部署

前端採用非常簡單的vue技術,只需要將文件部署到一臺nginx上邊即可運作。
前端的默認訪問頁面是test-dubbo-web.html。

但是有兩個小點需要改動下js配置
constants.js
這份文件裏面編寫了對應的請求server地址,這塊是對應了後端服務的url。
在這裏插入圖片描述
由於請求dubbo接口需要通過zk註冊中心來拉去服務名列表,所以需要在iubbo.x.js裏面的commonzk中做配置:
在這裏插入圖片描述
這裏的host是一個別稱,相當於一個key用於供前端展示,實際上傳輸給後端的是用ip這個值。

後端代碼的部署

後端工程採用了springboot框架技術,核心的配置放在了application.properties裏面:

server.port=7089
application.invoker.name=iubbo-invoker-proxy

spring.datasource.druid.password=
spring.datasource.druid.username=
spring.datasource.druid.url=jdbc:mysql://127.0.0.1:3306/iubbox-proxy
spring.datasource.druid.driver-class-name=com.mysql.jdbc.Driver

mybatis-plus.configuration.map-underscore-to-camel-case=true

spring.redis.port=6379
spring.redis.host= 127.0.0.1

然後倒入建表的sql:

CREATE TABLE `t_dubbo_invoke_req_record` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) DEFAULT NULL COMMENT '用戶id',
  `arg_json` varchar(2500) COLLATE utf8_bin DEFAULT NULL COMMENT 'dubbo請求參數',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP,
  `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;


CREATE TABLE `t_user` (
  `id` int(9) NOT NULL AUTO_INCREMENT,
  `username` varchar(60) COLLATE utf8_bin DEFAULT NULL,
  `password` varchar(30) COLLATE utf8_bin DEFAULT NULL,
  `createTime` datetime DEFAULT CURRENT_TIMESTAMP,
  `updateTime` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

t_user 用於記錄相關的用戶賬號,方便於保存用戶賬號信息。
t_dubbo_invoke_req_record 用於記錄請求dubbo接口的用例信息。

最後就是啓動入口類org.iubbo.proxy.DubboInvokerApplication

啓動成功截圖
在這裏插入圖片描述

關於本工具的使用教程

本工具區分了已登錄賬號和未登錄賬號兩類角色,已登錄賬號的使用者可以對請求的用例進行保存,方便下一次提取信息,未登錄賬號雖然沒有保存用例的功能,但是不影響其使用本工具進行測試。

首頁截圖:
在這裏插入圖片描述

1.指定zk地址
在測試dubbo接口之前,我們通常都會去拉取一遍zk上邊的service地址,操作如下圖:
先在文本框點擊,輸入和js配置有關的字母或數字會有模糊匹配的選項供各位選擇:
在這裏插入圖片描述
選中了zk地址之後,再去點擊拉取zk地址按鈕(以前有同事剛接觸這個工具的時候,這裏被繞蒙了~~)

拉取zk地址的時候,後端會根據文章上邊提到的js配置裏面的ip值去拉取,拉取成功會有相關提示:
在這裏插入圖片描述
接下來便是篩選dubbo服務地址的功能,在拉取zk地址下方有一個下拉框,這裏面此時應當會被注入zk上所有dubbo服務列表的名稱。
在這裏插入圖片描述
選擇對於的service名稱,然後在右邊的“請輸入名稱”文本框中輸入該接口對應的方法名稱(一定要名稱對應)
這裏以調用MsgService的sendMsg方法爲例:
在這裏插入圖片描述
然後配置相關的參數和名稱:
選擇對應參數類型和值:
在這裏插入圖片描述
最後發起請求:
在這裏插入圖片描述
在基礎參數配置項的旁邊,還有一個模塊是專門配置consumer端的額外內容,這些參數項都是在平時工作中可能會應用到的場景,需要的時候可以進行配置。這裏面也配備了工作中非常常用的直連選項。

我個人最喜歡使用的還是直連功能,因爲在開發過程中,經常需要直連機器做自測:
在這裏插入圖片描述

假如說希望保存自己曾經發送過的dubbo測試用例,那麼你只需先進行登錄賬號,賬號直接往t_user表裏面寫入一條數據即可:
在這裏插入圖片描述
在首頁的右上方有個進入登錄頁面按鈕:
在這裏插入圖片描述
點擊登錄
在這裏插入圖片描述

如何保存請求用例:
在這裏插入圖片描述
保存用例這裏有些小瑕疵,需要用戶手動刷新下頁面才能顯示保存的用例信息:

在這裏插入圖片描述
點擊選用參數,則頁面又會重新回顯之前使用過的請求信息。

特殊參數請求

該工具支持多種開發中常見的參數格式調用,目前支持常規參數
ps:注意這裏的參數格式需要和dubbo方法裏面的參數格式按照相同順序相同類型做映射,否則後端程序會返回找不到對應方法

Java的常用基本類型數據:boolean,short,int,long,double,char,float
Java中常用的包裝類數據:

java.lang.String,
java.lang.Integer,
java.lang.Object,
java.util.List,
java.lang.Class,
java.lang.Long,
java.lang.Boolean,
java.util.Map,
java.util.Date,
java.lang.Float,
java.lang.Double

對於簡單的數據類型傳遞

圖片: https://uploader.shimo.im/f/1MiAoLiD6zADpfVx.png圖片: https://uploader.shimo.im/f/s8WRZPpOOyIn7LWF.png圖片: https://uploader.shimo.im/f/aftGOrdiJK0fUkfs.png

多參數,中英文混合傳遞

圖片

List類型參數的傳遞

圖片

Class類型的參數傳遞

圖片

Map類型的參數傳遞

圖片

Date類型的參數傳遞

圖片

自定義對象參數傳參

如果在實際應用中遇到了這種場景,需要調用以下的接口,那麼這個使用就需要使用自定義參數了:

圖片

圖片

圖片

複雜類型自定義參數傳遞

假設遇到了List類型參數,而且傳輸的List裏面包含有自定義對象,例如下邊這種類型:

List<UserDTO> testUserDtoList(List<UserDTO> userDTOList,Class clazz);

那麼此時的傳參案例可以像下邊這樣來寫:
圖片

易錯點歸納

注意請求的參數順序要和方法對應的參數順序一致,假設服務的方法定義如下:

<T> List<T> getList(List<Long> var1, Class<T> var2);

那麼傳入的參數就必須先填List參數,再寫Class參數。
正確示例:(先寫了List參數,再寫Class參數)
錯誤示例:(先寫了Class參數,再寫List參數)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章