干货|在JVM上测试Apache Kudu应用程序

如果您对此测试有疑问,欢迎联系大数据在线客服,大数据提供数据采集-处理-建模-可视化分析的全方位解决方案,实现企业决策智能化!

话不多说,开始我们今天的主题。

要求

要使用新的测试实用程序,必须满足以下要求:

  • OS

macOS El Capitan (10.11) 或以上

CentOS 6.6+, Ubuntu 14.04+, 或其它Kudu支持的最新Linux发行版

  • JVM

Java 8+

注:Java 7+已弃用,但仍支持

  • 构建工具

Maven 3.1或以上,要求支持os-maven-plugin

Gradle 2.1或以上,要求支持osdetector-gradle-plugin

任何其他可以从Maven下载正确jar的构建工具

构建配置

要使用Kudu测试实用程序,请在类路径中添加两个依赖项:

  • kudu-test-utils依赖
  • kudu二进制依赖

kudu-test-utils依赖项具有用于测试使用Kudu应用的实用程序。 首先,它提供了KuduTestHarness类来管理每个测试的Kudu集群的生命周期。 KuduTestHarness是一个JUnit TestRule,它不仅可以为每个测试启动和停止Kudu集群,还有方法来管理集群并获取预先配置的KuduClient实例,以便在测试时使用。

kudu-binary依赖项包含指定操作系统的原生Kudu(服务器和命令行工具)二进制文件。 为了正在运行的操作系统下载正确的工件,最简单的方法是使用插件(例如os-maven-plugin或osdetector-gradle-plugin)来检测当前的运行时环境。 KuduTestHarness将自动在类路径中查找并使用kudu-binary jar。

警告:kudu-binary模块应仅用于运行Kudu进行集成测试。它永远不应该用于在生产或开发中运行实际的Kudu服务,因为kudu-binary模块包含已从构建系统复制的本机安全相关依赖项,当运行时主机上的操作系统打补丁时并不会被修补。

Maven配置

如果您使用Maven构建项目,请将以下条目添加到项目的pom.xml文件中:

                kr.motd.maven      os-maven-plugin      1.6.2             org.apache.kudu    kudu-test-utils    1.9.0    test        org.apache.kudu    kudu-binary    1.9.0    ${os.detected.classifier}    test  

Gradle配置

如果您使用Gradle构建项目,请将以下条目添加到项目的build.gradle文件中:

plugins {  // Used to find the right kudu-binary artifact with the Gradle  // property ${osdetector.classifier}  id "com.google.osdetector" version "1.6.2"} dependencies {   testCompile "org.apache.kudu:kudu-test-utils:1.9.0"   testCompile "org.apache.kudu:kudu-binary:1.9.0:${osdetector.classifier}"}

测试设置

正确配置项目后,可以使用kudu-test-utils和kudu-binary工件开始编写测试。 这一行代码将确保每个测试自动启动和停止真正的Kudu群集,并通过slf4j输出群集日志记录:

@Rule public KuduTestHarness harness = new KuduTestHarness();

KuduTestHarness具有获取预配置客户端,启动和停止服务器等的方法。下面是一个示例测试,展示了一些功能:

import org.apache.kudu.*;import org.apache.kudu.client.*;import org.apache.kudu.test.KuduTestHarness;import org.junit.*; import java.util.Arrays;import java.util.Collections; public class MyKuduTest {      @Rule    public KuduTestHarness harness = new KuduTestHarness();     @Test    public void test() throws Exception {        // Get a KuduClient configured to talk to the running mini cluster.        KuduClient client = harness.getClient();         // Some of the other most common KuduTestHarness methods include:        AsyncKuduClient asyncClient = harness.getAsyncClient();        String masterAddresses= harness.getMasterAddressesAsString();        List masterServers = harness.getMasterServers();        List tabletServers = harness.getTabletServers();        harness.killLeaderMasterServer();        harness.killAllMasterServers();        harness.startAllMasterServers();        harness.killAllTabletServers();        harness.startAllTabletServers();         // Create a new Kudu table.        String tableName = "myTable";        Schema schema = new Schema(Arrays.asList(            new ColumnSchema.ColumnSchemaBuilder("key", Type.INT32).key(true).build(),            new ColumnSchema.ColumnSchemaBuilder("value", Type.STRING).key(true).build()        ));        CreateTableOptions opts = new CreateTableOptions()            .setRangePartitionColumns(Collections.singletonList("key"));        client.createTable(tableName, schema, opts);        KuduTable table = client.openTable(tableName);         // Write a few rows to the table        KuduSession session = client.newSession();        for(int i = 0; i < 10; i++) { Insert insert = table.newInsert(); PartialRow row = insert.getRow(); row.addInt("key", i); row.addString("value", String.valueOf(i)); session.apply(insert); } session.close(); // ... Continue the test. Read and validate the rows, alter the table, etc. }

有关使用KuduTestHarness的项目的完整示例,请参阅Kudu源代码存储库中的java-example项目。Kudu项目本身使用KuduTestHarness进行所有自己的集成测试。对于更复杂的示例,您可以在Kudu源代码库中探索各种Kudu集成测试。

反馈

Kudu 1.9.0是第一个提供这些测试实用程序的版本。 虽然这些实用程序简化了Kudu应用程序的测试,但总有改进的余地。

欢迎拨打热线或咨询在线客服,我们将帮您转接大数据专业团队,并发送相关资料给您!

标签:大数据解决方案

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年1月19日
下一篇 2019年1月19日

相关推荐

发表回复

登录后才能评论