@Test public void testSslConfigurationWithAlgorithm() { AmqpAppender appender = new AmqpAppender(); appender.setUseSsl(true); String sslAlgorithm = "TLSv2"; appender.setSslAlgorithm(sslAlgorithm); RabbitConnectionFactoryBean bean = mock(RabbitConnectionFactoryBean.class); appender.configureRabbitConnectionFactory(bean); verifyDefaultHostProperties(bean); verify(bean).setUseSSL(eq(true)); verify(bean).setSslAlgorithm(eq(sslAlgorithm)); }
/** * Create the {@link ConnectionFactory}. * * @return a {@link ConnectionFactory}. */ protected ConnectionFactory createRabbitConnectionFactory() { RabbitConnectionFactoryBean factoryBean = new RabbitConnectionFactoryBean(); configureRabbitConnectionFactory(factoryBean); try { factoryBean.afterPropertiesSet(); return factoryBean.getObject(); } catch (Exception e) { addError("Failed to create customized Rabbit ConnectionFactory.", e); return null; } }
@Override public void start() { this.events = createEventQueue(); ConnectionFactory rabbitConnectionFactory = createRabbitConnectionFactory(); if (rabbitConnectionFactory != null) { super.start(); this.routingKeyLayout.setPattern(this.routingKeyLayout.getPattern() .replaceAll("%property\\{applicationId\\}", this.applicationId)); this.routingKeyLayout.setContext(getContext()); this.routingKeyLayout.start(); this.locationLayout.setContext(getContext()); this.locationLayout.start(); this.connectionFactory = new CachingConnectionFactory(rabbitConnectionFactory); if (StringUtils.hasText(this.connectionName)) { this.connectionFactory.setConnectionNameStrategy(cf -> this.connectionName); } if (this.addresses != null) { this.connectionFactory.setAddresses(this.addresses); } ConnectionFactoryConfigurationUtils.updateClientConnectionProperties(this.connectionFactory, this.clientConnectionProperties); updateConnectionClientProperties(this.connectionFactory.getRabbitConnectionFactory().getClientProperties()); setUpExchangeDeclaration(); this.senderPool = Executors.newCachedThreadPool(); for (int i = 0; i < this.senderPoolSize; i++) { this.senderPool.submit(new EventSender()); } } }
@Test public void testSslConfigurationWithKeyAndTrustStore() { AmqpAppender appender = new AmqpAppender(); appender.setUseSsl(true); String keyStore = "file:/path/to/client/keycert.p12"; String keyStorePassphrase = "secret"; String keyStoreType = "foo"; String trustStore = "file:/path/to/client/truststore"; String trustStorePassphrase = "secret2"; String trustStoreType = "bar"; appender.setKeyStore(keyStore); appender.setKeyStorePassphrase(keyStorePassphrase); appender.setKeyStoreType(keyStoreType); appender.setTrustStore(trustStore); appender.setTrustStorePassphrase(trustStorePassphrase); appender.setTrustStoreType(trustStoreType); RabbitConnectionFactoryBean bean = mock(RabbitConnectionFactoryBean.class); appender.configureRabbitConnectionFactory(bean); verifyDefaultHostProperties(bean); verify(bean).setUseSSL(eq(true)); verify(bean, never()).setSslPropertiesLocation(any()); verify(bean).setKeyStore(keyStore); verify(bean).setKeyStorePassphrase(keyStorePassphrase); verify(bean).setKeyStoreType(keyStoreType); verify(bean).setTrustStore(trustStore); verify(bean).setTrustStorePassphrase(trustStorePassphrase); verify(bean).setTrustStoreType(trustStoreType); }
@Test public void testCustomHostInformation() throws URISyntaxException { AmqpAppender appender = new AmqpAppender(); String host = "rabbitmq.com"; int port = 5671; String username = "user"; String password = "password"; String virtualHost = "vhost"; URI uri = new URI("amqps://user:password@rabbitmq.com/vhost"); appender.setHost(host); appender.setPassword(password); appender.setPort(port); appender.setUsername(username); appender.setVirtualHost(virtualHost); appender.setUri(uri); RabbitConnectionFactoryBean bean = mock(RabbitConnectionFactoryBean.class); appender.configureRabbitConnectionFactory(bean); verify(bean).setHost(host); verify(bean).setPort(port); verify(bean).setUsername(username); verify(bean).setPassword(password); verify(bean).setVirtualHost(virtualHost); verify(bean).setUri(uri); }
@Test public void testSslConfigurationWithSslPropertiesResource() { AmqpAppender appender = new AmqpAppender(); appender.setUseSsl(true); String path = "ssl.properties"; appender.setSslPropertiesLocation("classpath:" + path); RabbitConnectionFactoryBean bean = mock(RabbitConnectionFactoryBean.class); appender.configureRabbitConnectionFactory(bean); verifyDefaultHostProperties(bean); verify(bean).setUseSSL(eq(true)); verify(bean).setSslPropertiesLocation(eq(new ClassPathResource(path))); verify(bean, never()).setKeyStore(anyString()); verify(bean, never()).setKeyStorePassphrase(anyString()); verify(bean, never()).setKeyStoreType(anyString()); verify(bean, never()).setTrustStore(anyString()); verify(bean, never()).setTrustStorePassphrase(anyString()); verify(bean, never()).setTrustStoreType(anyString()); }
@Test public void testDefaultSslConfiguration() { AmqpAppender appender = new AmqpAppender(); appender.setUseSsl(true); RabbitConnectionFactoryBean bean = mock(RabbitConnectionFactoryBean.class); appender.configureRabbitConnectionFactory(bean); verifyDefaultHostProperties(bean); verify(bean).setUseSSL(eq(true)); verify(bean, never()).setSslAlgorithm(anyString()); }
Message message = new Message(msgBody, amqpProps); message = postProcessMessageBeforeSend(message, event); rabbitTemplate.send(AmqpAppender.this.exchangeName, routingKey, message); addError("Could not send log message " + logEvent.getMessage() + " after " + AmqpAppender.this.maxSenderRetries + " retries", e);
@Test public void testDefaultConfiguration() { AmqpAppender appender = new AmqpAppender(); RabbitConnectionFactoryBean bean = mock(RabbitConnectionFactoryBean.class); appender.configureRabbitConnectionFactory(bean); verifyDefaultHostProperties(bean); verify(bean, never()).setUseSSL(anyBoolean()); }
@Override protected void append(ILoggingEvent event) { if (isIncludeCallerData()) { event.getCallerData(); } event.getThreadName(); this.events.add(new Event(event)); }
@Test public void testSslConfigurationWithKeyAndTrustStoreDefaultTypes() { AmqpAppender appender = new AmqpAppender(); appender.setUseSsl(true); RabbitConnectionFactoryBean bean = mock(RabbitConnectionFactoryBean.class); appender.configureRabbitConnectionFactory(bean); verifyDefaultHostProperties(bean); verify(bean).setUseSSL(eq(true)); verify(bean).setKeyStoreType("JKS"); verify(bean).setTrustStoreType("JKS"); }
Message message = new Message(msgBody, amqpProps); message = postProcessMessageBeforeSend(message, event); rabbitTemplate.send(AmqpAppender.this.exchangeName, routingKey, message); addError("Could not send log message " + logEvent.getMessage() + " after " + AmqpAppender.this.maxSenderRetries + " retries", e);
@Override protected void append(ILoggingEvent event) { if (isIncludeCallerData()) { event.getCallerData(); } event.getThreadName(); this.events.add(new Event(event)); }
@Override public void start() { this.events = createEventQueue(); ConnectionFactory rabbitConnectionFactory = createRabbitConnectionFactory(); if (rabbitConnectionFactory != null) { super.start(); this.routingKeyLayout.setPattern(this.routingKeyLayout.getPattern() .replaceAll("%property\\{applicationId\\}", this.applicationId)); this.routingKeyLayout.setContext(getContext()); this.routingKeyLayout.start(); this.locationLayout.setContext(getContext()); this.locationLayout.start(); this.connectionFactory = new CachingConnectionFactory(rabbitConnectionFactory); if (StringUtils.hasText(this.connectionName)) { this.connectionFactory.setConnectionNameStrategy(cf -> this.connectionName); } if (this.addresses != null) { this.connectionFactory.setAddresses(this.addresses); } ConnectionFactoryConfigurationUtils.updateClientConnectionProperties(this.connectionFactory, this.clientConnectionProperties); updateConnectionClientProperties(this.connectionFactory.getRabbitConnectionFactory().getClientProperties()); setUpExchangeDeclaration(); this.senderPool = Executors.newCachedThreadPool(); for (int i = 0; i < this.senderPoolSize; i++) { this.senderPool.submit(new EventSender()); } } }
/** * Create the {@link ConnectionFactory}. * * @return a {@link ConnectionFactory}. */ protected ConnectionFactory createRabbitConnectionFactory() { RabbitConnectionFactoryBean factoryBean = new RabbitConnectionFactoryBean(); configureRabbitConnectionFactory(factoryBean); try { factoryBean.afterPropertiesSet(); return factoryBean.getObject(); } catch (Exception e) { addError("Failed to create customized Rabbit ConnectionFactory.", e); return null; } }