Unit Testing a Android Activity which contains a Runnable

In order to unit test an Android Activity to verify that the Runnable is called you need to add a call to waitForIdle to the Instrumentation, which is called when all Runnables have been executed.

Here is the activity that we are testing:

public class SplashScreenActivity extends Activity {

public final int SPLASH_DISPLAY_LENGTH = 1200;
 
   @Override
   public void onCreate(Bundle icicle) {
 super.onCreate(icicle);
 setContentView(R.layout.splash);

 new Handler().postDelayed(new Runnable() {

  public void run() {    
   Intent mainIntent = new Intent(SplashScreenActivity.this, NextActivity.class);
   startActivity(mainIntent);
   finish();
  }

 }, SPLASH_DISPLAY_LENGTH);
   }
}

Here is the method in the Unit Test Class:

public void testSubLaunch() {
        SplashScreenActivity mActivity = startActivity(new Intent(), null, null);
        getInstrumentation().waitForIdle(new Runnable() {
  public void run() {
   assertNotNull(getStartedActivityIntent());
   assertTrue(isFinishCalled());
  }         
        });    
    }

Why you should upgrade to Grails 1.3.5

I did a profile of my Grails application with JVisualVM running Grails 1.3.4 and then again running Grails 1.3.5.  What a difference!  The memory leak issue that was referred to here http://jira.codehaus.org/browse/GRAILS-6622 was fixed in the 1.3.5 release.  I believe that a similar memory leak was affecting my application as well.  Across the board, the application is faster and has a much smaller memory footprint.  I have attached a snapshot of the memory comparison for the two versions to this post.

Memory Comparison of Grails 1.3.4 and Grails 1.3.5

Adding HTTP Access Logging to Glassfish 3.0 Server

Recently I had the need to monitor the requests that were being sent to my Glassfish server. Here is the simple configuration change that needed to be done to the domain.xml file:

<configs>
<config name="server-config">
<http-service enabled="true"></http-service>
<access-log format="%client.name% %auth-user-name% %datetime% %request% %status% %response.length% %header.referer%"></access-log>
<virtual-server id="server" log="/mnt/httpd/logs/access" listeners="http-listener-1"></virtual-server>
<virtual-server id="__asadmin" listeners="admin-listener"></virtual-server>
....
</config>
</configs>

Sun's Documentation: Enabling Access Logging