From bf373c5065fc5b561b385365cb01a9eb27621e9e Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Sat, 2 Oct 2021 12:04:13 +0200 Subject: [PATCH 1/2] Skip all flaky StopWatch time assertions --- .../springframework/util/StopWatchTests.java | 48 +++++++++---------- 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/spring-core/src/test/java/org/springframework/util/StopWatchTests.java b/spring-core/src/test/java/org/springframework/util/StopWatchTests.java index 83eb5adbec6..a3458afb6a1 100644 --- a/spring-core/src/test/java/org/springframework/util/StopWatchTests.java +++ b/spring-core/src/test/java/org/springframework/util/StopWatchTests.java @@ -20,7 +20,6 @@ import org.junit.jupiter.api.Test; import org.springframework.util.StopWatch.TaskInfo; -import static java.util.concurrent.TimeUnit.MILLISECONDS; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatExceptionOfType; import static org.assertj.core.api.Assertions.assertThatIllegalStateException; @@ -78,18 +77,21 @@ class StopWatchTests { assertThat(stopWatch.currentTaskName()).isEqualTo(name1); stopWatch.stop(); assertThat(stopWatch.isRunning()).isFalse(); + + /* Flaky StopWatch time assertions... assertThat(stopWatch.getLastTaskTimeNanos()) - .as("last task time in nanoseconds for task #1") - .isGreaterThanOrEqualTo(millisToNanos(duration1 - fudgeFactor)) - .isLessThanOrEqualTo(millisToNanos(duration1 + fudgeFactor)); + .as("last task time in nanoseconds for task #1") + .isGreaterThanOrEqualTo(TimeUnit.MILLISECONDS.toNanos(duration1 - fudgeFactor)) + .isLessThanOrEqualTo(TimeUnit.MILLISECONDS.toNanos(duration1 + fudgeFactor)); assertThat(stopWatch.getTotalTimeMillis()) - .as("total time in milliseconds for task #1") - .isGreaterThanOrEqualTo(duration1 - fudgeFactor) - .isLessThanOrEqualTo(duration1 + fudgeFactor); + .as("total time in milliseconds for task #1") + .isGreaterThanOrEqualTo(duration1 - fudgeFactor) + .isLessThanOrEqualTo(duration1 + fudgeFactor); assertThat(stopWatch.getTotalTimeSeconds()) - .as("total time in seconds for task #1") - .isGreaterThanOrEqualTo((duration1 - fudgeFactor) / 1000.0) - .isLessThanOrEqualTo((duration1 + fudgeFactor) / 1000.0); + .as("total time in seconds for task #1") + .isGreaterThanOrEqualTo((duration1 - fudgeFactor) / 1000.0) + .isLessThanOrEqualTo((duration1 + fudgeFactor) / 1000.0); + */ stopWatch.start(name2); Thread.sleep(duration2); @@ -100,17 +102,17 @@ class StopWatchTests { /* Flaky StopWatch time assertions... assertThat(stopWatch.getLastTaskTimeNanos()) - .as("last task time in nanoseconds for task #2") - .isGreaterThanOrEqualTo(millisToNanos(duration2)) - .isLessThanOrEqualTo(millisToNanos(duration2 + fudgeFactor)); + .as("last task time in nanoseconds for task #2") + .isGreaterThanOrEqualTo(TimeUnit.MILLISECONDS.toNanos(duration2)) + .isLessThanOrEqualTo(TimeUnit.MILLISECONDS.toNanos(duration2 + fudgeFactor)); assertThat(stopWatch.getTotalTimeMillis()) - .as("total time in milliseconds for tasks #1 and #2") - .isGreaterThanOrEqualTo(duration1 + duration2 - fudgeFactor) - .isLessThanOrEqualTo(duration1 + duration2 + fudgeFactor); + .as("total time in milliseconds for tasks #1 and #2") + .isGreaterThanOrEqualTo(duration1 + duration2 - fudgeFactor) + .isLessThanOrEqualTo(duration1 + duration2 + fudgeFactor); assertThat(stopWatch.getTotalTimeSeconds()) - .as("total time in seconds for task #2") - .isGreaterThanOrEqualTo((duration1 + duration2 - fudgeFactor) / 1000.0) - .isLessThanOrEqualTo((duration1 + duration2 + fudgeFactor) / 1000.0); + .as("total time in seconds for task #2") + .isGreaterThanOrEqualTo((duration1 + duration2 - fudgeFactor) / 1000.0) + .isLessThanOrEqualTo((duration1 + duration2 + fudgeFactor) / 1000.0); */ assertThat(stopWatch.getTaskCount()).isEqualTo(2); @@ -138,12 +140,8 @@ class StopWatchTests { assertThat(stopWatch.prettyPrint()).contains("No task info kept"); assertThat(stopWatch.toString()).doesNotContain(name1, name2); assertThatExceptionOfType(UnsupportedOperationException.class) - .isThrownBy(stopWatch::getTaskInfo) - .withMessage("Task info is not being kept!"); - } - - private static long millisToNanos(long duration) { - return MILLISECONDS.toNanos(duration); + .isThrownBy(stopWatch::getTaskInfo) + .withMessage("Task info is not being kept!"); } } From 49427b0c3c7e0d1329b0fe85514d9807ee2f6001 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Sat, 2 Oct 2021 12:08:09 +0200 Subject: [PATCH 2/2] Upgrade to Apache Johnzon 1.2.14, Vavr 0.10.4, WebJars Locator 0.48, HtmlUnit 2.53 --- build.gradle | 12 ++++++------ .../converter/JsonbMessageConverterTests.java | 6 +++--- .../json/JsonbHttpMessageConverterTests.java | 6 +++--- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/build.gradle b/build.gradle index c6545c8abf2..ec48137948d 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ plugins { id 'org.asciidoctor.jvm.convert' version '3.3.2' id 'org.asciidoctor.jvm.pdf' version '3.3.2' id 'de.undercouch.download' version '4.1.2' - id "io.freefair.aspectj" version '6.1.0' apply false + id "io.freefair.aspectj" version '6.2.0' apply false id "com.github.ben-manes.versions" version '0.39.0' id "com.github.johnrengelman.shadow" version '7.0.0' apply false id "me.champeau.jmh" version "0.6.6" apply false @@ -83,7 +83,7 @@ configure(allprojects) { project -> exclude group: "xpp3", name: "xpp3_min" exclude group: "xmlpull", name: "xmlpull" } - dependency "org.apache.johnzon:johnzon-jsonb:1.2.10" + dependency "org.apache.johnzon:johnzon-jsonb:1.2.14" dependency("org.codehaus.jettison:jettison:1.3.8") { exclude group: "stax", name: "stax-api" } @@ -99,7 +99,7 @@ configure(allprojects) { project -> dependency "com.github.librepdf:openpdf:1.3.26" dependency "com.rometools:rome:1.16.0" dependency "commons-io:commons-io:2.5" - dependency "io.vavr:vavr:0.10.3" + dependency "io.vavr:vavr:0.10.4" dependency "net.sf.jopt-simple:jopt-simple:5.0.4" dependencySet(group: 'org.apache.activemq', version: '5.16.2') { entry 'activemq-broker' @@ -125,7 +125,7 @@ configure(allprojects) { project -> dependency "org.ehcache:ehcache:3.4.0" dependency "org.hibernate:hibernate-core:5.4.32.Final" dependency "org.hibernate:hibernate-validator:6.2.0.Final" - dependency "org.webjars:webjars-locator-core:0.47" + dependency "org.webjars:webjars-locator-core:0.48" dependency "org.webjars:underscorejs:1.8.3" dependencySet(group: 'org.apache.tomcat', version: '9.0.53') { @@ -206,10 +206,10 @@ configure(allprojects) { project -> } dependency "io.mockk:mockk:1.12.0" - dependency("net.sourceforge.htmlunit:htmlunit:2.52.0") { + dependency("net.sourceforge.htmlunit:htmlunit:2.53.0") { exclude group: "commons-logging", name: "commons-logging" } - dependency("org.seleniumhq.selenium:htmlunit-driver:2.52.0") { + dependency("org.seleniumhq.selenium:htmlunit-driver:2.53.0") { exclude group: "commons-logging", name: "commons-logging" } dependency("org.seleniumhq.selenium:selenium-java:3.141.59") { diff --git a/spring-messaging/src/test/java/org/springframework/messaging/converter/JsonbMessageConverterTests.java b/spring-messaging/src/test/java/org/springframework/messaging/converter/JsonbMessageConverterTests.java index 63380ea4ebc..7b524de480e 100644 --- a/spring-messaging/src/test/java/org/springframework/messaging/converter/JsonbMessageConverterTests.java +++ b/spring-messaging/src/test/java/org/springframework/messaging/converter/JsonbMessageConverterTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2020 the original author or authors. + * Copyright 2002-2021 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -165,7 +165,7 @@ public class JsonbMessageConverterTests { String payload = "H\u00e9llo W\u00f6rld"; Message message = converter.toMessage(payload, headers); - assertThat(new String((byte[]) message.getPayload(), StandardCharsets.UTF_16BE)).isEqualTo(payload); + assertThat(new String((byte[]) message.getPayload(), StandardCharsets.UTF_16BE)).isEqualTo("\"" + payload + "\""); assertThat(message.getHeaders().get(MessageHeaders.CONTENT_TYPE)).isEqualTo(contentType); } @@ -181,7 +181,7 @@ public class JsonbMessageConverterTests { String payload = "H\u00e9llo W\u00f6rld"; Message message = converter.toMessage(payload, headers); - assertThat(message.getPayload()).isEqualTo(payload); + assertThat(message.getPayload()).isEqualTo("\"" + payload + "\""); assertThat(message.getHeaders().get(MessageHeaders.CONTENT_TYPE)).isEqualTo(contentType); } diff --git a/spring-web/src/test/java/org/springframework/http/converter/json/JsonbHttpMessageConverterTests.java b/spring-web/src/test/java/org/springframework/http/converter/json/JsonbHttpMessageConverterTests.java index 7649e8415bd..44e14ac5761 100644 --- a/spring-web/src/test/java/org/springframework/http/converter/json/JsonbHttpMessageConverterTests.java +++ b/spring-web/src/test/java/org/springframework/http/converter/json/JsonbHttpMessageConverterTests.java @@ -162,7 +162,7 @@ public class JsonbHttpMessageConverterTests { MockHttpOutputMessage outputMessage = new MockHttpOutputMessage(); String body = "H\u00e9llo W\u00f6rld"; this.converter.write(body, contentType, outputMessage); - assertThat(outputMessage.getBodyAsString(StandardCharsets.UTF_16BE)).as("Invalid result").isEqualTo(body); + assertThat(outputMessage.getBodyAsString(StandardCharsets.UTF_16BE)).as("Invalid result").isEqualTo("\"" + body + "\""); assertThat(outputMessage.getHeaders().getContentType()).as("Invalid content-type").isEqualTo(contentType); } @@ -260,7 +260,7 @@ public class JsonbHttpMessageConverterTests { MockHttpOutputMessage outputMessage = new MockHttpOutputMessage(); this.converter.setPrefixJson(true); this.converter.writeInternal("foo", null, outputMessage); - assertThat(outputMessage.getBodyAsString(StandardCharsets.UTF_8)).isEqualTo(")]}', foo"); + assertThat(outputMessage.getBodyAsString(StandardCharsets.UTF_8)).isEqualTo(")]}', \"foo\""); } @Test @@ -268,7 +268,7 @@ public class JsonbHttpMessageConverterTests { MockHttpOutputMessage outputMessage = new MockHttpOutputMessage(); this.converter.setJsonPrefix(")))"); this.converter.writeInternal("foo", null, outputMessage); - assertThat(outputMessage.getBodyAsString(StandardCharsets.UTF_8)).isEqualTo(")))foo"); + assertThat(outputMessage.getBodyAsString(StandardCharsets.UTF_8)).isEqualTo(")))\"foo\""); }