1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 package org.apache.hc.client5.http.impl.classic;
28
29 import java.util.HashSet;
30 import java.util.Map;
31 import java.util.Set;
32 import java.util.concurrent.ConcurrentHashMap;
33
34 import org.apache.hc.client5.http.HttpRoute;
35 import org.apache.hc.core5.pool.ConnPoolControl;
36 import org.apache.hc.core5.pool.PoolStats;
37 import org.apache.hc.core5.util.TimeValue;
38
39 public final class MockConnPoolControl implements ConnPoolControl<HttpRoute> {
40
41 private final ConcurrentHashMap<HttpRoute, Integer> maxPerHostMap;
42
43 private volatile int totalMax;
44 private volatile int defaultMax;
45
46 public MockConnPoolControl() {
47 super();
48 this.maxPerHostMap = new ConcurrentHashMap<>();
49 this.totalMax = 20;
50 this.defaultMax = 2;
51 }
52
53 @Override
54 public void setMaxTotal(final int max) {
55 this.totalMax = max;
56 }
57
58 @Override
59 public int getMaxTotal() {
60 return this.totalMax;
61 }
62
63 @Override
64 public PoolStats getTotalStats() {
65 return new PoolStats(-1, -1, -1, this.totalMax);
66 }
67
68 @Override
69 public PoolStats getStats(final HttpRoute route) {
70 return new PoolStats(-1, -1, -1, getMaxPerRoute(route));
71 }
72
73 @Override
74 public int getDefaultMaxPerRoute() {
75 return this.defaultMax;
76 }
77
78 @Override
79 public void setDefaultMaxPerRoute(final int max) {
80 this.defaultMax = max;
81 }
82
83 @Override
84 public void setMaxPerRoute(final HttpRoute route, final int max) {
85 this.maxPerHostMap.put(route, max);
86 }
87
88 @Override
89 public int getMaxPerRoute(final HttpRoute route) {
90 final Integer max = this.maxPerHostMap.get(route);
91 return max != null ? max : this.defaultMax;
92 }
93
94 @Override
95 public void closeIdle(final TimeValue idletime) {
96 }
97
98 @Override
99 public void closeExpired() {
100 }
101
102 public void setMaxForRoutes(final Map<HttpRoute, Integer> map) {
103 if (map == null) {
104 return;
105 }
106 this.maxPerHostMap.clear();
107 this.maxPerHostMap.putAll(map);
108 }
109
110 @Override
111 public Set<HttpRoute> getRoutes() {
112 return new HashSet<>(this.maxPerHostMap.keySet());
113 }
114
115 @Override
116 public String toString() {
117 return this.maxPerHostMap.toString();
118 }
119
120 }