You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ju...@apache.org on 2017/05/11 20:05:21 UTC
svn commit: r1794887 - in /sling/trunk/bundles/extensions/healthcheck:
api/src/main/java/org/apache/sling/hc/api/execution/
api/src/main/java/org/apache/sling/hc/util/
api/src/test/java/org/apache/sling/hc/util/
core/src/main/java/org/apache/sling/hc/c...
Author: justin
Date: Thu May 11 20:05:21 2017
New Revision: 1794887
URL: http://svn.apache.org/viewvc?rev=1794887&view=rev
Log:
SLING-6804 - allow selecting health checks by name
Added:
sling/trunk/bundles/extensions/healthcheck/api/src/main/java/org/apache/sling/hc/api/execution/HealthCheckSelector.java
sling/trunk/bundles/extensions/healthcheck/api/src/test/java/org/apache/sling/hc/util/HealthCheckFilterTest.java
Modified:
sling/trunk/bundles/extensions/healthcheck/api/src/main/java/org/apache/sling/hc/api/execution/HealthCheckExecutor.java
sling/trunk/bundles/extensions/healthcheck/api/src/main/java/org/apache/sling/hc/api/execution/package-info.java
sling/trunk/bundles/extensions/healthcheck/api/src/main/java/org/apache/sling/hc/util/FormattingResultLog.java
sling/trunk/bundles/extensions/healthcheck/api/src/main/java/org/apache/sling/hc/util/HealthCheckFilter.java
sling/trunk/bundles/extensions/healthcheck/api/src/main/java/org/apache/sling/hc/util/HealthCheckMetadata.java
sling/trunk/bundles/extensions/healthcheck/api/src/main/java/org/apache/sling/hc/util/package-info.java
sling/trunk/bundles/extensions/healthcheck/core/src/main/java/org/apache/sling/hc/core/impl/CompositeHealthCheck.java
sling/trunk/bundles/extensions/healthcheck/core/src/main/java/org/apache/sling/hc/core/impl/executor/AsyncHealthCheckExecutor.java
sling/trunk/bundles/extensions/healthcheck/core/src/main/java/org/apache/sling/hc/core/impl/executor/HealthCheckExecutorImpl.java
sling/trunk/bundles/extensions/healthcheck/core/src/main/java/org/apache/sling/hc/core/impl/servlet/HealthCheckExecutorServlet.java
sling/trunk/bundles/extensions/healthcheck/core/src/test/java/org/apache/sling/hc/core/impl/CompositeHealthCheckTest.java
sling/trunk/bundles/extensions/healthcheck/core/src/test/java/org/apache/sling/hc/core/impl/servlet/HealthCheckExecutorServletTest.java
sling/trunk/bundles/extensions/healthcheck/core/src/test/java/org/apache/sling/hc/core/it/AsyncHealthCheckIT.java
sling/trunk/bundles/extensions/healthcheck/core/src/test/java/org/apache/sling/hc/core/it/ExtendedHealthCheckExecutorIT.java
sling/trunk/bundles/extensions/healthcheck/core/src/test/java/org/apache/sling/hc/core/it/HealthCheckFilterIT.java
sling/trunk/bundles/extensions/healthcheck/core/src/test/java/org/apache/sling/hc/core/it/JmxAdjustableStatusForTestingIT.java
sling/trunk/bundles/extensions/healthcheck/core/src/test/java/org/apache/sling/hc/core/it/U.java
sling/trunk/bundles/extensions/healthcheck/core/src/test/java/org/apache/sling/hc/jmx/impl/HealthCheckMBeanTest.java
sling/trunk/bundles/extensions/healthcheck/it/src/test/java/org/apache/sling/hc/it/core/SampleHealthChecksTest.java
sling/trunk/bundles/extensions/healthcheck/it/src/test/java/org/apache/sling/hc/it/core/U.java
Modified: sling/trunk/bundles/extensions/healthcheck/api/src/main/java/org/apache/sling/hc/api/execution/HealthCheckExecutor.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/healthcheck/api/src/main/java/org/apache/sling/hc/api/execution/HealthCheckExecutor.java?rev=1794887&r1=1794886&r2=1794887&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/healthcheck/api/src/main/java/org/apache/sling/hc/api/execution/HealthCheckExecutor.java (original)
+++ sling/trunk/bundles/extensions/healthcheck/api/src/main/java/org/apache/sling/hc/api/execution/HealthCheckExecutor.java Thu May 11 20:05:21 2017
@@ -32,11 +32,33 @@ import org.osgi.annotation.versioning.Pr
public interface HealthCheckExecutor {
/**
+ * Executes all health checks matching the supplied filter options.
+ * If no options are supplied, all health checks are executed.
+ *
+ * @param selector filter selector
+ * @return List of results. The list might be empty.
+ */
+ List<HealthCheckExecutionResult> execute(HealthCheckSelector selector);
+
+ /**
+ * Executes all health checks with the supplied filter options.
+ * If no options are supplied, all health checks are executed.
+ *
+ * @param selector filter selector
+ * @param options options for controlling execution behavior
+ *
+ * @return List of results. The list might be empty.
+ */
+ List<HealthCheckExecutionResult> execute(HealthCheckSelector selector, HealthCheckExecutionOptions options);
+
+ /**
* Executes all health checks with the supplied list of tags.
* If no tags are supplied, all health checks are executed.
*
* @return List of results. The list might be empty.
+ * @deprecated use execute(HealthCheckFilter.Options)
*/
+ @Deprecated
List<HealthCheckExecutionResult> execute(String... tags);
/**
@@ -47,7 +69,9 @@ public interface HealthCheckExecutor {
* @param tags tags to be executed
*
* @return List of results. The list might be empty.
+ * @deprecated use execute(HealthCheckFilter.Options, HealthCheckExecutionOptions)
*/
+ @Deprecated
List<HealthCheckExecutionResult> execute(HealthCheckExecutionOptions options, String... tags);
}
\ No newline at end of file
Added: sling/trunk/bundles/extensions/healthcheck/api/src/main/java/org/apache/sling/hc/api/execution/HealthCheckSelector.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/healthcheck/api/src/main/java/org/apache/sling/hc/api/execution/HealthCheckSelector.java?rev=1794887&view=auto
==============================================================================
--- sling/trunk/bundles/extensions/healthcheck/api/src/main/java/org/apache/sling/hc/api/execution/HealthCheckSelector.java (added)
+++ sling/trunk/bundles/extensions/healthcheck/api/src/main/java/org/apache/sling/hc/api/execution/HealthCheckSelector.java Thu May 11 20:05:21 2017
@@ -0,0 +1,105 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sling.hc.api.execution;
+
+import org.apache.sling.hc.api.HealthCheck;
+import org.apache.sling.hc.util.HealthCheckFilter;
+import org.osgi.annotation.versioning.ProviderType;
+
+import java.util.Arrays;
+
+/**
+ * Parameter class to pass a set of tags and names to the filter.
+ */
+@ProviderType
+public final class HealthCheckSelector {
+
+ private String[] tags;
+ private String[] names;
+
+ public String[] tags() {
+ return tags;
+ }
+
+ public String[] names() {
+ return names;
+ }
+
+ private HealthCheckSelector() {}
+
+ /**
+ * Copy the specified names into the current tags array.
+ * @param tags the new tags. Specify null to clear the current tag array
+ * @return this
+ */
+ public HealthCheckSelector withTags(String... tags) {
+ if (this.tags == null) {
+ this.tags = tags;
+ } else if (tags != null) {
+ String[] copy = Arrays.copyOf(this.tags, this.tags.length + tags.length);
+ System.arraycopy(tags, 0, copy, this.tags.length, tags.length);
+ this.tags = copy;
+ } else {
+ this.tags = null;
+ }
+ return this;
+ }
+
+
+ /**
+ * Copy the specified names into the current names array.
+ * @param names the new names. Specify null to clear the current name array
+ * @return this
+ */
+ public HealthCheckSelector withNames(String... names) {
+ if (this.names == null) {
+ this.names = names;
+ } else if (names != null) {
+ String[] copy = Arrays.copyOf(this.names, this.names.length + names.length);
+ System.arraycopy(names, 0, copy, this.names.length, names.length);
+ this.names = copy;
+ } else {
+ this.names = null;
+ }
+ return this;
+ }
+
+
+ public static HealthCheckSelector empty() {
+ return new HealthCheckSelector();
+ }
+
+ public static HealthCheckSelector tags(String... tags) {
+ HealthCheckSelector selector = new HealthCheckSelector();
+ selector.tags = tags;
+ return selector;
+ }
+
+ public static HealthCheckSelector names(String... names) {
+ HealthCheckSelector selector = new HealthCheckSelector();
+ selector.names = names;
+ return selector;
+ }
+
+ @Override
+ public String toString() {
+ return "HealthCheckSelector{" +
+ "tags=" + tags == null ? "*" : Arrays.toString(tags) +
+ ", names=" + names == null ? "*" : Arrays.toString(names) +
+ '}';
+ }
+}
Modified: sling/trunk/bundles/extensions/healthcheck/api/src/main/java/org/apache/sling/hc/api/execution/package-info.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/healthcheck/api/src/main/java/org/apache/sling/hc/api/execution/package-info.java?rev=1794887&r1=1794886&r2=1794887&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/healthcheck/api/src/main/java/org/apache/sling/hc/api/execution/package-info.java (original)
+++ sling/trunk/bundles/extensions/healthcheck/api/src/main/java/org/apache/sling/hc/api/execution/package-info.java Thu May 11 20:05:21 2017
@@ -17,7 +17,7 @@
* under the License.
*/
-@Version("1.1.0")
+@Version("1.2.0")
package org.apache.sling.hc.api.execution;
import org.osgi.annotation.versioning.Version;
Modified: sling/trunk/bundles/extensions/healthcheck/api/src/main/java/org/apache/sling/hc/util/FormattingResultLog.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/healthcheck/api/src/main/java/org/apache/sling/hc/util/FormattingResultLog.java?rev=1794887&r1=1794886&r2=1794887&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/healthcheck/api/src/main/java/org/apache/sling/hc/util/FormattingResultLog.java (original)
+++ sling/trunk/bundles/extensions/healthcheck/api/src/main/java/org/apache/sling/hc/util/FormattingResultLog.java Thu May 11 20:05:21 2017
@@ -22,9 +22,11 @@ import java.util.Locale;
import org.apache.sling.hc.api.Result;
import org.apache.sling.hc.api.ResultLog;
+import org.osgi.annotation.versioning.ProviderType;
import org.slf4j.helpers.MessageFormatter;
/** Utility that provides a logging-like facade on a ResultLog */
+@ProviderType
public class FormattingResultLog extends ResultLog {
private ResultLog.Entry createEntry(Result.Status status, String format, Object ... args) {
Modified: sling/trunk/bundles/extensions/healthcheck/api/src/main/java/org/apache/sling/hc/util/HealthCheckFilter.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/healthcheck/api/src/main/java/org/apache/sling/hc/util/HealthCheckFilter.java?rev=1794887&r1=1794886&r2=1794887&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/healthcheck/api/src/main/java/org/apache/sling/hc/util/HealthCheckFilter.java (original)
+++ sling/trunk/bundles/extensions/healthcheck/api/src/main/java/org/apache/sling/hc/util/HealthCheckFilter.java Thu May 11 20:05:21 2017
@@ -25,12 +25,17 @@ import java.util.List;
import java.util.Set;
import org.apache.sling.hc.api.HealthCheck;
+import org.apache.sling.hc.api.execution.HealthCheckSelector;
+import org.osgi.annotation.versioning.ProviderType;
import org.osgi.framework.BundleContext;
import org.osgi.framework.InvalidSyntaxException;
import org.osgi.framework.ServiceReference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import static org.apache.sling.hc.api.execution.HealthCheckSelector.tags;
+import static org.apache.sling.hc.api.execution.HealthCheckSelector.empty;
+
/**
* Select from available {@link HealthCheck} services.
* Once this filter object and the returned health check services are no longer
@@ -40,6 +45,7 @@ import org.slf4j.LoggerFactory;
* This class is not thread safe and instances shouldn't be used concurrently
* from different threads.
*/
+@ProviderType
public class HealthCheckFilter {
private final Logger log = LoggerFactory.getLogger(getClass());
@@ -57,13 +63,8 @@ public class HealthCheckFilter {
bundleContext = bc;
}
- /**
- * Get all health check services with one of the supplied tags.
- * @return A list of services - might be the empty list if none matches
- */
- @SuppressWarnings("unchecked")
- public List<HealthCheck> getTaggedHealthChecks(final String... tags) {
- final ServiceReference [] refs = this.getTaggedHealthCheckServiceReferences(tags);
+ public List<HealthCheck> getHealthChecks(final HealthCheckSelector selector) {
+ final ServiceReference [] refs = this.getHealthCheckServiceReferences(selector);
final List<HealthCheck> result = new ArrayList<HealthCheck>();
if ( refs != null ) {
@@ -83,52 +84,14 @@ public class HealthCheckFilter {
return result;
}
- /**
- * Get all service references for health check services with one of the supplied tags. Uses logical "and" to combine tags.
- * @return An array of service references - might be an empty error if none matches
- */
- public ServiceReference[] getTaggedHealthCheckServiceReferences(final String... tags) {
- return getTaggedHealthCheckServiceReferences(false, tags);
+ public ServiceReference[] getHealthCheckServiceReferences(final HealthCheckSelector selector) {
+ return getHealthCheckServiceReferences(selector, false);
}
- /**
- * Get all service references for health check services with one of the supplied tags.
- *
- * @param combineWithOr If true will return all health checks that have at least one of the tags set.
- * If false will return only health checks that have all given tags assigned.
- * @param tags the tags to look for
- * @return An array of service references - might be an empty error if none matches
- */
- public ServiceReference[] getTaggedHealthCheckServiceReferences(boolean combineWithOr, final String... tags) {
- // Build service filter
- final StringBuilder filterBuilder = new StringBuilder();
- filterBuilder.append("(&(objectClass=").append(HealthCheck.class.getName()).append(")");
- final int prefixLen = OMIT_PREFIX.length();
- final StringBuilder filterBuilderForOrOperator = new StringBuilder(); // or filters
- for(String tag : tags) {
- tag = tag.trim();
- if(tag.length() == 0) {
- continue;
- }
- if(tag.startsWith(OMIT_PREFIX)) {
- // ommit tags always have to be added as and-clause
- filterBuilder.append("(!(").append(HealthCheck.TAGS).append("=").append(tag.substring(prefixLen)).append("))");
- } else {
- // add regular tags in the list either to outer and-clause or inner or-clause
- if (combineWithOr) {
- filterBuilderForOrOperator.append("(").append(HealthCheck.TAGS).append("=").append(tag).append(")");
- } else {
- filterBuilder.append("(").append(HealthCheck.TAGS).append("=").append(tag).append(")");
- }
- }
- }
- // add "or" clause if we have accumulated any
- if (filterBuilderForOrOperator.length() > 0) {
- filterBuilder.append("(|").append(filterBuilderForOrOperator).append(")");
- }
- filterBuilder.append(")");
+ public ServiceReference[] getHealthCheckServiceReferences(final HealthCheckSelector selector, boolean combineTagsWithOr) {
+ final CharSequence filterBuilder = selector != null ? getServiceFilter(selector, combineTagsWithOr) : getServiceFilter(empty(), combineTagsWithOr);
- log.debug("OSGi service filter in getTaggedHealthCheckServiceReferences(): {}", filterBuilder);
+ log.debug("OSGi service filter in getHealthCheckServiceReferences(): {}", filterBuilder);
try {
final String filterString = filterBuilder.length() == 0 ? null : filterBuilder.toString();
@@ -149,6 +112,42 @@ public class HealthCheckFilter {
}
/**
+ * Get all health check services with one of the supplied tags.
+ * @return A list of services - might be the empty list if none matches
+ * @deprecated use getHealthChecks() instead
+ */
+ @Deprecated
+ public List<HealthCheck> getTaggedHealthChecks(final String... tags) {
+ final HealthCheckSelector selector = tags(tags);
+ return getHealthChecks(selector);
+ }
+
+ /**
+ * Get all service references for health check services with one of the supplied tags. Uses logical "and" to combine tags.
+ * @return An array of service references - might be an empty error if none matches
+ * @deprecated use getHealthCheckServiceReferences() instead
+ */
+ @Deprecated
+ public ServiceReference[] getTaggedHealthCheckServiceReferences(final String... tags) {
+ return getHealthCheckServiceReferences(tags(tags), false);
+ }
+
+ /**
+ * Get all service references for health check services with one of the supplied tags.
+ *
+ * @param combineWithOr If true will return all health checks that have at least one of the tags set.
+ * If false will return only health checks that have all given tags assigned.
+ * @param tags the tags to look for
+ * @return An array of service references - might be an empty error if none matches
+ * @deprecated use getHealthCheckServiceReferences() instead
+ */
+ @Deprecated
+ public ServiceReference[] getTaggedHealthCheckServiceReferences(boolean combineWithOr, final String... tags) {
+ final HealthCheckSelector selector = tags(tags);
+ return getHealthCheckServiceReferences(selector, combineWithOr);
+ }
+
+ /**
* Dispose all used service references
*/
public void dispose() {
@@ -157,4 +156,66 @@ public class HealthCheckFilter {
}
this.usedReferences.clear();
}
+
+ CharSequence getServiceFilter(HealthCheckSelector selector, boolean combineTagsWithOr) {
+ // Build service filter
+ final StringBuilder filterBuilder = new StringBuilder();
+ filterBuilder.append("(&(objectClass=").append(HealthCheck.class.getName()).append(")");
+ final int prefixLen = HealthCheckFilter.OMIT_PREFIX.length();
+ final StringBuilder filterBuilderForOrOperator = new StringBuilder(); // or filters
+ final StringBuilder tagsBuilder = new StringBuilder();
+ int tagsAndClauses = 0;
+ if (selector.tags() != null) {
+ for (String tag : selector.tags()) {
+ tag = tag.trim();
+ if (tag.length() == 0) {
+ continue;
+ }
+ if (tag.startsWith(HealthCheckFilter.OMIT_PREFIX)) {
+ // ommit tags always have to be added as and-clause
+ filterBuilder.append("(!(").append(HealthCheck.TAGS).append("=").append(tag.substring(prefixLen)).append("))");
+ } else {
+ // add regular tags in the list either to outer and-clause or inner or-clause
+ if (combineTagsWithOr) {
+ filterBuilderForOrOperator.append("(").append(HealthCheck.TAGS).append("=").append(tag).append(")");
+ } else {
+ tagsBuilder.append("(").append(HealthCheck.TAGS).append("=").append(tag).append(")");
+ tagsAndClauses++;
+ }
+ }
+ }
+ }
+ boolean addedNameToOrBuilder = false;
+ if (selector.names() != null) {
+ for (String name : selector.names()) {
+ name = name.trim();
+ if (name.length() == 0) {
+ continue;
+ }
+ if (name.startsWith(HealthCheckFilter.OMIT_PREFIX)) {
+ // ommit tags always have to be added as and-clause
+ filterBuilder.append("(!(").append(HealthCheck.NAME).append("=").append(name.substring(prefixLen)).append("))");
+ } else {
+ // names are always ORd
+ filterBuilderForOrOperator.append("(").append(HealthCheck.NAME).append("=").append(name).append(")");
+ addedNameToOrBuilder = true;
+ }
+ }
+ }
+ if (addedNameToOrBuilder) {
+ if (tagsAndClauses > 1) {
+ filterBuilderForOrOperator.append("(&").append(tagsBuilder).append(")");
+ } else {
+ filterBuilderForOrOperator.append(tagsBuilder);
+ }
+ } else {
+ filterBuilder.append(tagsBuilder);
+ }
+ // add "or" clause if we have accumulated any
+ if (filterBuilderForOrOperator.length() > 0) {
+ filterBuilder.append("(|").append(filterBuilderForOrOperator).append(")");
+ }
+ filterBuilder.append(")");
+ return filterBuilder;
+ }
}
Modified: sling/trunk/bundles/extensions/healthcheck/api/src/main/java/org/apache/sling/hc/util/HealthCheckMetadata.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/healthcheck/api/src/main/java/org/apache/sling/hc/util/HealthCheckMetadata.java?rev=1794887&r1=1794886&r2=1794887&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/healthcheck/api/src/main/java/org/apache/sling/hc/util/HealthCheckMetadata.java (original)
+++ sling/trunk/bundles/extensions/healthcheck/api/src/main/java/org/apache/sling/hc/util/HealthCheckMetadata.java Thu May 11 20:05:21 2017
@@ -22,6 +22,7 @@ import java.util.LinkedList;
import java.util.List;
import org.apache.sling.hc.api.HealthCheck;
+import org.osgi.annotation.versioning.ProviderType;
import org.osgi.framework.Constants;
import org.osgi.framework.ServiceReference;
@@ -29,6 +30,7 @@ import org.osgi.framework.ServiceReferen
* This class helps retrieving meta data information about a health check service.
* @since 1.1
*/
+@ProviderType
public class HealthCheckMetadata {
private final String name;
Modified: sling/trunk/bundles/extensions/healthcheck/api/src/main/java/org/apache/sling/hc/util/package-info.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/healthcheck/api/src/main/java/org/apache/sling/hc/util/package-info.java?rev=1794887&r1=1794886&r2=1794887&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/healthcheck/api/src/main/java/org/apache/sling/hc/util/package-info.java (original)
+++ sling/trunk/bundles/extensions/healthcheck/api/src/main/java/org/apache/sling/hc/util/package-info.java Thu May 11 20:05:21 2017
@@ -17,7 +17,7 @@
* under the License.
*/
-@Version("1.3.0")
+@Version("1.4.0")
package org.apache.sling.hc.util;
import org.osgi.annotation.versioning.Version;
Added: sling/trunk/bundles/extensions/healthcheck/api/src/test/java/org/apache/sling/hc/util/HealthCheckFilterTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/healthcheck/api/src/test/java/org/apache/sling/hc/util/HealthCheckFilterTest.java?rev=1794887&view=auto
==============================================================================
--- sling/trunk/bundles/extensions/healthcheck/api/src/test/java/org/apache/sling/hc/util/HealthCheckFilterTest.java (added)
+++ sling/trunk/bundles/extensions/healthcheck/api/src/test/java/org/apache/sling/hc/util/HealthCheckFilterTest.java Thu May 11 20:05:21 2017
@@ -0,0 +1,97 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sling.hc.util;
+
+import org.apache.sling.hc.api.execution.HealthCheckSelector;
+import org.junit.Test;
+import static org.junit.Assert.*;
+import static org.apache.sling.hc.api.execution.HealthCheckSelector.*;
+
+public class HealthCheckFilterTest {
+
+ private HealthCheckFilter filter = new HealthCheckFilter(null);
+
+ private static void assertStrEquals(String expected, CharSequence actual) {
+ assertEquals(expected, actual.toString());
+ }
+
+ @Test
+ public void testEmptyOptions() {
+ assertStrEquals("(&(objectClass=org.apache.sling.hc.api.HealthCheck))", filter.getServiceFilter(empty(), false));
+ }
+
+ @Test
+ public void testWithOneTag() {
+ HealthCheckSelector selector = tags("foo");
+ assertStrEquals("(&(objectClass=org.apache.sling.hc.api.HealthCheck)(hc.tags=foo))", filter.getServiceFilter(selector, false));
+ }
+
+ @Test
+ public void testWithTwoTags() {
+ HealthCheckSelector selector = tags("foo", "bar");
+ assertStrEquals("(&(objectClass=org.apache.sling.hc.api.HealthCheck)(hc.tags=foo)(hc.tags=bar))", filter.getServiceFilter(selector, false));
+ }
+
+ @Test
+ public void testWithTwoTagsOr() {
+ HealthCheckSelector selector = tags("foo", "bar");
+ assertStrEquals("(&(objectClass=org.apache.sling.hc.api.HealthCheck)(|(hc.tags=foo)(hc.tags=bar)))", filter.getServiceFilter(selector, true));
+ }
+
+ @Test
+ public void testWithTwoTagsExcludeOne() {
+ HealthCheckSelector selector = tags("foo", "bar").withTags("-baz");
+ assertStrEquals("(&(objectClass=org.apache.sling.hc.api.HealthCheck)(!(hc.tags=baz))(hc.tags=foo)(hc.tags=bar))", filter.getServiceFilter(selector, false));
+ }
+
+ @Test
+ public void testWithOneName() {
+ HealthCheckSelector selector = names("foo");
+ assertStrEquals("(&(objectClass=org.apache.sling.hc.api.HealthCheck)(|(hc.name=foo)))", filter.getServiceFilter(selector, false));
+ }
+
+ @Test
+ public void testWithTwoNames() {
+ HealthCheckSelector selector = names("foo").withNames("bar");
+ assertStrEquals("(&(objectClass=org.apache.sling.hc.api.HealthCheck)(|(hc.name=foo)(hc.name=bar)))", filter.getServiceFilter(selector, false));
+ }
+
+ @Test
+ public void testWithTwoNamesExcludingOne() {
+ HealthCheckSelector selector = names("foo", "bar", "-baz");
+ assertStrEquals("(&(objectClass=org.apache.sling.hc.api.HealthCheck)(!(hc.name=baz))(|(hc.name=foo)(hc.name=bar)))", filter.getServiceFilter(selector, false));
+ }
+
+ @Test
+ public void testWithTagAndName() {
+ HealthCheckSelector selector = empty().withTags("t1").withNames("foo");
+ assertStrEquals("(&(objectClass=org.apache.sling.hc.api.HealthCheck)(|(hc.name=foo)(hc.tags=t1)))", filter.getServiceFilter(selector, false));
+ }
+
+ @Test
+ public void testWithTwoOrTagsAndTwoNames() {
+ HealthCheckSelector selector = empty().withNames("foo", "bar").withTags("t1", "t2");
+ assertStrEquals("(&(objectClass=org.apache.sling.hc.api.HealthCheck)(|(hc.tags=t1)(hc.tags=t2)(hc.name=foo)(hc.name=bar)))", filter.getServiceFilter(selector, true));
+ }
+
+ @Test
+ public void testWithTwoAndTagsAndTwoNames() {
+ HealthCheckSelector selector = empty().withNames("foo", "bar").withTags("t1", "t2");
+ assertStrEquals("(&(objectClass=org.apache.sling.hc.api.HealthCheck)(|(hc.name=foo)(hc.name=bar)(&(hc.tags=t1)(hc.tags=t2))))", filter.getServiceFilter(selector, false));
+ }
+
+}
Modified: sling/trunk/bundles/extensions/healthcheck/core/src/main/java/org/apache/sling/hc/core/impl/CompositeHealthCheck.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/healthcheck/core/src/main/java/org/apache/sling/hc/core/impl/CompositeHealthCheck.java?rev=1794887&r1=1794886&r2=1794887&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/healthcheck/core/src/main/java/org/apache/sling/hc/core/impl/CompositeHealthCheck.java (original)
+++ sling/trunk/bundles/extensions/healthcheck/core/src/main/java/org/apache/sling/hc/core/impl/CompositeHealthCheck.java Thu May 11 20:05:21 2017
@@ -37,6 +37,7 @@ import org.apache.sling.hc.api.Result;
import org.apache.sling.hc.api.Result.Status;
import org.apache.sling.hc.api.execution.HealthCheckExecutionResult;
import org.apache.sling.hc.api.execution.HealthCheckExecutor;
+import org.apache.sling.hc.api.execution.HealthCheckSelector;
import org.apache.sling.hc.util.FormattingResultLog;
import org.apache.sling.hc.util.HealthCheckFilter;
import org.apache.sling.hc.util.HealthCheckMetadata;
@@ -118,7 +119,7 @@ public class CompositeHealthCheck implem
}
FormattingResultLog resultLog = new FormattingResultLog();
- List<HealthCheckExecutionResult> executionResults = healthCheckExecutor.execute(filterTags);
+ List<HealthCheckExecutionResult> executionResults = healthCheckExecutor.execute(HealthCheckSelector.tags(filterTags));
resultLog.debug("Executing {} HealthChecks selected by tags {}", executionResults.size(), Arrays.asList(filterTags));
result = new CompositeResult(resultLog, executionResults);
@@ -155,7 +156,7 @@ public class CompositeHealthCheck implem
}
// check each sub composite check
- ServiceReference[] hcRefsOfCompositeCheck = healthCheckFilter.getTaggedHealthCheckServiceReferences(tagsForIncludedChecksArr);
+ ServiceReference[] hcRefsOfCompositeCheck = healthCheckFilter.getHealthCheckServiceReferences(HealthCheckSelector.tags(tagsForIncludedChecksArr));
for (ServiceReference hcRefOfCompositeCheck : hcRefsOfCompositeCheck) {
if (CompositeHealthCheck.class.getName().equals(hcRefOfCompositeCheck.getProperty(ComponentConstants.COMPONENT_NAME))) {
log.debug("Checking sub composite HC {}, {}", hcRefOfCompositeCheck, hcRefOfCompositeCheck.getProperty(ComponentConstants.COMPONENT_NAME));
Modified: sling/trunk/bundles/extensions/healthcheck/core/src/main/java/org/apache/sling/hc/core/impl/executor/AsyncHealthCheckExecutor.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/healthcheck/core/src/main/java/org/apache/sling/hc/core/impl/executor/AsyncHealthCheckExecutor.java?rev=1794887&r1=1794886&r2=1794887&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/healthcheck/core/src/main/java/org/apache/sling/hc/core/impl/executor/AsyncHealthCheckExecutor.java (original)
+++ sling/trunk/bundles/extensions/healthcheck/core/src/main/java/org/apache/sling/hc/core/impl/executor/AsyncHealthCheckExecutor.java Thu May 11 20:05:21 2017
@@ -37,6 +37,7 @@ import org.apache.sling.commons.schedule
import org.apache.sling.hc.api.HealthCheck;
import org.apache.sling.hc.api.Result;
import org.apache.sling.hc.api.execution.HealthCheckExecutionResult;
+import org.apache.sling.hc.api.execution.HealthCheckSelector;
import org.apache.sling.hc.core.impl.executor.HealthCheckFuture.Callback;
import org.apache.sling.hc.util.HealthCheckFilter;
import org.apache.sling.hc.util.HealthCheckMetadata;
@@ -77,7 +78,7 @@ public class AsyncHealthCheckExecutor im
int count = 0;
HealthCheckFilter healthCheckFilter = new HealthCheckFilter(bundleContext);
- final ServiceReference[] healthCheckReferences = healthCheckFilter.getTaggedHealthCheckServiceReferences(new String[0]);
+ final ServiceReference[] healthCheckReferences = healthCheckFilter.getHealthCheckServiceReferences(HealthCheckSelector.empty());
for (ServiceReference serviceReference : healthCheckReferences) {
HealthCheckMetadata healthCheckMetadata = new HealthCheckMetadata(serviceReference);
if (isAsync(healthCheckMetadata)) {
Modified: sling/trunk/bundles/extensions/healthcheck/core/src/main/java/org/apache/sling/hc/core/impl/executor/HealthCheckExecutorImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/healthcheck/core/src/main/java/org/apache/sling/hc/core/impl/executor/HealthCheckExecutorImpl.java?rev=1794887&r1=1794886&r2=1794887&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/healthcheck/core/src/main/java/org/apache/sling/hc/core/impl/executor/HealthCheckExecutorImpl.java (original)
+++ sling/trunk/bundles/extensions/healthcheck/core/src/main/java/org/apache/sling/hc/core/impl/executor/HealthCheckExecutorImpl.java Thu May 11 20:05:21 2017
@@ -52,6 +52,7 @@ import org.apache.sling.hc.api.ResultLog
import org.apache.sling.hc.api.execution.HealthCheckExecutionOptions;
import org.apache.sling.hc.api.execution.HealthCheckExecutionResult;
import org.apache.sling.hc.api.execution.HealthCheckExecutor;
+import org.apache.sling.hc.api.execution.HealthCheckSelector;
import org.apache.sling.hc.util.FormattingResultLog;
import org.apache.sling.hc.util.HealthCheckFilter;
import org.apache.sling.hc.util.HealthCheckMetadata;
@@ -171,9 +172,29 @@ public class HealthCheckExecutorImpl imp
}
}
+ @Override
+ public List<HealthCheckExecutionResult> execute(HealthCheckSelector selector) {
+ return execute(selector, new HealthCheckExecutionOptions());
+ }
+
+ @Override
+ public List<HealthCheckExecutionResult> execute(HealthCheckSelector selector, HealthCheckExecutionOptions options) {
+ logger.debug("Starting executing checks for filter selector {} and execution options {}", selector, options);
+
+ final HealthCheckFilter filter = new HealthCheckFilter(this.bundleContext);
+ try {
+ final ServiceReference[] healthCheckReferences = filter.getHealthCheckServiceReferences(selector, options.isCombineTagsWithOr());
+
+ return this.execute(healthCheckReferences, options);
+ } finally {
+ filter.dispose();
+ }
+ }
+
/**
* @see org.apache.sling.hc.api.execution.HealthCheckExecutor#execute(String[])
*/
+ @SuppressWarnings("deprecation")
@Override
public List<HealthCheckExecutionResult> execute(final String... tags) {
return execute(/*default options*/new HealthCheckExecutionOptions(), tags);
@@ -182,18 +203,10 @@ public class HealthCheckExecutorImpl imp
/**
* @see org.apache.sling.hc.api.execution.HealthCheckExecutor#execute(HealthCheckExecutionOptions, String...)
*/
+ @SuppressWarnings("deprecation")
@Override
public List<HealthCheckExecutionResult> execute(HealthCheckExecutionOptions options, final String... tags) {
- logger.debug("Starting executing checks for tags {} and execution options {}", tags == null ? "*" : tags, options);
-
- final HealthCheckFilter filter = new HealthCheckFilter(this.bundleContext);
- try {
- final ServiceReference[] healthCheckReferences = filter.getTaggedHealthCheckServiceReferences(options.isCombineTagsWithOr(), tags);
-
- return this.execute(healthCheckReferences, options);
- } finally {
- filter.dispose();
- }
+ return execute(HealthCheckSelector.tags(tags), options);
}
/**
Modified: sling/trunk/bundles/extensions/healthcheck/core/src/main/java/org/apache/sling/hc/core/impl/servlet/HealthCheckExecutorServlet.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/healthcheck/core/src/main/java/org/apache/sling/hc/core/impl/servlet/HealthCheckExecutorServlet.java?rev=1794887&r1=1794886&r2=1794887&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/healthcheck/core/src/main/java/org/apache/sling/hc/core/impl/servlet/HealthCheckExecutorServlet.java (original)
+++ sling/trunk/bundles/extensions/healthcheck/core/src/main/java/org/apache/sling/hc/core/impl/servlet/HealthCheckExecutorServlet.java Thu May 11 20:05:21 2017
@@ -19,6 +19,8 @@ package org.apache.sling.hc.core.impl.se
import java.io.IOException;
import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Dictionary;
import java.util.HashMap;
import java.util.LinkedHashMap;
@@ -44,6 +46,7 @@ import org.apache.sling.hc.api.Result.St
import org.apache.sling.hc.api.execution.HealthCheckExecutionOptions;
import org.apache.sling.hc.api.execution.HealthCheckExecutionResult;
import org.apache.sling.hc.api.execution.HealthCheckExecutor;
+import org.apache.sling.hc.api.execution.HealthCheckSelector;
import org.osgi.service.component.ComponentContext;
import org.osgi.service.http.HttpService;
import org.slf4j.Logger;
@@ -73,6 +76,7 @@ public class HealthCheckExecutorServlet
private static final long serialVersionUID = 8013511523994541848L;
private static final Logger LOG = LoggerFactory.getLogger(HealthCheckExecutorServlet.class);
+ public static final String PARAM_SPLIT_REGEX = "[,;]+";
static class Param {
final String name;
@@ -84,7 +88,7 @@ public class HealthCheckExecutorServlet
}
static final Param PARAM_TAGS = new Param("tags",
- "Comma-separated list of health checks tags to select - can also be specified via path, e.g. /system/health/tag1,tag2.json");
+ "Comma-separated list of health checks tags to select - can also be specified via path, e.g. /system/health/tag1,tag2.json. Exclusions can be done by prepending '-' to the tag name");
static final Param PARAM_FORMAT = new Param("format", "Output format, html|json|jsonp|txt - an extension in the URL overrides this");
static final Param PARAM_HTTP_STATUS = new Param("httpStatus", "Specify HTTP result code, for example"
+ " CRITICAL:503 (status 503 if result >= CRITICAL)"
@@ -98,10 +102,12 @@ public class HealthCheckExecutorServlet
static final Param PARAM_INCLUDE_DEBUG = new Param("hcDebug", "Include the DEBUG output of the Health Checks");
+ static final Param PARAM_NAMES = new Param("names", "Comma-separated list of health check names to select. Exclusions can be done by prepending '-' to the health check name");
+
static final String JSONP_CALLBACK_DEFAULT = "processHealthCheckResults";
static final Param PARAM_JSONP_CALLBACK = new Param("callback", "name of the JSONP callback function to use, defaults to " + JSONP_CALLBACK_DEFAULT);
- static final Param [] PARAM_LIST = { PARAM_TAGS, PARAM_FORMAT, PARAM_HTTP_STATUS, PARAM_COMBINE_TAGS_WITH_OR,
+ static final Param [] PARAM_LIST = { PARAM_TAGS, PARAM_NAMES, PARAM_FORMAT, PARAM_HTTP_STATUS, PARAM_COMBINE_TAGS_WITH_OR,
PARAM_FORCE_INSTANT_EXECUTION, PARAM_OVERRIDE_GLOBAL_TIMEOUT, PARAM_INCLUDE_DEBUG, PARAM_JSONP_CALLBACK};
static final String FORMAT_HTML = "html";
@@ -200,27 +206,49 @@ public class HealthCheckExecutorServlet
}
protected void doGet(final HttpServletRequest request, final HttpServletResponse response, final String format) throws ServletException, IOException {
+ HealthCheckSelector selector = HealthCheckSelector.empty();
String pathInfo = request.getPathInfo();
- String tagsStr = StringUtils.removeStart(splitFormat(pathInfo)[0], "/");
- if (StringUtils.isBlank(tagsStr)) {
+ String pathTokensStr = StringUtils.removeStart(splitFormat(pathInfo)[0], "/");
+
+ List<String> tags = new ArrayList<String>();
+ List<String> names = new ArrayList<String>();
+
+ if (StringUtils.isNotBlank(pathTokensStr)) {
+ String[] pathTokens = pathTokensStr.split(PARAM_SPLIT_REGEX);
+ for (String pathToken : pathTokens) {
+ if (pathToken.indexOf(' ') >= 0) {
+ // token contains space. assume it is a name
+ names.add(pathToken);
+ } else {
+ tags.add(pathToken);
+ }
+ }
+ }
+ if (tags.size() == 0) {
+ // if not provided via path use parameter or default
+ tags = Arrays.asList(StringUtils.defaultIfEmpty(request.getParameter(PARAM_TAGS.name), "").split(PARAM_SPLIT_REGEX));
+ }
+ selector.withTags(tags.toArray(new String[0]));
+
+ if (names.size() == 0) {
// if not provided via path use parameter or default
- tagsStr = StringUtils.defaultIfEmpty(request.getParameter(PARAM_TAGS.name), "");
+ names = Arrays.asList(StringUtils.defaultIfEmpty(request.getParameter(PARAM_NAMES.name), "").split(PARAM_SPLIT_REGEX));
}
- final String[] tags = tagsStr.split("[,;]+");
+ selector.withNames(names.toArray(new String[0]));
final Boolean includeDebug = Boolean.valueOf(request.getParameter(PARAM_INCLUDE_DEBUG.name));
final Map<Result.Status, Integer> statusMapping = request.getParameter(PARAM_HTTP_STATUS.name) != null ? getStatusMapping(request
.getParameter(PARAM_HTTP_STATUS.name)) : null;
- HealthCheckExecutionOptions options = new HealthCheckExecutionOptions();
- options.setCombineTagsWithOr(Boolean.valueOf(StringUtils.defaultString(request.getParameter(PARAM_COMBINE_TAGS_WITH_OR.name), "true")));
- options.setForceInstantExecution(Boolean.valueOf(request.getParameter(PARAM_FORCE_INSTANT_EXECUTION.name)));
+ HealthCheckExecutionOptions executionOptions = new HealthCheckExecutionOptions();
+ executionOptions.setCombineTagsWithOr(Boolean.valueOf(StringUtils.defaultString(request.getParameter(PARAM_COMBINE_TAGS_WITH_OR.name), "true")));
+ executionOptions.setForceInstantExecution(Boolean.valueOf(request.getParameter(PARAM_FORCE_INSTANT_EXECUTION.name)));
String overrideGlobalTimeoutVal = request.getParameter(PARAM_OVERRIDE_GLOBAL_TIMEOUT.name);
if (StringUtils.isNumeric(overrideGlobalTimeoutVal)) {
- options.setOverrideGlobalTimeout(Integer.valueOf(overrideGlobalTimeoutVal));
+ executionOptions.setOverrideGlobalTimeout(Integer.valueOf(overrideGlobalTimeoutVal));
}
- List<HealthCheckExecutionResult> executionResults = this.healthCheckExecutor.execute(options, tags);
+ List<HealthCheckExecutionResult> executionResults = this.healthCheckExecutor.execute(selector, executionOptions);
Result.Status mostSevereStatus = Result.Status.DEBUG;
for (HealthCheckExecutionResult executionResult : executionResults) {
Modified: sling/trunk/bundles/extensions/healthcheck/core/src/test/java/org/apache/sling/hc/core/impl/CompositeHealthCheckTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/healthcheck/core/src/test/java/org/apache/sling/hc/core/impl/CompositeHealthCheckTest.java?rev=1794887&r1=1794886&r2=1794887&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/healthcheck/core/src/test/java/org/apache/sling/hc/core/impl/CompositeHealthCheckTest.java (original)
+++ sling/trunk/bundles/extensions/healthcheck/core/src/test/java/org/apache/sling/hc/core/impl/CompositeHealthCheckTest.java Thu May 11 20:05:21 2017
@@ -18,12 +18,15 @@
package org.apache.sling.hc.core.impl;
import static org.junit.Assert.assertEquals;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.argThat;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
@@ -32,9 +35,13 @@ import org.apache.sling.hc.api.HealthChe
import org.apache.sling.hc.api.Result;
import org.apache.sling.hc.api.execution.HealthCheckExecutionResult;
import org.apache.sling.hc.api.execution.HealthCheckExecutor;
+import org.apache.sling.hc.api.execution.HealthCheckSelector;
import org.apache.sling.hc.core.impl.executor.ExecutionResult;
import org.apache.sling.hc.util.HealthCheckFilter;
import org.apache.sling.hc.util.HealthCheckMetadata;
+import org.hamcrest.Description;
+import org.hamcrest.Matcher;
+import org.hamcrest.TypeSafeMatcher;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Matchers;
@@ -77,16 +84,30 @@ public class CompositeHealthCheckTest {
executionResults.add(createExecutionResult("Check 1", testTags, new Result(Result.Status.INFO, "Good")));
executionResults.add(createExecutionResult("Check 2", testTags, new Result(Result.Status.CRITICAL, "Bad")));
- when(healthCheckExecutor.execute(testTags)).thenReturn(executionResults);
+ when(healthCheckExecutor.execute(any(HealthCheckSelector.class))).thenReturn(executionResults);
Result result = compositeHealthCheck.execute();
- verify(healthCheckExecutor, times(1)).execute(testTags);
+ verify(healthCheckExecutor, times(1)).execute(argThat(selectorWithTags(testTags)));
assertEquals(Result.Status.CRITICAL, result.getStatus());
}
+ private Matcher<HealthCheckSelector> selectorWithTags(final String[] tags) {
+ return new TypeSafeMatcher<HealthCheckSelector>() {
+ @Override
+ protected boolean matchesSafely(HealthCheckSelector healthCheckSelector) {
+ return Arrays.equals(healthCheckSelector.tags(), tags) && healthCheckSelector.names() == null;
+ }
+
+ @Override
+ public void describeTo(Description description) {
+ description.appendText("a select with tags (" + Arrays.toString(tags) +") and no names.");
+ }
+ };
+ }
+
private HealthCheckExecutionResult createExecutionResult(String name, String[] testTags, Result result) {
HealthCheckExecutionResult healthCheckExecutionResult = new ExecutionResult(new HealthCheckMetadata(new DummyHcServiceReference(name, testTags,
new String[0])), result, 0L);
@@ -104,10 +125,11 @@ public class CompositeHealthCheckTest {
doReturn(hcRef).when(componentContext).getServiceReference();
compositeHealthCheck.setFilterTags(filterTags);
- compositeHealthCheck.setHealthCheckFilter(new HealthCheckFilter(null) { // not using @Spy because varargs matcher does not work with spies
+ compositeHealthCheck.setHealthCheckFilter(new HealthCheckFilter(null) {
@Override
- public ServiceReference[] getTaggedHealthCheckServiceReferences(String... tags) {
+ public ServiceReference[] getHealthCheckServiceReferences(HealthCheckSelector selector) {
+ String[] tags = selector.tags();
ServiceReference[] result = new ServiceReference[] {};
if (tags.length > 0) {
if (tags[0].equals(filterTags[0])) {
@@ -121,7 +143,7 @@ public class CompositeHealthCheckTest {
Result result = compositeHealthCheck.execute();
- verify(healthCheckExecutor, never()).execute(Matchers.any(String[].class));
+ verify(healthCheckExecutor, never()).execute(any(HealthCheckSelector.class));
assertEquals(Result.Status.HEALTH_CHECK_ERROR, result.getStatus());
}
@@ -141,7 +163,8 @@ public class CompositeHealthCheckTest {
compositeHealthCheck.setHealthCheckFilter(new HealthCheckFilter(null) {
@Override
- public ServiceReference[] getTaggedHealthCheckServiceReferences(String... tags) { // not using @Spy because varargs matcher does not work with spies
+ public ServiceReference[] getHealthCheckServiceReferences(HealthCheckSelector selector) {
+ String[] tags = selector.tags();
ServiceReference[] result = new ServiceReference[] {};
if (tags.length > 0) {
if (tags[0].equals(filterTags[0])) {
@@ -160,7 +183,7 @@ public class CompositeHealthCheckTest {
Result result = compositeHealthCheck.execute();
- verify(healthCheckExecutor, never()).execute(Matchers.any(String[].class));
+ verify(healthCheckExecutor, never()).execute(any(HealthCheckSelector.class));
assertEquals(Result.Status.HEALTH_CHECK_ERROR, result.getStatus());
}
Modified: sling/trunk/bundles/extensions/healthcheck/core/src/test/java/org/apache/sling/hc/core/impl/servlet/HealthCheckExecutorServletTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/healthcheck/core/src/test/java/org/apache/sling/hc/core/impl/servlet/HealthCheckExecutorServletTest.java?rev=1794887&r1=1794886&r2=1794887&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/healthcheck/core/src/test/java/org/apache/sling/hc/core/impl/servlet/HealthCheckExecutorServletTest.java (original)
+++ sling/trunk/bundles/extensions/healthcheck/core/src/test/java/org/apache/sling/hc/core/impl/servlet/HealthCheckExecutorServletTest.java Thu May 11 20:05:21 2017
@@ -24,6 +24,7 @@ import static org.mockito.Matchers.conta
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.any;
+import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyZeroInteractions;
import static org.mockito.MockitoAnnotations.initMocks;
@@ -31,6 +32,7 @@ import static org.mockito.MockitoAnnotat
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
import java.util.Map;
@@ -43,6 +45,7 @@ import org.apache.sling.hc.api.Result.St
import org.apache.sling.hc.api.execution.HealthCheckExecutionOptions;
import org.apache.sling.hc.api.execution.HealthCheckExecutionResult;
import org.apache.sling.hc.api.execution.HealthCheckExecutor;
+import org.apache.sling.hc.api.execution.HealthCheckSelector;
import org.apache.sling.hc.core.impl.executor.ExecutionResult;
import org.apache.sling.hc.util.HealthCheckMetadata;
import org.hamcrest.Description;
@@ -51,8 +54,6 @@ import org.junit.Test;
import org.mockito.ArgumentMatcher;
import org.mockito.InjectMocks;
import org.mockito.Mock;
-import org.mockito.Mockito;
-import org.mockito.MockitoAnnotations;
import org.osgi.framework.Constants;
import org.osgi.framework.ServiceReference;
@@ -99,11 +100,11 @@ public class HealthCheckExecutorServletT
@Test
public void testDoGetHtml() throws ServletException, IOException {
- String testTag = "testTag";
+ final String testTag = "testTag";
doReturn(testTag).when(request).getParameter(HealthCheckExecutorServlet.PARAM_TAGS.name);
doReturn("false").when(request).getParameter(HealthCheckExecutorServlet.PARAM_COMBINE_TAGS_WITH_OR.name);
- List<HealthCheckExecutionResult> executionResults = getExecutionResults(Result.Status.CRITICAL);
- doReturn(executionResults).when(healthCheckExecutor).execute(new HealthCheckExecutionOptions(), testTag);
+ final List<HealthCheckExecutionResult> executionResults = getExecutionResults(Result.Status.CRITICAL);
+ doReturn(executionResults).when(healthCheckExecutor).execute(selector(new String[] { testTag }, new String[0]), eq(new HealthCheckExecutionOptions()));
healthCheckExecutorServlet.doGet(request, response);
@@ -115,18 +116,40 @@ public class HealthCheckExecutorServletT
}
@Test
+ public void testDoGetNameAndTagInPath() throws ServletException, IOException {
+
+ final String testTag = "testTag";
+ final String testName = "test name";
+
+ doReturn(testTag + "," + testName).when(request).getPathInfo();
+ doReturn("false").when(request).getParameter(HealthCheckExecutorServlet.PARAM_COMBINE_TAGS_WITH_OR.name);
+ final List<HealthCheckExecutionResult> executionResults = getExecutionResults(Result.Status.CRITICAL);
+ doReturn(executionResults).when(healthCheckExecutor).execute(selector(new String[] { testTag }, new String[] { testName }), eq(new HealthCheckExecutionOptions()));
+
+ healthCheckExecutorServlet.doGet(request, response);
+
+ verify(request, never()).getParameter(HealthCheckExecutorServlet.PARAM_TAGS.name);
+ verify(request, never()).getParameter(HealthCheckExecutorServlet.PARAM_NAMES.name);
+ verifyZeroInteractions(jsonSerializer);
+ verifyZeroInteractions(txtSerializer);
+ verifyZeroInteractions(verboseTxtSerializer);
+ verify(htmlSerializer)
+ .serialize(resultEquals(new Result(Result.Status.CRITICAL, "Overall Status CRITICAL")), eq(executionResults), contains("Supported URL parameters"), eq(false));
+ }
+
+ @Test
public void testDoGetJson() throws ServletException, IOException {
- String testTag = "testTag";
+ final String testTag = "testTag";
doReturn("true").when(request).getParameter(HealthCheckExecutorServlet.PARAM_COMBINE_TAGS_WITH_OR.name);
int timeout = 5000;
doReturn(timeout + "").when(request).getParameter(HealthCheckExecutorServlet.PARAM_OVERRIDE_GLOBAL_TIMEOUT.name);
doReturn("/" + testTag + ".json").when(request).getPathInfo();
- List<HealthCheckExecutionResult> executionResults = getExecutionResults(Result.Status.WARN);
+ final List<HealthCheckExecutionResult> executionResults = getExecutionResults(Result.Status.WARN);
HealthCheckExecutionOptions options = new HealthCheckExecutionOptions();
options.setCombineTagsWithOr(true);
options.setOverrideGlobalTimeout(timeout);
- doReturn(executionResults).when(healthCheckExecutor).execute(options, testTag);
+ doReturn(executionResults).when(healthCheckExecutor).execute(selector(new String[] { testTag }, new String[0]), eq(options));
healthCheckExecutorServlet.doGet(request, response);
@@ -141,17 +164,18 @@ public class HealthCheckExecutorServletT
@Test
public void testDoGetTxt() throws ServletException, IOException {
- String testTag = "testTag";
+ final String testTag = "testTag";
doReturn(testTag).when(request).getParameter(HealthCheckExecutorServlet.PARAM_TAGS.name);
doReturn(HealthCheckExecutorServlet.FORMAT_TXT).when(request).getParameter(HealthCheckExecutorServlet.PARAM_FORMAT.name);
doReturn("true").when(request).getParameter(HealthCheckExecutorServlet.PARAM_COMBINE_TAGS_WITH_OR.name);
int timeout = 5000;
doReturn(timeout + "").when(request).getParameter(HealthCheckExecutorServlet.PARAM_OVERRIDE_GLOBAL_TIMEOUT.name);
- List<HealthCheckExecutionResult> executionResults = getExecutionResults(Result.Status.WARN);
+ final List<HealthCheckExecutionResult> executionResults = getExecutionResults(Result.Status.WARN);
HealthCheckExecutionOptions options = new HealthCheckExecutionOptions();
options.setCombineTagsWithOr(true);
options.setOverrideGlobalTimeout(timeout);
- doReturn(executionResults).when(healthCheckExecutor).execute(options, testTag);
+
+ doReturn(executionResults).when(healthCheckExecutor).execute(selector(new String[] { testTag }, new String[0]), eq(options));
healthCheckExecutorServlet.doGet(request, response);
@@ -170,7 +194,7 @@ public class HealthCheckExecutorServletT
doReturn(HealthCheckExecutorServlet.FORMAT_VERBOSE_TXT).when(request).getParameter(HealthCheckExecutorServlet.PARAM_FORMAT.name);
List<HealthCheckExecutionResult> executionResults = getExecutionResults(Result.Status.WARN);
- doReturn(executionResults).when(healthCheckExecutor).execute(any(HealthCheckExecutionOptions.class), eq(testTag));
+ doReturn(executionResults).when(healthCheckExecutor).execute(selector(new String[] { testTag }, new String[0]), any(HealthCheckExecutionOptions.class));
healthCheckExecutorServlet.doGet(request, response);
@@ -256,5 +280,20 @@ public class HealthCheckExecutorServletT
}
}
+ HealthCheckSelector selector(final String[] tags, final String[] names) {
+ return argThat(new ArgumentMatcher<HealthCheckSelector>() {
+ @Override
+ public boolean matches(Object actual) {
+ if (actual instanceof HealthCheckSelector) {
+ HealthCheckSelector actualSelector = (HealthCheckSelector) actual;
+ return Arrays.equals(actualSelector.tags(), tags.length == 0 ? new String[] { "" } : tags) &&
+ Arrays.equals(actualSelector.names(), names.length == 0 ? new String[] { "" } : names);
+ } else {
+ return false;
+ }
+ }
+ });
+ }
+
}
Modified: sling/trunk/bundles/extensions/healthcheck/core/src/test/java/org/apache/sling/hc/core/it/AsyncHealthCheckIT.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/healthcheck/core/src/test/java/org/apache/sling/hc/core/it/AsyncHealthCheckIT.java?rev=1794887&r1=1794886&r2=1794887&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/healthcheck/core/src/test/java/org/apache/sling/hc/core/it/AsyncHealthCheckIT.java (original)
+++ sling/trunk/bundles/extensions/healthcheck/core/src/test/java/org/apache/sling/hc/core/it/AsyncHealthCheckIT.java Thu May 11 20:05:21 2017
@@ -29,6 +29,7 @@ import javax.inject.Inject;
import org.apache.sling.hc.api.HealthCheck;
import org.apache.sling.hc.api.Result;
import org.apache.sling.hc.api.execution.HealthCheckExecutor;
+import org.apache.sling.hc.api.execution.HealthCheckSelector;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.ops4j.pax.exam.Configuration;
@@ -91,14 +92,14 @@ public class AsyncHealthCheckIT {
}
// Verify that we get the right log
- final String msg = executor.execute(id).get(0).getHealthCheckResult().iterator().next().getMessage();
+ final String msg = executor.execute(HealthCheckSelector.tags(id)).get(0).getHealthCheckResult().iterator().next().getMessage();
assertTrue("Expecting the right message: " + msg, msg.contains("counter is now"));
// And verify that calling executor lots of times doesn't increment as much
final int previous = counter.get();
final int n = 100;
for(int i=0; i < n; i++) {
- executor.execute(id);
+ executor.execute(HealthCheckSelector.tags(id));
}
assertTrue("Expecting counter to increment asynchronously", counter.get() < previous + n);
} finally {
Modified: sling/trunk/bundles/extensions/healthcheck/core/src/test/java/org/apache/sling/hc/core/it/ExtendedHealthCheckExecutorIT.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/healthcheck/core/src/test/java/org/apache/sling/hc/core/it/ExtendedHealthCheckExecutorIT.java?rev=1794887&r1=1794886&r2=1794887&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/healthcheck/core/src/test/java/org/apache/sling/hc/core/it/ExtendedHealthCheckExecutorIT.java (original)
+++ sling/trunk/bundles/extensions/healthcheck/core/src/test/java/org/apache/sling/hc/core/it/ExtendedHealthCheckExecutorIT.java Thu May 11 20:05:21 2017
@@ -33,6 +33,7 @@ import org.apache.sling.hc.api.HealthChe
import org.apache.sling.hc.api.Result;
import org.apache.sling.hc.api.execution.HealthCheckExecutionResult;
import org.apache.sling.hc.api.execution.HealthCheckExecutor;
+import org.apache.sling.hc.api.execution.HealthCheckSelector;
import org.apache.sling.hc.util.HealthCheckFilter;
import org.junit.After;
import org.junit.Before;
@@ -99,7 +100,7 @@ public class ExtendedHealthCheckExecutor
@Test
public void testSingleExecution() throws Exception {
final HealthCheckFilter filter = new HealthCheckFilter(bundleContext);
- final ServiceReference [] refs = filter.getTaggedHealthCheckServiceReferences(testTag);
+ final ServiceReference [] refs = filter.getHealthCheckServiceReferences(HealthCheckSelector.tags(testTag));
assertNotNull(refs);
assertEquals(1, refs.length);
Modified: sling/trunk/bundles/extensions/healthcheck/core/src/test/java/org/apache/sling/hc/core/it/HealthCheckFilterIT.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/healthcheck/core/src/test/java/org/apache/sling/hc/core/it/HealthCheckFilterIT.java?rev=1794887&r1=1794886&r2=1794887&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/healthcheck/core/src/test/java/org/apache/sling/hc/core/it/HealthCheckFilterIT.java (original)
+++ sling/trunk/bundles/extensions/healthcheck/core/src/test/java/org/apache/sling/hc/core/it/HealthCheckFilterIT.java Thu May 11 20:05:21 2017
@@ -32,6 +32,7 @@ import javax.inject.Inject;
import org.apache.sling.hc.api.HealthCheck;
import org.apache.sling.hc.api.Result;
+import org.apache.sling.hc.api.execution.HealthCheckSelector;
import org.apache.sling.hc.util.HealthCheckFilter;
import org.junit.After;
import org.junit.Before;
@@ -58,29 +59,50 @@ public class HealthCheckFilterIT {
private List<TestHealthCheck> testServices = new ArrayList<TestHealthCheck>();
private static int instanceCounter = 0;
- class TestHealthCheck implements HealthCheck {
+ class TestHealthCheckBuilder {
- private final int id;
- private final ServiceRegistration reg;
- final String[] tags;
+ String[] tags;
+ String name;
- TestHealthCheck(String... tags) {
- id = instanceCounter++;
+ TestHealthCheckBuilder withTags(String... tags) {
this.tags = tags;
+ return this;
+ }
+
+ TestHealthCheckBuilder withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ TestHealthCheck build() {
final Dictionary<String, Object> props = new Hashtable<String, Object>();
if (tags != null) {
props.put(HealthCheck.TAGS, tags);
}
- props.put(HealthCheck.TAGS, tags);
+ if (name != null) {
+ props.put(HealthCheck.NAME, name);
+ }
+
+ return new TestHealthCheck(props);
+
+ }
+ }
+
+ class TestHealthCheck implements HealthCheck {
+
+ private final int id;
+ private final ServiceRegistration reg;
+
+ TestHealthCheck(Dictionary<String, Object> props) {
+ id = instanceCounter++;
reg = bundleContext.registerService(HealthCheck.class.getName(),
this, props);
- log.info("Registered {} with {}={}", new Object[] { this,
- HealthCheck.TAGS, props.get(HealthCheck.TAGS) });
+ log.info("Registered {} with name {} and tags {}", new Object[] { this, props.get(HealthCheck.NAME), Arrays.toString((String[]) props.get(HealthCheck.TAGS)) });
}
@Override
public String toString() {
- return Arrays.asList(tags).toString();
+ return "TestHealthCheck#" + id;
}
@Override
@@ -104,6 +126,10 @@ public class HealthCheckFilterIT {
}
}
+ private TestHealthCheckBuilder builder() {
+ return new TestHealthCheckBuilder();
+ }
+
@Configuration
public Option[] config() {
return U.config();
@@ -111,11 +137,11 @@ public class HealthCheckFilterIT {
@Before
public void setup() {
- testServices.add(new TestHealthCheck("foo"));
- testServices.add(new TestHealthCheck("bar"));
- testServices.add(new TestHealthCheck("foo", "bar"));
- testServices.add(new TestHealthCheck("other", "thing"));
- testServices.add(new TestHealthCheck());
+ testServices.add(builder().withTags("foo").withName("test1").build());
+ testServices.add(builder().withTags("bar").withName("test2").build());
+ testServices.add(builder().withTags("foo", "bar").withName("test3").build());
+ testServices.add(builder().withTags("other", "thing").withName("test4").build());
+ testServices.add(builder().withName("test5").build());
filter = new HealthCheckFilter(bundleContext);
}
@@ -152,70 +178,94 @@ public class HealthCheckFilterIT {
@Test
public void testAllServices() {
- final List<HealthCheck> s = filter.getTaggedHealthChecks();
+ final List<HealthCheck> s = filter.getHealthChecks(null);
assertServices(s, true, true, true, true, true);
}
@Test
public void testEmptyTags() {
- final List<HealthCheck> s = filter.getTaggedHealthChecks("", "", "");
+ final List<HealthCheck> s = filter.getHealthChecks(HealthCheckSelector.tags("", "", ""));
assertServices(s, true, true, true, true, true);
}
@Test
public void testFooTag() {
- final List<HealthCheck> s = filter.getTaggedHealthChecks("foo");
+ final List<HealthCheck> s = filter.getHealthChecks(HealthCheckSelector.tags("foo"));
assertServices(s, true, false, true, false, false);
}
@Test
public void testBarTag() {
- final List<HealthCheck> s = filter.getTaggedHealthChecks("bar");
+ final List<HealthCheck> s = filter.getHealthChecks(HealthCheckSelector.tags("bar"));
assertServices(s, false, true, true, false, false);
}
@Test
public void testFooAndBar() {
- final List<HealthCheck> s = filter.getTaggedHealthChecks("foo", "bar");
+ final List<HealthCheck> s = filter.getHealthChecks(HealthCheckSelector.tags("foo", "bar"));
assertServices(s, false, false, true, false, false);
}
@Test
public void testFooMinusBar() {
final List<HealthCheck> s = filter
- .getTaggedHealthChecks("foo", "-bar");
+ .getHealthChecks(HealthCheckSelector.tags("foo", "-bar"));
assertServices(s, true, false, false, false, false);
}
@Test
public void testWhitespace() {
- final List<HealthCheck> s = filter.getTaggedHealthChecks(
- "\t \n\r foo \t", "", " \t-bar\n", "");
+ final List<HealthCheck> s = filter.getHealthChecks(HealthCheckSelector.tags(
+ "\t \n\r foo \t", "", " \t-bar\n", ""));
assertServices(s, true, false, false, false, false);
}
@Test
public void testOther() {
- final List<HealthCheck> s = filter.getTaggedHealthChecks("other");
+ final List<HealthCheck> s = filter.getHealthChecks(HealthCheckSelector.tags("other"));
assertServices(s, false, false, false, true, false);
}
@Test
public void testMinusOther() {
- final List<HealthCheck> s = filter.getTaggedHealthChecks("-other");
+ final List<HealthCheck> s = filter.getHealthChecks(HealthCheckSelector.tags("-other"));
assertServices(s, true, true, true, false, true);
}
@Test
public void testMinusOtherFoo() {
- final List<HealthCheck> s = filter.getTaggedHealthChecks("-other",
- "-foo");
+ final List<HealthCheck> s = filter.getHealthChecks(HealthCheckSelector.tags("-other",
+ "-foo"));
assertServices(s, false, true, false, false, true);
}
@Test
public void testNoResults() {
- final List<HealthCheck> s = filter.getTaggedHealthChecks("NOT A TAG");
+ final List<HealthCheck> s = filter.getHealthChecks(HealthCheckSelector.tags("NOT A TAG"));
assertTrue("Expecting no services", s.isEmpty());
}
+
+ @Test
+ public void testSingleName() {
+ final List<HealthCheck> s = filter.getHealthChecks(HealthCheckSelector.names("test1"));
+ assertServices(s, true, false, false, false, false);
+ }
+
+ @Test
+ public void testMultipleNames() {
+ final List<HealthCheck> s = filter.getHealthChecks(HealthCheckSelector.names("test1", "test3"));
+ assertServices(s, true, false, true, false, false);
+ }
+
+ @Test
+ public void testExcludeName() {
+ final List<HealthCheck> s = filter.getHealthChecks(HealthCheckSelector.tags("foo").withNames("-test1"));
+ assertServices(s, false, false, true, false, false);
+ }
+
+ @Test
+ public void testNameOrTag() {
+ final List<HealthCheck> s = filter.getHealthChecks(HealthCheckSelector.tags("foo").withNames("test4"));
+ assertServices(s, true, false, true, true, false);
+ }
}
Modified: sling/trunk/bundles/extensions/healthcheck/core/src/test/java/org/apache/sling/hc/core/it/JmxAdjustableStatusForTestingIT.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/healthcheck/core/src/test/java/org/apache/sling/hc/core/it/JmxAdjustableStatusForTestingIT.java?rev=1794887&r1=1794886&r2=1794887&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/healthcheck/core/src/test/java/org/apache/sling/hc/core/it/JmxAdjustableStatusForTestingIT.java (original)
+++ sling/trunk/bundles/extensions/healthcheck/core/src/test/java/org/apache/sling/hc/core/it/JmxAdjustableStatusForTestingIT.java Thu May 11 20:05:21 2017
@@ -33,6 +33,7 @@ import org.apache.sling.hc.api.ResultLog
import org.apache.sling.hc.api.ResultLog.Entry;
import org.apache.sling.hc.api.execution.HealthCheckExecutionResult;
import org.apache.sling.hc.api.execution.HealthCheckExecutor;
+import org.apache.sling.hc.api.execution.HealthCheckSelector;
import org.apache.sling.hc.util.FormattingResultLog;
import org.junit.After;
import org.junit.Before;
@@ -66,7 +67,7 @@ public class JmxAdjustableStatusForTesti
}
private void assertResult(String tag, Result.Status expected) {
- final Result result = getOverallResult(executor.execute(tag));
+ final Result result = getOverallResult(executor.execute(HealthCheckSelector.tags(tag)));
assertEquals("Expected status " + expected + " for tag " + tag, expected, result.getStatus());
}
Modified: sling/trunk/bundles/extensions/healthcheck/core/src/test/java/org/apache/sling/hc/core/it/U.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/healthcheck/core/src/test/java/org/apache/sling/hc/core/it/U.java?rev=1794887&r1=1794886&r2=1794887&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/healthcheck/core/src/test/java/org/apache/sling/hc/core/it/U.java (original)
+++ sling/trunk/bundles/extensions/healthcheck/core/src/test/java/org/apache/sling/hc/core/it/U.java Thu May 11 20:05:21 2017
@@ -33,6 +33,7 @@ import java.util.List;
import org.apache.sling.hc.api.execution.HealthCheckExecutionOptions;
import org.apache.sling.hc.api.execution.HealthCheckExecutionResult;
import org.apache.sling.hc.api.execution.HealthCheckExecutor;
+import org.apache.sling.hc.api.execution.HealthCheckSelector;
import org.ops4j.pax.exam.CoreOptions;
import org.ops4j.pax.exam.Option;
@@ -52,7 +53,7 @@ public class U {
final long timeout = System.currentTimeMillis() + 10000L;
int count = 0;
while(System.currentTimeMillis() < timeout) {
- final List<HealthCheckExecutionResult> results = executor.execute(options, tags);
+ final List<HealthCheckExecutionResult> results = executor.execute(HealthCheckSelector.tags(tags), options);
count = results.size();
if(count== howMany) {
return;
Modified: sling/trunk/bundles/extensions/healthcheck/core/src/test/java/org/apache/sling/hc/jmx/impl/HealthCheckMBeanTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/healthcheck/core/src/test/java/org/apache/sling/hc/jmx/impl/HealthCheckMBeanTest.java?rev=1794887&r1=1794886&r2=1794887&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/healthcheck/core/src/test/java/org/apache/sling/hc/jmx/impl/HealthCheckMBeanTest.java (original)
+++ sling/trunk/bundles/extensions/healthcheck/core/src/test/java/org/apache/sling/hc/jmx/impl/HealthCheckMBeanTest.java Thu May 11 20:05:21 2017
@@ -32,6 +32,7 @@ import org.apache.sling.hc.api.Result;
import org.apache.sling.hc.api.ResultLog;
import org.apache.sling.hc.api.execution.HealthCheckExecutionOptions;
import org.apache.sling.hc.api.execution.HealthCheckExecutionResult;
+import org.apache.sling.hc.api.execution.HealthCheckSelector;
import org.apache.sling.hc.core.impl.executor.ExtendedHealthCheckExecutor;
import org.apache.sling.hc.util.HealthCheckMetadata;
import org.apache.sling.hc.util.SimpleConstraintChecker;
@@ -105,6 +106,7 @@ public class HealthCheckMBeanTest {
};
final HealthCheckMBean mbean = new HealthCheckMBean(ref, new ExtendedHealthCheckExecutor() {
+ @SuppressWarnings("deprecation")
@Override
public List<HealthCheckExecutionResult> execute(String... tags) {
return null;
@@ -147,10 +149,21 @@ public class HealthCheckMBeanTest {
};
}
+ @SuppressWarnings("deprecation")
@Override
public List<HealthCheckExecutionResult> execute(HealthCheckExecutionOptions options, String... tags) {
return null;
}
+
+ @Override
+ public List<HealthCheckExecutionResult> execute(HealthCheckSelector selector) {
+ return null;
+ }
+
+ @Override
+ public List<HealthCheckExecutionResult> execute(HealthCheckSelector selector, HealthCheckExecutionOptions options) {
+ return null;
+ }
});
final ObjectName name = new ObjectName(OBJECT_NAME);
jmxServer.registerMBean(mbean, name);
Modified: sling/trunk/bundles/extensions/healthcheck/it/src/test/java/org/apache/sling/hc/it/core/SampleHealthChecksTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/healthcheck/it/src/test/java/org/apache/sling/hc/it/core/SampleHealthChecksTest.java?rev=1794887&r1=1794886&r2=1794887&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/healthcheck/it/src/test/java/org/apache/sling/hc/it/core/SampleHealthChecksTest.java (original)
+++ sling/trunk/bundles/extensions/healthcheck/it/src/test/java/org/apache/sling/hc/it/core/SampleHealthChecksTest.java Thu May 11 20:05:21 2017
@@ -28,6 +28,7 @@ import javax.management.DynamicMBean;
import org.apache.sling.hc.api.execution.HealthCheckExecutionResult;
import org.apache.sling.hc.api.execution.HealthCheckExecutor;
+import org.apache.sling.hc.api.execution.HealthCheckSelector;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.ops4j.pax.exam.Configuration;
@@ -53,7 +54,7 @@ public class SampleHealthChecksTest {
@Test
public void testAnnotatedHC() {
- final List<HealthCheckExecutionResult> results = executor.execute("annotation","sample");
+ final List<HealthCheckExecutionResult> results = executor.execute(HealthCheckSelector.tags("annotation","sample"));
assertNotNull("Expecting non-null results");
assertEquals("Expecting a single result", 1, results.size());
final HealthCheckExecutionResult r = results.get(0);
Modified: sling/trunk/bundles/extensions/healthcheck/it/src/test/java/org/apache/sling/hc/it/core/U.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/extensions/healthcheck/it/src/test/java/org/apache/sling/hc/it/core/U.java?rev=1794887&r1=1794886&r2=1794887&view=diff
==============================================================================
--- sling/trunk/bundles/extensions/healthcheck/it/src/test/java/org/apache/sling/hc/it/core/U.java (original)
+++ sling/trunk/bundles/extensions/healthcheck/it/src/test/java/org/apache/sling/hc/it/core/U.java Thu May 11 20:05:21 2017
@@ -32,6 +32,7 @@ import java.util.List;
import org.apache.sling.hc.api.execution.HealthCheckExecutionOptions;
import org.apache.sling.hc.api.execution.HealthCheckExecutionResult;
import org.apache.sling.hc.api.execution.HealthCheckExecutor;
+import org.apache.sling.hc.api.execution.HealthCheckSelector;
import org.ops4j.pax.exam.Option;
/** Test utilities */
@@ -47,7 +48,7 @@ public class U {
final long timeout = System.currentTimeMillis() + 10000L;
int count = 0;
while(System.currentTimeMillis() < timeout) {
- final List<HealthCheckExecutionResult> results = executor.execute(options, tags);
+ final List<HealthCheckExecutionResult> results = executor.execute(HealthCheckSelector.tags(tags), options);
count = results.size();
if(count== howMany) {
return;