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

The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?Mark Billinghurst
 
Design Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptxDesign Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptxFIDO Alliance
 
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...FIDO Alliance
 
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfHow Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfFIDO Alliance
 
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...marcuskenyatta275
 
(Explainable) Data-Centric AI: what are you explaininhg, and to whom?
(Explainable) Data-Centric AI: what are you explaininhg, and to whom?(Explainable) Data-Centric AI: what are you explaininhg, and to whom?
(Explainable) Data-Centric AI: what are you explaininhg, and to whom?Paolo Missier
 
Easier, Faster, and More Powerful – Notes Document Properties Reimagined
Easier, Faster, and More Powerful – Notes Document Properties ReimaginedEasier, Faster, and More Powerful – Notes Document Properties Reimagined
Easier, Faster, and More Powerful – Notes Document Properties Reimaginedpanagenda
 
1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT
1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT
1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPTiSEO AI
 
2024 May Patch Tuesday
2024 May Patch Tuesday2024 May Patch Tuesday
2024 May Patch TuesdayIvanti
 
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider  Progress from Awareness to Implementation.pptxTales from a Passkey Provider  Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider Progress from Awareness to Implementation.pptxFIDO Alliance
 
WebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM PerformanceWebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM PerformanceSamy Fodil
 
Introduction to FIDO Authentication and Passkeys.pptx
Introduction to FIDO Authentication and Passkeys.pptxIntroduction to FIDO Authentication and Passkeys.pptx
Introduction to FIDO Authentication and Passkeys.pptxFIDO Alliance
 
Your enemies use GenAI too - staying ahead of fraud with Neo4j
Your enemies use GenAI too - staying ahead of fraud with Neo4jYour enemies use GenAI too - staying ahead of fraud with Neo4j
Your enemies use GenAI too - staying ahead of fraud with Neo4jNeo4j
 
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdfIntroduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdfFIDO Alliance
 
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdfBreaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdfUK Journal
 
How we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfHow we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfSrushith Repakula
 
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...FIDO Alliance
 
AI mind or machine power point presentation
AI mind or machine power point presentationAI mind or machine power point presentation
AI mind or machine power point presentationyogeshlabana357357
 
Portal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russePortal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russe中 央社
 
ADP Passwordless Journey Case Study.pptx
ADP Passwordless Journey Case Study.pptxADP Passwordless Journey Case Study.pptx
ADP Passwordless Journey Case Study.pptxFIDO Alliance
 

Recently uploaded (20)

The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?
 
Design Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptxDesign Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptx
 
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
 
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfHow Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
 
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
 
(Explainable) Data-Centric AI: what are you explaininhg, and to whom?
(Explainable) Data-Centric AI: what are you explaininhg, and to whom?(Explainable) Data-Centric AI: what are you explaininhg, and to whom?
(Explainable) Data-Centric AI: what are you explaininhg, and to whom?
 
Easier, Faster, and More Powerful – Notes Document Properties Reimagined
Easier, Faster, and More Powerful – Notes Document Properties ReimaginedEasier, Faster, and More Powerful – Notes Document Properties Reimagined
Easier, Faster, and More Powerful – Notes Document Properties Reimagined
 
1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT
1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT
1111 ChatGPT Prompts PDF Free Download - Prompts for ChatGPT
 
2024 May Patch Tuesday
2024 May Patch Tuesday2024 May Patch Tuesday
2024 May Patch Tuesday
 
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider  Progress from Awareness to Implementation.pptxTales from a Passkey Provider  Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
 
WebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM PerformanceWebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM Performance
 
Introduction to FIDO Authentication and Passkeys.pptx
Introduction to FIDO Authentication and Passkeys.pptxIntroduction to FIDO Authentication and Passkeys.pptx
Introduction to FIDO Authentication and Passkeys.pptx
 
Your enemies use GenAI too - staying ahead of fraud with Neo4j
Your enemies use GenAI too - staying ahead of fraud with Neo4jYour enemies use GenAI too - staying ahead of fraud with Neo4j
Your enemies use GenAI too - staying ahead of fraud with Neo4j
 
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdfIntroduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
 
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdfBreaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
 
How we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfHow we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdf
 
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
 
AI mind or machine power point presentation
AI mind or machine power point presentationAI mind or machine power point presentation
AI mind or machine power point presentation
 
Portal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russePortal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russe
 
ADP Passwordless Journey Case Study.pptx
ADP Passwordless Journey Case Study.pptxADP Passwordless Journey Case Study.pptx
ADP Passwordless Journey Case Study.pptx
 

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