Commit Graph

77 Commits

Author SHA1 Message Date
Dave Syer
561cb3a50f TestUtils -> SpringBootTestUtils 2014-01-08 13:58:21 +00:00
Dave Syer
321ce3aad2 TestUtils -> SpringBootTestUtils 2014-01-08 10:46:42 +00:00
Dave Syer
633dea9d80 Add declarative ApplicationListener 2014-01-07 17:53:34 +00:00
Dave Syer
3dacf4be17 Migrate Logging and Liquibase initializers to be listeners 2014-01-07 17:52:45 +00:00
Phillip Webb
6b3e79e693 Polish 2014-01-02 14:56:51 -08:00
Phillip Webb
1bcd3de7b5 Polish 2014-01-02 12:10:37 -08:00
Dave Syer
aa2b020660 Refactor metrics to expose richer feature set
Main user-facing interface is still Counter/GaugeService but the
back end behind that has more options. The Default*Services write
metrics to a MetricWriter and there are some variants of that, and
also variants of MetricReader (basic read-only actions).

MetricRepository is now a combination of MetricReader, MetricWriter
and some more methods that make it a bit more repository like.

There is also a MultiMetricReader and a MultiMetricRepository for
the common case where metrics are stored in related (often open
ended) groups. Examples would be complex metrics like histograms
and "rich" metrics with averages and statistics attached (which
are both closed) and "field counters" which count the occurrences
of values of a particular named field or slot in an incoming message
(e.g. counting Twitter hastags, open ended).

In memory and redis implementations are provided for the repositories.
Generally speaking the in memory repository should be used as a
local buffer and then scheduled "exports" can be executed to copy
metric values accross to a remote repository for aggregation.
There is an Exporter interface to support this and a few implementations
dealing with different strategies for storing the results (singly or
grouped).

Codahale metrics are also supported through the MetricWriter interface.
Currently implemented through a naming convention (since Codahale has
a fixed object model this makes sense): metrics beginning with "histogram"
are Histograms, "timer" for Timers, "meter" for Meters etc.

Support for message driven metric consumption and production are provided
through a MetricWriterMessageHandler and a MessageChannelMetricWriter.

No support yet for pagination in the repositories, or for HATEOAS style
HTTP endpoints.
2013-12-30 10:32:42 +00:00
Christian Dupuis
384dfc91e3 Fix some tests to prevent JMX registration issues 2013-12-26 15:46:21 +01:00
Christian Dupuis
65d6757a10 Rework EndpointMBeanExporter to prevent name clashes and to provide more flexibility in naming of endpoint MBeans 2013-12-26 15:07:55 +01:00
Dave Syer
8e2a6eec2a Add database query defaults in SimpleHealthManager 2013-12-23 13:55:23 +00:00
Dave Syer
063403a043 Close connection properly in /health
Fixes gh-181
2013-12-23 13:42:45 +00:00
Dave Syer
fa507005cd Use ServletWrappingController for jolokia instead of Servlet
We get more control over the handling and in particular the registration
of the endpoint this way. It was practically impossible to disable the
AgentServlet bean when in a parent context of the management server
because of lifecyce issues - you don't know that the user wants a
separate management server until too late.

This approach also makes it possible to test with spring-test MVC
support.
2013-12-20 19:49:48 +00:00
Christian Dupuis
72ae5d5a97 Rename invoke JMX operation
Rename invoke JMX operation to getData for endpoints that provide actuator data. Special case for ShutdownEndpoint to provide a shutdown method.
2013-12-19 15:49:18 +01:00
Christian Dupuis
31f7807acf Change naming strategy for endpoint mbeans 2013-12-19 15:21:02 +01:00
Phillip Webb
43b820a7d3 Rename Endpoint path to ID 2013-12-18 21:00:37 -08:00
Dave Syer
451acb5679 Move JolokiaEndpoint so it is not an Endpoint 2013-12-18 20:05:34 -08:00
Dave Syer
7f1264bb65 Replace @FrameworkEndpoint with MvcEndpoint interface 2013-12-18 20:05:34 -08:00
Dave Syer
87e00cfae9 Extract MVC concerns completely from Endpoint implementations 2013-12-18 20:05:34 -08:00
Dave Syer
332f23a0ee Add parent properties to config props endpoint 2013-12-18 20:05:33 -08:00
Dave Syer
bbac4ea9fb @FrameworkEndpoint replaces EndpointHandlerAdapter 2013-12-18 20:05:33 -08:00
Christian Dupuis
5a978e2f31 Change strategy from ApplicationListener to SmartLifecycle to avoid multiple registration attempts for the same beans
When running with parent/child application contexts the previous implementation was trying to re-register the same beans with JMX which led to errors.
2013-12-18 22:42:06 +01:00
Christian Dupuis
32818515b7 Expose endpoints via JMX
Actuator endpoints are now being exposed over JMX.
2013-12-18 19:03:30 +01:00
Dave Syer
b72002142d Split MessageConverters auto config out into separate class 2013-12-16 16:13:39 +00:00
Dave Syer
1db28e5b92 Prevent cryptic exception if SecurityProperties not created
Previously if a user happened to provide an @EnableWebSecurity bean
the SecurityProperties would not be created, which is fine until you
add the Actuator (which needs them). Fixed by adding an explicit
SecurityProperties @Bean if not already present.
2013-12-12 15:05:58 +00:00
Dave Syer
023faf092f Fix broken test 2013-12-06 15:45:07 +00:00
Dave Syer
884fd0125a Add some handler adapter tests 2013-12-04 14:56:53 +00:00
Dave Syer
2104d9a1e2 Prevent failure of web app with parent context
ServerProperties formerly had an @OnMissingBeanCondition
that didn't restrict the hierarchy. It also asserts that
the current context (not including parents) contains such
a bean. This led to an inevitable failure when there was
an existing instance in the parent context.

Fixed by a) searching only the current context, b) not
adding a ServerProperties bean if the context is not a
web app.
2013-11-29 17:40:16 +00:00
Christian Dupuis
5661f8fc28 Test key/value sanitization 2013-11-29 15:55:06 +01:00
Christian Dupuis
078933c8fd Add actuator endpoint to expose ConfigurationProperties
This information should probably be also available from the console and log similar to AutoConfigurationReport.
2013-11-29 15:16:31 +01:00
Christian Dupuis
2c67e06b47 Move enablement of endpoints into AbstractEndpoint 2013-11-29 15:16:30 +01:00
Dave Syer
e74da3fa73 FIXME test additions 2013-11-28 15:01:00 +00:00
Dave Syer
3e6c1b435f Add @SpringApplicationConfiguration (for integration testing)
Example:

    @RunWith(SpringJUnit4ClassRunner.class)
    @SpringApplicationConfiguration(classes = SampleDataJpaApplication.class)
    public class CityRepositoryIntegrationTests {

    	@Autowired
    	CityRepository repository;

Fixes gh-66.
2013-11-28 14:35:36 +00:00
Dave Syer
3e5e058b02 Ensure /error view is available 2013-11-28 14:20:45 +00:00
Dave Syer
b74a9b2d06 Add tests to FIXME 2013-11-27 16:03:27 +00:00
Dave Syer
171c1366f9 Move shutdown enable flag to the endpoint 2013-11-26 18:01:08 +00:00
Dave Syer
94e2f90793 Ensure endpoints.jolokia.enabled=false switches off jolokia 2013-11-26 13:27:10 +00:00
Christian Dupuis
e69e190ae9 Close application context in test 2013-11-22 20:37:58 +01:00
Christian Dupuis
1b49605749 Make shell username and password configuration properties consistent with general security properties
Now simple authentication for the crsh shell can we configured using shell.auth.simple.user.name and shell.auth.simple.user.password. This is consistent with security.user.name and security.user.password.

fixes #113
2013-11-22 20:37:37 +01:00
Christian Dupuis
2d058570ca Add auto configure support for Jolokia a JMX-HTTP bridge 2013-11-22 18:07:14 +01:00
Christian Dupuis
b14c607d36 Add missing tests 2013-11-22 18:07:14 +01:00
Christian Dupuis
845aeecbad Properly close application context in tests 2013-11-22 18:07:14 +01:00
Dave Syer
bd26b28aa5 Extract actuator security into separate classes
So spring-security + a web app is secure by default
(you don't need the actuator).
2013-11-21 16:47:29 +00:00
Christian Dupuis
f3a225f35f Polish and rework default authentication method if a Spring Security AuthenticationManager is available
In case a Spring Security AuthenticationManager is found in the app context the auto configuration will change default shell authentication method to auth against Spring Security. In addition shell access will get protected by the specific role configured in SecurityProperties.Management.

Certainly this can be overridden by providing shell.auth and shell.auth.spring.roles.
2013-11-20 17:15:45 +01:00
Christian Dupuis
2e926601f2 Polish 2013-11-18 20:59:25 +01:00
Christian Dupuis
e009d3e47d Polish
Fixed inconsistency in method naming after last polish. Method and class name should use 'crsh' instead of 'crash' to be aligned with CRaSH code base.

Implemented facility to provide custom shell properties by adding beans of type CrshShellProperties to the ApplicationContext.
2013-11-18 17:20:45 +01:00
Dave Syer
2f7214002d Update Spring to catch SPR-11069 2013-11-17 07:59:16 +00:00
Phillip Webb
0f85f31960 Polish 2013-11-16 01:22:10 -08:00
Phillip Webb
883fd9162f Polish 2013-11-16 00:08:17 -08:00
Dave Syer
b39ab925cf Make the AutoConfigurationReportEndpoint path a bit shorter 2013-11-14 14:54:32 +00:00
Phillip Webb
dc3d670019 Strip trailing whitespace 2013-11-07 10:32:57 -08:00