首页 > 其他分享 >基于jvm-sandbox的mock项目:iMock 实现过程遇到的问题及解决

基于jvm-sandbox的mock项目:iMock 实现过程遇到的问题及解决

时间:2023-03-14 14:24:57浏览次数:39  
标签:iMock 服务 sandbox jvm java class mock

imock项目地址https://github.com/chufusheng/imock-web,作者很nice,中间沟通了很多次,感谢支持!!!

 

团队年度目标有一个搭建Mock平台任务,落到了我头上。

1、首先明确团队的需求

请求+响应由用户自己定义

启用,返回定义的响应结果

停用,返回自己服务的结果

2、调研分为两种方案

2.1 jvm-sandbox的mock服务,底层方法级别,功能满足,但操作相对复杂

2.2 Moco的mock服务,满足使用,简单易操作,团队想要平台级别,如果只是一个小工具的话有点勉强

3、方案实现过程

3.1 调研过程,开发基于阿里中间件 jvm-sandbox的mock服务,是Java方法级别的mock,操作就是监听指定方法,返回指定的mock内容。

3.2、阿里官方提供的demo「修复的钟」实现完成(网上很多不体现具体操作了)

目的:a.理解jvm-sandbox的mock的实现原理; b.给leader过程演示使用

缺点:被测试服务中【手动】接入mock;以demo作为基础可以做一个mock工具使用也可以支持。

Ø 手动安装sandbox;

Ø 手动查询被测试服务PID;

Ø 手动启动sandbox;

3.3imock的搭建

看到作者在GitHub上的贴图,感觉很适合做为一个平台项目使用,继续往下走。

下完后端和前端代码,编译前端代码各种配置冲突,看到后端有提供html页面,弃用了前端服务,精力有限啊。。

编译后端代码,解决各种冲突,开始本机装的mysql8以上,java8,后面还是换了mysql5(建议用mysql5),pom文件直接用作者的就可以。

 

第一步:数据初化 https://github.com/chufusheng/imock/tree/main/bin/sql 

创建2张表,顺利完成。

第二步:启动mock服务管理后台 mock-web

mysql5+java8,配置好idea基本上不会有配置冲突,可以编译成功,服务也就起来了;

第三步:启动前端项目 imock-web(跳过)

第四步:安装mock-module(默认会安装jvm-sandbox)

本地安装 到项目下的bin目录执行 install-local.sh;「提示⚠️:GitHub上作者提供的文件中命令需要修改。作者直接邮件发了我一份,完美解决」

远程安装到目标应用curl -s https://kunchu.oss-cn-beijing.aliyuncs.com/install-troublemaker.sh |sh「项目还没部署到服务器,暂时没用到」

第五步:配置目标应用

通过配置文件配置 进入根目录下的隐藏目录 ~/.sandbox-module/cfg 修改mock.properties「提示⚠️:mock.host=http://127.0.0.1:8003,这个是mock服务的地址」

 

 

 

启动被测应用时带上 java 环境变量「上面已经配置了app.name 、app.env,这里不用带」

 

 

第六步:启动

ü 通过jps查看 被测应用的java 进程 比如 1234(启动被测服务的终端上,会直接显示进程号,直接复制使用)

ü 到根目录 ~/sandbox/bin 执行 ./sandbox.sh -p 1234

ü 被测试服务与mock服务建立心跳(这里之前一直没有获取到被测服务的应用,排查了好几遍debug日志,最后和作者沟通后,发现是配置的mock.host是被测服务的

标签:iMock,服务,sandbox,jvm,java,class,mock
From: https://www.cnblogs.com/mimihuhudeliwu/p/17214745.html

相关文章

  • JVM 三色标记法
    三色标记(Tri-Color-Marking)微信公众号:运维开发故事,作者:老郑垃圾收集器在并发标记的过程中,执行标记期间应用线程还在并行运行,对象间的引用关系时刻发生变化,垃圾收集器在标记......
  • SPECJVM2008的简单结果
    SPECJVM2008的简单结果摘要前面两台学习了简单使用.今天进行一下简单的数据采集.背景我这边先测试使用startup的测试脚本startup主要是单线程进行测试的.其......
  • SPECJVM2008 再学习
    SPECJVM2008再学习摘要昨天的太水了感觉今天有必要再水一点..存在的问题默认进行启动sunflow必定过不去.一般的解决办法要求进行重新编译但是我不知道怎么下......
  • Docker设置JDK17的JVM启动参数踩坑
    背景需求中需要接入腾讯广告的SDK,在编写完代码进行自测时,直接报错,提示Unabletomakeprotectedfinaljava.lang.Classjava.lang.ClassLoader.defineClass堆栈信息如......
  • JVM调优
    参考文档;java3y《对线面试官》 一般来说的优化顺序通常是关系型数据库先到瓶颈,首先排查数据库问题索引、语句、是否引入分布式缓存、是否需要分库分表等然后......
  • jvm配置+OmitStackTraceInFastThrow 导致不打印日志具体信息
    jvm配置+OmitStackTraceInFastThrow导致不打印日志具体信息参考https://blog.51cto.com/u_15246373/5363973最后查到该问题的解决方法有三种1、查询历史日志,如果日志......
  • jvm参数介绍以及参数优化
    java-Xms64m#JVM启动时的初始堆大小-Xmx128m#最大堆大小-Xmn64m#年轻代的大小,其余的空间是老年代-XX:MaxMetaspaceSize=128m#-XX:CompressedClassSpaceSize......
  • JVM
    JVM内存模型简图   程序计数器:jvm中的PC寄存器是对物理PC寄存器的一种抽象模拟。用来存储指向下一条指令的地址,由执行引擎读取下一条指令。不存在内存溢出本地方......
  • Java核心机制:JVM
    吾心安处即吾乡。吾乡何处不可眠1.Java语言的优缺点Java确实是从C语言和C++语言继承了许多成份,甚至可以将Java看成是类C语言发展和衍生的产物。“青出于蓝,而胜于蓝”......
  • Java分布式应用:深入了解JVM
    第三部分深入理解JVMJava代码的执行过程Java源码编译机制javac将java源码转换成javaclass字节码java运行javaclass字节码Java编译后产生的是字节码,在运行的时候将字......