+++ /dev/null
-package org.argeo.slc.core.build;\r
-\r
-/** The id uniquely identifying the distribution of a software system. \r
- * @deprecated*/\r
-public interface DistributionId {\r
-\r
-}\r
* 2.4.12.RC1\r
* </p>\r
*/\r
-public class VersionDistributionId implements DistributionId {\r
+public class VersionDistributionId {\r
\r
private Integer major;\r
private Integer minor;\r
--- /dev/null
+package org.argeo.slc.core.deploy;
+
+import org.argeo.slc.core.UnsupportedException;
+import org.argeo.slc.core.build.Distribution;
+
+public abstract class AbstractDeployedSystem implements DeployedSystem {
+ public String getDeployedSystemId() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public DeploymentData getDeploymentData() {
+ throw new UnsupportedException("Method not supported");
+ }
+
+ public Distribution getDistribution() {
+ throw new UnsupportedException("Method not supported");
+ }
+
+ public TargetData getTargetData() {
+ throw new UnsupportedException("Method not supported");
+ }
+
+
+}
import org.argeo.slc.core.build.Distribution;\r
\r
/** An instance of a software system. */\r
-public interface DeployedSystem {\r
+public interface DeployedSystem<DISTRIBUTION extends Distribution, TARGET_DATA extends TargetData>\r
+ extends TargetData {\r
public String getDeployedSystemId();\r
- public Distribution getDistribution();\r
+\r
+ public DISTRIBUTION getDistribution();\r
+\r
+ public DeploymentData getDeploymentData();\r
+\r
+ public TARGET_DATA getTargetData();\r
}\r
+++ /dev/null
-package org.argeo.slc.core.deploy;\r
-\r
-import org.argeo.slc.core.build.DistributionId;\r
-\r
-/** The id uniquely identifying a deployed system. \r
- * @deprecated*/\r
-public interface DeployedSystemId {\r
- public DistributionId getDistributionId();\r
-}\r
--- /dev/null
+package org.argeo.slc.core.deploy;
+
+public interface DeployedSystemManager<T extends DeployedSystem> {
+ public void setDeployedSystem(T deployedSystem);
+}
package org.argeo.slc.core.deploy;\r
\r
+import org.argeo.slc.core.build.Distribution;\r
+\r
public interface Deployment {\r
public DeployedSystem getDeployedSystem();\r
\r
- public TargetData getTargetData();\r
+ public void setTargetData(TargetData targetData);\r
+\r
+ public void setDeploymentData(DeploymentData deploymentData);\r
+ \r
+ public void setDistribution(Distribution distribution);\r
+\r
+ public void execute();\r
\r
- public DeploymentData getDeploymentData();\r
}\r
+++ /dev/null
-package org.argeo.slc.core.deploy;\r
-\r
-public interface ExecutableDeployment extends Deployment {\r
- public void execute();\r
-}\r
--- /dev/null
+package org.argeo.slc.core.deploy;
+
+public interface ManageableDeployedSystem extends DeployedSystem {
+ public void start();
+ public void stop();
+}
+++ /dev/null
-package org.argeo.slc.core.deploy;\r
-\r
-import org.argeo.slc.core.build.DistributionId;\r
-\r
-/**\r
- * A basic implementation of a deployed system id, based on a long value and a\r
- * reference to a distribution id.\r
- */\r
-public class NumericDSId implements DeployedSystemId {\r
-\r
- private Long value;\r
- private DistributionId distributionId;\r
-\r
- public Long getValue() {\r
- return value;\r
- }\r
-\r
- public void setValue(Long value) {\r
- this.value = value;\r
- }\r
-\r
- public DistributionId getDistributionId() {\r
- return distributionId;\r
- }\r
-\r
- public void setDistributionId(DistributionId distributionId) {\r
- this.distributionId = distributionId;\r
- }\r
-\r
- @Override\r
- public boolean equals(Object obj) {\r
- return value.toString().equals(obj.toString());\r
- }\r
-\r
- @Override\r
- public String toString() {\r
- return value.toString();\r
- }\r
-\r
-}\r
--- /dev/null
+package org.argeo.slc.core.deploy;
+
+public class SimpleDeployedSytemManager implements
+ DeployedSystemManager<ManageableDeployedSystem> {
+
+ private ManageableDeployedSystem deployedSystem;
+
+ public void setDeployedSystem(ManageableDeployedSystem deployedSystem) {
+ this.deployedSystem = deployedSystem;
+ }
+
+}
+++ /dev/null
-package org.argeo.slc.core.deploy;\r
-\r
-public interface WritableDeployment extends ExecutableDeployment {\r
- public void setDeployedSystem(DeployedSystem deployedSystem);\r
-\r
- public void setTargetData(TargetData targetData);\r
-\r
- public void setDeploymentData(DeploymentData deploymentData);\r
-}\r
import java.util.Map;\r
import java.util.TreeMap;\r
\r
-import javax.swing.tree.TreeSelectionModel;\r
+import org.argeo.slc.core.structure.tree.TreeSPath;\r
\r
/**\r
* Basic implementation of <code>StructureElement</code>.\r
\r
import java.util.List;\r
\r
-import org.argeo.slc.core.deploy.DeployedSystem;\r
-\r
/** Registry where the whole structure is stored. */\r
public interface StructureRegistry<P extends StructurePath> {\r
/** Read mode: the structure is only read. */\r
+++ /dev/null
-package org.argeo.slc.core.test;\r
-\r
-import org.argeo.slc.core.deploy.DeployedSystemId;\r
-\r
-/**\r
- * Basic implementation of test run id based on a long value and a reference to\r
- * a deployed system id.\r
- * \r
- * @deprecated\r
- */\r
-public class NumericTRId implements TestResultId {\r
- /** For ORM */\r
- private Long tid;\r
-\r
- private Long value;\r
- private DeployedSystemId deployedSystemId;\r
-\r
- /** For ORM */\r
- public NumericTRId() {\r
-\r
- }\r
-\r
- public NumericTRId(Long value) {\r
- this.value = value;\r
- }\r
-\r
- /**\r
- * Initializes the long value with the current time (based on\r
- * <code>java.lang.System.currentTimeMillis()</code>).\r
- */\r
- public void init() {\r
- if (getValue() == null) {\r
- setValue(System.currentTimeMillis());\r
- }\r
- }\r
-\r
- public Long getValue() {\r
- return value;\r
- }\r
-\r
- public void setValue(Long value) {\r
- this.value = value;\r
- }\r
-\r
- public DeployedSystemId getDeployedSystemId() {\r
- return deployedSystemId;\r
- }\r
-\r
- public void setDeployedSystemId(DeployedSystemId deployedSystemId) {\r
- this.deployedSystemId = deployedSystemId;\r
- }\r
-\r
- @Override\r
- public boolean equals(Object obj) {\r
- return value.toString().equals(obj.toString());\r
- }\r
-\r
- @Override\r
- public String toString() {\r
- return value.toString();\r
- }\r
-\r
- Long getTid() {\r
- return tid;\r
- }\r
-\r
- void setTid(Long tid) {\r
- this.tid = tid;\r
- }\r
-\r
-}\r
+++ /dev/null
-package org.argeo.slc.core.test;\r
-\r
-import org.argeo.slc.core.deploy.DeployedSystemId;\r
-\r
-/**\r
- * The unique id referencing a test result.\r
- * \r
- * @deprecated\r
- */\r
-public interface TestResultId {\r
- /** Gets the id of the related deployed system. */\r
- public DeployedSystemId getDeployedSystemId();\r
-\r
-}\r
package org.argeo.slc.core.test;\r
\r
import org.argeo.slc.core.deploy.DeployedSystem;\r
-import org.argeo.slc.core.process.SlcExecution;\r
\r
public class TestRunDescriptor {\r
private String testRunUuid;\r
\r
import org.apache.commons.logging.Log;\r
import org.apache.commons.logging.LogFactory;\r
-\r
import org.argeo.slc.core.structure.SimpleSElement;\r
import org.argeo.slc.core.structure.StructureAware;\r
import org.argeo.slc.core.structure.StructureElement;\r
import org.argeo.slc.core.structure.StructureElementProvider;\r
-import org.argeo.slc.core.structure.StructurePath;\r
import org.argeo.slc.core.structure.StructureRegistry;\r
import org.argeo.slc.core.structure.tree.TreeSPath;\r
import org.argeo.slc.core.test.TestDefinition;\r
package org.argeo.slc.core.test.tree.htmlreport;\r
\r
import java.io.IOException;\r
-import java.io.PrintWriter;\r
-import java.io.StringWriter;\r
import java.util.Date;\r
import java.util.SortedMap;\r
import java.util.TreeMap;\r
\r
import org.apache.commons.io.FileUtils;\r
-import org.apache.commons.io.IOUtils;\r
import org.apache.commons.logging.Log;\r
import org.apache.commons.logging.LogFactory;\r
-\r
import org.argeo.slc.core.structure.StructureElement;\r
import org.argeo.slc.core.structure.StructureRegistry;\r
import org.argeo.slc.core.structure.tree.TreeSPath;\r
import java.util.Map;\r
\r
import org.argeo.slc.core.SlcException;\r
-import org.argeo.slc.core.process.SlcExecution;\r
import org.argeo.slc.core.structure.StructureElement;\r
import org.argeo.slc.core.structure.tree.TreeSPath;\r
import org.argeo.slc.core.test.SimpleResultPart;\r
\r
import org.argeo.slc.core.SlcException;\r
import org.argeo.slc.core.build.Distribution;\r
+import org.argeo.slc.core.deploy.DeploymentData;\r
+import org.argeo.slc.core.deploy.TargetData;\r
import org.springframework.core.io.Resource;\r
\r
public class ApacheHttpdServer implements WebServer {\r
return null;\r
}\r
\r
+ public DeploymentData getDeploymentData() {\r
+ // TODO Auto-generated method stub\r
+ return null;\r
+ }\r
+\r
+ public TargetData getTargetData() {\r
+ // TODO Auto-generated method stub\r
+ return null;\r
+ }\r
+\r
}\r
import org.argeo.slc.core.build.Distribution;\r
import org.argeo.slc.core.deploy.DeployEnvironment;\r
import org.argeo.slc.core.deploy.DeployedSystem;\r
+import org.argeo.slc.core.deploy.Deployment;\r
import org.argeo.slc.core.deploy.DeploymentData;\r
-import org.argeo.slc.core.deploy.ExecutableDeployment;\r
import org.argeo.slc.core.deploy.TargetData;\r
\r
-public class HttpdApplicationDeployment implements ExecutableDeployment {\r
+public class HttpdApplicationDeployment implements Deployment {\r
private static final Log log = LogFactory\r
.getLog(HttpdApplicationDeployment.class);\r
\r
\r
public void execute() {\r
try {\r
- deployEnvironment.unpackTo(getDistribution(), targetData\r
+ deployEnvironment.unpackTo(distribution, targetData\r
.getTargetRootLocation(), null);\r
- \r
+\r
// FIXME: make it generic\r
String deployDataPath = targetData.getTargetRootLocation()\r
.getCanonicalPath();\r
- \r
- deployEnvironment.unpackTo(getDeploymentData(), new File(\r
- deployDataPath), null);\r
+\r
+ deployEnvironment.unpackTo(deploymentData,\r
+ new File(deployDataPath), null);\r
deployedSystem = new SimpleHttpdApplication();\r
deployedSystem.setTargetData(targetData);\r
\r
+ log.info("Deployed " + distribution + " to " + targetData);\r
} catch (Exception e) {\r
- throw new SlcException("Cannot deploy " + deploymentData + " to "\r
+ throw new SlcException("Cannot deploy " + distribution + " to "\r
+ targetData, e);\r
}\r
\r
return deployedSystem;\r
}\r
\r
- public DeploymentData getDeploymentData() {\r
- return deploymentData;\r
- }\r
-\r
- public TargetData getTargetData() {\r
- return targetData;\r
- }\r
-\r
- public Distribution getDistribution() {\r
- return distribution;\r
- }\r
-\r
public void setDistribution(Distribution distribution) {\r
this.distribution = distribution;\r
}\r
import java.net.URL;\r
\r
import org.argeo.slc.core.build.Distribution;\r
+import org.argeo.slc.core.deploy.DeploymentData;\r
\r
public class SimpleHttpdApplication implements WebApplication {\r
private HttpdApplicationTargetData targetData;\r
return distribution;\r
}\r
\r
+ public DeploymentData getDeploymentData() {\r
+ // TODO Auto-generated method stub\r
+ return null;\r
+ }\r
+\r
}\r
--- /dev/null
+package org.argeo.slc.support.deploy.db;
+
+import java.sql.Connection;
+
+public interface DbModel {
+ public void createSchema(Connection connection);
+}
--- /dev/null
+package org.argeo.slc.support.deploy.db;\r
+\r
+import java.sql.SQLException;\r
+\r
+import org.apache.commons.logging.Log;\r
+import org.apache.commons.logging.LogFactory;\r
+import org.argeo.slc.core.SlcException;\r
+import org.argeo.slc.core.UnsupportedException;\r
+import org.argeo.slc.core.build.Distribution;\r
+import org.argeo.slc.core.deploy.DeployedSystem;\r
+import org.argeo.slc.core.deploy.Deployment;\r
+import org.argeo.slc.core.deploy.DeploymentData;\r
+import org.argeo.slc.core.deploy.TargetData;\r
+import org.dbunit.DataSourceDatabaseTester;\r
+import org.dbunit.DatabaseUnitException;\r
+import org.dbunit.IDatabaseTester;\r
+import org.dbunit.database.IDatabaseConnection;\r
+import org.dbunit.dataset.IDataSet;\r
+import org.dbunit.operation.DatabaseOperation;\r
+\r
+public class DbUnitDeployment implements Deployment {\r
+ private static Log log = LogFactory.getLog(DbUnitDeployment.class);\r
+\r
+ private JdbcAware mxDatabase;\r
+ private DbUnitDeploymentData deploymentData;\r
+ private DbModel dbModel;\r
+\r
+ public void execute() {\r
+ try {\r
+ IDatabaseTester databaseTester = new DataSourceDatabaseTester(\r
+ mxDatabase.getDataSource());\r
+ databaseTester.setSetUpOperation(new DatabaseOperation() {\r
+\r
+ @Override\r
+ public void execute(IDatabaseConnection connection,\r
+ IDataSet dataSet) throws DatabaseUnitException,\r
+ SQLException {\r
+ if (dbModel != null) {\r
+ dbModel.createSchema(connection.getConnection());\r
+ DatabaseOperation.INSERT.execute(connection, dataSet);\r
+ } else {\r
+ DatabaseOperation.UPDATE.execute(connection, dataSet);\r
+ }\r
+ }\r
+\r
+ });\r
+ databaseTester.setDataSet(deploymentData.createDataSet());\r
+ databaseTester.onSetup();\r
+ databaseTester.onTearDown();\r
+\r
+ log.info("Database deployed.");\r
+ } catch (Exception e) {\r
+ throw new SlcException("Could not initialize the database", e);\r
+ }\r
+ }\r
+\r
+ public DeployedSystem getDeployedSystem() {\r
+ // TODO: think of a more generic approach. MxDtaabse deployed system?\r
+ // (with deployment id etc.)\r
+ throw new UnsupportedException("Method not supported");\r
+ }\r
+\r
+ public void setDbModel(DbModel dbModel) {\r
+ this.dbModel = dbModel;\r
+ }\r
+\r
+ public void setDeploymentData(DeploymentData deploymentData) {\r
+ this.deploymentData = (DbUnitDeploymentData) deploymentData;\r
+ }\r
+\r
+ public void setTargetData(TargetData targetData) {\r
+ this.mxDatabase = (JdbcAware) targetData;\r
+\r
+ }\r
+\r
+ public void setDistribution(Distribution distribution) {\r
+ throw new UnsupportedException("Method not supported");\r
+ }\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.support.deploy.db;\r
+\r
+import java.io.InputStream;\r
+\r
+import org.argeo.slc.core.SlcException;\r
+import org.argeo.slc.core.deploy.DeploymentData;\r
+import org.dbunit.dataset.IDataSet;\r
+import org.dbunit.dataset.xml.FlatXmlDataSet;\r
+import org.springframework.core.io.Resource;\r
+\r
+public class DbUnitDeploymentData implements DeploymentData{\r
+ private Resource dataSetLocation;\r
+\r
+ public IDataSet createDataSet(){\r
+ try {\r
+ InputStream in = dataSetLocation.getInputStream();\r
+ IDataSet dataSet = new FlatXmlDataSet(in);\r
+ in.close();\r
+ return dataSet;\r
+ } catch (Exception e) {\r
+ throw new SlcException("Cannot create data set", e);\r
+ }\r
+\r
+ }\r
+ \r
+ public void setDataSetLocation(Resource dataSetLocation) {\r
+ this.dataSetLocation = dataSetLocation;\r
+ }\r
+ \r
+ \r
+}\r
--- /dev/null
+package org.argeo.slc.support.deploy.db;
+
+import javax.sql.DataSource;
+
+public interface JdbcAware {
+ public DataSource getDataSource();
+}
--- /dev/null
+package org.argeo.slc.support.deploy.db;
+
+import javax.sql.DataSource;
+
+import org.argeo.slc.core.UnsupportedException;
+import org.argeo.slc.core.build.Distribution;
+import org.argeo.slc.core.deploy.AbstractDeployedSystem;
+import org.argeo.slc.core.deploy.DeployedSystem;
+import org.argeo.slc.core.deploy.DeploymentData;
+import org.argeo.slc.core.deploy.TargetData;
+
+public class SimpleJdbcDatabase extends AbstractDeployedSystem implements
+ JdbcAware {
+ private DataSource dataSource;
+
+ public String getDeployedSystemId() {
+ return dataSource.toString();
+ }
+
+ public DataSource getDataSource() {
+ return dataSource;
+ }
+
+ public void setDataSource(DataSource dataSource) {
+ this.dataSource = dataSource;
+ }
+}
\r
import org.argeo.slc.core.build.Distribution;\r
import org.argeo.slc.core.deploy.DeployedSystem;\r
+import org.argeo.slc.core.deploy.DeploymentData;\r
+import org.argeo.slc.core.deploy.TargetData;\r
import org.argeo.slc.core.process.SlcExecution;\r
import org.argeo.slc.core.process.SlcExecutionStep;\r
import org.argeo.slc.core.structure.SimpleSElement;\r
public Distribution getDistribution() {\r
return null;\r
}\r
+\r
+ public DeploymentData getDeploymentData() {\r
+ // TODO Auto-generated method stub\r
+ return null;\r
+ }\r
+\r
+ public TargetData getTargetData() {\r
+ // TODO Auto-generated method stub\r
+ return null;\r
+ }\r
+\r
});\r
testRun.notifySlcExecution(slcExecution);\r
\r
return partFailed;\r
}\r
\r
- public static ResultPartRequest createSimpleResultPartRequest(TreeTestResult ttr) {\r
+ public static ResultPartRequest createSimpleResultPartRequest(\r
+ TreeTestResult ttr) {\r
TreeSPath path = ttr.getCurrentPath();\r
PartSubList lst = ttr.getResultParts().get(path);\r
SimpleResultPart part = (SimpleResultPart) lst.getParts().get(2);\r
package org.argeo.slc.core.process;\r
\r
import java.io.IOException;\r
-import java.io.InputStream;\r
import java.io.StringReader;\r
-import java.io.StringWriter;\r
import java.text.SimpleDateFormat;\r
import java.util.UUID;\r
\r
-import javax.xml.transform.stream.StreamResult;\r
import javax.xml.transform.stream.StreamSource;\r
\r
import org.apache.commons.io.IOUtils;\r
import org.argeo.slc.unit.AbstractSpringTestCase;\r
import org.argeo.slc.unit.UnitXmlUtils;\r
import org.argeo.slc.unit.process.SlcExecutionTestUtils;\r
-\r
import org.springframework.oxm.Marshaller;\r
import org.springframework.oxm.Unmarshaller;\r
import org.springframework.xml.transform.StringResult;\r
import org.springframework.xml.transform.StringSource;\r
import org.springframework.xml.validation.XmlValidator;\r
-import org.springframework.xml.xsd.XsdSchema;\r
\r
public class SlcExecutionCastorTest extends AbstractSpringTestCase {\r
private Log log = LogFactory.getLog(getClass());\r
package org.argeo.slc.core.test.tree;\r
\r
-import org.springframework.oxm.Marshaller;\r
-import org.springframework.oxm.Unmarshaller;\r
-import org.springframework.xml.transform.StringResult;\r
-import org.springframework.xml.transform.StringSource;\r
-import org.springframework.xml.validation.XmlValidator;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-\r
import static org.argeo.slc.unit.UnitUtils.assertDateSec;\r
import static org.argeo.slc.unit.test.tree.TreeTestResultTestUtils.createCompleteTreeTestResult;\r
import static org.argeo.slc.unit.test.tree.TreeTestResultTestUtils.createSimpleResultPartRequest;\r
\r
-import org.argeo.slc.core.structure.tree.TreeSPath;\r
-import org.argeo.slc.core.test.SimpleResultPart;\r
+import org.apache.commons.logging.Log;\r
+import org.apache.commons.logging.LogFactory;\r
import org.argeo.slc.msg.test.tree.CloseTreeTestResultRequest;\r
import org.argeo.slc.msg.test.tree.CreateTreeTestResultRequest;\r
import org.argeo.slc.msg.test.tree.ResultPartRequest;\r
import org.argeo.slc.unit.AbstractSpringTestCase;\r
import org.argeo.slc.unit.UnitXmlUtils;\r
import org.argeo.slc.unit.test.tree.UnitTestTreeUtil;\r
+import org.springframework.oxm.Marshaller;\r
+import org.springframework.oxm.Unmarshaller;\r
+import org.springframework.xml.transform.StringResult;\r
+import org.springframework.xml.transform.StringSource;\r
+import org.springframework.xml.validation.XmlValidator;\r
\r
public class TreeTestResultCastorTest extends AbstractSpringTestCase {\r
private Log log = LogFactory.getLog(getClass());\r