SlideShare a Scribd company logo
1 of 35
Download to read offline
Testing Camel K integrations
with Cloud Native BDD
APACHECON @HOME
Spt, 29th – Oct. 1st 2020
with Cloud Native BDD
Testing Camel K integrations
2
Testing Camel K integrations with Cloud Native BDD
3
ApacheCon @Home 2020
● Open source enthusiast
● Middleware Integration
● Test Automation
● Founder of https://citrusframework.org
● Senior Software Engineer @RedHat
● Twitter: @freaky_styley
Speaker information
Christoph Deppisch
Testing Camel K integrations with Cloud Native BDD
4
ApacheCon @Home 2020
● Apache Camel K
● Behavior Driven Development
● Why Cloud Native BDD?
● YAKS
● Demo
● Status & future work
Agenda
Testing Camel K integrations with Cloud Native BDD
5
ApacheCon @Home 2020
Apache Camel K
Testing Camel K integrations with Cloud Native BDD
6
ApacheCon @Home 2020
What is Camel K!?
Camel K
A lightweight integration platform,
born on Kubernetes, with serverless superpowers
https://github.com/apache/camel-k
Testing Camel K integrations with Cloud Native BDD
7
ApacheCon @Home 2020
● Subproject of Apache Camel (https://camel.apache.org/)
○ Swiss knife of integration
○ 340+ components
○ >10 years of development - still one of the most active Apache projects
● Camel K
○ Started on August 31st, 2018
○ Reached version 1.0.0 on June 9, 2020
○ A platform for directly running integrations on Openshift and Kubernetes
○ Based on (ex Core OS) operator-sdk
What is Camel K!?
Testing Camel K integrations with Cloud Native BDD
8
ApacheCon @Home 2020
Why integration?
My
app/service
Testing Camel K integrations with Cloud Native BDD
9
ApacheCon @Home 2020
Why integration?
My
app/service
App BApp A
App
C
Testing Camel K integrations with Cloud Native BDD
10
ApacheCon @Home 2020
Why Camel?
My
app/service
App
B
App
A
Testing Camel K integrations with Cloud Native BDD
11
ApacheCon @Home 2020
Why Camel?
My
app/service
App
B
App
A
from(“pulsar://company/nsx/topic1”)
.unmarshal().json()
.transform().simple(“${body[data]}”)
.to(“knative:event/activity”)
from(“knative:event/produced”)
.pollEnrich()
.simple(“aws2-s3://bucket/fs/${header.Ce-File}”)
.to(“kafka:ext-topic”)
Testing Camel K integrations with Cloud Native BDD
12
ApacheCon @Home 2020
● Write an integration file (Java, Groovy, Kotlin, JS, XML…)
● Execute (CLI)
● Running serverless on Kubernetes
Camel K in action
from(“knative:channel/xxxx”)
.transform()...
.to(“kafka:topic”)
$ kamel run integration.java
Testing Camel K integrations with Cloud Native BDD
13
ApacheCon @Home 2020
How can I test
Camel K?
Testing Camel K integrations with Cloud Native BDD
14
ApacheCon @Home 2020
Behavior Driven
Development
Testing Camel K integrations with Cloud Native BDD
15
ApacheCon @Home 2020
Communication
Testing Camel K integrations with Cloud Native BDD
16
ApacheCon @Home 2020
Explaining
the behavior
Testing Camel K integrations with Cloud Native BDD
17
ApacheCon @Home 2020
Concrete
Examples
Testing Camel K integrations with Cloud Native BDD
18
ApacheCon @Home 2020
Gherkin
Given a certain context
When some event happens
Then an outcome should occur
Testing Camel K integrations with Cloud Native BDD
19
ApacheCon @Home 2020
● Write a feature file
● Execute (CLI)
● Running test on Kubernetes
Why BDD?
Given a certain context
When some event happens
Then an outcome should occur
$ yaks test integration.feature
Testing Camel K integrations with Cloud Native BDD
20
ApacheCon @Home 2020
Why Cloud Native
testing?
Testing Camel K integrations with Cloud Native BDD
21
ApacheCon @Home 2020
● Tests running within the container management platform
○ Tests as integrated part of the cloud infrastructure
○ Tests able to access internal services
○ Tests can simulate service providers
○ Tests are self contained
Why Cloud Native!?
Kubernetes / OpenShift
Testing Camel K integrations with Cloud Native BDD
22
ApacheCon @Home 2020
Why Cloud Native?
Testing tools
Testing Camel K integrations with Cloud Native BDD
23
ApacheCon @Home 2020
YAKS
Testing Camel K integrations with Cloud Native BDD
24
ApacheCon @Home 2020
● https://github.com/citrusframework/yaks
● Born out of Camel K
● Current version 0.1.0 on September 29, 2020
What is YAKS?
YAKS
Integration test framework to enable
Cloud Native BDD testing on Kubernetes
Testing Camel K integrations with Cloud Native BDD
25
ApacheCon @Home 2020
Framework to run Gherkin
BDD feature files as Java
unit tests
1st class tool support in IDE
Open Source ACL 2.0
Test framework with focus on
messaging integration
Powerful validation for message
content such as Json, XML,
plaintext, ...
Open Source ACL 2.0
Testing Camel K integrations with Cloud Native BDD
26
ApacheCon @Home 2020
Feature: Todo service
Background:
Given URL: http://todo.service
Scenario: Health check
Given wait for URL http://todo.service to return 200 OK
Then path /health is healthy
Scenario: Create task
Given variable id is "citrus:randomNumber(5)"
Given HTTP request body: {"id": "${id}", "task": "New task", "completed": 0}
When send POST /todo/${id}
Then receive HTTP 201 CREATED
Scenario: GET
When send GET /todo/${id}
Then verify HTTP response body: {"id": "${id}", "task": "New task", "completed": 0}
And receive HTTP 200 OK
Testing Camel K integrations with Cloud Native BDD
27
ApacheCon @Home 2020
$ yaks test integration.feature
YAKS architecture
Testing Camel K integrations with Cloud Native BDD
28
ApacheCon @Home 2020
references
Kubernetes / OpenShift
Operation Runtime
yaks CLI
runtime
http
Runtime
jms
kafka
knative
openapi
YAKS
Operator
operator
Test
defines
uses
watches/manages
Maven registry
System Under
Test
invokes/verifies
tools
install
csv
generates
OLM
watches
reconciles
use
Operator
API
Development
compile
generates
29
Demo time!
Testing Camel K integrations with Cloud Native BDD
30
ApacheCon @Home 2020
greeting-service
en: “Hello ApacheCon!”
de: “Hallo ApacheCon!”
fr: “Bonjour ApacheCon!”
it: “Ciao ApacheCon!”
esp: “Hola ApacheCon!”
greeting.feature
Http GET /en
Testing Camel K integrations with Cloud Native BDD
31
ApacheCon @Home 2020
greeting-service
greeting.feature
topic: greetings
Http POST /en
{“message”: “Hello ApacheCon!” }
Testing Camel K integrations with Cloud Native BDD
32
ApacheCon @Home 2020
greeting-splitter
greeting-service
greeting.feature
topic: greetings
Http POST /en
{“message”: “Hello ApacheCon!” }
Testing Camel K integrations with Cloud Native BDD
33
ApacheCon @Home 2020
greeting-splitter
greeting-service
greeting.feature
topic: greetings
topic: greetings
Http POST /en
{“message”: “Hello ApacheCon!” }
“Hello”
“ApacheCon!”
“Hello”
“ApacheCon!”
Testing Camel K integrations with Cloud Native BDD
34
ApacheCon @Home 2020
● Attract community by helping to test
○ Camel K
○ Knative
○ Kafka
● Integrate test approach with CI pipelines (Tekton)
● Autodiscover infrastructure components (message brokers, APIs, DBs, ...)
● Contract driven testing (Open API)
● Visual tooling
Get involved! https://github.com/citrusframework/yaks/issues
Future work
linkedin.com/company/red-hat
youtube.com/user/RedHatVideos
facebook.com/redhatinc
twitter.com/RedHat
Red Hat is the world’s leading provider of enterprise
open source software solutions. Award-winning
support, training, and consulting services make
Red Hat a trusted adviser to the Fortune 500.
Thank you
35

More Related Content

What's hot

kubernetes operators
kubernetes operatorskubernetes operators
kubernetes operatorsJuraj Hantak
 
Cloud native - CI/CD
Cloud native - CI/CDCloud native - CI/CD
Cloud native - CI/CDElad Hirsch
 
A serverless IoT story from design to production and monitoring
A serverless IoT story from design to production and monitoringA serverless IoT story from design to production and monitoring
A serverless IoT story from design to production and monitoringCodeValue
 
Building a Serverless company with Node.js, React and the Serverless Framewor...
Building a Serverless company with Node.js, React and the Serverless Framewor...Building a Serverless company with Node.js, React and the Serverless Framewor...
Building a Serverless company with Node.js, React and the Serverless Framewor...Luciano Mammino
 
Gitlab ci, cncf.sk
Gitlab ci, cncf.skGitlab ci, cncf.sk
Gitlab ci, cncf.skJuraj Hantak
 
No REST - Architecting Real-time Bulk Async APIs
No REST - Architecting Real-time Bulk Async APIsNo REST - Architecting Real-time Bulk Async APIs
No REST - Architecting Real-time Bulk Async APIsC4Media
 
Alfresco javascript api - Alfresco Devcon 2018
Alfresco javascript api - Alfresco Devcon 2018Alfresco javascript api - Alfresco Devcon 2018
Alfresco javascript api - Alfresco Devcon 2018Mario Romano
 
The Telegraf Toolbelt | David McKay | InfluxData
The Telegraf Toolbelt | David McKay | InfluxDataThe Telegraf Toolbelt | David McKay | InfluxData
The Telegraf Toolbelt | David McKay | InfluxDataInfluxData
 
2018 10-31 modern-http_routing-lisa18
2018 10-31 modern-http_routing-lisa182018 10-31 modern-http_routing-lisa18
2018 10-31 modern-http_routing-lisa18Sandor Szuecs
 
Kube Your Enthusiasm - Paul Czarkowski
Kube Your Enthusiasm - Paul CzarkowskiKube Your Enthusiasm - Paul Czarkowski
Kube Your Enthusiasm - Paul CzarkowskiVMware Tanzu
 
Introduction to gRPC - Mete Atamel - Codemotion Rome 2017
Introduction to gRPC - Mete Atamel - Codemotion Rome 2017Introduction to gRPC - Mete Atamel - Codemotion Rome 2017
Introduction to gRPC - Mete Atamel - Codemotion Rome 2017Codemotion
 
Webhooks do's and dont's: what we learned after integrating +100 APIs - Giuli...
Webhooks do's and dont's: what we learned after integrating +100 APIs - Giuli...Webhooks do's and dont's: what we learned after integrating +100 APIs - Giuli...
Webhooks do's and dont's: what we learned after integrating +100 APIs - Giuli...Codemotion
 
API Design in the Modern Era - Architecture Next 2020
API Design in the Modern Era - Architecture Next 2020API Design in the Modern Era - Architecture Next 2020
API Design in the Modern Era - Architecture Next 2020Eran Stiller
 
Beyond Breakpoints: A Tour of Dynamic Analysis
Beyond Breakpoints: A Tour of Dynamic AnalysisBeyond Breakpoints: A Tour of Dynamic Analysis
Beyond Breakpoints: A Tour of Dynamic AnalysisC4Media
 
Time to-live: How to Perform Automatic State Cleanup in Apache Flink - Andrey...
Time to-live: How to Perform Automatic State Cleanup in Apache Flink - Andrey...Time to-live: How to Perform Automatic State Cleanup in Apache Flink - Andrey...
Time to-live: How to Perform Automatic State Cleanup in Apache Flink - Andrey...Flink Forward
 
Ci/CD platform with drone and gogs
Ci/CD platform with drone and gogsCi/CD platform with drone and gogs
Ci/CD platform with drone and gogsPol Jane
 
Supercharging CI/CD with GitLab and Rancher - June 2017 Online Meetup
Supercharging CI/CD with GitLab and Rancher - June 2017 Online MeetupSupercharging CI/CD with GitLab and Rancher - June 2017 Online Meetup
Supercharging CI/CD with GitLab and Rancher - June 2017 Online MeetupShannon Williams
 

What's hot (20)

kubernetes operators
kubernetes operatorskubernetes operators
kubernetes operators
 
Cloud native - CI/CD
Cloud native - CI/CDCloud native - CI/CD
Cloud native - CI/CD
 
A serverless IoT story from design to production and monitoring
A serverless IoT story from design to production and monitoringA serverless IoT story from design to production and monitoring
A serverless IoT story from design to production and monitoring
 
Building a Serverless company with Node.js, React and the Serverless Framewor...
Building a Serverless company with Node.js, React and the Serverless Framewor...Building a Serverless company with Node.js, React and the Serverless Framewor...
Building a Serverless company with Node.js, React and the Serverless Framewor...
 
Gitlab ci, cncf.sk
Gitlab ci, cncf.skGitlab ci, cncf.sk
Gitlab ci, cncf.sk
 
No REST - Architecting Real-time Bulk Async APIs
No REST - Architecting Real-time Bulk Async APIsNo REST - Architecting Real-time Bulk Async APIs
No REST - Architecting Real-time Bulk Async APIs
 
Alfresco javascript api - Alfresco Devcon 2018
Alfresco javascript api - Alfresco Devcon 2018Alfresco javascript api - Alfresco Devcon 2018
Alfresco javascript api - Alfresco Devcon 2018
 
The Telegraf Toolbelt | David McKay | InfluxData
The Telegraf Toolbelt | David McKay | InfluxDataThe Telegraf Toolbelt | David McKay | InfluxData
The Telegraf Toolbelt | David McKay | InfluxData
 
2018 10-31 modern-http_routing-lisa18
2018 10-31 modern-http_routing-lisa182018 10-31 modern-http_routing-lisa18
2018 10-31 modern-http_routing-lisa18
 
Kube Your Enthusiasm - Paul Czarkowski
Kube Your Enthusiasm - Paul CzarkowskiKube Your Enthusiasm - Paul Czarkowski
Kube Your Enthusiasm - Paul Czarkowski
 
Introduction to gRPC - Mete Atamel - Codemotion Rome 2017
Introduction to gRPC - Mete Atamel - Codemotion Rome 2017Introduction to gRPC - Mete Atamel - Codemotion Rome 2017
Introduction to gRPC - Mete Atamel - Codemotion Rome 2017
 
Webhooks do's and dont's: what we learned after integrating +100 APIs - Giuli...
Webhooks do's and dont's: what we learned after integrating +100 APIs - Giuli...Webhooks do's and dont's: what we learned after integrating +100 APIs - Giuli...
Webhooks do's and dont's: what we learned after integrating +100 APIs - Giuli...
 
API Design in the Modern Era - Architecture Next 2020
API Design in the Modern Era - Architecture Next 2020API Design in the Modern Era - Architecture Next 2020
API Design in the Modern Era - Architecture Next 2020
 
Beyond Breakpoints: A Tour of Dynamic Analysis
Beyond Breakpoints: A Tour of Dynamic AnalysisBeyond Breakpoints: A Tour of Dynamic Analysis
Beyond Breakpoints: A Tour of Dynamic Analysis
 
OpenWhisk
OpenWhiskOpenWhisk
OpenWhisk
 
Time to-live: How to Perform Automatic State Cleanup in Apache Flink - Andrey...
Time to-live: How to Perform Automatic State Cleanup in Apache Flink - Andrey...Time to-live: How to Perform Automatic State Cleanup in Apache Flink - Andrey...
Time to-live: How to Perform Automatic State Cleanup in Apache Flink - Andrey...
 
Origins of Serverless
Origins of ServerlessOrigins of Serverless
Origins of Serverless
 
Ci/CD platform with drone and gogs
Ci/CD platform with drone and gogsCi/CD platform with drone and gogs
Ci/CD platform with drone and gogs
 
Supercharging CI/CD with GitLab and Rancher - June 2017 Online Meetup
Supercharging CI/CD with GitLab and Rancher - June 2017 Online MeetupSupercharging CI/CD with GitLab and Rancher - June 2017 Online Meetup
Supercharging CI/CD with GitLab and Rancher - June 2017 Online Meetup
 
Where should I run my code? Serverless, Containers, Virtual Machines and more
Where should I run my code? Serverless, Containers, Virtual Machines and moreWhere should I run my code? Serverless, Containers, Virtual Machines and more
Where should I run my code? Serverless, Containers, Virtual Machines and more
 

Similar to ApacheCon Testing Camel K with Cloud Native BDD

A New Chapter of Data Processing with CDK
A New Chapter of Data Processing with CDKA New Chapter of Data Processing with CDK
A New Chapter of Data Processing with CDKShu-Jeng Hsieh
 
(ARC401) Cloud First: New Architecture for New Infrastructure
(ARC401) Cloud First: New Architecture for New Infrastructure(ARC401) Cloud First: New Architecture for New Infrastructure
(ARC401) Cloud First: New Architecture for New InfrastructureAmazon Web Services
 
Effective Building your Platform with Kubernetes == Keep it Simple
Effective Building your Platform with Kubernetes == Keep it Simple Effective Building your Platform with Kubernetes == Keep it Simple
Effective Building your Platform with Kubernetes == Keep it Simple Wojciech Barczyński
 
JDD2015: Kubernetes - Beyond the basics - Paul Bakker
JDD2015: Kubernetes - Beyond the basics - Paul BakkerJDD2015: Kubernetes - Beyond the basics - Paul Bakker
JDD2015: Kubernetes - Beyond the basics - Paul BakkerPROIDEA
 
Kubernetes Basis: Pods, Deployments, and Services
Kubernetes Basis: Pods, Deployments, and ServicesKubernetes Basis: Pods, Deployments, and Services
Kubernetes Basis: Pods, Deployments, and ServicesJian-Kai Wang
 
Docker Enterprise Workshop - Technical
Docker Enterprise Workshop - TechnicalDocker Enterprise Workshop - Technical
Docker Enterprise Workshop - TechnicalPatrick Chanezon
 
Shipping to Server and Cloud with Docker
Shipping to Server and Cloud with DockerShipping to Server and Cloud with Docker
Shipping to Server and Cloud with DockerAtlassian
 
Building Serverless APIs (January 2017)
Building Serverless APIs (January 2017)Building Serverless APIs (January 2017)
Building Serverless APIs (January 2017)Julien SIMON
 
Infrastructure is code with the AWS cloud development kit
Infrastructure is code with the AWS cloud development kitInfrastructure is code with the AWS cloud development kit
Infrastructure is code with the AWS cloud development kitAWS User Group Pune
 
Kubernetes service with ha
Kubernetes service with haKubernetes service with ha
Kubernetes service with haSam Zheng
 
From Docker Straight to AWS
From Docker Straight to AWSFrom Docker Straight to AWS
From Docker Straight to AWSDevOps.com
 
Red Hat and kubernetes: awesome stuff coming your way
Red Hat and kubernetes:  awesome stuff coming your wayRed Hat and kubernetes:  awesome stuff coming your way
Red Hat and kubernetes: awesome stuff coming your wayJohannes Brännström
 
Dayta AI Seminar - Kubernetes, Docker and AI on Cloud
Dayta AI Seminar - Kubernetes, Docker and AI on CloudDayta AI Seminar - Kubernetes, Docker and AI on Cloud
Dayta AI Seminar - Kubernetes, Docker and AI on CloudJung-Hong Kim
 
Docker Container As A Service - Mix-IT 2016
Docker Container As A Service - Mix-IT 2016Docker Container As A Service - Mix-IT 2016
Docker Container As A Service - Mix-IT 2016Patrick Chanezon
 
Kubernetes best practices
Kubernetes best practicesKubernetes best practices
Kubernetes best practicesBill Liu
 
Ports, pods and proxies
Ports, pods and proxiesPorts, pods and proxies
Ports, pods and proxiesLibbySchulze
 
Building a dev pipeline using GitHub Actions, Node.js, and AWS ECS Fargate
Building a dev pipeline using GitHub Actions, Node.js, and AWS ECS FargateBuilding a dev pipeline using GitHub Actions, Node.js, and AWS ECS Fargate
Building a dev pipeline using GitHub Actions, Node.js, and AWS ECS Fargatedatree
 
Continuously Deploy Your CDK Application by Petra novandi barus
Continuously  Deploy Your CDK Application by Petra novandi barusContinuously  Deploy Your CDK Application by Petra novandi barus
Continuously Deploy Your CDK Application by Petra novandi barusDevOps Indonesia
 
New and cool in OSGi R7 - David Bosschaert & Carsten Ziegeler
New and cool in OSGi R7 - David Bosschaert & Carsten ZiegelerNew and cool in OSGi R7 - David Bosschaert & Carsten Ziegeler
New and cool in OSGi R7 - David Bosschaert & Carsten Ziegelermfrancis
 

Similar to ApacheCon Testing Camel K with Cloud Native BDD (20)

Google Cloud Dataflow
Google Cloud DataflowGoogle Cloud Dataflow
Google Cloud Dataflow
 
A New Chapter of Data Processing with CDK
A New Chapter of Data Processing with CDKA New Chapter of Data Processing with CDK
A New Chapter of Data Processing with CDK
 
(ARC401) Cloud First: New Architecture for New Infrastructure
(ARC401) Cloud First: New Architecture for New Infrastructure(ARC401) Cloud First: New Architecture for New Infrastructure
(ARC401) Cloud First: New Architecture for New Infrastructure
 
Effective Building your Platform with Kubernetes == Keep it Simple
Effective Building your Platform with Kubernetes == Keep it Simple Effective Building your Platform with Kubernetes == Keep it Simple
Effective Building your Platform with Kubernetes == Keep it Simple
 
JDD2015: Kubernetes - Beyond the basics - Paul Bakker
JDD2015: Kubernetes - Beyond the basics - Paul BakkerJDD2015: Kubernetes - Beyond the basics - Paul Bakker
JDD2015: Kubernetes - Beyond the basics - Paul Bakker
 
Kubernetes Basis: Pods, Deployments, and Services
Kubernetes Basis: Pods, Deployments, and ServicesKubernetes Basis: Pods, Deployments, and Services
Kubernetes Basis: Pods, Deployments, and Services
 
Docker Enterprise Workshop - Technical
Docker Enterprise Workshop - TechnicalDocker Enterprise Workshop - Technical
Docker Enterprise Workshop - Technical
 
Shipping to Server and Cloud with Docker
Shipping to Server and Cloud with DockerShipping to Server and Cloud with Docker
Shipping to Server and Cloud with Docker
 
Building Serverless APIs (January 2017)
Building Serverless APIs (January 2017)Building Serverless APIs (January 2017)
Building Serverless APIs (January 2017)
 
Infrastructure is code with the AWS cloud development kit
Infrastructure is code with the AWS cloud development kitInfrastructure is code with the AWS cloud development kit
Infrastructure is code with the AWS cloud development kit
 
Kubernetes service with ha
Kubernetes service with haKubernetes service with ha
Kubernetes service with ha
 
From Docker Straight to AWS
From Docker Straight to AWSFrom Docker Straight to AWS
From Docker Straight to AWS
 
Red Hat and kubernetes: awesome stuff coming your way
Red Hat and kubernetes:  awesome stuff coming your wayRed Hat and kubernetes:  awesome stuff coming your way
Red Hat and kubernetes: awesome stuff coming your way
 
Dayta AI Seminar - Kubernetes, Docker and AI on Cloud
Dayta AI Seminar - Kubernetes, Docker and AI on CloudDayta AI Seminar - Kubernetes, Docker and AI on Cloud
Dayta AI Seminar - Kubernetes, Docker and AI on Cloud
 
Docker Container As A Service - Mix-IT 2016
Docker Container As A Service - Mix-IT 2016Docker Container As A Service - Mix-IT 2016
Docker Container As A Service - Mix-IT 2016
 
Kubernetes best practices
Kubernetes best practicesKubernetes best practices
Kubernetes best practices
 
Ports, pods and proxies
Ports, pods and proxiesPorts, pods and proxies
Ports, pods and proxies
 
Building a dev pipeline using GitHub Actions, Node.js, and AWS ECS Fargate
Building a dev pipeline using GitHub Actions, Node.js, and AWS ECS FargateBuilding a dev pipeline using GitHub Actions, Node.js, and AWS ECS Fargate
Building a dev pipeline using GitHub Actions, Node.js, and AWS ECS Fargate
 
Continuously Deploy Your CDK Application by Petra novandi barus
Continuously  Deploy Your CDK Application by Petra novandi barusContinuously  Deploy Your CDK Application by Petra novandi barus
Continuously Deploy Your CDK Application by Petra novandi barus
 
New and cool in OSGi R7 - David Bosschaert & Carsten Ziegeler
New and cool in OSGi R7 - David Bosschaert & Carsten ZiegelerNew and cool in OSGi R7 - David Bosschaert & Carsten Ziegeler
New and cool in OSGi R7 - David Bosschaert & Carsten Ziegeler
 

More from christophd

Integration Testing with a Citrus twist
Integration Testing with a Citrus twistIntegration Testing with a Citrus twist
Integration Testing with a Citrus twistchristophd
 
Behavior driven integration with Cucumber & Citrus
Behavior driven integration with Cucumber & CitrusBehavior driven integration with Cucumber & Citrus
Behavior driven integration with Cucumber & Citruschristophd
 
Behavior driven integration with Cucumber & Citrus
Behavior driven integration with Cucumber & CitrusBehavior driven integration with Cucumber & Citrus
Behavior driven integration with Cucumber & Citruschristophd
 
Arquillian & Citrus
Arquillian & CitrusArquillian & Citrus
Arquillian & Citruschristophd
 
Testing Microservices with a Citrus twist
Testing Microservices with a Citrus twistTesting Microservices with a Citrus twist
Testing Microservices with a Citrus twistchristophd
 
Citrus Agile Testing Meetup (german)
Citrus Agile Testing Meetup (german)Citrus Agile Testing Meetup (german)
Citrus Agile Testing Meetup (german)christophd
 

More from christophd (6)

Integration Testing with a Citrus twist
Integration Testing with a Citrus twistIntegration Testing with a Citrus twist
Integration Testing with a Citrus twist
 
Behavior driven integration with Cucumber & Citrus
Behavior driven integration with Cucumber & CitrusBehavior driven integration with Cucumber & Citrus
Behavior driven integration with Cucumber & Citrus
 
Behavior driven integration with Cucumber & Citrus
Behavior driven integration with Cucumber & CitrusBehavior driven integration with Cucumber & Citrus
Behavior driven integration with Cucumber & Citrus
 
Arquillian & Citrus
Arquillian & CitrusArquillian & Citrus
Arquillian & Citrus
 
Testing Microservices with a Citrus twist
Testing Microservices with a Citrus twistTesting Microservices with a Citrus twist
Testing Microservices with a Citrus twist
 
Citrus Agile Testing Meetup (german)
Citrus Agile Testing Meetup (german)Citrus Agile Testing Meetup (german)
Citrus Agile Testing Meetup (german)
 

Recently uploaded

Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfngoud9212
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Neo4j
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 

Recently uploaded (20)

Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdf
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 

ApacheCon Testing Camel K with Cloud Native BDD

  • 1. Testing Camel K integrations with Cloud Native BDD APACHECON @HOME Spt, 29th – Oct. 1st 2020
  • 2. with Cloud Native BDD Testing Camel K integrations 2
  • 3. Testing Camel K integrations with Cloud Native BDD 3 ApacheCon @Home 2020 ● Open source enthusiast ● Middleware Integration ● Test Automation ● Founder of https://citrusframework.org ● Senior Software Engineer @RedHat ● Twitter: @freaky_styley Speaker information Christoph Deppisch
  • 4. Testing Camel K integrations with Cloud Native BDD 4 ApacheCon @Home 2020 ● Apache Camel K ● Behavior Driven Development ● Why Cloud Native BDD? ● YAKS ● Demo ● Status & future work Agenda
  • 5. Testing Camel K integrations with Cloud Native BDD 5 ApacheCon @Home 2020 Apache Camel K
  • 6. Testing Camel K integrations with Cloud Native BDD 6 ApacheCon @Home 2020 What is Camel K!? Camel K A lightweight integration platform, born on Kubernetes, with serverless superpowers https://github.com/apache/camel-k
  • 7. Testing Camel K integrations with Cloud Native BDD 7 ApacheCon @Home 2020 ● Subproject of Apache Camel (https://camel.apache.org/) ○ Swiss knife of integration ○ 340+ components ○ >10 years of development - still one of the most active Apache projects ● Camel K ○ Started on August 31st, 2018 ○ Reached version 1.0.0 on June 9, 2020 ○ A platform for directly running integrations on Openshift and Kubernetes ○ Based on (ex Core OS) operator-sdk What is Camel K!?
  • 8. Testing Camel K integrations with Cloud Native BDD 8 ApacheCon @Home 2020 Why integration? My app/service
  • 9. Testing Camel K integrations with Cloud Native BDD 9 ApacheCon @Home 2020 Why integration? My app/service App BApp A App C
  • 10. Testing Camel K integrations with Cloud Native BDD 10 ApacheCon @Home 2020 Why Camel? My app/service App B App A
  • 11. Testing Camel K integrations with Cloud Native BDD 11 ApacheCon @Home 2020 Why Camel? My app/service App B App A from(“pulsar://company/nsx/topic1”) .unmarshal().json() .transform().simple(“${body[data]}”) .to(“knative:event/activity”) from(“knative:event/produced”) .pollEnrich() .simple(“aws2-s3://bucket/fs/${header.Ce-File}”) .to(“kafka:ext-topic”)
  • 12. Testing Camel K integrations with Cloud Native BDD 12 ApacheCon @Home 2020 ● Write an integration file (Java, Groovy, Kotlin, JS, XML…) ● Execute (CLI) ● Running serverless on Kubernetes Camel K in action from(“knative:channel/xxxx”) .transform()... .to(“kafka:topic”) $ kamel run integration.java
  • 13. Testing Camel K integrations with Cloud Native BDD 13 ApacheCon @Home 2020 How can I test Camel K?
  • 14. Testing Camel K integrations with Cloud Native BDD 14 ApacheCon @Home 2020 Behavior Driven Development
  • 15. Testing Camel K integrations with Cloud Native BDD 15 ApacheCon @Home 2020 Communication
  • 16. Testing Camel K integrations with Cloud Native BDD 16 ApacheCon @Home 2020 Explaining the behavior
  • 17. Testing Camel K integrations with Cloud Native BDD 17 ApacheCon @Home 2020 Concrete Examples
  • 18. Testing Camel K integrations with Cloud Native BDD 18 ApacheCon @Home 2020 Gherkin Given a certain context When some event happens Then an outcome should occur
  • 19. Testing Camel K integrations with Cloud Native BDD 19 ApacheCon @Home 2020 ● Write a feature file ● Execute (CLI) ● Running test on Kubernetes Why BDD? Given a certain context When some event happens Then an outcome should occur $ yaks test integration.feature
  • 20. Testing Camel K integrations with Cloud Native BDD 20 ApacheCon @Home 2020 Why Cloud Native testing?
  • 21. Testing Camel K integrations with Cloud Native BDD 21 ApacheCon @Home 2020 ● Tests running within the container management platform ○ Tests as integrated part of the cloud infrastructure ○ Tests able to access internal services ○ Tests can simulate service providers ○ Tests are self contained Why Cloud Native!?
  • 22. Kubernetes / OpenShift Testing Camel K integrations with Cloud Native BDD 22 ApacheCon @Home 2020 Why Cloud Native? Testing tools
  • 23. Testing Camel K integrations with Cloud Native BDD 23 ApacheCon @Home 2020 YAKS
  • 24. Testing Camel K integrations with Cloud Native BDD 24 ApacheCon @Home 2020 ● https://github.com/citrusframework/yaks ● Born out of Camel K ● Current version 0.1.0 on September 29, 2020 What is YAKS? YAKS Integration test framework to enable Cloud Native BDD testing on Kubernetes
  • 25. Testing Camel K integrations with Cloud Native BDD 25 ApacheCon @Home 2020 Framework to run Gherkin BDD feature files as Java unit tests 1st class tool support in IDE Open Source ACL 2.0 Test framework with focus on messaging integration Powerful validation for message content such as Json, XML, plaintext, ... Open Source ACL 2.0
  • 26. Testing Camel K integrations with Cloud Native BDD 26 ApacheCon @Home 2020 Feature: Todo service Background: Given URL: http://todo.service Scenario: Health check Given wait for URL http://todo.service to return 200 OK Then path /health is healthy Scenario: Create task Given variable id is "citrus:randomNumber(5)" Given HTTP request body: {"id": "${id}", "task": "New task", "completed": 0} When send POST /todo/${id} Then receive HTTP 201 CREATED Scenario: GET When send GET /todo/${id} Then verify HTTP response body: {"id": "${id}", "task": "New task", "completed": 0} And receive HTTP 200 OK
  • 27. Testing Camel K integrations with Cloud Native BDD 27 ApacheCon @Home 2020 $ yaks test integration.feature
  • 28. YAKS architecture Testing Camel K integrations with Cloud Native BDD 28 ApacheCon @Home 2020 references Kubernetes / OpenShift Operation Runtime yaks CLI runtime http Runtime jms kafka knative openapi YAKS Operator operator Test defines uses watches/manages Maven registry System Under Test invokes/verifies tools install csv generates OLM watches reconciles use Operator API Development compile generates
  • 30. Testing Camel K integrations with Cloud Native BDD 30 ApacheCon @Home 2020 greeting-service en: “Hello ApacheCon!” de: “Hallo ApacheCon!” fr: “Bonjour ApacheCon!” it: “Ciao ApacheCon!” esp: “Hola ApacheCon!” greeting.feature Http GET /en
  • 31. Testing Camel K integrations with Cloud Native BDD 31 ApacheCon @Home 2020 greeting-service greeting.feature topic: greetings Http POST /en {“message”: “Hello ApacheCon!” }
  • 32. Testing Camel K integrations with Cloud Native BDD 32 ApacheCon @Home 2020 greeting-splitter greeting-service greeting.feature topic: greetings Http POST /en {“message”: “Hello ApacheCon!” }
  • 33. Testing Camel K integrations with Cloud Native BDD 33 ApacheCon @Home 2020 greeting-splitter greeting-service greeting.feature topic: greetings topic: greetings Http POST /en {“message”: “Hello ApacheCon!” } “Hello” “ApacheCon!” “Hello” “ApacheCon!”
  • 34. Testing Camel K integrations with Cloud Native BDD 34 ApacheCon @Home 2020 ● Attract community by helping to test ○ Camel K ○ Knative ○ Kafka ● Integrate test approach with CI pipelines (Tekton) ● Autodiscover infrastructure components (message brokers, APIs, DBs, ...) ● Contract driven testing (Open API) ● Visual tooling Get involved! https://github.com/citrusframework/yaks/issues Future work
  • 35. linkedin.com/company/red-hat youtube.com/user/RedHatVideos facebook.com/redhatinc twitter.com/RedHat Red Hat is the world’s leading provider of enterprise open source software solutions. Award-winning support, training, and consulting services make Red Hat a trusted adviser to the Fortune 500. Thank you 35