about me
my project

week one
week two
week three
week four & five
week six
week seven
week eight & nine
week ten
final report

random pictures
hiperspace people

the drive up
dave matthew's

Week Seven: July 16 - 20

This week we had a really long meeting, which can only mean one of two things:

a) I'm doing something wrong and Amie and Lori had to set me straight, or
b) I'm making progress and we made several design decisions regarding how I should proceed in the next few weeks.

And I'm smiling, so it must be option b)!!!

Actually, the meeting was really good. I think it's safe to say I have moved on from preprocesing. Actually, I feel like I've accomplished quite a lot. I don't think I've fully explained this before, but TATOO was started last summer by Tiffany Wong, a CRA-DMP student. She got the basic outline of the GUI working but there were several things not working, which all became my problems :). Don't get me wrong, I'm not just finishing her project, I'm building on it!

Here is a screen shot of TATOO in it's current state (click on thumbnail to enlarge):

This week I gathered all of the source code from Tiffany and mapped out how the different .java files interact with each other. (As soon as I get a chance, I will put that up here.) Now that I know what is done in each file, I am more aware of what I have to modify in Tiffany's code to make my parts work. One of the major changes is that Tiffany's code only worked for a single source file. I need to be able to work with multiple files since many Java programs are spread over multiple files (even TATOO is!). For instance, Stack.java might have an object that is defined in Node.java, therefore, I need to format both Stack.java and Node.java so we can trace the path of the tuple effectively and make sure it's covered.

This week I also added new buttons to TATOO:

INSTRUMENT: This button will prompt the user for a directory and format all .java files in that directory. Right now, it prompts the user for a file name (Tiffany's way).

(1) I need to write a script (maybe Perl) which creates a file that contains the file names of all .java files in the directory.

(2) Then, for each .java file I will call linenum.pl, brackets.pl, and addPrints.java to format the .java files. The final output will be a file called prints_xxx.java where xxx is the original filename. To complete this step, I need to figure out how to call a Perl program from TATOO (a Java program). I have done a little reading and I have to ideas. The first is a BETA package from the Perl Documentation which allows for this. The second option is Java.lang.runtime which will create a Process to run the commandline program.

(3) Lastly, the all the prints_xxx.java will be compiled into a .class files. I need to write a script to accomplish this as well.

RUN: This button will prompt the user for a data file. The user will enter which file is needed to run the .class files. Then, the program will be run and the output of the print statements that were added will be saved into xxx_yyy.trace, where xxx is the name of the file containing the main method and yyy is the name of the data file. This way the user can run the instrumented code with several data files. This button needs a simple script to run the program with the specified data file. I believe this script will be similar to the script which runs the perl command line programs. I may also prompt the user to enter the command line he wants to run as there may be a special format to run the program.

ANALYZE: This button will prompt the user to select a trace file generated by the RUN button and along with the test tuple file used to add print statements, give statistical coverage information. The exact statistical information hasn't been decided on yet.

I also added a text box that shows the user the current program they are working with. There is a reset button which will reset all the coverage information so the user can make another clean run. We have decided that we will figure out which tuples were covered by have a tuple file that we mark when a tuple has been covered, and this is what the reset button will "reset". We also will number the tuples somehow.