package org.cloudifysource.dsl.internal; import java.io.File; import java.io.IOException; import junit.framework.Assert; import org.cloudifysource.domain.Service; import org.cloudifysource.domain.cloud.AgentComponent; import org.cloudifysource.domain.cloud.Cloud; import org.cloudifysource.domain.cloud.UsmComponent; import org.cloudifysource.dsl.internal.validators.AgentComponentValidator; import org.cloudifysource.dsl.internal.validators.UsmComponentValidator; import org.junit.Test; /** * * @author yael * */ public class DSLValidateObjectsTest { private final static String CLOUD_PATH = "../esc/src/main/resources/clouds/rsopenstack/rsopenstack-cloud.groovy"; private final static String SERVICE_PATH = "testResources/simple/simple-service.groovy"; //@Test public void testCloud() throws IOException { File cloudFile = new File(CLOUD_PATH); DSLReader dslReader = new DSLReader(); dslReader.setDslFile(cloudFile); dslReader.setWorkDir(cloudFile.getParentFile()); dslReader.setCreateServiceContext(false); try { dslReader.readDslEntity(Cloud.class); Assert.fail("The validation of file " + CLOUD_PATH + " was supposed to fail"); } catch (Exception e) { } try { dslReader.setValidateObjects(false); dslReader.readDslEntity(Cloud.class); } catch (Exception e) { Assert.fail("Expecting no validation for cloud file " + CLOUD_PATH + ", exception was " + e.getMessage()); } } @Test public void testGridComponentValidation() { final AgentComponent agentComponent = new AgentComponent(); final AgentComponentValidator agentComponentValidator = new AgentComponentValidator(); agentComponentValidator.setDSLEntity(agentComponent); agentComponent.setMaxMemory("128u"); try { agentComponentValidator.validateMemory(new DSLValidationContext()); Assert.fail("invalid memory passed dsl validation"); } catch (final DSLValidationException e) { // OK - the invalid memory format caused the exception } agentComponent.setMaxMemory("128m"); try { agentComponentValidator.validateMemory(new DSLValidationContext()); } catch (final DSLValidationException e) { Assert.fail("legit memory failed dsl validation"); } agentComponent.setPort(124); try { agentComponentValidator.validatePort(new DSLValidationContext()); Assert.fail("invalid port passed dsl validation"); } catch (final DSLValidationException e) { //OK - port is not in the port range. } agentComponent.setPort(7000); try { agentComponentValidator.validateMemory(new DSLValidationContext()); } catch (final DSLValidationException e) { Assert.fail("legit port failed dsl validation"); } UsmComponent usmComponent = new UsmComponent(); UsmComponentValidator usmComponentValidator = new UsmComponentValidator(); usmComponentValidator.setDSLEntity(usmComponent); usmComponent.setPortRange("7000-7100"); try { usmComponentValidator.validatePortRange(new DSLValidationContext()); } catch (final DSLValidationException e) { Assert.fail("legit port range failed dsl validation"); } usmComponent.setPortRange("700q-7100"); try { usmComponentValidator.validatePortRange(new DSLValidationContext()); Assert.fail("invalid port range passed dsl validation"); } catch (final DSLValidationException e) { //OK } usmComponent.setPortRange("7100-7000"); try { usmComponentValidator.validatePortRange(new DSLValidationContext()); Assert.fail("invalid port range passed dsl validation"); } catch (final DSLValidationException e) { //OK } usmComponent.setPortRange("102-700"); try { usmComponentValidator.validatePortRange(new DSLValidationContext()); Assert.fail("invalid port range passed dsl validation"); } catch (final DSLValidationException e) { //OK } } @Test public void testService() throws IOException { File serviceFile = new File(SERVICE_PATH); DSLReader dslReader = new DSLReader(); dslReader.setDslFile(serviceFile); dslReader.setWorkDir(serviceFile.getParentFile()); try { dslReader.readDslEntity(Service.class); Assert.fail("The validation of service file " + SERVICE_PATH + " was supposed to fail"); } catch (Exception e) { } try { dslReader.setValidateObjects(false); dslReader.readDslEntity(Service.class); } catch (Exception e) { Assert.fail("Expecting no Validation for service file " + SERVICE_PATH + " exception was " + e.getMessage()); } } }