Skip to main content

ATG DUST: How to invoke OOB Droplets


ATG DUST(Dynamo Unit and System Tests) is a framework for building JUnit tests for applications built on the ATG Dynamo platform. This framework allows one to quickly write test code that depends up Nucleus or ATG Repositories.

You can download the latest version of ATG DUST from http://sourceforge.net/projects/atgdust/. It provides both both src and lib files.

To write an ATG JUNIT testcase to invoke an existing OOB Droplet, follow the following steps :

  1. Create an Eclipse project with the downloaded src and lib files.
  2. Give class path to the follwing files : <ATG_Folder>\das\lib\classes.jar , <ATG_Folder>\dps\lib\classes.jar  and <ATG_Folder>\das\lib\resources.jar ,  <ATG_Folder>\dps\lib\resources.jar
  3. Create an environment variable DUST_HOME and point it to your ATG junit folder, for example: D:\SonyTools\Atg_DUST_JUnitTest\java
  4. To compile the ATG DUST for ATG 2007 version, edit the downloaded DUST java src file atg.servlet.ServletTestUtils to correct the imports atg.test.io.ByteBufferInputStream; and atg.test.io.ByteBufferOutputStream;
  5. Create a folder named “licenseconfig” under DUST_HOME and copy the ATG License files from <ATG_Folder>\home\localconfig\ to this new licenseconfig folder.
  6. Create your test java file, for example find below the DropletInvokerTest.java to do the unit testing of the OOB droplets : /atg/dynamo/droplet/Switch  and /atg/dynamo/droplet/ForEach.
  7. Create a folder named \data\DropletInvokerTest\config\  in the  <DUST_HOME>\src folder if your test file is DropletInvokerTest.java
  8. After doing the build, execute your code by invoking Run as JUNIT Test from Eclipse.

     package com.mycompany.test;

     import java.io.IOException;
     import java.util.HashMap;
     import java.util.List;

     import javax.servlet.ServletException;

     import atg.droplet.DropletInvoker;
     import atg.droplet.DropletInvoker.DropletResult;
     import atg.droplet.DropletInvoker.RenderedOutputParameter;
     import atg.nucleus.Nucleus;
     import atg.nucleus.NucleusTestUtils;
     import atg.servlet.DynamoHttpServletRequest;
     import atg.servlet.ServletUtil;
     import atg.test.AtgDustCase;

     public class DropletInvokerTest extends AtgDustCase {
Nucleus mNucleus;
/**
* Start up Nucleus with Initial services
*/
protected void setUp() throws Exception {
 super.setUp();
 mNucleus = NucleusTestUtils.startNucleusWithModules(
new String[] {"DAS","DafEar"}, this.getClass(),
"/atg/dynamo/droplet/Switch");
}
/**
* Shut down Nucleus
*/
protected void tearDown() throws Exception {
super.tearDown();
ServletUtil.setCurrentRequest(null);
if (mNucleus != null) {
  NucleusTestUtils.shutdownNucleus(mNucleus);
  mNucleus = null;
 }
}
/** Test the DropletInvoker */
public void testInvoker() throws ServletException, IOException {
 doTestSwitch();
 doTestFor();
}
public void doTestSwitch() throws ServletException, IOException {
 DropletInvoker invoker = new DropletInvoker(mNucleus);
 DynamoHttpServletRequest request = invoker.getRequest();
 DropletResult result = null;
 request.setParameter("value", "foo");
 result = invoker.invokeDroplet("/atg/dynamo/droplet/Switch");
 assertNotNull("Make sure that foo got rendered",result.getRenderedOutputParameter("foo"));
 System.out.println("result.getRenderedOutputParameter(foo)-->"+ result.getRenderedOutputParameter("foo"));
}
public void doTestFor() throws ServletException, IOException {
 DropletInvoker invoker = new DropletInvoker(mNucleus);
 DynamoHttpServletRequest request = invoker.getRequest();
 DropletResult result = null;
 String[] strings = new String[] { "one", "two", "three", "four", "five" };
 HashMap<String, Object> params = new HashMap<String,Object>();
 params.put("array", strings);
 result = invoker.invokeDroplet("/atg/dynamo/droplet/ForEach", params);
 assertNotNull("Make sure output got rendered at least once",result.getRenderedOutputParameter("output", false));
 List<RenderedOutputParameter> listOutputs = result.getRenderedOutputParametersByName("output");
 assertEquals("Make sure output was rendered 5 times",5, listOutputs.size());
 for (int i = 0; i < strings.length; i++) {
   RenderedOutputParameter oparam = listOutputs.get(i);
   assertEquals("Should be the same as from the list ", oparam, result.getRenderedOutputParameter("output", i));
   System.out.println(" result.getRenderedOutputParameter(output, i)-->"+ result.getRenderedOutputParameter("output", i));
   assertEquals("Element should be our string", strings[i], (String)oparam.getFrameParameter("element"));
   System.out.println("(String)oparam.getFrameParameter(element)-->"+ (String)oparam.getFrameParameter("element"));
 }
}

Comments

  1. This comment has been removed by the author.

    ReplyDelete
  2. how to mock request and response for a formhandler in ATG Dust? Please explain

    ReplyDelete

Post a Comment

Popular posts from this blog

How to convert your Blogger Blog to PDF ?

You can use a website called "blogbooker" @  http://www.blogbooker.com/blogger.php   to convert your Blogger Blog to a PDF . Please find the steps below : 1. Save your blog as an xml using Blogger Settings - Other - Export Blog option 2. Go to the website " http://www.blogbooker.com/blogger.php " and select this XML , give your blog address and select the options like date range, page size, font, ... 3. Click the  "Create Your BlogBook" button to view and save your blog as PDF

ATG License Files and Oracle Software Delivery Cloud

Oracle no longer generates license keys that are specific to your IP address(es). Oracle now provides generic license files that enable you to fully utilize all of the features for which you are licensed. Please find the ATG License files for different ATG versions @ http://www.oracle.com/us/support/licensecodes/atg/index. @ Oracle Software Delivery Cloud , you can find downloads for all licensable Oracle products –> https://edelivery.oracle.com/ Please find below a screen shot for ATG products download :

Eclipse plug-in to create Class and Sequence diagrams

ModelGoon is an Eclipse plug-in avaiable for UML diagram generation from Java code. It can be used to generate Package Dependencies Diagram, Class Diagram, Interaction Diagram and Sequence Diagram. You coud get it from http://marketplace.eclipse.org/content/modelgoon-uml4java Read more about it and see some vedios about how to create the class and sequence diagram @ http://www.modelgoon.org/?tag=eclipse-plugin Find some snapshots below which gives an idea about the diagram generation.

ATG Product Catalog schema ER diagram

Check out the O rder schema ER-Diagram @   http://tips4ufromsony.blogspot.in/2012/02/atg-order-schema-er-diagram.html Check out the User Profile  schema ER-Diagram @ http://tips4ufromsony.blogspot.in/2012/03/atg-user-profile-schema-er-diagram.html If you would like to know the relationship between different Product Catalog tables, please find below screen shots of  Product Catalog schema ER Diagrams.

Eclipse plug-in : single java file compiler

At any point of time, you think about an Eclipse plug-in to compile a single java file in your Eclipse (as the Eclipse provide only the option for Build-All ) ? Here , I am giving the links to a plug-in, helping you to compile a single java file. Find the plug-in @ http://timealias.bplaced.net/eclipse2ant . Please find below some screen shots: