SlideShare a Scribd company logo
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 operators
Juraj Hantak
 
Cloud native - CI/CD
Cloud native - CI/CDCloud native - CI/CD
Cloud native - CI/CD
Elad 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 monitoring
CodeValue
 
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.sk
Juraj 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 APIs
C4Media
 
Alfresco javascript api - Alfresco Devcon 2018
Alfresco javascript api - Alfresco Devcon 2018Alfresco javascript api - Alfresco Devcon 2018
Alfresco javascript api - Alfresco Devcon 2018
Mario Romano
 
The Telegraf Toolbelt | David McKay | InfluxData
The Telegraf Toolbelt | David McKay | InfluxDataThe Telegraf Toolbelt | David McKay | InfluxData
The Telegraf Toolbelt | David McKay | InfluxData
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
Sandor Szuecs
 
Kube Your Enthusiasm - Paul Czarkowski
Kube Your Enthusiasm - Paul CzarkowskiKube Your Enthusiasm - Paul Czarkowski
Kube Your Enthusiasm - Paul Czarkowski
VMware 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 2017
Codemotion
 
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 2020
Eran 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 Analysis
C4Media
 
OpenWhisk
OpenWhiskOpenWhisk
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
 
Origins of Serverless
Origins of ServerlessOrigins of Serverless
Origins of Serverless
Andrii Soldatenko
 
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
Pol 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 Meetup
Shannon Williams
 
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
Bret McGowen - NYC Google Developer Advocate
 

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

Google Cloud Dataflow
Google Cloud DataflowGoogle Cloud Dataflow
Google Cloud Dataflow
Alex Van Boxel
 
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
Shu-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 Infrastructure
Amazon 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 Bakker
PROIDEA
 
Kubernetes Basis: Pods, Deployments, and Services
Kubernetes Basis: Pods, Deployments, and ServicesKubernetes Basis: Pods, Deployments, and Services
Kubernetes Basis: Pods, Deployments, and Services
Jian-Kai Wang
 
Docker Enterprise Workshop - Technical
Docker Enterprise Workshop - TechnicalDocker Enterprise Workshop - Technical
Docker Enterprise Workshop - Technical
Patrick 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 Docker
Atlassian
 
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 kit
AWS User Group Pune
 
Kubernetes service with ha
Kubernetes service with haKubernetes service with ha
Kubernetes service with ha
Sam Zheng
 
From Docker Straight to AWS
From Docker Straight to AWSFrom Docker Straight to AWS
From Docker Straight to AWS
DevOps.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 way
Johannes 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 Cloud
Jung-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 2016
Patrick Chanezon
 
Kubernetes best practices
Kubernetes best practicesKubernetes best practices
Kubernetes best practices
Bill Liu
 
Ports, pods and proxies
Ports, pods and proxiesPorts, pods and proxies
Ports, pods and proxies
LibbySchulze
 
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
datree
 
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
DevOps 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 Ziegeler
mfrancis
 

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 twist
christophd
 
Behavior driven integration with Cucumber & Citrus
Behavior driven integration with Cucumber & CitrusBehavior driven integration with Cucumber & Citrus
Behavior driven integration with Cucumber & Citrus
christophd
 
Behavior driven integration with Cucumber & Citrus
Behavior driven integration with Cucumber & CitrusBehavior driven integration with Cucumber & Citrus
Behavior driven integration with Cucumber & Citrus
christophd
 
Arquillian & Citrus
Arquillian & CitrusArquillian & Citrus
Arquillian & Citrus
christophd
 
Testing Microservices with a Citrus twist
Testing Microservices with a Citrus twistTesting Microservices with a Citrus twist
Testing Microservices with a Citrus twist
christophd
 
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

GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
Tomaz Bratanic
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
Pixlogix Infotech
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
Edge AI and Vision Alliance
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
Neo4j
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
Mariano Tinti
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
shyamraj55
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
IndexBug
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
panagenda
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
tolgahangng
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
Daiki Mogmet Ito
 

Recently uploaded (20)

GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
 

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