From: <st...@us...> - 2009-09-14 16:00:58
|
Revision: 7849 http://smartfrog.svn.sourceforge.net/smartfrog/?rev=7849&view=rev Author: steve_l Date: 2009-09-14 16:00:39 +0000 (Mon, 14 Sep 2009) Log Message: ----------- SFOS-1279 Create "Farmer" interface for talking (remotely) to a cluster farmer -add Mock and EC2 impls Modified Paths: -------------- trunk/core/components/ec2/build.xml trunk/core/components/ec2/src/org/smartfrog/services/amazon/ec2/Ec2ClusterFarmerImpl.java trunk/core/components/ec2/src/org/smartfrog/services/farmer/AbstractClusterFarmer.java trunk/core/components/ec2/src/org/smartfrog/services/farmer/ClusterFarmer.java trunk/core/components/ec2/src/org/smartfrog/services/farmer/ClusterNode.java trunk/core/components/ec2/src/org/smartfrog/services/farmer/MockClusterFarmerImpl.java trunk/core/components/ec2/src/org/smartfrog/services/farmer/components.sf trunk/core/components/ec2/test/org/smartfrog/services/amazon/test/components.sf Added Paths: ----------- trunk/core/components/ec2/src/org/smartfrog/services/farmer/FarmCustomer.java trunk/core/components/ec2/src/org/smartfrog/services/farmer/FarmCustomerImpl.java trunk/core/components/ec2/src/org/smartfrog/services/farmer/example.sf trunk/core/components/ec2/test/org/smartfrog/services/farmer/test/system/ trunk/core/components/ec2/test/org/smartfrog/services/farmer/test/system/FarmerTest.java trunk/core/components/ec2/test/org/smartfrog/services/farmer/test/system/components.sf trunk/core/components/ec2/test/org/smartfrog/services/farmer/test/system/testFarmCreate.sf trunk/core/components/ec2/test/org/smartfrog/services/farmer/test/system/testFarmCreateBounded.sf trunk/core/components/ec2/test/org/smartfrog/services/farmer/test/system/testFarmCreateNoRoom.sf Modified: trunk/core/components/ec2/build.xml =================================================================== --- trunk/core/components/ec2/build.xml 2009-09-14 15:18:02 UTC (rev 7848) +++ trunk/core/components/ec2/build.xml 2009-09-14 16:00:39 UTC (rev 7849) @@ -41,10 +41,12 @@ <!--very long test timeout to allow for startup delays--> <property name="test.timeout.execute" value="120000" /> <property name="test.timeout.startup" value="${test.timeout.execute}" /> - <property name="application.name" value="ec2-demo" /> - <property name="deploy.sf" value="org/smartfrog/services/amazon/demo.sf" /> + <!--<property name="application.name" value="ec2" />--> + <property name="mockfarmer.sf" value="org/smartfrog/services/farmer/example.sf" /> + <property name="deploy.sf" value="${mockfarmer.sf}" /> + <echo message="==================================================================="/> <echo message="= ${ant.project.name}"/> @@ -81,4 +83,12 @@ Not found: ${test.testwar.war} </fail> </target> + + <target name="farmer" depends="ready-to-deploy" + description="Deploy a mock farm manager" > + <deploy> + <application name="farmer" + descriptor="/${mockfarmer.sf}"/> + </deploy> + </target> </project> \ No newline at end of file Modified: trunk/core/components/ec2/src/org/smartfrog/services/amazon/ec2/Ec2ClusterFarmerImpl.java =================================================================== --- trunk/core/components/ec2/src/org/smartfrog/services/amazon/ec2/Ec2ClusterFarmerImpl.java 2009-09-14 15:18:02 UTC (rev 7848) +++ trunk/core/components/ec2/src/org/smartfrog/services/amazon/ec2/Ec2ClusterFarmerImpl.java 2009-09-14 16:00:39 UTC (rev 7849) @@ -58,4 +58,9 @@ public ClusterNode lookupByHostname(String hostname) throws IOException, SmartFrogException { return null; } + + @Override + public int deleteAll() throws IOException, SmartFrogException { + return 0; + } } Modified: trunk/core/components/ec2/src/org/smartfrog/services/farmer/AbstractClusterFarmer.java =================================================================== --- trunk/core/components/ec2/src/org/smartfrog/services/farmer/AbstractClusterFarmer.java 2009-09-14 15:18:02 UTC (rev 7848) +++ trunk/core/components/ec2/src/org/smartfrog/services/farmer/AbstractClusterFarmer.java 2009-09-14 16:00:39 UTC (rev 7849) @@ -28,14 +28,18 @@ /** * Base class for cluster farmer implementations */ -public abstract class AbstractClusterFarmer extends PrimImpl implements ClusterFarmer { +public class AbstractClusterFarmer extends PrimImpl { + + /** {@value} */ + public static final String WRONG_MACHINE_COUNT + = "The maximum number of machines requested was less than the minimum"; protected AbstractClusterFarmer() throws RemoteException { } protected void validateClusterRange(int min, int max) throws SmartFrogException { if (max < min) { - throw new SmartFrogException("The maximum number of machines requested was less than the minimum"); + throw new SmartFrogException(WRONG_MACHINE_COUNT); } } } Modified: trunk/core/components/ec2/src/org/smartfrog/services/farmer/ClusterFarmer.java =================================================================== --- trunk/core/components/ec2/src/org/smartfrog/services/farmer/ClusterFarmer.java 2009-09-14 15:18:02 UTC (rev 7848) +++ trunk/core/components/ec2/src/org/smartfrog/services/farmer/ClusterFarmer.java 2009-09-14 16:00:39 UTC (rev 7849) @@ -70,18 +70,35 @@ */ public void delete(ClusterNode[] nodes) throws IOException, SmartFrogException; + /** * Delete all nodes in a specific role. * This is an async operation. * @param role role of the nodes - * @return the number deleted + * @return the number scheduled for deletion * @throws IOException IO/network problems * @throws SmartFrogException other problems */ public int deleteAllInRole(String role) throws IOException, SmartFrogException; + /** + * Shut down everything. + * All nodes are shut down, regardless of role. + * + * You can get into trouble here if the farm controller is on a node manageable in the same list. + * Safer to delete by role + * + * @return the number scheduled for deletion + * @throws IOException IO/network problems + * @throws SmartFrogException other problems + */ + + public int deleteAll() + throws IOException, SmartFrogException; + + /** * Get a list of nodes * @return a possibly empty list of nodes * @throws IOException IO/network problems Modified: trunk/core/components/ec2/src/org/smartfrog/services/farmer/ClusterNode.java =================================================================== --- trunk/core/components/ec2/src/org/smartfrog/services/farmer/ClusterNode.java 2009-09-14 15:18:02 UTC (rev 7848) +++ trunk/core/components/ec2/src/org/smartfrog/services/farmer/ClusterNode.java 2009-09-14 16:00:39 UTC (rev 7849) @@ -22,6 +22,9 @@ import java.io.Serializable; +/** + * Serializable representation of a cluster node + */ public final class ClusterNode implements Serializable { private String id; @@ -84,7 +87,7 @@ /** * Hash code comes from the ID - * @return + * @return the hash code's ID */ @Override public int hashCode() { Added: trunk/core/components/ec2/src/org/smartfrog/services/farmer/FarmCustomer.java =================================================================== --- trunk/core/components/ec2/src/org/smartfrog/services/farmer/FarmCustomer.java (rev 0) +++ trunk/core/components/ec2/src/org/smartfrog/services/farmer/FarmCustomer.java 2009-09-14 16:00:39 UTC (rev 7849) @@ -0,0 +1,34 @@ +/* (C) Copyright 2009 Hewlett-Packard Development Company, LP + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +For more information: www.smartfrog.org + +*/ +package org.smartfrog.services.farmer; + +import java.rmi.Remote; + +/** + * Created 14-Sep-2009 13:44:19 + */ + +public interface FarmCustomer extends Remote { + String ATTR_ROLE = "role"; + String ATTR_DELETE_ON_TERMINATE = "deleteOnTerminate"; + String ATTR_FARMER = "farmer"; + String ATTR_MIN = "min"; + String ATTR_MAX = "max"; +} Added: trunk/core/components/ec2/src/org/smartfrog/services/farmer/FarmCustomerImpl.java =================================================================== --- trunk/core/components/ec2/src/org/smartfrog/services/farmer/FarmCustomerImpl.java (rev 0) +++ trunk/core/components/ec2/src/org/smartfrog/services/farmer/FarmCustomerImpl.java 2009-09-14 16:00:39 UTC (rev 7849) @@ -0,0 +1,129 @@ +/* (C) Copyright 2009 Hewlett-Packard Development Company, LP + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +For more information: www.smartfrog.org + +*/ +package org.smartfrog.services.farmer; + +import org.smartfrog.sfcore.workflow.eventbus.EventPrimImpl; +import org.smartfrog.sfcore.common.SmartFrogException; +import org.smartfrog.sfcore.common.SmartFrogLivenessException; +import org.smartfrog.sfcore.common.SmartFrogDeploymentException; +import org.smartfrog.sfcore.prim.Prim; +import org.smartfrog.sfcore.prim.TerminationRecord; +import org.smartfrog.sfcore.prim.PrimImpl; +import org.smartfrog.sfcore.utils.ComponentHelper; + +import java.rmi.RemoteException; +import java.io.IOException; +import java.util.Map; +import java.util.HashMap; + +/** + * This is a workflow component that is bound to a farmer, and which creates/destroys nodes through its lifecycle. + * + * It is primarily for testing, but it can be used in production + */ + +public class FarmCustomerImpl extends PrimImpl implements FarmCustomer { + protected ClusterFarmer farmer; + private ClusterNode[] nodes = new ClusterNode[0]; + protected String role; + protected int min; + protected int max; + boolean deleteOnTerminate; + + public FarmCustomerImpl() throws RemoteException { + } + + + @Override + public synchronized void sfStart() throws SmartFrogException, RemoteException { + super.sfStart(); + role = sfResolve(ATTR_ROLE, "", true); + min = sfResolve(ATTR_MIN, 0, true); + max = sfResolve(ATTR_MAX, 0, true); + deleteOnTerminate = sfResolve(ATTR_DELETE_ON_TERMINATE, true, true); + farmer = (ClusterFarmer) sfResolve(ATTR_FARMER, (Prim) null, true); + + if (max > 0) { + try { + ClusterNode[] nodes = farmer.create(role, min, max); + this.nodes = nodes; + } catch (RemoteException e) { + throw e; + } catch (IOException e) { + throw SmartFrogException.forward(e); + } + } + int created = nodes.length; + sfReplaceAttribute("created", created); + String info = "Created " + created + " nodes of role " + role; + sfLog().info(info); + //check the expected value + int expected = sfResolve("expected", -1, true); + if (expected >= 0 && expected != created) { + throw new SmartFrogDeploymentException(info + + " - instead of the expected number " + expected); + } + ComponentHelper helper = new ComponentHelper(this); + helper.sfSelfDetachAndOrTerminate(TerminationRecord.NORMAL, + info, + sfCompleteName, + null); + } + + @Override + public void sfPing(Object source) throws SmartFrogLivenessException, RemoteException { + super.sfPing(source); + try { + ClusterNode[] listed = farmer.list(role); + Map<String, ClusterNode> map = new HashMap<String, ClusterNode>(listed.length); + for (ClusterNode node : listed) { + map.put(node.getId(), node); + } + for (ClusterNode node : nodes) { + if (map.get(node.getId()) == null) { + throw new SmartFrogLivenessException("Cannot find entry for " + node); + } + } + } catch (RemoteException e) { + throw e; + } catch (SmartFrogLivenessException e) { + throw e; + } catch (IOException e) { + throw (SmartFrogLivenessException) SmartFrogLivenessException.forward(e); + } catch (SmartFrogException e) { + throw (SmartFrogLivenessException) SmartFrogLivenessException.forward(e); + } + } + + @Override + public void sfTerminateWith(TerminationRecord status) { + super.sfTerminateWith(status); + if (deleteOnTerminate) { + try { + farmer.delete(nodes); + } catch (IOException e) { + sfLog().info(e); + } catch (SmartFrogException e) { + sfLog().info(e); + } + } + nodes = null; + } +} Modified: trunk/core/components/ec2/src/org/smartfrog/services/farmer/MockClusterFarmerImpl.java =================================================================== --- trunk/core/components/ec2/src/org/smartfrog/services/farmer/MockClusterFarmerImpl.java 2009-09-14 15:18:02 UTC (rev 7848) +++ trunk/core/components/ec2/src/org/smartfrog/services/farmer/MockClusterFarmerImpl.java 2009-09-14 16:00:39 UTC (rev 7849) @@ -21,6 +21,8 @@ package org.smartfrog.services.farmer; import org.smartfrog.sfcore.common.SmartFrogException; +import org.smartfrog.sfcore.utils.ListUtils; +import org.smartfrog.sfcore.reference.Reference; import java.io.IOException; import java.rmi.RemoteException; @@ -29,6 +31,7 @@ import java.util.List; import java.util.Map; import java.util.HashMap; +import java.util.Vector; /** * This is a mock cluster, very inefficent, but as it is only for testing, there is no point adding any form of speedup, @@ -44,6 +47,10 @@ private Map<String, String> roles = new HashMap<String, String>(); private List<ClusterNode> nodes = new LinkedList<ClusterNode>(); + public static final String ATTR_ROLES = "roles"; + public static final String ATTR_CLUSTER_LIMIT = "clusterLimit"; + public static final String ATTR_DOMAIN = "domain"; + public static final String ATTR_EXTERNAL_DOMAIN = "externalDomain"; public MockClusterFarmerImpl() throws RemoteException { @@ -57,6 +64,23 @@ this.clusterLimit = clusterLimit; } + @Override + public synchronized void sfStart() throws SmartFrogException, RemoteException { + super.sfStart(); + Vector<String> roleList = ListUtils.resolveStringList(this, new Reference(ATTR_ROLES), false); + StringBuilder rolenames= new StringBuilder(); + for (String role : roleList) { + roles.put(role, role); + rolenames.append(role); + rolenames.append(" "); + } + clusterLimit = sfResolve(ATTR_CLUSTER_LIMIT, clusterLimit, true); + domain = sfResolve(ATTR_DOMAIN, "", true); + externalDomain = sfResolve(ATTR_EXTERNAL_DOMAIN, "", true); + sfLog().info("Creating Mock farmer with a limit of " + clusterLimit + + " and roles: " + rolenames); + } + /** * {@inheritDoc} * @@ -73,6 +97,7 @@ for (int i = 0; i < max; i++) { ClusterNode clusterInstance = createOneInstance(role); if (clusterInstance == null) { + //we have run out of space, but as it is in range, the overall operation will succeed break; } newnodes.add(clusterInstance); @@ -214,6 +239,18 @@ } } + /** + * {@inheritDoc} + * + * @throws IOException IO/network problems + * @throws SmartFrogException other problems + */ + @Override + public synchronized int deleteAll() throws IOException, SmartFrogException { + int deleted = nodes.size(); + nodes = new ArrayList<ClusterNode>(); + return deleted; + } /** * {@inheritDoc} Modified: trunk/core/components/ec2/src/org/smartfrog/services/farmer/components.sf =================================================================== --- trunk/core/components/ec2/src/org/smartfrog/services/farmer/components.sf 2009-09-14 15:18:02 UTC (rev 7848) +++ trunk/core/components/ec2/src/org/smartfrog/services/farmer/components.sf 2009-09-14 16:00:39 UTC (rev 7849) @@ -17,7 +17,7 @@ For more information: www.smartfrog.org */ - +#include "/org/smartfrog/components.sf" /* The farmer components aim to provide a standard way to remotely work with a farm. @@ -39,7 +39,32 @@ /** * A mock cluster farmer has a limited set of allowed roles, and a maximum cluster size. */ -MockClusterFarmer extends Prim { +MockClusterFarmer extends WorkflowPrim { sfClass "org.smartfrog.services.farmer.MockClusterFarmerImpl" + clusterLimit 1000; + //list of roles, empty list means all roles are allowed + roles []; + //name of the internal domain + domain "internal"; + //name of the external domain + externalDomain "external"; + +} + +FarmCustomer extends WorkflowPrim { + sfClass "org.smartfrog.services.farmer.FarmCustomerImpl"; + farmer TBD; + role ""; + deleteOnTerminate true; + min 1; + max min; + //this is updated with the real count of how many were created + created 0; + //if >=0, declare exactly how many you expect + expected -1; +} + +WorkflowFarmCustomer extends FarmCustomer { + sfShouldTerminate true; } \ No newline at end of file Added: trunk/core/components/ec2/src/org/smartfrog/services/farmer/example.sf =================================================================== --- trunk/core/components/ec2/src/org/smartfrog/services/farmer/example.sf (rev 0) +++ trunk/core/components/ec2/src/org/smartfrog/services/farmer/example.sf 2009-09-14 16:00:39 UTC (rev 7849) @@ -0,0 +1,29 @@ +/* (C) Copyright 2009 Hewlett-Packard Development Company, LP + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +For more information: www.smartfrog.org + +*/ +#include "/org/smartfrog/services/farmer/components.sf" + +/** + * a mock of a very small cluster + */ + +sfConfig extends MockClusterFarmer { + roles ["master","worker"]; + clusterLimit 20; +} Modified: trunk/core/components/ec2/test/org/smartfrog/services/amazon/test/components.sf =================================================================== --- trunk/core/components/ec2/test/org/smartfrog/services/amazon/test/components.sf 2009-09-14 15:18:02 UTC (rev 7848) +++ trunk/core/components/ec2/test/org/smartfrog/services/amazon/test/components.sf 2009-09-14 16:00:39 UTC (rev 7849) @@ -50,8 +50,8 @@ } IsEC2Enabled extends And { + ec2 IsEC2EnabledSet; aws IsAwsEnabled; - ec2 IsEC2EnabledSet; } Copied: trunk/core/components/ec2/test/org/smartfrog/services/farmer/test/system/FarmerTest.java (from rev 7846, trunk/core/components/ec2/test/org/smartfrog/services/amazon/s3/test/S3FilesTest.java) =================================================================== --- trunk/core/components/ec2/test/org/smartfrog/services/farmer/test/system/FarmerTest.java (rev 0) +++ trunk/core/components/ec2/test/org/smartfrog/services/farmer/test/system/FarmerTest.java 2009-09-14 16:00:39 UTC (rev 7849) @@ -0,0 +1,48 @@ +/* (C) Copyright 2007 Hewlett-Packard Development Company, LP + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +For more information: www.smartfrog.org + +*/ +package org.smartfrog.services.farmer.test.system; + +import org.smartfrog.test.DeployingTestBase; + +/** + * + * Created 30-Nov-2007 16:46:45 + * + */ + +public class FarmerTest extends DeployingTestBase { + public static final String FILES = "/org/smartfrog/services/farmer/test/system"; + + public FarmerTest(String name) { + super(name); + } + + public void testFarmCreate() throws Throwable { + expectSuccessfulTestRunOrSkip(FILES, "testFarmCreate"); + } + + public void testFarmCreateBounded() throws Throwable { + expectSuccessfulTestRunOrSkip(FILES, "testFarmCreateBounded"); + } + + public void testFarmCreateNoRoom() throws Throwable { + expectSuccessfulTestRunOrSkip(FILES, "testFarmCreateNoRoom"); + } +} \ No newline at end of file Added: trunk/core/components/ec2/test/org/smartfrog/services/farmer/test/system/components.sf =================================================================== --- trunk/core/components/ec2/test/org/smartfrog/services/farmer/test/system/components.sf (rev 0) +++ trunk/core/components/ec2/test/org/smartfrog/services/farmer/test/system/components.sf 2009-09-14 16:00:39 UTC (rev 7849) @@ -0,0 +1,99 @@ +/* (C) Copyright 2009 Hewlett-Packard Development Company, LP + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version.p + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +For more information: www.smartfrog.org + +*/ +#include "/org/smartfrog/services/assertions/components.sf" +#include "/org/smartfrog/services/farmer/components.sf" + +MockCluster extends MockClusterFarmer { + roles ["master","worker"]; + clusterLimit 20; + } + +ExpectFarmerDeploy extends ExpectDeploy { + + action MockCluster; + +} + + +testFarmCreate extends ExpectFarmerDeploy { + + tests extends Sequence { + + + master extends WorkflowFarmCustomer { + //this is the farmer + farmer LAZY action; + role "master"; + min 1; + expected 1; + } + + worker extends WorkflowFarmCustomer { + //this is the farmer + farmer LAZY action; + role "worker"; + min 10; + expected 10; + } + + worker2 extends WorkflowFarmCustomer { + //this is the farmer + farmer LAZY action; + role "worker"; + min 10; + expected 10; + } + + } +} + + +testFarmCreateBounded extends ExpectFarmerDeploy { + + tests extends Sequence { + + + master extends WorkflowFarmCustomer { + //this is the farmer + farmer LAZY action; + role "master"; + min 1; + max 100; + expected farmer:clusterLimit; + } + } +} + +testFarmCreateNoRoom extends ExpectDeployFailure { + + description "create a mock cluster, and, in parallel, a farm customer that demands too many items" + + action extends Parallel { + farmer MockCluster; + + master extends WorkflowFarmCustomer { + farmer LAZY action:farmer; + role "master"; + min 100; + max 100; + } + } +} + Added: trunk/core/components/ec2/test/org/smartfrog/services/farmer/test/system/testFarmCreate.sf =================================================================== --- trunk/core/components/ec2/test/org/smartfrog/services/farmer/test/system/testFarmCreate.sf (rev 0) +++ trunk/core/components/ec2/test/org/smartfrog/services/farmer/test/system/testFarmCreate.sf 2009-09-14 16:00:39 UTC (rev 7849) @@ -0,0 +1,22 @@ +/* (C) Copyright 2009 Hewlett-Packard Development Company, LP + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +For more information: www.smartfrog.org + +*/ +#include "/org/smartfrog/services/farmer/test/system/components.sf" + +sfConfig extends testFarmCreate; Added: trunk/core/components/ec2/test/org/smartfrog/services/farmer/test/system/testFarmCreateBounded.sf =================================================================== --- trunk/core/components/ec2/test/org/smartfrog/services/farmer/test/system/testFarmCreateBounded.sf (rev 0) +++ trunk/core/components/ec2/test/org/smartfrog/services/farmer/test/system/testFarmCreateBounded.sf 2009-09-14 16:00:39 UTC (rev 7849) @@ -0,0 +1,22 @@ +/* (C) Copyright 2009 Hewlett-Packard Development Company, LP + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +For more information: www.smartfrog.org + +*/ +#include "/org/smartfrog/services/farmer/test/system/components.sf" + +sfConfig extends testFarmCreateBounded; Added: trunk/core/components/ec2/test/org/smartfrog/services/farmer/test/system/testFarmCreateNoRoom.sf =================================================================== --- trunk/core/components/ec2/test/org/smartfrog/services/farmer/test/system/testFarmCreateNoRoom.sf (rev 0) +++ trunk/core/components/ec2/test/org/smartfrog/services/farmer/test/system/testFarmCreateNoRoom.sf 2009-09-14 16:00:39 UTC (rev 7849) @@ -0,0 +1,22 @@ +/* (C) Copyright 2009 Hewlett-Packard Development Company, LP + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +For more information: www.smartfrog.org + +*/ +#include "/org/smartfrog/services/farmer/test/system/components.sf" + +sfConfig extends testFarmCreateNoRoom; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |