Skip to content

Commit 4adfb12

Browse files
committed
Batch email test for identity map
1 parent f0206b2 commit 4adfb12

File tree

2 files changed

+52
-4
lines changed

2 files changed

+52
-4
lines changed

src/test/java/suite/operator/TestData.java

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,15 @@
33
import app.AppsMap;
44
import app.component.App;
55
import app.component.Operator;
6+
import com.fasterxml.jackson.core.JsonProcessingException;
7+
import com.fasterxml.jackson.databind.ObjectMapper;
8+
import com.fasterxml.jackson.databind.node.ObjectNode;
69
import com.uid2.client.DecryptionStatus;
710
import org.junit.jupiter.params.provider.Arguments;
811

9-
import java.util.HashSet;
10-
import java.util.List;
11-
import java.util.Optional;
12-
import java.util.Set;
12+
import java.util.*;
1313
import java.util.stream.Collectors;
14+
import java.util.stream.IntStream;
1415
import java.util.stream.Stream;
1516

1617
import static org.junit.jupiter.api.Named.named;
@@ -326,6 +327,27 @@ public static Set<Arguments> identityMapBatchEmailArgs() {
326327
return args;
327328
}
328329

330+
public static Set<Arguments> identityMapBigBatchArgs() throws JsonProcessingException {
331+
Set<Operator> operators = AppsMap.getApps(Operator.class);
332+
333+
List<String> emails = IntStream.range(0, 10_000)
334+
.mapToObj(i -> "email_" + i + "_" + UUID.randomUUID() + "@example.com")
335+
.collect(Collectors.toList());
336+
337+
ObjectMapper mapper = new ObjectMapper();
338+
ObjectNode root = mapper.createObjectNode();
339+
root.putPOJO("email", emails);
340+
root.put("policy", 1);
341+
342+
String emailsPayload = mapper.writeValueAsString(root);
343+
344+
Set<Arguments> args = new HashSet<>();
345+
for (Operator operator : operators) {
346+
args.add(Arguments.of("10k emails", operator, operator.getName(), emailsPayload, emails));
347+
}
348+
return args;
349+
}
350+
329351
public static Set<Arguments> identityMapBatchEmailArgsBadPolicy() {
330352
Set<Operator> operators = getPublicOperators();
331353
Set<List<String>> inputs = Set.of(

src/test/java/suite/operator/V2ApiOperatorTest.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,13 @@
77
import app.component.Operator;
88
import com.fasterxml.jackson.databind.JsonNode;
99
import com.uid2.client.*;
10+
import org.junit.jupiter.api.Test;
1011
import org.junit.jupiter.params.ParameterizedTest;
1112
import org.junit.jupiter.params.provider.MethodSource;
1213

14+
import java.time.Duration;
15+
import java.util.List;
16+
1317
import static org.assertj.core.api.Assertions.assertThat;
1418
import static org.junit.jupiter.api.Assertions.*;
1519

@@ -105,6 +109,28 @@ public void testV2IdentityMap(String label, Operator operator, String operatorNa
105109
assertThat(response.at("/status").asText()).isEqualTo("success");
106110
}
107111

112+
@ParameterizedTest(name = "/v2/identity/map - {0} - {2}")
113+
@MethodSource({
114+
"suite.operator.TestData#identityMapBigBatchArgs"
115+
})
116+
public void testV2IdentityMapLargeBatch(String label, Operator operator, String operatorName, String payload, List<String> diis) {
117+
assertTimeoutPreemptively(Duration.ofSeconds(5), () -> { // Validate we didn't make mapping too slow.
118+
JsonNode response = operator.v2IdentityMap(payload);
119+
120+
assertThat(response.at("/status").asText()).isEqualTo("success");
121+
122+
var mapped = response.at("/body/mapped");
123+
assertThat(mapped.size()).isEqualTo(10_000);
124+
125+
for (int i = 0; i < 10_000; i++) {
126+
assertThat(mapped.get(i).get("identifier").asText()).isEqualTo(diis.get(i));
127+
assertThat(mapped.get(i).get("advertising_id").asText()).isNotNull().isNotEmpty();
128+
assertThat(mapped.get(i).get("bucket_id").asText()).isNotNull().isNotEmpty();
129+
}
130+
});
131+
}
132+
133+
108134
@ParameterizedTest(name = "/v2/identity/map - VALIDATE EMAIL - {0} - {2}")
109135
@MethodSource({
110136
"suite.operator.TestData#tokenValidateEmailArgs",

0 commit comments

Comments
 (0)