<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head><meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>ArchivaRepositoryScanningTaskExecutorPhase2Test xref</title>
<link type="text/css" rel="stylesheet" href="../../../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../../../testapidocs/org/apache/archiva/scheduler/repository/ArchivaRepositoryScanningTaskExecutorPhase2Test.html">View Javadoc</a></div><pre>
<a class="jxr_linenumber" name="L1" href="#L1">1</a>   <strong class="jxr_keyword">package</strong> org.apache.archiva.scheduler.repository;
<a class="jxr_linenumber" name="L2" href="#L2">2</a>   
<a class="jxr_linenumber" name="L3" href="#L3">3</a>   <em class="jxr_comment">/*</em>
<a class="jxr_linenumber" name="L4" href="#L4">4</a>   <em class="jxr_comment"> * Licensed to the Apache Software Foundation (ASF) under one</em>
<a class="jxr_linenumber" name="L5" href="#L5">5</a>   <em class="jxr_comment"> * or more contributor license agreements.  See the NOTICE file</em>
<a class="jxr_linenumber" name="L6" href="#L6">6</a>   <em class="jxr_comment"> * distributed with this work for additional information</em>
<a class="jxr_linenumber" name="L7" href="#L7">7</a>   <em class="jxr_comment"> * regarding copyright ownership.  The ASF licenses this file</em>
<a class="jxr_linenumber" name="L8" href="#L8">8</a>   <em class="jxr_comment"> * to you under the Apache License, Version 2.0 (the</em>
<a class="jxr_linenumber" name="L9" href="#L9">9</a>   <em class="jxr_comment"> * "License"); you may not use this file except in compliance</em>
<a class="jxr_linenumber" name="L10" href="#L10">10</a>  <em class="jxr_comment"> * with the License.  You may obtain a copy of the License at</em>
<a class="jxr_linenumber" name="L11" href="#L11">11</a>  <em class="jxr_comment"> *</em>
<a class="jxr_linenumber" name="L12" href="#L12">12</a>  <em class="jxr_comment"> *  <a href="http://www.apache.org/licenses/LICENSE-2." target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.</a>0</em>
<a class="jxr_linenumber" name="L13" href="#L13">13</a>  <em class="jxr_comment"> *</em>
<a class="jxr_linenumber" name="L14" href="#L14">14</a>  <em class="jxr_comment"> * Unless required by applicable law or agreed to in writing,</em>
<a class="jxr_linenumber" name="L15" href="#L15">15</a>  <em class="jxr_comment"> * software distributed under the License is distributed on an</em>
<a class="jxr_linenumber" name="L16" href="#L16">16</a>  <em class="jxr_comment"> * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</em>
<a class="jxr_linenumber" name="L17" href="#L17">17</a>  <em class="jxr_comment"> * KIND, either express or implied.  See the License for the</em>
<a class="jxr_linenumber" name="L18" href="#L18">18</a>  <em class="jxr_comment"> * specific language governing permissions and limitations</em>
<a class="jxr_linenumber" name="L19" href="#L19">19</a>  <em class="jxr_comment"> * under the License.</em>
<a class="jxr_linenumber" name="L20" href="#L20">20</a>  <em class="jxr_comment"> */</em>
<a class="jxr_linenumber" name="L21" href="#L21">21</a>  
<a class="jxr_linenumber" name="L22" href="#L22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.archiva.metadata.repository.MetadataRepositoryException;
<a class="jxr_linenumber" name="L23" href="#L23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.archiva.metadata.repository.stats.RepositoryStatistics;
<a class="jxr_linenumber" name="L24" href="#L24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.archiva.model.ArtifactReference;
<a class="jxr_linenumber" name="L25" href="#L25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.archiva.scheduler.repository.model.RepositoryTask;
<a class="jxr_linenumber" name="L26" href="#L26">26</a>  <strong class="jxr_keyword">import</strong> org.codehaus.plexus.util.FileUtils;
<a class="jxr_linenumber" name="L27" href="#L27">27</a>  <strong class="jxr_keyword">import</strong> org.junit.Test;
<a class="jxr_linenumber" name="L28" href="#L28">28</a>  <strong class="jxr_keyword">import</strong> org.springframework.test.context.ContextConfiguration;
<a class="jxr_linenumber" name="L29" href="#L29">29</a>  
<a class="jxr_linenumber" name="L30" href="#L30">30</a>  <strong class="jxr_keyword">import</strong> java.io.File;
<a class="jxr_linenumber" name="L31" href="#L31">31</a>  <strong class="jxr_keyword">import</strong> java.util.Calendar;
<a class="jxr_linenumber" name="L32" href="#L32">32</a>  <strong class="jxr_keyword">import</strong> java.util.Collection;
<a class="jxr_linenumber" name="L33" href="#L33">33</a>  <strong class="jxr_keyword">import</strong> java.util.Date;
<a class="jxr_linenumber" name="L34" href="#L34">34</a>  
<a class="jxr_linenumber" name="L35" href="#L35">35</a>  <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="L36" href="#L36">36</a>  <em class="jxr_javadoccomment"> * ArchivaRepositoryScanningTaskExecutorPhase2Test</em>
<a class="jxr_linenumber" name="L37" href="#L37">37</a>  <em class="jxr_javadoccomment"> *</em>
<a class="jxr_linenumber" name="L38" href="#L38">38</a>  <em class="jxr_javadoccomment"> *</em>
<a class="jxr_linenumber" name="L39" href="#L39">39</a>  <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="L40" href="#L40">40</a>  
<a class="jxr_linenumber" name="L41" href="#L41">41</a>  @ContextConfiguration( locations = { <span class="jxr_string">"classpath*:/META-INF/spring-context.xml"</span>, <span class="jxr_string">"classpath:/spring-context.xml"</span> } )
<a class="jxr_linenumber" name="L42" href="#L42">42</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/archiva/scheduler/repository/ArchivaRepositoryScanningTaskExecutorPhase2Test.html">ArchivaRepositoryScanningTaskExecutorPhase2Test</a>
<a class="jxr_linenumber" name="L43" href="#L43">43</a>      <strong class="jxr_keyword">extends</strong> <a href="../../../../../org/apache/archiva/scheduler/repository/ArchivaRepositoryScanningTaskExecutorAbstractTest.html">ArchivaRepositoryScanningTaskExecutorAbstractTest</a>
<a class="jxr_linenumber" name="L44" href="#L44">44</a>  {
<a class="jxr_linenumber" name="L45" href="#L45">45</a>  
<a class="jxr_linenumber" name="L46" href="#L46">46</a>      @Test
<a class="jxr_linenumber" name="L47" href="#L47">47</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testExecutorScanOnlyNewArtifacts()
<a class="jxr_linenumber" name="L48" href="#L48">48</a>          <strong class="jxr_keyword">throws</strong> Exception
<a class="jxr_linenumber" name="L49" href="#L49">49</a>      {
<a class="jxr_linenumber" name="L50" href="#L50">50</a>          RepositoryTask repoTask = <strong class="jxr_keyword">new</strong> RepositoryTask();
<a class="jxr_linenumber" name="L51" href="#L51">51</a>  
<a class="jxr_linenumber" name="L52" href="#L52">52</a>          repoTask.setRepositoryId( TEST_REPO_ID );
<a class="jxr_linenumber" name="L53" href="#L53">53</a>          repoTask.setScanAll( false );
<a class="jxr_linenumber" name="L54" href="#L54">54</a>  
<a class="jxr_linenumber" name="L55" href="#L55">55</a>          createAndSaveTestStats();
<a class="jxr_linenumber" name="L56" href="#L56">56</a>  
<a class="jxr_linenumber" name="L57" href="#L57">57</a>          taskExecutor.executeTask( repoTask );
<a class="jxr_linenumber" name="L58" href="#L58">58</a>  
<a class="jxr_linenumber" name="L59" href="#L59">59</a>          <em class="jxr_comment">// check no artifacts processed</em>
<a class="jxr_linenumber" name="L60" href="#L60">60</a>          Collection&lt;ArtifactReference&gt; unprocessedResultList = testConsumer.getConsumed();
<a class="jxr_linenumber" name="L61" href="#L61">61</a>  
<a class="jxr_linenumber" name="L62" href="#L62">62</a>          assertNotNull( unprocessedResultList );
<a class="jxr_linenumber" name="L63" href="#L63">63</a>          assertEquals( <span class="jxr_string">"Incorrect number of unprocessed artifacts detected. No new artifacts should have been found."</span>, 0,
<a class="jxr_linenumber" name="L64" href="#L64">64</a>                        unprocessedResultList.size() );
<a class="jxr_linenumber" name="L65" href="#L65">65</a>  
<a class="jxr_linenumber" name="L66" href="#L66">66</a>          <em class="jxr_comment">// check correctness of new stats</em>
<a class="jxr_linenumber" name="L67" href="#L67">67</a>          RepositoryStatistics newStats =
<a class="jxr_linenumber" name="L68" href="#L68">68</a>              repositoryStatisticsManager.getLastStatistics( metadataRepository, TEST_REPO_ID );
<a class="jxr_linenumber" name="L69" href="#L69">69</a>          assertEquals( 0, newStats.getNewFileCount() );
<a class="jxr_linenumber" name="L70" href="#L70">70</a>          assertEquals( 31, newStats.getTotalFileCount() );
<a class="jxr_linenumber" name="L71" href="#L71">71</a>          <em class="jxr_comment">// FIXME: can't test these as they weren't stored in the database, move to tests for RepositoryStatisticsManager implementation</em>
<a class="jxr_linenumber" name="L72" href="#L72">72</a>  <em class="jxr_comment">//        assertEquals( 8, newStats.getTotalArtifactCount() );</em>
<a class="jxr_linenumber" name="L73" href="#L73">73</a>  <em class="jxr_comment">//        assertEquals( 3, newStats.getTotalGroupCount() );</em>
<a class="jxr_linenumber" name="L74" href="#L74">74</a>  <em class="jxr_comment">//        assertEquals( 5, newStats.getTotalProjectCount() );</em>
<a class="jxr_linenumber" name="L75" href="#L75">75</a>  <em class="jxr_comment">//        assertEquals( 14159, newStats.getTotalArtifactFileSize() );</em>
<a class="jxr_linenumber" name="L76" href="#L76">76</a>  
<a class="jxr_linenumber" name="L77" href="#L77">77</a>          File newArtifactGroup = <strong class="jxr_keyword">new</strong> File( repoDir, <span class="jxr_string">"org/apache/archiva"</span> );
<a class="jxr_linenumber" name="L78" href="#L78">78</a>          assertFalse( <span class="jxr_string">"newArtifactGroup should not exist."</span>, newArtifactGroup.exists() );
<a class="jxr_linenumber" name="L79" href="#L79">79</a>  
<a class="jxr_linenumber" name="L80" href="#L80">80</a>          FileUtils.copyDirectoryStructure( <strong class="jxr_keyword">new</strong> File( <span class="jxr_string">"target/test-classes/test-repo/org/apache/archiva"</span> ),
<a class="jxr_linenumber" name="L81" href="#L81">81</a>                                            newArtifactGroup );
<a class="jxr_linenumber" name="L82" href="#L82">82</a>  
<a class="jxr_linenumber" name="L83" href="#L83">83</a>          <em class="jxr_comment">// update last modified date</em>
<a class="jxr_linenumber" name="L84" href="#L84">84</a>          <strong class="jxr_keyword">new</strong> File( newArtifactGroup, <span class="jxr_string">"archiva-index-methods-jar-test/1.0/pom.xml"</span> ).setLastModified(
<a class="jxr_linenumber" name="L85" href="#L85">85</a>              Calendar.getInstance().getTimeInMillis() + 1000 );
<a class="jxr_linenumber" name="L86" href="#L86">86</a>          <strong class="jxr_keyword">new</strong> File( newArtifactGroup,
<a class="jxr_linenumber" name="L87" href="#L87">87</a>                    <span class="jxr_string">"archiva-index-methods-jar-test/1.0/archiva-index-methods-jar-test-1.0.jar"</span> ).setLastModified(
<a class="jxr_linenumber" name="L88" href="#L88">88</a>              Calendar.getInstance().getTimeInMillis() + 1000 );
<a class="jxr_linenumber" name="L89" href="#L89">89</a>  
<a class="jxr_linenumber" name="L90" href="#L90">90</a>          assertTrue( newArtifactGroup.exists() );
<a class="jxr_linenumber" name="L91" href="#L91">91</a>  
<a class="jxr_linenumber" name="L92" href="#L92">92</a>          taskExecutor.executeTask( repoTask );
<a class="jxr_linenumber" name="L93" href="#L93">93</a>  
<a class="jxr_linenumber" name="L94" href="#L94">94</a>          unprocessedResultList = testConsumer.getConsumed();
<a class="jxr_linenumber" name="L95" href="#L95">95</a>          assertNotNull( unprocessedResultList );
<a class="jxr_linenumber" name="L96" href="#L96">96</a>          assertEquals( <span class="jxr_string">"Incorrect number of unprocessed artifacts detected. One new artifact should have been found."</span>, 1,
<a class="jxr_linenumber" name="L97" href="#L97">97</a>                        unprocessedResultList.size() );
<a class="jxr_linenumber" name="L98" href="#L98">98</a>  
<a class="jxr_linenumber" name="L99" href="#L99">99</a>          <em class="jxr_comment">// check correctness of new stats</em>
<a class="jxr_linenumber" name="L100" href="#L100">100</a>         RepositoryStatistics updatedStats =
<a class="jxr_linenumber" name="L101" href="#L101">101</a>             repositoryStatisticsManager.getLastStatistics( metadataRepository, TEST_REPO_ID );
<a class="jxr_linenumber" name="L102" href="#L102">102</a>         assertEquals( 2, updatedStats.getNewFileCount() );
<a class="jxr_linenumber" name="L103" href="#L103">103</a>         assertEquals( 33, updatedStats.getTotalFileCount() );
<a class="jxr_linenumber" name="L104" href="#L104">104</a>         <em class="jxr_comment">// FIXME: can't test these as they weren't stored in the database, move to tests for RepositoryStatisticsManager implementation</em>
<a class="jxr_linenumber" name="L105" href="#L105">105</a> <em class="jxr_comment">//        assertEquals( 8, newStats.getTotalArtifactCount() );</em>
<a class="jxr_linenumber" name="L106" href="#L106">106</a> <em class="jxr_comment">//        assertEquals( 3, newStats.getTotalGroupCount() );</em>
<a class="jxr_linenumber" name="L107" href="#L107">107</a> <em class="jxr_comment">//        assertEquals( 5, newStats.getTotalProjectCount() );</em>
<a class="jxr_linenumber" name="L108" href="#L108">108</a> <em class="jxr_comment">//        assertEquals( 19301, updatedStats.getTotalArtifactFileSize() );</em>
<a class="jxr_linenumber" name="L109" href="#L109">109</a>     }
<a class="jxr_linenumber" name="L110" href="#L110">110</a> 
<a class="jxr_linenumber" name="L111" href="#L111">111</a>     @Test
<a class="jxr_linenumber" name="L112" href="#L112">112</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testExecutorScanOnlyNewArtifactsChangeTimes()
<a class="jxr_linenumber" name="L113" href="#L113">113</a>         <strong class="jxr_keyword">throws</strong> Exception
<a class="jxr_linenumber" name="L114" href="#L114">114</a>     {
<a class="jxr_linenumber" name="L115" href="#L115">115</a>         RepositoryTask repoTask = <strong class="jxr_keyword">new</strong> RepositoryTask();
<a class="jxr_linenumber" name="L116" href="#L116">116</a> 
<a class="jxr_linenumber" name="L117" href="#L117">117</a>         repoTask.setRepositoryId( TEST_REPO_ID );
<a class="jxr_linenumber" name="L118" href="#L118">118</a>         repoTask.setScanAll( false );
<a class="jxr_linenumber" name="L119" href="#L119">119</a> 
<a class="jxr_linenumber" name="L120" href="#L120">120</a>         createAndSaveTestStats();
<a class="jxr_linenumber" name="L121" href="#L121">121</a> 
<a class="jxr_linenumber" name="L122" href="#L122">122</a>         File newArtifactGroup = <strong class="jxr_keyword">new</strong> File( repoDir, <span class="jxr_string">"org/apache/archiva"</span> );
<a class="jxr_linenumber" name="L123" href="#L123">123</a>         assertFalse( <span class="jxr_string">"newArtifactGroup should not exist."</span>, newArtifactGroup.exists() );
<a class="jxr_linenumber" name="L124" href="#L124">124</a> 
<a class="jxr_linenumber" name="L125" href="#L125">125</a>         FileUtils.copyDirectoryStructure( <strong class="jxr_keyword">new</strong> File( <span class="jxr_string">"target/test-classes/test-repo/org/apache/archiva"</span> ),
<a class="jxr_linenumber" name="L126" href="#L126">126</a>                                           newArtifactGroup );
<a class="jxr_linenumber" name="L127" href="#L127">127</a> 
<a class="jxr_linenumber" name="L128" href="#L128">128</a>         <em class="jxr_comment">// update last modified date, placing shortly after last scan</em>
<a class="jxr_linenumber" name="L129" href="#L129">129</a>         <strong class="jxr_keyword">new</strong> File( newArtifactGroup, <span class="jxr_string">"archiva-index-methods-jar-test/1.0/pom.xml"</span> ).setLastModified(
<a class="jxr_linenumber" name="L130" href="#L130">130</a>             Calendar.getInstance().getTimeInMillis() + 1000 );
<a class="jxr_linenumber" name="L131" href="#L131">131</a>         <strong class="jxr_keyword">new</strong> File( newArtifactGroup,
<a class="jxr_linenumber" name="L132" href="#L132">132</a>                   <span class="jxr_string">"archiva-index-methods-jar-test/1.0/archiva-index-methods-jar-test-1.0.jar"</span> ).setLastModified(
<a class="jxr_linenumber" name="L133" href="#L133">133</a>             Calendar.getInstance().getTimeInMillis() + 1000 );
<a class="jxr_linenumber" name="L134" href="#L134">134</a> 
<a class="jxr_linenumber" name="L135" href="#L135">135</a>         assertTrue( newArtifactGroup.exists() );
<a class="jxr_linenumber" name="L136" href="#L136">136</a> 
<a class="jxr_linenumber" name="L137" href="#L137">137</a>         <em class="jxr_comment">// scan using the really long previous duration</em>
<a class="jxr_linenumber" name="L138" href="#L138">138</a>         taskExecutor.executeTask( repoTask );
<a class="jxr_linenumber" name="L139" href="#L139">139</a> 
<a class="jxr_linenumber" name="L140" href="#L140">140</a>         <em class="jxr_comment">// check no artifacts processed</em>
<a class="jxr_linenumber" name="L141" href="#L141">141</a>         Collection&lt;ArtifactReference&gt; unprocessedResultList = testConsumer.getConsumed();
<a class="jxr_linenumber" name="L142" href="#L142">142</a>         assertNotNull( unprocessedResultList );
<a class="jxr_linenumber" name="L143" href="#L143">143</a>         assertEquals( <span class="jxr_string">"Incorrect number of unprocessed artifacts detected. One new artifact should have been found."</span>, 1,
<a class="jxr_linenumber" name="L144" href="#L144">144</a>                       unprocessedResultList.size() );
<a class="jxr_linenumber" name="L145" href="#L145">145</a> 
<a class="jxr_linenumber" name="L146" href="#L146">146</a>         <em class="jxr_comment">// check correctness of new stats</em>
<a class="jxr_linenumber" name="L147" href="#L147">147</a>         RepositoryStatistics newStats =
<a class="jxr_linenumber" name="L148" href="#L148">148</a>             repositoryStatisticsManager.getLastStatistics( metadataRepository, TEST_REPO_ID );
<a class="jxr_linenumber" name="L149" href="#L149">149</a>         assertEquals( 2, newStats.getNewFileCount() );
<a class="jxr_linenumber" name="L150" href="#L150">150</a>         assertEquals( 33, newStats.getTotalFileCount() );
<a class="jxr_linenumber" name="L151" href="#L151">151</a>         <em class="jxr_comment">// FIXME: can't test these as they weren't stored in the database, move to tests for RepositoryStatisticsManager implementation</em>
<a class="jxr_linenumber" name="L152" href="#L152">152</a> <em class="jxr_comment">//        assertEquals( 8, newStats.getTotalArtifactCount() );</em>
<a class="jxr_linenumber" name="L153" href="#L153">153</a> <em class="jxr_comment">//        assertEquals( 3, newStats.getTotalGroupCount() );</em>
<a class="jxr_linenumber" name="L154" href="#L154">154</a> <em class="jxr_comment">//        assertEquals( 5, newStats.getTotalProjectCount() );</em>
<a class="jxr_linenumber" name="L155" href="#L155">155</a> <em class="jxr_comment">//        assertEquals( 19301, newStats.getTotalArtifactFileSize() );</em>
<a class="jxr_linenumber" name="L156" href="#L156">156</a>     }
<a class="jxr_linenumber" name="L157" href="#L157">157</a> 
<a class="jxr_linenumber" name="L158" href="#L158">158</a>     @Test
<a class="jxr_linenumber" name="L159" href="#L159">159</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testExecutorScanOnlyNewArtifactsMidScan()
<a class="jxr_linenumber" name="L160" href="#L160">160</a>         <strong class="jxr_keyword">throws</strong> Exception
<a class="jxr_linenumber" name="L161" href="#L161">161</a>     {
<a class="jxr_linenumber" name="L162" href="#L162">162</a>         RepositoryTask repoTask = <strong class="jxr_keyword">new</strong> RepositoryTask();
<a class="jxr_linenumber" name="L163" href="#L163">163</a> 
<a class="jxr_linenumber" name="L164" href="#L164">164</a>         repoTask.setRepositoryId( TEST_REPO_ID );
<a class="jxr_linenumber" name="L165" href="#L165">165</a>         repoTask.setScanAll( false );
<a class="jxr_linenumber" name="L166" href="#L166">166</a> 
<a class="jxr_linenumber" name="L167" href="#L167">167</a>         createAndSaveTestStats();
<a class="jxr_linenumber" name="L168" href="#L168">168</a> 
<a class="jxr_linenumber" name="L169" href="#L169">169</a>         File newArtifactGroup = <strong class="jxr_keyword">new</strong> File( repoDir, <span class="jxr_string">"org/apache/archiva"</span> );
<a class="jxr_linenumber" name="L170" href="#L170">170</a>         assertFalse( <span class="jxr_string">"newArtifactGroup should not exist."</span>, newArtifactGroup.exists() );
<a class="jxr_linenumber" name="L171" href="#L171">171</a> 
<a class="jxr_linenumber" name="L172" href="#L172">172</a>         FileUtils.copyDirectoryStructure( <strong class="jxr_keyword">new</strong> File( <span class="jxr_string">"target/test-classes/test-repo/org/apache/archiva"</span> ),
<a class="jxr_linenumber" name="L173" href="#L173">173</a>                                           newArtifactGroup );
<a class="jxr_linenumber" name="L174" href="#L174">174</a> 
<a class="jxr_linenumber" name="L175" href="#L175">175</a>         <em class="jxr_comment">// update last modified date, placing in middle of last scan</em>
<a class="jxr_linenumber" name="L176" href="#L176">176</a>         <strong class="jxr_keyword">new</strong> File( newArtifactGroup, <span class="jxr_string">"archiva-index-methods-jar-test/1.0/pom.xml"</span> ).setLastModified(
<a class="jxr_linenumber" name="L177" href="#L177">177</a>             Calendar.getInstance().getTimeInMillis() - 50000 );
<a class="jxr_linenumber" name="L178" href="#L178">178</a>         <strong class="jxr_keyword">new</strong> File( newArtifactGroup,
<a class="jxr_linenumber" name="L179" href="#L179">179</a>                   <span class="jxr_string">"archiva-index-methods-jar-test/1.0/archiva-index-methods-jar-test-1.0.jar"</span> ).setLastModified(
<a class="jxr_linenumber" name="L180" href="#L180">180</a>             Calendar.getInstance().getTimeInMillis() - 50000 );
<a class="jxr_linenumber" name="L181" href="#L181">181</a> 
<a class="jxr_linenumber" name="L182" href="#L182">182</a>         assertTrue( newArtifactGroup.exists() );
<a class="jxr_linenumber" name="L183" href="#L183">183</a> 
<a class="jxr_linenumber" name="L184" href="#L184">184</a>         <em class="jxr_comment">// scan using the really long previous duration</em>
<a class="jxr_linenumber" name="L185" href="#L185">185</a>         taskExecutor.executeTask( repoTask );
<a class="jxr_linenumber" name="L186" href="#L186">186</a> 
<a class="jxr_linenumber" name="L187" href="#L187">187</a>         <em class="jxr_comment">// check no artifacts processed</em>
<a class="jxr_linenumber" name="L188" href="#L188">188</a>         Collection&lt;ArtifactReference&gt; unprocessedResultList = testConsumer.getConsumed();
<a class="jxr_linenumber" name="L189" href="#L189">189</a>         assertNotNull( unprocessedResultList );
<a class="jxr_linenumber" name="L190" href="#L190">190</a>         assertEquals( <span class="jxr_string">"Incorrect number of unprocessed artifacts detected. One new artifact should have been found."</span>, 1,
<a class="jxr_linenumber" name="L191" href="#L191">191</a>                       unprocessedResultList.size() );
<a class="jxr_linenumber" name="L192" href="#L192">192</a> 
<a class="jxr_linenumber" name="L193" href="#L193">193</a>         <em class="jxr_comment">// check correctness of new stats</em>
<a class="jxr_linenumber" name="L194" href="#L194">194</a>         RepositoryStatistics newStats =
<a class="jxr_linenumber" name="L195" href="#L195">195</a>             repositoryStatisticsManager.getLastStatistics( metadataRepository, TEST_REPO_ID );
<a class="jxr_linenumber" name="L196" href="#L196">196</a>         assertEquals( 2, newStats.getNewFileCount() );
<a class="jxr_linenumber" name="L197" href="#L197">197</a>         assertEquals( 33, newStats.getTotalFileCount() );
<a class="jxr_linenumber" name="L198" href="#L198">198</a>         <em class="jxr_comment">// FIXME: can't test these as they weren't stored in the database, move to tests for RepositoryStatisticsManager implementation</em>
<a class="jxr_linenumber" name="L199" href="#L199">199</a> <em class="jxr_comment">//        assertEquals( 8, newStats.getTotalArtifactCount() );</em>
<a class="jxr_linenumber" name="L200" href="#L200">200</a> <em class="jxr_comment">//        assertEquals( 3, newStats.getTotalGroupCount() );</em>
<a class="jxr_linenumber" name="L201" href="#L201">201</a> <em class="jxr_comment">//        assertEquals( 5, newStats.getTotalProjectCount() );</em>
<a class="jxr_linenumber" name="L202" href="#L202">202</a> <em class="jxr_comment">//        assertEquals( 19301, newStats.getTotalArtifactFileSize() );</em>
<a class="jxr_linenumber" name="L203" href="#L203">203</a>     }
<a class="jxr_linenumber" name="L204" href="#L204">204</a> 
<a class="jxr_linenumber" name="L205" href="#L205">205</a>     @Test
<a class="jxr_linenumber" name="L206" href="#L206">206</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testExecutorForceScanAll()
<a class="jxr_linenumber" name="L207" href="#L207">207</a>         <strong class="jxr_keyword">throws</strong> Exception
<a class="jxr_linenumber" name="L208" href="#L208">208</a>     {
<a class="jxr_linenumber" name="L209" href="#L209">209</a>         RepositoryTask repoTask = <strong class="jxr_keyword">new</strong> RepositoryTask();
<a class="jxr_linenumber" name="L210" href="#L210">210</a> 
<a class="jxr_linenumber" name="L211" href="#L211">211</a>         repoTask.setRepositoryId( TEST_REPO_ID );
<a class="jxr_linenumber" name="L212" href="#L212">212</a>         repoTask.setScanAll( <strong class="jxr_keyword">true</strong> );
<a class="jxr_linenumber" name="L213" href="#L213">213</a> 
<a class="jxr_linenumber" name="L214" href="#L214">214</a>         Date date = Calendar.getInstance().getTime();
<a class="jxr_linenumber" name="L215" href="#L215">215</a>         repositoryStatisticsManager.addStatisticsAfterScan( metadataRepository, TEST_REPO_ID,
<a class="jxr_linenumber" name="L216" href="#L216">216</a>                                                             <strong class="jxr_keyword">new</strong> Date( date.getTime() - 1234567 ), date, 8, 8 );
<a class="jxr_linenumber" name="L217" href="#L217">217</a> 
<a class="jxr_linenumber" name="L218" href="#L218">218</a>         taskExecutor.executeTask( repoTask );
<a class="jxr_linenumber" name="L219" href="#L219">219</a> 
<a class="jxr_linenumber" name="L220" href="#L220">220</a>         Collection&lt;ArtifactReference&gt; unprocessedResultList = testConsumer.getConsumed();
<a class="jxr_linenumber" name="L221" href="#L221">221</a> 
<a class="jxr_linenumber" name="L222" href="#L222">222</a>         assertNotNull( unprocessedResultList );
<a class="jxr_linenumber" name="L223" href="#L223">223</a>         assertEquals( <span class="jxr_string">"Incorrect number of unprocessed artifacts detected."</span>, 8, unprocessedResultList.size() );
<a class="jxr_linenumber" name="L224" href="#L224">224</a>     }
<a class="jxr_linenumber" name="L225" href="#L225">225</a> 
<a class="jxr_linenumber" name="L226" href="#L226">226</a>     <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> createAndSaveTestStats()
<a class="jxr_linenumber" name="L227" href="#L227">227</a>         <strong class="jxr_keyword">throws</strong> MetadataRepositoryException
<a class="jxr_linenumber" name="L228" href="#L228">228</a>     {
<a class="jxr_linenumber" name="L229" href="#L229">229</a>         Date date = Calendar.getInstance().getTime();
<a class="jxr_linenumber" name="L230" href="#L230">230</a>         RepositoryStatistics stats = <strong class="jxr_keyword">new</strong> RepositoryStatistics();
<a class="jxr_linenumber" name="L231" href="#L231">231</a>         stats.setScanStartTime( <strong class="jxr_keyword">new</strong> Date( date.getTime() - 1234567 ) );
<a class="jxr_linenumber" name="L232" href="#L232">232</a>         stats.setScanEndTime( date );
<a class="jxr_linenumber" name="L233" href="#L233">233</a>         stats.setNewFileCount( 31 );
<a class="jxr_linenumber" name="L234" href="#L234">234</a>         stats.setTotalArtifactCount( 8 );
<a class="jxr_linenumber" name="L235" href="#L235">235</a>         stats.setTotalFileCount( 31 );
<a class="jxr_linenumber" name="L236" href="#L236">236</a>         stats.setTotalGroupCount( 3 );
<a class="jxr_linenumber" name="L237" href="#L237">237</a>         stats.setTotalProjectCount( 5 );
<a class="jxr_linenumber" name="L238" href="#L238">238</a>         stats.setTotalArtifactFileSize( 38545 );
<a class="jxr_linenumber" name="L239" href="#L239">239</a> 
<a class="jxr_linenumber" name="L240" href="#L240">240</a>         repositoryStatisticsManager.addStatisticsAfterScan( metadataRepository, TEST_REPO_ID,
<a class="jxr_linenumber" name="L241" href="#L241">241</a>                                                             <strong class="jxr_keyword">new</strong> Date( date.getTime() - 1234567 ), date, 31, 31 );
<a class="jxr_linenumber" name="L242" href="#L242">242</a>     }
<a class="jxr_linenumber" name="L243" href="#L243">243</a> }
</pre>
<hr/>
<div id="footer">Copyright &#169; 2006&#x2013;2022 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</div>
</body>
</html>
