通过iMock学习Jvmsandbox

news2024/11/24 15:28:10

Jvm-sandbox

  • Jvm-sandbox
    • 基于Jvm-sandbox的Mock平台iMock
      • iMock的工程学习
      • iMock怎么写的(sandbox的module应该怎么写)

Jvm-sandbox

Jvm-sandbox是阿里开源的一款java的沙箱,看网上的介绍在沙箱里你可以做你能想到的奇妙的事情。

基于Jvm-sandbox的Mock平台iMock

sandbox已经面世好久了,各个厂商之间也基于sandbox做了各自的能力,监控,测试,回放等等等等。
iMock是一个开源的Mock平台,由于基于sandbox,提供了方法级别的mock能力

iMock的工程学习

iMock分成了三部分 web,后台,插件
然后这部分学习重点学习插件部分

  • 前端web页面
  • 后端java的后台服务
  • 基于sandbox开发的插件
    主要学习sandbox的这个插件的开发思路。
    由于前端的与插件距离较远,我在看的过程中是结合后端的服务 & 插件的代码一起来看来了解的
    后端的结构:
    我习惯从Controller层去看
    后端的服务主要提供了三个Controller
    一个是日志信息相关的Controller
    一个是模块配置相关的Controller
    一个是模块信息相关的Controller
    通过内部提供的能力看、模块信息更像是与sandbox的agent交互的过程
    在这里插入图片描述
    那么在这个controller里面包含了哪些方法,这些方法又是如何对应到agent里面去的呢
    下图中提供了一系列的方法包含了激活mock方法,冻结mock方法,还有安装,看起来就像是与agent相关的
    在这里插入图片描述
    然后我们看一下激活的相关的方法的具体实现
    在这里插入图片描述
    这里走到了一个执行器,这个执行器应该就是包含了具体要怎么与agent进行交互的地方
    这个地方看起来在调用的过程中给定了三个参数:activeURI,params,还有一个枚举ACTIVE
    activeURI包含了哪些的内容:
private static String activeURI = "http://%s:%s/sandbox/default/module/http/sandbox-module-mgr/active?ids=mock"; 
//这个地方怎么用的,这个路径又是对应的谁
    // 这个地方来源于sandbox里的sandbox.shell 的sandbox_debug_curl的命令,这个地方声明了怎么使用http对sandbox进行操作
    // 格式应该为http://${host}:${port}/sandbox/${TARGET_NAMESPACE}/${1}
    // host: jvmsandbox所在的ip,port: jvmsandbox所在的端口,ids: 模块id,这里为mock, ${1}是模块的id
    // 那么对应的TARGET_NAMESPACE对应的应该是:有一个目标的命名空间,这个命名空间是default,那么对应的${TARGET_NAMESPACE}就是default
    // 这里用的http后面的sandbox-module-mgr,是因为要使用sandbox-modul-mgr提供的模块管理功能,这部分来源于与jvm-sandbox对接的地方

这个执行器里面又包含了什么
在这里插入图片描述
我们看到这个执行器从数据库中根据需要mock的相关应用的信息获取到了具体的module信息
之后,使用http的方式请求了上面描述的那个URI那这个URI又是啥呢
我们去看一下sandbox都提供了哪些的http接口,又是如何提供的。
这个时候我们发现,在整个iMock提供的接口里面并没有发现这个URI,那么一定是在实现这个sandbox的Module的时候引入了一些依赖包,里面包含了这些信息
我们去找找sandbox的源码里有没有这些信息
https://github.com/alibaba/jvm-sandbox
把sandbox的源码down下来看一下里面究竟有没给暴露这些内容出去
通过官方的例子,我们与sandbox进行attach的时候都用的是sandbox.sh文件暴露的端口,我们看看这个里面有什么东西,是否能够提供一些有效的思路。
果然在里面发现了一个方法名:sandbox_curl 而这个方法又引用了另一个方法:sandbox_debug_curl
而这个里面有个方法真的和我们拼出来的那个链接长得好像

curl -N -s "http://${host}:${port}/sandbox/${TARGET_NAMESPACE}/${1}" ||
    exit_on_err 1 "target JVM ${TARGET_JVM_PID} lose response."

那我们就来比对一把看看究竟是不是一样的,这些参数携带过来的能否一一的对应上呢
这个时候我们发现了一个 【TARGET_NAMESPACE】这个是个什么东西
我们在sandbox.sh文件中找到了这部分的描述
在这里插入图片描述
这里有个TARGET_NAMESPACE, 还有个DEFAULT_NAMESPACE这俩都是啥
我们继续找看到了sandbox.sh里面有这部分描述
在这里插入图片描述
看字面意思:如果我们在请求的时候携带了ARG_NAMESPACE这个参数那么使用ARG_NAMESPACE参数,如果没有携带,那么使用的就是DEFAULT_NAMESPACE,然后这个namespace默认又是default,所以我们在看一下请求的时候的链接,传过来的就是default,那么这个就是一个default了,也就是不论你有什么空间,iMock用的就是默认的空间。
然后呢后面参数我们能对应上吗
其实我们看一下sandbox_curl方法,这个是否能够对上勒

function sandbox_curl() {
  sandbox_debug_curl "module/http/${1}?1=1${2}"
}

这里在调用sandbox_debug_curl的时候,增加了module/http相关的内容,但是还缺少一部分我们没有找到:sandbox-module-mgr/active?ids=mock 他在sandbox里面
在这里插入图片描述
如果是active我们找到active命令的地方,这里找到了sandbox-module-mgr这个地方
在这里插入图片描述
定位到这里,这里是sandbox的模块管理的地方,那也就对了,是否激活mock的能力确实应该在这里
这里与sandbox的链路就被梳理清楚了。但是具体的写法呢

iMock怎么写的(sandbox的module应该怎么写)

看看sandbox的官方教程怎么写的:
模块的生命周期:链接: link
模块的编写方式:链接: link
对应到iMock的里面就是MockModule,实现了Module和Module LifeCycle的接口来控制Module的具体动作和生命周期
initialize则是初始化Mock信息的地方,在这里可以完成具体的Mock工作,因为这些信息都被保存在了数据库中,把这些信息读出来找到就可以实现这部分的能力了,具体就要看怎么设计这个Mock的能力了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1632874.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

图题目:可以到达所有点的最少点数目

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法思路和算法代码复杂度分析 题目 标题和出处 标题:可以到达所有点的最少点数目 出处:1557. 可以到达所有点的最少点数目 难度 4 级 题目描述 要求 给定一个有向无环图,包含编…

Web3与智能合约:科技革新下的新金融时代

在当今数字化时代,Web3和智能合约正在共同塑造着金融领域的未来。Web3作为下一代互联网的重要组成部分,以其去中心化、安全性和透明性为核心特点,正推动着金融行业向着数字化和去中心化的方向发展。而智能合约作为Web3技术的关键应用之一&…

如何将本地项目上传到Github(SSH方式)

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

OSPF基本配置

原理概述 OSPF 是一种应用非常广泛的基于链路状态的动态路由协议,它具有区域( Area )化的层次结构,扩展性好,收敛速度快,适合部署在各种规模的网络上。 在 OSPF 中,每台路由器都必须有一个 Router-I…

在线商城客服系统,多用户电商系统可API对接客服软件

在当今数字化时代,在线商城客服系统和多用户电商系统之间的无缝API对接已成为电商行业的重要趋势。这种整合为商家提供了更高效的客户服务和管理方式,提升了用户体验和业务效率。其中,商淘云电商客服系统作为一款强大的客服管理工具&#xff…

Java Swing游戏开发学习26

内容来自RyiSnow视频讲解 这一节讲的是Inventory背包,类似RPG游戏中人物角色放置装备、药品、武器、宝石等物品的一个若干行若干列的表格窗口。 可以显示装备物品,并选择它们。 前言 作者说这一节可能是第二部分里面爬起来最高的山峰。 效果 最后还有…

Unity3d 学习之按钮绑定事件

创建测试脚本 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;public class myTest : MonoBehaviour {// Start is called before the first frame updatepublic Button _codeBindBtn null;void Start(){if (_codeBi…

IC设计数据传输 如何能保障安全高效?

IC(集成电路)设计数据,对于IC设计企业来说,其重要性不言而喻。所以IC设计数据传输过程中,其安全性和效率,也需要有保障。 首先我们来看看IC设计数据为什么重要,其重要性体现在多个方面&#xff…

远距离、高品质、低延迟、高保真——SA316无线音频模块带您探索新的音频体验

SA316系列产品分为发射端模块SA316S-TX,SA316F30和接收端模块SA316-RX,该系列方案采用了无线高品质的语音传输芯片来设计,它可以支持外部 PCM / IIS 双模数字音频接口,同时模块为客户提供了标准化的串行接口,使用者可通过串口指令…

C语言基础:初识指针(二)

当你不知道指针变量初始化什么时,可以初始化为空指针 int *pNULL; 我们看NULL的定义,可以看出NULL是0被强制转化为Void* 类型的0;实质还是个0; 如何避免野指针: 1. 指针初始化 2. 小心指针越界 3. 指针指向空间…

算法工程师——算法岗的分类及要求汇总

算法岗工程师 根据 Talent Seer 人才报告显示,全球 AI 从业者总人数约有 30 万,还是供不应求,其中 AI 技术专家(具有相关领域博士学位及 3 年以上工作经验的)约有 3.65 万。 简介 对于计算机专业的毕业生而言,算法岗基本上就是 「高薪」 的代名词。 在当今 IT 行业,算…

vue3.2+vite+unocss原子化配置

1、安装unocss:npm install unocss 2、vite.config.ts中配置: 3、创建unocss自己的ts文件:uno.config.ts 根路径下创建, 4、在创建好的uno.config.ts文件中编写如下代码: // uno.config.ts import {defineConfig,prese…

如果把软路由的网段更换成169.254.0.0/16会咋样?

前言 这几天有小伙伴在折腾软路由系统,然后问题就来了。 他咨询的是:为啥电脑连接软路由之后,无法访问软路由的管理页? 嗯。。。确实不是什么大事。但不注意看,还以为软路由没有正常获取到ip。 熟悉网络的小伙伴们都…

【统计推断】-01 抽样原理之(三)

文章目录 一、说明二、抽样分布三 均值抽样分布3.1 有限母体无放回抽样3.2 有限母体有放回抽样3.3 无限母体 四、比例抽样分布五、和差抽样分布 一、说明 上文中叙述母体和抽样的设计;以及抽样分布的概念,本篇将这种关系定量化,专门针对抽样的…

5V升8.4V2A同步升压恒压WT3213

5V升8.4V2A同步升压恒压WT3213 WT3213同步升压型直流/直流转换器以其微小的尺寸和卓越的能效而广受欢迎。这款设备在设计上的巧妙,包含电流模PWM控制环路、误差放大器、斜线补偿电路、比较器以及功率开关等关键元件,共同构成了它的特殊性能。 在细节上…

mysql-sql-练习题-1

文章目录 环境注释建表 5张建库学生表课程表教师表分数表总表 语法书写顺序in学过/没学过完全相同 环境 Windows cmd(普通用户/管理员) mysql -uroot -pmysql版本,模式(可自定义) select version(),global.sql_mode…

选对伪原创改写软件,文章写作不犯难!

文章写作在当下火热的自媒体的行业中是一项非常重要的技能,只要是参与做自媒体的朋友,想要在内容输出方面不出现困难的情况,那么文章写作的技能基本要具备,但是我们依然能看到有很多不擅长写作的朋友也做起了自媒体,并…

为什么选择福汇外汇?

福汇外汇凭借其品牌信誉、丰富的交易产品、先进的交易平台、高杠杆和低保证金要求、专业的客户服务、严格的监管以及便捷的出入金方式,成为了许多投资者选择的外汇交易平台。 为什么选择福汇外汇? 1、品牌信誉:福汇外汇是全球最大的零售外汇交…

深度学习-自动求导

目录 向量链式法则标量链式法则 拓展到向量例题1例题2 符号求导数值求导自动求导计算图自动求导的两种模式链式法则正向累积(从x出发)反向累积(反向传递--先计算最终的函数即y)反向累积总结 自动求导计算y关于x的梯度,…

Virtualbox7.0.10--创建虚拟机

前言 下载Virtualbox7.0.10,可参考《Virtualbox–下载指定版本》 Virtualbox7.0.10具体安装步骤,可参考《Virtualbox7.0.10的安装步骤》 Virtualbox7.0.10创建虚拟机,可参考《Virtualbox7.0.10–创建虚拟机》 Virtualbox7.0.10安装Ubuntu20.0…