Skip to content

Commit

Permalink
Add cache-caffeine smoke test
Browse files Browse the repository at this point in the history
See gh-40
  • Loading branch information
mhalbritter committed Aug 9, 2022
1 parent ed0c208 commit 45499ea
Show file tree
Hide file tree
Showing 13 changed files with 162 additions and 0 deletions.
1 change: 1 addition & 0 deletions cache-caffeine/README.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Tests if caching with Caffeine works
17 changes: 17 additions & 0 deletions cache-caffeine/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
plugins {
id 'java'
id 'org.springframework.boot'
id 'org.springframework.aot.smoke-test'
id 'org.graalvm.buildtools.native'
}

dependencies {
implementation(platform(org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES))
implementation("org.springframework.boot:spring-boot-starter-cache")
implementation("com.github.ben-manes.caffeine:caffeine")

testImplementation("org.springframework.boot:spring-boot-starter-test")

aotTestImplementation(project(":aot-smoke-test-support"))
aotTestImplementation("org.awaitility:awaitility:4.2.0")
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.example.cache.caffeine;

import java.time.Duration;

import org.awaitility.Awaitility;
import org.junit.jupiter.api.Test;

import org.springframework.aot.smoketest.support.assertj.AssertableOutput;
import org.springframework.aot.smoketest.support.junit.AotSmokeTest;

import static org.assertj.core.api.Assertions.assertThat;

@AotSmokeTest
class CacheCaffeineApplicationAotTests {

@Test
void methodIsCachedOnClasses(AssertableOutput output) {
Awaitility.await().atMost(Duration.ofSeconds(10)).untilAsserted(() -> {
assertThat(output).hasSingleLineContaining("class.invoke: 1").hasNoLinesContaining("class.invoke: 2");
});
}

@Test
void methodIsCachedOnInterfaces(AssertableOutput output) {
Awaitility.await().atMost(Duration.ofSeconds(10)).untilAsserted(() -> {
assertThat(output).hasSingleLineContaining("interface.invoke: 1")
.hasNoLinesContaining("interface.invoke: 2");
});
}

}
30 changes: 30 additions & 0 deletions cache-caffeine/src/main/java/com/example/cache/caffeine/CLR.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.example.cache.caffeine;

import com.example.cache.caffeine.clazz.TestServiceClass;
import com.example.cache.caffeine.iface.TestServiceInterface;

import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;

@Component
class CLR implements CommandLineRunner {

private final TestServiceClass testServiceClass;

private final TestServiceInterface testServiceInterface;

public CLR(TestServiceClass testServiceClass, TestServiceInterface testServiceInterface) {
this.testServiceClass = testServiceClass;
this.testServiceInterface = testServiceInterface;
}

@Override
public void run(String... args) {
this.testServiceClass.invoke();
this.testServiceClass.invoke();

this.testServiceInterface.invoke();
this.testServiceInterface.invoke();
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.example.cache.caffeine;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class CacheCaffeineApplication {

public static void main(String[] args) throws InterruptedException {
SpringApplication.run(CacheCaffeineApplication.class, args);
Thread.currentThread().join(); // To be able to measure memory consumption
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.example.cache.caffeine;

import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Configuration;

@Configuration(proxyBeanMethods = false)
@EnableCaching
class CacheConfiguration {

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.example.cache.caffeine.clazz;

import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;

@Service
public class TestServiceClass {

private int counter = 1;

@Cacheable(cacheNames = "class.invoke")
public void invoke() {
System.out.printf("class.invoke: %d%n", this.counter);
this.counter++;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.example.cache.caffeine.iface;

public interface TestServiceInterface {

void invoke();

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.example.cache.caffeine.iface;

import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;

@Service
class TestServiceWithInterface implements TestServiceInterface {

private int counter = 1;

@Override
@Cacheable(cacheNames = "interface.invoke")
public void invoke() {
System.out.printf("interface.invoke: %d%n", this.counter);
this.counter++;
}

}
1 change: 1 addition & 0 deletions cache-caffeine/src/main/resources/application.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
spring.cache.type=caffeine
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.example.cache.caffeine;

import org.junit.jupiter.api.Test;

import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class CacheCaffeineApplicationTests {

@Test
void contextLoads() {
}

}
1 change: 1 addition & 0 deletions ci/smoke-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ smoke_tests:
- aspect
- async
- batch
- cache-caffeine
- cache-hazelcast
- cloud-function-web
- cloud-function-webflux
Expand Down
1 change: 1 addition & 0 deletions settings.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ include "actuator-webmvc-mgmt-port"
include "aspect"
include "async"
include "batch"
include "cache-caffeine"
include "cache-hazelcast"
include "cloud-function-web"
include "cloud-function-webflux"
Expand Down

0 comments on commit 45499ea

Please sign in to comment.