<html><head><title>Team/CVS Test Plan</title><style type='text/css'>h1 {color: white;background-color: #0080C0;padding-left: 1ex;padding-right: 1ex;}h1 {font-weight: bold;padding-top: 0.5ex;padding-bottom: 0.5ex;margin-top: 0;}</style></head><body>

<!-- KEEP START -->
<p>Back to the <a href="../dev.php">Team Dev Page</a></p>
<h1>Eclipse Team and CVS 3.2 Test Plan</h1>
This plan contains a detailed listing of the features available in the
Eclipse CVS plug-in. There are some items that don't have many steps
but are meant as a reminder that the features exist and should be
tested. If you want to help, please feel free to hammer away on some
bits of functionality.<br>
<br>
For a more verbose explanation of the CVS plug-in please refer to our
documentation.<br>
<h2>CVS Server Versions</h2>
We focus our testing on the latest stable *nix server version. We will
however sniff test the latest developer *nix server and the cvsnt
server. In addition, we will run our automated tests on all three
flavours. The current server lineup is:<br>
<br>
Latest Stable: <span style="font-weight: bold;">1.11.21</span><br>
Latest Development: <span style="font-weight: bold;">1.12.13</span><br>
CVS NT: <strong>2.5.03.2260</strong>
<h2>Testing Tips</h2>
<ul>
  <li><font color="#000000">test corner cases</font></li>
  <li>test setups which we typically don't use during development (for
example no Plug-in developement)</li>
  <li><font color="#000000">handling of error situations</font>
    <ul>
      <li><font color="#000000">watch log</font></li>
      <li><font color="#000000">error messages</font></li>
    </ul>
  </li>
</ul>
<ul>
  <li>Whenever you have to fill in data in dialogs try to foul the
dialog by providing incomplete or bogus input</li>
  <li>Watch for view updating (package explorer, browsing perspective,
outliner) when source content gets changed</li>
</ul>
<ul>
  <li>change font for text editor and dialogs to different font</li>
  <li>check that dialogs are rendered correctly
    <ul>
      <li>specified dialog font is used</li>
      <li>no buttons and labels clipped</li>
    </ul>
  </li>
</ul>
<ul>
  <li>detached views</li>
  <li>dialogs pop up on correct monitor</li>
</ul>
<h2>Platforms</h2>
<table border="1" width="821">
  <tbody>
    <tr bgcolor="#cccccc">
      <th colspan="4">
      <div align="center"> <b><font size="+1">Eclipse Reference
Platforms</font></b> </div>
      </th>
    </tr>
    <tr>
      <td width="205"><b>Operating system</b></td>
      <td width="76"><b>Processor architecture</b></td>
      <td width="59"><b>Window system</b></td>
      <td width="453"><b>Tester</b></td>
    </tr>
    <tr>
      <td width="205">Microsoft Windows XP</td>
      <td width="76">Intel x86</td>
      <td width="59">Win32</td>
      <td width="453">Michael Valenta<br>
      </td>
    </tr>
    <tr>
      <td width="205">Red Hat Enterprise Linux WS 3</td>
      <td width="76">Intel x86</td>
      <td width="59">GTK</td>
      <td width="453">Michael Valenta<br>
      </td>
    </tr>
  </tbody>
</table>
<h2>Tests</h2>
<!-- KEEP END -->
<ul>
<li><a href="#00004.html">Repositories View</a>
<ul>
<li><a href="#repoview_basics00001.html">Basics</a>
<ul>
</ul>
<li><a href="#00007.html">Check Out - prompts</a>
<ul>
</ul>
<li><a href="#checkoutwizard00001.html">Check Out Wizard</a>
<ul>
</ul>
<li><a href="#datetags_repoview00001.html">Tags</a>
<ul>
</ul>
</ul>
<li><a href="#00026.html">Sharing</a>
<ul>
<li><a href="#00027.html">Sharing as a subfolder</a>
<ul>
</ul>
<li><a href="#sharingbasics00001.html">Basics</a>
<ul>
</ul>
<li><a href="#00028.html">Reconnecting an existing project</a>
<ul>
</ul>
<li><a href="#00050.html">Sharing a new project</a>
<ul>
</ul>
<li><a href="#project_sets00001.html">Project Sets</a>
<ul>
</ul>
</ul>
<li><a href="#00044.html">Replacing</a>
<ul>
<li><a href="#00045.html">With latest</a>
<ul>
</ul>
<li><a href="#00046.html">With another branch of version</a>
<ul>
</ul>
<li><a href="#00047.html">With file revision</a>
<ul>
</ul>
<li><a href="#update_command00001.html">Updating</a>
<ul>
</ul>
</ul>
<li><a href="#00008.html">Comparing</a>
<ul>
<li><a href="#00009.html">Remote resources</a>
<ul>
</ul>
<li><a href="#00039.html">Compare with another branch or version</a>
<ul>
</ul>
<li><a href="#00040.html">Reverting deleted resources</a>
<ul>
</ul>
<li><a href="#00041.html">File Revisions</a>
<ul>
</ul>
<li><a href="#quickdiff00001.html">Quick Diff</a>
<ul>
</ul>
</ul>
<li><a href="#00010.html">Synchronizing</a>
<ul>
<li><a href="#00048.html">Performing a Synchronize</a>
<ul>
</ul>
<li><a href="#00011.html">Synchronize View</a>
<ul>
</ul>
<li><a href="#00049.html">Decorations</a>
<ul>
</ul>
<li><a href="#change_sets00001.html">Change Sets</a>
<ul>
</ul>
<li><a href="#sync00001.html">Scenarios</a>
<ul>
</ul>
</ul>
<li><a href="#commit00001.html">Commit</a>
<ul>
<li><a href="#commit00002.html">Committing Changes</a>
<ul>
</ul>
</ul>
<li><a href="#tags00001.html">Tags</a>
<ul>
<li><a href="#tags00002.html">Tag Selection in Dialogs</a>
<ul>
</ul>
<li><a href="#tags00003.html">Tag Caching</a>
<ul>
</ul>
</ul>
<li><a href="#00012.html">Branch/Merge</a>
<ul>
<li><a href="#00022.html">Performing a Merge</a>
<ul>
</ul>
<li><a href="#00013.html">Synchronize View</a>
<ul>
</ul>
<li><a href="#branch00001.html">Branching</a>
<ul>
</ul>
</ul>
<li><a href="#00029.html">Patching</a>
<ul>
<li><a href="#00030.html">Importing a zip over a shared project</a>
<ul>
</ul>
</ul>
<li><a href="#00014.html">History View</a>
<ul>
<li><a href="#00018.html">Editor Linking</a>
<ul>
</ul>
<li><a href="#toolbarButtonsUMFile00001.html">Common Toolbar Buttons</a>
<ul>
</ul>
<li><a href="#groupByDateUMFile00001.html">Group Revisions by Date</a>
<ul>
</ul>
<li><a href="#localHistoryUnsharedFiles00001.html">Local History for Unshared Files</a>
<ul>
<li><a href="#DNDUMFile00001.html">Drag and Drop Unmapped File</a>
<ul>
</ul>
<li><a href="#showHistoryUMFile00001.html">Show History Unmapped File</a>
<ul>
</ul>
</ul>
<li><a href="#cvsHistory00001.html">CVS History</a>
<ul>
<li><a href="#DNDCFile00001.html">Drag and Drop CVS File</a>
<ul>
</ul>
<li><a href="#00024.html">Annotate</a>
<ul>
</ul>
<li><a href="#modeSwitching00001.html">Mode Switching</a>
<ul>
</ul>
</ul>
<li><a href="#pinHistoryView00001.html">Pin History View</a>
<ul>
</ul>
<li><a href="#refreshHistory00002.html">Refresh</a>
<ul>
</ul>
</ul>
<li><a href="#00020.html">Concurrency</a>
<ul>
<li><a href="#00021.html">Close and disconnect</a>
<ul>
</ul>
</ul>
<li><a href="#00023.html">Restarting Workbench</a>
<ul>
<li><a href="#00019.html">Crash Recovery</a>
<ul>
</ul>
<li><a href="#00025.html">Synchronize View Settings</a>
<ul>
</ul>
</ul>
<li><a href="#00028a.html">SSH2</a>
<ul>
<li><a href="#00029a.html">Server version compatibiliity</a>
<ul>
</ul>
<li><a href="#00030a.html">Proxies</a>
<ul>
</ul>
<li><a href="#00031.html">Generating keys</a>
<ul>
</ul>
<li><a href="#00032.html">General use</a>
<ul>
</ul>
</ul>
<li><a href="#00033.html">Annotate</a>
<ul>
<li><a href="#00034.html">Show Annotation Action</a>
<ul>
</ul>
</ul>
<li><a href="#00035.html">Label Decorations</a>
<ul>
<li><a href="#00036.html">Enablement at startup</a>
<ul>
</ul>
<li><a href="#00037.html">Customizations</a>
<ul>
</ul>
<li><a href="#00038.html">Decorations in the Synchronize pages</a>
<ul>
</ul>
</ul>
<li><a href="#watch_edit00001.html">Watch/Edit</a>
<ul>
<li><a href="#watch_edit_basic00001.html">Basic scenarios</a>
<ul>
</ul>
<li><a href="#watch_edit_editorsview00001.html">Editors View</a>
<ul>
</ul>
</ul>
<li><a href="#perf00001.html">Performance</a>
<ul>
<li><a href="#perf00002.html">Timings</a>
<ul>
</ul>
<li><a href="#perf00004.html">Resource Data Structures</a>
<ul>
</ul>
<li><a href="#perf00005.html">Looking For Leaks</a>
<ul>
</ul>
<li><a href="#perf00006.html">Team Data Structures</a>
<ul>
</ul>
<li><a href="#perf00007.html">Scalability</a>
<ul>
</ul>
</ul>
<li><a href="#failures00001.html">Failure Cases</a>
<ul>
<li><a href="#connections00001.html">Connections</a>
<ul>
</ul>
<li><a href="#auth_problems00001.html">Authentication Problems</a>
<ul>
</ul>
</ul>
<li><a href="#misc00001.html">Misc</a>
<ul>
<li><a href="#00042.html">CVS Console</a>
<ul>
</ul>
<li><a href="#encoding00001.html">Encoding Support</a>
<ul>
</ul>
<li><a href="#passwords00001.html">Password Management</a>
<ul>
</ul>
<li><a href="#ext_connection_method00001.html">EXT</a>
<ul>
</ul>
<li><a href="#keys00001.html">Key Bindings</a>
<ul>
</ul>
</ul>
<li><a href="#validate_edit00001.html">Validate Edit</a>
<ul>
<li><a href="#validate_edit_editing_files00001.html">Editing Files</a>
<ul>
</ul>
<li><a href="#validate_edit_refactoring00001.html">Refactoring</a>
<ul>
</ul>
</ul>
<li><a href="#logical00001.html">Logical Resource Support</a>
<ul>
<li><a href="#logical00002.html">Java Packages</a>
<ul>
</ul>
<li><a href="#logical00003.html">Working Sets</a>
<ul>
</ul>
</ul>
</ul>
<h1>Repositories View</h1>
<a name="repoview_basics00001.html">
<h2>Basics</h2>
<p>Since: <br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

<h3>Adding and Discarding Locations</h3>

<p>You should be able to create a repository location from the toolbar of the view or via the context menu. 
Try expanding the location, the HEAD, Versions and Branches categories. Also, 
try the failures cases from <a href="connections00001.html">Connections</a>.
Things to try:
<ul>
<li>Create repo locations for different connection types: ext, pserver, extssh.
<li>Create a repo location ny pasting a location string into the host field (e.g. 
:pserver:anonymous@dev.eclipse.org:/home/eclipse).
<li>Expanding project nodes should process the children in the background and the 
view should remain responsive while this is happening. When children nodes are added to the 
tree the tree shouldn't be too jumpy.
<li>Discard a location and ensure it is removed. Also ensure that discarding is not permitted when 
projects in the local workspace are shared with the location.
</ul>
</p>

<h3>Repository Location Properties</h3>

View a location's properties page and ensure that information is correct and can be changed. 
Ensure that the sharing information for any projects mapped to the location are also changed.

<h3>Modules</h3>

<h3>Working with modules</h3>

<ul>
  <li>Expanding HEAD or the Versions category should display the modules defined in the CVSROOT/modules file</li>
  <li>Check Out and Checkout As should be availabel on modules and should work as expected</li>
  <li>Performing a "Configure Branches and Versions" on the module allows the user to set the autorefresh file and add some tags.
  Ensure that the module now appears properly in association with those tags.</li>
</ol>



<a name="00007.html">
<h2>Check Out - prompts</h2>
<p>Since: 3.0 M5<br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

<h3>Scenario 1</h3>
<ol>
  <li>Select a project in HEAD</li>
  <li>Perform a Checkout</li>
  <li>Ensure project was checked out properly</li>
  <li>Select the same project and choose Checkout As</li>
  <li>Use the same name and specify a custom location</li>
  <li>Ensure that the user is prompted to overwrite</li>
  <li>Ensure OK and Cancel have proper behavior</li>
</ol>

<h3>Scenario 2</h3>
<ol>
  <li>Select a project in HEAD</li>
  <li>Perform a Checkout</li>
  <li>Ensure project was checked out properly</li>
  <li>Delete the project but leave the contents on disk</li>
  <li>Perform a Checkout of the same project again</li>
  <li>Ensure that the user is prompted to overwrite</li>
  <li>Ensure OK and Cancel have proper behavior</li>
</ol>

<h3>Scenario 3</h3>
<ol>
  <li>Select a project in HEAD</li>
  <li>Perform a Checkout As</li>
  <li>Use the same name and specify a custom location</li>
  <li>Ensure project was checked out properly</li>
  <li>Delete the project but leave the contents on disk</li>
  <li>Perform a Checkout As of the same project to the same location as in step 3</li>
  <li>Ensure that the user is prompted to overwrite</li>
  <li>Ensure OK and Cancel have proper behavior</li>
</ol>

<h3>Scenario 4</h3>
<ol>
  <li>Select a project in HEAD</li>
  <li>Perform a Checkout As</li>
  <li>Use the same name and specify a custom location</li>
  <li>Ensure project was checked out properly</li>
  <li>Delete the project but leave the contents on disk</li>
  <li>Perform a Checkout on the project</li>
  <li>Ensure project was checked out properly</li>
  <li>Perform a Checkout As of the same project to the same location as in step 3</li>
  <li>Ensure that the user is prompted twice: once to overwrite project and once to overwrite custom location</li>
  <li>Ensure OK and Cancel have proper behavior</li>
</ol>


<a name="checkoutwizard00001.html">

<h2>Checkout Wizard</h2>
<p>Since: <br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p><body>

<p>The checkout wizard should be available from the following parts of the workbench: 
import, new project, empty workspace CVS synchronize action, toolbar in CVS perspective.
The checkout wiard is also available from the context menu of the repositories view
as the Checkout As menu item.</p>

<p>The following variants should be tested:
<ul>
<li>Create a new repository location and checkout a project entirely from the wizard.
<li>Check out a tag
<li>Check out a project that does not contain a .project file. This should result in
a second wizard that allows projct configuration (e.g. Java project).
</ul>

<h3>Repositories View Checkout Variants</h3>
These test require an existing repository which contains projects, at least one of which 
does not contain a .project file.
<ol>
  <li>Perform "Check Out" on a single project. Ensure that repeating results in overwrite prompt.</li>
  <li>Perform "Check Out" on multiple projects.</li>
  <li>Perform "Check Out As..." on a single project (that contains a .project file) and enter custom name and/or custom location.</li>
  <li>Perform "Check Out As..." on a single remote project that does not have a .project file and
  ensure that the user is prompted for the project type to create.</li>
  <li>Perform "Check Out As..." on multipe projects and enter a custom parent location.</li>
  <li>Perform "Check Out As..." and specify a tag.</li>
</ol>

<a name="datetags_repoview00001.html">
<h2>Tags</h2>
<p>Since: 3.0<br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p><body>

<h3>Refresh Branches and Versions</h3>
<ol>
  <li>Select a repository location and perform "Refresh Branches and Versions...".
  <li>Select one or more projects that contain a .project file and have been tagged with branch and version tags and click finish.</li>
  <li>Expand the respository entry to view ...
  <ul>
  <li>projects in HEAD,</li>
  <li>branches and projects in BRANCHES,</li>
  <li>projects and versions in VERSIONS.</li>
  </ul>
</ol>

<h3>Configure Branches and Versions</h3>
<ol>
  <li>Select a project in the repositories view and perform "Configure Branches and Versions...".
  <li>Select some branch and version tags to be remembered.</li>
  <li>Expand the respository entry to view ...
  <ul>
  <li>projects in HEAD,</li>
  <li>branches and projects in BRANCHES,</li>
  <li>projects and versions in VERSIONS.</li>
  </ul>
</ol>

<h3>Date Tags</h3>
The ability to create Date tags should be available from the following locations:

<ul>
<li>Repositories view</li>
<li>Configure Branches and Versions dialog
<li>Tag selection dialogs (Compare with and Replace with Branch or Version)
</ul>



<h1>Sharing</h1>
<a name="00027.html">
<h2>Sharing as a subfolder</h2>
<p>Since: 3.0 M6<br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

<p>Perform the following steps:</p>
<ol>
  <li>Create a new project</li>
  <li>Select Team>Share</li>
  <li>Select a repository and click next</li>
  <li>Enter a path with at least two segments as the remote module name</li>
  <li>Click Finish</li>
</ol>
<p>Ensure that the project was shared properly (i.e. remote folders were created).

<a name="sharingbasics00001.html">
<h2>Basics</h2>
<p>Since: <br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

<p>Single select a project and select share.</p>
<ul>
<li>Should only be available if the project is not shared.
<li>Menu item should be available from the Project top level menu.
<li>Wizard should allow you to cancel at any time and un-map the project. Note that some resources may of been committed via the wizard that will remain committed.
<li>Should be able to share as a repository root {".") or a folder at any level (i.e. a folder name with one or more paths).
</ul>


<a name="00028.html">
<h2>Reconnecting an existing project</h2>
<p>Since: 3.0 M6<br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>
<p>
The following scenario represents how a user would reconnect a project that does
not contain CVS meta-data to it's remote counterpart. It is assumed that the local project 
was derived from a previous version of the remote project but both the local project and
the remote may have been modified since then.
</p>
<h3>Scenario 1: Existing location using project name</h3>
<p>Perform the following steps:</p>
<ol>
  <li>Load an existing project (using Checkout or you could import a plug-in project from the target area)</li>
  <li>Disconnect the project and indicate that CVS meta-data is to be deleted</li>
  <li>Modify some local resources</li>
  <li>Optionally, modify the remote contents of some resources using a separate checkout</li>
  <li>Perform a Team>Share Project and select CVS (if there is more than one 
  repository provider available).</li>
  <li>Select the repository the project was loaded from and click Next.</li>
  <li>Use the project name as the module name. Click Next.</li>
  <li>In the tag page, select HEAD as the branch to share with and click Next</li>
  <li>In the sharing page, only the files that do not have the same contents
  as the server should appear. Perform a Mark as Merged or Commit on these 
  files.
  <li>Click Finish.</li>
</ol>

<h3>Scenario 1: New location using curstom module name</h3>
<p>Perform the following steps:</p>
<ol>
  <li>Load an existing project using Checkout As and a different name</li>
  <li>Disconnect the project and indicate that CVS meta-data is to be deleted</li>
  <li>Discard the repository location<li>
  <li>Modify some local resources</li>
  <li>Optionally, modify the remote contents of some resources using a separate checkout</li>
  <li>Perform a Team>Share Project and select CVS (if there is more than one 
  repository provider available).</li>
  <li>Select to create a new repository and click Next</li>
  <li>Enter the repository information for the repository and click Next</li>
  <li>Enter the name of the module that the project was loaded from. Click Next.</li>
  <li>In the tag page, select HEAD as the branch to share with and click Next</li>
  <li>In the sharing page, only the files that do not have the same contents
  as the server should appear. Perform a Mark as Merged or Commit on these 
  files.
  <li>Click Finish.</li>
</ol>


<a name="00050.html">
<h2>Sharing a new project</h2>
<p>Since: 3.0 M8<br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

<h3>Scenario 1: Existing location using project name</h3>
<p>Perform the following steps:</p>
<ol>
  <li>Create a new project that does not exist in the repository</li>
  <li>Select Team>Share and select CVS (if there is more than one 
  repository provider available).</li>
  <li>Select a repository and click Next</li>
  <li>Use the project name as the module name. Click Next.</li>
  <li>After a time, the last page should show the outgoing changes in the project.
  Commit the changes from the synchronize pane.</li>
  <li>Click Finish</li>
</ol>

<h3>Scenario 2: New location using different name</h3>
<p>Perform the following steps:</p>
<ol>
  <li>Create a new project</li>
  <li>Select Team>Share and select CVS (if there is more than one 
  repository provider available).</li>
  <li>Select to create a new repository and click Next</li>
  <li>Enter the repository information for a new repository and click Next</li>
  <li>Enter a single segment module name that does not exist in the repository and click Next.</li>
  <li>After a time, the last page should show the outgoing changes in the project.
  Commit the changes from the synchronize pane.</li>
  <li>Click Finish</li>
</ol>

<a name="project_sets00001.html">
<h2>Project Sets</h2>
<p>Since: 2.1 <br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

<ul>
<li>Create a project set from a workspace with multiple projects shared with CVS. The shared projects in the workspace should include projects shared with the following: branch, version, date, and HEAD.
<li>Start with an empty workspace and import the projects using the import projects sets wizard.
<li>You should be prompted for a password and username for the locations.
<li>Ensure that the projects are checked out correctly and against the correct tag.
</ul>


<h1>Replacing</h1>
<a name="00045.html">
<h2>With latest</h2>
<p>Since: <br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

<p>Ensure that replace srubs the local resources leaving to outgoing changes. And verify the following:
<ul>
<li>
</ul>


<a name="00046.html">
<h2>With another branch of version</h2>
<p>Since: <br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

<p>Check the following for all cases of replace:
<ul>
<li>decorators are updated in the navigator/packages view and synchronize view.
<li>if a version is loaded that you can't commit to it
<li>if a branch is loaded, that you can commit to it.
</ul>

<p>
Also ensure that the tag filtering in the dialog works properly.


<a name="00047.html">
<h2>With file revision</h2>
<p>Since: <br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

<ul>
<li>If the file isn't managed the action should no appear.
<li>If the file doesn't have any revisions you should be prompted
<li>If the file has revisions you should be prompted with the list of revisions in a compare dialog
<li>In the compare dialog you can select any revision and compare changes but merging isn't supported
<li>If a revision is selected the Replace button should be enabled. Otherwise it should be disabled
<li>If you selected the replace button the file should contain the contents of the revision selected. The dialog will also close.
<li>Ensure that the titles are ok (e.g. dialog title, structure pane title...)
</ul>


<a name="update_command00001.html">
<h2>Updating</h2>
<p>Since: 2.0 <br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

<p>You can run an update and open the console to see the files that are being updated.</p>
<p>You can run the update and switch to another branch, this should keep your outgoing changes and update all other non-changed files.</p>


<h1>Comparing</h1>
<a name="00009.html">
<h2>Remote resources</h2>
<p>Since: 3.0 M5<br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>
<h4>Compare With... in Repositories view </h4>
<p>Perform the following steps:</p>
<ol>
  <li>Select a project in HEAD and choose Compare With... from context menu</li>
  <li>Select a branch tag</li>
  <li>Ensure result of comparison is correct</li>
  <li>Repeat and in step 2) use a version tag</li>
</ol>
<p>Repeat the above steps for a project in a branch and a project version.</p>
<p>Repeat the above steps for a selected folder and a selected file.</p>
<h4>Compare on two selections in Repositories view</h4>
<p>Perform the following steps:</p>
<ol>
  <li>Select a project in HEAD</li>
  <li>CTRL-select a project in a branch</li>
  <li>Choose Compare from context menu</li>
  <li>Ensure result of comparison is correct</li>
</ol>
<p>Repeat the above for various conbinations (branch + version, version + branch, 
  branch + branch, version + version).</p>
  <p>Repeat the above steps for a selected folder and a selected file.</p>
<h4>Compare on two selections in Resource History view.</h4>
<p>Perform the following steps:</p>
<ul>
  <li>Open Resource History view on a file with multiple revisions</li>
  <li>Select 2 and choose Compare from the context menu</li>
  <li>Ensure result of comparison is correct</li>
</ul>


<a name="00039.html">
<h2>Compare with another branch or version</h2>
<p>Since: M8<br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>
<p>
You should be able to select a project/folder/resource and compare againts
another branch or version. Multi-select should work across projects in 
different repositories. Once the comparison is shown it should be possible to
merge changes into the local workspace. It should also be possible to remember 
the comparison, which will cause it to appear in the synchronize view.</p>
<p>
We should support multi-selection of files, but I'm not sure what should be
shown to the user in those cases.</p>
<h3>On file selected</h3>
<ul>
<li>If the file has differences open a compare editor and show otherwise a message is shown to indicate that the file is the same.
<li>should be able to open the history view and link in to the opened compare editor
<li>the compare editor should update when changes are made to the local file in some other context (e.g other editor, refactoring).
</ul>

<h3>Multiple selection</h3>
<p>Entire contents of the folder are compared deep. If changes are found the user is notified and they are
shown in a dialog. If no changes are found the user is notified. The dialog should allow the user to browse
the changes and merge anything into his workspace. If the user wants to keep the comparison non-model, he
can add it to the synchronize view. There is a button to do so on the compare dialog.</p>

<h3>Merging changes</h3>
<p>
When the compare dialog is showing several changes you should be able to selectively merge anything into the local workspace. Specific attention should
be made to the following cases:
</p>
<ul>
<li>Edit the local then press ok. You should be prompted to save the changes and the changes should be correctly updated in the corresponding resource.
<li>Edit the local and browse to another file. You should be prompted to save the changes.
<li>Press the cancel button with changes, you should be prompted.
</ul>

<a name="00040.html">
<h2>Reverting deleted resources</h2>
<p>Since: M8<br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

You should be able to restore a deleted revision from the CVS server Team>Restore from Repository


<a name="quickdiff00001.html">

<h2>Quick Diff</h2>
<p>Since: <br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

<p>Enable CVS quick diff for text and java files via the Workbench > Editors > QuickDiff preference. Then try the following
scenarios.</p>

<ol>

<li>Open a file and make changes to it. You will see the quickdiff annotations
marking the changes. Next, run Team > Replace with latest. The annotations are
removed and the file is clean.

<li>same as 1 but this time instead commit the file. The quickdiff annotations
are removed and the file is clean.

<li>checkout two copies of the same project. Open file1 from both projects. Make
changes to file1 in project1 and commit the change. Synchronize project2 and
file1 from project1 will show the quickdiff annotations for the new incoming
changes.

<li> same as previous but this time actually update the file. The files quickdiff
annotations are removed and the file is clean.
</ol>


<h1>Synchronizing</h1>
<a name="00048.html">
<h2>Performing a Synchronize</h2>
<p>Since: 3.0<br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

<p>
Synchronizing means to compare your local workspace contents with the contents 
in another location with the goal that the two locations should contain the
same contents at some point.
</p>

<h3>Performing a Synchronize operation</h3>
<p>
There are a few ways of launching a synchronize operation. They all open the same dialog but the initial
selection is affected by where the operation is launched. Here is the list of ways to start a 
synchronize along with the expected initial selection.
<ul>
<li><b>Using the global synchronize action (via toolbar or keybinding)</b>: The 
selection should be obtained from the active view. If no view is active, all
projects should be selected.
<li><b>Using the Synchronize button in toolbar of the Synchronize view</b>: 
All projects should be selected.
<li><b>Selecting Synchronize from the context menu of resources in the synchronize view</b>:
The selection should match what was selected when the menu was selected.
<li><b>Selecting Team > Synchronize with Repository from the context menu of any resource based view</b>:
The selection should match what was selected when the menu was selected.
</ul>
</p>
<p>
Once launched, a synchronize will run in the background. Currently, the user is prompted to 
switch perspectives when the synchronize is launched. When a synchronize completes, the user is prompted either with a dialog stating there is no changes
or one that contains a details area that shows the incoming changes. The user
is given the option to supress the post-synchronize dialog.

<h3>Notice a file is out-of-sync in another view (e.g. packages explorer, types) and want to see the changes</h3>
<p>In case you can select a file, it will be refreshed with the server, and if changes are found the compare editor is opened
that will allow browsing the changes. If no changes are found, you will be prompted.</p>

<h3>From another view would like to browse the outgoing/incoming changes for several resources</h3>
<p>Select a folder or group of files and Team > Synchronize will open the sync view and automatically refresh with
the remote repository.</p>

<h3>In the sync view and would like to refresh to see if there are new changes from the server</h3>
<p>

</p>

Assumption, the sync view may or may not be open when the synchronize is performed. Maybe we need a different prompt
each case. One for Team > Sync and another for refresh from the sync view.


<a name="00011.html">
<h2>Synchronize View</h2>
<p>Since: 3.0<br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

<h3>Synchronize View Modes</h3>

<p>
Ensure that choosing direction modes result in proper filtering.
<ul>
<li>Incoming mode contains incoming changes and conflicts.</li>
<li>Outgoing mode contains outgoing changes and conflicts.</li>
<li>Both mode contains all change types.</li>
<li>Conflict mode contains only conflicts.</li>
</ul>
</p>
<p>
Also ensure that there are no empty containers (e.g folders or projects)
in any of the modes.</p>

<h3>Synchronize View Models</h3>

<p>
Ensure that each model contains the appropriate output. Models to test include:
<ul>
	<li>All Models: Projects should contain content from the highest level model 
	(e.g. Java projects contains Java content like packages while non-Java projects
	contains folders).</li>
	<li>Workspace: All projects are shown and contain folders. For this model, also test
	the presentation types (Flat, Hierarchical and Compressed Folders).</li>
	<li>Java: Only Java projects are present and contain Jva content (e.g. packages). Also
	ensure that any resource content is present (e.g. non-source folders).</li>
	<li>Change Sets: All changes are grouped by change set.</li>
</ul>
</p>
<p>
Also ensure that mode switching works properly for each model type.
</p>

<h3>Synchronize View Operations</h3>
<p>Ensure Commit and Update buttons:</p>
<ul>
  <li>operate on all applicable changes</li>
  <li>prompt in some form before executing</li>
</ul>
<p>Ensure Update menu action:</p>
<ul>
  <li>is enabled when selection contains incoming or conflicting changes</li>
  <li>operates only on selected changes</li>
  <li>silently handles mergable conflicts</li>
  <li>will prompt if conflicts are not mergable</li>
</ul>
<p>Ensure Commit menu action</p>
<ul>
  <li>is enable when selection contains outgoing changes</li>
  <li>prompts for unadded resources</li>
  <li>operates only on selected changes</li>
</ul>
<p>Ensure Override and Update</p>
<ul>
  <li>is enabled for outgoing and conflicting changes</li>
  <li>prompts to confirm</li>
  <li>operates only on selected changes</li>
</ul>
<p>Ensure Override and Update</p>
<ul>
  <li>is enabled for outgoing and conflicting changes</li>
  <li>prompts to confirm</li>
  <li>operates only on selected changes</li>
</ul>
<p>Ensure Mark as Merged</p>
<ul>
  <li>is enabled for incoming and conflicting changes</li>
  <li>operates only on selected changes</li>
</ul>

<p>Ensure Refresh button refreshes all projects regardless of mode, selection 
  or working set.</p>
<p>Ensure Refresh menu action refreshes only the selection</p>

<p>All actions on large sets</p>

The following table can be used to determine what operations are appropriate and what result to expect.

<table height="124" border="1" width="99%">
  <tbody>
    <tr>
      <td width="25%"><b>Change Type</b></td>
      <td width="25%"><b>Action</b></td>
      <td width="50%"><b>Result</b></td>
    </tr>
    <tr>
      <td width="25%"><b>Incoming File Change</b></td>
      <td width="25%">Update</td>
      <td width="50%">Remote contents become local. Try with both Text and
 Binary files.</td>
    </tr>
    <tr>
      <td width="25%"><b>Incoming File Change</b></td>
      <td width="25%">Mark as Merged</td>
      <td width="50%">File becomes an outgoing change.</td>
    </tr>
    <tr>
      <td width="25%"><b>Incoming File Addition</b></td>
      <td width="25%">Update</td>
      <td width="50%">Remote contents become local. Try with both Text and
 Binary files.</td>
    </tr>
    <tr>
      <td width="25%"><b>Incoming File Addition</b></td>
      <td width="25%">Mark as Merged</td>
      <td width="50%">File becomes an outgoing deletion.</td>
    </tr>
    <tr>
      <td width="25%"><b>Incoming File Deletion</b></td>
      <td width="25%">Update</td>
      <td width="50%">Local file is deleted.</td>
    </tr>
    <tr>
      <td width="25%"><b>Incoming File Deletion</b></td>
      <td width="25%">Mark as Merged</td>
      <td width="50%">File bcomes an outgoing addition.</td>
    </tr>
    <tr>
      <td width="25%"><b>Outgoing File Change</b></td>
      <td width="25%">Commit</td>
      <td width="50%">Prompt for release comment. Cancel aborts, OK commits
 local file to server.</td>
    </tr>
    <tr>
      <td width="25%"><b>Outgoing File Change</b></td>
      <td width="25%">Override and Update</td>
      <td width="50%">Remote contents become local. Try
 with both Text and Binary files.</td>
    </tr>
    <tr>
      <td width="25%"><b>Outgoing File Addition</b></td>
      <td width="25%">Add to Version Control</td>
      <td width="50%">Adds the file to version control. The icon should change
 in the sync view, and Commit should now be enabled.</td>
    </tr>
    <tr>
      <td width="25%"><b>Outgoing File Addition</b></td>
      <td width="25%">Add to .cvsignore</td>
      <td width="50%">Adds the file to .cvsignore. The file should disappear
 from the sync view. The .cvsignore file should appear (if it wasn't visible
 already). The file should not appear in subsequent syncs.</td>
    </tr>
    <tr>
      <td width="25%"><b>Outgoing File Addition</b></td>
      <td width="25%">Commit</td>
      <td width="50%">Prompt for release comment shoudl also include prompt for file
      type if the type of the new file is not known. Cancel
 aborts, OK commits local file to server.</td>
    </tr>
    <tr>
      <td width="25%"><b>Outgoing File Addition</b></td>
      <td width="25%">Override and Update</td>
      <td width="50%">Local file is deleted.</td>
    </tr>
    <tr>
      <td width="25%"><b>Outgoing File Deletion</b></td>
      <td width="25%">Commit</td>
      <td width="50%">Prompt for release comment. Cancel aborts, OK commits
 deletion to server.</td>
    </tr>
    <tr>
      <td width="25%"><b>Outgoing File Deletion</b></td>
      <td width="25%">Override and Update</td>
      <td width="50%">File is re-created, remote contents
 become local.</td>
    </tr>
        <tr>
      <td width="25%"><b>Conflicting File Change</b></td>
      <td width="25%">Update</td>
      <td width="50%">If the change is auto-mergable, the file becomes
      an outgoing change and includes the remote changes and the local changes.
      Otherwise, the user is prompted to indicate that a merge was not possible.</td>
    </tr>
    <tr>
      <td width="25%"><b>Conflicting File Change</b></td>
      <td width="25%">Mark As Merged</td>
      <td width="50%">File becomes an outgoing change.</td>
    </tr>
    <tr>
      <td width="25%"><b>Conflicting File Change</b></td>
      <td width="25%">Override and Update</td>
      <td width="50%">Dialog prompts user to replace local changes. If user
 cancels nothing happens. If user chooses OK, then local changes are discarded
 and remote contents replace local. No .# files created, no CVS markup, and
 the file is not dirty as a result.</td>
    </tr>
    <tr>
      <td width="25%"><b>Conflicting File Addition</b></td>
      <td width="25%">Mark as Merged</td>
      <td width="50%">File becomes an outgoing change.</td>
    </tr>
    <tr>
      <td width="25%"><b>Conflicting File Addition</b></td>
      <td width="25%">Override and Update</td>
      <td width="50%">Remote contents become local.</td>
    </tr>
  </tbody>
</table>


<a name="00049.html">
<h2>Decorations</h2>
<p>Since: M8<br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

There are many standard decorations in the sync view. Most significant are the propagated flags.

<h3>Conflicts</h3>
<p>
Conflicting changes should be propagated to parent resources such that you can easily see, when the tree
is collapsed that there are conflicts. When the conflict is resolved, the parent conflict markers should be
removed.
</p>
<h3>Error and Warning problem markers</h3>
<p>
Error and warning makers are shown on resources and propagated to parent resources such that you can
easily see if you are releasing errors or warnings.
</p>
<h3>Branch changes</h3>
<p>
Changes to branches, revisions, should be updated automatically in the views decorators. For example, if you branch 
from the sync view the branch name should appear.
</p>


<a name="change_sets00001.html">
<h2>Change Sets Layout</h2>
<p>Since: 3.1 M2<br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

<h3>Change Sets for incoming changes</h3>

To perform these scenarios you will need to get one or more projects 
in your workspace that have many incoming changes. Perferably
all the changes will have commit comments and some files will share
a comment. Once you have this setup, you can perform the following sub-scenarios.

<h4>Enabling/disabling Change Sets</h4>
<ol>
<li>Synchronize the projects with HEAD, enable change set mode and
ensure that the files appear in the proper change sets. Also ensure that 
the proper sub-layout is used by expanding some of the nodes in the tree.
<p>
<li>With some nodes expanded and additionally one or more selected, 
disable Change Sets. The same nodes should remain expanded and selected.
<p>
<li>With the same nodes selected and expanded, re-enable change sets.
The expansion should remain. There may be more expanded if the same
expanded project or folder appears in multiple change sets. The selection
will remain unless there are two entries for the same resource (i.e. if a project
was selected and it apears in multiple sets, it will no longer be expanded).
</ol>
You should also confirm that markers and conflicts are properly propogated to
parent nodes.
<h4>Change Set Layouts</h4>
Now try the various sub-layouts (Flat, Tree and Compressed) and ensure that switching
is performant and that the resulting tree nodes are correct.

<h4>Change Set Modes</h4>
<ol>
<li>Switch between the various modes and ensure that the displayed nodes are correct.
Also ensure that expansion and seleciton is maintained.
<li>Only Incomign and Outgoing mode shw change sets.
</ol>

<h4>Updating</h4>
With several nodes expanded, perform an update on one or more files
that are incoming changes.
Ensure that the updated files are removed from the view and that 
other expanded nodes remain expanded.

<h3>Outgoing  Sets</h3>

The following aspects of outgoing change sets should be tested.
<ol>
<li>Modified files can be added to a new or existing change set. Ensure that
when they are added, he file remains visible in the Sync view.
<li>Files in a change set can be transfered to another change set
<li>If there is a default change set, any modified file that is not already
part of a change set is placed in the default set. Files that are already
in a set should stay in that set if more changes are made to the files.
<li>The title and comment of a  change set can be changed.
<li>Layout and modes changes work properly for outgoing change sets in the
Synchronize view.
<li>ing one or more files in a change set will result in a commit 
dialog that is primed with the comment from the set.
<li>change sets (including which is the default), are preserved accross restarts.
</ol>


<a name="sync00001.html">
<h2>Scenarios</h2>
<p>Since: <br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

<h3>Making Manual Changes</h3>
<p>Create a conflicting file change. Manually edit the left source pane in
 the sync view. Hit "Save" on the popup menu. The file should remain a Conflict. Choose
 Mark as Merged in the popup menu of the tree. The file should change to
an  outgoing change. Commit the outgoing change.</p>
<h3>Merging Conflicts</h3>
<p>Try Override and Update with different combinations of Auto-Mergeable
and Non-Mergeable conflicts in the selection. If all conflicts are Non-Mergeable,
 then the only choice is to replace with remote or cancel. If one or more
conflicts are Auto-Mergeable, the choices are (a) Auto-Merge any applicable
files, and replace the rest with remote, (b) Replace all files with remote
or (c) Cancel.</p>
<h3>Removing from View</h3>
<p>Choose Remove from View. Selected nodes should disappear. Refresh the
view. The nodes should reappear.</p>

<h3>Working with Branches</h3>
<p>Try any and all of the above, but use a branch instead of HEAD. Behaviour
 should be identical. The sync view decorator should show you the name of
the branch.</p>
<h3>Using Mixed Tags</h3>
<p>Using Team-&gt;Branch, Replace With-&gt;Branch or Version, and Team-&gt;Tag
 as Version, you can create a project which has different tags mixed into
it. For example, one folder may be shared as V2_0, a single file may be attached
 to the branch NEW_FEATURE_BRANCH, and the root of the project may be attached
 to HEAD. We need to test usage of these projects in the sync view. For example,
 if developer 1 has project P shared with HEAD, and folder P/F is shared
with  branch B, have developer 2 release a change to folder F in HEAD, and
have  developer 1 perform a sync. In this case developer 1 should not see
the incoming  change.</p>


<h1>Commit</h1>
<a name="commit00002.html">
<h2>Committing Changes</h2>
<p>Since: 3.1 M4<br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

<h3>Commiting changes to existing files</h3>
<ol>
	<li>Edit some existing files in a CVS project
	<li>Choose Team>Commit on the project from the Navigator
	<li>The commit dialog should show a preview of the files that are to be committed and allow a commit comment to be entered.
</ol>
<p>
Some things to try:
<ul>
	<li>Committing a project (or selected resources) that contain no changes will prompt to indicate this.
	<li>Files can be removed from the preview area and these will be excluded from the commit.
	<li>Clicking OK without entering a comment should prompt.
	<li>Emptying the preview area will disable the Finish and show a "no changes" message.
	<li>Try different page layouts (compressed, tree and flat)
</ul>

<h3>Commiting new files</h3>
<ol>
	<li>Add a few new files to a project including some with unknown extensions and some with no extensions.
	<li>Choose Team>Commit on the project from the Navigator
	<li>The first page of the commit wizard will allow you to configure the file types for any new files whose content type
	cannot be determined.
		<ul>
		<li>Configure some to be remembered and others to be only applied to this commit (verify after that this was done properly)
		</ul>
	<li>Click Next and verify that the content type was determined properly.
	<li>Choose to ignore one of the files and verify that the file is removed and the .cvsignore appears.
</ol>

<h3>Commiting files contained in a Change Set</h3>
<ol>
	<li>From the Synchronize view, select all the changes from the same Change Set.
	<li>Choose Commit and verify that the comment in the commit dialog is the one from the change Set.
</ol>


<h1>Tags</h1>
<a name="tags00002.html">
<h2>Tag Selection in Dialogs</h2>
<p>Since: 3.1 M4<br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

Tag lists appear in many dialogs:
<ul>
<li>Replace with Branch or Version
<li>Compare with Branch or Version
<li>Share of existing project
<li>Switch to Another Branch or Versions
<li>Tag with Existing
<li>Tag as Version
</ul>

<p>
In each of these places, typing in the tag text field will filter the list of shown tags. 
The option to Refresh and Configure tags should also be present. Refreshing behavior should be as follows:

<ol>
	<li>If an auto-refresh file (.project by default) exists and has tags, the tags are obtained from the file.
	<li>If there is no auto-refresh file, the log command is used to determine if there are any tags in the files
	that are direct children of the remote folder.
	<li>If no tags are found, the user is prompted to either perform a deep log to find any tags or configure the
	tags manually.
</ol>


<a name="tags00003.html">
<h2>Tag Caching</h2>
<p>Since: 3.1 M4<br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

Discovered tags are cached locally to improve performance. Caching is done in the following ways:

<ol>
<li>Tags discovered for local resources are cached with the rmeote folder that the resource's project is mapped to.
<li>Tags discovered for remote resources are cached with the resource if it is a folder or the resource's parent if it is a file.
</ol>

To test this, you can try one or more of the following:
<ol>
<li>Perform Compare With on folders and subfolders in the repositories view. The first time, you will need to perform a Refresh \
but subsequent times, the tags should be cached.
<li>Load non-root folders as projects and ensure tags are cached and obtained properly.
<li>Perform Tag with Existing in the History view and ensure that tags are obtained from the file
</ol>


<h1>Branch/Merge</h1>
<a name="00022.html">
<h2>Performing a Merge</h2>
<p>Since: 3.1<br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>


<h3>Scenario 1: One Time Merge</h3>

<p>
Using Team>Merge, merge the changes from a branch into HEAD. Once completed, in the synchronize view, 
update the incoming changes, resolve any conflicts and ensure they worked, After updating, 
redo the same merge. A no-changes dialog should be 
presented since the local contents match the end-point.

<p>
Things to try:
<ul>
<li>Use content assist to select an existing branch for the end tag. A root versions should ne automatically found if it exists.
<li>Choose to perform the merge into the local workspace. Ensure it works with and without a start tag.
</ul>

<h3>Scenario 2: Ongoing Merge</h3>

After performing a one-time merge, pin the entry in the synchronize view. 
Release changes to the end point (branch) and synchronize the merge.
The new changes should appear in the synchronize view. Update to these
changes as appropriate.

<h3>Scenario 3: Direct Merge</h3>

Perform a Team>Merge and choose to merge directly intro the workspace. Try both the
case with a base tag and without it.
 
<h3>Removing a Merge</h3>

<p>Delete the merge from the synchronize view using the remove toolbar button. The merge subscriber should be removed from the view.


<a name="00013.html">
<h2>Synchronize View</h2>
<p>Since: 3.0 M5<br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>
<ul>
<li>Same scenarios as <a href="00011.html">CVS Synchronize View</a> except you can't commit.
<li>Test mark as merged (ensure that it can work on large data sets)
</ul>

<a name="branch00001.html">
<h2>Branching</h2>
<p>Since: 3.1 M4<br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

<ol>
<li>Choose Team>Branch from the context menu of the Navigator.
<li>Enter a branch tag.
<li>Verify that a version tag is proposed for the branch
<li>Click OK and verify that the tags are applied and the local project is mapped to the branch
</ol>
<p>
Some things to try:
<ul>
	<li>Uncheck the "start working on branch" option and verify that the local project is not moved to the branch.
	<li>Branch a loaded version and verify that the tag from the project is used as the root.
	<li>Ensure that the content assist on the branch text widget shows branches from other projects in the workspace
	that do not exist on the project being branched.
	<li>Branch with local changes and ensurethat they remain and can be committed to the branch
</ul>


<h1>Patching</h1>
<a name="00030.html">
<h2>Importing a zip over a shared project</h2>
<p>Since: 3.0 M6<br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

<p>This scenario captures one means of patching. It assumes that a zip file contains 
a previous version of a project that has been modified in some way and added to
a zip archive (without CVS directories).</p>

<p>Perform the following steps:</p>
<ol>
  <li>Load the project from CVS (using Checkout or some other means)</li>
  <li>Import the zip over the loaded project.</li>
  <li>Ensure that the sync states are Outgoing for all resources from the zip file.</li>
  <li>Ensure that all folders from the zip file (except new ones)
  are marked as in-sync and all files (except new ones) are outgoing changes.
  <li>Changing the comparison criteria to compare contents should not contact the server
  and should leave only the resources that differ in the sync view. Perform a 
  Mark As Merged and a Commit on these resources.</li>
  <li>Changing the comparison criteria back to revision number will reveal all the files
  whose content did not change, perform a Mark as merged on these resources followed by 
  a Team>Update on the project in the Navigator (Note: This could be handled better).</li>
  <li>After the update, ensure the project has no out-of-sync resources.</li>
</ol>


<h1>History View</h1>
<a name="00018.html">
<h2>Editor Linking</h2>
<p>Since: 3.0 M5<br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

<ol>
  <li>Open the Resource History view and enable editor linking</li>
  <li>Open a compare editor from the sync view (on a resource that exists remotely) 
    and ensure that the history view updates.</li>
  <li>Open an editor from the Repositories vew and ensure that the history view 
    updates.</li>
  <li>Open an editoron a local file and ensure that the history view updates.</li>
</ol>
<p>Repeat the above with the Resource History view hidden and ensure that no revision 
  history is fetched (i.e. no jobs appear in progress view).</p>


<a name="toolbarButtonsUMFile00001.html">
<h2>Common Toolbar Buttons</h2>
<p>Since: 3.2 RC2 <br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

<p><b>Purpose:</b> Test the functionality of the various buttons common to both the Local File History page and the CVS History page</p>

Note: Even though the functionality is the same for both pages, the tests should be conducted on both an unmanaged file and a CVS file as each history page has its own respective implementation for the following actions.
<hr></hr>
<h3>Compare Mode</h3>
<p>
<ol>
  <li>With a file history in the History View and the Compare Mode button <b>off</b>, click on any revision and
  verify that it opens that revision.</li>
  <li>Click the Compare Mode button <b>on</b> and verify that clicking on any local file revision will now bring up the compare editor.</li>
  <li>Verify that turning the Compare Mode button off again switches back to Open mode.</li>
</ol>
</p>
<hr></hr>
<h3>Collapse All</h3>
<p>
<ol>
  <li>With a file history in the History View, and the Group by Date button <b>on</b>, click the Collapse All button.</li>
  <li>Verify that all of the items in the tree are collapsed.</li>
</ol>
</p>
<hr></hr>
<h3>Group Revisions By Date</h3>
<p>See <a href="groupByDateUMFile00001.html">Group Revisions By Date</a></p>
<hr></hr>
<h3>Pin History View</h3>
<p>See <a href="pinHistoryView00001.html">Pin History View</a></p>
<hr></hr>
<h3>Link With Editor</h3>
<p>See <a href="00018.html">Link With Editor</a></p>
<hr></hr>
<h3>Refresh</h3>
<p>See <a href="refreshHistory00002.html">Refresh</a></p>

<a name="groupByDateUMFile00001.html">
<h2>Group Revisions by Date</h2>
<p>Since: 3.2 RC2 <br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

<p><b>Purpose:</b> Test the group by date mechanism for both local history and cvs history.</p>

<ol>
  <li>Open the History view.</li>
  <li>Roll back your system clock 1 day, make a change to your local unmapped file and save it.</li>
  <li>Roll back your system clock to the beginning of the month and make some changes to the local unmapped file and save it.</li>
  <li>Roll back your system clock to anywhere before the beginning of the current month, make a change to the local unmapped file and save it.</li>
  <li>Reset your clock to the current date and show the file's history (DND or [Team>Show Local History]/[Team>Show History] for local and CVS files respectively).</li>
  <li>Verify that the revisions appear in the appropriate categories: Today, Yesterday, This Month and Previous.</li>
  <li>Click the Group by Revisions Date button and make sure that the categories toggle on and off.</li>
</ol>

<p>The above should be tested with history from both an unmanaged file and a CVS file.</p>

<h1>Local History for Unshared Files</h1>
<a name="DNDUMFile00001.html">
<h2>Drag and Drop Unmapped File</h2>
<p>Since: 3.2 RC2 <br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

<p><b>Purpose:</b> Test the DND mechanism for unmapped files.</p>

<ol>
  <li>Open the History view.</li>
  <li>Drag the local file over to it.</li>
  <li>Ensure the the history view shows the appropriate history (i.e. all revisions
  present and proper filename in the title bar).</li>
</ol>
<p>Drag another file over to the History View from a project that is <i>shared with a CVS repository.</i> Repeat the above
and make sure that the View updates.</p>


<a name="showHistoryUMFile00001.html">
<h2>Show History Unmapped File</h2>
<p>Since: 3.2 RC2 <br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

<p><b>Purpose:</b> Test the page activation mechanism for unmapped files.</p>

<ol>
  <li>Open the History view.</li>
  <li>Select the local file,  right click and select Team>Show Local History.</li>
  <li>Ensure the the history view shows the appropriate history (i.e. all revisions
  present and proper filename in the title bar).</li>
</ol>
<p>Populate the History View with another file from a project that is <i>shared with a CVS repository.</i> Repeat the above
and make sure that the View updates.</p>


<h1>CVS History</h1>
<a name="DNDCFile00001.html">
<h2>Drag and Drop CVS File</h2>
<p>Since: 3.2 RC2 <br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

<p><b>Purpose:</b> Test the DND mechanism for CVS files.</p>

<ol>
  <li>Open the History view.</li>
  <li>Drag the CVS file over to it.</li>
  <li>Ensure the the history view shows the appropriate history (i.e. all revisions
  present and proper filename in the title bar).</li>
</ol>
<p>Drag another file over to the History View from a project that is <b>not</b> shared with a CVS repository. Repeat the above
and make sure that the View updates.</p>

<a name="00024.html">
<h2>Annotate</h2>
<p>Since: 3.0 M6<br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

<h4>Annotate action should be available from</h4>
<ul>
<li>history view, repo explorer, resource/packages view
</ul>

<h4>Annotate java files</h4>
<ul>
<li>should show the java editor
<li>you should be able to step through changes in the annotate view and the java editor should
stay in sync (e.g. highlight) the changes associated with the selected change in the annotate view.
<li>you should also be able to select a line in the java file and the annotate view should
select the change that is associated with that line.
<li>the history view should show the history for the opened file and highlight the revision
of the currently selected change in the annotate view.
</ul>

<h4>Annotate non-text editor files</h4>
<ul>
<li>annotate plugin.xml file
<li>the default text editor should be shown
<li>you should also be able to select a line in the text file and the annotate view should
select the change that is associated with that line.
<li>the history view should show the history for the opened file and highlight the revision
of the currently selected change in the annotate view.
</ul>

<h4>Annotate binary files</h4>
<ul>
<li>annotate a file marked as binary
<li>the server should report an error that annotations cannot be shown for binary files.
</ul>


<a name="modeSwitching00001.html">
<h2>Mode Switching</h2>
<p>Since: 3.2 RC2 <br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

<p><b>Purpose:</b> Test the mode switching for the CVS History Page.</p>

<h3>Basic Mode Testing</h3>
<p>
<ol>
  <li>Open the History view.</li>
  <li>Open any file that is being managed by CVS.</li>
  <li>Edit the file and save.</li>
  <li>Show the history for the file.</li>
  <li>Click on the Local and Remote Revisions button. Verify that you can see both remote revisions and local revisions.</li>
  <li>Click on the Local Revisions button. Verify that you can see only local revisions. Note: <i>No background fetching should occur when you switch modes!</i></li>
  <li>Click on the Remote Revisions button. Verify that you can see only remote revisions.  Note: <i>No background fetching should occur when you switch modes!</i></li></li>
</ol>
</p>

<h3>Mode Persistence Testing</h3>
<p>
<ol>
  <li>Open the History view.</li>
  <li>Show the history for the file.</li>
  <li>Click on one of the modes, remember it and close the history view.</li>
  <li>Show the history for a file again and verify that it is in fact the same mode that you had set prior to closing the history view.</li>
</ol>
</p>


<a name="pinHistoryView00001.html">
<h2>Pin History View</h2>
<p>Since: 3.2 RC2<br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

<p><b>Purpose:</b> Test the pinning behaviour of the history view.</p>

<h3>Simple Pinning</h3>
<p>
<ol>
  <li>With a file history in the History View, hit the Pin button.</li>
  <li>DND a file onto the pinned history view.</li>
  <li>Verify that a new history view instance opens with the history of the new file displayed.</li>
  <li>Drag another file onto the pinned instance and verify that it too goes to the new unpinned view.</li>
</ol>
Repeat the above using both a CVS file and an unmanaged file.
</p>

<h3>More Pinning</h3>
<p>If a one of the views already contains a file, that file should always update the pinned 
view.
<ol>
  <li>With a file history in the History View, hit the Pin button.</li>
  <li>DND a file onto the pinned history view.</li>
  <li>Verify that a new history view instance opens with the history of the new file displayed.</li>
  <li>Now show the history for the original file in the pinned view. The pin view should come to the fore front.</li>
</ol>
</p>

<a name="refreshHistory00002.html">
<h2>Refresh</h2>
<p>Since: 3.2 RC2<br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

<p><b>Purpose:</b> Test the two types of refresh behaviour available in the history view</p>


<h3>Automatic Refresh</h3>
<p> When a local file is modified and saved, a refresh event is sent out and the history view should show the newest revision. This 
will work for both local history and CVS history files. (CVS files need to have the history view in the appropriate viewing mode: either 
"Remote and Local Revisions" or "Local Revisions".)
<ol>
  <li>With a file history in the History View, and the viewer in an appropriate mode if a CVS file, open an editor on the workspace
  copy of the file in the history view.</li>
  <li>Edit the file and save.</li>
  <li>Verify that a new local revision gets added to the history view which reflects your change.</li>
</ol>
</p>

<h3>Manual Refresh</h3>
<p> There is also a Refresh button on the toolbar. This is mainly useful for CVS file histories if you want to check if any revisions have been committed.
Note that its not really of any use for local revisions as they are updated automatically.
<ol>
  <li>With a CVS file history in the History View, make a change to the file and save. (You should see the local version updated in the history view.)</li>
  <li>Commit the file.</li>
  <li>Hit the Refresh toolbar button and verify that the new revision gets displayed in the history view,</li>
</ol>
</p>


<h1>Concurrency</h1>
<a name="00021.html">
<h2>Close and disconnect</h2>
<p>Since: 3.0 M5<br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

<h4>Background refresh and disconnect</h4>
<ol>
  <li>Load several projects from the repository</li>
  <li>Ensure that several have outgoing and incoming changes</li>
  <li>Choose one project to disconnect. The project should have incoming and outgoing 
    changes and be one of the later ones in the refresh order (alphebetical).</li>
  <li>Perform a refresh on all the projects</li>
  <li>While the refresh is occuring, disconnect the project chosen in step 3) 
    and leave CVS folders.</li>
  <li>Ensure that the project is removed from the sync view and no errors occur</li>
</ol>
<p>Repeat the steps and purge the CVS meta-data in step 5).</p>
<p>Repeat the above steps but change the operation in step 5) to the following:</p>
<ul>
  <li>close project</li>
  <li>project where server is unreachable</li>
  <li>delete project</li>
  <li>binary project import over source project with outgoing changes</li>
</ul>
<h4>Decoration and disconnect</h4>
<ul>
  <li>Load several projects from the repository</li>
  <li>Ensure that several have outgoing and incoming changes</li>
  <li>Choose one project to disconnect. The project should have incoming and outgoing 
    changes and be one of the later ones in the refresh order (alphebetical).</li>
  <li>Turn on CVS decorators</li>
  <li>As the decorations are being calculated, disconnect all projects from CVS 
    control.</li>
  <li>Ensure that the project is removed from the sync view and no errors occur</li>
</ul>
<p>Repeat the above steps but change the operation in step 5) to the following:</p>
<ul>
  <li>close project</li>
  <li>project where server is unreachable</li>
  <li>delete project</li>
  <li>binary project import over source project with outgoing changes</li>
  <li>delete or move files and folders (to test move/delete hook)</li>
</ul>



<h1>Restarting Workbench</h1>
<a name="00019.html">
<h2>Crash Recovery</h2>
<p>Since: 3.0 M5<br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

<p>Scenario 1</p>
<ol>
  <li>Turn on deep dirty decoration</li>
  <li>Dirty a file and ensure that the file and it's parents are dirty</li>
  <li>Quit Eclipse so dirty state is persisted</li>
  <li>Restart and perform an override and update or commit and ensure file and 
    parents are clean</li>
  <li>Kill Eclipse</li>
  <li>Restart and ensure parents and file are clean</li>
</ol>
<p>Scenario 2</p>
<ol>
  <li>Check out two copies of the same project</li>
  <li>Dirty the same file in both projects, commit one and refresh the other in 
    the sync view so a conflict is visible</li>
  <li>Quit Eclipse so that the sync state is persisted</li>
  <li>Restart Eclipse and perform an Override and Commit on the conflict</li>
  <li>Kill Eclipse</li>
  <li>Restart Eclipse and ensure that the sync view doesn't show the file (i.e 
    the file is in-sync).</li>
</ol>


<a name="00025.html">
<h2>Synchronize View Settings</h2>
<p>Since: 3.0 M6<br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

<h4>Saved between sessions</h4>
<p>The following GUI preferences in the Synchronize View are persisted between workbench 
sessions. Also they are persisted for each participant. You should be able to create
a merge and workspace participant, then change the settings on each. Restart Eclipse and the settings 
should be maintained for each participant. The persisted settings are:</p>
<ul>
<li>mode
<li>layout
<li>working set
</ul>

<h1>SSH2</h1>
<a name="00029a.html">
<h2>Server version compatibiliity</h2>
<p>Since: M6<br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

This test is to ensure that the ssh2 connection method properly delagates to ssh1
when the server only supports ssh1. 


<a name="00030a.html">
<h2>Proxies</h2>
<p>Since: <br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

Using HTTP and SOCKS5 proxies.


<a name="00031.html">
<h2>Key Generation</h2>
<p>Since: <br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

You should be able to generate private/public keys in the SSH2 preference
page. Here are some scenarios for testing:
<ul>
<li>Generate keys and save private key without password. You should be prompted.
<li>Generate keys and save private key with password. You shouldn't be prompted.
<li>Generate keys and install using the sftp button.
</ul>

<a name="00032.html">
<h2>General use</h2>
<p>Since: <br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

This tests the prompting and usage of the SSH2 connection method:
<ul>
<li>Delete all files in your SSH_HOME directory. You can find this directory by opening the SSH2 preference page
<li>Create a CVS repository connection of type 'extssh'. You will be prompting about the server id not being in 
your known_hosts file.
<li>Select cancel, and error should be shown indicating that the location was not validated do you want to keep it.
</ul>

<h1>Annotate</h1>
<a name="00034.html">
<h2>Show Annotation Action</h2>
<p>Since: 3.0 M3<br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

<p>Annotate a non-managed file, binary file, plugin.xml file... Be creative.</p>
<p>Ensure that the annotate view, editor, and history view stay synched.</p>


<h1>Label Decorations</h1>
<a name="00036.html">
<h2>Enablement at startup</h2>
<p>Since: 3.0 M7<br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

<p>The CVS decorators should not be enabled at start-up. Verify the label decorator preference page.</p>
<p>When sharing or checking out a project, the decorators will be enabled automatically.</p>
<p>Disabling after they have been enabled and restarting. The decorators should be disabled. Checkout should not enable them again.</p>
<p>Enable the decorations again, then disconnecting a project should clear the decorators on the project.</p>

<a name="00037.html">
<h2>Customizations</h2>
<p>Since: 3.1 <br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

<p>You can customize the label decorations via the preference page. 
The customizations will
take effect when apply is pressed. Resetting the defaults should work.
</p>
<p>
You can also configure the font and color used for various resources states.
There should be a link from the CVs label decorations preference page to the
general colors and fonts preference page.


<a name="00038.html">
<h2>Decorations in the Synchronize pages</h2>
<p>Since: 3.0 M8<br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>
<p>
CVS text label decorations should be visible in the CVS synchronize participants. We don't bother to show
the images because the sync view already shows the state images. The labels should also update if the
'show change in label' preference is changed.
</p>
<p>
Also, in the CVS synchronize view the revisions shown are the <local> - <remote>. So ensure that the correct
remote is shown.</p>
<p>
Ensure that when the local tag changes the decorators in the sync view and navigator get updated.</p>
<p>Ensure that there is no flicker in packages view when cvs decorator updated on commit, update.</p>

<h1>Watch/Edit</h1>
<a name="watch_edit_basic00001.html">
<h2>Basic scenarios</h2>
<p>Since: <br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

<p>To setup, goto the CVS preference page and enable watch edit for all projects checked out from CVS. And then set the prompt option to always prompt.</p>
<ol>
<li>Check out a project from CVS and verify that the files are marked as read-only.
<li>Open a file and edit it. You should be prompted to edit it. Say yes. There should be a brief pause, then you can edit the file.
<li>Open another file and start editing it. You should be prompted to edit it. Say no. The file will remain read-only and you won't be allowed to edit it.
<li>Open a file and edit it. Say yes to the prompt. commit the file and edit again. You should be prompted a second time.
<li>Open a file and edit it. Say yes to the prompt. Replace the file from the repository and edit again. You should be prompted to edit again.
<li>Open a file and edit it. Un-plug your network connection. Say yes to the prompt to send a notification. There should be a pause, then the file should be editable.
<li>Checkout another copy of the project. Edit a file, then try to edit the same file in the another project copy. You should be notified that the file is currently being edited by someone else.
</ol>

<p>Saving files - setup is the same as previous</p>
<ol>
<li>Check out a project from CVS and verify that the files are marked as read-only.
<li>Open a file and edit it. You should be prompted to edit it. Say yes. There should be a brief pause, then you can edit the file.
<li>Edit the file but don't save it. 
<li>Edit the file in a system editor outside of Eclipse, then in the resource navigator, commit the file. The resource's decorator will change. Ignore all the prompts
about saving the un-saved file.
<li>Return to the unsaved editor and try typing. You should be prompted to call validate edit again.
</ol>

<p>validateEdit fails</p>
<ol>
<li>Check out a project from CVS and verify that the files are marked as read-only.
<li>Disconnect from network so that the validateEdit would fail.
<li>Open a file and edit it. You should be prompted to edit it. Say yes. There should be a pause then the error should be reported in the
editor pane showing the exception that occured.
</ol>

<p>Refactoring</p>
<ol>
<li>Check out a project from CVS and verify that the files are marked as read-only.
</ol>


<a name="watch_edit_editorsview00001.html">
<h2>Editors View</h2>
<p>Since: <br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>
<p>Test that you can properly show the editors on a file.</p>

<h1>Performance</h1>
<a name="perf00002.html">
<h2>Timings</h2>
<p>Since: 3.0<br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

This section contains various timing results and comparisons.

<h3>Overview</h3>

The purpose of this section is to provide a small set of tests that can 
be used to benchmark the Eclipse CVS client. The areas tested are:

<ol>
<li>Checkout
<li>Synchronizing
<li>Updating
</ol>

<h3>Setup</h3>

The following should be considered when obtaining timings:

<ul>
<li>The Progress view in verbose mode can add 20% or more to times. 
In regular mode, it can still add a bit to the time. For these timings,
the view was open but hidden.
<li>The Console view can add as much as 20% to times. For these tests,
the console was turned off entirely.
<li>Running an eclipse operation several times will "warm-up" the code path
due to JIT. The timings for Eclipse were usually the secodn or third
timing obtained.
</ul>

The following numbers were obtained on a 2.8GHz PC running GTK, Sun 14.2
with autobuild off and operations run in the forground. The project used was 
org.eclipse.jdt.tests.refactoring. It has a large number of folders and files 
which give interesting times. The date the timings were obtained were May 31st, 2004
so similar numbers can be obtained for comparison using the project snapshot at that time 
(which can be obtained using a Date tag).

<h3>Checkout</h3>

Checkout of org.eclipse.jdt.tests.refactoring as of 2004/05/31. The timings are
in "mm:ss" and were obtained by obervation (i.e. stopwatch).

<ul>
<li>Eclipse 3.0 over pserver: 3:00 to 3:30 (several timings)
<ul>
<li>Timings increased slightly with progress view visible and considerably
with progress view in verbose mode.
</ul>
<li>CLI over pserver: 3:00 (1 timing)
</ul>

<h3>Synchronize</h3>

Synchronizing of org.eclipse.jdt.tests.refactoring as of 2004/05/31. The timings are
in "mm:ss" and were obtained by obervation (i.e. stopwatch).

<h4>Synchronize with no changes</h4>

<ul>
<li>Eclipse 3.0 over pserver: 0:45
<li>CLI over pserver: 0:42 ("cvs -n update")
</ul>

<h4>Synchronize with all outgoing, no incoming</h4>

<ul>
<li>Eclipse 3.0 over pserver: 1:00
<li>CLI over pserver: 2:20 ("cvs -n update")
</ul>

<h4>Synchronize with incoming changes</h4>

Incoming changes were simulated by loading version v20040106 and
then removing the tag (using a special utility action). This resulted 
in 393 incoming changes.

<ul>
<li>Eclipse 3.0 over pserver: 0:55
<li>CLI over pserver: 0:45 ("cvs -n update")
</ul>

The timing for Eclipse also includes the status command to fetch the revisions for the 393 incoming changes.

<h3>Update</h3>

These timings were obtained using Team>Update for Eclipse and "cvs update ." for the CLI.

<h4>Update with no changes</h4>

<ul>
<li>Eclipse 3.0 over pserver: 1:15, 1:25 (2 timings)
<li>CLI over pserver: 1:15 ("cvs update")
</ul>

<h4>Update with all false outgoing changes (using touch) </h4>

<ul>
<li>Eclipse 3.0 over pserver: 2:20
<li>CLI over pserver: 2:20
</ul>

<h4>Update with incoming changes</h4>

Incoming changes were simulated by loading version v20040106 and
then removing the tag (using a special utility action). This resulted 
in 393 incoming changes.

<ul>
<li>Eclipse 3.0 over pserver: 1:55
<li>CLI over pserver: 1:55 ("cvs -n update")
</ul>


<a name="perf00004.html">
<h2>Resource Data Structures</h2>
<p>Since: 3.0<br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

This section contains results on memory footprint of CVS in the Core resource
plugin data structures. More specifically, CVS uses the session and persistant property
caches along with the synchronizer.

<h3>CVS Workspace Sync info caches</h3>

Checking of the cahce usage requires the use of the Core spy tools. To
obtain the memory footprint, perform the following steps.

<ol>
<li>Install the Core Spy Tools
<li>Launch Eclipse
<li>Checkout several projects
<li>Open the Element Tree Spy to get the memory footprint. At the
time of writting, CVS is the main user of these structures. In future
test, ensure that others are not contributing to the tally.
<li>Disconnect all the projects
<li>The Element Tree Spy memory footprint should be reduced accordingly
</ol>

The following snapshot of the resource element tree was taken after checking out all of the projects
(294 as of 2004/05/31) in dev.eclipse.org.

<pre>
Total resource count: 89,466
	Team private: 10,186
	Phantom: 4,055
	Markers: 0
	SyncInfo: 10,432
Number of layers: 15
Number of nodes: 89,514
Number of non-identical strings: 48,456
Total memory used by nodes: 23,141,343
	Nodes and ResourceInfo: 8,586,108
	Strings: 3,584,724
	Markers: 0
	Sync info: 1,447,861
	Session properties: 9,522,650
		class [B: 2,618,076
		class [Ljava.lang.Object;: 2,564,448
		class org.eclipse.core.internal.utils.ObjectMap: 1,700,240
		class [C: 1,454,994
		class java.lang.Long: 610,800
		class java.lang.String: 286,580
		class org.eclipse.team.internal.ccvs.core.syncinfo.FolderSyncInfo: 285,292
		class java.util.ArrayList: 768
		class org.eclipse.team.internal.ccvs.core.util.StringMatcher: 660
		class org.eclipse.team.internal.ccvs.core.util.FileNameMatcher: 320
		class [Ljava.lang.String;: 300
		class org.eclipse.core.runtime.QualifiedName: 160
		class java.lang.Object: 12
The top 20 equal but non-identical strings are:
	A.java->2,002
	in->1,219
	plugin.xml->913
	out->794
	A_out.java->489
	A_in.java->487
	eclipse->431
	org->421
	Test.java->412
	B.java->345
	build.properties->297
	I.java->269
	internal->256
	about.html->253
	plugin.properties->243
	.cvsignore->227
	.classpath->209
	ui->185
	src->184
	package.html->165
</pre>

<h3>CVS Merge memory usage</h3>
Merging in CVS makes use of the Core synchronizer. Perform the following steps 
with the Core Spy Tool installed to
ensure proper memory management.

<ol>
<li>Checkout one or more projects
<li>Open the Element Tree Spy to get the memory footprint. 
<li>Perform a merge
<li>Open the Element Tree Spy to get the memory footprint. The only increase
should be in the synchronizer.
<li>Remove the merge from the sync view
<li>The Element Tree Spy memory footprint should be reduced accordingly
</ol>

<a name="perf00005.html">
<h2>Looking For Leaks</h2>
<p>Since: <br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

<h3>Removing synchronize view entries</h3>

<ol>
<li>Start with an empty synchronize view
<li>Create an entry in the Synchronize view for each of the following cases:
	<ul>
	<li>Team>Synchronize
	<li>Compare with>Branch or Version
	<li>Team>Merge
	</ul>
<li>Open the context menu
<li>Select all mode and layout combinations
<li>Remove the entry (making the sync view empty).
<li>Select an item in another view
<li>Using a memory profiler, look for instances of the following classes:
	<ul>
	<li>ISynchronizeParticipant
	<li>SynchronizeModelElement
	<li>SyncInfo/SyncInfoSet
	</ul>
</ol>

<h3>Closing the Synchronize view</h3>

Close all instances of the Synchronize view and ensure that no instances
of ISynchronizeView remain.


<a name="perf00006.html">
<h2>Team Data Structures</h2>
<p>Since: <br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

The Team component provides several data strucutures that can be used to 
cache resource synchronization state and resource variants for improved 
performance. The plan is to provide tools to interogate these caches in the 3.1 timeframe.

These caches include:

<ul>
<li>Resource Variant cache
<li>SubsciberParticipant/SyncInfoSet
</ul>

<h3>CVS Specific data structures</h3>

CVS uses several caches to improve performance. Tools should be provided to query the
size of these caches as well.

<ul>
<li>Console (caches contents while not visible)
<li>Resource History View log entry cache
<li>Commit Sets log entry cache
</ul>


<a name="perf00007.html">
<h2>Scalability</h2>
<p>Since: <br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

The following scenario can be used to test a large number of incoming additions.

<ol>
<li>load org.eclipse.jdt.core.tests.model from dev.eclipse.org
<li>Disconnect Formatter folder and delete it
<li>Synchronize and the contents show up as incoming additions
<li>Peform an Update in the project in the sync view.
</ol>


<h1>Failure Cases</h1>
<a name="connections00001.html">
<h2>Connections</h2>
<p>Since: <br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

<p>Test that authentication, connection errors result in appropriate error messages and that these don't pollute the log file or console. to setup for these tests
ensure there are a couple of shared projects in your workspace.</p>
<ul>
<li>Clear you log file before starting the tests and turn on the CVS quick diff provider.
<li>Perform an update, a synchronize, and open a file. The log should be empty and the operations should succeed.
<li>Disconnect from the network.
<li>Open a file. The CVS quick diff will fail and an error should be in the log.
<li>Synchronize all the shared projects. One error explaining the failures should be returned.
<li>Change the connection properties of one of the projects to point to an non-existing location. Then synchronize again, the error message should indicate that some succeeded and
others failed. But the user should no that the operation did complete and skipped the failed projects.
<li>Expand the invalid  location in the CVS repositories view. An appropriate error should be shown.
</ul>


<a name="auth_problems00001.html">
<h2>Authentication Problems</h2>
<p>Since: <br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

<p>

Test the error reporting when authentication fails due to either, invalid username, password, hostname. This should be
tried with each CVS connection method: pserver, extssh, ext.

</p>


<h1>Misc</h1>
<a name="00042.html">
<h2>CVS Console</h2>
<p>Since: <br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

There are a couple of preferences that controls the behavior and presentation of the console. 
To enable this testing, you must first enable font and label decorations. This can be done
by going to <i>Window/Preferences/Team/CVS/Label Decorations</i> and checking off <b>"Enable font
and color decorations"</b>.
<p>
These are:
<ul>
<li>font: changing the font should immediately update the sync view as well as all other views decorated by CVS (ie. Package Explorer).
<li>font color: message color, error color, command line. Changing these should immediatly update the console view.
</ul>
</p>

<a name="encoding00001.html">
<h2>Encoding Support</h2>
<p>Since: 3.0 M9<br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

Answer comes here.


<a name="passwords00001.html">
<h2>Password Management</h2>
<p>Since: 3.0 M9<br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

<h3>Password Management</h3>


<a name="ext_connection_method00001.html">
<h2>EXT</h2>
<p>Since: 2.0 <br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

<h3>Ext connection method</h3>


<a name="keys00001.html">
<h2>Key Bindings</h2>
<p>Since: 3.1<br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

<p>Activate the CVS menu and assign keybindings to the various CVS commands.
Ensure that they work as expected.


<h1>Validate Edit</h1>
<a name="validate_edit_editing_files00001.html">
<h2>Editing Files</h2>
<p>Since: <br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>
<p>
These tests are to sanity check editors behavior relating to calling validateEdit. The tests will
try to cover all cases where files are changed by the validateEdit handler and changes are made
to the read-only bit.
</p><p>
These test cases outline the expected behavior of single file editors in terms
of calling validateEdit and handling of error conditions. All scenarios assume
that a repository provider is mapped to a project and has created a sandbox
with files that are marked read-only.
</p><p>
The
<a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.team.examples.filesystem/">
org.eclipse.team.example.filesystem</a> plugin is a repository provider
that simulates a pessimistic workflow. You can use it to run these tests and validate (no pun intended) your validateEdit
editor support. To use the pessimistic provider, share a project with the repository provider called "File
System Pessimistic Example" and then you can add to control the files and
checkin/checkout will toggle the read-only bit and touch the file. You can
change the behavior of the validateEdit call via the pessimistic preference
page. For example, you can force the operation to fail and update contents of the file
when checked out.
</p>
<p>
These tests should be run against the following combinations of tools:
<ul>
<li>Different repository providers
<li>Single file editors (java, text)
<li>Multiple file editors (manifest editor, ...)
</ul>
<!-- ------------------------------------------------------------------------------ -->
<h3>S1: Repository provider enabled and files are readable</h3>
<ol>
<li>Open a file that is not marked read-only in a project configured with a repository provider.
<li>Start editing the file, validate edit should not be called.
</ol>
<!-- ------------------------------------------------------------------------------ -->
<h3>S2: Validate edit called on first edit</h3>
<ol>
<li>Open a file that has been checked out as read-only from a repository provider.
<li>Start editing the file, validateEdit should be called.
<li>validateEdit returns OK, the users edit is accepted and shows up in the editor, and the file can be edited normally.
<li>The user saves the file, and then can continue editing without validateEdit being called.
</ol>
<!-- ------------------------------------------------------------------------------ -->
<h3>S2b: Validate edit cancelled</h3>
<ol>
<li>Open a file that has been checked out as read-only from a repository provider.
<li>Start editing the file, validateEdit should be called.
<li>validateEdit is cancelled, the users edit is not accepted and the file cannot be edited.
<li>The user should still be able to browse the contents of the file and trying to edit it again
</ol>
<!-- ------------------------------------------------------------------------------ -->
<h3>S2b: Validate edit fails with an error</h3>
<ol>
<li>Open a file that has been checked out as read-only from a repository provider.
<li>Start editing the file, validateEdit should be called.
<li>validateEdit is cancelled, the users edit is not accepted and the file cannot be edited. User should
be shown the error returned from the validateEdit provider.
<li>The user should still be able to browse the contents of the file and trying to edit it again
</ol>
<!-- ------------------------------------------------------------------------------ -->
<h3>S3: Validate edit called on subsequent edits if file changes state</h3>
<ol>
<li>Open a file that has been checked out as read-only from a repository provider.
<li>Start editing the file, validateEdit should be called.
<li>validateEdit returns OK, the user's edit is accepted and the file can be edited normally.
<li>The user saves the file, and then can continue editing without validateEdit being called.
<li>The user saves the file and then checks in the file while the editor is still open.
<li>After the checkin completes the user continues editing the file.
<li>Validate edit should be called again.
</ol>
<!-- ------------------------------------------------------------------------------ -->
<h3>S4: Validate edit not called after contents changed</h3>
<ol>
<li>Open a file that has been checked out as read-only from a repository provider.
<li>Start editing the file, validateEdit should be called.
<li>validateEdit returns OK, the user's edit is accepted and the file can be edited normally.
<li>The user saves the file, and then can continue editing without validateEdit being called.
<li>The user saves the file and keeps the editor opened.
<li>The user then un-checks out the file and new file contents are retreived from the server.
<li>The new file contents are loaded into the editor and validateEdit is not called.
<li>
</ol>
<!-- ------------------------------------------------------------------------------ -->
<h3>S5: Validate edit changes file contents editor not-dirty</h3>
<ol>
<li>Open a file that has been checked out as read-only from a repository provider.
<li>Start editing the file, validateEdit should be called.
<li>validateEdit returns OK and brings in new content from the server.
<li>The new content is loaded automatically because the editor isn't dirty yet.
</ol>
<!-- ------------------------------------------------------------------------------ -->
<h3>S6: Validate edit changes file contents editor dirty</h3>
<ol>
<li>Open a file that has been checked out as read-only from a repository provider.
<li>Start editing the file, validateEdit should be called.
<li>validateEdit returns OK and the file on disk doesn't change.
<li>The user continues editing the file and then checks it in.
<li>The editor remains open and dirty, the user continues editing.
<li>validateEdit is called because the file is now read-only and returns OK and brings in new content from the server.
<li>The editor detects the timestamp change and prompts about the conflict and provides 
<a href="#reload_options">options</a> to the user.
<li>After the user selects his option and the user continues editing, the editor
will call validateEdit.
</ol>
<!-- ------------------------------------------------------------------------------ -->
<h3>S7: Read-only editors refreshing on checkout</h3>
<ol>
<li>Open a file that has been checked out as read-only from a repository provider.
<li>Checkout the file that brings in new content from the server.
<li>The editor should update with the new content from the server.
</ol>
<!-- ------------------------------------------------------------------------------ -->
<h3>S8: validate called on editor save</h3>
<ol>
<li>Open a file that has been checked out as read-only from a repository provider.
<li>Start editing the file, validateEdit should be called.
<li>validateEdit returns OK and the file on disk doesn't change.
<li>The editor remains open and dirty, the user continues editing.
<li>The user checks-n the file and then closes the editor.
<li>The user is prompted to save the file, then validate edit is called, and 
the file is checked-out then saved.
</ol>
<!-- ------------------------------------------------------------------------------ -->
<h3>S9: validate called on editor save with new contents</h3>
<ol>
<li>Open a file that has been checked out as read-only from a repository provider.
<li>Start editing the file, validateEdit should be called.
<li>validateEdit returns OK and the file on disk doesn't change.
<li>The editor remains open and dirty, the user continues editing.
<li>The user checks-n the file and then closes the editor.
<li>The user is prompted to save the file, then validate edit is called, and 
the file is checked-out then saved.
</ol>
</p>
<!--
<hr>

<a name="reload_options"><h3>Conflict Resolution Options for Editors</h3>
<pre>
Assumptions:  
    1. Editors currently maintain a "dirty bit" indicating that the in-memory
       buffer has been modified and not yet written to disk.  Editors call
       validateEdit() the if the file is read-only and the dirty bit is going
       from the clean state to the dirty state.
    2. Editors can detect when the timestamp of the file has changed on disk
       and prompt the user for the appropriate action.

Suggestion:
    Editors should maintain a separate bit, "must call validateEdit()".  Any
    modification of the buffer calls validateEdit() first if this bit is set.
    It is initially set when the file is opened if the file is read-only.  It
    is cleared after a successful call to validateEdit().  It is set again
    when the editor notices that a file has gone from read/write to read-only.

    If the "must call validateEdit()" bit ever goes from the cleared state to
    the set state (except for when the file is initially opened), a later
    successful call to validateEdit(), should should result in the following
    actions:

    +-----------+------------------+----------------------------------------+
    | Dirty Bit | Timestamp Change | Editor Action                          |
    |   State   |     Detected     |                                        |
    +-----------+------------------+----------------------------------------+
    |     0     |        no        | No action required                     |
    +-----------+------------------+----------------------------------------+
    |     1     |        no        | No action required                     |
    +-----------+------------------+----------------------------------------+
    |     0     |        yes       | Prompt user for reload/no-reload/merge |
    +-----------+------------------+----------------------------------------+
    |     1     |        yes       | Prompt user for reload/no-reload/merge |
    +-----------+------------------+----------------------------------------+
</pre>
-->

<a name="validate_edit_refactoring00001.html">


These tests are a sanity check that workbench, JDT and other tools refactorings behave 
properly with respect to validate Edit. For a repository providers that supports
a pessimistic workflow, the following scenarios should result in the invocation
of the validate edit callback and should include a UI context which allows prompting.
<p>
The following scenarios are stated in terms of the Navigator view and JDT. Other tools
should translate them to a set of scenarios that make sense for the tool.

<!-- ------------------------------------------------------------------------------ -->
<h3>S1: Search and Replace</h3>
<ol>
<li>Select one or more projects or folders and choose Search/File.
<li>Enter a string known to exist in multiple files and click Replace
<li>Enter a new string that differs from the one searched for.
</ol>
<!-- ------------------------------------------------------------------------------ -->
<h3>S2: Single file content modification</h3>
<ol>
<li>Open a Java file that is read-only
<li>Perform any of the Java Source operations (e.g. toggle comment)
<li>Ensure that validate edit is invoked
</ol>
<!-- ------------------------------------------------------------------------------ -->
<h3>S3: Multiple file content modification</h3>
<ol>
<li>Ensure all files in your workspace are read-only
<li>Perform a Java/Refactoring such as a method or class rename.
<li>Ensure that validate edit is invoked at most once per project involved.
</ol>


<h1>Logical Resource Support</h1>
<a name="logical00002.html">
<h2>Java Packages</h2>
<p>Since: 3.1<br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

<p>Ensure that CVS operations such as Update and Commit are performed only
on the files in a Java package and not on the subpackages when the operations
are launched from the Java Packages Explorer.


<a name="logical00003.html">
<h2>Working Sets</h2>
<p>Since: 3.1<br>
Last Modified: $Date: 2006/06/13 20:12:27 $</p>

<p>
Configure the Java Packages Explorer to show Working Sets. Populate the
working sets with various combinations of shared and unshared projects and
ensure that CVS operations can be performed directly on the working sets if they
contain at least one shared project.


</body></html>
