David’s Thesis Blog


Update
October 13, 2008, 1:02 am
Filed under: Uncategorized

Just an update for what I have been doing. Since Dr Shiping is overseas he has informed us that our development is pretty much done.

Hence I am solely concentrating on documentation at the moment.

My intial goals are to complete a full draft of my written treatise. I am having slight difficulty is surpassing the minimal 10,000 word requirement for my written section. Since my project is a development project and not a research one.

After which is done, Ill complete the user manual and operations manual.



Week 8 Update
September 24, 2008, 6:39 am
Filed under: Uncategorized | Tags:

Due to illness I wasn’t able to attend the week 8 meeting at 3pm. However Naimul and Lenny was able to go and fill me in on what was required.

We also had a meeting with Shiping last week just before his overseas trip. He was happy with the development stage and instructed us wee can start the documentation part now.

We have split the work up into 3 distinct sections with little overlapping yet great degree harmony.

Me -

Java implementation and development side – Primarly the web service test and web server stress tests, may have time for an additional one.

Development wise I have made a data generator which can be used for all future tests and will be rewriting the ant build script for the final package.

Lenny -

Developing the .NET C# implementation and development. He has shown me his print result log development and is currently working on an ATM implementation.

Naimul -

Is developing additional features and function of the framework mainly the

get error rate , set error rate

get confidence level, set confidence level

This will provide a far more powerful degree of statistical analysis of the final results and the framework’s capabilities.

Since my development stages is the most complete, I will be starting to write the user and technical manuals and the general layout.



HttpTest.java
September 10, 2008, 2:08 pm
Filed under: Uncategorized

Have just finished the http GET implementation as requested by Dr Shiping from our last meeting. Some notes.

Currently the test class will as per usual run x threads each thread running for x amount of time generating clients. Each client will randomly extract a url from a list, parse the url with the java url class to extract the protocol (currently only supports http) the host and the port, if there is no port the default port of 80 will be used, and the filename to GET. The client will then connect to the host, sent the GET request and output the results to a file (this is optional). Finally resultlog is called and with a data report.

Some notes

  • Modified randomline class used in yahootest to be used with httptest, randomline can pretty much be used for implementation that may be random data, especially useful for an implementation of a POST test imo.
  • Found a neat use for the postrun() function as a place to increment a count++. This was used to serve as a way to output the files without conflicting filenames. Currently the filename for each output is host name + thread ID + counter.
  • Google blocks it and seems to lock you ip out for a few seconds.
  • Will publish code after, it is a bit more polished.

Meanwhile i will run the class on this blog to boost my hit counter.

Output example from the console -

BUILD SUCCESSFUL
Total time: 16 seconds
C:\PerfTester>ant test
Buildfile: build.xml

test:
     [java] test config fileName = C:\PerfTester\test.prop
     [java] Tester.init(C:\PerfTester\test.prop) called
     [java] — listing properties –
     [java] testName=Http
     [java] testWarmup=5
     [java] testCooldown=5
     [java] testClassName=HttpTester
     [java] testThreadNmuber=2
     [java] testRuntime=10000
     [java] Tester.run() called
     [java] testThreadNmuber = 2
     [java] To instance a test driver
     [java] HttpTester starting…
     [java] HttpTester starting…
     [java] Host: www.google.com Port: 80
     [java] Host: www.google.com Port: 80
     [java] Host: www.google.com Port: 80
     [java] Host: www.yahoo.com Port: 80
     [java] Host: www.java.com Port: 80
     [java] Host: www.google.com Port: 80
     [java] Host: www.usyd.edu.au Port: 80
     [java] Host: www.usyd.edu.au Port: 80
     [java] Host: www.yahoo.com Port: 80
     [java] Host: www.google.com Port: 80
     [java] Host: www.google.com Port: 80
     [java] Host: www.usyd.edu.au Port: 80
     [java] Host: www.usyd.edu.au Port: 80
     [java] Host: www.yahoo.com Port: 80
     [java] Host: www.java.com Port: 80
     [java] Host: www.google.com Port: 80
     [java] Host: www.java.com Port: 80
     [java] Host: www.google.com Port: 80
     [java] Host: www.java.com Port: 80
     [java] Host: www.usyd.edu.au Port: 80
     [java] Host: www.google.com Port: 80
     [java] Host: www.usyd.edu.au Port: 80
     [java] Host: www.usyd.edu.au Port: 80
     [java] Host: www.usyd.edu.au Port: 80
     [java] Host: www.google.com Port: 80
     [java] Host: www.yahoo.com Port: 80
     [java] Host: www.yahoo.com Port: 80
     [java] Host: www.google.com Port: 80
     [java] Host: www.yahoo.com Port: 80
     [java] Host: www.java.com Port: 80
     [java] Host: www.google.com Port: 80
     [java] Host: www.google.com Port: 80
     [java] Host: www.yahoo.com Port: 80
     [java] Host: www.yahoo.com Port: 80
     [java] Thread-0 : exited
     [java] Thread-1 : exited
     [java]
     [java] Tester.report() called
     [java] testName = Http
     [java] minValue = 78
     [java] aveValue = 619
     [java] maxValue = 4591
     [java] 80  1
     [java] 100 5
     [java] 340 1
     [java] 360 9
     [java] 380 2
     [java] 400 3
     [java] 480 1
     [java] 520 3
     [java] 540 3
     [java] 4520        1
     [java] 4600        1

BUILD SUCCESSFUL
Total time: 11 seconds
C:\PerfTester>



Draft Treatise and More to dos
September 8, 2008, 2:07 am
Filed under: Uncategorized

The draft treatise was handed in and while doing so I have finalized my two chapters.

  • Intro
  • Background
  • Development
  • Implementation
  • Conclusion

Developments

Will cover all improvements and modifications I make on the exisiting framework, at the moment this includes:

  • Confidence level functions
  • Data generator
  • xml resultlog

Possible inclusions

  • GUI
  • Real time graph generator
  • more ideas to come
  • A compare function – it will compare two resultslogs and give a detailed analysis of the comparison.

Developments will be done last and may even be developed side by side as implementation

Implementation

This is the core of the treatise as it is what Dr Shiping wishes we focus on. This section will include very detailed instruction and description guides on the implementation of the framework onto various softwares on various platforms and languages.

At the moment implementation includes

  • Webservice – Yahoo Search through JAVA
  • Webservice – Google search through C# .NET
  • Webpage/Web server – Random url – implemented through data generator

Future possibilities

  • A pre-deployment implementation – consisting of unfinished classes to show the testing of a software before completion.
  • Two identical programs – one written in ‘bad code’ and see if the testing framework can clearly show the differences in performance as expected.
  • Making .NET C# and Java versions of all implementations
  • Making a configurable form tester, allowing for easy adding/editing/deleting of form fields.


CSIRO Shipping meeting week 5
September 1, 2008, 2:47 am
Filed under: Uncategorized

Quick summary of the meeting with Dr Shipping in week 5.

  • Shipping was quiet happy with my implementation of of the framework onto the yahoo search web service.
  • He suggested an additional option of having the details of the test displayed, optional to the user, this is evidently a sensible idea in a real life testing scenario where there would be hundreds of threads running.
  • He was also very pleased with the random line class i wrote, as it would provide a very useful tool for simulating future test case scenarios, however I feel there still many improvements that can be made onto the class.
  • Shipping suggested I look into implementing the testing framework into simulating web browser interaction with web servers/sites. This is to help demonstrate the flexibility and power of his framework. Hence my next class would be to simutanteously test over 100 websites running 10 threads on each.
  • While incorporating the print result log class written by Lenny, however he said he is in the midst of upgrading the print result log function to printing to xml instead of just plain text.
  • Furthermore we will be getting a .NEt C# version of the framework and Lenny and me will be assigned to converting all the original java work into .NET to prove that the framework is is flexible and not just multi platform but also multi-language.

Will finish the rest of the summary in the next post.



YahooWebSearch Tester
August 28, 2008, 2:24 pm
Filed under: Uncategorized

The Yahoo Web Search tester class is completed. Below is an example output running on only 2 threads, also because I’m capped for the month the response times might seem a bit high.

Source code for class provided below aswell.

Output:

Microsoft Windows [Version 6.0.6001]
Copyright (c) 2006 Microsoft Corporation.  All rights reserved.


C:\PerfTester>ant test
Buildfile: build.xml

test:
     [java] test config fileName = C:\PerfTester\test.prop
     [java] Tester.init(C:\PerfTester\test.prop) called
     [java] — listing properties –
     [java] testName=Yahoo
     [java] testWarmup=5
     [java] testCooldown=5
     [java] testClassName=YahooTester
     [java] testThreadNmuber=2
     [java] testRuntime=10000
     [java] Tester.run() called
     [java] testThreadNmuber = 2
     [java] To instance a test driver
     [java]
     [java] Searching for: Devin
     [java] The number of query matches in the database: 33700000
     [java] The number of query matches returned: 10
     [java] The position of the first result in the overall search: 1
     [java] First Page title: MySpace.com – Devin the Dude – R.I.P. PIMP C, US -
 Rap / Hip Hop – www …
     [java] First Page url: http://www.myspace.com/devinthedude
     [java] First Page summary: MySpace music profile for Devin the Dude with to
ur dates, songs, videos, pictures, blogs, band information, downloads and more
     [java]
     [java] Searching for: Leticia
     [java] The number of query matches in the database: 11200000
     [java] The number of query matches returned: 10
     [java] The position of the first result in the overall search: 1
     [java] First Page title: Leticia, Colombia – Wikipedia, the free encycloped
ia
     [java] First Page url: http://en.wikipedia.org/wiki/Leticia,_Colombia
     [java] First Page summary: Leticia has long been Colombia’s shipping point
for tropical fishes for the aquarium trade. Leticia has approximately 37,000 inh
abitants on the left bank of the …
     [java]
     [java] Searching for: Tina
     [java] The number of query matches in the database: 155000000
     [java] The number of query matches returned: 10
     [java] The position of the first result in the overall search: 1
     [java] First Page title: Tina Pro
     [java] First Page url: http://www.tina.com/
     [java] First Page summary: Package for designing, analysing, and measuring
analog, digital, and mixed electronic circuits.
     [java]
     [java] Searching for: Kendall
     [java] The number of query matches in the database: 56100000
     [java] The number of query matches returned: 10
     [java] The position of the first result in the overall search: 1
     [java] First Page title: Home Page for Kendall Brands – Covidien
     [java] First Page url: http://www.kendallhq.com/
     [java] First Page summary: USA. Manufacturers of medical and consumer hygie
ne products. Converters … Kendall AMDÖ Wound Care Dressings COPAÖ Ultra-Soft F
oam Dressings KANGAROO ePUMPÖ …
     [java]
     [java] Searching for: Reid
     [java] The number of query matches in the database: 129000000
     [java] The number of query matches returned: 10
     [java] The position of the first result in the overall search: 1
     [java] First Page title: Senator Harry Reid
     [java] First Page url: http://reid.senate.gov/
     [java] First Page summary: Democratic senator from Nevada and Senate Majori
ty Leader.
     [java]
     [java] Searching for: Litzy
     [java] The number of query matches in the database: 149000
     [java] The number of query matches returned: 10
     [java] The position of the first result in the overall search: 1
     [java] First Page title: Litzy Dominguez – Wikipedia, the free encyclopedia

     [java] First Page url: http://en.wikipedia.org/wiki/Litzy
     [java] First Page summary: Litzy Online (in Spanish) Mas Transparente Litzy
 site (in Spanish) Litzy bio on Disco de Oro section at TVAzteca.com (in Spanish
) …
     [java]
     [java] Searching for: Saniya
     [java] The number of query matches in the database: 199000
     [java] The number of query matches returned: 10
     [java] The position of the first result in the overall search: 1
     [java] First Page title: Sania Mirza Wallpapers, Tennis Star Saniya Mirza’s
 Pics, Gallery and …
     [java] First Page url: http://www.saniyamirza.org/
     [java] First Page summary: Displays news, images and articles about the ten
nis player, including … Saniya Mirza l Wallpapers l Blog l Biography l Persona
l l The Player l Career l News …
     [java]
     [java] Searching for: Lydia
     [java] The number of query matches in the database: 50800000
     [java] The number of query matches returned: 10
     [java] The position of the first result in the overall search: 1
     [java] First Page title: Lydia – Wikipedia, the free encyclopedia
     [java] First Page url: http://en.wikipedia.org/wiki/Lydia
     [java] First Page summary: At its greatest extent, the Kingdom of Lydia cov
ered all of western Anatolia. … Since Ionia was between historical Lydia and t
he sea, the Lydians had no …
     [java] Thread-0 : exited
     [java] Thread-1 : exited
     [java]
     [java] Tester.report() called
     [java] testName = Yahoo
     [java] minValue = 3661
     [java] aveValue = 5900
     [java] maxValue = 10197
     [java] 3680        1
     [java] 3800        1
     [java] 5980        1
     [java] 10020       1

BUILD SUCCESSFUL
Total time: 24 seconds

Source Code:

/*
 * @(#) Client.java 10/06/04
 *
 * Copyright 2002 CSIRO, Australia. All rights reserved.
 * CSIRO PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 * This
 *
 * @author  Dr. Shiping Chen
 * @version 1.0 10/06/04
 *
 */
 
 /*
 *
 *  Yahoo Web Search Test Class
 * Copyright 28/08/2008 David Ma
 *
 */
import com.yahoo.search.*;

import java.io.IOException;
import java.util.Random;
import java.util.*;
import com.shiping.test.*;

// Import random line class
import com.david.*;

public class YahooTester implements IRunner
{
   private String ID;
   private Properties prop;
  
   // Declare random line class
   private Randomline rndline = new Randomline();

   public void init(Properties prop)
   {
      this.prop = prop;
      this.ID = Thread.currentThread().getName();
   }
 
   public void preRun() {}
 
   public void run() throws Exception
   { 
      try 
   {
   // Declare new searchclient
   SearchClient client = new SearchClient(“javasdktest”);
   
   // Get new query from random line class
   String query = rndline.getLine();
   
   // Create websearch request for given query
   WebSearchRequest request = new WebSearchRequest(query);
   
   // Get results from websearch request
   WebSearchResults results = client.webSearch(request);
   
   // Display results information
   System.out.println(” “);
   System.out.println(“Searching for: ” + query);
   System.out.println(“The number of query matches in the database: ” + results.getTotalResultsAvailable());
   System.out.println(“The number of query matches returned: ” + results.getTotalResultsReturned());
   System.out.println(“The position of the first result in the overall search: ” + results.getFirstResultPosition());
  
    //Get result’s first page
    WebSearchResult result = results.listResults()[0];
    
    // Display the details for the first page given
    System.out.println(“First Page title: ” + result.getTitle());
    System.out.println(“First Page url: ” + result.getUrl());
    System.out.println(“First Page summary: ” + result.getSummary());
     
      } catch(Exception e) {}
   }

   public void postRun() {}

   public void done() {}
}



Random Line
August 28, 2008, 2:20 pm
Filed under: Uncategorized

To help with the stress testing I have complied a list of search queries made up of over 500+ boy/girls names.

Below is the class I wrote to randomly pick a line from a text file and returning it:

/*
*
*   28th August 2008 David Ma
* Returns a random line from a text file
*
*/

package com.david;

import java.io.*;
import java.util.*;
 
public class Randomline
{
 
 // Returns the string for the given line number
    public static String getLineNumber(int number) throws FileNotFoundException
 {
  try
  {
   // Reads the file  “list.txt”
   BufferedReader br = new BufferedReader(new FileReader(“list.txt”));
   String txtLine = “”;
   
   // Cycles through the file for the given number of times
   for(int i=0; i!=number; i++)
   {
    txtLine = br.readLine();
   }
   
   // Returns string for the given line
   return txtLine;
  }
  catch (IOException e)
  {
   System.out.println(e);
   return null;
  }
    }
   
 // Returns the amount of lines for a given text file
    public static int countLines(String fileName) throws FileNotFoundException
 {
  try
  {
   // Reads the given text file
   BufferedReader br = new BufferedReader(new FileReader(fileName));
   String txtLine = “”;
   int count = 0;
   txtLine = br.readLine();
   
   //While it isn’t end of the file, cycle through each line and increment count
   while(txtLine != null)
   {
    txtLine = br.readLine();
    count++;
   }
   
   //Return the amount of lines
   return count;
  }
  catch (IOException e)
  {
   System.out.println(e);
   return 0;
  }
    }
   
    public static String getLine() throws Exception
 {
  // Gets number of lines
        int numberLines = countLines(“list.txt”);
       
  // Create a random generator
  Random generator = new Random();
       
  //Use generator to get a random number between  0 and number of lines
  int randomNumber = generator.nextInt(numberLines)+1;
       
  //Get string for that given line
  String randomLine = getLineNumber(randomNumber);
       
  // Return string
  return randomLine;
    }
}




Follow

Get every new post delivered to your Inbox.