@ -1,5 +1,5 @@
/ *
* Copyright 2012 - 201 5 the original author or authors .
* Copyright 2012 - 201 6 the original author or authors .
*
* Licensed under the Apache License , Version 2.0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
@ -16,53 +16,96 @@
package org.springframework.boot.autoconfigure.integration ;
import java.util.Arrays ;
import java.util.List ;
import javax.management.MBeanServer ;
import org.junit.After ;
import org.junit.Test ;
import org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration ;
import org.springframework.context.ConfigurableApplicationContext ;
import org.springframework.context.annotation.AnnotationConfigApplicationContext ;
import org.springframework.integration.support.channel.HeaderChannelRegistry ;
import org.springframework.test.context.support.TestPropertySourceUtils ;
import static org.junit.Assert.assertEquals ;
import static org.junit.Assert.assertNotNull ;
/ * *
* Tests for { @link IntegrationAutoConfiguration } .
*
* @author Artem Bilan
* @author Stephane Nicoll
* /
public class IntegrationAutoConfigurationTests {
private AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext ( ) ;
private AnnotationConfigApplicationContext context ;
@After
public void close ( ) {
if ( this . context ! = null ) {
this . context . close ( ) ;
if ( this . context . getParent ( ) ! = null ) {
( ( ConfigurableApplicationContext ) this . context . getParent ( ) ) . close ( ) ;
}
}
}
@Test
public void integrationIsAvailable ( ) {
this . context . register ( IntegrationAutoConfiguration . class ) ;
this . context . refresh ( ) ;
load ( ) ;
MBeanServer mBeanServer = this . context . getBean ( MBeanServer . class ) ;
assertDomains ( mBeanServer , true , "org.springframework.integration" ,
"org.springframework.integration.monitor" ) ;
assertNotNull ( this . context . getBean ( HeaderChannelRegistry . class ) ) ;
this . context . close ( ) ;
}
@Test
public void addJmxAuto ( ) {
this . context . register ( JmxAutoConfiguration . class ,
IntegrationAutoConfiguration . class ) ;
this . context . refresh ( ) ;
assertNotNull ( this . context . getBean ( HeaderChannelRegistry . class ) ) ;
this . context . close ( ) ;
public void disableIntegration ( ) {
load ( "spring.jmx.enabled=false" ) ;
assertEquals ( 0 , this . context . getBeansOfType ( MBeanServer . class ) . size ( ) ) ;
}
@Test
public void customizeDomain ( ) {
load ( "spring.jmx.default-domain=org.foo" ) ;
MBeanServer mBeanServer = this . context . getBean ( MBeanServer . class ) ;
assertDomains ( mBeanServer , true , "org.foo" ) ;
assertDomains ( mBeanServer , false , "org.springframework.integration" ,
"org.springframework.integration.monitor" ) ;
}
@Test
public void parentContext ( ) {
this . context . register ( IntegrationAutoConfiguration . class ) ;
this . context = new AnnotationConfigApplicationContext ( ) ;
this . context . register ( JmxAutoConfiguration . class , IntegrationAutoConfiguration . class ) ;
this . context . refresh ( ) ;
AnnotationConfigApplicationContext parent = this . context ;
this . context = new AnnotationConfigApplicationContext ( ) ;
this . context . setParent ( parent ) ;
this . context . register ( IntegrationAutoConfiguration . class ) ;
this . context . register ( JmxAutoConfiguration. class , IntegrationAutoConfiguration. class ) ;
this . context . refresh ( ) ;
assertNotNull ( this . context . getBean ( HeaderChannelRegistry . class ) ) ;
( ( ConfigurableApplicationContext ) this . context . getParent ( ) ) . close ( ) ;
this . context . close ( ) ;
}
private static void assertDomains ( MBeanServer mBeanServer , boolean expected , String . . . domains ) {
List < String > actual = Arrays . asList ( mBeanServer . getDomains ( ) ) ;
for ( String domain : domains ) {
assertEquals ( expected , actual . contains ( domain ) ) ;
}
}
private void load ( String . . . environment ) {
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext ( ) ;
TestPropertySourceUtils . addInlinedPropertiesToEnvironment ( ctx , environment ) ;
ctx . register ( JmxAutoConfiguration . class , IntegrationAutoConfiguration . class ) ;
ctx . refresh ( ) ;
this . context = ctx ;
}
}