@Test
  public void testLongTimeouts() {
    ClientPolicyCalculator calc = new ClientPolicyCalculator();
    HTTPClientPolicy p1 = new HTTPClientPolicy();
    HTTPClientPolicy p2 = new HTTPClientPolicy();
    p2.setReceiveTimeout(120000);
    p2.setConnectionTimeout(60000);
    HTTPClientPolicy p = calc.intersect(p1, p2);
    assertEquals(120000, p.getReceiveTimeout());
    assertEquals(60000, p.getConnectionTimeout());

    p1 = new HTTPClientPolicy();
    p2 = new HTTPClientPolicy();
    p1.setReceiveTimeout(120000);
    p1.setConnectionTimeout(60000);
    p = calc.intersect(p1, p2);
    assertEquals(120000, p.getReceiveTimeout());
    assertEquals(60000, p.getConnectionTimeout());

    p2.setReceiveTimeout(50000);
    p2.setConnectionTimeout(20000);
    p = calc.intersect(p1, p2);
    // p1 should have priority
    assertEquals(120000, p.getReceiveTimeout());
    assertEquals(60000, p.getConnectionTimeout());

    // reverse intersect
    p = calc.intersect(p2, p1);
    // p2 should have priority
    assertEquals(50000, p.getReceiveTimeout());
    assertEquals(20000, p.getConnectionTimeout());
  }
  @Test
  public void testIntersectClientPolicies() {
    ClientPolicyCalculator calc = new ClientPolicyCalculator();
    HTTPClientPolicy p1 = new HTTPClientPolicy();
    HTTPClientPolicy p2 = new HTTPClientPolicy();
    HTTPClientPolicy p = null;

    p1.setBrowserType("browser");
    p = calc.intersect(p1, p2);
    assertEquals("browser", p.getBrowserType());
    p1.setBrowserType(null);
    p1.setConnectionTimeout(10000L);
    p = calc.intersect(p1, p2);
    assertEquals(10000L, p.getConnectionTimeout());
    p1.setAllowChunking(false);
    p2.setAllowChunking(false);
    p = calc.intersect(p1, p2);
    assertTrue(!p.isAllowChunking());
  }
 @Test
 public void testCompatibleClientPolicies() {
   ClientPolicyCalculator calc = new ClientPolicyCalculator();
   HTTPClientPolicy p1 = new HTTPClientPolicy();
   assertTrue("Policy is not compatible with itself.", calc.compatible(p1, p1));
   HTTPClientPolicy p2 = new HTTPClientPolicy();
   assertTrue("Policies are not compatible.", calc.compatible(p1, p2));
   p1.setBrowserType("browser");
   assertTrue("Policies are not compatible.", calc.compatible(p1, p2));
   p1.setBrowserType(null);
   p1.setConnectionTimeout(10000);
   assertTrue("Policies are not compatible.", calc.compatible(p1, p2));
   p1.setAllowChunking(false);
   assertTrue("Policies are compatible.", !calc.compatible(p1, p2));
   p2.setAllowChunking(false);
   assertTrue("Policies are compatible.", calc.compatible(p1, p2));
 }
 @Test
 public void testEqualClientPolicies() {
   ClientPolicyCalculator calc = new ClientPolicyCalculator();
   HTTPClientPolicy p1 = new HTTPClientPolicy();
   assertTrue(calc.equals(p1, p1));
   HTTPClientPolicy p2 = new HTTPClientPolicy();
   assertTrue(calc.equals(p1, p2));
   p1.setDecoupledEndpoint("http://localhost:8080/decoupled");
   assertTrue(!calc.equals(p1, p2));
   p2.setDecoupledEndpoint("http://localhost:8080/decoupled");
   assertTrue(calc.equals(p1, p2));
   p1.setReceiveTimeout(10000L);
   assertTrue(!calc.equals(p1, p2));
 }