Eli Mesika has uploaded a new change for review. Change subject: [WIP] API: Adding BackendStepResource and ... ......................................................................
[WIP] API: Adding BackendStepResource and ... API: Adding BackendStepResource and BackendStepsResource Change-Id: I5f7b7f51d113600ac9a484645da93cc16a1b6bc6 Signed-off-by: Eli Mesika <[email protected]> Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=872719 --- A backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStepResource.java M backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStepsResource.java A backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendStepResourceTest.java A backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendStepResourceTest.java A backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendStepsResourceTest.java 5 files changed, 268 insertions(+), 5 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/67/16167/1 diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStepResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStepResource.java new file mode 100644 index 0000000..78592d4 --- /dev/null +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStepResource.java @@ -0,0 +1,54 @@ +package org.ovirt.engine.api.restapi.resource; + +import javax.ws.rs.core.Response; + +import org.ovirt.engine.api.model.Action; +import org.ovirt.engine.api.model.Step; +import org.ovirt.engine.api.resource.StepResource; +import org.ovirt.engine.core.common.action.EndExternalStepParameters; +import org.ovirt.engine.core.common.action.VdcActionType; +import org.ovirt.engine.core.common.queries.GetStepByStepIdQueryParameters; +import org.ovirt.engine.core.common.queries.VdcQueryType; + +public class BackendStepResource extends AbstractBackendActionableResource<org.ovirt.engine.api.model.Step, org.ovirt.engine.core.common.job.Step> implements StepResource{ + + private BackendStepsResource parent; + public BackendStepsResource getParent() { + return parent; + } + + public void setParent(BackendStepsResource parent) { + this.parent = parent; + } + + public BackendStepResource(String id, + Class<Step> modelType, + Class<org.ovirt.engine.core.common.job.Step> entityType, + String[] subCollections) { + super(id, modelType, entityType, subCollections); + } + + public BackendStepResource(String id, BackendStepsResource backendStepsResource) { + super(id, org.ovirt.engine.api.model.Step.class, org.ovirt.engine.core.common.job.Step.class); + this.setParent(parent); + } + + @Override + protected Step doPopulate(Step model, org.ovirt.engine.core.common.job.Step entity) { + return model; + } + + @Override + public Response end(Action action) { + return doAction(VdcActionType.EndExternalStep, + new EndExternalStepParameters(guid, action.isSucceeded(), action.isForce()), action); + } + + @Override + public Step get() { + GetStepByStepIdQueryParameters params = new GetStepByStepIdQueryParameters(); + params.setStepId(guid); + return performGet(VdcQueryType.GetStepByStepId, params); + } + +} diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStepsResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStepsResource.java index d82302e..a5d5473 100644 --- a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStepsResource.java +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStepsResource.java @@ -14,8 +14,8 @@ import org.ovirt.engine.api.restapi.types.StepMapper; import org.ovirt.engine.core.common.action.AddExternalStepParameters; import org.ovirt.engine.core.common.action.VdcActionType; +import org.ovirt.engine.core.common.queries.GetStepByStepIdQueryParameters; import org.ovirt.engine.core.common.queries.GetStepsByJobIdQueryParameters; -import org.ovirt.engine.core.common.queries.IdQueryParameters; import org.ovirt.engine.core.common.queries.VdcQueryType; import org.ovirt.engine.core.compat.Guid; @@ -37,17 +37,17 @@ @Override public Response add(Step step) { - validateParameters(step, "job" , "stepType", "status" , "description"); + validateParameters(step, "stepType", "status" , "description"); String id; if (step.isSetParentStep()) { id = step.getParentStep().getId(); } else { - id = step.getJob().getId(); + id = jobId.toString(); } return performCreate(VdcActionType.AddExternalStep, - new AddExternalStepParameters(Guid.createGuidFromString(id), step.getDescription(),StepMapper.map(step.getStepType()), StepMapper.map(step.getStatus())), - new QueryIdResolver<Guid>(VdcQueryType.GetStepByStepId, IdQueryParameters.class)); + new AddExternalStepParameters(Guid.createGuidFromString(id), step.getDescription(),StepMapper.map(step.getStepType()), StepMapper.map(step.getStatus(), null)), + new QueryIdResolver<Guid>(VdcQueryType.GetStepByStepId, GetStepByStepIdQueryParameters.class)); } @Override diff --git a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendStepResourceTest.java b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendStepResourceTest.java new file mode 100644 index 0000000..3c4777c --- /dev/null +++ b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/AbstractBackendStepResourceTest.java @@ -0,0 +1,80 @@ +package org.ovirt.engine.api.restapi.resource; + +import javax.ws.rs.WebApplicationException; + +import org.junit.Test; +import org.ovirt.engine.api.model.Step; +import org.ovirt.engine.core.common.queries.IdQueryParameters; +import org.ovirt.engine.core.common.queries.VdcQueryType; + +public abstract class AbstractBackendStepResourceTest + extends AbstractBackendSubResourceTest<Step, org.ovirt.engine.core.common.job.Step, BackendStepResource> { + + public AbstractBackendStepResourceTest(BackendStepResource stepResource) { + super(stepResource); + } + + @Test + public void testBadGuid() throws Exception { + control.replay(); + try { + new BackendStepResource(null, null); + fail("expected WebApplicationException"); + } catch (WebApplicationException wae) { + verifyNotFoundException(wae); + } + } + + @Test + public void testGetNotFound() throws Exception { + setUriInfo(setUpBasicUriExpectations()); + setUpGetEntityExpectations(true); + control.replay(); + try { + resource.get(); + fail("expected WebApplicationException"); + } catch (WebApplicationException wae) { + verifyNotFoundException(wae); + } + } + + @Test + public void testGet() throws Exception { + setUriInfo(setUpBasicUriExpectations()); + setUpGetEntityExpectations(); + control.replay(); + + verifyModel(resource.get(), 0); + } + + protected void setUpGetEntityExpectations() throws Exception { + setUpGetEntityExpectations(false); + } + + protected void setUpGetEntityExpectations(boolean notFound) throws Exception { + setUpGetEntityExpectations(VdcQueryType.GetStepByStepId, + IdQueryParameters.class, + new String[] { "Id" }, + new Object[] { GUIDS[0] }, + notFound ? null : getEntity(0)); + } + + @Override + protected org.ovirt.engine.core.common.job.Step getEntity(int index) { + int parentIndex = index == 1 ? 0 : 1; + org.ovirt.engine.core.common.job.Step step = new org.ovirt.engine.core.common.job.Step(); + step.setId(GUIDS[index]); + step.setJobId(GUIDS[parentIndex]); + step.setDescription(DESCRIPTIONS[index]); + step.setExternal(true); + return step; + } + + @Override + protected void verifyModel(Step model, int index) { + super.verifyModel(model, index); + assertTrue(model.isExternal()); + assertNotNull(model.getJob()); + } + +} diff --git a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendStepResourceTest.java b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendStepResourceTest.java new file mode 100644 index 0000000..4d20443 --- /dev/null +++ b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendStepResourceTest.java @@ -0,0 +1,10 @@ +package org.ovirt.engine.api.restapi.resource; + + +public class BackendStepResourceTest extends AbstractBackendStepResourceTest { + + public BackendStepResourceTest() { + super(new BackendStepResource(GUIDS[0].toString(), new BackendStepsResource(GUIDS[1]))); + } +} + diff --git a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendStepsResourceTest.java b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendStepsResourceTest.java new file mode 100644 index 0000000..981e757 --- /dev/null +++ b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendStepsResourceTest.java @@ -0,0 +1,119 @@ +package org.ovirt.engine.api.restapi.resource; + +import java.util.ArrayList; +import java.util.List; + +import javax.ws.rs.WebApplicationException; +import javax.ws.rs.core.Response; + +import org.junit.Ignore; +import org.junit.Test; +import org.ovirt.engine.api.model.Job; +import org.ovirt.engine.api.model.Step; +import org.ovirt.engine.core.common.action.AddExternalJobParameters; +import org.ovirt.engine.core.common.action.VdcActionType; +import org.ovirt.engine.core.common.queries.IdQueryParameters; +import org.ovirt.engine.core.common.queries.VdcQueryParametersBase; +import org.ovirt.engine.core.common.queries.VdcQueryType; + +public class BackendStepsResourceTest extends AbstractBackendCollectionResourceTest<Step, org.ovirt.engine.core.common.job.Step, BackendStepsResource> { + + public BackendStepsResourceTest() { + super(new BackendStepsResource(GUIDS[1]), null, ""); + } + @Override + protected List<Step> getCollection() { + return collection.list().getSteps(); + } + @Override + protected org.ovirt.engine.core.common.job.Step getEntity(int index) { + int jobIndex = index == 0 ? 1 : index -1 ; + org.ovirt.engine.core.common.job.Step step = new org.ovirt.engine.core.common.job.Step(); + step.setId(GUIDS[index]); + step.setJobId(GUIDS[jobIndex]); + step.setDescription(DESCRIPTIONS[index]); + step.setExternal(true); + return step; + } + + @Override + protected void setUpQueryExpectations(String query, Object failure) throws Exception { + assert(query.equals("")); + + setUpEntityQueryExpectations(VdcQueryType.GetAllSteps, + VdcQueryParametersBase.class, + new String[] { }, + new Object[] { }, + setUpSteps(), + failure); + + control.replay(); + } + + @Override + protected void verifyModel(Step model, int index) { + super.verifyModel(model, index); + assertTrue(model.isExternal()); + } + + protected List<org.ovirt.engine.core.common.job.Step> setUpSteps() { + List<org.ovirt.engine.core.common.job.Step> steps = new ArrayList<org.ovirt.engine.core.common.job.Step>(); + for (int i = 0; i < NAMES.length; i++) { + steps.add(getEntity(i)); + } + return steps; + } + + private void setUpGetEntityExpectations() throws Exception { + setUpGetEntityExpectations(VdcQueryType.GetStepByStepId, + IdQueryParameters.class, + new String[] { "Id" }, + new Object[] { GUIDS[0] }, + getEntity(0)); + } + + @Test + @Ignore + @Override + public void testQuery() throws Exception { + } + + @Test + public void testAddJob() throws Exception { + setUriInfo(setUpBasicUriExpectations()); + setUpCreationExpectations(VdcActionType.AddExternalStep, + AddExternalJobParameters.class, + new String[] { "Job.Description, Job.JobId"}, + new Object[] { DESCRIPTIONS[0], GUIDS[1] }, + true, + true, + GUIDS[0], + VdcQueryType.GetStepByStepId, + IdQueryParameters.class, + new String[] { "Id" }, + new Object[] { GUIDS[0] }, + getEntity(0)); + Step model = new Step(); + Job job = new Job(); + job.setId(GUIDS[1].toString()); + model.setJob(job); + model.setDescription(DESCRIPTIONS[0].toString()); + Response response = collection.add(model); + assertEquals(201, response.getStatus()); + assertTrue(response.getEntity() instanceof Job); + verifyModel((Step) response.getEntity(), 0); + } + + @Test + public void testAddIncompleteParametersNoDescription() throws Exception { + Step model = new Step(); + setUriInfo(setUpBasicUriExpectations()); + control.replay(); + try { + collection.add(model); + fail("expected WebApplicationException on incomplete parameters"); + } catch (WebApplicationException wae) { + verifyIncompleteException(wae, "Job", "add", "description"); + } + } +} -- To view, visit http://gerrit.ovirt.org/16167 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I5f7b7f51d113600ac9a484645da93cc16a1b6bc6 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Eli Mesika <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
