Kafka Streams is a de­ploy­ment-ag­nos­tic stream pro­cess­ing li­brary writ­ten in Java. Even though Kafka has a great test cov­er­age, there is no easy way to write unit-tests for pro­cess­ing topolo­gies, until now. I re­leased Mocked Streams for Scala, which sim­ply al­lows you to unit-test multi-in­put and out­put state­ful stream topolo­gies (since Apache Kafka >= 0.10.1) with­out Zookeeper and Kafka Bro­kers in your fa­vorite Scala test­ing frame­work e.g. Sca­laT­est and Specs2.

import com.madewithtea.mockedstreams.MockedStreams

val input = Seq(("x", "v1"), ("y", "v2"))
val expe = Seq(("x", "V1"), ("y", "V2"))
val strings = Serdes.String() MockedStreams()
.topology { builder => builder.stream(...) [...] }
.input("topic-in", strings, strings, input)
.output("topic-out", strings, strings, expe.size) shouldEqual expe

Mocked Streams

Mocked Streams 1.0 is a li­brary which al­lows you to do the lat­ter with­out much boil­er­plate code and in your favourite Scala test­ing frame­work. It wraps the org.​apache.​kafka.​test.​Proces­sor­Topol­o­gyTest­Driver class, but adds more syn­tac­tic sugar to keep your test code sim­ple. The fea­tures of the 1.0 re­lease in­clude:

  • Mul­ti­ple input and out­put streams
  • Spec­ify your topolo­gies as a func­tion: (KStream­Builder => Unit)
  • Use .con­fig to pass your Kafka Streams con­fig­u­ra­tion (e.g. Time­stamp ex­trac­tor)
  • Use .out­put­Table to match against the com­pacted table out­put as Map[K,V]
  • Sup­port for Scala 2.11.8
  • Sup­port for Apache Kafka 0.​10.​1.​0

Mul­ti­ple In­puts and Out­puts

val ms = MockedStreams()
.topology { builder => builder.stream(...) [...] }
.input("in-a", strings, ints, inputA)
.input("in-b", strings, ints, inputB)
.stores(Seq("store-name")) ms.output("out-a", strings, ints, expA.size) shouldEqual(expectedA)
ms.output("out-b", strings, ints, expB.size) shouldEqual(expectedB)

Get­ting Started

See the README for using Mocked Streams. For ex­am­ples check out the test code of Mocked Streams it­self. Mocked Streams is also lo­cated in the Maven Cen­tral Repos­i­tory, hence you just need to add:

libraryDependencies += "com.madewithtea" %% "mockedstreams" % "1.0.0" % "test"

If you have any ques­tions or is­sues re­gard­ing Mocked Streams, get in touch via Github. Al­ter­na­tively, you can get in con­tact via mail.

Released Mocked Streams for Apache Kafka的更多相关文章

  1. Apache Samza - Reliable Stream Processing atop Apache Kafka and Hadoop YARN

    http://engineering.linkedin.com/data-streams/apache-samza-linkedins-real-time-stream-processing-fram ...

  2. Apache Kafka for Item Setup

    At Walmart.com in the U.S. and at Walmart's 11 other websites around the world, we provide seamless ...

  3. Apache Kafka:下一代分布式消息系统

    [http://www.infoq.com/cn/articles/apache-kafka/]分布式发布-订阅消息系统. Kafka是一种快速.可扩展的.设计内在就是分布式的,分区的和可复制的提交日 ...

  4. Apache Kafka: Next Generation Distributed Messaging System---reference

    Introduction Apache Kafka is a distributed publish-subscribe messaging system. It was originally dev ...

  5. DataPipeline |《Apache Kafka实战》作者胡夕:Apache Kafka监控与调优

    胡夕 <Apache Kafka实战>作者,北航计算机硕士毕业,现任某互金公司计算平台总监,曾就职于IBM.搜狗.微博等公司.国内活跃的Kafka代码贡献者. 前言 虽然目前Apache ...

  6. An Overview of End-to-End Exactly-Once Processing in Apache Flink (with Apache Kafka, too!)

    01 Mar 2018 Piotr Nowojski (@PiotrNowojski) & Mike Winters (@wints) This post is an adaptation o ...

  7. How Cigna Tuned Its Spark Streaming App for Real-time Processing with Apache Kafka

    Explore the configuration changes that Cigna’s Big Data Analytics team has made to optimize the perf ...

  8. 《Apache Kafka 实战》读书笔记-认识Apache Kafka

    <Apache Kafka 实战>读书笔记-认识Apache Kafka 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.kafka概要设计 kafka在设计初衷就是 ...

  9. Streaming SQL for Apache Kafka

    KSQL是基于Kafka的Streams API进行构建的流式SQL引擎,KSQL降低了进入流处理的门槛,提供了一个简单的.完全交互式的SQL接口,用于处理Kafka的数据. KSQL是一套基于Apa ...

随机推荐

  1. ACM/ICPC 之 拓扑排序-反向(POJ3687)

    难点依旧是题意....需要反向构图+去重+看题 POJ3687-Labeling Balls 题意:1-N编号的球,输出满足给定约束的按原编号排列的重量序列,如果有多组答案,则输出编号最小的Ball重 ...

  2. ACM/ICPC 之 DP-基因相似度(POJ1080-ZOJ1027)

    题意:两端基因片段,各有明确的碱基序列,现有一个碱基匹配的相似度数组,设计程序使得该相似度最大. //POJ1080-ZOJ1027 //题解:将s1碱基和s2碱基看做等长,添加一个碱基为'-',即每 ...

  3. vps mysql自动关闭

    买了个阿里云的vps 装了一个wordpress,mysql一直自动关闭,百思不得其解,只有搜索 最后才发现是因为服务器内存太小,毕竟是最便宜的才512m ---------------------- ...

  4. oracle,mysql对敏感,关键字等处理

    oracle用""  比如,处理字段中间有空格,

  5. 【XLL 框架库函数】 debugPrintf

    通过调用 Windows SDK 函数 OutputDebugStringA 在激活的调试器中输出字符串信息.如果应用程序没有调试器,那么系统调试器就会显示字符串.如果这两种调试器都没使用的话,deb ...

  6. Python--set常用操作函数

    python提供了常用的数据结构,其中之一就是set,python中的set是不支持索引的.值不能重复.无需插入的容器. 简单记录下set常用的操作函数: 1.新建一个set: set("H ...

  7. Android 更改字体

    1. 将字体ttf文件放在assets目录下 2. 使用: Typeface mTypeFaceLight = Typeface.createFromAsset(context.getAssets() ...

  8. Google 如何修复 TrustManager 实施方式不安全的应用

    引用谷歌市场的帮助说明:https://support.google.com/faqs/answer/6346016 本文面向的是发布的应用中 X509TrustManager 接口实施方式不安全的开 ...

  9. 假定CSomething是一个类,执行下面这些语句之后,内存里创建了____个CSomething对象。

    CSomething a(); CSomething b(2); CSomething c[3]; CSomething &ra = b; CSomething d=b; CSomething ...

  10. http协议之request

    一.请求的基本格式 请求的基本格式包括请求行,请求头,请求实体三部分.例如:GET /img/bd_logo1.png HTTP/1.1Accept: */*Referer: http://www.b ...