15. Die Antwort verarbeiten
Statusinformationen über den Erhalt des
Auftrags .
Sowohl der Returncode als auch die
vollständige Antwort werden mithilfe des
O/R Mappers in der Datenbank
gespeichert.
16. Fertig zum liefern
HTTP Service
Eine zweite Route bildet die
Auftragsbestätigung durch das System des
Dienstleisters ab. Er sendet diese an BoD,
sobald die Bearbeitung des Auftrages
abgeschlossen ist.
17. Camel und PL/SQL passen prima
zusammen
PL/SQL Camel
Fachlogik Integration
19. Selbsttest
2 Test-Nachrichten
Um die Verfügbarkeit des
Integrationsservers zu kontrollieren,
werden die Camel-Routen in äquidistanten
Zeitabständen durch spezielle Testaufträge
angestoßen.
21. Agenda
Build
Tests Deployment
Rahmen Erfolg Konfiguration
22. Welche Tests benötigen wir?
Geschäftsanforderungen
Autom. manuell
Functional
Examples
Exploratory
Story Tests
Supporting the Team
Critique Product
Simulations
Q2 Q3
Q1 Q4
Performance & Load
Unit Tests Testing
Component Tests Security Testing
„ility“ Testing NFRs
Tools/
Autom. Autom.
Technologie
23. Unit Tests vermeiden Fehler
•Testgetrieben
vorgehen
Qualität •Lean Prinzipien
•Camel Test Support
24. Camel unterstützt Unit Tests durch
Mock Endpunkte
statusOK.expectedMessageCount(1);
statusOK.expectedMessagesMatches(new
ResultMessagePredicate("ok"));
<< PRODUCE >>
assertMockEndpointsSatisfied();
↘Müssen explizit in Routendefinition angelegt
werden => Testcode in Produktionscode
25. Camel bietet Mocks als Stellvertreter
partnerA.whenAnyExchangeReceived(new
MockStatusProcessor("ok"));
• Verhalten eines Mocks kann durch Hinzufügen
eines Processors gesteuert werden
• Rückgabe von Antwortnachrichten
• Exceptions für Test des Fehlerhandling
26. Interceptoren können im Test
bestehende Routen ändern
A B C
X C
interceptSendToEndpoint("direct:partnerA")
.skipSendToOriginalEndpoint().to("mock:partnerA")
.to("direct:wsResponse");
context.getRouteDefinition("resultDecision").
adviceWith(context,
createRouteBuilderResultDecision());
28. Functional Tests
•Für die
Auftraggeber
Akzeptanz verständliche Tests
•Build the right thing
29. Features beschreiben ausübbare
Anforderungen
Feature: Place order
As a Digital Publisher
In order to be able to offer a book on my Publishing Plattform
I want to order the scanning of the book by a Digitizing Provider
Scenario: place an order
Given I am a valid API user
And I use the payloadID "1079645778@yourdomain.com"
And I send and accept XML
And I give the order an orderID "XYZ-001"
And I add an item with lineNumeber "1" and quantity "1" to the order
And I set the Supplier EAN "1234567890123" for line item "1"
When I send a POST request to "/orders" with the following:
Then the response should be "200"
And the XML response should be a cXML with payloadID
"1079645778@yourdomain.com" and status code "200"
30. Feature-Tests werden ausführbar
durch Step Definitions
When I send a DELETE request to /incidents/task/5
steps.rb:
When /^I send a DELETE request to "([^"]*)"$/ do |path|
delete path
end
31. Agenda
Provisionierung
Tests Deployment
Rahmen Erfolg Konfiguration
32. Fehlerquellen gibt es auch nach den
Tests
DB-URL
Queue-Name
Konfig- Service URL
uration
Code Umgebung
Karaf-Version
JDK-Version,.
Fehler
34. Umsetzung der Deployment Pipeline
Alles unter Alles
Versionskontrolle automatisieren
Provisionierung Konfiguration Provisionierung Konfiguration
Infrastructure
as Code
35. Mit Chef einen Karaf Server
provisionieren
Kochbuch für Linux apt tool
..für Java
Infrastructure as Code
(in GIT oder SVN)
36. Ein Rezept für Karaf
Dateien zur Basiskonfiguration
Das Rezept
37. Mit Chef das Karaf Archiv
herunterladen
remote_file "/tmp/k.tar.gz" do
action :create_if_missing
source "http:///www.apache.org/karaf/2.2.4/apache-karaf-2.2.4.tar.gz"
mode "0644"
checksum "a09f85142e9bb8290cdf332af8201b31ba6d993a"
end
38. .. und auspacken
bash "install_karaf" do
user "vagrant"
cwd "/home/vagrant"
code <<-EOH
tar -zxf /tmp/#{KARAF}.tar.gz
EOH
end
44. Reproduzierbarkeit ist machbar
Binaries nur
Alles einchecken
einmal bauen
Exakt gleicher
Alles Deployment
automatisieren Mechanismus in
jeder Umgebung
Reprodu
zierbarkeit
45. Nennen wir es Lean
Schnell liefern
Qualität gewährleisten
Optimierung (Deming Cycle)
Waste eliminieren
Decide Late
Empower the team
spezifizieren umsetzen testen testen
Stop the line!
46. Vielen Dank! Fragen?
https://github.com/sistar/camel-examples
@sistar ralf.sigmund
ralf.sigmund@opitz-consulting.com christoph.ortmann@opitz-consulting.com