====================================== Name: MANUEL FREITAS Account: manuel Project Group: PT Partner: JOE MARANDA ====================================== PROJECT DESCRIPTION Initially both me and Joe were to be the flow team for the regression test suits for Isthmus. The project was for us to build up a test suit of Demeter/Isthmus environments to test all the useful features of Isthmus. It was also part of our project to produce the man page and User Guide for Isthmus. After working on the man page we realized that it would be easier and more productive if we'd split the work into two distinct parts: Documentation and Isthmus Testing. From this point on, Joe was in charge of developing the User Guide and I was to execute the Isthmus regression tests. The reason for this choices was that Joe had more experience with Latex, and html documents which were used to produce the User Guide, and I wanted a part of the project where some programming or understanding of a programming/scripting language was involved. BEHAVIOR AND IMPLEMENTATION For implementing the different test cases, I had to first prepare a list of directories called i-*, each of them a different test environment. For these I used some of the directories /proj/adaptive/lieber/regression-test/c-*. Then, I rewrote all the user-calls.h files in those directories as my.tcl files. My focus was on those user-calls.h which check for SUCCESS. I then used the following approach in order to be able to call Isthmus: # generate a demeter environment > demeter # to create Imakefile.sample > isthmus-cd > cp Imakefile.sample Imakefile # need new makefile > gen-make > cp main_tcl.C.sample main.C > isthmus-pp *.pp # the isthmus files are still there; just run demeter > demeter # use main.tcl to test the environment > cp main.tcl.sample main.tcl > run When the run command is executed, the object in demeter-input gets parsed and drawn. Then it is copied and displayed as a tree. Both objects are then compared and my.tcl is run at the wish shell as follows: % source my.tcl When the Tcl script in my.tcl is run, a result is shown, whether the two objects are equal or not by displaying the messages SUCCESS or FAILURE. The next step was to delete all the files on each environment except *.pp *.cd demeter-input expected main.tcl my.tcl tcl-Imakefile (Imakefile.sample) With only those files in each test directory all I had to do was run the testing scripts: > tcl-regression-test-isthmus >& tcl-sc & > gen-report2 > report The first script generates a new class library for each environment, and outputs to a file tcl-sc. The second script, parses file tcl-sc and generates a readable, well formated output in file "report". The output file "report" contains information about all the environments used in the regression test. TESTING STRATEGY In order to make this work my strategy was to develop one test environment at a time by first generating a demeter environment and move on from there. In order to translate the C++ code into Tcl I used the help of the Tcl/Tk book as well as the Teaching Assistents - Salil and Linling. They were very helpful and always willing to help clear up any questions. Whenever one environment didn't work I tried to track the problem down until finding it. Most of the time the problem was that Isthmus-pp wasn't yet supporting the types of propagation patterns used for that environment in file *.pp Whenever that happened I sent a message to Salil or Professor Lieberherr pointing out the error. Later, as Isthmus improved, more propagation patterns started being accepted by Isthmus-pp and so more test environments were created. WHERE IT LIVES You can find all the project files for the regression tests in /proj/adaptive/projects/com1205+w95/PT/PP-tests/manuel Also, like it was requested /proj/adaptive2/projects/com1205-w95/manuel/project WRINKLES A few test environments don't result in SUCCESS. A few days before the last test everything was fine so I assume that some changes that were done must have affected these environments. Another problem was that the testing script wasn't completting its run successfully when I used any of the workstations in the lab, only when I used professor Lieberherr's workstation. I thought it could be a system problem but it was never figure out. The test environments that don't result in SUCCESS are: i-apple_in_nested/ i-bypassing3/ i-constr-hier/ i-empty-methods-select/ They do run and generate code (except i-bypassing3 that segfaults), but the SUCCESS message is never displayed. CURRENT RESTRICTIONS 1. int *, float * etc. not permited, because according to Salil it doesn't seem sensible to support them. 2. Reference parameters not supported yet, as of March 20th, 1995.