Remove dependency on Kotlin for tests

The Eclipse tooling keeps flaking out and refuses to work at all
since 0.8.7. Maybe revisit this when it is stable.
This commit is contained in:
Dave Syer
2018-11-16 17:19:14 +00:00
parent 0287a5d8f3
commit 8cce006b4c
3 changed files with 78 additions and 86 deletions

View File

@@ -28,6 +28,7 @@ import java.util.function.Supplier;
import java.util.stream.Collectors;
import org.junit.After;
import org.junit.Ignore;
import org.junit.Test;
import org.reactivestreams.Publisher;
@@ -48,7 +49,6 @@ import org.springframework.cloud.function.context.FunctionRegistration;
import org.springframework.cloud.function.context.FunctionScan;
import org.springframework.cloud.function.context.catalog.FunctionInspector;
import org.springframework.cloud.function.inject.FooConfiguration;
import org.springframework.cloud.function.kotlin.KotlinLambdasConfiguration;
import org.springframework.cloud.function.scan.ScannedFunction;
import org.springframework.cloud.function.test.GenericFunction;
import org.springframework.context.ConfigurableApplicationContext;
@@ -96,10 +96,10 @@ public class ContextFunctionCatalogAutoConfigurationTests {
public void lookUps() {
create(SimpleConfiguration.class);
assertThat(context.getBean("function")).isInstanceOf(Function.class);
assertThat((Function<?,?>)catalog.lookup(Function.class, "function"))
assertThat((Function<?, ?>) catalog.lookup(Function.class, "function"))
.isInstanceOf(Function.class);
assertThat(context.getBean("function2")).isInstanceOf(Function.class);
assertThat((Function<?,?>)catalog.lookup(Function.class, "function,function2"))
assertThat((Function<?, ?>) catalog.lookup(Function.class, "function,function2"))
.isInstanceOf(Function.class);
Function<Flux<String>, Flux<String>> f = catalog.lookup(Function.class,
"function,function2,function3");
@@ -107,10 +107,10 @@ public class ContextFunctionCatalogAutoConfigurationTests {
assertThat(f.apply(Flux.just("hello")).blockFirst())
.isEqualTo("HELLOfunction2function3");
assertThat(context.getBean("supplierFoo")).isInstanceOf(Supplier.class);
assertThat((Supplier<?>)catalog.lookup(Supplier.class, "supplierFoo"))
assertThat((Supplier<?>) catalog.lookup(Supplier.class, "supplierFoo"))
.isInstanceOf(Supplier.class);
assertThat(context.getBean("supplier_Foo")).isInstanceOf(Supplier.class);
assertThat((Supplier<?>)catalog.lookup(Supplier.class, "supplier_Foo"))
assertThat((Supplier<?>) catalog.lookup(Supplier.class, "supplier_Foo"))
.isInstanceOf(Supplier.class);
}
@@ -118,9 +118,9 @@ public class ContextFunctionCatalogAutoConfigurationTests {
public void ambiguousFunction() {
create(AmbiguousConfiguration.class);
assertThat(context.getBean("foos")).isInstanceOf(Function.class);
assertThat((Function<?,?>)catalog.lookup(Function.class, "foos"))
assertThat((Function<?, ?>) catalog.lookup(Function.class, "foos"))
.isInstanceOf(Function.class);
assertThat((Supplier<?>)catalog.lookup(Supplier.class, "foos"))
assertThat((Supplier<?>) catalog.lookup(Supplier.class, "foos"))
.isInstanceOf(Supplier.class);
assertThat(inspector.getInputType(catalog.lookup(Function.class, "foos")))
.isEqualTo(String.class);
@@ -132,7 +132,7 @@ public class ContextFunctionCatalogAutoConfigurationTests {
public void configurationFunction() {
create(FunctionConfiguration.class);
assertThat(context.getBean("foos")).isInstanceOf(Function.class);
assertThat((Function<?,?>)catalog.lookup(Function.class, "foos"))
assertThat((Function<?, ?>) catalog.lookup(Function.class, "foos"))
.isInstanceOf(Function.class);
assertThat(inspector.getInputType(catalog.lookup(Function.class, "foos")))
.isEqualTo(String.class);
@@ -146,7 +146,7 @@ public class ContextFunctionCatalogAutoConfigurationTests {
public void dependencyInjection() {
create(DependencyInjectionConfiguration.class);
assertThat(context.getBean("foos")).isInstanceOf(Function.class);
assertThat((Function<?,?>)catalog.lookup(Function.class, "foos"))
assertThat((Function<?, ?>) catalog.lookup(Function.class, "foos"))
.isInstanceOf(Function.class);
assertThat(inspector.getInputType(catalog.lookup(Function.class, "foos")))
.isEqualTo(String.class);
@@ -156,7 +156,7 @@ public class ContextFunctionCatalogAutoConfigurationTests {
public void externalDependencyInjection() {
create(ExternalDependencyConfiguration.class);
assertThat(context.getBean("foos")).isInstanceOf(Function.class);
assertThat((Function<?,?>)catalog.lookup(Function.class, "foos"))
assertThat((Function<?, ?>) catalog.lookup(Function.class, "foos"))
.isInstanceOf(Function.class);
assertThat(inspector.getInputType(catalog.lookup(Function.class, "foos")))
.isEqualTo(String.class);
@@ -165,9 +165,10 @@ public class ContextFunctionCatalogAutoConfigurationTests {
@Test
public void composedFunction() {
create(MultipleConfiguration.class);
assertThat((Function<?,?>)catalog.lookup(Function.class, "foos,bars"))
assertThat((Function<?, ?>) catalog.lookup(Function.class, "foos,bars"))
.isInstanceOf(Function.class);
assertThat((Function<?,?>)catalog.lookup(Function.class, "names,foos")).isNull();
assertThat((Function<?, ?>) catalog.lookup(Function.class, "names,foos"))
.isNull();
assertThat(inspector.getInputType(catalog.lookup(Function.class, "foos,bars")))
.isAssignableFrom(String.class);
assertThat(inspector.getOutputType(catalog.lookup(Function.class, "foos,bars")))
@@ -177,9 +178,10 @@ public class ContextFunctionCatalogAutoConfigurationTests {
@Test
public void composedSupplier() {
create(MultipleConfiguration.class);
assertThat((Supplier<?>)catalog.lookup(Supplier.class, "names,foos"))
assertThat((Supplier<?>) catalog.lookup(Supplier.class, "names,foos"))
.isInstanceOf(Supplier.class);
assertThat((Function<?,?>)catalog.lookup(Function.class, "names,foos")).isNull();
assertThat((Function<?, ?>) catalog.lookup(Function.class, "names,foos"))
.isNull();
assertThat(inspector.getOutputType(catalog.lookup(Supplier.class, "names,foos")))
.isAssignableFrom(Foo.class);
// The input type is the same as the input type of the first element in the chain
@@ -190,8 +192,8 @@ public class ContextFunctionCatalogAutoConfigurationTests {
@Test
public void composedConsumer() {
create(MultipleConfiguration.class);
assertThat((Consumer<?>)catalog.lookup(Consumer.class, "foos,print")).isNull();
assertThat((Function<?,?>)catalog.lookup(Function.class, "foos,print"))
assertThat((Consumer<?>) catalog.lookup(Consumer.class, "foos,print")).isNull();
assertThat((Function<?, ?>) catalog.lookup(Function.class, "foos,print"))
.isInstanceOf(Function.class);
assertThat(inspector.getInputType(catalog.lookup(Function.class, "foos,print")))
.isAssignableFrom(String.class);
@@ -204,7 +206,7 @@ public class ContextFunctionCatalogAutoConfigurationTests {
public void genericFunction() {
create(GenericConfiguration.class);
assertThat(context.getBean("function")).isInstanceOf(Function.class);
assertThat((Function<?,?>)catalog.lookup(Function.class, "function"))
assertThat((Function<?, ?>) catalog.lookup(Function.class, "function"))
.isInstanceOf(Function.class);
assertThat(inspector.getInputType(catalog.lookup(Function.class, "function")))
.isAssignableFrom(Map.class);
@@ -216,7 +218,7 @@ public class ContextFunctionCatalogAutoConfigurationTests {
public void fluxMessageFunction() {
create(FluxMessageConfiguration.class);
assertThat(context.getBean("function")).isInstanceOf(Function.class);
assertThat((Function<?,?>)catalog.lookup(Function.class, "function"))
assertThat((Function<?, ?>) catalog.lookup(Function.class, "function"))
.isInstanceOf(Function.class);
assertThat(inspector.isMessage(catalog.lookup(Function.class, "function")))
.isTrue();
@@ -230,7 +232,7 @@ public class ContextFunctionCatalogAutoConfigurationTests {
public void publisherMessageFunction() {
create(PublisherMessageConfiguration.class);
assertThat(context.getBean("function")).isInstanceOf(Function.class);
assertThat((Function<?,?>)catalog.lookup(Function.class, "function"))
assertThat((Function<?, ?>) catalog.lookup(Function.class, "function"))
.isInstanceOf(Function.class);
assertThat(inspector.isMessage(catalog.lookup(Function.class, "function")))
.isTrue();
@@ -244,7 +246,7 @@ public class ContextFunctionCatalogAutoConfigurationTests {
public void monoFunction() {
create(MonoConfiguration.class);
assertThat(context.getBean("function")).isInstanceOf(Function.class);
assertThat((Function<?,?>)catalog.lookup(Function.class, "function"))
assertThat((Function<?, ?>) catalog.lookup(Function.class, "function"))
.isInstanceOf(Function.class);
assertThat(inspector.isMessage(catalog.lookup(Function.class, "function")))
.isFalse();
@@ -260,7 +262,7 @@ public class ContextFunctionCatalogAutoConfigurationTests {
public void messageFunction() {
create(MessageConfiguration.class);
assertThat(context.getBean("function")).isInstanceOf(Function.class);
assertThat((Function<?,?>)catalog.lookup(Function.class, "function"))
assertThat((Function<?, ?>) catalog.lookup(Function.class, "function"))
.isInstanceOf(Function.class);
assertThat(inspector.isMessage(catalog.lookup(Function.class, "function")))
.isTrue();
@@ -274,7 +276,7 @@ public class ContextFunctionCatalogAutoConfigurationTests {
public void genericFluxFunction() {
create(GenericFluxConfiguration.class);
assertThat(context.getBean("function")).isInstanceOf(Function.class);
assertThat((Function<?,?>)catalog.lookup(Function.class, "function"))
assertThat((Function<?, ?>) catalog.lookup(Function.class, "function"))
.isInstanceOf(Function.class);
assertThat(inspector.getInputType(catalog.lookup(Function.class, "function")))
.isAssignableFrom(Map.class);
@@ -286,7 +288,7 @@ public class ContextFunctionCatalogAutoConfigurationTests {
public void externalFunction() {
create(ExternalConfiguration.class);
assertThat(context.getBean("function")).isInstanceOf(Function.class);
assertThat((Function<?,?>)catalog.lookup(Function.class, "function"))
assertThat((Function<?, ?>) catalog.lookup(Function.class, "function"))
.isInstanceOf(Function.class);
assertThat(inspector.getInputType(catalog.lookup(Function.class, "function")))
.isAssignableFrom(Map.class);
@@ -298,7 +300,7 @@ public class ContextFunctionCatalogAutoConfigurationTests {
public void singletonFunction() {
create(SingletonConfiguration.class);
assertThat(context.getBean("function")).isInstanceOf(Function.class);
assertThat((Function<?,?>)catalog.lookup(Function.class, "function"))
assertThat((Function<?, ?>) catalog.lookup(Function.class, "function"))
.isInstanceOf(Function.class);
assertThat(inspector.getInputType(catalog.lookup(Function.class, "function")))
.isAssignableFrom(Integer.class);
@@ -310,7 +312,7 @@ public class ContextFunctionCatalogAutoConfigurationTests {
public void singletonMessageFunction() {
create(SingletonMessageConfiguration.class);
assertThat(context.getBean("function")).isInstanceOf(Function.class);
assertThat((Function<?,?>)catalog.lookup(Function.class, "function"))
assertThat((Function<?, ?>) catalog.lookup(Function.class, "function"))
.isInstanceOf(Function.class);
assertThat(inspector.getInputType(catalog.lookup(Function.class, "function")))
.isAssignableFrom(Integer.class);
@@ -324,7 +326,7 @@ public class ContextFunctionCatalogAutoConfigurationTests {
public void nonParametericTypeFunction() {
create(NonParametricTypeSingletonConfiguration.class);
assertThat(context.getBean("function")).isInstanceOf(Function.class);
assertThat((Function<?,?>)catalog.lookup(Function.class, "function"))
assertThat((Function<?, ?>) catalog.lookup(Function.class, "function"))
.isInstanceOf(Function.class);
assertThat(inspector.getInputType(catalog.lookup(Function.class, "function")))
.isAssignableFrom(Integer.class);
@@ -336,7 +338,7 @@ public class ContextFunctionCatalogAutoConfigurationTests {
public void componentScanBeanFunction() {
create(ComponentScanBeanConfiguration.class);
assertThat(context.getBean("function")).isInstanceOf(Function.class);
assertThat((Function<?,?>)catalog.lookup(Function.class, "function"))
assertThat((Function<?, ?>) catalog.lookup(Function.class, "function"))
.isInstanceOf(Function.class);
assertThat(inspector.getInputType(catalog.lookup(Function.class, "function")))
.isAssignableFrom(Map.class);
@@ -348,7 +350,7 @@ public class ContextFunctionCatalogAutoConfigurationTests {
public void componentScanFunction() {
create(ComponentScanConfiguration.class);
assertThat(context.getBean("function")).isInstanceOf(Function.class);
assertThat((Function<?,?>)catalog.lookup(Function.class, "function"))
assertThat((Function<?, ?>) catalog.lookup(Function.class, "function"))
.isInstanceOf(Function.class);
assertThat(inspector.getInputType(catalog.lookup(Function.class, "function")))
.isAssignableFrom(Map.class);
@@ -361,7 +363,7 @@ public class ContextFunctionCatalogAutoConfigurationTests {
try {
create("greeter.jar", ComponentScanJarConfiguration.class);
assertThat(context.getBean("greeter")).isInstanceOf(Function.class);
assertThat((Function<?,?>)catalog.lookup(Function.class, "greeter"))
assertThat((Function<?, ?>) catalog.lookup(Function.class, "greeter"))
.isInstanceOf(Function.class);
assertThat(inspector.getInputType(catalog.lookup(Function.class, "greeter")))
.isAssignableFrom(String.class);
@@ -375,36 +377,45 @@ public class ContextFunctionCatalogAutoConfigurationTests {
}
@Test
@Ignore("Cannot make this work in Eclipse (since the tools upgraded to 0.8.9)")
public void kotlinLambdas() {
create(new Class[] {KotlinLambdasConfiguration.class, SimpleConfiguration.class});
create("org.springframework.cloud.function.context.config.KotlinLambdasConfiguration",
new Class[] { SimpleConfiguration.class });
assertThat(context.getBean("kotlinFunction")).isInstanceOf(Function.class);
assertThat(context.getBean("kotlinFunction")).isInstanceOf(Function1.class);
assertThat((Function<?,?>)catalog.lookup(Function.class, "kotlinFunction"))
assertThat((Function<?, ?>) catalog.lookup(Function.class, "kotlinFunction"))
.isInstanceOf(Function.class);
assertThat(inspector.getInputType(catalog.lookup(Function.class, "kotlinFunction")))
.isAssignableFrom(String.class);
assertThat(inspector.getOutputType(catalog.lookup(Function.class, "kotlinFunction")))
.isAssignableFrom(String.class);
assertThat(
inspector.getInputType(catalog.lookup(Function.class, "kotlinFunction")))
.isAssignableFrom(String.class);
assertThat(
inspector.getOutputType(catalog.lookup(Function.class, "kotlinFunction")))
.isAssignableFrom(String.class);
assertThat(context.getBean("kotlinConsumer")).isInstanceOf(Consumer.class);
assertThat(context.getBean("kotlinConsumer")).isInstanceOf(Function1.class);
assertThat((Function<?,?>)catalog.lookup(Function.class, "kotlinConsumer"))
assertThat((Function<?, ?>) catalog.lookup(Function.class, "kotlinConsumer"))
.isInstanceOf(Function.class);
assertThat(inspector.getInputType(catalog.lookup(Function.class, "kotlinConsumer")))
.isAssignableFrom(String.class);
assertThat(
inspector.getInputType(catalog.lookup(Function.class, "kotlinConsumer")))
.isAssignableFrom(String.class);
assertThat(context.getBean("kotlinSupplier")).isInstanceOf(Supplier.class);
assertThat(context.getBean("kotlinSupplier")).isInstanceOf(Function0.class);
Supplier<Flux<String>> supplier = catalog.lookup(Supplier.class, "kotlinSupplier");
Supplier<Flux<String>> supplier = catalog.lookup(Supplier.class,
"kotlinSupplier");
assertThat(supplier.get().blockFirst()).isEqualTo("Hello");
assertThat((Supplier<?>)catalog.lookup(Supplier.class, "kotlinSupplier"))
assertThat((Supplier<?>) catalog.lookup(Supplier.class, "kotlinSupplier"))
.isInstanceOf(Supplier.class);
assertThat(inspector.getOutputType(catalog.lookup(Supplier.class, "kotlinSupplier")))
.isAssignableFrom(String.class);
assertThat(
inspector.getOutputType(catalog.lookup(Supplier.class, "kotlinSupplier")))
.isAssignableFrom(String.class);
Function<Flux<String>, Flux<String>> function = catalog.lookup(Function.class, "kotlinFunction|function2");
assertThat(function.apply(Flux.just("Hello")).blockFirst()).isEqualTo("HELLOfunction2");
Function<Flux<String>, Flux<String>> function = catalog.lookup(Function.class,
"kotlinFunction|function2");
assertThat(function.apply(Flux.just("Hello")).blockFirst())
.isEqualTo("HELLOfunction2");
}
private void create(String jarfile, Class<?> config, String... props) {
@@ -455,8 +466,8 @@ public class ContextFunctionCatalogAutoConfigurationTests {
public void qualifiedBean() {
create(QualifiedConfiguration.class);
assertThat(context.getBean("function")).isInstanceOf(Function.class);
assertThat((Function<?,?>)catalog.lookup(Function.class, "function")).isNull();
assertThat((Function<?,?>)catalog.lookup(Function.class, "other"))
assertThat((Function<?, ?>) catalog.lookup(Function.class, "function")).isNull();
assertThat((Function<?, ?>) catalog.lookup(Function.class, "other"))
.isInstanceOf(Function.class);
assertThat(inspector.getInputType(catalog.lookup(Function.class, "other")))
.isEqualTo(String.class);
@@ -466,9 +477,9 @@ public class ContextFunctionCatalogAutoConfigurationTests {
public void aliasBean() {
create(AliasConfiguration.class);
assertThat(context.getBean("function")).isInstanceOf(Function.class);
assertThat((Function<?,?>)catalog.lookup(Function.class, "function"))
assertThat((Function<?, ?>) catalog.lookup(Function.class, "function"))
.isNotNull();
assertThat((Function<?,?>)catalog.lookup(Function.class, "other"))
assertThat((Function<?, ?>) catalog.lookup(Function.class, "other"))
.isInstanceOf(Function.class);
}
@@ -476,10 +487,10 @@ public class ContextFunctionCatalogAutoConfigurationTests {
public void registrationBean() {
create(RegistrationConfiguration.class);
assertThat(context.getBean("function")).isInstanceOf(Function.class);
assertThat((Function<?,?>)catalog.lookup(Function.class, "function")).isNull();
assertThat((Function<?,?>)catalog.lookup(Function.class, "registration"))
assertThat((Function<?, ?>) catalog.lookup(Function.class, "function")).isNull();
assertThat((Function<?, ?>) catalog.lookup(Function.class, "registration"))
.isNull();
assertThat((Function<?,?>)catalog.lookup(Function.class, "other"))
assertThat((Function<?, ?>) catalog.lookup(Function.class, "other"))
.isInstanceOf(Function.class);
}
@@ -490,7 +501,7 @@ public class ContextFunctionCatalogAutoConfigurationTests {
"spring.cloud.function.compile.foos.inputType=String",
"spring.cloud.function.compile.foos.outputType=String");
assertThat(context.getBean("foos")).isInstanceOf(Function.class);
assertThat((Function<?,?>)catalog.lookup(Function.class, "foos"))
assertThat((Function<?, ?>) catalog.lookup(Function.class, "foos"))
.isInstanceOf(Function.class);
assertThat(inspector.getInputWrapper(catalog.lookup(Function.class, "foos")))
.isEqualTo(String.class);
@@ -506,7 +517,7 @@ public class ContextFunctionCatalogAutoConfigurationTests {
create(EmptyConfiguration.class,
"spring.cloud.function.imports.foos.location=file:./target/foos.fun");
assertThat(context.getBean("foos")).isInstanceOf(Function.class);
assertThat((Function<?,?>)catalog.lookup(Function.class, "foos"))
assertThat((Function<?, ?>) catalog.lookup(Function.class, "foos"))
.isInstanceOf(Function.class);
assertThat(inspector.getInputWrapper(catalog.lookup(Function.class, "foos")))
.isEqualTo(String.class);
@@ -519,7 +530,7 @@ public class ContextFunctionCatalogAutoConfigurationTests {
+ "::set",
"spring.cloud.function.compile.foos.type=consumer",
"spring.cloud.function.compile.foos.inputType=String");
assertThat((Function<?,?>)catalog.lookup(Function.class, "foos"))
assertThat((Function<?, ?>) catalog.lookup(Function.class, "foos"))
.isInstanceOf(Function.class);
assertThat(inspector.getInputWrapper(catalog.lookup(Function.class, "foos")))
.isEqualTo(String.class);
@@ -535,7 +546,7 @@ public class ContextFunctionCatalogAutoConfigurationTests {
"spring.cloud.function.compile.foos.lambda=f -> f.subscribe("
+ getClass().getName() + "::set)",
"spring.cloud.function.compile.foos.type=consumer");
assertThat((Consumer<?>)catalog.lookup(Consumer.class, "foos"))
assertThat((Consumer<?>) catalog.lookup(Consumer.class, "foos"))
.isInstanceOf(Consumer.class);
assertThat(inspector.getInputWrapper(catalog.lookup(Consumer.class, "foos")))
.isEqualTo(Flux.class);
@@ -550,7 +561,7 @@ public class ContextFunctionCatalogAutoConfigurationTests {
public void factoryBeanFunction() {
create(FactoryBeanConfiguration.class);
assertThat(this.context.getBean("function")).isInstanceOf(Function.class);
assertThat((Function<?,?>)catalog.lookup(Function.class, "function"))
assertThat((Function<?, ?>) catalog.lookup(Function.class, "function"))
.isInstanceOf(Function.class);
Function<Flux<String>, Flux<String>> f = this.catalog.lookup(Function.class,
"function");
@@ -561,8 +572,15 @@ public class ContextFunctionCatalogAutoConfigurationTests {
create(new Class<?>[] { type }, props);
}
private void create(String typeName, Class<?>[] types, String... props) {
Class<?>[] typesToUse = new Class<?>[types.length + 1];
typesToUse[0] = ClassUtils.resolveClassName(typeName, null);
System.arraycopy(types, 0, typesToUse, 1, types.length);
create(typesToUse, props);
}
private void create(Class<?>[] types, String... props) {
context = new SpringApplicationBuilder((Class[]) types).properties(props).run();
context = new SpringApplicationBuilder(types).properties(props).run();
catalog = context.getBean(FunctionCatalog.class);
inspector = context.getBean(FunctionInspector.class);
}
@@ -852,7 +870,8 @@ public class ContextFunctionCatalogAutoConfigurationTests {
protected static class RegistrationConfiguration {
@Bean
public FunctionRegistration<Function<String, String>> registration() {
return new FunctionRegistration<Function<String, String>>(function(), "other");
return new FunctionRegistration<Function<String, String>>(function(),
"other");
}
@Bean