<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
<title>Source code</title>
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
</head>
<body>
<div class="sourceContainer">
<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
<span class="sourceLineNo">009</span> *<a name="line.9"></a>
<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
<span class="sourceLineNo">011</span> *<a name="line.11"></a>
<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
<span class="sourceLineNo">017</span> */<a name="line.17"></a>
<span class="sourceLineNo">018</span>package org.apache.hadoop.hbase;<a name="line.18"></a>
<span class="sourceLineNo">019</span><a name="line.19"></a>
<span class="sourceLineNo">020</span>import static org.junit.Assert.assertEquals;<a name="line.20"></a>
<span class="sourceLineNo">021</span>import static org.junit.Assert.assertFalse;<a name="line.21"></a>
<span class="sourceLineNo">022</span>import static org.junit.Assert.assertTrue;<a name="line.22"></a>
<span class="sourceLineNo">023</span><a name="line.23"></a>
<span class="sourceLineNo">024</span>import java.util.concurrent.TimeUnit;<a name="line.24"></a>
<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.TestChoreService.ScheduledChoreSamples.CountingChore;<a name="line.25"></a>
<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.TestChoreService.ScheduledChoreSamples.DoNothingChore;<a name="line.26"></a>
<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.TestChoreService.ScheduledChoreSamples.FailInitialChore;<a name="line.27"></a>
<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.TestChoreService.ScheduledChoreSamples.SampleStopper;<a name="line.28"></a>
<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.TestChoreService.ScheduledChoreSamples.SleepingChore;<a name="line.29"></a>
<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.TestChoreService.ScheduledChoreSamples.SlowChore;<a name="line.30"></a>
<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.31"></a>
<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.32"></a>
<span class="sourceLineNo">033</span>import org.junit.ClassRule;<a name="line.33"></a>
<span class="sourceLineNo">034</span>import org.junit.Rule;<a name="line.34"></a>
<span class="sourceLineNo">035</span>import org.junit.Test;<a name="line.35"></a>
<span class="sourceLineNo">036</span>import org.junit.experimental.categories.Category;<a name="line.36"></a>
<span class="sourceLineNo">037</span>import org.junit.rules.TestName;<a name="line.37"></a>
<span class="sourceLineNo">038</span>import org.slf4j.Logger;<a name="line.38"></a>
<span class="sourceLineNo">039</span>import org.slf4j.LoggerFactory;<a name="line.39"></a>
<span class="sourceLineNo">040</span><a name="line.40"></a>
<span class="sourceLineNo">041</span>@Category(MediumTests.class)<a name="line.41"></a>
<span class="sourceLineNo">042</span>public class TestChoreService {<a name="line.42"></a>
<span class="sourceLineNo">043</span><a name="line.43"></a>
<span class="sourceLineNo">044</span>  @ClassRule<a name="line.44"></a>
<span class="sourceLineNo">045</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.45"></a>
<span class="sourceLineNo">046</span>      HBaseClassTestRule.forClass(TestChoreService.class);<a name="line.46"></a>
<span class="sourceLineNo">047</span><a name="line.47"></a>
<span class="sourceLineNo">048</span>  public static final Logger log = LoggerFactory.getLogger(TestChoreService.class);<a name="line.48"></a>
<span class="sourceLineNo">049</span><a name="line.49"></a>
<span class="sourceLineNo">050</span>  @Rule<a name="line.50"></a>
<span class="sourceLineNo">051</span>  public TestName name = new TestName();<a name="line.51"></a>
<span class="sourceLineNo">052</span><a name="line.52"></a>
<span class="sourceLineNo">053</span>  /**<a name="line.53"></a>
<span class="sourceLineNo">054</span>   * A few ScheduledChore samples that are useful for testing with ChoreService<a name="line.54"></a>
<span class="sourceLineNo">055</span>   */<a name="line.55"></a>
<span class="sourceLineNo">056</span>  public static class ScheduledChoreSamples {<a name="line.56"></a>
<span class="sourceLineNo">057</span>    /**<a name="line.57"></a>
<span class="sourceLineNo">058</span>     * Straight forward stopper implementation that is used by default when one is not provided<a name="line.58"></a>
<span class="sourceLineNo">059</span>     */<a name="line.59"></a>
<span class="sourceLineNo">060</span>    public static class SampleStopper implements Stoppable {<a name="line.60"></a>
<span class="sourceLineNo">061</span>      private boolean stopped = false;<a name="line.61"></a>
<span class="sourceLineNo">062</span><a name="line.62"></a>
<span class="sourceLineNo">063</span>      @Override<a name="line.63"></a>
<span class="sourceLineNo">064</span>      public void stop(String why) {<a name="line.64"></a>
<span class="sourceLineNo">065</span>        stopped = true;<a name="line.65"></a>
<span class="sourceLineNo">066</span>      }<a name="line.66"></a>
<span class="sourceLineNo">067</span><a name="line.67"></a>
<span class="sourceLineNo">068</span>      @Override<a name="line.68"></a>
<span class="sourceLineNo">069</span>      public boolean isStopped() {<a name="line.69"></a>
<span class="sourceLineNo">070</span>        return stopped;<a name="line.70"></a>
<span class="sourceLineNo">071</span>      }<a name="line.71"></a>
<span class="sourceLineNo">072</span>    }<a name="line.72"></a>
<span class="sourceLineNo">073</span><a name="line.73"></a>
<span class="sourceLineNo">074</span>    /**<a name="line.74"></a>
<span class="sourceLineNo">075</span>     * Sleeps for longer than the scheduled period. This chore always misses its scheduled periodic<a name="line.75"></a>
<span class="sourceLineNo">076</span>     * executions<a name="line.76"></a>
<span class="sourceLineNo">077</span>     */<a name="line.77"></a>
<span class="sourceLineNo">078</span>    public static class SlowChore extends ScheduledChore {<a name="line.78"></a>
<span class="sourceLineNo">079</span>      public SlowChore(String name, int period) {<a name="line.79"></a>
<span class="sourceLineNo">080</span>        this(name, new SampleStopper(), period);<a name="line.80"></a>
<span class="sourceLineNo">081</span>      }<a name="line.81"></a>
<span class="sourceLineNo">082</span><a name="line.82"></a>
<span class="sourceLineNo">083</span>      public SlowChore(String name, Stoppable stopper, int period) {<a name="line.83"></a>
<span class="sourceLineNo">084</span>        super(name, stopper, period);<a name="line.84"></a>
<span class="sourceLineNo">085</span>      }<a name="line.85"></a>
<span class="sourceLineNo">086</span><a name="line.86"></a>
<span class="sourceLineNo">087</span>      @Override<a name="line.87"></a>
<span class="sourceLineNo">088</span>      protected boolean initialChore() {<a name="line.88"></a>
<span class="sourceLineNo">089</span>        try {<a name="line.89"></a>
<span class="sourceLineNo">090</span>          Thread.sleep(getPeriod() * 2);<a name="line.90"></a>
<span class="sourceLineNo">091</span>        } catch (InterruptedException e) {<a name="line.91"></a>
<span class="sourceLineNo">092</span>          log.warn("", e);<a name="line.92"></a>
<span class="sourceLineNo">093</span>        }<a name="line.93"></a>
<span class="sourceLineNo">094</span>        return true;<a name="line.94"></a>
<span class="sourceLineNo">095</span>      }<a name="line.95"></a>
<span class="sourceLineNo">096</span><a name="line.96"></a>
<span class="sourceLineNo">097</span>      @Override<a name="line.97"></a>
<span class="sourceLineNo">098</span>      protected void chore() {<a name="line.98"></a>
<span class="sourceLineNo">099</span>        try {<a name="line.99"></a>
<span class="sourceLineNo">100</span>          Thread.sleep(getPeriod() * 2);<a name="line.100"></a>
<span class="sourceLineNo">101</span>        } catch (InterruptedException e) {<a name="line.101"></a>
<span class="sourceLineNo">102</span>          log.warn("", e);<a name="line.102"></a>
<span class="sourceLineNo">103</span>        }<a name="line.103"></a>
<span class="sourceLineNo">104</span>      }<a name="line.104"></a>
<span class="sourceLineNo">105</span>    }<a name="line.105"></a>
<span class="sourceLineNo">106</span><a name="line.106"></a>
<span class="sourceLineNo">107</span>    /**<a name="line.107"></a>
<span class="sourceLineNo">108</span>     * Lightweight ScheduledChore used primarily to fill the scheduling queue in tests<a name="line.108"></a>
<span class="sourceLineNo">109</span>     */<a name="line.109"></a>
<span class="sourceLineNo">110</span>    public static class DoNothingChore extends ScheduledChore {<a name="line.110"></a>
<span class="sourceLineNo">111</span>      public DoNothingChore(String name, int period) {<a name="line.111"></a>
<span class="sourceLineNo">112</span>        super(name, new SampleStopper(), period);<a name="line.112"></a>
<span class="sourceLineNo">113</span>      }<a name="line.113"></a>
<span class="sourceLineNo">114</span><a name="line.114"></a>
<span class="sourceLineNo">115</span>      public DoNothingChore(String name, Stoppable stopper, int period) {<a name="line.115"></a>
<span class="sourceLineNo">116</span>        super(name, stopper, period);<a name="line.116"></a>
<span class="sourceLineNo">117</span>      }<a name="line.117"></a>
<span class="sourceLineNo">118</span><a name="line.118"></a>
<span class="sourceLineNo">119</span>      @Override<a name="line.119"></a>
<span class="sourceLineNo">120</span>      protected void chore() {<a name="line.120"></a>
<span class="sourceLineNo">121</span>        // DO NOTHING<a name="line.121"></a>
<span class="sourceLineNo">122</span>      }<a name="line.122"></a>
<span class="sourceLineNo">123</span><a name="line.123"></a>
<span class="sourceLineNo">124</span>    }<a name="line.124"></a>
<span class="sourceLineNo">125</span><a name="line.125"></a>
<span class="sourceLineNo">126</span>    public static class SleepingChore extends ScheduledChore {<a name="line.126"></a>
<span class="sourceLineNo">127</span>      private int sleepTime;<a name="line.127"></a>
<span class="sourceLineNo">128</span><a name="line.128"></a>
<span class="sourceLineNo">129</span>      public SleepingChore(String name, int chorePeriod, int sleepTime) {<a name="line.129"></a>
<span class="sourceLineNo">130</span>        this(name, new SampleStopper(), chorePeriod, sleepTime);<a name="line.130"></a>
<span class="sourceLineNo">131</span>      }<a name="line.131"></a>
<span class="sourceLineNo">132</span><a name="line.132"></a>
<span class="sourceLineNo">133</span>      public SleepingChore(String name, Stoppable stopper, int period, int sleepTime) {<a name="line.133"></a>
<span class="sourceLineNo">134</span>        super(name, stopper, period);<a name="line.134"></a>
<span class="sourceLineNo">135</span>        this.sleepTime = sleepTime;<a name="line.135"></a>
<span class="sourceLineNo">136</span>      }<a name="line.136"></a>
<span class="sourceLineNo">137</span><a name="line.137"></a>
<span class="sourceLineNo">138</span>      @Override<a name="line.138"></a>
<span class="sourceLineNo">139</span>      protected boolean initialChore() {<a name="line.139"></a>
<span class="sourceLineNo">140</span>        try {<a name="line.140"></a>
<span class="sourceLineNo">141</span>          Thread.sleep(sleepTime);<a name="line.141"></a>
<span class="sourceLineNo">142</span>        } catch (InterruptedException e) {<a name="line.142"></a>
<span class="sourceLineNo">143</span>          log.warn("", e);<a name="line.143"></a>
<span class="sourceLineNo">144</span>        }<a name="line.144"></a>
<span class="sourceLineNo">145</span>        return true;<a name="line.145"></a>
<span class="sourceLineNo">146</span>      }<a name="line.146"></a>
<span class="sourceLineNo">147</span><a name="line.147"></a>
<span class="sourceLineNo">148</span>      @Override<a name="line.148"></a>
<span class="sourceLineNo">149</span>      protected void chore() {<a name="line.149"></a>
<span class="sourceLineNo">150</span>        try {<a name="line.150"></a>
<span class="sourceLineNo">151</span>          Thread.sleep(sleepTime);<a name="line.151"></a>
<span class="sourceLineNo">152</span>        } catch (Exception e) {<a name="line.152"></a>
<span class="sourceLineNo">153</span>          log.warn("", e);<a name="line.153"></a>
<span class="sourceLineNo">154</span>        }<a name="line.154"></a>
<span class="sourceLineNo">155</span>      }<a name="line.155"></a>
<span class="sourceLineNo">156</span>    }<a name="line.156"></a>
<span class="sourceLineNo">157</span><a name="line.157"></a>
<span class="sourceLineNo">158</span>    public static class CountingChore extends ScheduledChore {<a name="line.158"></a>
<span class="sourceLineNo">159</span>      private int countOfChoreCalls;<a name="line.159"></a>
<span class="sourceLineNo">160</span>      private boolean outputOnTicks = false;<a name="line.160"></a>
<span class="sourceLineNo">161</span><a name="line.161"></a>
<span class="sourceLineNo">162</span>      public CountingChore(String name, int period) {<a name="line.162"></a>
<span class="sourceLineNo">163</span>        this(name, new SampleStopper(), period);<a name="line.163"></a>
<span class="sourceLineNo">164</span>      }<a name="line.164"></a>
<span class="sourceLineNo">165</span><a name="line.165"></a>
<span class="sourceLineNo">166</span>      public CountingChore(String name, Stoppable stopper, int period) {<a name="line.166"></a>
<span class="sourceLineNo">167</span>        this(name, stopper, period, false);<a name="line.167"></a>
<span class="sourceLineNo">168</span>      }<a name="line.168"></a>
<span class="sourceLineNo">169</span><a name="line.169"></a>
<span class="sourceLineNo">170</span>      public CountingChore(String name, Stoppable stopper, int period,<a name="line.170"></a>
<span class="sourceLineNo">171</span>          final boolean outputOnTicks) {<a name="line.171"></a>
<span class="sourceLineNo">172</span>        super(name, stopper, period);<a name="line.172"></a>
<span class="sourceLineNo">173</span>        this.countOfChoreCalls = 0;<a name="line.173"></a>
<span class="sourceLineNo">174</span>        this.outputOnTicks = outputOnTicks;<a name="line.174"></a>
<span class="sourceLineNo">175</span>      }<a name="line.175"></a>
<span class="sourceLineNo">176</span><a name="line.176"></a>
<span class="sourceLineNo">177</span>      @Override<a name="line.177"></a>
<span class="sourceLineNo">178</span>      protected boolean initialChore() {<a name="line.178"></a>
<span class="sourceLineNo">179</span>        countOfChoreCalls++;<a name="line.179"></a>
<span class="sourceLineNo">180</span>        if (outputOnTicks) {<a name="line.180"></a>
<span class="sourceLineNo">181</span>          outputTickCount();<a name="line.181"></a>
<span class="sourceLineNo">182</span>        }<a name="line.182"></a>
<span class="sourceLineNo">183</span>        return true;<a name="line.183"></a>
<span class="sourceLineNo">184</span>      }<a name="line.184"></a>
<span class="sourceLineNo">185</span><a name="line.185"></a>
<span class="sourceLineNo">186</span>      @Override<a name="line.186"></a>
<span class="sourceLineNo">187</span>      protected void chore() {<a name="line.187"></a>
<span class="sourceLineNo">188</span>        countOfChoreCalls++;<a name="line.188"></a>
<span class="sourceLineNo">189</span>        if (outputOnTicks) {<a name="line.189"></a>
<span class="sourceLineNo">190</span>          outputTickCount();<a name="line.190"></a>
<span class="sourceLineNo">191</span>        }<a name="line.191"></a>
<span class="sourceLineNo">192</span>      }<a name="line.192"></a>
<span class="sourceLineNo">193</span><a name="line.193"></a>
<span class="sourceLineNo">194</span>      private void outputTickCount() {<a name="line.194"></a>
<span class="sourceLineNo">195</span>        log.info("Chore: " + getName() + ". Count of chore calls: " + countOfChoreCalls);<a name="line.195"></a>
<span class="sourceLineNo">196</span>      }<a name="line.196"></a>
<span class="sourceLineNo">197</span><a name="line.197"></a>
<span class="sourceLineNo">198</span>      public int getCountOfChoreCalls() {<a name="line.198"></a>
<span class="sourceLineNo">199</span>        return countOfChoreCalls;<a name="line.199"></a>
<span class="sourceLineNo">200</span>      }<a name="line.200"></a>
<span class="sourceLineNo">201</span><a name="line.201"></a>
<span class="sourceLineNo">202</span>      public boolean isOutputtingOnTicks() {<a name="line.202"></a>
<span class="sourceLineNo">203</span>        return outputOnTicks;<a name="line.203"></a>
<span class="sourceLineNo">204</span>      }<a name="line.204"></a>
<span class="sourceLineNo">205</span><a name="line.205"></a>
<span class="sourceLineNo">206</span>      public void setOutputOnTicks(boolean o) {<a name="line.206"></a>
<span class="sourceLineNo">207</span>        outputOnTicks = o;<a name="line.207"></a>
<span class="sourceLineNo">208</span>      }<a name="line.208"></a>
<span class="sourceLineNo">209</span>    }<a name="line.209"></a>
<span class="sourceLineNo">210</span><a name="line.210"></a>
<span class="sourceLineNo">211</span>    /**<a name="line.211"></a>
<span class="sourceLineNo">212</span>     * A Chore that will try to execute the initial chore a few times before succeeding. Once the<a name="line.212"></a>
<span class="sourceLineNo">213</span>     * initial chore is complete the chore cancels itself<a name="line.213"></a>
<span class="sourceLineNo">214</span>     */<a name="line.214"></a>
<span class="sourceLineNo">215</span>    public static class FailInitialChore extends ScheduledChore {<a name="line.215"></a>
<span class="sourceLineNo">216</span>      private int numberOfFailures;<a name="line.216"></a>
<span class="sourceLineNo">217</span>      private int failureThreshold;<a name="line.217"></a>
<span class="sourceLineNo">218</span><a name="line.218"></a>
<span class="sourceLineNo">219</span>      /**<a name="line.219"></a>
<span class="sourceLineNo">220</span>       * @param failThreshold Number of times the Chore fails when trying to execute initialChore<a name="line.220"></a>
<span class="sourceLineNo">221</span>       *          before succeeding.<a name="line.221"></a>
<span class="sourceLineNo">222</span>       */<a name="line.222"></a>
<span class="sourceLineNo">223</span>      public FailInitialChore(String name, int period, int failThreshold) {<a name="line.223"></a>
<span class="sourceLineNo">224</span>        this(name, new SampleStopper(), period, failThreshold);<a name="line.224"></a>
<span class="sourceLineNo">225</span>      }<a name="line.225"></a>
<span class="sourceLineNo">226</span><a name="line.226"></a>
<span class="sourceLineNo">227</span>      public FailInitialChore(String name, Stoppable stopper, int period, int failThreshold) {<a name="line.227"></a>
<span class="sourceLineNo">228</span>        super(name, stopper, period);<a name="line.228"></a>
<span class="sourceLineNo">229</span>        numberOfFailures = 0;<a name="line.229"></a>
<span class="sourceLineNo">230</span>        failureThreshold = failThreshold;<a name="line.230"></a>
<span class="sourceLineNo">231</span>      }<a name="line.231"></a>
<span class="sourceLineNo">232</span><a name="line.232"></a>
<span class="sourceLineNo">233</span>      @Override<a name="line.233"></a>
<span class="sourceLineNo">234</span>      protected boolean initialChore() {<a name="line.234"></a>
<span class="sourceLineNo">235</span>        if (numberOfFailures &lt; failureThreshold) {<a name="line.235"></a>
<span class="sourceLineNo">236</span>          numberOfFailures++;<a name="line.236"></a>
<span class="sourceLineNo">237</span>          return false;<a name="line.237"></a>
<span class="sourceLineNo">238</span>        } else {<a name="line.238"></a>
<span class="sourceLineNo">239</span>          return true;<a name="line.239"></a>
<span class="sourceLineNo">240</span>        }<a name="line.240"></a>
<span class="sourceLineNo">241</span>      }<a name="line.241"></a>
<span class="sourceLineNo">242</span><a name="line.242"></a>
<span class="sourceLineNo">243</span>      @Override<a name="line.243"></a>
<span class="sourceLineNo">244</span>      protected void chore() {<a name="line.244"></a>
<span class="sourceLineNo">245</span>        assertTrue(numberOfFailures == failureThreshold);<a name="line.245"></a>
<span class="sourceLineNo">246</span>        cancel(false);<a name="line.246"></a>
<span class="sourceLineNo">247</span>      }<a name="line.247"></a>
<span class="sourceLineNo">248</span><a name="line.248"></a>
<span class="sourceLineNo">249</span>    }<a name="line.249"></a>
<span class="sourceLineNo">250</span>  }<a name="line.250"></a>
<span class="sourceLineNo">251</span><a name="line.251"></a>
<span class="sourceLineNo">252</span>  @Test<a name="line.252"></a>
<span class="sourceLineNo">253</span>  public void testInitialChorePrecedence() throws InterruptedException {<a name="line.253"></a>
<span class="sourceLineNo">254</span>    ChoreService service = new ChoreService("testInitialChorePrecedence");<a name="line.254"></a>
<span class="sourceLineNo">255</span><a name="line.255"></a>
<span class="sourceLineNo">256</span>    final int period = 100;<a name="line.256"></a>
<span class="sourceLineNo">257</span>    final int failureThreshold = 5;<a name="line.257"></a>
<span class="sourceLineNo">258</span><a name="line.258"></a>
<span class="sourceLineNo">259</span>    try {<a name="line.259"></a>
<span class="sourceLineNo">260</span>      ScheduledChore chore = new FailInitialChore("chore", period, failureThreshold);<a name="line.260"></a>
<span class="sourceLineNo">261</span>      service.scheduleChore(chore);<a name="line.261"></a>
<span class="sourceLineNo">262</span><a name="line.262"></a>
<span class="sourceLineNo">263</span>      int loopCount = 0;<a name="line.263"></a>
<span class="sourceLineNo">264</span>      boolean brokeOutOfLoop = false;<a name="line.264"></a>
<span class="sourceLineNo">265</span><a name="line.265"></a>
<span class="sourceLineNo">266</span>      while (!chore.isInitialChoreComplete() &amp;&amp; chore.isScheduled()) {<a name="line.266"></a>
<span class="sourceLineNo">267</span>        Thread.sleep(failureThreshold * period);<a name="line.267"></a>
<span class="sourceLineNo">268</span>        loopCount++;<a name="line.268"></a>
<span class="sourceLineNo">269</span>        if (loopCount &gt; 3) {<a name="line.269"></a>
<span class="sourceLineNo">270</span>          brokeOutOfLoop = true;<a name="line.270"></a>
<span class="sourceLineNo">271</span>          break;<a name="line.271"></a>
<span class="sourceLineNo">272</span>        }<a name="line.272"></a>
<span class="sourceLineNo">273</span>      }<a name="line.273"></a>
<span class="sourceLineNo">274</span><a name="line.274"></a>
<span class="sourceLineNo">275</span>      assertFalse(brokeOutOfLoop);<a name="line.275"></a>
<span class="sourceLineNo">276</span>    } finally {<a name="line.276"></a>
<span class="sourceLineNo">277</span>      shutdownService(service);<a name="line.277"></a>
<span class="sourceLineNo">278</span>    }<a name="line.278"></a>
<span class="sourceLineNo">279</span>  }<a name="line.279"></a>
<span class="sourceLineNo">280</span><a name="line.280"></a>
<span class="sourceLineNo">281</span>  @Test<a name="line.281"></a>
<span class="sourceLineNo">282</span>  public void testCancelChore() throws InterruptedException {<a name="line.282"></a>
<span class="sourceLineNo">283</span>    final int period = 100;<a name="line.283"></a>
<span class="sourceLineNo">284</span>    ScheduledChore chore1 = new DoNothingChore("chore1", period);<a name="line.284"></a>
<span class="sourceLineNo">285</span>    ChoreService service = new ChoreService("testCancelChore");<a name="line.285"></a>
<span class="sourceLineNo">286</span>    try {<a name="line.286"></a>
<span class="sourceLineNo">287</span>      service.scheduleChore(chore1);<a name="line.287"></a>
<span class="sourceLineNo">288</span>      assertTrue(chore1.isScheduled());<a name="line.288"></a>
<span class="sourceLineNo">289</span><a name="line.289"></a>
<span class="sourceLineNo">290</span>      chore1.cancel(true);<a name="line.290"></a>
<span class="sourceLineNo">291</span>      assertFalse(chore1.isScheduled());<a name="line.291"></a>
<span class="sourceLineNo">292</span>      assertTrue(service.getNumberOfScheduledChores() == 0);<a name="line.292"></a>
<span class="sourceLineNo">293</span>    } finally {<a name="line.293"></a>
<span class="sourceLineNo">294</span>      shutdownService(service);<a name="line.294"></a>
<span class="sourceLineNo">295</span>    }<a name="line.295"></a>
<span class="sourceLineNo">296</span>  }<a name="line.296"></a>
<span class="sourceLineNo">297</span><a name="line.297"></a>
<span class="sourceLineNo">298</span>  @Test<a name="line.298"></a>
<span class="sourceLineNo">299</span>  public void testScheduledChoreConstruction() {<a name="line.299"></a>
<span class="sourceLineNo">300</span>    final String NAME = "chore";<a name="line.300"></a>
<span class="sourceLineNo">301</span>    final int PERIOD = 100;<a name="line.301"></a>
<span class="sourceLineNo">302</span>    final long VALID_DELAY = 0;<a name="line.302"></a>
<span class="sourceLineNo">303</span>    final long INVALID_DELAY = -100;<a name="line.303"></a>
<span class="sourceLineNo">304</span>    final TimeUnit UNIT = TimeUnit.NANOSECONDS;<a name="line.304"></a>
<span class="sourceLineNo">305</span><a name="line.305"></a>
<span class="sourceLineNo">306</span>    ScheduledChore chore1 =<a name="line.306"></a>
<span class="sourceLineNo">307</span>        new ScheduledChore(NAME, new SampleStopper(), PERIOD, VALID_DELAY, UNIT) {<a name="line.307"></a>
<span class="sourceLineNo">308</span>      @Override<a name="line.308"></a>
<span class="sourceLineNo">309</span>      protected void chore() {<a name="line.309"></a>
<span class="sourceLineNo">310</span>        // DO NOTHING<a name="line.310"></a>
<span class="sourceLineNo">311</span>      }<a name="line.311"></a>
<span class="sourceLineNo">312</span>    };<a name="line.312"></a>
<span class="sourceLineNo">313</span><a name="line.313"></a>
<span class="sourceLineNo">314</span>    assertEquals("Name construction failed", NAME, chore1.getName());<a name="line.314"></a>
<span class="sourceLineNo">315</span>    assertEquals("Period construction failed", PERIOD, chore1.getPeriod());<a name="line.315"></a>
<span class="sourceLineNo">316</span>    assertEquals("Initial Delay construction failed", VALID_DELAY, chore1.getInitialDelay());<a name="line.316"></a>
<span class="sourceLineNo">317</span>    assertEquals("TimeUnit construction failed", UNIT, chore1.getTimeUnit());<a name="line.317"></a>
<span class="sourceLineNo">318</span><a name="line.318"></a>
<span class="sourceLineNo">319</span>    ScheduledChore invalidDelayChore =<a name="line.319"></a>
<span class="sourceLineNo">320</span>        new ScheduledChore(NAME, new SampleStopper(), PERIOD, INVALID_DELAY, UNIT) {<a name="line.320"></a>
<span class="sourceLineNo">321</span>      @Override<a name="line.321"></a>
<span class="sourceLineNo">322</span>      protected void chore() {<a name="line.322"></a>
<span class="sourceLineNo">323</span>        // DO NOTHING<a name="line.323"></a>
<span class="sourceLineNo">324</span>      }<a name="line.324"></a>
<span class="sourceLineNo">325</span>    };<a name="line.325"></a>
<span class="sourceLineNo">326</span><a name="line.326"></a>
<span class="sourceLineNo">327</span>    assertEquals("Initial Delay should be set to 0 when invalid", 0,<a name="line.327"></a>
<span class="sourceLineNo">328</span>      invalidDelayChore.getInitialDelay());<a name="line.328"></a>
<span class="sourceLineNo">329</span>  }<a name="line.329"></a>
<span class="sourceLineNo">330</span><a name="line.330"></a>
<span class="sourceLineNo">331</span>  @Test<a name="line.331"></a>
<span class="sourceLineNo">332</span>  public void testChoreServiceConstruction() throws InterruptedException {<a name="line.332"></a>
<span class="sourceLineNo">333</span>    final int corePoolSize = 10;<a name="line.333"></a>
<span class="sourceLineNo">334</span>    final int defaultCorePoolSize = ChoreService.MIN_CORE_POOL_SIZE;<a name="line.334"></a>
<span class="sourceLineNo">335</span><a name="line.335"></a>
<span class="sourceLineNo">336</span>    ChoreService customInit =<a name="line.336"></a>
<span class="sourceLineNo">337</span>        new ChoreService("testChoreServiceConstruction_custom", corePoolSize, false);<a name="line.337"></a>
<span class="sourceLineNo">338</span>    try {<a name="line.338"></a>
<span class="sourceLineNo">339</span>      assertEquals(corePoolSize, customInit.getCorePoolSize());<a name="line.339"></a>
<span class="sourceLineNo">340</span>    } finally {<a name="line.340"></a>
<span class="sourceLineNo">341</span>      shutdownService(customInit);<a name="line.341"></a>
<span class="sourceLineNo">342</span>    }<a name="line.342"></a>
<span class="sourceLineNo">343</span><a name="line.343"></a>
<span class="sourceLineNo">344</span>    ChoreService defaultInit = new ChoreService("testChoreServiceConstruction_default");<a name="line.344"></a>
<span class="sourceLineNo">345</span>    try {<a name="line.345"></a>
<span class="sourceLineNo">346</span>      assertEquals(defaultCorePoolSize, defaultInit.getCorePoolSize());<a name="line.346"></a>
<span class="sourceLineNo">347</span>    } finally {<a name="line.347"></a>
<span class="sourceLineNo">348</span>      shutdownService(defaultInit);<a name="line.348"></a>
<span class="sourceLineNo">349</span>    }<a name="line.349"></a>
<span class="sourceLineNo">350</span><a name="line.350"></a>
<span class="sourceLineNo">351</span>    ChoreService invalidInit = new ChoreService("testChoreServiceConstruction_invalid", -10, false);<a name="line.351"></a>
<span class="sourceLineNo">352</span>    try {<a name="line.352"></a>
<span class="sourceLineNo">353</span>      assertEquals(defaultCorePoolSize, invalidInit.getCorePoolSize());<a name="line.353"></a>
<span class="sourceLineNo">354</span>    } finally {<a name="line.354"></a>
<span class="sourceLineNo">355</span>      shutdownService(invalidInit);<a name="line.355"></a>
<span class="sourceLineNo">356</span>    }<a name="line.356"></a>
<span class="sourceLineNo">357</span>  }<a name="line.357"></a>
<span class="sourceLineNo">358</span><a name="line.358"></a>
<span class="sourceLineNo">359</span>  @Test<a name="line.359"></a>
<span class="sourceLineNo">360</span>  public void testFrequencyOfChores() throws InterruptedException {<a name="line.360"></a>
<span class="sourceLineNo">361</span>    final int period = 100;<a name="line.361"></a>
<span class="sourceLineNo">362</span>    // Small delta that acts as time buffer (allowing chores to complete if running slowly)<a name="line.362"></a>
<span class="sourceLineNo">363</span>    final int delta = period/5;<a name="line.363"></a>
<span class="sourceLineNo">364</span>    ChoreService service = new ChoreService("testFrequencyOfChores");<a name="line.364"></a>
<span class="sourceLineNo">365</span>    CountingChore chore = new CountingChore("countingChore", period);<a name="line.365"></a>
<span class="sourceLineNo">366</span>    try {<a name="line.366"></a>
<span class="sourceLineNo">367</span>      service.scheduleChore(chore);<a name="line.367"></a>
<span class="sourceLineNo">368</span><a name="line.368"></a>
<span class="sourceLineNo">369</span>      Thread.sleep(10 * period + delta);<a name="line.369"></a>
<span class="sourceLineNo">370</span>      assertEquals("10 periods have elapsed.", 11, chore.getCountOfChoreCalls());<a name="line.370"></a>
<span class="sourceLineNo">371</span><a name="line.371"></a>
<span class="sourceLineNo">372</span>      Thread.sleep(10 * period + delta);<a name="line.372"></a>
<span class="sourceLineNo">373</span>      assertEquals("20 periods have elapsed.", 21, chore.getCountOfChoreCalls());<a name="line.373"></a>
<span class="sourceLineNo">374</span>    } finally {<a name="line.374"></a>
<span class="sourceLineNo">375</span>      shutdownService(service);<a name="line.375"></a>
<span class="sourceLineNo">376</span>    }<a name="line.376"></a>
<span class="sourceLineNo">377</span>  }<a name="line.377"></a>
<span class="sourceLineNo">378</span><a name="line.378"></a>
<span class="sourceLineNo">379</span>  public void shutdownService(ChoreService service) throws InterruptedException {<a name="line.379"></a>
<span class="sourceLineNo">380</span>    service.shutdown();<a name="line.380"></a>
<span class="sourceLineNo">381</span>    while (!service.isTerminated()) {<a name="line.381"></a>
<span class="sourceLineNo">382</span>      Thread.sleep(100);<a name="line.382"></a>
<span class="sourceLineNo">383</span>    }<a name="line.383"></a>
<span class="sourceLineNo">384</span>  }<a name="line.384"></a>
<span class="sourceLineNo">385</span><a name="line.385"></a>
<span class="sourceLineNo">386</span>  @Test<a name="line.386"></a>
<span class="sourceLineNo">387</span>  public void testForceTrigger() throws InterruptedException {<a name="line.387"></a>
<span class="sourceLineNo">388</span>    final int period = 100;<a name="line.388"></a>
<span class="sourceLineNo">389</span>    final int delta = period/10;<a name="line.389"></a>
<span class="sourceLineNo">390</span>    ChoreService service = new ChoreService("testForceTrigger");<a name="line.390"></a>
<span class="sourceLineNo">391</span>    final CountingChore chore = new CountingChore("countingChore", period);<a name="line.391"></a>
<span class="sourceLineNo">392</span>    try {<a name="line.392"></a>
<span class="sourceLineNo">393</span>      service.scheduleChore(chore);<a name="line.393"></a>
<span class="sourceLineNo">394</span>      Thread.sleep(10 * period + delta);<a name="line.394"></a>
<span class="sourceLineNo">395</span><a name="line.395"></a>
<span class="sourceLineNo">396</span>      assertEquals("10 periods have elapsed.", 11, chore.getCountOfChoreCalls());<a name="line.396"></a>
<span class="sourceLineNo">397</span><a name="line.397"></a>
<span class="sourceLineNo">398</span>      // Force five runs of the chore to occur, sleeping between triggers to ensure the<a name="line.398"></a>
<span class="sourceLineNo">399</span>      // chore has time to run<a name="line.399"></a>
<span class="sourceLineNo">400</span>      chore.triggerNow();<a name="line.400"></a>
<span class="sourceLineNo">401</span>      Thread.sleep(delta);<a name="line.401"></a>
<span class="sourceLineNo">402</span>      chore.triggerNow();<a name="line.402"></a>
<span class="sourceLineNo">403</span>      Thread.sleep(delta);<a name="line.403"></a>
<span class="sourceLineNo">404</span>      chore.triggerNow();<a name="line.404"></a>
<span class="sourceLineNo">405</span>      Thread.sleep(delta);<a name="line.405"></a>
<span class="sourceLineNo">406</span>      chore.triggerNow();<a name="line.406"></a>
<span class="sourceLineNo">407</span>      Thread.sleep(delta);<a name="line.407"></a>
<span class="sourceLineNo">408</span>      chore.triggerNow();<a name="line.408"></a>
<span class="sourceLineNo">409</span>      Thread.sleep(delta);<a name="line.409"></a>
<span class="sourceLineNo">410</span><a name="line.410"></a>
<span class="sourceLineNo">411</span>      assertEquals("Trigger was called 5 times after 10 periods.", 16,<a name="line.411"></a>
<span class="sourceLineNo">412</span>          chore.getCountOfChoreCalls());<a name="line.412"></a>
<span class="sourceLineNo">413</span><a name="line.413"></a>
<span class="sourceLineNo">414</span>      Thread.sleep(10 * period + delta);<a name="line.414"></a>
<span class="sourceLineNo">415</span><a name="line.415"></a>
<span class="sourceLineNo">416</span>      // Be loosey-goosey. It used to be '26' but it was a big flakey relying on timing.<a name="line.416"></a>
<span class="sourceLineNo">417</span>      assertTrue("Expected at least 16 invocations, instead got " + chore.getCountOfChoreCalls(),<a name="line.417"></a>
<span class="sourceLineNo">418</span>          chore.getCountOfChoreCalls() &gt; 16);<a name="line.418"></a>
<span class="sourceLineNo">419</span>    } finally {<a name="line.419"></a>
<span class="sourceLineNo">420</span>      shutdownService(service);<a name="line.420"></a>
<span class="sourceLineNo">421</span>    }<a name="line.421"></a>
<span class="sourceLineNo">422</span>  }<a name="line.422"></a>
<span class="sourceLineNo">423</span><a name="line.423"></a>
<span class="sourceLineNo">424</span>  @Test<a name="line.424"></a>
<span class="sourceLineNo">425</span>  public void testCorePoolIncrease() throws InterruptedException {<a name="line.425"></a>
<span class="sourceLineNo">426</span>    final int initialCorePoolSize = 3;<a name="line.426"></a>
<span class="sourceLineNo">427</span>    ChoreService service = new ChoreService("testCorePoolIncrease", initialCorePoolSize, false);<a name="line.427"></a>
<span class="sourceLineNo">428</span><a name="line.428"></a>
<span class="sourceLineNo">429</span>    try {<a name="line.429"></a>
<span class="sourceLineNo">430</span>      assertEquals("Setting core pool size gave unexpected results.", initialCorePoolSize,<a name="line.430"></a>
<span class="sourceLineNo">431</span>        service.getCorePoolSize());<a name="line.431"></a>
<span class="sourceLineNo">432</span><a name="line.432"></a>
<span class="sourceLineNo">433</span>      final int slowChorePeriod = 100;<a name="line.433"></a>
<span class="sourceLineNo">434</span>      SlowChore slowChore1 = new SlowChore("slowChore1", slowChorePeriod);<a name="line.434"></a>
<span class="sourceLineNo">435</span>      SlowChore slowChore2 = new SlowChore("slowChore2", slowChorePeriod);<a name="line.435"></a>
<span class="sourceLineNo">436</span>      SlowChore slowChore3 = new SlowChore("slowChore3", slowChorePeriod);<a name="line.436"></a>
<span class="sourceLineNo">437</span><a name="line.437"></a>
<span class="sourceLineNo">438</span>      service.scheduleChore(slowChore1);<a name="line.438"></a>
<span class="sourceLineNo">439</span>      service.scheduleChore(slowChore2);<a name="line.439"></a>
<span class="sourceLineNo">440</span>      service.scheduleChore(slowChore3);<a name="line.440"></a>
<span class="sourceLineNo">441</span><a name="line.441"></a>
<span class="sourceLineNo">442</span>      Thread.sleep(slowChorePeriod * 10);<a name="line.442"></a>
<span class="sourceLineNo">443</span>      assertEquals("Should not create more pools than scheduled chores", 3,<a name="line.443"></a>
<span class="sourceLineNo">444</span>        service.getCorePoolSize());<a name="line.444"></a>
<span class="sourceLineNo">445</span><a name="line.445"></a>
<span class="sourceLineNo">446</span>      SlowChore slowChore4 = new SlowChore("slowChore4", slowChorePeriod);<a name="line.446"></a>
<span class="sourceLineNo">447</span>      service.scheduleChore(slowChore4);<a name="line.447"></a>
<span class="sourceLineNo">448</span><a name="line.448"></a>
<span class="sourceLineNo">449</span>      Thread.sleep(slowChorePeriod * 10);<a name="line.449"></a>
<span class="sourceLineNo">450</span>      assertEquals("Chores are missing their start time. Should expand core pool size", 4,<a name="line.450"></a>
<span class="sourceLineNo">451</span>        service.getCorePoolSize());<a name="line.451"></a>
<span class="sourceLineNo">452</span><a name="line.452"></a>
<span class="sourceLineNo">453</span>      SlowChore slowChore5 = new SlowChore("slowChore5", slowChorePeriod);<a name="line.453"></a>
<span class="sourceLineNo">454</span>      service.scheduleChore(slowChore5);<a name="line.454"></a>
<span class="sourceLineNo">455</span><a name="line.455"></a>
<span class="sourceLineNo">456</span>      Thread.sleep(slowChorePeriod * 10);<a name="line.456"></a>
<span class="sourceLineNo">457</span>      assertEquals("Chores are missing their start time. Should expand core pool size", 5,<a name="line.457"></a>
<span class="sourceLineNo">458</span>        service.getCorePoolSize());<a name="line.458"></a>
<span class="sourceLineNo">459</span>    } finally {<a name="line.459"></a>
<span class="sourceLineNo">460</span>      shutdownService(service);<a name="line.460"></a>
<span class="sourceLineNo">461</span>    }<a name="line.461"></a>
<span class="sourceLineNo">462</span>  }<a name="line.462"></a>
<span class="sourceLineNo">463</span><a name="line.463"></a>
<span class="sourceLineNo">464</span>  @Test<a name="line.464"></a>
<span class="sourceLineNo">465</span>  public void testCorePoolDecrease() throws InterruptedException {<a name="line.465"></a>
<span class="sourceLineNo">466</span>    final int initialCorePoolSize = 3;<a name="line.466"></a>
<span class="sourceLineNo">467</span>    ChoreService service = new ChoreService("testCorePoolDecrease", initialCorePoolSize, false);<a name="line.467"></a>
<span class="sourceLineNo">468</span>    final int chorePeriod = 100;<a name="line.468"></a>
<span class="sourceLineNo">469</span>    try {<a name="line.469"></a>
<span class="sourceLineNo">470</span>      // Slow chores always miss their start time and thus the core pool size should be at least as<a name="line.470"></a>
<span class="sourceLineNo">471</span>      // large as the number of running slow chores<a name="line.471"></a>
<span class="sourceLineNo">472</span>      SlowChore slowChore1 = new SlowChore("slowChore1", chorePeriod);<a name="line.472"></a>
<span class="sourceLineNo">473</span>      SlowChore slowChore2 = new SlowChore("slowChore2", chorePeriod);<a name="line.473"></a>
<span class="sourceLineNo">474</span>      SlowChore slowChore3 = new SlowChore("slowChore3", chorePeriod);<a name="line.474"></a>
<span class="sourceLineNo">475</span><a name="line.475"></a>
<span class="sourceLineNo">476</span>      service.scheduleChore(slowChore1);<a name="line.476"></a>
<span class="sourceLineNo">477</span>      service.scheduleChore(slowChore2);<a name="line.477"></a>
<span class="sourceLineNo">478</span>      service.scheduleChore(slowChore3);<a name="line.478"></a>
<span class="sourceLineNo">479</span><a name="line.479"></a>
<span class="sourceLineNo">480</span>      Thread.sleep(chorePeriod * 10);<a name="line.480"></a>
<span class="sourceLineNo">481</span>      assertEquals("Should not create more pools than scheduled chores",<a name="line.481"></a>
<span class="sourceLineNo">482</span>        service.getNumberOfScheduledChores(), service.getCorePoolSize());<a name="line.482"></a>
<span class="sourceLineNo">483</span><a name="line.483"></a>
<span class="sourceLineNo">484</span>      SlowChore slowChore4 = new SlowChore("slowChore4", chorePeriod);<a name="line.484"></a>
<span class="sourceLineNo">485</span>      service.scheduleChore(slowChore4);<a name="line.485"></a>
<span class="sourceLineNo">486</span>      Thread.sleep(chorePeriod * 10);<a name="line.486"></a>
<span class="sourceLineNo">487</span>      assertEquals("Chores are missing their start time. Should expand core pool size",<a name="line.487"></a>
<span class="sourceLineNo">488</span>        service.getNumberOfScheduledChores(), service.getCorePoolSize());<a name="line.488"></a>
<span class="sourceLineNo">489</span><a name="line.489"></a>
<span class="sourceLineNo">490</span>      SlowChore slowChore5 = new SlowChore("slowChore5", chorePeriod);<a name="line.490"></a>
<span class="sourceLineNo">491</span>      service.scheduleChore(slowChore5);<a name="line.491"></a>
<span class="sourceLineNo">492</span>      Thread.sleep(chorePeriod * 10);<a name="line.492"></a>
<span class="sourceLineNo">493</span>      assertEquals("Chores are missing their start time. Should expand core pool size",<a name="line.493"></a>
<span class="sourceLineNo">494</span>        service.getNumberOfScheduledChores(), service.getCorePoolSize());<a name="line.494"></a>
<span class="sourceLineNo">495</span>      assertEquals(5, service.getNumberOfChoresMissingStartTime());<a name="line.495"></a>
<span class="sourceLineNo">496</span><a name="line.496"></a>
<span class="sourceLineNo">497</span>      // Now we begin to cancel the chores that caused an increase in the core thread pool of the<a name="line.497"></a>
<span class="sourceLineNo">498</span>      // ChoreService. These cancellations should cause a decrease in the core thread pool.<a name="line.498"></a>
<span class="sourceLineNo">499</span>      slowChore5.cancel();<a name="line.499"></a>
<span class="sourceLineNo">500</span>      Thread.sleep(chorePeriod * 10);<a name="line.500"></a>
<span class="sourceLineNo">501</span>      assertEquals(Math.max(ChoreService.MIN_CORE_POOL_SIZE, service.getNumberOfScheduledChores()),<a name="line.501"></a>
<span class="sourceLineNo">502</span>        service.getCorePoolSize());<a name="line.502"></a>
<span class="sourceLineNo">503</span>      assertEquals(4, service.getNumberOfChoresMissingStartTime());<a name="line.503"></a>
<span class="sourceLineNo">504</span><a name="line.504"></a>
<span class="sourceLineNo">505</span>      slowChore4.cancel();<a name="line.505"></a>
<span class="sourceLineNo">506</span>      Thread.sleep(chorePeriod * 10);<a name="line.506"></a>
<span class="sourceLineNo">507</span>      assertEquals(Math.max(ChoreService.MIN_CORE_POOL_SIZE, service.getNumberOfScheduledChores()),<a name="line.507"></a>
<span class="sourceLineNo">508</span>        service.getCorePoolSize());<a name="line.508"></a>
<span class="sourceLineNo">509</span>      assertEquals(3, service.getNumberOfChoresMissingStartTime());<a name="line.509"></a>
<span class="sourceLineNo">510</span><a name="line.510"></a>
<span class="sourceLineNo">511</span>      slowChore3.cancel();<a name="line.511"></a>
<span class="sourceLineNo">512</span>      Thread.sleep(chorePeriod * 10);<a name="line.512"></a>
<span class="sourceLineNo">513</span>      assertEquals(Math.max(ChoreService.MIN_CORE_POOL_SIZE, service.getNumberOfScheduledChores()),<a name="line.513"></a>
<span class="sourceLineNo">514</span>        service.getCorePoolSize());<a name="line.514"></a>
<span class="sourceLineNo">515</span>      assertEquals(2, service.getNumberOfChoresMissingStartTime());<a name="line.515"></a>
<span class="sourceLineNo">516</span><a name="line.516"></a>
<span class="sourceLineNo">517</span>      slowChore2.cancel();<a name="line.517"></a>
<span class="sourceLineNo">518</span>      Thread.sleep(chorePeriod * 10);<a name="line.518"></a>
<span class="sourceLineNo">519</span>      assertEquals(Math.max(ChoreService.MIN_CORE_POOL_SIZE, service.getNumberOfScheduledChores()),<a name="line.519"></a>
<span class="sourceLineNo">520</span>        service.getCorePoolSize());<a name="line.520"></a>
<span class="sourceLineNo">521</span>      assertEquals(1, service.getNumberOfChoresMissingStartTime());<a name="line.521"></a>
<span class="sourceLineNo">522</span><a name="line.522"></a>
<span class="sourceLineNo">523</span>      slowChore1.cancel();<a name="line.523"></a>
<span class="sourceLineNo">524</span>      Thread.sleep(chorePeriod * 10);<a name="line.524"></a>
<span class="sourceLineNo">525</span>      assertEquals(Math.max(ChoreService.MIN_CORE_POOL_SIZE, service.getNumberOfScheduledChores()),<a name="line.525"></a>
<span class="sourceLineNo">526</span>        service.getCorePoolSize());<a name="line.526"></a>
<span class="sourceLineNo">527</span>      assertEquals(0, service.getNumberOfChoresMissingStartTime());<a name="line.527"></a>
<span class="sourceLineNo">528</span>    } finally {<a name="line.528"></a>
<span class="sourceLineNo">529</span>      shutdownService(service);<a name="line.529"></a>
<span class="sourceLineNo">530</span>    }<a name="line.530"></a>
<span class="sourceLineNo">531</span>  }<a name="line.531"></a>
<span class="sourceLineNo">532</span><a name="line.532"></a>
<span class="sourceLineNo">533</span>  @Test<a name="line.533"></a>
<span class="sourceLineNo">534</span>  public void testNumberOfRunningChores() throws InterruptedException {<a name="line.534"></a>
<span class="sourceLineNo">535</span>    ChoreService service = new ChoreService("testNumberOfRunningChores");<a name="line.535"></a>
<span class="sourceLineNo">536</span><a name="line.536"></a>
<span class="sourceLineNo">537</span>    final int period = 100;<a name="line.537"></a>
<span class="sourceLineNo">538</span>    final int sleepTime = 5;<a name="line.538"></a>
<span class="sourceLineNo">539</span><a name="line.539"></a>
<span class="sourceLineNo">540</span>    try {<a name="line.540"></a>
<span class="sourceLineNo">541</span>      DoNothingChore dn1 = new DoNothingChore("dn1", period);<a name="line.541"></a>
<span class="sourceLineNo">542</span>      DoNothingChore dn2 = new DoNothingChore("dn2", period);<a name="line.542"></a>
<span class="sourceLineNo">543</span>      DoNothingChore dn3 = new DoNothingChore("dn3", period);<a name="line.543"></a>
<span class="sourceLineNo">544</span>      DoNothingChore dn4 = new DoNothingChore("dn4", period);<a name="line.544"></a>
<span class="sourceLineNo">545</span>      DoNothingChore dn5 = new DoNothingChore("dn5", period);<a name="line.545"></a>
<span class="sourceLineNo">546</span><a name="line.546"></a>
<span class="sourceLineNo">547</span>      service.scheduleChore(dn1);<a name="line.547"></a>
<span class="sourceLineNo">548</span>      service.scheduleChore(dn2);<a name="line.548"></a>
<span class="sourceLineNo">549</span>      service.scheduleChore(dn3);<a name="line.549"></a>
<span class="sourceLineNo">550</span>      service.scheduleChore(dn4);<a name="line.550"></a>
<span class="sourceLineNo">551</span>      service.scheduleChore(dn5);<a name="line.551"></a>
<span class="sourceLineNo">552</span><a name="line.552"></a>
<span class="sourceLineNo">553</span>      Thread.sleep(sleepTime);<a name="line.553"></a>
<span class="sourceLineNo">554</span>      assertEquals("Scheduled chore mismatch", 5, service.getNumberOfScheduledChores());<a name="line.554"></a>
<span class="sourceLineNo">555</span><a name="line.555"></a>
<span class="sourceLineNo">556</span>      dn1.cancel();<a name="line.556"></a>
<span class="sourceLineNo">557</span>      Thread.sleep(sleepTime);<a name="line.557"></a>
<span class="sourceLineNo">558</span>      assertEquals("Scheduled chore mismatch", 4, service.getNumberOfScheduledChores());<a name="line.558"></a>
<span class="sourceLineNo">559</span><a name="line.559"></a>
<span class="sourceLineNo">560</span>      dn2.cancel();<a name="line.560"></a>
<span class="sourceLineNo">561</span>      dn3.cancel();<a name="line.561"></a>
<span class="sourceLineNo">562</span>      dn4.cancel();<a name="line.562"></a>
<span class="sourceLineNo">563</span>      Thread.sleep(sleepTime);<a name="line.563"></a>
<span class="sourceLineNo">564</span>      assertEquals("Scheduled chore mismatch", 1, service.getNumberOfScheduledChores());<a name="line.564"></a>
<span class="sourceLineNo">565</span><a name="line.565"></a>
<span class="sourceLineNo">566</span>      dn5.cancel();<a name="line.566"></a>
<span class="sourceLineNo">567</span>      Thread.sleep(sleepTime);<a name="line.567"></a>
<span class="sourceLineNo">568</span>      assertEquals("Scheduled chore mismatch", 0, service.getNumberOfScheduledChores());<a name="line.568"></a>
<span class="sourceLineNo">569</span>    } finally {<a name="line.569"></a>
<span class="sourceLineNo">570</span>      shutdownService(service);<a name="line.570"></a>
<span class="sourceLineNo">571</span>    }<a name="line.571"></a>
<span class="sourceLineNo">572</span>  }<a name="line.572"></a>
<span class="sourceLineNo">573</span><a name="line.573"></a>
<span class="sourceLineNo">574</span>  @Test<a name="line.574"></a>
<span class="sourceLineNo">575</span>  public void testNumberOfChoresMissingStartTime() throws InterruptedException {<a name="line.575"></a>
<span class="sourceLineNo">576</span>    ChoreService service = new ChoreService("testNumberOfChoresMissingStartTime");<a name="line.576"></a>
<span class="sourceLineNo">577</span><a name="line.577"></a>
<span class="sourceLineNo">578</span>    final int period = 100;<a name="line.578"></a>
<span class="sourceLineNo">579</span>    final int sleepTime = 20 * period;<a name="line.579"></a>
<span class="sourceLineNo">580</span><a name="line.580"></a>
<span class="sourceLineNo">581</span>    try {<a name="line.581"></a>
<span class="sourceLineNo">582</span>      // Slow chores sleep for a length of time LONGER than their period. Thus, SlowChores<a name="line.582"></a>
<span class="sourceLineNo">583</span>      // ALWAYS miss their start time since their execution takes longer than their period<a name="line.583"></a>
<span class="sourceLineNo">584</span>      SlowChore sc1 = new SlowChore("sc1", period);<a name="line.584"></a>
<span class="sourceLineNo">585</span>      SlowChore sc2 = new SlowChore("sc2", period);<a name="line.585"></a>
<span class="sourceLineNo">586</span>      SlowChore sc3 = new SlowChore("sc3", period);<a name="line.586"></a>
<span class="sourceLineNo">587</span>      SlowChore sc4 = new SlowChore("sc4", period);<a name="line.587"></a>
<span class="sourceLineNo">588</span>      SlowChore sc5 = new SlowChore("sc5", period);<a name="line.588"></a>
<span class="sourceLineNo">589</span><a name="line.589"></a>
<span class="sourceLineNo">590</span>      service.scheduleChore(sc1);<a name="line.590"></a>
<span class="sourceLineNo">591</span>      service.scheduleChore(sc2);<a name="line.591"></a>
<span class="sourceLineNo">592</span>      service.scheduleChore(sc3);<a name="line.592"></a>
<span class="sourceLineNo">593</span>      service.scheduleChore(sc4);<a name="line.593"></a>
<span class="sourceLineNo">594</span>      service.scheduleChore(sc5);<a name="line.594"></a>
<span class="sourceLineNo">595</span><a name="line.595"></a>
<span class="sourceLineNo">596</span>      Thread.sleep(sleepTime);<a name="line.596"></a>
<span class="sourceLineNo">597</span>      assertEquals(5, service.getNumberOfChoresMissingStartTime());<a name="line.597"></a>
<span class="sourceLineNo">598</span><a name="line.598"></a>
<span class="sourceLineNo">599</span>      sc1.cancel();<a name="line.599"></a>
<span class="sourceLineNo">600</span>      Thread.sleep(sleepTime);<a name="line.600"></a>
<span class="sourceLineNo">601</span>      assertEquals(4, service.getNumberOfChoresMissingStartTime());<a name="line.601"></a>
<span class="sourceLineNo">602</span><a name="line.602"></a>
<span class="sourceLineNo">603</span>      sc2.cancel();<a name="line.603"></a>
<span class="sourceLineNo">604</span>      sc3.cancel();<a name="line.604"></a>
<span class="sourceLineNo">605</span>      sc4.cancel();<a name="line.605"></a>
<span class="sourceLineNo">606</span>      Thread.sleep(sleepTime);<a name="line.606"></a>
<span class="sourceLineNo">607</span>      assertEquals(1, service.getNumberOfChoresMissingStartTime());<a name="line.607"></a>
<span class="sourceLineNo">608</span><a name="line.608"></a>
<span class="sourceLineNo">609</span>      sc5.cancel();<a name="line.609"></a>
<span class="sourceLineNo">610</span>      Thread.sleep(sleepTime);<a name="line.610"></a>
<span class="sourceLineNo">611</span>      assertEquals(0, service.getNumberOfChoresMissingStartTime());<a name="line.611"></a>
<span class="sourceLineNo">612</span>    } finally {<a name="line.612"></a>
<span class="sourceLineNo">613</span>      shutdownService(service);<a name="line.613"></a>
<span class="sourceLineNo">614</span>    }<a name="line.614"></a>
<span class="sourceLineNo">615</span>  }<a name="line.615"></a>
<span class="sourceLineNo">616</span><a name="line.616"></a>
<span class="sourceLineNo">617</span>  /**<a name="line.617"></a>
<span class="sourceLineNo">618</span>   * ChoreServices should never have a core pool size that exceeds the number of chores that have<a name="line.618"></a>
<span class="sourceLineNo">619</span>   * been scheduled with the service. For example, if 4 ScheduledChores are scheduled with a<a name="line.619"></a>
<span class="sourceLineNo">620</span>   * ChoreService, the number of threads in the ChoreService's core pool should never exceed 4<a name="line.620"></a>
<span class="sourceLineNo">621</span>   */<a name="line.621"></a>
<span class="sourceLineNo">622</span>  @Test<a name="line.622"></a>
<span class="sourceLineNo">623</span>  public void testMaximumChoreServiceThreads() throws InterruptedException {<a name="line.623"></a>
<span class="sourceLineNo">624</span>    ChoreService service = new ChoreService("testMaximumChoreServiceThreads");<a name="line.624"></a>
<span class="sourceLineNo">625</span><a name="line.625"></a>
<span class="sourceLineNo">626</span>    final int period = 100;<a name="line.626"></a>
<span class="sourceLineNo">627</span>    final int sleepTime = 5 * period;<a name="line.627"></a>
<span class="sourceLineNo">628</span><a name="line.628"></a>
<span class="sourceLineNo">629</span>    try {<a name="line.629"></a>
<span class="sourceLineNo">630</span>      // Slow chores sleep for a length of time LONGER than their period. Thus, SlowChores<a name="line.630"></a>
<span class="sourceLineNo">631</span>      // ALWAYS miss their start time since their execution takes longer than their period.<a name="line.631"></a>
<span class="sourceLineNo">632</span>      // Chores that miss their start time will trigger the onChoreMissedStartTime callback<a name="line.632"></a>
<span class="sourceLineNo">633</span>      // in the ChoreService. This callback will try to increase the number of core pool<a name="line.633"></a>
<span class="sourceLineNo">634</span>      // threads.<a name="line.634"></a>
<span class="sourceLineNo">635</span>      SlowChore sc1 = new SlowChore("sc1", period);<a name="line.635"></a>
<span class="sourceLineNo">636</span>      SlowChore sc2 = new SlowChore("sc2", period);<a name="line.636"></a>
<span class="sourceLineNo">637</span>      SlowChore sc3 = new SlowChore("sc3", period);<a name="line.637"></a>
<span class="sourceLineNo">638</span>      SlowChore sc4 = new SlowChore("sc4", period);<a name="line.638"></a>
<span class="sourceLineNo">639</span>      SlowChore sc5 = new SlowChore("sc5", period);<a name="line.639"></a>
<span class="sourceLineNo">640</span><a name="line.640"></a>
<span class="sourceLineNo">641</span>      service.scheduleChore(sc1);<a name="line.641"></a>
<span class="sourceLineNo">642</span>      service.scheduleChore(sc2);<a name="line.642"></a>
<span class="sourceLineNo">643</span>      service.scheduleChore(sc3);<a name="line.643"></a>
<span class="sourceLineNo">644</span>      service.scheduleChore(sc4);<a name="line.644"></a>
<span class="sourceLineNo">645</span>      service.scheduleChore(sc5);<a name="line.645"></a>
<span class="sourceLineNo">646</span><a name="line.646"></a>
<span class="sourceLineNo">647</span>      Thread.sleep(sleepTime);<a name="line.647"></a>
<span class="sourceLineNo">648</span>      assertTrue(service.getCorePoolSize() &lt;= service.getNumberOfScheduledChores());<a name="line.648"></a>
<span class="sourceLineNo">649</span><a name="line.649"></a>
<span class="sourceLineNo">650</span>      SlowChore sc6 = new SlowChore("sc6", period);<a name="line.650"></a>
<span class="sourceLineNo">651</span>      SlowChore sc7 = new SlowChore("sc7", period);<a name="line.651"></a>
<span class="sourceLineNo">652</span>      SlowChore sc8 = new SlowChore("sc8", period);<a name="line.652"></a>
<span class="sourceLineNo">653</span>      SlowChore sc9 = new SlowChore("sc9", period);<a name="line.653"></a>
<span class="sourceLineNo">654</span>      SlowChore sc10 = new SlowChore("sc10", period);<a name="line.654"></a>
<span class="sourceLineNo">655</span><a name="line.655"></a>
<span class="sourceLineNo">656</span>      service.scheduleChore(sc6);<a name="line.656"></a>
<span class="sourceLineNo">657</span>      service.scheduleChore(sc7);<a name="line.657"></a>
<span class="sourceLineNo">658</span>      service.scheduleChore(sc8);<a name="line.658"></a>
<span class="sourceLineNo">659</span>      service.scheduleChore(sc9);<a name="line.659"></a>
<span class="sourceLineNo">660</span>      service.scheduleChore(sc10);<a name="line.660"></a>
<span class="sourceLineNo">661</span><a name="line.661"></a>
<span class="sourceLineNo">662</span>      Thread.sleep(sleepTime);<a name="line.662"></a>
<span class="sourceLineNo">663</span>      assertTrue(service.getCorePoolSize() &lt;= service.getNumberOfScheduledChores());<a name="line.663"></a>
<span class="sourceLineNo">664</span>    } finally {<a name="line.664"></a>
<span class="sourceLineNo">665</span>      shutdownService(service);<a name="line.665"></a>
<span class="sourceLineNo">666</span>    }<a name="line.666"></a>
<span class="sourceLineNo">667</span>  }<a name="line.667"></a>
<span class="sourceLineNo">668</span><a name="line.668"></a>
<span class="sourceLineNo">669</span>  @Test<a name="line.669"></a>
<span class="sourceLineNo">670</span>  public void testChangingChoreServices() throws InterruptedException {<a name="line.670"></a>
<span class="sourceLineNo">671</span>    final int period = 100;<a name="line.671"></a>
<span class="sourceLineNo">672</span>    final int sleepTime = 10;<a name="line.672"></a>
<span class="sourceLineNo">673</span>    ChoreService service1 = new ChoreService("testChangingChoreServices_1");<a name="line.673"></a>
<span class="sourceLineNo">674</span>    ChoreService service2 = new ChoreService("testChangingChoreServices_2");<a name="line.674"></a>
<span class="sourceLineNo">675</span>    ScheduledChore chore = new DoNothingChore("sample", period);<a name="line.675"></a>
<span class="sourceLineNo">676</span><a name="line.676"></a>
<span class="sourceLineNo">677</span>    try {<a name="line.677"></a>
<span class="sourceLineNo">678</span>      assertFalse(chore.isScheduled());<a name="line.678"></a>
<span class="sourceLineNo">679</span>      assertFalse(service1.isChoreScheduled(chore));<a name="line.679"></a>
<span class="sourceLineNo">680</span>      assertFalse(service2.isChoreScheduled(chore));<a name="line.680"></a>
<span class="sourceLineNo">681</span>      assertTrue(chore.getChoreServicer() == null);<a name="line.681"></a>
<span class="sourceLineNo">682</span><a name="line.682"></a>
<span class="sourceLineNo">683</span>      service1.scheduleChore(chore);<a name="line.683"></a>
<span class="sourceLineNo">684</span>      Thread.sleep(sleepTime);<a name="line.684"></a>
<span class="sourceLineNo">685</span>      assertTrue(chore.isScheduled());<a name="line.685"></a>
<span class="sourceLineNo">686</span>      assertTrue(service1.isChoreScheduled(chore));<a name="line.686"></a>
<span class="sourceLineNo">687</span>      assertFalse(service2.isChoreScheduled(chore));<a name="line.687"></a>
<span class="sourceLineNo">688</span>      assertFalse(chore.getChoreServicer() == null);<a name="line.688"></a>
<span class="sourceLineNo">689</span><a name="line.689"></a>
<span class="sourceLineNo">690</span>      service2.scheduleChore(chore);<a name="line.690"></a>
<span class="sourceLineNo">691</span>      Thread.sleep(sleepTime);<a name="line.691"></a>
<span class="sourceLineNo">692</span>      assertTrue(chore.isScheduled());<a name="line.692"></a>
<span class="sourceLineNo">693</span>      assertFalse(service1.isChoreScheduled(chore));<a name="line.693"></a>
<span class="sourceLineNo">694</span>      assertTrue(service2.isChoreScheduled(chore));<a name="line.694"></a>
<span class="sourceLineNo">695</span>      assertFalse(chore.getChoreServicer() == null);<a name="line.695"></a>
<span class="sourceLineNo">696</span><a name="line.696"></a>
<span class="sourceLineNo">697</span>      chore.cancel();<a name="line.697"></a>
<span class="sourceLineNo">698</span>      assertFalse(chore.isScheduled());<a name="line.698"></a>
<span class="sourceLineNo">699</span>      assertFalse(service1.isChoreScheduled(chore));<a name="line.699"></a>
<span class="sourceLineNo">700</span>      assertFalse(service2.isChoreScheduled(chore));<a name="line.700"></a>
<span class="sourceLineNo">701</span>      assertTrue(chore.getChoreServicer() == null);<a name="line.701"></a>
<span class="sourceLineNo">702</span>    } finally {<a name="line.702"></a>
<span class="sourceLineNo">703</span>      shutdownService(service1);<a name="line.703"></a>
<span class="sourceLineNo">704</span>      shutdownService(service2);<a name="line.704"></a>
<span class="sourceLineNo">705</span>    }<a name="line.705"></a>
<span class="sourceLineNo">706</span>  }<a name="line.706"></a>
<span class="sourceLineNo">707</span><a name="line.707"></a>
<span class="sourceLineNo">708</span>  @Test<a name="line.708"></a>
<span class="sourceLineNo">709</span>  public void testStopperForScheduledChores() throws InterruptedException {<a name="line.709"></a>
<span class="sourceLineNo">710</span>    ChoreService service = new ChoreService("testStopperForScheduledChores");<a name="line.710"></a>
<span class="sourceLineNo">711</span>    Stoppable stopperForGroup1 = new SampleStopper();<a name="line.711"></a>
<span class="sourceLineNo">712</span>    Stoppable stopperForGroup2 = new SampleStopper();<a name="line.712"></a>
<span class="sourceLineNo">713</span>    final int period = 100;<a name="line.713"></a>
<span class="sourceLineNo">714</span>    final int delta = period/10;<a name="line.714"></a>
<span class="sourceLineNo">715</span><a name="line.715"></a>
<span class="sourceLineNo">716</span>    try {<a name="line.716"></a>
<span class="sourceLineNo">717</span>      ScheduledChore chore1_group1 = new DoNothingChore("c1g1", stopperForGroup1, period);<a name="line.717"></a>
<span class="sourceLineNo">718</span>      ScheduledChore chore2_group1 = new DoNothingChore("c2g1", stopperForGroup1, period);<a name="line.718"></a>
<span class="sourceLineNo">719</span>      ScheduledChore chore3_group1 = new DoNothingChore("c3g1", stopperForGroup1, period);<a name="line.719"></a>
<span class="sourceLineNo">720</span><a name="line.720"></a>
<span class="sourceLineNo">721</span>      ScheduledChore chore1_group2 = new DoNothingChore("c1g2", stopperForGroup2, period);<a name="line.721"></a>
<span class="sourceLineNo">722</span>      ScheduledChore chore2_group2 = new DoNothingChore("c2g2", stopperForGroup2, period);<a name="line.722"></a>
<span class="sourceLineNo">723</span>      ScheduledChore chore3_group2 = new DoNothingChore("c3g2", stopperForGroup2, period);<a name="line.723"></a>
<span class="sourceLineNo">724</span><a name="line.724"></a>
<span class="sourceLineNo">725</span>      service.scheduleChore(chore1_group1);<a name="line.725"></a>
<span class="sourceLineNo">726</span>      service.scheduleChore(chore2_group1);<a name="line.726"></a>
<span class="sourceLineNo">727</span>      service.scheduleChore(chore3_group1);<a name="line.727"></a>
<span class="sourceLineNo">728</span>      service.scheduleChore(chore1_group2);<a name="line.728"></a>
<span class="sourceLineNo">729</span>      service.scheduleChore(chore2_group2);<a name="line.729"></a>
<span class="sourceLineNo">730</span>      service.scheduleChore(chore3_group2);<a name="line.730"></a>
<span class="sourceLineNo">731</span><a name="line.731"></a>
<span class="sourceLineNo">732</span>      Thread.sleep(delta);<a name="line.732"></a>
<span class="sourceLineNo">733</span>      Thread.sleep(10 * period);<a name="line.733"></a>
<span class="sourceLineNo">734</span>      assertTrue(chore1_group1.isScheduled());<a name="line.734"></a>
<span class="sourceLineNo">735</span>      assertTrue(chore2_group1.isScheduled());<a name="line.735"></a>
<span class="sourceLineNo">736</span>      assertTrue(chore3_group1.isScheduled());<a name="line.736"></a>
<span class="sourceLineNo">737</span>      assertTrue(chore1_group2.isScheduled());<a name="line.737"></a>
<span class="sourceLineNo">738</span>      assertTrue(chore2_group2.isScheduled());<a name="line.738"></a>
<span class="sourceLineNo">739</span>      assertTrue(chore3_group2.isScheduled());<a name="line.739"></a>
<span class="sourceLineNo">740</span><a name="line.740"></a>
<span class="sourceLineNo">741</span>      stopperForGroup1.stop("test stopping group 1");<a name="line.741"></a>
<span class="sourceLineNo">742</span>      Thread.sleep(period);<a name="line.742"></a>
<span class="sourceLineNo">743</span>      assertFalse(chore1_group1.isScheduled());<a name="line.743"></a>
<span class="sourceLineNo">744</span>      assertFalse(chore2_group1.isScheduled());<a name="line.744"></a>
<span class="sourceLineNo">745</span>      assertFalse(chore3_group1.isScheduled());<a name="line.745"></a>
<span class="sourceLineNo">746</span>      assertTrue(chore1_group2.isScheduled());<a name="line.746"></a>
<span class="sourceLineNo">747</span>      assertTrue(chore2_group2.isScheduled());<a name="line.747"></a>
<span class="sourceLineNo">748</span>      assertTrue(chore3_group2.isScheduled());<a name="line.748"></a>
<span class="sourceLineNo">749</span><a name="line.749"></a>
<span class="sourceLineNo">750</span>      stopperForGroup2.stop("test stopping group 2");<a name="line.750"></a>
<span class="sourceLineNo">751</span>      Thread.sleep(period);<a name="line.751"></a>
<span class="sourceLineNo">752</span>      assertFalse(chore1_group1.isScheduled());<a name="line.752"></a>
<span class="sourceLineNo">753</span>      assertFalse(chore2_group1.isScheduled());<a name="line.753"></a>
<span class="sourceLineNo">754</span>      assertFalse(chore3_group1.isScheduled());<a name="line.754"></a>
<span class="sourceLineNo">755</span>      assertFalse(chore1_group2.isScheduled());<a name="line.755"></a>
<span class="sourceLineNo">756</span>      assertFalse(chore2_group2.isScheduled());<a name="line.756"></a>
<span class="sourceLineNo">757</span>      assertFalse(chore3_group2.isScheduled());<a name="line.757"></a>
<span class="sourceLineNo">758</span>    } finally {<a name="line.758"></a>
<span class="sourceLineNo">759</span>      shutdownService(service);<a name="line.759"></a>
<span class="sourceLineNo">760</span>    }<a name="line.760"></a>
<span class="sourceLineNo">761</span>  }<a name="line.761"></a>
<span class="sourceLineNo">762</span><a name="line.762"></a>
<span class="sourceLineNo">763</span>  @Test<a name="line.763"></a>
<span class="sourceLineNo">764</span>  public void testShutdownCancelsScheduledChores() throws InterruptedException {<a name="line.764"></a>
<span class="sourceLineNo">765</span>    final int period = 100;<a name="line.765"></a>
<span class="sourceLineNo">766</span>    ChoreService service = new ChoreService("testShutdownCancelsScheduledChores");<a name="line.766"></a>
<span class="sourceLineNo">767</span>    ScheduledChore successChore1 = new DoNothingChore("sc1", period);<a name="line.767"></a>
<span class="sourceLineNo">768</span>    ScheduledChore successChore2 = new DoNothingChore("sc2", period);<a name="line.768"></a>
<span class="sourceLineNo">769</span>    ScheduledChore successChore3 = new DoNothingChore("sc3", period);<a name="line.769"></a>
<span class="sourceLineNo">770</span><a name="line.770"></a>
<span class="sourceLineNo">771</span>    try {<a name="line.771"></a>
<span class="sourceLineNo">772</span>      assertTrue(service.scheduleChore(successChore1));<a name="line.772"></a>
<span class="sourceLineNo">773</span>      assertTrue(successChore1.isScheduled());<a name="line.773"></a>
<span class="sourceLineNo">774</span>      assertTrue(service.scheduleChore(successChore2));<a name="line.774"></a>
<span class="sourceLineNo">775</span>      assertTrue(successChore2.isScheduled());<a name="line.775"></a>
<span class="sourceLineNo">776</span>      assertTrue(service.scheduleChore(successChore3));<a name="line.776"></a>
<span class="sourceLineNo">777</span>      assertTrue(successChore3.isScheduled());<a name="line.777"></a>
<span class="sourceLineNo">778</span>    } finally {<a name="line.778"></a>
<span class="sourceLineNo">779</span>      shutdownService(service);<a name="line.779"></a>
<span class="sourceLineNo">780</span>    }<a name="line.780"></a>
<span class="sourceLineNo">781</span><a name="line.781"></a>
<span class="sourceLineNo">782</span>    assertFalse(successChore1.isScheduled());<a name="line.782"></a>
<span class="sourceLineNo">783</span>    assertFalse(successChore2.isScheduled());<a name="line.783"></a>
<span class="sourceLineNo">784</span>    assertFalse(successChore3.isScheduled());<a name="line.784"></a>
<span class="sourceLineNo">785</span>  }<a name="line.785"></a>
<span class="sourceLineNo">786</span><a name="line.786"></a>
<span class="sourceLineNo">787</span>  @Test<a name="line.787"></a>
<span class="sourceLineNo">788</span>  public void testShutdownWorksWhileChoresAreExecuting() throws InterruptedException {<a name="line.788"></a>
<span class="sourceLineNo">789</span>    final int period = 100;<a name="line.789"></a>
<span class="sourceLineNo">790</span>    final int sleep = 5 * period;<a name="line.790"></a>
<span class="sourceLineNo">791</span>    ChoreService service = new ChoreService("testShutdownWorksWhileChoresAreExecuting");<a name="line.791"></a>
<span class="sourceLineNo">792</span>    ScheduledChore slowChore1 = new SleepingChore("sc1", period, sleep);<a name="line.792"></a>
<span class="sourceLineNo">793</span>    ScheduledChore slowChore2 = new SleepingChore("sc2", period, sleep);<a name="line.793"></a>
<span class="sourceLineNo">794</span>    ScheduledChore slowChore3 = new SleepingChore("sc3", period, sleep);<a name="line.794"></a>
<span class="sourceLineNo">795</span>    try {<a name="line.795"></a>
<span class="sourceLineNo">796</span>      assertTrue(service.scheduleChore(slowChore1));<a name="line.796"></a>
<span class="sourceLineNo">797</span>      assertTrue(service.scheduleChore(slowChore2));<a name="line.797"></a>
<span class="sourceLineNo">798</span>      assertTrue(service.scheduleChore(slowChore3));<a name="line.798"></a>
<span class="sourceLineNo">799</span><a name="line.799"></a>
<span class="sourceLineNo">800</span>      Thread.sleep(sleep / 2);<a name="line.800"></a>
<span class="sourceLineNo">801</span>      shutdownService(service);<a name="line.801"></a>
<span class="sourceLineNo">802</span><a name="line.802"></a>
<span class="sourceLineNo">803</span>      assertFalse(slowChore1.isScheduled());<a name="line.803"></a>
<span class="sourceLineNo">804</span>      assertFalse(slowChore2.isScheduled());<a name="line.804"></a>
<span class="sourceLineNo">805</span>      assertFalse(slowChore3.isScheduled());<a name="line.805"></a>
<span class="sourceLineNo">806</span>      assertTrue(service.isShutdown());<a name="line.806"></a>
<span class="sourceLineNo">807</span><a name="line.807"></a>
<span class="sourceLineNo">808</span>      Thread.sleep(5);<a name="line.808"></a>
<span class="sourceLineNo">809</span>      assertTrue(service.isTerminated());<a name="line.809"></a>
<span class="sourceLineNo">810</span>    } finally {<a name="line.810"></a>
<span class="sourceLineNo">811</span>      shutdownService(service);<a name="line.811"></a>
<span class="sourceLineNo">812</span>    }<a name="line.812"></a>
<span class="sourceLineNo">813</span>  }<a name="line.813"></a>
<span class="sourceLineNo">814</span><a name="line.814"></a>
<span class="sourceLineNo">815</span>  @Test<a name="line.815"></a>
<span class="sourceLineNo">816</span>  public void testShutdownRejectsNewSchedules() throws InterruptedException {<a name="line.816"></a>
<span class="sourceLineNo">817</span>    final int period = 100;<a name="line.817"></a>
<span class="sourceLineNo">818</span>    ChoreService service = new ChoreService("testShutdownRejectsNewSchedules");<a name="line.818"></a>
<span class="sourceLineNo">819</span>    ScheduledChore successChore1 = new DoNothingChore("sc1", period);<a name="line.819"></a>
<span class="sourceLineNo">820</span>    ScheduledChore successChore2 = new DoNothingChore("sc2", period);<a name="line.820"></a>
<span class="sourceLineNo">821</span>    ScheduledChore successChore3 = new DoNothingChore("sc3", period);<a name="line.821"></a>
<span class="sourceLineNo">822</span>    ScheduledChore failChore1 = new DoNothingChore("fc1", period);<a name="line.822"></a>
<span class="sourceLineNo">823</span>    ScheduledChore failChore2 = new DoNothingChore("fc2", period);<a name="line.823"></a>
<span class="sourceLineNo">824</span>    ScheduledChore failChore3 = new DoNothingChore("fc3", period);<a name="line.824"></a>
<span class="sourceLineNo">825</span><a name="line.825"></a>
<span class="sourceLineNo">826</span>    try {<a name="line.826"></a>
<span class="sourceLineNo">827</span>      assertTrue(service.scheduleChore(successChore1));<a name="line.827"></a>
<span class="sourceLineNo">828</span>      assertTrue(successChore1.isScheduled());<a name="line.828"></a>
<span class="sourceLineNo">829</span>      assertTrue(service.scheduleChore(successChore2));<a name="line.829"></a>
<span class="sourceLineNo">830</span>      assertTrue(successChore2.isScheduled());<a name="line.830"></a>
<span class="sourceLineNo">831</span>      assertTrue(service.scheduleChore(successChore3));<a name="line.831"></a>
<span class="sourceLineNo">832</span>      assertTrue(successChore3.isScheduled());<a name="line.832"></a>
<span class="sourceLineNo">833</span>    } finally {<a name="line.833"></a>
<span class="sourceLineNo">834</span>      shutdownService(service);<a name="line.834"></a>
<span class="sourceLineNo">835</span>    }<a name="line.835"></a>
<span class="sourceLineNo">836</span><a name="line.836"></a>
<span class="sourceLineNo">837</span>    assertFalse(service.scheduleChore(failChore1));<a name="line.837"></a>
<span class="sourceLineNo">838</span>    assertFalse(failChore1.isScheduled());<a name="line.838"></a>
<span class="sourceLineNo">839</span>    assertFalse(service.scheduleChore(failChore2));<a name="line.839"></a>
<span class="sourceLineNo">840</span>    assertFalse(failChore2.isScheduled());<a name="line.840"></a>
<span class="sourceLineNo">841</span>    assertFalse(service.scheduleChore(failChore3));<a name="line.841"></a>
<span class="sourceLineNo">842</span>    assertFalse(failChore3.isScheduled());<a name="line.842"></a>
<span class="sourceLineNo">843</span>  }<a name="line.843"></a>
<span class="sourceLineNo">844</span><a name="line.844"></a>
<span class="sourceLineNo">845</span>  /**<a name="line.845"></a>
<span class="sourceLineNo">846</span>   * for HBASE-25014<a name="line.846"></a>
<span class="sourceLineNo">847</span>   */<a name="line.847"></a>
<span class="sourceLineNo">848</span>  @Test(timeout = 10000)<a name="line.848"></a>
<span class="sourceLineNo">849</span>  public void testInitialDelay() {<a name="line.849"></a>
<span class="sourceLineNo">850</span>    ChoreService service = new ChoreService(name.getMethodName());<a name="line.850"></a>
<span class="sourceLineNo">851</span>    SampleStopper stopper = new SampleStopper();<a name="line.851"></a>
<span class="sourceLineNo">852</span>    service.scheduleChore(new ScheduledChore("chore", stopper, 1000, 2000) {<a name="line.852"></a>
<span class="sourceLineNo">853</span>      @Override protected void chore() {<a name="line.853"></a>
<span class="sourceLineNo">854</span>        stopper.stop("test");<a name="line.854"></a>
<span class="sourceLineNo">855</span>      }<a name="line.855"></a>
<span class="sourceLineNo">856</span>    });<a name="line.856"></a>
<span class="sourceLineNo">857</span>    while (!stopper.isStopped()) {<a name="line.857"></a>
<span class="sourceLineNo">858</span>      Threads.sleep(1000);<a name="line.858"></a>
<span class="sourceLineNo">859</span>    }<a name="line.859"></a>
<span class="sourceLineNo">860</span>  }<a name="line.860"></a>
<span class="sourceLineNo">861</span>}<a name="line.861"></a>




























































</pre>
</div>
</body>
</html>
