From 0dae95cf15edf4f99f8fa94fb3ab20bb43fb77f7 Mon Sep 17 00:00:00 2001 From: Braslavskyi Andrii Date: Tue, 15 Sep 2020 14:33:10 +0300 Subject: [PATCH] Add `WARNING` prefix to fpd type normalization warnings (#912) --- .../prebid/server/auction/OrtbTypesResolver.java | 10 +++++++--- .../server/auction/OrtbTypesResolverTest.java | 14 ++++++++------ 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/prebid/server/auction/OrtbTypesResolver.java b/src/main/java/org/prebid/server/auction/OrtbTypesResolver.java index 6c5ca2bee8c..ba9f54f2177 100644 --- a/src/main/java/org/prebid/server/auction/OrtbTypesResolver.java +++ b/src/main/java/org/prebid/server/auction/OrtbTypesResolver.java @@ -173,7 +173,7 @@ private JsonNode normalizeNode(JsonNode containerNode, String nodeName, () -> toCommaSeparatedTextNode(containerObjectNode, fieldName, nodeName, nodePrefix, warnings))); } else { - warnings.add(String.format("FDP warning: %s%s field ignored. Expected type is object, but was `%s`.", + warnings.add(String.format("%s%s field ignored. Expected type is object, but was `%s`.", nodePrefix, nodeName, containerNode.getNodeType().name())); return null; } @@ -252,14 +252,18 @@ private static boolean isTextualArray(ArrayNode arrayNode) { private void processWarnings(List resolverWarning, List warnings, String containerValue, String referer, String containerName) { if (CollectionUtils.isNotEmpty(resolverWarning)) { - warnings.addAll(resolverWarning); + warnings.addAll(updateWithWarningPrefix(resolverWarning)); // log only 1% of cases if (System.currentTimeMillis() % 100 == 0) { - logger.info(String.format("%s. \n Referer = %s and %s = %s", + logger.info(String.format("WARNINGS: %s. \n Referer = %s and %s = %s", String.join("\n", resolverWarning), StringUtils.isNotBlank(referer) ? referer : UNKNOWN_REFERER, containerName, containerValue)); } } } + + private List updateWithWarningPrefix(List resolverWarning) { + return resolverWarning.stream().map(warning -> "WARNING: " + warning).collect(Collectors.toList()); + } } diff --git a/src/test/java/org/prebid/server/auction/OrtbTypesResolverTest.java b/src/test/java/org/prebid/server/auction/OrtbTypesResolverTest.java index b383fe4c2c8..fe3ecb97db9 100644 --- a/src/test/java/org/prebid/server/auction/OrtbTypesResolverTest.java +++ b/src/test/java/org/prebid/server/auction/OrtbTypesResolverTest.java @@ -40,8 +40,9 @@ public void normalizeTargetingShouldConvertArrayToFirstElementFieldForUserAndWri // then assertThat(inputParam).isEqualTo(mapper.createObjectNode().set("user", mapper.createObjectNode().put("gender", "male"))); - assertThat(errors).containsOnly("Incorrect type for first party data field targeting.user.gender, expected is" - + " string, but was an array of strings. Converted to string by taking first element of array."); + assertThat(errors).containsOnly("WARNING: Incorrect type for first party data field targeting.user.gender," + + " expected is string, but was an array of strings. Converted to string by taking first element " + + "of array."); } @Test @@ -57,8 +58,9 @@ public void normalizeTargetingShouldConvertArrayToCommaSeparatedStringFieldForUs // then assertThat(inputParam).isEqualTo(mapper.createObjectNode().set("user", mapper.createObjectNode().put("keywords", "keyword1,keyword2"))); - assertThat(errors).containsOnly("Incorrect type for first party data field targeting.user.keywords, expected is" - + " string, but was an array of strings. Converted to string by separating values with comma."); + assertThat(errors).containsOnly("WARNING: Incorrect type for first party data field targeting.user.keywords," + + " expected is string, but was an array of strings. Converted to string by separating values with" + + " comma."); } @Test @@ -85,7 +87,7 @@ public void normalizeTargetingToCommaSeparatedTextNodeShouldWriteMessageAndRemov // then assertThat(inputParam).isEqualTo(mapper.createObjectNode().set("user", mapper.createObjectNode())); - assertThat(errors).containsOnly("Incorrect type for first party data field targeting.user.keywords," + assertThat(errors).containsOnly("WARNING: Incorrect type for first party data field targeting.user.keywords," + " expected strings, but was `ARRAY of different types`. Failed to convert to correct type."); } @@ -101,7 +103,7 @@ public void normalizeTargetingToFirstElementTextNodeShouldWriteMessageAndRemoveF // then assertThat(inputParam).isEqualTo(mapper.createObjectNode().set("user", mapper.createObjectNode())); - assertThat(errors).containsOnly("Incorrect type for first party data field targeting.user.gender," + assertThat(errors).containsOnly("WARNING: Incorrect type for first party data field targeting.user.gender," + " expected strings, but was `NUMBER`. Failed to convert to correct type."); }