Signed-off-by: Dominic Schabel <dominic.schabel@bosch-si.com>
This commit is contained in:
committed by
Stefan Behl
parent
af0f7ceb5a
commit
80509158eb
@@ -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) {
|
||||||
|
|||||||
@@ -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)));
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user