31
31
public class KafkaAuditCountVerifierTest {
32
32
33
33
public static final String SOURCE_TIER = "gobblin" ;
34
- public static final String REFERENCE_TIERS = "producer" ;
34
+ public static final String REFERENCE_TIER = "producer" ;
35
+ public static final String REFERENCE_TIER_1 = "producer_reference" ;
36
+ public static final String REFERENCE_TIERS = REFERENCE_TIER + "," + REFERENCE_TIER_1 ;
35
37
36
38
public static final String TOTAL_COUNT_REF_TIER_0 = "producer_0" ;
37
39
public static final String TOTAL_COUNT_REF_TIER_1 = "producer_1" ;
@@ -50,7 +52,8 @@ public void testFetch() throws IOException {
50
52
// All complete
51
53
client .setTierCounts (ImmutableMap .of (
52
54
SOURCE_TIER , 1000L ,
53
- REFERENCE_TIERS , 1000L
55
+ REFERENCE_TIER , 1000L ,
56
+ REFERENCE_TIER_1 , 1000L
54
57
));
55
58
// Default threshold
56
59
Assert .assertTrue (verifier .calculateCompleteness (topic , 0L , 0L )
@@ -59,15 +62,17 @@ public void testFetch() throws IOException {
59
62
// 99.999 % complete
60
63
client .setTierCounts (ImmutableMap .of (
61
64
SOURCE_TIER , 999L ,
62
- REFERENCE_TIERS , 1000L
65
+ REFERENCE_TIER , 1000L ,
66
+ REFERENCE_TIER_1 , 1000L
63
67
));
64
68
Assert .assertTrue (verifier .calculateCompleteness (topic , 0L , 0L )
65
69
.get (KafkaAuditCountVerifier .CompletenessType .ClassicCompleteness ));
66
70
67
71
// <= 99% complete
68
72
client .setTierCounts (ImmutableMap .of (
69
73
SOURCE_TIER , 990L ,
70
- REFERENCE_TIERS , 1000L
74
+ REFERENCE_TIER , 1000L ,
75
+ REFERENCE_TIER_1 , 1000L
71
76
));
72
77
Assert .assertFalse (verifier .calculateCompleteness (topic , 0L , 0L )
73
78
.get (KafkaAuditCountVerifier .CompletenessType .ClassicCompleteness ));
@@ -86,7 +91,8 @@ public void testTotalCountCompleteness() throws IOException {
86
91
// All complete
87
92
client .setTierCounts (ImmutableMap .of (
88
93
SOURCE_TIER , 1000L ,
89
- REFERENCE_TIERS , 1000L ,
94
+ REFERENCE_TIER , 1000L ,
95
+ REFERENCE_TIER_1 , 1000L ,
90
96
TOTAL_COUNT_REF_TIER_0 , 600L ,
91
97
TOTAL_COUNT_REF_TIER_1 , 400L
92
98
));
@@ -97,7 +103,8 @@ public void testTotalCountCompleteness() throws IOException {
97
103
// 99.999 % complete
98
104
client .setTierCounts (ImmutableMap .of (
99
105
SOURCE_TIER , 999L ,
100
- REFERENCE_TIERS , 1000L ,
106
+ REFERENCE_TIER , 1000L ,
107
+ REFERENCE_TIER_1 , 1000L ,
101
108
TOTAL_COUNT_REF_TIER_0 , 600L ,
102
109
TOTAL_COUNT_REF_TIER_1 , 400L
103
110
));
@@ -107,7 +114,8 @@ public void testTotalCountCompleteness() throws IOException {
107
114
// <= 99% complete
108
115
client .setTierCounts (ImmutableMap .of (
109
116
SOURCE_TIER , 990L ,
110
- REFERENCE_TIERS , 1000L ,
117
+ REFERENCE_TIER , 1000L ,
118
+ REFERENCE_TIER_1 , 1000L ,
111
119
TOTAL_COUNT_REF_TIER_0 , 600L ,
112
120
TOTAL_COUNT_REF_TIER_1 , 400L
113
121
));
@@ -140,7 +148,8 @@ public void testEmptyAuditCount() throws IOException {
140
148
client .setTierCounts (
141
149
ImmutableMap .of (
142
150
SOURCE_TIER , 990L ,
143
- REFERENCE_TIERS , 0L ,
151
+ REFERENCE_TIER , 0L ,
152
+ REFERENCE_TIER_1 , 0L ,
144
153
TOTAL_COUNT_REF_TIER_0 , 0L ,
145
154
TOTAL_COUNT_REF_TIER_1 , 0L
146
155
));
@@ -153,7 +162,8 @@ public void testEmptyAuditCount() throws IOException {
153
162
client .setTierCounts (
154
163
ImmutableMap .of (
155
164
SOURCE_TIER , 0L ,
156
- REFERENCE_TIERS , 0L ,
165
+ REFERENCE_TIER , 0L ,
166
+ REFERENCE_TIER_1 , 0L ,
157
167
TOTAL_COUNT_REF_TIER_0 , 0L ,
158
168
TOTAL_COUNT_REF_TIER_1 , 0L
159
169
));
@@ -175,7 +185,8 @@ public void testOneCountFailed() throws IOException {
175
185
// Missing total count tier which will throw exception
176
186
client .setTierCounts (ImmutableMap .of (
177
187
SOURCE_TIER , 999L ,
178
- REFERENCE_TIERS , 1000L
188
+ REFERENCE_TIER , 1000L ,
189
+ REFERENCE_TIER_1 , 1000L
179
190
));
180
191
181
192
// Classic completeness is still returned, but total is missing
@@ -184,4 +195,42 @@ public void testOneCountFailed() throws IOException {
184
195
Assert .assertFalse (verifier .calculateCompleteness (topic , 0L , 0L )
185
196
.containsKey (KafkaAuditCountVerifier .CompletenessType .TotalCountCompleteness ));
186
197
}
198
+
199
+ public void testDifferentValueInReferenceTier () throws IOException {
200
+ final String topic = "testTopic" ;
201
+ State props = new State ();
202
+ props .setProp (KafkaAuditCountVerifier .SOURCE_TIER , SOURCE_TIER );
203
+ props .setProp (KafkaAuditCountVerifier .REFERENCE_TIERS , REFERENCE_TIERS );
204
+ props .setProp (KafkaAuditCountVerifier .TOTAL_COUNT_REFERENCE_TIERS , TOTAL_COUNT_REFERENCE_TIERS );
205
+ props .setProp (KafkaAuditCountVerifier .THRESHOLD , ".99" );
206
+ props .setProp (KafkaAuditCountVerifier .COMPLETE_ON_NO_COUNTS , true );
207
+ TestAuditClient client = new TestAuditClient (props );
208
+ KafkaAuditCountVerifier verifier = new KafkaAuditCountVerifier (props , client );
209
+
210
+ // Different value in reference tier
211
+ client .setTierCounts (ImmutableMap .of (
212
+ SOURCE_TIER , 999L ,
213
+ REFERENCE_TIER , 1000L ,
214
+ REFERENCE_TIER_1 , 2000L
215
+ ));
216
+
217
+ // Classic completeness is fail as 999/2000 < 99.9%
218
+ Assert .assertFalse (verifier .calculateCompleteness (topic , 0L , 0L )
219
+ .get (KafkaAuditCountVerifier .CompletenessType .ClassicCompleteness ));
220
+
221
+ // Different value in reference tier and one tier has 0 in count
222
+ client .setTierCounts (ImmutableMap .of (
223
+ SOURCE_TIER , 999L ,
224
+ REFERENCE_TIER , 0L ,
225
+ REFERENCE_TIER_1 , 2000L
226
+ ));
227
+
228
+ // Classic completeness is fail as 999/2000 < 99.9%
229
+ Assert .assertFalse (verifier .calculateCompleteness (topic , 0L , 0L )
230
+ .get (KafkaAuditCountVerifier .CompletenessType .ClassicCompleteness ));
231
+
232
+
233
+
234
+ }
235
+
187
236
}
0 commit comments