首页 > 编程语言 >dremio 测试类SabotNode简单说明

dremio 测试类SabotNode简单说明

时间:2022-10-15 23:12:54浏览次数:81  
标签:dremio java 测试 SabotNode https com

实际上我以前简单说明过dremio 的一些测试类以及如何进行测试一般我们使用BaseTestQuery 就可以了
实际上对于测试dremio 包装了一个SabotNode 类,提供了不带ui 的测试框架能力(server 引擎能力)

SabotNode 提供的能力

SabotNode 是一个dremio 运行依赖的基本组件的包装,了解dremioSabotNode 依赖的组件之后可以更好的学习 dremio

 

 

基本测试使用BaseTestQuery 类

  • 测试类
 
  @BeforeClass
  public static void setupDefaultTestCluster() throws Exception {
    config = SabotConfig.create(TEST_CONFIGURATIONS);
 
    Module module = Optional.ofNullable(SABOT_NODE_RULE.module)
      .map(m -> Modules.combine(m, getDefaultModule())).orElse(getDefaultModule());
 
    SABOT_NODE_RULE.register(module);
 
    openClient();
    localFs = HadoopFileSystem.getLocal(new Configuration());
 
    // turns on the verbose errors in tests
    // sever side stacktraces are added to the message before sending back to the client
    setSessionOption(ExecConstants.ENABLE_VERBOSE_ERRORS_KEY, "true");
  }
openClient 创建SabotNode 
protected static void openClient() throws Exception {
    clusterCoordinator = LocalClusterCoordinator.newRunningCoordinator();
 
    dfsTestTmpSchemaLocation = TestUtilities.createTempDir();
 
    nodes = new SabotNode[nodeCount];
    for(int i = 0; i < nodeCount; i++) {
      // first node has all roles, and all others are only executors
      nodes[i] = SABOT_NODE_RULE.newSabotNode(new SabotProviderConfig(i == 0));
      nodes[i].run();
      if(i == 0) {
        TestUtilities.addDefaultTestPlugins(nodes[i].getContext().getCatalogService(), dfsTestTmpSchemaLocation, true);
      }
    }
 
    client = QueryTestUtil.createClient(config,  clusterCoordinator, MAX_WIDTH_PER_NODE, defaultProperties);
 
    // turn off re-attempts, this needs to be set at the system level as many unit test will
    // reset the user session by restarting the client
    setEnableReAttempts(false);
  }

SabotModule 模块能力

SabotModule 属于一个guice 的标准模块,包含了依赖的模块,可以了解依赖的组件

 

 

测试参考使用

实际上官方测试案例代码还是比较全的,可以了解测试的使用,同时dremio 对于测试包也发布了maven 私服可以方便使用
比如简单source 扩展的测试(执行sql 操作的)

 
public class MyPluginTest extends BaseTestQuery {
    private CrateConf crateConf;
 
    @Before
    public  void initSource(){
        getSabotContext().getOptionManager().setOption(OptionValue.createLong(OptionValue.OptionType.SYSTEM, ExecConstants.ELASTIC_ACTION_RETRIES, 3));
        SourceConfig sc = new SourceConfig();
        sc.setName("cratedb");
        crateConf  = new CrateConf();
        crateConf.host="127.0.0.1";
        crateConf.port=5433;
        crateConf.username="crate";
        sc.setConnectionConf(crateConf);
        sc.setMetadataPolicy(CatalogService.DEFAULT_METADATA_POLICY);
        getSabotContext().getCatalogService().createSourceIfMissingWithThrow(sc);
    }
 
    @Test
    public  void test() throws Exception {
        String query  = "select * from cratedb.doc.demoapp";
        TestResult testResult=  testBuilder()
                .sqlQuery(query)
                .unOrdered()
                .baselineColumns("id", "name")
                .baselineValues(null,    null)
                .go();
    }
}

说明

dremio 组件比较多,代码量也不少,直接通过源码学习不是很好,了解测试类还是比较重要的,可以了解dremio 的运行机制,同时加速功能测试

参考资料

https://www.cnblogs.com/rongfengliang/p/14642625.html
https://www.cnblogs.com/rongfengliang/p/15966269.html
https://www.cnblogs.com/rongfengliang/p/15851639.html
https://github.com/dremio/dremio-oss/blob/d41cb52143b6b0289fc8ed4d970bfcf410a669e8/sabot/kernel/src/test/java/com/dremio/BaseTestQuery.java
https://github.com/dremio/dremio-oss/blob/d41cb52143b6b0289fc8ed4d970bfcf410a669e8/sabot/kernel/src/main/java/com/dremio/exec/ExecConstants.java
https://github.com/dremio/dremio-oss/blob/d41cb52143b6b0289fc8ed4d970bfcf410a669e8/sabot/kernel/src/test/java/com/dremio/exec/server/SabotNode.java

标签:dremio,java,测试,SabotNode,https,com
From: https://www.cnblogs.com/rongfengliang/p/16795303.html

相关文章

  • 自动化测试 - mac安装jenkins并安装allure插件,构建执行pytest自动化用例并产出allure
    背景:jenkins+pytest+allure,产出自动化测试结果步骤如下:一、mac安装jenkins1.方法一:(不推荐,跳过)安装tomcat下载jenkins并放到tomcat的www目录2.方法二:brew安装......
  • F5 LTM fullnat模式测试记录及配置
    基础信息拓扑图F5版本Web:Statistics->Dashboardtmsh:root@(test)(cfg-syncStandalone)(Active)(/Common)(tmos)#showsysversionSys::VersionMainPackage......
  • django seed模型生成测试数据
     安装要安装djangoseed,请使用pip:pipinstalldjango-seed或从源安装:pythonsetup.pyinstall配置将其添加到settings.py:中已安装的应用程序中INSTALLED_A......
  • #yyds干货盘点# 自动化测试的设计与实现
    自动化测试实施与功能测试一样,都有一个流程,只不过手工执行测试用成了编写自动化脚本、调试脚本和执行脚本。自动化测试流程有以下几个步骤:1.制订测试计划当测试项目满足了自......
  • 关于测试的职位与薪水
    做测试这行的,其实涉及的东西很杂,也很泛泛,很难对某种技术有深入的了解,大多只是知其然,而并不知其所以然。这是行业的特点,但也是限制我们发展的制约因素。我相信大多数......
  • Idea运行支付宝网站支付demo踩坑解决及其测试注意事项
    一、前言在一些商城网上中,必不可少的是支付,支付宝和微信比较常见,最近小编也是在研究这一块,看看支付宝怎么进行支付的,支付宝给我们提供了demo和沙箱测试。减少我们的申请的......
  • 测试BAPI ,执行test sequence
    ​同行问了个问题,说执行BAPI后显示成功,但是前台去查看值并没有变化。其实BAPI都是RFC,updatetask模式更新,需要显示的commit,不会隐士提交。所以在SE37下,执行testsequence,把......
  • 单元测试之道junit
    一、分享前提问,一个复杂的功能怎么可以保证高效和质量? A需求例如:我们考虑出租车(Taxi)计价(Calculate)问题:l 不大于2公里时只收起步价6元l 超过2公里......
  • 关于ansible-通过Ad-hoc和playbook-对linux主机的连接性测试
    环境:被控主机都是linux主机,不过好几种发行版本,但是笔者都还是设计了统一的标准1、主控和被控端都是Linux操作系统,都是有ansible用户的2、主控通过ssh-key的私钥登录到被......
  • 表与索引分布在不同表空间,删除其中一个表空间的测试
    文档课题:表与索引分布在不同表空间,删除其中一个表空间的测试.数据库:oracle11.2.0.464位1、环境准备sys@ORCL2022-10-1409:49:15>createtablespaceapp1tbsdatafile'......