18
18
*/
19
19
package org .apache .pulsar .broker .loadbalance .extensions .data ;
20
20
21
+ import static org .hamcrest .MatcherAssert .assertThat ;
22
+ import static org .hamcrest .Matchers .greaterThanOrEqualTo ;
21
23
import static org .testng .Assert .assertEquals ;
22
24
23
25
import org .apache .pulsar .broker .ServiceConfiguration ;
24
26
import org .apache .pulsar .policies .data .loadbalancer .ResourceUsage ;
27
+ import org .apache .pulsar .policies .data .loadbalancer .SystemResourceUsage ;
25
28
import org .testng .annotations .Test ;
26
29
27
30
/**
32
35
public class BrokerLoadDataTest {
33
36
34
37
@ Test
35
- public void testMaxResourceUsage () {
38
+ public void testUpdateBySystemResourceUsage () {
39
+
40
+ ServiceConfiguration conf = new ServiceConfiguration ();
41
+ conf .setLoadBalancerCPUResourceWeight (0.5 );
42
+ conf .setLoadBalancerMemoryResourceWeight (0.5 );
43
+ conf .setLoadBalancerDirectMemoryResourceWeight (0.5 );
44
+ conf .setLoadBalancerBandwithInResourceWeight (0.5 );
45
+ conf .setLoadBalancerBandwithOutResourceWeight (0.5 );
46
+ conf .setLoadBalancerHistoryResourcePercentage (0.75 );
47
+
36
48
BrokerLoadData data = new BrokerLoadData ();
37
- data .setCpu (new ResourceUsage (1.0 , 100.0 ));
38
- data .setMemory (new ResourceUsage (800.0 , 200.0 ));
39
- data .setDirectMemory (new ResourceUsage (2.0 , 100.0 ));
40
- data .setBandwidthIn (new ResourceUsage (3.0 , 100.0 ));
41
- data .setBandwidthOut (new ResourceUsage (4.0 , 100.0 ));
42
-
43
- double epsilon = 0.00001 ;
44
- double weight = 0.5 ;
45
- // skips memory usage
46
- assertEquals (data .getMaxResourceUsage (), 0.04 , epsilon );
47
-
48
- assertEquals (
49
- data .getMaxResourceUsageWithWeight (
50
- weight , weight , weight , weight , weight ), 2.0 , epsilon );
51
- assertEquals (
52
- data .getWeightedMaxEMA (), null );
49
+
50
+ long now = System .currentTimeMillis ();
51
+ SystemResourceUsage usage1 = new SystemResourceUsage ();
52
+ var cpu = new ResourceUsage (1.0 , 100.0 );
53
+ var memory = new ResourceUsage (800.0 , 200.0 );
54
+ var directMemory = new ResourceUsage (2.0 , 100.0 );
55
+ var bandwidthIn = new ResourceUsage (3.0 , 100.0 );
56
+ var bandwidthOut = new ResourceUsage (4.0 , 100.0 );
57
+ usage1 .setCpu (cpu );
58
+ usage1 .setMemory (memory );
59
+ usage1 .setDirectMemory (directMemory );
60
+ usage1 .setBandwidthIn (bandwidthIn );
61
+ usage1 .setBandwidthOut (bandwidthOut );
62
+ data .update (usage1 , 1 ,2 ,3 ,4 , conf );
63
+
64
+ assertEquals (data .getCpu (), cpu );
65
+ assertEquals (data .getMemory (), memory );
66
+ assertEquals (data .getDirectMemory (), directMemory );
67
+ assertEquals (data .getBandwidthIn (), bandwidthIn );
68
+ assertEquals (data .getBandwidthOut (), bandwidthOut );
69
+ assertEquals (data .getMsgThroughputIn (), 1.0 );
70
+ assertEquals (data .getMsgThroughputOut (), 2.0 );
71
+ assertEquals (data .getMsgRateIn (), 3.0 );
72
+ assertEquals (data .getMsgRateOut (), 4.0 );
73
+ assertEquals (data .getMaxResourceUsage (), 0.04 ); // skips memory usage
74
+ assertEquals (data .getWeightedMaxEMA (), 2 );
75
+ assertThat (data .getUpdatedAt (), greaterThanOrEqualTo (now ));
76
+
77
+ now = System .currentTimeMillis ();
78
+ SystemResourceUsage usage2 = new SystemResourceUsage ();
79
+ cpu = new ResourceUsage (300.0 , 100.0 );
80
+ memory = new ResourceUsage (200.0 , 200.0 );
81
+ directMemory = new ResourceUsage (2.0 , 100.0 );
82
+ bandwidthIn = new ResourceUsage (3.0 , 100.0 );
83
+ bandwidthOut = new ResourceUsage (4.0 , 100.0 );
84
+ usage2 .setCpu (cpu );
85
+ usage2 .setMemory (memory );
86
+ usage2 .setDirectMemory (directMemory );
87
+ usage2 .setBandwidthIn (bandwidthIn );
88
+ usage2 .setBandwidthOut (bandwidthOut );
89
+ data .update (usage2 , 5 ,6 ,7 ,8 , conf );
90
+
91
+ assertEquals (data .getCpu (), cpu );
92
+ assertEquals (data .getMemory (), memory );
93
+ assertEquals (data .getDirectMemory (), directMemory );
94
+ assertEquals (data .getBandwidthIn (), bandwidthIn );
95
+ assertEquals (data .getBandwidthOut (), bandwidthOut );
96
+ assertEquals (data .getMsgThroughputIn (), 5.0 );
97
+ assertEquals (data .getMsgThroughputOut (), 6.0 );
98
+ assertEquals (data .getMsgRateIn (), 7.0 );
99
+ assertEquals (data .getMsgRateOut (), 8.0 );
100
+ assertEquals (data .getMaxResourceUsage (), 3.0 );
101
+ assertEquals (data .getWeightedMaxEMA (), 1.875 );
102
+ assertThat (data .getUpdatedAt (), greaterThanOrEqualTo (now ));
53
103
}
54
104
55
105
@ Test
56
- public void testWeightedMaxEMA () {
57
- BrokerLoadData data = new BrokerLoadData ();
58
- assertEquals (
59
- data .getWeightedMaxEMA (), null );
106
+ public void testUpdateByBrokerLoadData () {
60
107
ServiceConfiguration conf = new ServiceConfiguration ();
61
108
conf .setLoadBalancerCPUResourceWeight (0.5 );
62
109
conf .setLoadBalancerMemoryResourceWeight (0.5 );
@@ -65,25 +112,25 @@ public void testWeightedMaxEMA() {
65
112
conf .setLoadBalancerBandwithOutResourceWeight (0.5 );
66
113
conf .setLoadBalancerHistoryResourcePercentage (0.75 );
67
114
68
- BrokerLoadData data2 = new BrokerLoadData ();
69
- data2 .setCpu (new ResourceUsage (1.0 , 100.0 ));
70
- data2 .setMemory (new ResourceUsage (800.0 , 200.0 ));
71
- data2 .setDirectMemory (new ResourceUsage (2.0 , 100.0 ));
72
- data2 .setBandwidthIn (new ResourceUsage (3.0 , 100.0 ));
73
- data2 .setBandwidthOut (new ResourceUsage (4.0 , 100.0 ));
74
- data .update (data2 , conf );
75
- assertEquals (
76
- data .getWeightedMaxEMA (), 2 );
77
-
78
- BrokerLoadData data3 = new BrokerLoadData ();
79
- data3 .setCpu (new ResourceUsage (300.0 , 100.0 ));
80
- data3 .setMemory (new ResourceUsage (200.0 , 200.0 ));
81
- data3 .setDirectMemory (new ResourceUsage (2.0 , 100.0 ));
82
- data3 .setBandwidthIn (new ResourceUsage (3.0 , 100.0 ));
83
- data3 .setBandwidthOut (new ResourceUsage (4.0 , 100.0 ));
84
- data .update (data3 , conf );
85
- assertEquals (
86
- data .getWeightedMaxEMA (), 1.875 );
115
+ BrokerLoadData data = new BrokerLoadData ();
116
+ BrokerLoadData other = new BrokerLoadData ();
117
+
118
+ SystemResourceUsage usage1 = new SystemResourceUsage ();
119
+ var cpu = new ResourceUsage (1.0 , 100.0 );
120
+ var memory = new ResourceUsage (800.0 , 200.0 );
121
+ var directMemory = new ResourceUsage (2.0 , 100.0 );
122
+ var bandwidthIn = new ResourceUsage (3.0 , 100.0 );
123
+ var bandwidthOut = new ResourceUsage (4.0 , 100.0 );
124
+ usage1 .setCpu (cpu );
125
+ usage1 .setMemory (memory );
126
+ usage1 .setDirectMemory (directMemory );
127
+ usage1 .setBandwidthIn (bandwidthIn );
128
+ usage1 .setBandwidthOut (bandwidthOut );
129
+ other .update (usage1 , 1 ,2 ,3 ,4 , conf );
130
+ data .update (other );
87
131
132
+ assertEquals (data , other );
88
133
}
134
+
135
+
89
136
}
0 commit comments