<!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>ConnectionThrottleFilterTest xref</title>
<link type="text/css" rel="stylesheet" href="../../../../../stylesheet.css" />
</head>
<body>
<pre>

<a name="1" href="#1">1</a>   <em class="jxr_comment">/*</em>
<a name="2" href="#2">2</a>   <em class="jxr_comment"> *   Licensed to the Apache Software Foundation (ASF) under one</em>
<a name="3" href="#3">3</a>   <em class="jxr_comment"> *   or more contributor license agreements.  See the NOTICE file</em>
<a name="4" href="#4">4</a>   <em class="jxr_comment"> *   distributed with this work for additional information</em>
<a name="5" href="#5">5</a>   <em class="jxr_comment"> *   regarding copyright ownership.  The ASF licenses this file</em>
<a name="6" href="#6">6</a>   <em class="jxr_comment"> *   to you under the Apache License, Version 2.0 (the</em>
<a name="7" href="#7">7</a>   <em class="jxr_comment"> *   "License"); you may not use this file except in compliance</em>
<a name="8" href="#8">8</a>   <em class="jxr_comment"> *   with the License.  You may obtain a copy of the License at</em>
<a name="9" href="#9">9</a>   <em class="jxr_comment"> *</em>
<a name="10" href="#10">10</a>  <em class="jxr_comment"> *     <a href="http://www.apache.org/licenses/LICENSE-2.0" target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.0</a></em>
<a name="11" href="#11">11</a>  <em class="jxr_comment"> *</em>
<a name="12" href="#12">12</a>  <em class="jxr_comment"> *   Unless required by applicable law or agreed to in writing,</em>
<a name="13" href="#13">13</a>  <em class="jxr_comment"> *   software distributed under the License is distributed on an</em>
<a name="14" href="#14">14</a>  <em class="jxr_comment"> *   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</em>
<a name="15" href="#15">15</a>  <em class="jxr_comment"> *   KIND, either express or implied.  See the License for the</em>
<a name="16" href="#16">16</a>  <em class="jxr_comment"> *   specific language governing permissions and limitations</em>
<a name="17" href="#17">17</a>  <em class="jxr_comment"> *   under the License.</em>
<a name="18" href="#18">18</a>  <em class="jxr_comment"> *</em>
<a name="19" href="#19">19</a>  <em class="jxr_comment"> */</em>
<a name="20" href="#20">20</a>  
<a name="21" href="#21">21</a>  <strong class="jxr_keyword">package</strong> org.apache.mina.filter.firewall;
<a name="22" href="#22">22</a>  
<a name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> java.net.InetSocketAddress;
<a name="24" href="#24">24</a>  
<a name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> junit.framework.TestCase;
<a name="26" href="#26">26</a>  
<a name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.mina.core.session.DummySession;
<a name="28" href="#28">28</a>  
<a name="29" href="#29">29</a>  <em class="jxr_javadoccomment">/**</em>
<a name="30" href="#30">30</a>  <em class="jxr_javadoccomment"> * TODO Add documentation</em>
<a name="31" href="#31">31</a>  <em class="jxr_javadoccomment"> * </em>
<a name="32" href="#32">32</a>  <em class="jxr_javadoccomment"> * @author The Apache MINA Project (dev@mina.apache.org)</em>
<a name="33" href="#33">33</a>  <em class="jxr_javadoccomment"> * @version $Rev$, $Date$</em>
<a name="34" href="#34">34</a>  <em class="jxr_javadoccomment"> */</em>
<a name="35" href="#35">35</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../org/apache/mina/filter/firewall/ConnectionThrottleFilterTest.html">ConnectionThrottleFilterTest</a> <strong class="jxr_keyword">extends</strong> TestCase
<a name="36" href="#36">36</a>  {
<a name="37" href="#37">37</a>      <strong class="jxr_keyword">private</strong> ConnectionThrottleFilter filter;
<a name="38" href="#38">38</a>  
<a name="39" href="#39">39</a>      <strong class="jxr_keyword">private</strong> DummySession sessionOne;
<a name="40" href="#40">40</a>      <strong class="jxr_keyword">private</strong> DummySession sessionTwo;
<a name="41" href="#41">41</a>  
<a name="42" href="#42">42</a>      @Override
<a name="43" href="#43">43</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> setUp() <strong class="jxr_keyword">throws</strong> Exception
<a name="44" href="#44">44</a>      {
<a name="45" href="#45">45</a>          filter = <strong class="jxr_keyword">new</strong> ConnectionThrottleFilter();
<a name="46" href="#46">46</a>  
<a name="47" href="#47">47</a>          sessionOne = <strong class="jxr_keyword">new</strong> DummySession();
<a name="48" href="#48">48</a>          sessionOne.setRemoteAddress( <strong class="jxr_keyword">new</strong> InetSocketAddress(1234) );
<a name="49" href="#49">49</a>          sessionTwo = <strong class="jxr_keyword">new</strong> DummySession();
<a name="50" href="#50">50</a>          sessionTwo.setRemoteAddress( <strong class="jxr_keyword">new</strong> InetSocketAddress(1235) );
<a name="51" href="#51">51</a>      }
<a name="52" href="#52">52</a>  
<a name="53" href="#53">53</a>      @Override
<a name="54" href="#54">54</a>      <strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> tearDown() <strong class="jxr_keyword">throws</strong> Exception
<a name="55" href="#55">55</a>      {
<a name="56" href="#56">56</a>          filter = <strong class="jxr_keyword">null</strong>;
<a name="57" href="#57">57</a>      }
<a name="58" href="#58">58</a>  
<a name="59" href="#59">59</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testGoodConnection(){
<a name="60" href="#60">60</a>          filter.setAllowedInterval( 100 );
<a name="61" href="#61">61</a>          filter.isConnectionOk( sessionOne );
<a name="62" href="#62">62</a>          <strong class="jxr_keyword">try</strong>
<a name="63" href="#63">63</a>          {
<a name="64" href="#64">64</a>              Thread.sleep( 1000 );
<a name="65" href="#65">65</a>          }
<a name="66" href="#66">66</a>          <strong class="jxr_keyword">catch</strong> ( InterruptedException e )
<a name="67" href="#67">67</a>          {
<a name="68" href="#68">68</a>              e.printStackTrace();
<a name="69" href="#69">69</a>          }
<a name="70" href="#70">70</a>  
<a name="71" href="#71">71</a>          <strong class="jxr_keyword">boolean</strong> result = filter.isConnectionOk( sessionOne );
<a name="72" href="#72">72</a>          assertTrue( result );
<a name="73" href="#73">73</a>      }
<a name="74" href="#74">74</a>  
<a name="75" href="#75">75</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testBadConnection(){
<a name="76" href="#76">76</a>          filter.setAllowedInterval( 1000 );
<a name="77" href="#77">77</a>          filter.isConnectionOk( sessionTwo );
<a name="78" href="#78">78</a>          assertFalse(filter.isConnectionOk( sessionTwo ));
<a name="79" href="#79">79</a>      }
<a name="80" href="#80">80</a>  
<a name="81" href="#81">81</a>      <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> main(String[] args) {
<a name="82" href="#82">82</a>       junit.textui.TestRunner.run( ConnectionThrottleFilterTest.<strong class="jxr_keyword">class</strong> );
<a name="83" href="#83">83</a>      }
<a name="84" href="#84">84</a>  }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

