Changes

Jump to: navigation, search

Delta debugging framework

15,732 bytes removed, 01:01, 19 December 2006
Project Task List
The test cases used in this project are located in the [[Delta_debugging_testcases|Delta Debugging Testcases page]].
== Project Task List Roadmap == 
([[#top|↑ top]])
 
<table style="width: 100%;" class="standard-table" border="1" cellpadding="2" cellspacing="0">
<tr><td colspan="4"><strong>Priority Legend</strong></td></tr>
<tr style="color: #FFFFFF; font-weight: bold; text-align: center">
<td bgcolor="#8B00FF" style="width: 33%;">High Priority</td>
<td bgcolor="#0000FF" style="width: 33%;">Medium Priority</td>
<td bgcolor="#008080" style="width: 33%;">Low Priority</td>
</tr>
</table>
<br />
<table style="width: 100%;" class="standard-table" border="1" cellpadding="2" cellspacing="0">
<tr><td colspan="4"><strong>Status Legend</strong></td></tr>
<tr style="font-weight: bold; text-align: center">
<td bgcolor="#00FF00" style="width: 33%;">Task completed</td>
<td bgcolor="#FFFF00" style="width: 33%;">Task started but not complete</td>
<td bgcolor="#FF0000" style="width: 33%;">Task not started</td>
</tr>
</table>
<br />
<table style="width: 100%;" class="standard-table" border="1" cellpadding="0" cellspacing="0">
<tr>
<th>Task</th>
<th>Description</th>
<th>Priority</th>
<th>Assigned to</th>
<th>Status</th>
</tr>
 
<tr>
<td colspan="5"><strong>Source Documentation and Licensing</strong>
</td>
</tr>
 
<tr>
<td>Source Documentation</td>
<td>Unsurprisingly, the source code is not thoroughly documented. Before the end of this semester, by the time the project is due to be submitted, the source code needs to be well documented. </td>
<td bgcolor="#008080" style="color: #FFFFFF; font-weight: bold; text-align: center">Low</td>
<td>[[User:Elichak | Liz Chak]]</td>
<td bgcolor="#FFFF00">There is some documentation in the source files but not much. And it's not well documented.</td>
</tr>
 
<tr>
<td>Source License</td>
<td>As per the requirements, the delta debugging framework will be licensed under an open source license. Which one? we don't know yet. Though, before the due date of the project, we must select one and change the source files header comments as per the selected license's requirements.</td>
<td bgcolor="#008080" style="color: #FFFFFF; font-weight: bold; text-align: center">Low</td>
<td>[[User:RichardChu|Richard Chu]], [[User:Ankuswan|Aditya Nanda Kuswanto]], [[User:Dwwoodsi|Dean William Woodside]]</td>
<td bgcolor="#00FF00">Done. Decided to release the source code under the [http://www.opensource.org/licenses/gpl-license.php GPL Version 2 license].</td>
</tr>
 
<tr>
<td colspan="5"><strong>Change set / Change</strong>
</td>
</tr>
 
<tr>
<td>Retrieval of Change / Change set</td>
<td>The Granularity concept. A single revision may consist of hundreds or thousands of lines of code that were changed, yet only a couple lines of the change may be responsible for the regression. Thus, There must be a method to break the change into smaller manageable chunks. The different types of chunks we may breaking up a changeset are: Revision, Directories, Files, Code Blocks, and Lines.</td>
<td bgcolor="#8B00FF" style="color: #FFFFFF; font-weight: bold; text-align: center">High</td>
<td>[[User:RichardChu|Richard Chu]]</td>
<td bgcolor="#00FF00">Currently can retrieve change sets of type Revision, Directory, and File. NOT going to complete retrieval of Code Block, Line of Code change set.
</td>
</tr>
 
<tr>
<td>Application of Change / Change set</td>
<td>OK. Change sets can be retrieved. Now what? You must be able to apply a change or change set or subset of a change set to the source tree. Your mission is to figure out how to do that.</td>
<td bgcolor="#8B00FF" style="color: #FFFFFF; font-weight: bold; text-align: center">High</td>
<td>[[User:RichardChu|Richard Chu]]</td>
<td bgcolor="#00FF00">Can apply a changeset (specified by array of indices passed in) for a Revision, Directory, and File Changeset. NOT going to complete application of Code Block or Line changeset.
</td>
</tr>
 
<tr>
<td>Unapplication of Change / Change set</td>
<td>Changesets obviously must be able to be applied. But changesets must also be able to be unapplied. Your mission is to figure out how to do that.</td>
<td bgcolor="#8B00FF" style="color: #FFFFFF; font-weight: bold; text-align: center">High</td>
<td>[[User:RichardChu|Richard Chu]]</td>
<td bgcolor="#00FF00">Can unapply a changeset (specified by array of indices passed in) for a Revision, Directory, and File Changeset. NOT going to complete unapplication of Code Block or Line changeset.
</td>
</tr>
 
 
<tr>
<td colspan="5"><strong>GNU Make</strong> ([http://www.gnu.org/software/make/ http://www.gnu.org/software/make/])
</td>
</tr>
 
<tr>
<td>Wrapper around the GNU make utility</td>
<td>Mozilla uses the GNU make utility to build their source tree. your mission is to make a wrapper around the GNU make utility so that the make command can be programmatically called to build the source tree.</td>
<td bgcolor="#8B00FF" style="color: #FFFFFF; font-weight: bold; text-align: center">High</td>
<td>[[User:RichardChu|Richard Chu]]</td>
<td bgcolor="#00FF00">Wrapper created: ''makewrapper.pl''. Can execute the make command with options specified by the user.
</td>
</tr>
 
<tr>
<td colspan="5"><strong>Subversion (SVN) Repository</strong> ([http://subversion.tigris.org/ http://subversion.tigris.org/], [http://svnbook.red-bean.com/nightly/en/index.html http://svnbook.red-bean.com/nightly/en/index.html])
</td>
</tr>
 
<tr>
<td>Wrapper around the necessary SVN commands</td>
<td>For the automated debugging to work, we may need to automatically modify the working copy by reverting to a different revision or updating certain directories and files. It may also need to know the differences between revisions and changesets.</td>
<td bgcolor="#8B00FF" style="color: #FFFFFF; font-weight: bold; text-align: center">High</td>
<td>[[User:RichardChu|Richard Chu]]</td>
<td bgcolor="#00FF00">Wrapper created: ''svn.pl''. Currently has subroutines for ''commit'', ''update'', ''diff'', and ''checkout'' commands. May need to wrap other SVN commands.</td>
</tr>
 
<tr>
<td>Query SVN repository for differences between two revisions</td>
<td>Your mission is to find out the relevant commands that can return the differences between two revisions, the meta-data that is kept with each revision, how differences between two revisions are stored and formatted, and how this data can be parsed into a usable form for our project (wrapper?).</td>
<td bgcolor="#8B00FF" style="color: #FFFFFF; font-weight: bold; text-align: center">High</td>
<td>[[User:RichardChu|Richard Chu]]</td>
<td bgcolor="#00FF00">Done.</td>
</tr>
 
 
 
<tr>
<td colspan="5"><strong>CVS/Mozilla Bonsai</strong> ([http://www.mozilla.org/bonsai.html http://www.mozilla.org/bonsai.html], [http://cvsbook.red-bean.com/OSDevWithCVS_3E.pdf CVS Book])<br />In my mind, Bonsai may be too bloated for our needs.
</td>
</tr>
 
<tr>
<td>Wrapper around the necessary CVS commands</td>
<td>For the automated debugging to work, we may need to automatically modify the working copy by reverting to a different revision or updating certain directories and files. It may also need to know the differences between revisions and changesets.</td>
<td bgcolor="#0000FF" style="color: #FFFFFF; font-weight: bold; text-align: center">Medium</td>
<td>[[User:dwwoodsi|Dean Woodside]]</td>
<td bgcolor="#FF0000">Just starting out.</td>
</tr>
 
<tr>
<td>Query CVS repository for differences between two revisions</td>
<td>Your mission is to find out the relevant commands that can return the differences between two revisions, the meta-data that is kept with each revision, how differences between two revisions are stored and formatted, and how this data can be parsed into a usable form for our project (wrapper?).</td>
<td bgcolor="#0000FF" style="color: #FFFFFF; font-weight: bold; text-align: center">Medium</td>
<td>[[User:dwwoodsi|Dean Woodside]]</td>
<td bgcolor="#FF0000">Just starting out.</td>
</tr>
 
<tr>
<td colspan="5"><strong>Prerequisites to initial small-scale testing of the delta debugging framework</strong></td>
</tr>
 
<tr>
<td>Test Framework</td>
<td>We ideally need a way to allow users to specify the test(s) to be run easily without them having to modify the delta debugging module. </td>
<td bgcolor="#8B00FF" style="color: #FFFFFF; font-weight: bold; text-align: center">High</td>
<td>[[User:RichardChu|Richard Chu]]</td>
<td bgcolor="#00FF00">Framework completed. Based on my simplistic understanding of the design of the JUnit Framework. Except, not SetUp() or TearDown() capabilities.</td>
</tr>
 
<tr>
<td>Obtaination of test SVN Repository</td>
<td>We have an SVN repository that holds our delta debugging framework source files. We need another SVN repository that we could use to test our framework.</td>
<td bgcolor="#8B00FF" style="color: #FFFFFF; font-weight: bold; text-align: center">High</td>
<td>[[User:dwwoodsi|Dean Woodside]]</td>
<td bgcolor="#00FF00">Done. The URL to the test SVN repository is: svn://cdot.senecac.on.ca/deltatest</td>
</tr>
 
<tr>
<td>Description of the test cases</td>
<td>The current test case is quite complex. A document is needed to introduce users on how to create test cases and utilize the algorithm.</td>
<td bgcolor="#8B00FF" style="color: #FFFFFF; font-weight: bold; text-align: center">High</td>
<td>[[User:Ankuswan|Aditya Nanda Kuswanto]]</td>
<td bgcolor="#00FF00">Done. The document and links to the testcases are located [[Delta_debugging_testcases|here]].</td>
</tr>
 
<tr>
<td>Obtaination of Testcase 01</td>
<td>We need a program that we could use to test the delta debugging framework. Ideally this program will be small but contain multiple source files. We need two versions of the program: a pristine working copy, and a version that has a regression. Need to know how to build the program.</td>
<td bgcolor="#8B00FF" style="color: #FFFFFF; font-weight: bold; text-align: center">High</td>
<td>[[User:Ankuswan|Aditya Nanda Kuswanto]]</td>
<td bgcolor="#00FF00">Done. HelloWorld program has been created using the test modules ripped from Tinderbox. The test checks whether the program runs successfully by checking the log file it produces. The test has been uploaded to:
svn://cdot.senecac.on.ca/deltatest</td>
</tr>
 
<tr>
<td>Obtaination of Testcase 02</td>
<td>We need a program that we could use to test the delta debugging framework. Ideally this program will be small but contain multiple source files. We need two versions of the program: a pristine working copy, and a version that has a regression. Need to know how to build the program.</td>
<td bgcolor="#8B00FF" style="color: #FFFFFF; font-weight: bold; text-align: center">High</td>
<td>[[User:RichardChu|Richard Chu]]</td>
<td bgcolor="#00FF00">Done. Going to use a C++ program I wrote in a course in a previous semester to test out the delta debugging framework. The test has been uploaded to:
svn://cdot.senecac.on.ca/deltatest</td>
</tr>
 
<tr>
<td>Creation of Test Case(s)</td>
<td>We need test case(s) for the test program that can return whether or not the test passes or fails so that we can test the delta debugger.</td>
<td bgcolor="#8B00FF" style="color: #FFFFFF; font-weight: bold; text-align: center">High</td>
<td>[[User:RichardChu|Richard Chu]]</td>
<td bgcolor="#00FF00">Done. The test case is real simple. It just tests the return code of a function with the expected return code. returns true/test passed if return code is equal to the expected return code.</td>
</tr>
 
<tr>
<td>Creation of the necessary hooks into the framework</td>
<td>The framework must be able to automatically build the test program and run the test case(s). So need to create the necessary hooks between the framework and test program.</td>
<td bgcolor="#8B00FF" style="color: #FFFFFF; font-weight: bold; text-align: center">High</td>
<td>[[User:RichardChu|Richard Chu]]</td>
<td bgcolor="#00FF00">Done. Made real simple because of Build tree and Test framework.</td>
</tr>
 
 
<tr>
<td colspan="5"><strong>Prerequisites to future large-scale testing of the delta debugging framework</strong></td>
</tr>
 
<tr>
<td>Obtaination of test CVS Repository</td>
<td>When the CVS version of the framework is completed, it will be useful to have a test CVS repository that we could use to test our framework.</td>
<td bgcolor="#0000FF" style="color: #FFFFFF; font-weight: bold; text-align: center">Medium</td>
<td>[[User:dwwoodsi|Dean Woodside]]</td>
<td bgcolor="#00FF00">The CVS repository has been created. The URL is hera.senecac.on.ca:43900/deltatest. <br />The web interface to the repository is: [http://hera.senecac.on.ca:43080/viewvc.cgi/?root=deltatest here]</td>
</tr>
 
<tr>
<td>Creation / Extraction of Test Case(s)</td>
<td>In the future, we would like to test our delta debugging framework on the Mozilla source tree. So it would be nice to find test cases that can test some functionality of the source code.</td>
<td bgcolor="#0000FF" style="color: #FFFFFF; font-weight: bold; text-align: center">Medium</td>
<td>[[User:Ankuswan|Aditya Nanda Kuswanto]]</td>
<td bgcolor="#00FF00">Done. Ripped some preliminary test modules from Tinderbox. Test modules are currently used to test the HelloWorld testcase. The same modules can be used to test the success of future Mozilla build by testing the presence of Firefox executable.</td>
</tr>
 
<tr>
<td>CVS Version of Delta Debugging Framework</td>
<td>In the future, we would like to test our delta debugging framework on the Mozilla source tree. Currently, the Mozilla source tree is in CVS repository. So we need to develop the CVS version of the framework.</td>
<td bgcolor="#0000FF" style="color: #FFFFFF; font-weight: bold; text-align: center">Medium</td>
<td>Nobody.</td>
<td bgcolor="#FF0000">&nbsp;</td>
</tr>
[[Delta Debugging Framework Roadmap|Delta Debugging Framework Roadmap]]
<tr> <td colspan="5"><strong>Implementation The page outlines our current vision of Delta Debugging Algorithm</strong> ([http://www.infosun.fmi.uni-passau.de/st/papers/tr-99-01/ Yesterday, my program worked. Today, it does not. Why?])<br /> </td> </tr> <tr> <td>The Algorithm</td> <td>The the delta debugging algorithm. Drives the framework to retrieve change sets, apply changes, build source tree, run test case(s) to find the minimal set of failure inducing changes. The intersection of all other parts and a roadmap of the framework work that needs to be completed to make them work togetheraccomplish our vision. Ideally, should This roadmap may be abstract enough for easy extensibility with little impact.<subject to change and/td> <td bgcolor="#8B00FF" style="color: #FFFFFF; font-weight: bold; text-align: center">High</td> <td>[[User:RichardChu|Richard Chu]]</td> <td bgcolor="#FFFF00">Work in progress. Currently, it can theoretically find the failure inducing revisionor expanded as our vision expands through feedback and requests from others, and the minimal failure inducing set of directoriesour own ideas, and the minimal failure inducing set filesetc. It will also easily find the minimal failure inducing set of code blocks and lines of code (if those changeset types ever get done) with only minor additions to one subroutine. Works in theory. Untested in practice.</td> </tr></table>
== Partial Class Diagram ==
1
edit

Navigation menu