public void testCloning() throws Exception
{
ListedHashTree original = new ListedHashTree();
GenericController controller = new GenericController();
controller.setName("controller");
Arguments args = new Arguments();
args.setName("args");
TestPlan plan = new TestPlan();
plan.addParameter("server", "jakarta");
original.add(controller, args);
original.add(plan);
ResultCollector listener = new ResultCollector();
listener.setName("Collector");
original.add(controller, listener);
TreeCloner cloner = new TreeCloner();
original.traverse(cloner);
ListedHashTree newTree = cloner.getClonedTree();
assertTrue(original != newTree);
assertEquals(original.size(), newTree.size());
assertEquals(
original.getTree(original.getArray()[0]).size(),
newTree.getTree(newTree.getArray()[0]).size());
assertTrue(original.getArray()[0] != newTree.getArray()[0]);
assertEquals(
((GenericController) original.getArray()[0]).getName(),
((GenericController) newTree.getArray()[0]).getName());
assertSame(
original.getTree(original.getArray()[0]).getArray()[1],
newTree.getTree(newTree.getArray()[0]).getArray()[1]);
TestPlan clonedTestPlan = (TestPlan) newTree.getArray()[1];
clonedTestPlan.setRunningVersion(true);
clonedTestPlan.recoverRunningVersion();
assertTrue(
!plan
.getProperty(TestPlan.USER_DEFINED_VARIABLES)
.isRunningVersion());
assertTrue(
clonedTestPlan
.getProperty(TestPlan.USER_DEFINED_VARIABLES)
.isRunningVersion());
Arguments vars =
(Arguments) plan
.getProperty(TestPlan.USER_DEFINED_VARIABLES)
.getObjectValue();
PropertyIterator iter =
((CollectionProperty) vars.getProperty(Arguments.ARGUMENTS))
.iterator();
while (iter.hasNext())
{
JMeterProperty argProp = iter.next();
assertTrue(!argProp.isRunningVersion());
assertTrue(argProp.getObjectValue() instanceof Argument);
Argument arg = (Argument)argProp.getObjectValue();
arg.setValue("yahoo");
assertEquals("yahoo",arg.getValue());
}
vars =
(Arguments) clonedTestPlan
.getProperty(TestPlan.USER_DEFINED_VARIABLES)
.getObjectValue();
iter = vars.propertyIterator();
while (iter.hasNext())
{
assertTrue(iter.next().isRunningVersion());
}
}