Post on 07-Aug-2019
transcript
1
KURZE WEGE,SCHNELLE
ENTSCHEIDUNGEN
1
Die Dr. Güldener Firmengruppe bietet Abrechnungsdienstleistungen und Services für Ärzte, Zahnärzte, Heil- und
Hilfsmittelerbringer sowie Apotheker
9 StandorteHauptsitz Stuttgart
Mehrere Mrd. €Abrechnungsvolumen
Über 1.000 Mitarbeiter deutschlandweit
• Mehr als 40 Jahre Erfahrung
• Marktführer in der zahnärztlichen
Privatliquidation
• Innovative Leistungen und Services
unterstützen Zahnarztpraxen, MKG-
Chirurgen und Patienten
• Abrechnungs- und Erstattungsunterstützung
• Übernahme des gesamten Mahnwesens
inklusive Forderungs- / Honorarausfallschutz
• Teilzahlungsmöglichkeiten für Patienten
• Mehr als 40 Jahre Erfahrung
• Abrechnungs- und Finanzdienstleister im
deutschen Heil- und Hilfsmittelmarkt
• Abrechnung von Kassen- und
Privatrezepten für Physiotherapeuten,
Ergotherapeuten, Logopäden, Podologen,
Sanitätshäuser
• Abrechnung von Kassen- und
Privatrezepten für Unternehmen aus den
Bereichen Homecare und Medizintechnik
• Mehr als 65 Jahre Erfahrung
• Seit Jahrzehnten Partner für Apotheken
und Ärzte bei der Abrechnung von
Rezepten bzw. der Privatliquidation
• Rezeptvorprüfung bei Apotheken
„Scan & Check“
• Prüfung der Rechnungsangaben
anhand der GOÄ
• Gewährleistung von Datensicherheit
und Liquidität
Über 45.000Kunden
60 Entwickler
8 Admins
2 DevOps
class VWTest extends PHPUnit_Framework_TestCase { private $emissions = 12000; private $legalLimit = 300; public function testEnvironmentalImpactCompliance() { $this->assertLessThan($this->legalLimit, $this->emissions); } }
https://github.com/hmlb/phpunit-vw
https://www.pexels.com/de-de/foto/auto-automobil-fahrzeug-hd-wallpaper-163809/
...mach‘ ich mir
die Welt, wie sie
mir gefällt (Pipi Langstrumpf)
www.testcontainers.org
Testcontainers is a Java
library that supports JUnit
tests, providing lightweight,
throwaway instances of
common databases, Selenium
web browsers, or anything
else that can run in a Docker
container.
Demo
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>testcontainers</artifactId>
<version>1.11.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>postgresql</artifactId>
<version>1.11.3</version>
<scope>test</scope>
</dependency>
# Travis
language: java
jdk:
- oraclejdk8
sudo: required
services:
- docker
Demo
@ClassRule
public static PostgreSQLContainer postgreSQLContainer = new PostgreSQLContainer()
.withUsername("Oli B.").withPassword("******");
@BeforeClass
public static void setUpLogConfig() {
LOG.info("Setting up logConfig...");
//URI jdbcURI = URI.create("jdbc:hsqldb:mem:logdb");
//logConfig = new LogConfig(jdbcURI, "sa", "");
URI jdbcURI = URI.create(postgreSQLContainer.getJdbcUrl());
logConfig = new LogConfig(jdbcURI, postgreSQLContainer.getUsername(),
postgreSQLContainer.getPassword());
LOG.info("Setting up logConfig {} successful finished.", logConfig);
}
// s.a. https://github.com/oboehm/gdv.xport/blob/master/lib/src/test/java/gdv/xport/config/LogConfigIT.java
@ClassRule
public static PostgreSQLContainer postgreSQLContainer = new PostgreSQLContainer();
/**
* Einige Properties stehen fuer Spring erst nach Initialisierung des
* Containers bereit. Das betrifft insbesondere die JDBC-URL. Ueber
* eine eigene Initializer-Klasse koennen diese fuer Spring gesetzt
* werden, nachdem der Container hochgefahren ist.
*/
public static class Initializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {
@Override
public void initialize(ConfigurableApplicationContext configurableApplicationContext) {
TestPropertySourceUtils.addInlinedPropertiesToEnvironment(configurableApplicationContext,
"spring.datasource.url=" + postgreSQLContainer.getJdbcUrl(),
"spring.datasource.username=" + postgreSQLContainer.getUsername(),
"spring.datasource.password=" + postgreSQLContainer.getPassword(),
"spring.datasource.driverClassName=" + postgreSQLContainer.getDriverClassName()
);
}
}
Eigenbau
@Rule public GenericContainer redis = new GenericContainer("redis:3.0.6")
.withExposedPorts(6379);
private Cache cache;
@Before
public void setUp() throws Exception {
Jedis jedis = new Jedis(redis.getContainerIpAddress(), redis.getMappedPort(6379));
cache = new RedisBackedCache(jedis, "test");
}
https://www.flickr.com/photos/50732955@N00/13783842354/
Troubleshooting (Win8)
• Umgebungsvariablen überprüfen (Win8):
DOCKER_HOST=tcp://192.168.99.100:2376
DOCKER_CERT_PATH=%HOMEDRIVE%%HOMEPATH%\.docker\machine\certs
DOCKER_TLS_VERIFY=0
• ~/.testcontainers.properties anlegen mit
checks.disable=true
Erfahrungswerte
• klappt ganz gut, trotz Exception 09:05:47,416 ERROR main ientProviderStrategy ping failed with configuration Environment variables, system properties and defaults. Resolved: dockerHost=tcp://192.168.99.100:2376 apiVersion='{UNKNOWN_VERSION}' registryUrl='https://index.docker.io/v1/' registryUsername='oboehm' registryPassword='null' registryEmail='null' dockerConfig='DefaultDockerClientConfig[dockerHost=tcp://192.168.99.100:2376,registryUsername=oboehm,registryPassword=<null>,registryEmail=<null>,registryUrl=https://index.docker.io/v1/,... due to org.rnorth.ducttape.TimeoutException: org.rnorth.ducttape.TimeoutException: java.util.concurrent.TimeoutException org.rnorth.ducttape.TimeoutException: org.rnorth.ducttape.TimeoutException: java.util.concurrent.TimeoutException at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:53) at org.testcontainers.dockerclient.DockerClientProviderStrategy.ping(DockerClientProviderStrategy.java:189) at org.testcontainers.dockerclient.EnvironmentAndSystemPropertyClientProviderStrategy.test(EnvironmentAndSystemPropertyClientProviderStrategy.java:42) at org.testcontainers.dockerclient.DockerClientProviderStrategy.lambda$getFirstValidStrategy$2(DockerClientProviderStrategy.java:112) at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:267)
• Startzeit Container: ca. 20 Sek. (Win8; Mac: ca. 5 Sek.)
• Overhead: Faktor 2 - 3
Die Frage ist nicht: Können wir es uns leisten, zu testen?
Die Frage ist: Können wir es uns leisten, nicht zu testen?
Auf dem PC ist ein Problem aufgetreten. Er muss neu
gestartet werden. Es werden einige Fehlinformationen
gesammelt, und dann wird ein Neustart ausgeführt.
(0% abgeschlossen)
Dieser Absturz wurde ihnen präsentiert von: Optica Abrechnungszentrum
Auf dem PC ist ein Problem aufgetreten. Er muss neu
gestartet werden. Es werden einige Fehlinformationen
gesammelt, und dann wird ein Neustart ausgeführt.
(8% abgeschlossen)
Dieser Absturz wurde ihnen präsentiert von: Optica Abrechnungszentrum
Auf dem PC ist ein Problem aufgetreten. Er muss neu
gestartet werden. Es werden einige Fehlinformationen
gesammelt, und dann wird ein Neustart ausgeführt.
(0% abgeschlossen)
Dieser Absturz wurde ihnen präsentiert von: Optica Abrechnungszentrum
Mit testcontainers wird es
schwieriger, Ausreden*
dafür zu finden!
* gute Ausreden bitte an:
@JitStorm
O.Boehm@Optica.de