<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">










<html>
  <head>
    <title>Archiva Transactions - </title>
    <style type="text/css" media="all">
      @import url("./css/maven-base.css");
      @import url("./css/maven-theme.css");
      @import url("./css/site.css");
    </style>
    <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
                            <?xml version="1.0" encoding="UTF-8"?>
<script type="text/javascript">var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));</script>
                                <?xml version="1.0" encoding="UTF-8"?>
<script type="text/javascript">var pageTracker = _gat._getTracker("UA-140879-5");
pageTracker._initData();
pageTracker._trackPageview();</script>
                    </head>
  <body class="composite">
    <div id="banner">
                  <a href="../../" id="bannerLeft">
    
                                            <img src="../../images/archiva.png" alt="" />
    
            </a>
                        <a href="http://www.apache.org/" id="bannerRight">
    
                                    <img src="http://www.apache.org/images/asf_logo_wide.png" alt="" />
    
            </a>
            <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="breadcrumbs">
          
  

  
    
  
  
            <div class="xleft">
          
          <a href="http://www.apache.org/">Apache</a>
              &gt;
      
          <a href="../../">Archiva</a>
              &gt;
      
          <a href="../../">Archiva :: Modules</a>
                </div>
            <div class="xright">      
  

  
    
  
  
            &nbsp;| Last Published: 27 May 2011
            </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="leftColumn">
      <div id="navcolumn">
           
  

  
    
  
  
                   <h5>Project Documentation</h5>
        <ul>
              
                
              
      
            
      
            
      
            
      
            
      
            
      
            
      
            
      
            
      
            
      
            
      
            
      
            
      
              
        <li class="collapsed">
              <a href="project-info.html">Project Information</a>
              </li>
              
                
              
      
            
      
            
      
            
      
            
      
            
      
            
      
            
            
            
      
            
      
              
            <li class="expanded">
              <a href="project-reports.html">Project Reports</a>
                <ul>
                  
    <li class="none">
              <a href="changelog.html">changelog</a>
        </li>
                  
    <li class="none">
              <a href="checkstyle.html">Checkstyle</a>
        </li>
                  
    <li class="none">
              <a href="clirr-report.html">Clirr</a>
        </li>
                  
    <li class="none">
              <a href="cobertura/index.html">Cobertura Test Coverage</a>
        </li>
                  
    <li class="none">
              <a href="cpd.html">CPD Report</a>
        </li>
                  
    <li class="none">
              <a href="dev-activity.html">dev-activity</a>
        </li>
                  
    <li class="none">
              <a href="file-activity.html">file-activity</a>
        </li>
                  
    <li class="none">
              <strong>Maven Surefire Report</strong>
        </li>
                  
    <li class="none">
              <a href="pmd.html">PMD Report</a>
        </li>
                  
    <li class="none">
              <a href="taglist.html">Tag List</a>
        </li>
              </ul>
        </li>
          </ul>
                                       <a href="http://maven.apache.org/" title="Built by Maven" id="poweredBy">
            <img alt="Built by Maven" src="./images/logos/maven-feather.png"></img>
          </a>
                       
  

  
    
  
  
        </div>
    </div>
    <div id="bodyColumn">
      <div id="contentBox">
        <script type="text/javascript">
function toggleDisplay(elementId) {
 var elm = document.getElementById(elementId + 'error');
 if (elm && typeof elm.style != "undefined") {
 if (elm.style.display == "none") {
 elm.style.display = "";
 document.getElementById(elementId + 'off').style.display = "none";
 document.getElementById(elementId + 'on').style.display = "inline";
 } else if (elm.style.display == "") { elm.style.display = "none";
 document.getElementById(elementId + 'off').style.display = "inline";
 document.getElementById(elementId + 'on').style.display = "none";
 } 
 } 
 }
</script><h2><a name="Summary"></a>Summary</h2><div class="section">[<a href="#Summary">Summary</a>][<a href="#Package_List">Package List</a>][<a href="#Test_Cases">Test Cases</a>]</div><table class="bodyTable"><tr class="a"></tr><tr class="b"></tr></table><table class="bodyTable"><tr class="a"><th>Tests</th><th>Errors </th><th>Failures</th><th>Skipped</th><th>Success Rate</th><th>Time</th></tr><tr class="b"><td>6</td><td>0</td><td>0</td><td>0</td><td>100%</td><td>1.938</td></tr></table><br />Note: failures are anticipated and checked for with assertions while errors are unanticipated.<table class="bodyTable"><tr class="a"></tr><tr class="b"></tr></table><h2><a name="Package_List"></a>Package List</h2><div class="section">[<a href="#Summary">Summary</a>][<a href="#Package_List">Package List</a>][<a href="#Test_Cases">Test Cases</a>]</div><table class="bodyTable"><tr class="a"></tr><tr class="b"></tr></table><table class="bodyTable"><tr class="a"><th>Package</th><th>Tests</th><th>Errors </th><th>Failures</th><th>Skipped</th><th>Success Rate</th><th>Time</th></tr><tr class="b"><td><a href="#org.apache.maven.archiva.transaction">org.apache.maven.archiva.transaction</a></td><td>6</td><td>0</td><td>0</td><td>0</td><td>100%</td><td>1.938</td></tr></table><br />Note: package statistics are not computed recursively, they only sum up all of its testsuites numbers.<h3><a name="org.apache.maven.archiva.transaction"></a>org.apache.maven.archiva.transaction</h3><table class="bodyTable"><tr class="a"><th></th><th>Class</th><th>Tests</th><th>Errors </th><th>Failures</th><th>Skipped</th><th>Success Rate</th><th>Time</th></tr><tr class="b"><td><a href="#org.apache.maven.archiva.transactionCopyFileEventTest"><img src="images/icon_success_sml.gif" /></a></td><td><a href="#org.apache.maven.archiva.transactionCopyFileEventTest">CopyFileEventTest</a></td><td>3</td><td>0</td><td>0</td><td>0</td><td>100%</td><td>1.791</td></tr><tr class="a"><td><a href="#org.apache.maven.archiva.transactionCreateFileEventTest"><img src="images/icon_success_sml.gif" /></a></td><td><a href="#org.apache.maven.archiva.transactionCreateFileEventTest">CreateFileEventTest</a></td><td>3</td><td>0</td><td>0</td><td>0</td><td>100%</td><td>0.147</td></tr></table><table class="bodyTable"><tr class="b"></tr><tr class="a"></tr></table><h2><a name="Test_Cases"></a>Test Cases</h2><div class="section">[<a href="#Summary">Summary</a>][<a href="#Package_List">Package List</a>][<a href="#Test_Cases">Test Cases</a>]</div><h3><a name="org.apache.maven.archiva.transactionCopyFileEventTest"></a>CopyFileEventTest</h3><table class="bodyTable"><tr class="b"><td><img src="images/icon_success_sml.gif" /></td><td>testCopyCommitRollback</td><td>1.582</td></tr><tr class="a"><td><img src="images/icon_success_sml.gif" /></td><td>testCopyCommitRollbackWithBackup</td><td>0.12</td></tr><tr class="b"><td><img src="images/icon_success_sml.gif" /></td><td>testCreateRollbackCommit</td><td>0.051</td></tr></table><h3><a name="org.apache.maven.archiva.transactionCreateFileEventTest"></a>CreateFileEventTest</h3><table class="bodyTable"><tr class="a"><td><img src="images/icon_success_sml.gif" /></td><td>testCreateRollbackCommit</td><td>0.039</td></tr><tr class="b"><td><img src="images/icon_success_sml.gif" /></td><td>testCreateCommitRollback</td><td>0.062</td></tr><tr class="a"><td><img src="images/icon_success_sml.gif" /></td><td>testCreateCommitRollbackWithBackup</td><td>0.045</td></tr></table><table class="bodyTable"><tr class="b"></tr><tr class="a"></tr></table><table class="bodyTable"><tr class="b"></tr><tr class="a"></tr></table>
      </div>
    </div>
    <div class="clear">
      <hr/>
    </div>
    <div id="footer">
      <div class="xright">&#169;  
          2006-2011
    
          The Apache Software Foundation
          
  

  
    
  
  
  </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
  </body>
</html>
