diff --git a/src/main/java/com/openshift/client/IApplication.java b/src/main/java/com/openshift/client/IApplication.java index 55d0340b..4878a1c9 100755 --- a/src/main/java/com/openshift/client/IApplication.java +++ b/src/main/java/com/openshift/client/IApplication.java @@ -19,6 +19,7 @@ import com.jcraft.jsch.JSchException; import com.jcraft.jsch.Session; import com.openshift.client.cartridge.ICartridge; +import com.openshift.client.cartridge.IDeployedStandaloneCartridge; import com.openshift.client.cartridge.IEmbeddableCartridge; import com.openshift.client.cartridge.IEmbeddedCartridge; import com.openshift.client.cartridge.IStandaloneCartridge; @@ -106,6 +107,13 @@ public interface IApplication extends IOpenShiftResource { * */ public IStandaloneCartridge getCartridge(); + + /** + * Returns the cartridge (application type) that this app is running on. + * + * @return the deployed standalone cartridge of this application + */ + public IDeployedStandaloneCartridge getStandaloneCartridge(); /** * Adds the given embeddable cartridge to this application. diff --git a/src/main/java/com/openshift/client/IGearGroup.java b/src/main/java/com/openshift/client/IGearGroup.java index 2e4023d8..82d34696 100755 --- a/src/main/java/com/openshift/client/IGearGroup.java +++ b/src/main/java/com/openshift/client/IGearGroup.java @@ -43,4 +43,12 @@ public interface IGearGroup { * @return the gears */ public Collection getCartridges(); + + /** + * Returns the additional storage configured for this gear group in gigabytes + * + * @return the additional storage value + */ + public int getAdditionalStorage(); + } diff --git a/src/main/java/com/openshift/client/cartridge/ICartridge.java b/src/main/java/com/openshift/client/cartridge/ICartridge.java index 74e1be79..8e388d63 100755 --- a/src/main/java/com/openshift/client/cartridge/ICartridge.java +++ b/src/main/java/com/openshift/client/cartridge/ICartridge.java @@ -70,6 +70,7 @@ public interface ICartridge { */ public URL getUrl(); + public CartridgeType getType(); /** diff --git a/src/main/java/com/openshift/client/cartridge/IDeployedStandaloneCartridge.java b/src/main/java/com/openshift/client/cartridge/IDeployedStandaloneCartridge.java new file mode 100644 index 00000000..8249f02e --- /dev/null +++ b/src/main/java/com/openshift/client/cartridge/IDeployedStandaloneCartridge.java @@ -0,0 +1,27 @@ +/******************************************************************************* + * Copyright (c) 2014 Red Hat, Inc. + * Distributed under license by Red Hat, Inc. All rights reserved. + * This program is made available under the terms of the + * Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Red Hat, Inc. - initial API and implementation + ******************************************************************************/ +package com.openshift.client.cartridge; + +/** + * Represents a standalone cartridge that has been deployed as opposed to IStandaloneCartridge + * which really represents the metadata about a standalone cartridge + */ +public interface IDeployedStandaloneCartridge extends IStandaloneCartridge{ + + /** + * set the additional gear storage for the cartridge to the given + * size. + * + * @param size The total additional gear storage for the cartridge + * in gigabytes + */ + public void setAdditionalGearStorage(int size); +} diff --git a/src/main/java/com/openshift/client/cartridge/IEmbeddedCartridge.java b/src/main/java/com/openshift/client/cartridge/IEmbeddedCartridge.java index 9f71ccbc..449de7e0 100755 --- a/src/main/java/com/openshift/client/cartridge/IEmbeddedCartridge.java +++ b/src/main/java/com/openshift/client/cartridge/IEmbeddedCartridge.java @@ -10,8 +10,6 @@ ******************************************************************************/ package com.openshift.client.cartridge; -import java.net.URL; - import com.openshift.client.IApplication; import com.openshift.client.IOpenShiftResource; import com.openshift.client.OpenShiftException; @@ -23,14 +21,6 @@ */ public interface IEmbeddedCartridge extends IOpenShiftResource, IEmbeddableCartridge { - /** - * The url at which this cartridge may be reached - * - * @return the url for this cartridge - * @throws OpenShiftException - */ - public URL getUrl() throws OpenShiftException; - /** * Destroys this cartridge (and removes it from the list of existing cartridges) * @@ -52,4 +42,13 @@ public interface IEmbeddedCartridge extends IOpenShiftResource, IEmbeddableCartr * @return the resource properties */ public CartridgeResourceProperties getProperties(); + + /** + * set the additional gear storage for the cartridge to the given + * size. + * + * @param size The total additional gear storage for the cartridge + * in gigabytes + */ + public void setAdditionalGearStorage(int size); } \ No newline at end of file diff --git a/src/main/java/com/openshift/client/cartridge/StandaloneCartridge.java b/src/main/java/com/openshift/client/cartridge/StandaloneCartridge.java index 915c46ba..7af1cff7 100755 --- a/src/main/java/com/openshift/client/cartridge/StandaloneCartridge.java +++ b/src/main/java/com/openshift/client/cartridge/StandaloneCartridge.java @@ -14,6 +14,7 @@ import com.openshift.internal.client.APIResource; import com.openshift.internal.client.ApplicationResource; +import com.openshift.client.IApplication; import com.openshift.internal.client.CartridgeType; import com.openshift.internal.client.cartridge.BaseCartridge; @@ -60,4 +61,36 @@ public StandaloneCartridge(String name, URL url, String displayName, String desc public CartridgeType getType() { return CartridgeType.STANDALONE; } -} \ No newline at end of file + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (!(obj instanceof IStandaloneCartridge)) { + return false; + } + IStandaloneCartridge other = (IStandaloneCartridge) obj; + // shortcut: downloadable cartridges get their name only when + // they're deployed thus should equal on url only + if (isDownloadable()) { + if (other.isDownloadable()) { + if (getUrl() == null) { + return other.getUrl() == null; + } + return getUrl().equals(other.getUrl()); + } + } + if (getName() == null) { + if (other.getName() != null) { + return false; + } + } else if (!getName().equals(other.getName())) { + return false; + } + return true; + } +} diff --git a/src/main/java/com/openshift/internal/client/ApplicationResource.java b/src/main/java/com/openshift/internal/client/ApplicationResource.java index f6e15689..543d9e34 100755 --- a/src/main/java/com/openshift/internal/client/ApplicationResource.java +++ b/src/main/java/com/openshift/internal/client/ApplicationResource.java @@ -49,6 +49,7 @@ import com.openshift.client.OpenShiftException; import com.openshift.client.OpenShiftSSHOperationException; import com.openshift.client.cartridge.ICartridge; +import com.openshift.client.cartridge.IDeployedStandaloneCartridge; import com.openshift.client.cartridge.IEmbeddableCartridge; import com.openshift.client.cartridge.IEmbeddedCartridge; import com.openshift.client.cartridge.IStandaloneCartridge; @@ -107,7 +108,7 @@ public class ApplicationResource extends AbstractOpenShiftResource implements IA private Date creationTime; /** The cartridge (application type/framework) of this application. */ - private IStandaloneCartridge cartridge; + private IDeployedStandaloneCartridge cartridge; /** The scalability enablement. */ private ApplicationScale scale; @@ -239,6 +240,11 @@ public IStandaloneCartridge getCartridge() { return cartridge; } + @Override + public IDeployedStandaloneCartridge getStandaloneCartridge() { + return cartridge; + } + /** * Returns the main (standalone) cartrige or one of the embedded cartridges * whose name matches the given param. @@ -449,7 +455,7 @@ private void updateCartridges(Map cartridgeDTOByNa for (CartridgeResourceDTO cartridgeDTO : cartridgeDTOByName.values()) { switch(cartridgeDTO.getType()) { case STANDALONE: - createStandaloneCartrdige(cartridgeDTO); + createStandaloneCartridge(cartridgeDTO); break; case EMBEDDED: addOrUpdateEmbeddedCartridge(cartridgeDTO.getName(), cartridgeDTO); @@ -460,13 +466,8 @@ private void updateCartridges(Map cartridgeDTOByNa } } - private void createStandaloneCartrdige(CartridgeResourceDTO cartridgeDTO) { - this.cartridge = new StandaloneCartridge( - cartridgeDTO.getName(), - cartridgeDTO.getUrl(), - cartridgeDTO.getDisplayName(), - cartridgeDTO.getDescription(), - cartridgeDTO.getObsolete()); + private void createStandaloneCartridge(CartridgeResourceDTO dto) { + this.cartridge = new StandaloneCartridgeResource(dto,this); } private void addOrUpdateEmbeddedCartridge(String name, CartridgeResourceDTO cartridgeDTO) { diff --git a/src/main/java/com/openshift/internal/client/EmbeddedCartridgeResource.java b/src/main/java/com/openshift/internal/client/EmbeddedCartridgeResource.java index 693ca89e..1984a92f 100755 --- a/src/main/java/com/openshift/internal/client/EmbeddedCartridgeResource.java +++ b/src/main/java/com/openshift/internal/client/EmbeddedCartridgeResource.java @@ -17,8 +17,10 @@ import com.openshift.client.cartridge.EmbeddableCartridge; import com.openshift.client.cartridge.IEmbeddableCartridge; import com.openshift.client.cartridge.IEmbeddedCartridge; +import com.openshift.internal.client.httpclient.request.Parameter; import com.openshift.internal.client.response.CartridgeResourceDTO; import com.openshift.internal.client.response.CartridgeResourceProperties; +import com.openshift.internal.client.utils.IOpenShiftJsonConstants; /** * A cartridge that is embedded into an application. @@ -28,6 +30,7 @@ public class EmbeddedCartridgeResource extends AbstractOpenShiftResource implements IEmbeddedCartridge { private static final String LINK_DELETE_CARTRIDGE = "DELETE"; + private static final String LINK_UPDATE_CARTRIDGE = "UPDATE"; private final String name; private String displayName; @@ -98,6 +101,16 @@ protected void update(CartridgeResourceDTO dto) { setLinks(dto.getLinks()); } + /** + * Update the additional gear storage for this cartridge to the given value + * + * @param size The total size of storage in gigabytes for the gear + */ + @Override + public void setAdditionalGearStorage(int size) { + new UpdateCartridgeRequest().execute(new Parameter(IOpenShiftJsonConstants.PROPERTY_ADDITIONAL_GEAR_STORAGE, String.valueOf(size))); + + } /** * Refreshes the content of this embedded cartridge. Causes all embedded * cartridges of the same application to get updated. @@ -170,4 +183,9 @@ private DeleteCartridgeRequest() { super(LINK_DELETE_CARTRIDGE); } } + private class UpdateCartridgeRequest extends ServiceRequest { + private UpdateCartridgeRequest() { + super(LINK_UPDATE_CARTRIDGE); + } + } } diff --git a/src/main/java/com/openshift/internal/client/GearGroupResource.java b/src/main/java/com/openshift/internal/client/GearGroupResource.java index 38d93ce6..3aebf516 100755 --- a/src/main/java/com/openshift/internal/client/GearGroupResource.java +++ b/src/main/java/com/openshift/internal/client/GearGroupResource.java @@ -42,6 +42,9 @@ public class GearGroupResource extends AbstractOpenShiftResource implements IGea /** the gears of this gear group resource */ private final Collection gears; + /** the additional storage configured for this gear group, in gigabytes */ + private final int additionalStorage; + /** the cartridges in this gear group resource */ private final Collection cartridges; @@ -52,15 +55,17 @@ public class GearGroupResource extends AbstractOpenShiftResource implements IGea * @param name the gear group's name * @param gearDTOs the gear group's gears * @param cartridgeDTOs the gear group's cartridges, indexed by their name + * @param additionalStorage the gear group's additional storage value * @param application the gear group's parent application * @param service the underlying REST Service */ protected GearGroupResource(final String uuid, final String name, final Collection gearDTOs, - final Map cartridgeDTOs, final ApplicationResource application, final IRestService service) { + final Map cartridgeDTOs, final int additionalStorage, final ApplicationResource application, final IRestService service) { super(service); this.uuid = uuid; this.name = name; this.gears = new ArrayList(); + this.additionalStorage = additionalStorage; for(GearResourceDTO dto : gearDTOs) { this.gears.add(new Gear(dto.getUuid(), new GearState(dto.getState()), dto.getSshUrl())); } @@ -82,7 +87,7 @@ protected GearGroupResource(final String uuid, final String name, final Collecti * @param servicethe underlying REST Service */ protected GearGroupResource(final GearGroupResourceDTO dto, final ApplicationResource application, final IRestService service) { - this(dto.getUuid(), dto.getName(), dto.getGears(), dto.getCartridges(), application, service); + this(dto.getUuid(), dto.getName(), dto.getGears(), dto.getCartridges(), dto.getAdditionalStorage(), application, service); } public final String getUUID() { @@ -92,11 +97,15 @@ public final String getUUID() { public final String getName() { return name; } - + public Collection getGears() { return Collections.unmodifiableCollection(gears); } + public int getAdditionalStorage() { + return additionalStorage; + } + /** * @return the cartridges */ diff --git a/src/main/java/com/openshift/internal/client/StandaloneCartridgeResource.java b/src/main/java/com/openshift/internal/client/StandaloneCartridgeResource.java new file mode 100644 index 00000000..3744e8c5 --- /dev/null +++ b/src/main/java/com/openshift/internal/client/StandaloneCartridgeResource.java @@ -0,0 +1,139 @@ +/******************************************************************************* + * Copyright (c) 2014 Red Hat, Inc. + * Distributed under license by Red Hat, Inc. All rights reserved. + * This program is made available under the terms of the + * Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Red Hat, Inc. + ******************************************************************************/ +package com.openshift.internal.client; + +import java.net.URL; + +import com.openshift.client.OpenShiftException; +import com.openshift.client.cartridge.IDeployedStandaloneCartridge; +import com.openshift.client.cartridge.IStandaloneCartridge; +import com.openshift.internal.client.httpclient.request.Parameter; +import com.openshift.internal.client.response.CartridgeResourceDTO; +import com.openshift.internal.client.utils.Assert; +import com.openshift.internal.client.utils.IOpenShiftJsonConstants; + +public class StandaloneCartridgeResource extends AbstractOpenShiftResource implements IStandaloneCartridge, IDeployedStandaloneCartridge { + + private static final String LINK_UPDATE_CARTRIDGE = "UPDATE"; + + + private ApplicationResource application; + private String name; + private String displayName; + private String description; + private URL url; + private CartridgeType cartridgeType; + private boolean obsolete; + + protected StandaloneCartridgeResource(final CartridgeResourceDTO dto, final ApplicationResource application){ + super(application.getService(), dto.getLinks(), dto.getMessages()); + Assert.isTrue(dto.getType().equals(CartridgeType.STANDALONE)); + this.application = application; + this.name = dto.getName(); + this.displayName = dto.getDisplayName(); + this.description = dto.getDescription(); + this.url = dto.getUrl(); + this.cartridgeType = dto.getType(); + this.obsolete = dto.getObsolete(); + } + + /** + * set the additional gear storage for this cartridge to the given value + * + * @param size The total size of storage in gigabytes for the gear + */ + @Override + public void setAdditionalGearStorage(int size) { + new UpdateCartridgeRequest().execute(new Parameter(IOpenShiftJsonConstants.PROPERTY_ADDITIONAL_GEAR_STORAGE, String.valueOf(size))); + } + + /** + * Refreshes the content of this embedded cartridge. Causes all embedded + * cartridges of the same application to get updated. + * + * @see #update(CartridgeResourceDTO) + * @see ApplicationResource#refreshEmbeddedCartridges() + */ + @Override + public void refresh() throws OpenShiftException { + application.refreshEmbeddedCartridges(); + } + + @Override + public String getName() { + return this.name; + } + + @Override + public String getDisplayName() { + return this.displayName; + } + + @Override + public String getDescription() { + return this.description; + } + + @Override + public boolean isDownloadable() { + return this.url != null; + } + + @Override + public URL getUrl() { + return this.url; + } + + @Override + public CartridgeType getType() { + return this.cartridgeType; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((name == null) ? 0 : name.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if(!IStandaloneCartridge.class.isAssignableFrom(obj.getClass())) + return false; + IStandaloneCartridge other = (IStandaloneCartridge) obj; + if (name == null) { + if (other.getName() != null) + return false; + } else if (!name.equals(other.getName())) + return false; + return true; + } + + + + private class UpdateCartridgeRequest extends ServiceRequest { + private UpdateCartridgeRequest() { + super(LINK_UPDATE_CARTRIDGE); + } + } + + + + @Override + public boolean isObsolete() { + return obsolete; + } +} diff --git a/src/main/java/com/openshift/internal/client/response/GearGroupResourceDTO.java b/src/main/java/com/openshift/internal/client/response/GearGroupResourceDTO.java index b1af5e6a..05b67770 100644 --- a/src/main/java/com/openshift/internal/client/response/GearGroupResourceDTO.java +++ b/src/main/java/com/openshift/internal/client/response/GearGroupResourceDTO.java @@ -32,6 +32,11 @@ public class GearGroupResourceDTO extends BaseResourceDTO { /** The cartridges part of this group, indexed by their name. */ private final Map cartridges; + /** + * The additional storage configured for this gear group in gigabytes + */ + private int additionalStorage; + /** * Instantiates a new gears resource dto. * @@ -43,14 +48,17 @@ public class GearGroupResourceDTO extends BaseResourceDTO { * the gears in this group * @param cartridges * the cartridges in this group + * @param additionalStorage + * the additional storage in gigabytes for this gear group * */ - GearGroupResourceDTO(final String uuid, final String name, final Collection gears, final Map cartridges) { + GearGroupResourceDTO(final String uuid, final String name, final int additionalStorage, final Collection gears, final Map cartridges) { super(); this.uuid = uuid; this.name = name; this.gears = gears; this.cartridges = cartridges; + this.additionalStorage = additionalStorage; } /** @@ -96,4 +104,13 @@ public CartridgeResourceDTO getCartridge(final String name) { return cartridges.get(name); } + /** + * Returns the additional storage configured for this gear group in gigabytes + * + * @return the additional storage value + */ + public int getAdditionalStorage(){ + return this.additionalStorage; + } + } diff --git a/src/main/java/com/openshift/internal/client/response/OpenShiftJsonDTOFactory.java b/src/main/java/com/openshift/internal/client/response/OpenShiftJsonDTOFactory.java index 620af692..61594fd9 100755 --- a/src/main/java/com/openshift/internal/client/response/OpenShiftJsonDTOFactory.java +++ b/src/main/java/com/openshift/internal/client/response/OpenShiftJsonDTOFactory.java @@ -10,6 +10,7 @@ ******************************************************************************/ package com.openshift.internal.client.response; +import static com.openshift.internal.client.utils.IOpenShiftJsonConstants.PROPERTY_ADDITIONAL_GEAR_STORAGE; import static com.openshift.internal.client.utils.IOpenShiftJsonConstants.PROPERTY_ALIASES; import static com.openshift.internal.client.utils.IOpenShiftJsonConstants.PROPERTY_APP_URL; import static com.openshift.internal.client.utils.IOpenShiftJsonConstants.PROPERTY_CARTRIDGES; @@ -415,9 +416,10 @@ private GearGroupResourceDTO createGearGroupResourceDTO(ModelNode gearGroupNode) } final String uuid = getAsString(gearGroupNode, PROPERTY_UUID); final String name = getAsString(gearGroupNode, PROPERTY_NAME); + final int additionalStorage = getAsInteger(gearGroupNode, PROPERTY_ADDITIONAL_GEAR_STORAGE); final Collection gears = createGears(gearGroupNode.get(PROPERTY_GEARS)); final Map cartridges = createCartridges(gearGroupNode.get(PROPERTY_CARTRIDGES)); - return new GearGroupResourceDTO(uuid, name, gears, cartridges); + return new GearGroupResourceDTO(uuid, name, additionalStorage, gears, cartridges); } private Collection createGears(ModelNode gearsNode) { diff --git a/src/main/java/com/openshift/internal/client/utils/IOpenShiftJsonConstants.java b/src/main/java/com/openshift/internal/client/utils/IOpenShiftJsonConstants.java index 619972ac..73a264f2 100755 --- a/src/main/java/com/openshift/internal/client/utils/IOpenShiftJsonConstants.java +++ b/src/main/java/com/openshift/internal/client/utils/IOpenShiftJsonConstants.java @@ -17,6 +17,7 @@ public class IOpenShiftJsonConstants { public static final String PROPERTY_ACTION = "action"; + public static final String PROPERTY_ADDITIONAL_GEAR_STORAGE = "additional_gear_storage"; public static final String PROPERTY_ALIAS = "alias"; public static final String PROPERTY_ALIASES = "aliases"; public static final String PROPERTY_ALTER = "alter"; diff --git a/src/test/java/com/openshift/client/utils/GearGroupAssert.java b/src/test/java/com/openshift/client/utils/GearGroupAssert.java index 820cc1f8..b16a904d 100644 --- a/src/test/java/com/openshift/client/utils/GearGroupAssert.java +++ b/src/test/java/com/openshift/client/utils/GearGroupAssert.java @@ -61,6 +61,11 @@ public GearGroupAssert hasGears() { return this; } + public GearGroupAssert hasAdditionalStorageSize(int size){ + assertThat(gearGroup.getAdditionalStorage()).isEqualTo(size); + return this; + } + public GearAssert assertGear(String id) { assertNotNull(id); diff --git a/src/test/java/com/openshift/internal/client/GearGroupsResourceTest.java b/src/test/java/com/openshift/internal/client/GearGroupsResourceTest.java index 1214f1dc..45ca97af 100644 --- a/src/test/java/com/openshift/internal/client/GearGroupsResourceTest.java +++ b/src/test/java/com/openshift/internal/client/GearGroupsResourceTest.java @@ -60,6 +60,7 @@ public void shouldGetGearGroups() throws Throwable { assertThat(new GearGroupsAssert(gearGroups)).hasSize(2); assertThat(new GearGroupsAssert(gearGroups)).assertGroup("514207b84382ec1fef0000ab") .hasUUID("514207b84382ec1fef0000ab") + .hasAdditionalStorageSize(8) .assertGear("514207b84382ec1fef000098").inState(new GearState("idle")) .assertGear("514207b84382ec1fef000098").hasSshUrl("ssh://52380549e0b8cd1e0e000032@springeap6-foobarz.rhcloud.com") .assertGear("5146f047500446f12d00002e").inState(new GearState("building")) diff --git a/src/test/java/com/openshift/internal/client/OpenShiftTestSuite.java b/src/test/java/com/openshift/internal/client/OpenShiftTestSuite.java index a6fbe835..38801968 100755 --- a/src/test/java/com/openshift/internal/client/OpenShiftTestSuite.java +++ b/src/test/java/com/openshift/internal/client/OpenShiftTestSuite.java @@ -35,6 +35,7 @@ QuickstartTest.class, BaseCartridgeTest.class, StandaloneCartridgeTest.class, + StandaloneCartridgeResourceTest.class, EmbeddableCartridgeTest.class, EmbeddedCartridgeResourceTest.class, CartridgeQueryTest.class, diff --git a/src/test/java/com/openshift/internal/client/StandaloneCartridgeResourceTest.java b/src/test/java/com/openshift/internal/client/StandaloneCartridgeResourceTest.java new file mode 100644 index 00000000..15e45b2e --- /dev/null +++ b/src/test/java/com/openshift/internal/client/StandaloneCartridgeResourceTest.java @@ -0,0 +1,102 @@ +/******************************************************************************* + * Copyright (c) 2014 Red Hat, Inc. + * Distributed under license by Red Hat, Inc. All rights reserved. + * This program is made available under the terms of the + * Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Red Hat, Inc. - initial API and implementation + ******************************************************************************/ +package com.openshift.internal.client; + +import static com.openshift.client.utils.Samples.GET_DOMAINS; +import static com.openshift.client.utils.Samples.GET_DOMAINS_FOOBARZ_APPLICATIONS_3EMBEDDED; +import static org.fest.assertions.Assertions.assertThat; +import static org.mockito.Mockito.*; +import static com.openshift.client.utils.UrlEndsWithMatcher.urlEndsWith; + +import org.junit.Before; +import org.junit.Test; + +import com.openshift.client.IApplication; +import com.openshift.client.IDomain; +import com.openshift.client.IHttpClient; +import com.openshift.client.IUser; +import com.openshift.client.cartridge.IDeployedStandaloneCartridge; +import com.openshift.client.cartridge.IStandaloneCartridge; +import com.openshift.client.cartridge.StandaloneCartridge; +import com.openshift.client.utils.TestConnectionFactory; +import com.openshift.internal.client.httpclient.request.JsonMediaType; +import com.openshift.internal.client.httpclient.request.Parameter; +import com.openshift.internal.client.response.CartridgeResourceDTO; +import com.openshift.internal.client.utils.IOpenShiftJsonConstants; + +public class StandaloneCartridgeResourceTest { + + private ApplicationResource app = mock(ApplicationResource.class); + private CartridgeResourceDTO dto = mock(CartridgeResourceDTO.class); + private IStandaloneCartridge cartridge = mock(IStandaloneCartridge.class); + private StandaloneCartridgeResource cartridgeResource; + + @Before + public void setup(){ + when(dto.getName()).thenReturn("cartridgeName"); + when(dto.getType()).thenReturn(CartridgeType.STANDALONE); + when(cartridge.getName()).thenReturn("cartridgeName"); + cartridgeResource = new StandaloneCartridgeResource(dto,app); + } + + @Test + public void testSetAdditionalGearStorage() throws Exception { + HttpClientMockDirector builder = new HttpClientMockDirector(); + IHttpClient httpClient = builder + .mockGetDomains(GET_DOMAINS) + .mockGetApplications( + "foobarz", GET_DOMAINS_FOOBARZ_APPLICATIONS_3EMBEDDED) + .client(); + IUser user = new TestConnectionFactory().getConnection(httpClient).getUser(); + IDomain domain = user.getDomain("foobarz"); + IApplication application = domain.getApplicationByName("springeap6"); + + IDeployedStandaloneCartridge cartridge = application.getStandaloneCartridge(); + + cartridge.setAdditionalGearStorage(40); + + verify(httpClient, times(1)).put( + urlEndsWith("applications/springeap6/cartridges/jbosseap-6"), + any(JsonMediaType.class), + anyInt(), + eq(new Parameter(IOpenShiftJsonConstants.PROPERTY_ADDITIONAL_GEAR_STORAGE, "40"))); + } + + @Test + public void standaloneCartridgeResourceShouldEqualStandAloneCartridge() { + // pre-conditions + // operation + // verification + assertThat(cartridgeResource).isEqualTo(cartridge); + + when(cartridge.getName()).thenReturn("other"); + assertThat(cartridgeResource).isNotEqualTo(cartridge); + } + + @Test + public void standaloneCartridgeResourceAndStandAloneCartridgeShouldHaveSameHashCode() { + // pre-conditions + + // operation + // verification + assertThat(cartridgeResource.hashCode()).isEqualTo(new StandaloneCartridge("cartridgeName").hashCode()); + } + +// @Test +// public void standaloneCartridgeResourceShouldEqualStandAloneCartridgeWithoutName() throws MalformedURLException { +// // pre-coniditions +// // operation +// // verification +// assertEquals(new EmbeddableCartridge(null, new URL(CartridgeTestUtils.FOREMAN_URL)), +// new EmbeddableCartridge("redhat", new URL(CartridgeTestUtils.FOREMAN_URL))); +// } + +} diff --git a/src/test/java/com/openshift/internal/client/StandaloneCartridgeTest.java b/src/test/java/com/openshift/internal/client/StandaloneCartridgeTest.java index ca310d86..d2063648 100644 --- a/src/test/java/com/openshift/internal/client/StandaloneCartridgeTest.java +++ b/src/test/java/com/openshift/internal/client/StandaloneCartridgeTest.java @@ -11,6 +11,7 @@ package com.openshift.internal.client; import static org.fest.assertions.Assertions.assertThat; +import static org.junit.Assert.*; import java.net.MalformedURLException; import java.net.URL; @@ -81,6 +82,13 @@ public void shouldHaveNameDisplaynameDescription() throws Throwable { + "scalable network applications. Node.js is perfect for data-intensive real-time " + "applications that run across distributed devices."); } - - + + @Test + public void standaloneCartridgeResourceShouldEqualStandAloneCartridgeWithoutName() throws MalformedURLException { + // pre-coniditions + // operation + // verification + assertEquals(new StandaloneCartridge(new URL(CartridgeTestUtils.FOREMAN_URL)), + new StandaloneCartridge("redhat", new URL(CartridgeTestUtils.FOREMAN_URL))); + } } diff --git a/src/test/java/com/openshift/internal/client/StandaloneCartridgesIntegrationTest.java b/src/test/java/com/openshift/internal/client/StandaloneCartridgesIntegrationTest.java index 8a721740..4571fe61 100755 --- a/src/test/java/com/openshift/internal/client/StandaloneCartridgesIntegrationTest.java +++ b/src/test/java/com/openshift/internal/client/StandaloneCartridgesIntegrationTest.java @@ -22,11 +22,13 @@ import com.openshift.client.IDomain; import com.openshift.client.IUser; import com.openshift.client.OpenShiftException; +import com.openshift.client.cartridge.IDeployedStandaloneCartridge; import com.openshift.client.cartridge.IStandaloneCartridge; import com.openshift.client.utils.ApplicationTestUtils; import com.openshift.client.utils.DomainTestUtils; import com.openshift.client.utils.StandaloneCartridgeAssert; import com.openshift.client.utils.TestConnectionBuilder; +import com.openshift.client.utils.TestConnectionFactory; /** * @author André Dietisheim @@ -57,6 +59,24 @@ public void shouldReportStandaloneCartridge() throws OpenShiftException, URISynt IStandaloneCartridge availableCartridge = getAvailableCartridge(cartridge.getName()); new StandaloneCartridgeAssert(cartridge).equals(availableCartridge); } + + @Test + public void shouldSetGearStorage() throws OpenShiftException, URISyntaxException, IOException { + // precondition + + // operation + IDeployedStandaloneCartridge cartridge = application.getStandaloneCartridge(); + assertThat(cartridge).isNotNull(); + cartridge.setAdditionalGearStorage(11); + + // verification + // reload user info to ensure the storage info isnt cached + IUser refreshedUser = new TestConnectionFactory().getConnection().getUser(); + refreshedUser.getDefaultDomain().getApplicationByName(application.getName()); + + IStandaloneCartridge availableCartridge = getAvailableCartridge(cartridge.getName()); + new StandaloneCartridgeAssert(cartridge).equals(availableCartridge); + } private IStandaloneCartridge getAvailableCartridge(String name) { assertThat(name).isNotNull(); diff --git a/src/test/resources/samples/get-domains-foobarz-applications-springeap6-geargroups.json b/src/test/resources/samples/get-domains-foobarz-applications-springeap6-geargroups.json index 19ff28de..8e8ac82b 100644 --- a/src/test/resources/samples/get-domains-foobarz-applications-springeap6-geargroups.json +++ b/src/test/resources/samples/get-domains-foobarz-applications-springeap6-geargroups.json @@ -1,7 +1,7 @@ { "data":[ { - "additional_gear_storage":0, + "additional_gear_storage":8, "base_gear_storage":1, "cartridges":[ {