Signed-off-by: Dominic Schabel <dominic.schabel@bosch-si.com>
This commit is contained in:
Dominic Schabel
2019-10-25 08:49:01 +02:00
committed by Stefan Behl
parent af0f7ceb5a
commit 80509158eb
2 changed files with 67 additions and 49 deletions

View File

@@ -453,15 +453,23 @@ public abstract class JsonBuilder {
} }
public static String rollout(final String name, final String description, final Integer groupSize, public static String rollout(final String name, final String description, final Integer groupSize,
final long distributionSetId, final String targetFilterQuery, final RolloutGroupConditions conditions, final long distributionSetId, final String targetFilterQuery, final RolloutGroupConditions conditions,
final List<RolloutGroup> groups) { final List<RolloutGroup> groups) {
return rollout(name, description, groupSize, distributionSetId, targetFilterQuery, conditions, groups, null); return rollout(name, description, groupSize, distributionSetId, targetFilterQuery, conditions, groups, null);
} }
public static String rollout(final String name, final String description, final Integer groupSize, public static String rollout(final String name, final String description, final Integer groupSize,
final long distributionSetId, final String targetFilterQuery, final RolloutGroupConditions conditions, final long distributionSetId, final String targetFilterQuery, final RolloutGroupConditions conditions,
final List<RolloutGroup> groups, final String type) { final String type) {
return rollout(name, description, groupSize, distributionSetId, targetFilterQuery, conditions, null, type);
}
public static String rollout(final String name, final String description, final Integer groupSize,
final long distributionSetId, final String targetFilterQuery, final RolloutGroupConditions conditions,
final List<RolloutGroup> groups, final String type) {
final JSONObject json = new JSONObject(); final JSONObject json = new JSONObject();
try { try {
json.put("name", name); json.put("name", name);
json.put("description", description); json.put("description", description);
@@ -469,7 +477,7 @@ public abstract class JsonBuilder {
json.put("distributionSetId", distributionSetId); json.put("distributionSetId", distributionSetId);
json.put("targetFilterQuery", targetFilterQuery); json.put("targetFilterQuery", targetFilterQuery);
if(type != null){ if (type != null) {
json.put("type", type); json.put("type", type);
} }
@@ -536,7 +544,6 @@ public abstract class JsonBuilder {
} }
json.put("groups", jsonGroups); json.put("groups", jsonGroups);
} }
} catch (final JSONException e) { } catch (final JSONException e) {

View File

@@ -23,6 +23,8 @@ import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import com.fasterxml.jackson.core.JsonProcessingException;
import org.eclipse.hawkbit.im.authentication.SpPermission; import org.eclipse.hawkbit.im.authentication.SpPermission;
import org.eclipse.hawkbit.mgmt.rest.api.MgmtRestConstants; import org.eclipse.hawkbit.mgmt.rest.api.MgmtRestConstants;
import org.eclipse.hawkbit.repository.model.Rollout; import org.eclipse.hawkbit.repository.model.Rollout;
@@ -50,8 +52,6 @@ import org.springframework.restdocs.payload.FieldDescriptor;
import org.springframework.restdocs.payload.JsonFieldType; import org.springframework.restdocs.payload.JsonFieldType;
import org.springframework.restdocs.snippet.Snippet; import org.springframework.restdocs.snippet.Snippet;
import com.fasterxml.jackson.core.JsonProcessingException;
import io.qameta.allure.Description; import io.qameta.allure.Description;
import io.qameta.allure.Feature; import io.qameta.allure.Feature;
import io.qameta.allure.Story; import io.qameta.allure.Story;
@@ -106,7 +106,7 @@ public class RolloutResourceDocumentationTest extends AbstractApiRestDocumentati
} }
private Snippet getRolloutResponseFields(final boolean isArray, final boolean withDetails, private Snippet getRolloutResponseFields(final boolean isArray, final boolean withDetails,
final FieldDescriptor... descriptors) throws JsonProcessingException { final FieldDescriptor... descriptors) {
final String arrayPrefix = getArrayPrefix(isArray); final String arrayPrefix = getArrayPrefix(isArray);
final List<FieldDescriptor> allFieldDescriptor = new ArrayList<>(); final List<FieldDescriptor> allFieldDescriptor = new ArrayList<>();
allFieldDescriptor.addAll(Arrays.asList(descriptors)); allFieldDescriptor.addAll(Arrays.asList(descriptors));
@@ -148,8 +148,8 @@ public class RolloutResourceDocumentationTest extends AbstractApiRestDocumentati
.description(MgmtApiModelProperties.ROLLOUT_LINKS_GROUPS)); .description(MgmtApiModelProperties.ROLLOUT_LINKS_GROUPS));
allFieldDescriptor.add(fieldWithPath(arrayPrefix + "_links.approve") allFieldDescriptor.add(fieldWithPath(arrayPrefix + "_links.approve")
.description(MgmtApiModelProperties.ROLLOUT_LINKS_APPROVE)); .description(MgmtApiModelProperties.ROLLOUT_LINKS_APPROVE));
allFieldDescriptor.add(fieldWithPath(arrayPrefix + "_links.deny") allFieldDescriptor.add(
.description(MgmtApiModelProperties.ROLLOUT_LINKS_DENY)); fieldWithPath(arrayPrefix + "_links.deny").description(MgmtApiModelProperties.ROLLOUT_LINKS_DENY));
} }
return new DocumenationResponseFieldsSnippet(allFieldDescriptor); return new DocumenationResponseFieldsSnippet(allFieldDescriptor);
@@ -176,55 +176,66 @@ public class RolloutResourceDocumentationTest extends AbstractApiRestDocumentati
testdataFactory.createTargets(20, "targets-"); testdataFactory.createTargets(20, "targets-");
final String name = "exampleRollout"; final String name = "exampleRollout";
final String type = "forced";
final String description = "Rollout for all named targets"; final String description = "Rollout for all named targets";
final int groupSize = 10; final int groupSize = 10;
final Long dsId = testdataFactory.createDistributionSet().getId(); final Long dsId = testdataFactory.createDistributionSet().getId();
final String targetFilter = "id==targets-*"; final String targetFilter = "id==targets-*";
final RolloutGroupConditions rolloutGroupConditions = new RolloutGroupConditionBuilder() final RolloutGroupConditions rolloutGroupConditions = new RolloutGroupConditionBuilder()
.successCondition(RolloutGroupSuccessCondition.THRESHOLD, "50") .successCondition(RolloutGroupSuccessCondition.THRESHOLD, "50")
.successAction(RolloutGroupSuccessAction.NEXTGROUP, "") .successAction(RolloutGroupSuccessAction.NEXTGROUP, "")
.errorCondition(RolloutGroupErrorCondition.THRESHOLD, "80") .errorCondition(RolloutGroupErrorCondition.THRESHOLD, "80")
.errorAction(RolloutGroupErrorAction.PAUSE, "").build(); .errorAction(RolloutGroupErrorAction.PAUSE, "").build();
mockMvc.perform(post(MgmtRestConstants.ROLLOUT_V1_REQUEST_MAPPING)
.content(JsonBuilder.rollout(name, description, groupSize, dsId, targetFilter, rolloutGroupConditions)) mockMvc.perform(
.contentType(MediaTypes.HAL_JSON_UTF8).accept(MediaTypes.HAL_JSON_VALUE)) post(MgmtRestConstants.ROLLOUT_V1_REQUEST_MAPPING)
.content(JsonBuilder.rollout(name, description, groupSize, dsId, targetFilter,
rolloutGroupConditions, type))
.contentType(MediaTypes.HAL_JSON_UTF8).accept(MediaTypes.HAL_JSON_VALUE))
.andDo(MockMvcResultPrinter.print()).andExpect(status().isCreated()) .andDo(MockMvcResultPrinter.print()).andExpect(status().isCreated())
.andExpect(content().contentType(MediaTypes.HAL_JSON_UTF8)) .andExpect(content().contentType(MediaTypes.HAL_JSON_UTF8))
.andDo(this.document.document(requestFields( .andDo(this.document.document(
requestFieldWithPath("name").description(ApiModelPropertiesGeneric.NAME), requestFields(requestFieldWithPath("name").description(ApiModelPropertiesGeneric.NAME),
requestFieldWithPath("distributionSetId").description(MgmtApiModelProperties.ROLLOUT_DS_ID), optionalRequestFieldWithPath("type").description(
requestFieldWithPath("targetFilterQuery") MgmtApiModelProperties.ROLLOUT_TYPE).attributes(
.description(MgmtApiModelProperties.ROLLOUT_FILTER_QUERY), key("value").value("['soft', 'forced', 'timeforced', 'downloadonly']")),
requestFieldWithPath("amountGroups").description(MgmtApiModelProperties.ROLLOUT_AMOUNT_GROUPS), requestFieldWithPath("distributionSetId")
optionalRequestFieldWithPath("description").description(ApiModelPropertiesGeneric.DESCRPTION), .description(MgmtApiModelProperties.ROLLOUT_DS_ID),
optionalRequestFieldWithPath("successCondition") requestFieldWithPath("targetFilterQuery")
.description(MgmtApiModelProperties.ROLLOUT_SUCCESS_CONDITION), .description(MgmtApiModelProperties.ROLLOUT_FILTER_QUERY),
optionalRequestFieldWithPath("successCondition.condition") requestFieldWithPath("amountGroups")
.description(MgmtApiModelProperties.ROLLOUT_SUCCESS_CONDITION_CONDITION) .description(MgmtApiModelProperties.ROLLOUT_AMOUNT_GROUPS),
.attributes(key("value").value("['threshold']")), optionalRequestFieldWithPath("description")
optionalRequestFieldWithPath("successCondition.expression") .description(ApiModelPropertiesGeneric.DESCRPTION),
.description(MgmtApiModelProperties.ROLLOUT_SUCCESS_CONDITION_EXP), optionalRequestFieldWithPath("successCondition")
optionalRequestFieldWithPath("successAction") .description(MgmtApiModelProperties.ROLLOUT_SUCCESS_CONDITION),
.description(MgmtApiModelProperties.ROLLOUT_SUCCESS_ACTION), optionalRequestFieldWithPath("successCondition.condition")
optionalRequestFieldWithPath("successAction.action") .description(MgmtApiModelProperties.ROLLOUT_SUCCESS_CONDITION_CONDITION)
.description(MgmtApiModelProperties.ROLLOUT_SUCCESS_ACTION_ACTION) .attributes(key("value").value("['threshold']")),
.attributes(key("value").value("['nextgroup']")), optionalRequestFieldWithPath("successCondition.expression")
optionalRequestFieldWithPath("successAction.expression") .description(MgmtApiModelProperties.ROLLOUT_SUCCESS_CONDITION_EXP),
.description(MgmtApiModelProperties.ROLLOUT_SUCCESS_ACTION_EXP), optionalRequestFieldWithPath("successAction")
optionalRequestFieldWithPath("errorCondition") .description(MgmtApiModelProperties.ROLLOUT_SUCCESS_ACTION),
.description(MgmtApiModelProperties.ROLLOUT_ERROR_CONDITION), optionalRequestFieldWithPath("successAction.action")
optionalRequestFieldWithPath("errorCondition.condition") .description(MgmtApiModelProperties.ROLLOUT_SUCCESS_ACTION_ACTION)
.description(MgmtApiModelProperties.ROLLOUT_ERROR_CONDITION_CONDITION) .attributes(key("value").value("['nextgroup']")),
.attributes(key("value").value("['threshold']")), optionalRequestFieldWithPath("successAction.expression")
optionalRequestFieldWithPath("errorCondition.expression") .description(MgmtApiModelProperties.ROLLOUT_SUCCESS_ACTION_EXP),
.description(MgmtApiModelProperties.ROLLOUT_ERROR_CONDITION_EXP), optionalRequestFieldWithPath("errorCondition")
optionalRequestFieldWithPath("errorAction") .description(MgmtApiModelProperties.ROLLOUT_ERROR_CONDITION),
.description(MgmtApiModelProperties.ROLLOUT_ERROR_ACTION), optionalRequestFieldWithPath("errorCondition.condition")
optionalRequestFieldWithPath("errorAction.action") .description(MgmtApiModelProperties.ROLLOUT_ERROR_CONDITION_CONDITION)
.description(MgmtApiModelProperties.ROLLOUT_ERROR_ACTION_ACTION) .attributes(key("value").value("['threshold']")),
.attributes(key("value").value("['pause']")), optionalRequestFieldWithPath("errorCondition.expression")
optionalRequestFieldWithPath("errorAction.expression") .description(MgmtApiModelProperties.ROLLOUT_ERROR_CONDITION_EXP),
.description(MgmtApiModelProperties.ROLLOUT_ERROR_ACTION_EXP)), optionalRequestFieldWithPath("errorAction")
.description(MgmtApiModelProperties.ROLLOUT_ERROR_ACTION),
optionalRequestFieldWithPath("errorAction.action")
.description(MgmtApiModelProperties.ROLLOUT_ERROR_ACTION_ACTION)
.attributes(key("value").value("['pause']")),
optionalRequestFieldWithPath("errorAction.expression")
.description(MgmtApiModelProperties.ROLLOUT_ERROR_ACTION_EXP)),
getRolloutResponseFields(false, true))); getRolloutResponseFields(false, true)));