Skip to content

Commit

Permalink
server: Fix backwards compatibility of fetchTree for requested_times
Browse files Browse the repository at this point in the history
The following patch updated the validation of query parameter after
introduction of requested_timerange instead of requested_times.
To be backwards compatible for clients that still use requested_times
the validation still allows requested_times to be used for now.

However, the new validation code has different behaviour that the
original implementation. This patch will align the validation to
the previous implementation.

https://git.eclipse.org/r/c/tracecompass.incubator/org.eclipse.tracecompass.incubator/+/192291

Change-Id: Ida5ca5c757512730932364240ebad57eec99b7a6
Signed-off-by: Bernd Hufmann <bernd.hufmann@ericsson.com>
Reviewed-on: https://git.eclipse.org/r/c/tracecompass.incubator/org.eclipse.tracecompass.incubator/+/193199
Tested-by: Trace Compass Bot <tracecompass-bot@eclipse.org>
Tested-by: Patrick Tasse <patrick.tasse@gmail.com>
Reviewed-by: Patrick Tasse <patrick.tasse@gmail.com>
  • Loading branch information
bhufmann committed May 6, 2022
1 parent 8af99f6 commit f137a48
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,13 @@ public void testValidateTreeQueryParameters() {
assertNull(
QueryParametersUtil.validateTreeQueryParameters(Maps.newHashMap(ImmutableMap.of(
REQUESTED_TIMERANGE, ImmutableMap.of(START, 0L, END, 1000L)))));

assertEquals(INVALID_REQUESTED_TIMES,
QueryParametersUtil.validateTreeQueryParameters(Maps.newHashMap(ImmutableMap.of(
REQUESTED_TIMES, Arrays.asList(0L)))));
assertNull(
QueryParametersUtil.validateTreeQueryParameters(Maps.newHashMap()));
assertNull(
QueryParametersUtil.validateTreeQueryParameters(Maps.newHashMap(ImmutableMap.of(
REQUESTED_TIMES, Arrays.asList()))));
assertNull(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ public static String validateExperimentQueryParameters(Map<String, Object> param
*/
public static String validateTreeQueryParameters(Map<String, Object> params) {
String errorMessage;
if ((errorMessage = validateRequestedTimeRange(params, false)) != null) {
if ((errorMessage = validateRequestedTimeRange(params, false, true)) != null) {
return errorMessage;
}
return null;
Expand All @@ -114,7 +114,7 @@ public static String validateTreeQueryParameters(Map<String, Object> params) {
*/
public static String validateRequestedQueryParameters(Map<String, Object> params) {
String errorMessage;
if ((errorMessage = validateRequestedTimeRange(params, true)) != null) {
if ((errorMessage = validateRequestedTimeRange(params, true, false)) != null) {
return errorMessage;
}
if ((errorMessage = validateRequestedItems(params, true)) != null) {
Expand All @@ -132,7 +132,7 @@ public static String validateRequestedQueryParameters(Map<String, Object> params
*/
public static String validateArrowsQueryParameters(Map<String, Object> params) {
String errorMessage;
if ((errorMessage = validateRequestedTimeRange(params, true)) != null) {
if ((errorMessage = validateRequestedTimeRange(params, true, false)) != null) {
return errorMessage;
}
return null;
Expand All @@ -147,7 +147,7 @@ public static String validateArrowsQueryParameters(Map<String, Object> params) {
*/
public static String validateAnnotationsQueryParameters(Map<String, Object> params) {
String errorMessage;
if ((errorMessage = validateRequestedTimeRange(params, true)) != null) {
if ((errorMessage = validateRequestedTimeRange(params, true, false)) != null) {
return errorMessage;
}
if ((errorMessage = validateRequestedItems(params, false)) != null) {
Expand Down Expand Up @@ -242,9 +242,11 @@ private static String validateStringList(String param, Map<String, Object> param
* the mutable map of query parameters
* @param required
* true if the parameter is required
* @param isTree
* true if parameter requested_times is for a tree query
* @return an error message if validation fails, or null otherwise
*/
private static String validateRequestedTimeRange(Map<String, Object> params, boolean required) {
private static String validateRequestedTimeRange(Map<String, Object> params, boolean required, boolean isTree) {
Object requestedTimeRange = params.get(REQUESTED_TIMERANGE_KEY);
Object requestedTimes = params.get(DataProviderParameterUtils.REQUESTED_TIME_KEY);
if (required && requestedTimeRange == null && requestedTimes == null) {
Expand Down Expand Up @@ -282,7 +284,7 @@ private static String validateRequestedTimeRange(Map<String, Object> params, boo
params.remove(REQUESTED_TIMERANGE_KEY);
} else if (requestedTimes != null) {
List<@NonNull Long> timeRequested = DataProviderParameterUtils.extractTimeRequested(params);
if (timeRequested == null || timeRequested.isEmpty()) {
if ((timeRequested == null) || (isTree && timeRequested.size() == 1) || (!isTree && timeRequested.isEmpty())) {
return INVALID_PARAMETERS + SEP + DataProviderParameterUtils.REQUESTED_TIME_KEY;
}
params.put(DataProviderParameterUtils.REQUESTED_TIME_KEY, timeRequested);
Expand Down

0 comments on commit f137a48

Please sign in to comment.