From fdcea884a43851635e6a352bee1037f3023640a4 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Wed, 2 Jul 2025 16:34:14 +0200 Subject: [PATCH 01/30] bug6135: improve WebDriver session handling; use only one WebDriver instance with multiple windows; handle quit/close and be more resilient against driver session already terminated --- .../selenium/core/WebDriverWindow.java | 7 +- .../sailing/selenium/core/WindowManager.java | 70 +++++- .../selenium/test/AbstractSeleniumTest.java | 3 + .../TestRefreshableSelectionModel.java | 4 +- .../TestLeaderboardConfiguration.java | 6 +- .../TestSwitchingOffStartOfRaceInference.java | 2 +- .../SailingServer (No Proxy OSX).launch | 2 + .../SailingServer (No Proxy).launch | 2 + .../SailingServer (No Proxy, Axel).launch | 2 + ...ailingServer (No Proxy, Cached MTB).launch | 2 + .../SailingServer (No Proxy, Java11).launch | 2 + ...r (No Proxy, Java11, JFR Recording).launch | 2 + ...ingServer (No Proxy, Jetty on 8889).launch | 2 + ...o Proxy, Jetty on 8889, Cached MTB).launch | 2 + ...on 8889, auto-replicate SS and SSD).launch | 2 + ... Jetty on 8889, auto-replicate dev).launch | 2 + ...oxy, Jetty on 8889, auto-replicate).launch | 2 + ...ingServer (No Proxy, Jetty on 8890).launch | 2 + ...uto-replicate from replica at 8889).launch | 2 + ...ver (No Proxy, Remote Debug SAP VM).launch | 2 + ...erver (No Proxy, debranding active).launch | 2 + ...ilingServer (No Proxy, winddb Axel).launch | 2 + ...gServer (No Proxy, winddbTest Axel).launch | 2 + ...ailingServer (No Proxy, winddbTest).launch | 224 +----------------- 24 files changed, 110 insertions(+), 240 deletions(-) diff --git a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/core/WebDriverWindow.java b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/core/WebDriverWindow.java index 0994be1acbf..6633e94a4e2 100644 --- a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/core/WebDriverWindow.java +++ b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/core/WebDriverWindow.java @@ -32,23 +32,20 @@ public class WebDriverWindow { public void close() { WebDriver driver = switchToWindow(); driver.close(); - this.handle = null; } public WebDriver switchToWindow() { checkForClosed(); - TargetLocator locator = this.driver.switchTo(); - return locator.window(this.handle); } private void checkForClosed() { Set handles = this.driver.getWindowHandles(); - - if(!handles.contains(this.handle)) + if (!handles.contains(this.handle)) { throw new WebDriverException("Window closed or not initialized"); //$NON-NLS-1$ + } } public WebDriver getWebDriver() { diff --git a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/core/WindowManager.java b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/core/WindowManager.java index c4607808d70..4a797465f41 100644 --- a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/core/WindowManager.java +++ b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/core/WindowManager.java @@ -7,7 +7,12 @@ import java.util.function.Consumer; import java.util.function.Supplier; import org.openqa.selenium.Dimension; +import org.openqa.selenium.JavascriptExecutor; +import org.openqa.selenium.NoSuchSessionException; +import org.openqa.selenium.SessionNotCreatedException; import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebDriverException; +import org.openqa.selenium.support.ui.WebDriverWait; /** *

@@ -41,17 +46,17 @@ public class WindowManager { return this.driver; } + /** + * This is the old, currently unused code superseded by {@link #withExtraWindow(WebDriver, BiConsumer)}. + */ public void withExtraWindow(BiConsumer defaultAndExtraWindow) { // ensures that a default window exists getDefaultWebDriver(); - final WebDriver extraDriver = webDriverFactory.get(); final WebDriverWindow extraWindow = new ManagedWebDriverWindow(extraDriver, extraDriver.getWindowHandle()); - extraWindow.switchToWindow(); setWindowMaximized(extraDriver); defaultWindow.switchToWindow(); - defaultAndExtraWindow.accept(defaultWindow, extraWindow); try { // quit is explicitly not called in a finally block to ensure that both windows are still open @@ -62,6 +67,54 @@ public class WindowManager { // This call may fail depending on the WebDriver being used } } + + /** + * New version of {@link #withExtraWindow(BiConsumer)} that uses the WebDriver passed as parameter and uses + * a single {@link WebDriver} for both windows. + */ + public void withExtraWindow(WebDriver driver, BiConsumer defaultAndExtraWindow) { + String originalWindowHandle = driver.getWindowHandle(); + // Open a new window using JavaScript + ((JavascriptExecutor) driver).executeScript("window.open('about:blank','_blank');"); + // Wait until the new window appears + new WebDriverWait(driver, /* seconds */ 5).until(d -> d.getWindowHandles().size() > 1); + // Identify the new window handle + String extraWindowHandle = driver.getWindowHandles().stream() + .filter(handle -> !handle.equals(originalWindowHandle)) + .findFirst() + .orElseThrow(() -> new RuntimeException("New window did not open")); + final WebDriverWindow defaultWindow = new ManagedWebDriverWindow(driver, originalWindowHandle); + final WebDriverWindow extraWindow = new ManagedWebDriverWindow(driver, extraWindowHandle); + try { + extraWindow.switchToWindow(); + setWindowMaximized(driver); + // Switch back to default window before calling the test logic + defaultWindow.switchToWindow(); + // Run the test logic + defaultAndExtraWindow.accept(defaultWindow, extraWindow); + } finally { + // Close the extra window and switch back to the original + try { + extraWindow.switchToWindow(); + driver.close(); + } catch (Exception ignored) {} + // This call may fail depending on the WebDriver being used + try { + defaultWindow.switchToWindow(); + } catch (Exception ignored) { + // This call may fail depending on the WebDriver being used + } + } + } + + private boolean isDriverAlive(WebDriver driver) { + try { + driver.getWindowHandles(); + return true; + } catch (NoSuchSessionException | SessionNotCreatedException e) { + return false; + } + } private void setWindowMaximized(WebDriver driver) { try { @@ -94,11 +147,14 @@ public class WindowManager { @Override public void close() { allWindows.remove(this); - if (this == defaultWindow) { - defaultWindow = null; - driver = null; + final WebDriver myDriver = driver; + if (isDriverAlive(myDriver)) { + try { + super.close(); + } catch (WebDriverException e) { + // If the window is already closed, we ignore the exception + } } - super.close(); } } } diff --git a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/test/AbstractSeleniumTest.java b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/test/AbstractSeleniumTest.java index 22f97dc7a90..f33f84f2cb3 100644 --- a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/test/AbstractSeleniumTest.java +++ b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/test/AbstractSeleniumTest.java @@ -13,6 +13,8 @@ import org.json.JSONException; import org.json.JSONObject; import org.json.JSONTokener; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.api.TestInstance.Lifecycle; import org.openqa.selenium.By; import org.openqa.selenium.Cookie; import org.openqa.selenium.JavascriptExecutor; @@ -38,6 +40,7 @@ import com.sap.sse.common.impl.MillisecondsTimePoint; * D049941 */ @UseSeleniumExtensions +@TestInstance(Lifecycle.PER_METHOD) public abstract class AbstractSeleniumTest { private static final Logger logger = Logger.getLogger(AbstractSeleniumTest.class.getName()); diff --git a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/test/adminconsole/TestRefreshableSelectionModel.java b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/test/adminconsole/TestRefreshableSelectionModel.java index bb39f25966d..814472dafdf 100644 --- a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/test/adminconsole/TestRefreshableSelectionModel.java +++ b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/test/adminconsole/TestRefreshableSelectionModel.java @@ -71,7 +71,7 @@ public class TestRefreshableSelectionModel extends AbstractSeleniumTest { @SeleniumTestCase public void testMaintenanceOfSelectionAfterDataChanges() { - this.environment.getWindowManager().withExtraWindow((windowForSelection, windowForEdit) -> { + this.environment.getWindowManager().withExtraWindow(getWebDriver(), (windowForSelection, windowForEdit) -> { final WebDriver windowForEditDriver = windowForEdit.switchToWindow(); setUpAuthenticatedSession(windowForEditDriver); final TrackedRacesCompetitorsPanelPO competitorsPanel = goToCompetitorsPanel( @@ -190,7 +190,7 @@ public class TestRefreshableSelectionModel extends AbstractSeleniumTest { @SeleniumTestCase public void testRefreshOfDependingUIElements() { - this.environment.getWindowManager().withExtraWindow((windowForSelection, windowForEdit) -> { + this.environment.getWindowManager().withExtraWindow(getWebDriver(), (windowForSelection, windowForEdit) -> { setUpTestRefreshOfDependingUIElements(); AdminConsolePage adminConsole = AdminConsolePage.goToPage(getWebDriver(), getContextRoot()); SmartphoneTrackingEventManagementPanelPO smartphoneTrackingPanel = adminConsole.goToSmartphoneTrackingPanel(); diff --git a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/test/leaderboard/TestLeaderboardConfiguration.java b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/test/leaderboard/TestLeaderboardConfiguration.java index 3a0d0368739..fe4664ec3b6 100644 --- a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/test/leaderboard/TestLeaderboardConfiguration.java +++ b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/test/leaderboard/TestLeaderboardConfiguration.java @@ -72,7 +72,7 @@ public class TestLeaderboardConfiguration extends AbstractSeleniumTest { @SeleniumTestCase public void testDynamicRaceLinking() { - this.environment.getWindowManager().withExtraWindow((leaderboardWindow, adminConsoleWindow) -> { + this.environment.getWindowManager().withExtraWindow(getWebDriver(), (leaderboardWindow, adminConsoleWindow) -> { // Open the leaderboard and check for "empty" leaderboard LeaderboardPage leaderboard = LeaderboardPage.goToPage(getWebDriver(), getContextRoot(), LEADERBOARD, false); LeaderboardTablePO table = leaderboard.getLeaderboardTable(); @@ -110,7 +110,7 @@ public class TestLeaderboardConfiguration extends AbstractSeleniumTest { @SeleniumTestCase public void testDynamicRaceDeletion() { - this.environment.getWindowManager().withExtraWindow((adminConsoleWindow, leaderboardWindow) -> { + this.environment.getWindowManager().withExtraWindow(getWebDriver(), (adminConsoleWindow, leaderboardWindow) -> { // Go to the administration console and link all 5 races AdminConsolePage adminConsole = AdminConsolePage.goToPage(getWebDriver(), getContextRoot()); LeaderboardConfigurationPanelPO leaderboardConfiguration = adminConsole.goToLeaderboardConfiguration(); @@ -145,7 +145,7 @@ public class TestLeaderboardConfiguration extends AbstractSeleniumTest { @Disabled("This test belongs to bug 1892 and currently fails. It is currently enabled on branch bug1892.") @SeleniumTestCase public void testDynamicRenamingOfRace() { - this.environment.getWindowManager().withExtraWindow((adminConsoleWindow, leaderboardWindow) -> { + this.environment.getWindowManager().withExtraWindow(getWebDriver(), (adminConsoleWindow, leaderboardWindow) -> { // Go to the administration console and link all 5 races AdminConsolePage adminConsole = AdminConsolePage.goToPage(getWebDriver(), getContextRoot()); LeaderboardConfigurationPanelPO leaderboardConfiguration = adminConsole.goToLeaderboardConfiguration(); diff --git a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/test/leaderboard/TestSwitchingOffStartOfRaceInference.java b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/test/leaderboard/TestSwitchingOffStartOfRaceInference.java index 67155456b67..d53ae1a4e02 100755 --- a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/test/leaderboard/TestSwitchingOffStartOfRaceInference.java +++ b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/test/leaderboard/TestSwitchingOffStartOfRaceInference.java @@ -60,7 +60,7 @@ public class TestSwitchingOffStartOfRaceInference extends AbstractSeleniumTest { @SeleniumTestCase public void testCorrectDisplayOfRaceColumnWithAndWithoutStartTimeInference() { - this.environment.getWindowManager().withExtraWindow((adminConsoleWindow, leaderboardWindow) -> { + this.environment.getWindowManager().withExtraWindow(getWebDriver(), (adminConsoleWindow, leaderboardWindow) -> { final WebDriver leaderboardWindowDriver = leaderboardWindow.switchToWindow(); setUpAuthenticatedSession(leaderboardWindowDriver); LeaderboardPage leaderboard = LeaderboardPage.goToPage(leaderboardWindowDriver, getContextRoot(), LEADERBOARD, /* race details */ false); diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy OSX).launch b/java/com.sap.sailing.server/SailingServer (No Proxy OSX).launch index df503df9f17..a131ceb93a5 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy OSX).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy OSX).launch @@ -179,6 +179,8 @@ + + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy).launch b/java/com.sap.sailing.server/SailingServer (No Proxy).launch index 25e2accb744..b96bc86787d 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy).launch @@ -185,6 +185,8 @@ + + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Axel).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Axel).launch index 3288a8b27a5..ac605fed7a8 100644 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Axel).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Axel).launch @@ -185,6 +185,8 @@ + + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Cached MTB).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Cached MTB).launch index 6982557c1cc..4ea6a2148ed 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Cached MTB).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Cached MTB).launch @@ -178,6 +178,8 @@ + + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Java11).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Java11).launch index 9dc8e631327..79016c5fb53 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Java11).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Java11).launch @@ -183,6 +183,8 @@ + + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Java11, JFR Recording).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Java11, JFR Recording).launch index ccd9b6a151a..e8d57c9e714 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Java11, JFR Recording).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Java11, JFR Recording).launch @@ -182,6 +182,8 @@ + + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889).launch index 00d1f4d22b2..7e468121fa3 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889).launch @@ -176,6 +176,8 @@ + + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, Cached MTB).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, Cached MTB).launch index 2dae424f9fc..083cc350ba3 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, Cached MTB).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, Cached MTB).launch @@ -172,6 +172,8 @@ + + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate SS and SSD).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate SS and SSD).launch index f054cf03302..afa1f61d0c0 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate SS and SSD).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate SS and SSD).launch @@ -178,6 +178,8 @@ + + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate dev).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate dev).launch index f23faaa0b2f..bdee223961f 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate dev).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate dev).launch @@ -176,6 +176,8 @@ + + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate).launch index 3d382896cac..4f9cb028842 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate).launch @@ -178,6 +178,8 @@ + + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8890).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8890).launch index e341effd4ae..37dbad85f68 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8890).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8890).launch @@ -176,6 +176,8 @@ + + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8890, auto-replicate from replica at 8889).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8890, auto-replicate from replica at 8889).launch index f23af2d1e39..7aad7f4ac03 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8890, auto-replicate from replica at 8889).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8890, auto-replicate from replica at 8889).launch @@ -176,6 +176,8 @@ + + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Remote Debug SAP VM).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Remote Debug SAP VM).launch index 7bb67c75aac..156e20cdce8 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Remote Debug SAP VM).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Remote Debug SAP VM).launch @@ -172,6 +172,8 @@ + + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, debranding active).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, debranding active).launch index 153a08feaf0..0077ede00f2 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, debranding active).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, debranding active).launch @@ -181,6 +181,8 @@ + + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, winddb Axel).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, winddb Axel).launch index 85fa46d74ac..4a4f2f1e0b4 100644 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, winddb Axel).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, winddb Axel).launch @@ -178,6 +178,8 @@ + + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, winddbTest Axel).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, winddbTest Axel).launch index 799005fbdc0..15301ebe5ee 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, winddbTest Axel).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, winddbTest Axel).launch @@ -178,6 +178,8 @@ + + diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, winddbTest).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, winddbTest).launch index 385a78b662d..c596172f9ac 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, winddbTest).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, winddbTest).launch @@ -185,6 +185,8 @@ + + @@ -254,228 +256,6 @@ -======= - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->>>>>>> github/bug6135 From 19221a2eab55ea35206b341f019751f6d588f316 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Wed, 2 Jul 2025 22:00:36 +0200 Subject: [PATCH 02/30] bug6135: re-enabled old test TestLeaderboardConfiguration.testDynamicRenamingOfRace --- .../selenium/test/leaderboard/TestLeaderboardConfiguration.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/test/leaderboard/TestLeaderboardConfiguration.java b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/test/leaderboard/TestLeaderboardConfiguration.java index fe4664ec3b6..4d52b0a57d5 100644 --- a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/test/leaderboard/TestLeaderboardConfiguration.java +++ b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/test/leaderboard/TestLeaderboardConfiguration.java @@ -8,7 +8,6 @@ import java.util.Arrays; import java.util.List; import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Disabled; import org.openqa.selenium.WebDriver; import com.sap.sailing.selenium.core.SeleniumTestCase; @@ -142,7 +141,6 @@ public class TestLeaderboardConfiguration extends AbstractSeleniumTest { }); } - @Disabled("This test belongs to bug 1892 and currently fails. It is currently enabled on branch bug1892.") @SeleniumTestCase public void testDynamicRenamingOfRace() { this.environment.getWindowManager().withExtraWindow(getWebDriver(), (adminConsoleWindow, leaderboardWindow) -> { From c9ea295f92a13f9864bb678bb2e6689068b32d1b Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Wed, 2 Jul 2025 22:06:09 +0200 Subject: [PATCH 03/30] bug6135: more time for loading races before comparing MDI results in test --- .../sailing/server/replication/test/MediaReplicationTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/MediaReplicationTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/MediaReplicationTest.java index 756fa57656a..38a57b12b38 100644 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/MediaReplicationTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/MediaReplicationTest.java @@ -115,7 +115,7 @@ public class MediaReplicationTest extends AbstractServerReplicationTest { } private void waitSomeTime() throws InterruptedException { - Thread.sleep(1000); // wait for JMS to deliver the message and the message to be applied + Thread.sleep(5000); // wait for JMS to deliver the message and the message to be applied } /* util */ From 5b235ca352972fbf99fc3a3da15a3c02b4030cf3 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Thu, 3 Jul 2025 12:00:54 +0200 Subject: [PATCH 04/30] bug6135: improved logging of master data import operation --- .../operationaltransformation/ImportMasterDataOperation.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/java/com.sap.sailing.server.interface/src/com/sap/sailing/server/operationaltransformation/ImportMasterDataOperation.java b/java/com.sap.sailing.server.interface/src/com/sap/sailing/server/operationaltransformation/ImportMasterDataOperation.java index f87b7a218fc..3a83b33828a 100755 --- a/java/com.sap.sailing.server.interface/src/com/sap/sailing/server/operationaltransformation/ImportMasterDataOperation.java +++ b/java/com.sap.sailing.server.interface/src/com/sap/sailing/server/operationaltransformation/ImportMasterDataOperation.java @@ -139,6 +139,7 @@ public class ImportMasterDataOperation extends @Override public MasterDataImportObjectCreationCountImpl internalApplyTo(RacingEventService toState) throws Exception { + logger.info("Starting to import master data into "+toState); final DataImportLockWithProgress dataImportLock = toState.getDataImportLock(); SecurityService securityService = toState.getSecurityService(); if (securityService == null) { @@ -194,6 +195,7 @@ public class ImportMasterDataOperation extends waitForTrackedRacesToFinishLoading(trackedRacesToWaitForLoadingComplete); dataImportLock.getProgress(importOperationId).setResult(creationCount); progress.setOverAllProgressPct(1.0); + logger.info("Done importing master data into "+toState); return creationCount; } catch (Exception e) { logger.log(Level.SEVERE, "Error during execution of ImportMasterDataOperation", e); From 9f97214d3446a6652ca5e5290bb7a403ffb927c5 Mon Sep 17 00:00:00 2001 From: zzirkell Date: Thu, 3 Jul 2025 15:12:50 +0200 Subject: [PATCH 05/30] adding tutorials from support.sapsailing.com --- wiki/howto/tutorials/sailinganalytics/tracking-race-player.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 wiki/howto/tutorials/sailinganalytics/tracking-race-player.md diff --git a/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md b/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md new file mode 100644 index 00000000000..e69de29bb2d From 538f605af3eae3665831e11cda7b782bc11d3d06 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Thu, 3 Jul 2025 15:18:52 +0200 Subject: [PATCH 06/30] bug6135: fixed SecurityService tracker mock pass-through for MediaReplicationTest --- .../test/AbstractServerReplicationTest.java | 25 ++++++----- .../test/MediaReplicationTest.java | 20 ++++----- ...orageManagementServiceReplicationTest.java | 6 ++- .../AbstractMailServiceReplicationTest.java | 6 ++- .../META-INF/MANIFEST.MF | 3 +- .../AbstractServerReplicationTestSetUp.java | 44 +++++++++++++------ ...erverWithSingleServiceReplicationTest.java | 4 +- .../test/AbstractSecurityReplicationTest.java | 5 ++- ...licationLeadingToEmailReplicationTest.java | 5 ++- .../test/SecurityServiceInitialLoadTest.java | 3 +- 10 files changed, 74 insertions(+), 47 deletions(-) diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java index 3b7a20a5d9c..aa2c608c83d 100755 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractServerReplicationTest.java @@ -19,22 +19,15 @@ import com.sap.sse.security.SecurityService; public abstract class AbstractServerReplicationTest extends com.sap.sse.replication.testsupport.AbstractServerWithSingleServiceReplicationTest { protected ServerReplicationTestSetUp testSetUp; - protected final FullyInitializedReplicableTracker securityServiceTrackerMock; - - protected AbstractServerReplicationTest(final FullyInitializedReplicableTracker securityServiceTrackerMock, - ServerReplicationTestSetUp testSetUp) { - super(testSetUp); - this.testSetUp = testSetUp; - this.securityServiceTrackerMock = securityServiceTrackerMock; - } protected AbstractServerReplicationTest(ServerReplicationTestSetUp testSetUp) { - this(null, testSetUp); + super(testSetUp); + this.testSetUp = testSetUp; } + public AbstractServerReplicationTest() { super(new ServerReplicationTestSetUp()); - this.securityServiceTrackerMock = null; testSetUp = (ServerReplicationTestSetUp) super.testSetUp; } @@ -42,6 +35,14 @@ public abstract class AbstractServerReplicationTest extends com.sap.sse.replicat protected MongoDBService mongoDBService; protected MongoObjectFactory mongoObjectFactory; + protected ServerReplicationTestSetUp() { + super(); + } + + protected ServerReplicationTestSetUp(FullyInitializedReplicableTracker securityServiceTrackerMock) { + super(securityServiceTrackerMock); + } + /** * Drops the test DB, if dropDB is true and requests the DB to start. */ @@ -55,7 +56,7 @@ public abstract class AbstractServerReplicationTest extends com.sap.sse.replicat } @Override - public RacingEventServiceImpl createNewMaster() { + public RacingEventServiceImpl createNewMaster(FullyInitializedReplicableTracker securityServiceTrackerMock) { return new RacingEventServiceImpl((final RaceLogAndTrackedRaceResolver raceLogResolver)-> { return new ConstructorParameters() { private final DomainFactory baseDomainFactory = new DomainFactoryImpl(raceLogResolver); @@ -73,7 +74,7 @@ public abstract class AbstractServerReplicationTest extends com.sap.sse.replicat } @Override - public RacingEventServiceImpl createNewReplica() { + public RacingEventServiceImpl createNewReplica(FullyInitializedReplicableTracker securityServiceTrackerMock) { return new RacingEventServiceImpl( (final RaceLogAndTrackedRaceResolver raceLogResolver) -> { return new RacingEventServiceImpl.ConstructorParameters() { diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/MediaReplicationTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/MediaReplicationTest.java index 38a57b12b38..24b240b915c 100644 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/MediaReplicationTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/MediaReplicationTest.java @@ -11,13 +11,12 @@ import static org.mockito.Mockito.when; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.net.MalformedURLException; import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.HashSet; import java.util.List; +import java.util.Optional; import java.util.Set; import java.util.UUID; @@ -70,14 +69,14 @@ import com.sap.sse.security.shared.impl.SecuredSecurityTypes.PublicReadableActio import com.sap.sse.security.shared.impl.SecuredSecurityTypes.ServerActions; import com.sap.sse.security.shared.impl.User; import com.sap.sse.security.shared.impl.UserGroupImpl; +import com.sap.sse.shared.util.Wait; public class MediaReplicationTest extends AbstractServerReplicationTest { @SuppressWarnings("unchecked") public MediaReplicationTest() { - super(mock(FullyInitializedReplicableTracker.class), new ServerReplicationTestSetUp() { + super(new ServerReplicationTestSetUp(mock(FullyInitializedReplicableTracker.class)) { @Override - public RacingEventServiceImpl createNewReplica() { - final FullyInitializedReplicableTracker securityServiceTrackerMock = mock(FullyInitializedReplicableTracker.class); + public RacingEventServiceImpl createNewReplica(FullyInitializedReplicableTracker securityServiceTrackerMock) { final MongoDBConfiguration masterMongoDBConfig = mongoDBService.getConfiguration(); final ConnectionString masterMongoDbUri = masterMongoDBConfig.getMongoClientURI(); final MongoDBConfiguration proxyReplicaMongoDBConfig = new MongoDBConfiguration( @@ -87,6 +86,7 @@ public class MediaReplicationTest extends AbstractServerReplicationTest { (proxyReplicaMongoDBConfig.getMongoClientURI().getConnectionString().indexOf("?") < 0 ? "?" : "&") + masterMongoDbUri.getConnectionString().substring(masterMongoDbUri.getConnectionString().indexOf("?")+1)); final MongoDBService replicaMongoDBService = new MongoDBConfiguration(replicaMongoDbUri).getService(); + replicaMongoDBService.getDB().drop(); // drop the replica DB, if it exists final RacingEventServiceImpl result = new RacingEventServiceImpl( (final RaceLogAndTrackedRaceResolver raceLogResolver) -> { return new RacingEventServiceImpl.ConstructorParameters() { @@ -115,7 +115,7 @@ public class MediaReplicationTest extends AbstractServerReplicationTest { } private void waitSomeTime() throws InterruptedException { - Thread.sleep(5000); // wait for JMS to deliver the message and the message to be applied + Thread.sleep(1000); // wait for JMS to deliver the message and the message to be applied } /* util */ @@ -246,8 +246,7 @@ public class MediaReplicationTest extends AbstractServerReplicationTest { } @Test - public void testMasterDataImportForMediaTracks() throws MalformedURLException, IOException, InterruptedException, - ClassNotFoundException { + public void testMasterDataImportForMediaTracks() throws Exception { UserGroupImpl defaultTenant = new UserGroupImpl(new UUID(0, 1), "defaultTenant"); User currentUser = new UserImpl("test", "email@test", Collections.emptyMap(), null, new LockingAndBanningImpl()); SecurityService securityService = Mockito.mock(SecurityService.class); @@ -264,7 +263,7 @@ public class MediaReplicationTest extends AbstractServerReplicationTest { // Setup source service RacingEventServiceImpl sourceService = Mockito.spy(new RacingEventServiceImpl()); Mockito.doReturn(securityService).when(sourceService).getSecurityService(); - when(securityServiceTrackerMock.getInitializedService(0)).thenReturn(securityService); + when(testSetUp.getSecurityServiceTrackerMock().getInitializedService(0)).thenReturn(securityService); Set assignedRaces = new HashSet(); String regattaName1 = "49er"; String regattaName2 = "49er FX"; @@ -319,6 +318,7 @@ public class MediaReplicationTest extends AbstractServerReplicationTest { os.flush(); // Delete all data above from the database, to allow recreating all of it on target server deleteAllDataFromDatabase(); + waitSomeTime(); // ...for the DB to be empty // Import in new service domainFactory = fmaster.getBaseDomainFactory(); // ensure that this class's class loader and with it the dependency to com.sap.sailing.domain.test @@ -336,7 +336,7 @@ public class MediaReplicationTest extends AbstractServerReplicationTest { // ---Asserts--- final Iterable targetTracksMaster = master.getAllMediaTracks(); compareTracks(trackOnSource, targetTracksMaster); - waitSomeTime(); + Wait.wait(()->replica.getDataImportLock().getProgress(randomUUID).getOverallProgressPct() >= 1.0, Optional.of(Duration.ONE_SECOND.times(5)), Duration.ONE_SECOND); final Iterable targetTracksReplica = replica.getAllMediaTracks(); compareTracks(trackOnSource, targetTracksReplica); } diff --git a/java/com.sap.sse.filestorage.test/src/com/sap/sse/filestorage/replication/test/AbstractFileStorageManagementServiceReplicationTest.java b/java/com.sap.sse.filestorage.test/src/com/sap/sse/filestorage/replication/test/AbstractFileStorageManagementServiceReplicationTest.java index bd9409c3349..e41c590b34e 100755 --- a/java/com.sap.sse.filestorage.test/src/com/sap/sse/filestorage/replication/test/AbstractFileStorageManagementServiceReplicationTest.java +++ b/java/com.sap.sse.filestorage.test/src/com/sap/sse/filestorage/replication/test/AbstractFileStorageManagementServiceReplicationTest.java @@ -10,7 +10,9 @@ import com.sap.sse.filestorage.impl.EmptyFileStorageServicePropertyStoreImpl; import com.sap.sse.filestorage.impl.FileStorageManagementServiceImpl; import com.sap.sse.filestorage.testsupport.DummyFileStorageService; import com.sap.sse.mongodb.MongoDBService; +import com.sap.sse.replication.FullyInitializedReplicableTracker; import com.sap.sse.replication.testsupport.AbstractServerWithSingleServiceReplicationTest; +import com.sap.sse.security.SecurityService; public abstract class AbstractFileStorageManagementServiceReplicationTest extends AbstractServerWithSingleServiceReplicationTest { @@ -36,7 +38,7 @@ public abstract class AbstractFileStorageManagementServiceReplicationTest extend } @Override - public FileStorageManagementServiceImpl createNewMaster() throws MalformedURLException, IOException, + public FileStorageManagementServiceImpl createNewMaster(FullyInitializedReplicableTracker securityServiceTrackerMock) throws MalformedURLException, IOException, InterruptedException { FileStorageManagementServiceImpl result = createNewService(); FileStorageService serviceOnMaster = result.getAvailableFileStorageServices()[0]; @@ -46,7 +48,7 @@ public abstract class AbstractFileStorageManagementServiceReplicationTest extend } @Override - public FileStorageManagementServiceImpl createNewReplica() { + public FileStorageManagementServiceImpl createNewReplica(FullyInitializedReplicableTracker securityServiceTrackerMock) { return createNewService(); } diff --git a/java/com.sap.sse.mail.replication.testsupport/src/com/sap/sse/mail/replication/testsupport/AbstractMailServiceReplicationTest.java b/java/com.sap.sse.mail.replication.testsupport/src/com/sap/sse/mail/replication/testsupport/AbstractMailServiceReplicationTest.java index 56f080afb3d..0a574299903 100644 --- a/java/com.sap.sse.mail.replication.testsupport/src/com/sap/sse/mail/replication/testsupport/AbstractMailServiceReplicationTest.java +++ b/java/com.sap.sse.mail.replication.testsupport/src/com/sap/sse/mail/replication/testsupport/AbstractMailServiceReplicationTest.java @@ -10,8 +10,10 @@ import com.sap.sse.mail.MailService; import com.sap.sse.mail.MailServiceResolver; import com.sap.sse.mail.SerializableMultipartSupplier; import com.sap.sse.mail.impl.MailServiceImpl; +import com.sap.sse.replication.FullyInitializedReplicableTracker; import com.sap.sse.replication.testsupport.AbstractServerReplicationTestSetUp; import com.sap.sse.replication.testsupport.AbstractServerWithSingleServiceReplicationTest; +import com.sap.sse.security.SecurityService; public class AbstractMailServiceReplicationTest extends AbstractServerWithSingleServiceReplicationTest { public AbstractMailServiceReplicationTest() { @@ -59,12 +61,12 @@ public class AbstractMailServiceReplicationTest extends AbstractServerWithSingle public static class MailServerReplicationTestSetUp extends AbstractServerReplicationTestSetUp { @Override - protected MailServiceImpl createNewMaster() throws MailException { + protected MailServiceImpl createNewMaster(FullyInitializedReplicableTracker securityServiceTrackerMock) throws MailException { return createMailCountingService(true); } @Override - protected MailServiceImpl createNewReplica() throws MailException { + protected MailServiceImpl createNewReplica(FullyInitializedReplicableTracker securityServiceTrackerMock) throws MailException { return createMailCountingService(false); } } diff --git a/java/com.sap.sse.replication.testsupport/META-INF/MANIFEST.MF b/java/com.sap.sse.replication.testsupport/META-INF/MANIFEST.MF index 05240117d9b..7cfa0e16f65 100644 --- a/java/com.sap.sse.replication.testsupport/META-INF/MANIFEST.MF +++ b/java/com.sap.sse.replication.testsupport/META-INF/MANIFEST.MF @@ -22,7 +22,8 @@ Require-Bundle: junit-jupiter-api;bundle-version="5.12.2", org.hamcrest;bundle-version="2.2.0" Export-Package: com.sap.sse.replication.testsupport Automatic-Module-Name: com.sap.sse.replication.testsupport -Import-Package: javax.servlet;version="3.1.0", +Import-Package: com.sap.sse.security, + javax.servlet;version="3.1.0", javax.servlet.http;version="3.1.0", org.mockito;version="4.8.1", org.mockito.invocation;version="4.8.1", diff --git a/java/com.sap.sse.replication.testsupport/src/com/sap/sse/replication/testsupport/AbstractServerReplicationTestSetUp.java b/java/com.sap.sse.replication.testsupport/src/com/sap/sse/replication/testsupport/AbstractServerReplicationTestSetUp.java index 71a69aa3db3..a252d7881f1 100644 --- a/java/com.sap.sse.replication.testsupport/src/com/sap/sse/replication/testsupport/AbstractServerReplicationTestSetUp.java +++ b/java/com.sap.sse.replication.testsupport/src/com/sap/sse/replication/testsupport/AbstractServerReplicationTestSetUp.java @@ -42,6 +42,7 @@ import org.mockito.stubbing.Answer; import com.rabbitmq.client.Channel; import com.rabbitmq.client.QueueingConsumer; import com.sap.sse.common.Util.Pair; +import com.sap.sse.replication.FullyInitializedReplicableTracker; import com.sap.sse.replication.ReplicaDescriptor; import com.sap.sse.replication.Replicable; import com.sap.sse.replication.ReplicationMasterDescriptor; @@ -57,7 +58,7 @@ import com.sap.sse.replication.impl.ReplicationServiceImpl; import com.sap.sse.replication.impl.ReplicationServlet; import com.sap.sse.replication.impl.SingletonReplicablesProvider; import com.sap.sse.replication.interfaces.impl.ReplicaDescriptorImpl; - +import com.sap.sse.security.SecurityService; import net.jpountz.lz4.LZ4BlockOutputStream; @Timeout(value=5, unit=TimeUnit.MINUTES) // timeout after 5 minutes @@ -73,16 +74,27 @@ public abstract class AbstractServerReplicationTestSetUp securityServiceTrackerMock; protected AbstractServerReplicationTestSetUp() { + this(/* securityServiceTrackerMock*/ null); } protected AbstractServerReplicationTestSetUp(int servletPort) { + this(/* securityServiceTrackerMock*/ null); this.servletPort = servletPort; } - private Thread initialLoadTestServerThread; - + protected AbstractServerReplicationTestSetUp(final FullyInitializedReplicableTracker securityServiceTrackerMock) { + this.securityServiceTrackerMock = securityServiceTrackerMock; + } + + public FullyInitializedReplicableTracker getSecurityServiceTrackerMock() { + return securityServiceTrackerMock; + } + /** * Sets up master and replica, starts the JMS message broker and registers the replica with the master. If you want * to drop the DB in your particular test case first, override {@link #persistenceSetUp(boolean)}. If you don't want @@ -167,12 +179,12 @@ public abstract class AbstractServerReplicationTestSetUpnull */ - protected abstract ReplicableImpl createNewMaster() throws Exception; + protected abstract ReplicableImpl createNewMaster(FullyInitializedReplicableTracker securityServiceTrackerMock) throws Exception; /** - * Creates a new replica replicable instance. This method is called only after {@link #persistenceSetUp(boolean)} has been called. Therefore, - * any initialization that {@link #persistenceSetUp(boolean)} may have performed can be assumed to have taken place in the implementations - * of this method. + * Creates a new replica replicable instance. This method is called only after {@link #persistenceSetUp(boolean)} + * has been called. Therefore, any initialization that {@link #persistenceSetUp(boolean)} may have performed can be + * assumed to have taken place in the implementations of this method. + * + * @param securityServiceTrackerMock + * an optional mock for the security service tracker; may be null */ - protected abstract ReplicableImpl createNewReplica() throws Exception; + protected abstract ReplicableImpl createNewReplica(FullyInitializedReplicableTracker securityServiceTrackerMock) throws Exception; public void tearDown() throws Exception { logger.info("starting to tearDown() test"); diff --git a/java/com.sap.sse.replication.testsupport/src/com/sap/sse/replication/testsupport/AbstractServerWithSingleServiceReplicationTest.java b/java/com.sap.sse.replication.testsupport/src/com/sap/sse/replication/testsupport/AbstractServerWithSingleServiceReplicationTest.java index 78469016202..2564944d497 100755 --- a/java/com.sap.sse.replication.testsupport/src/com/sap/sse/replication/testsupport/AbstractServerWithSingleServiceReplicationTest.java +++ b/java/com.sap.sse.replication.testsupport/src/com/sap/sse/replication/testsupport/AbstractServerWithSingleServiceReplicationTest.java @@ -48,11 +48,11 @@ public abstract class AbstractServerWithSingleServiceReplicationTest securityServiceTrackerMock) throws MalformedURLException, IOException, InterruptedException, MailException, UserStoreManagementException { final UserStoreImpl userStore = new UserStoreImpl("TestDefaultTenant"); userStore.ensureDefaultRolesExist(); @@ -45,7 +46,7 @@ public abstract class AbstractSecurityReplicationTest extends AbstractServerWith } @Override - protected SecurityServiceImpl createNewReplica() + protected SecurityServiceImpl createNewReplica(FullyInitializedReplicableTracker securityServiceTrackerMock) throws UserStoreManagementException, MalformedURLException, IOException, InterruptedException { final UserStoreImpl userStore = new UserStoreImpl("TestDefaultTenant"); userStore.ensureDefaultRolesExist(); diff --git a/java/com.sap.sse.security.replication.test/src/com/sap/sse/security/replication/test/SecurityReplicationLeadingToEmailReplicationTest.java b/java/com.sap.sse.security.replication.test/src/com/sap/sse/security/replication/test/SecurityReplicationLeadingToEmailReplicationTest.java index b060206d6c5..526afd8dc9b 100644 --- a/java/com.sap.sse.security.replication.test/src/com/sap/sse/security/replication/test/SecurityReplicationLeadingToEmailReplicationTest.java +++ b/java/com.sap.sse.security.replication.test/src/com/sap/sse/security/replication/test/SecurityReplicationLeadingToEmailReplicationTest.java @@ -18,6 +18,7 @@ import com.sap.sse.common.mail.MailException; import com.sap.sse.mail.MailService; import com.sap.sse.mail.impl.MailServiceImpl; import com.sap.sse.mail.replication.testsupport.AbstractMailServiceReplicationTest; +import com.sap.sse.replication.FullyInitializedReplicableTracker; import com.sap.sse.replication.testsupport.AbstractServerWithMultipleServicesReplicationTest; import com.sap.sse.security.SecurityService; import com.sap.sse.security.impl.SecurityServiceImpl; @@ -54,7 +55,7 @@ public class SecurityReplicationLeadingToEmailReplicationTest extends AbstractSe private class SecurityServerReplicationTestSetUp extends AbstractSecurityReplicationTest.SecurityServerReplicationTestSetUp { @Override - protected SecurityServiceImpl createNewMaster() + protected SecurityServiceImpl createNewMaster(FullyInitializedReplicableTracker securityServiceTrackerMock) throws MalformedURLException, IOException, InterruptedException, UserStoreManagementException { @SuppressWarnings("unchecked") ServiceTracker trackerMock = mock(ServiceTracker.class); @@ -70,7 +71,7 @@ public class SecurityReplicationLeadingToEmailReplicationTest extends AbstractSe } @Override - protected SecurityServiceImpl createNewReplica() + protected SecurityServiceImpl createNewReplica(FullyInitializedReplicableTracker securityServiceTrackerMock) throws UserStoreManagementException, MalformedURLException, IOException, InterruptedException { @SuppressWarnings("unchecked") ServiceTracker trackerMock = mock(ServiceTracker.class); diff --git a/java/com.sap.sse.security.replication.test/src/com/sap/sse/security/replication/test/SecurityServiceInitialLoadTest.java b/java/com.sap.sse.security.replication.test/src/com/sap/sse/security/replication/test/SecurityServiceInitialLoadTest.java index c49aa43e75a..bb8b2b011af 100755 --- a/java/com.sap.sse.security.replication.test/src/com/sap/sse/security/replication/test/SecurityServiceInitialLoadTest.java +++ b/java/com.sap.sse.security.replication.test/src/com/sap/sse/security/replication/test/SecurityServiceInitialLoadTest.java @@ -9,6 +9,7 @@ import java.util.Locale; import org.junit.jupiter.api.Test; import com.sap.sse.common.mail.MailException; +import com.sap.sse.replication.FullyInitializedReplicableTracker; import com.sap.sse.replication.testsupport.AbstractServerWithSingleServiceReplicationTest; import com.sap.sse.security.SecurityService; import com.sap.sse.security.impl.SecurityServiceImpl; @@ -32,7 +33,7 @@ public class SecurityServiceInitialLoadTest extends AbstractServerWithSingleServ public SecurityServiceInitialLoadTest() { super(new AbstractSecurityReplicationTest.SecurityServerReplicationTestSetUp() { @Override - protected SecurityServiceImpl createNewMaster() + protected SecurityServiceImpl createNewMaster(FullyInitializedReplicableTracker securityServiceTrackerMock) throws MalformedURLException, IOException, InterruptedException, MailException, UserStoreManagementException { final UserStore userStore = new UserStoreImpl(PersistenceFactory.INSTANCE.getDefaultDomainObjectFactory(), PersistenceFactory.INSTANCE.getDefaultMongoObjectFactory(), "TestDefaultTenant"); From 769f46eb28cfe073f678a189d3cb9ef2b19da46c Mon Sep 17 00:00:00 2001 From: zzirkell Date: Thu, 3 Jul 2025 15:19:22 +0200 Subject: [PATCH 07/30] adding initial files to tutorils folders --- wiki/howto/tutorials/sailingracemanager/how-to-work-with-app.md | 0 wiki/howto/tutorials/sailinsight/managing-marks.md | 0 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 wiki/howto/tutorials/sailingracemanager/how-to-work-with-app.md create mode 100644 wiki/howto/tutorials/sailinsight/managing-marks.md diff --git a/wiki/howto/tutorials/sailingracemanager/how-to-work-with-app.md b/wiki/howto/tutorials/sailingracemanager/how-to-work-with-app.md new file mode 100644 index 00000000000..e69de29bb2d diff --git a/wiki/howto/tutorials/sailinsight/managing-marks.md b/wiki/howto/tutorials/sailinsight/managing-marks.md new file mode 100644 index 00000000000..e69de29bb2d From 00925e4e82a3620e0013786274605d1091787b43 Mon Sep 17 00:00:00 2001 From: Masha Kashirina Date: Thu, 3 Jul 2025 13:24:35 +0000 Subject: [PATCH 08/30] Updated tracking-race-player.md (markdown) --- wiki/howto/tutorials/sailinganalytics/tracking-race-player.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md b/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md index e69de29bb2d..109b70e2636 100644 --- a/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md +++ b/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md @@ -0,0 +1,4 @@ +The video below gives an excellent overview of the main functionality of the SAP Race Player which is accessible on a per-race basis via the "Races/Tracking" Tab of a regatta. + + + From 617400dc50920e027ec855cef0d8dcbbba8abf9f Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Thu, 3 Jul 2025 15:27:15 +0200 Subject: [PATCH 09/30] bug6135: fixed compile issues after latest refactoring --- .../META-INF/MANIFEST.MF | 4 +++- .../ReplicationTests (No Proxy).launch | 9 +-------- .../META-INF/MANIFEST.MF | 1 + ...SecurityReplicationLeadingToEmailReplicationTest.java | 4 ++-- .../src/com/sap/sse/test/TestTakedownNoticeFactory.java | 4 ++-- 5 files changed, 9 insertions(+), 13 deletions(-) diff --git a/java/com.sap.sailing.server.replication.test/META-INF/MANIFEST.MF b/java/com.sap.sailing.server.replication.test/META-INF/MANIFEST.MF index b51317e4435..f503e1dca00 100644 --- a/java/com.sap.sailing.server.replication.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.server.replication.test/META-INF/MANIFEST.MF @@ -48,5 +48,7 @@ Require-Bundle: com.sap.sailing.server, com.sap.sailing.shared.server, com.sap.sailing.resultimport, com.sap.sailing.shared.server.gateway, - com.sap.sailing.server.gateway.interfaces + com.sap.sailing.server.gateway.interfaces, + net.bytebuddy.byte-buddy;bundle-version="1.14.12", + net.bytebuddy.byte-buddy-agent;bundle-version="1.14.12" Automatic-Module-Name: com.sap.sailing.server.replication.test diff --git a/java/com.sap.sailing.server.replication.test/ReplicationTests (No Proxy).launch b/java/com.sap.sailing.server.replication.test/ReplicationTests (No Proxy).launch index 36678094380..9977290b8e3 100644 --- a/java/com.sap.sailing.server.replication.test/ReplicationTests (No Proxy).launch +++ b/java/com.sap.sailing.server.replication.test/ReplicationTests (No Proxy).launch @@ -13,15 +13,8 @@ - + - - - - - - - diff --git a/java/com.sap.sse.mail.replication.testsupport/META-INF/MANIFEST.MF b/java/com.sap.sse.mail.replication.testsupport/META-INF/MANIFEST.MF index 8f3973244e0..3f03bf2bb47 100644 --- a/java/com.sap.sse.mail.replication.testsupport/META-INF/MANIFEST.MF +++ b/java/com.sap.sse.mail.replication.testsupport/META-INF/MANIFEST.MF @@ -20,4 +20,5 @@ Require-Bundle: com.sap.sse.replication, com.sap.sse.replication.interfaces;bundle-version="1.0.0", org.hamcrest;bundle-version="2.2.0" Export-Package: com.sap.sse.mail.replication.testsupport +Import-Package: com.sap.sse.security Automatic-Module-Name: com.sap.sse.mail.replication.testsupport diff --git a/java/com.sap.sse.security.replication.test/src/com/sap/sse/security/replication/test/SecurityReplicationLeadingToEmailReplicationTest.java b/java/com.sap.sse.security.replication.test/src/com/sap/sse/security/replication/test/SecurityReplicationLeadingToEmailReplicationTest.java index 526afd8dc9b..221f99d6e72 100644 --- a/java/com.sap.sse.security.replication.test/src/com/sap/sse/security/replication/test/SecurityReplicationLeadingToEmailReplicationTest.java +++ b/java/com.sap.sse.security.replication.test/src/com/sap/sse/security/replication/test/SecurityReplicationLeadingToEmailReplicationTest.java @@ -90,12 +90,12 @@ public class SecurityReplicationLeadingToEmailReplicationTest extends AbstractSe private class MailServerReplicationTestSetUp extends AbstractMailServiceReplicationTest.MailServerReplicationTestSetUp { @Override - protected MailServiceImpl createNewMaster() throws MailException { + protected MailServiceImpl createNewMaster(FullyInitializedReplicableTracker securityServiceTrackerMock) throws MailException { return masterMailService; } @Override - protected MailServiceImpl createNewReplica() throws MailException { + protected MailServiceImpl createNewReplica(FullyInitializedReplicableTracker securityServiceTrackerMock) throws MailException { return replicaMailService; } } diff --git a/java/com.sap.sse.test/src/com/sap/sse/test/TestTakedownNoticeFactory.java b/java/com.sap.sse.test/src/com/sap/sse/test/TestTakedownNoticeFactory.java index 4f6fdc5e788..42c9a95d455 100644 --- a/java/com.sap.sse.test/src/com/sap/sse/test/TestTakedownNoticeFactory.java +++ b/java/com.sap.sse.test/src/com/sap/sse/test/TestTakedownNoticeFactory.java @@ -1,12 +1,12 @@ package com.sap.sse.test; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.Locale; -import org.junit.Test; +import org.junit.jupiter.api.Test; import com.sap.sse.common.media.NatureOfClaim; import com.sap.sse.common.media.TakedownNoticeRequestContext; From dac27c6d8b9b438755f508fbd378c2e39ebe2d3a Mon Sep 17 00:00:00 2001 From: Masha Kashirina Date: Thu, 3 Jul 2025 13:32:37 +0000 Subject: [PATCH 10/30] Updated tracking-race-player.md (markdown) --- .../tutorials/sailinganalytics/tracking-race-player.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md b/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md index 109b70e2636..731530c3fa8 100644 --- a/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md +++ b/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md @@ -1,4 +1,10 @@ The video below gives an excellent overview of the main functionality of the SAP Race Player which is accessible on a per-race basis via the "Races/Tracking" Tab of a regatta. - + + + + From 8522ccd2b51438651f31a82e7c15404e2cf2d2fc Mon Sep 17 00:00:00 2001 From: Masha Kashirina Date: Thu, 3 Jul 2025 14:12:38 +0000 Subject: [PATCH 11/30] Updated tracking-race-player.md (markdown) --- .../sailinganalytics/tracking-race-player.md | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md b/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md index 731530c3fa8..1c072c3b3c4 100644 --- a/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md +++ b/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md @@ -1,10 +1,14 @@ The video below gives an excellent overview of the main functionality of the SAP Race Player which is accessible on a per-race basis via the "Races/Tracking" Tab of a regatta. +# Video Tag Test + +This should show a video player: + + - - From 839ca09e0e08a86646b50a3b3b1f29987e32097d Mon Sep 17 00:00:00 2001 From: Masha Kashirina Date: Thu, 3 Jul 2025 14:14:13 +0000 Subject: [PATCH 12/30] Updated tracking-race-player.md (markdown) --- .../sailinganalytics/tracking-race-player.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md b/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md index 1c072c3b3c4..53baad5001e 100644 --- a/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md +++ b/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md @@ -1,14 +1,15 @@ The video below gives an excellent overview of the main functionality of the SAP Race Player which is accessible on a per-race basis via the "Races/Tracking" Tab of a regatta. -# Video Tag Test +## Application functionality -This should show a video player: - - + From e82a6ffe04be5110b7f02fa24bc18e57d9e74e1d Mon Sep 17 00:00:00 2001 From: Masha Kashirina Date: Thu, 3 Jul 2025 14:15:45 +0000 Subject: [PATCH 13/30] Updated tracking-race-player.md (markdown) From 8a281376c8fcc0d75ad68e050e5547bc3a2c8890 Mon Sep 17 00:00:00 2001 From: Masha Kashirina Date: Thu, 3 Jul 2025 14:20:15 +0000 Subject: [PATCH 14/30] Updated tracking-race-player.md (markdown) --- .../sailinganalytics/tracking-race-player.md | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md b/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md index 53baad5001e..ffd2315fa5b 100644 --- a/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md +++ b/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md @@ -1,15 +1,10 @@ The video below gives an excellent overview of the main functionality of the SAP Race Player which is accessible on a per-race basis via the "Races/Tracking" Tab of a regatta. -## Application functionality +# Iframe Test - +Here is an example iframe embedding example.com: + + From 0d7bdaed07d45dedaf7ad8f26974c3075aa1789b Mon Sep 17 00:00:00 2001 From: Masha Kashirina Date: Thu, 3 Jul 2025 14:28:21 +0000 Subject: [PATCH 15/30] Updated tracking-race-player.md (markdown) --- .../tutorials/sailinganalytics/tracking-race-player.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md b/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md index ffd2315fa5b..b00d5e203ab 100644 --- a/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md +++ b/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md @@ -1,10 +1,6 @@ The video below gives an excellent overview of the main functionality of the SAP Race Player which is accessible on a per-race basis via the "Races/Tracking" Tab of a regatta. -# Iframe Test - -Here is an example iframe embedding example.com: - - + From e6141dc0ecf238e8d39ecce440f78d73c0b88e93 Mon Sep 17 00:00:00 2001 From: Masha Kashirina Date: Thu, 3 Jul 2025 14:36:11 +0000 Subject: [PATCH 16/30] Updated tracking-race-player.md (markdown) From b2d41157ab9507899df51031eccd5af1f7685fee Mon Sep 17 00:00:00 2001 From: Masha Kashirina Date: Thu, 3 Jul 2025 14:43:45 +0000 Subject: [PATCH 17/30] Updated tracking-race-player.md (markdown) --- wiki/howto/tutorials/sailinganalytics/tracking-race-player.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md b/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md index b00d5e203ab..7fff1d076e8 100644 --- a/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md +++ b/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md @@ -1,6 +1,7 @@ The video below gives an excellent overview of the main functionality of the SAP Race Player which is accessible on a per-race basis via the "Races/Tracking" Tab of a regatta. - +â–¶ Watch the Video + From 6a51c1a5fbe369286e44afd7970ec77ceafb552b Mon Sep 17 00:00:00 2001 From: Masha Kashirina Date: Thu, 3 Jul 2025 14:47:20 +0000 Subject: [PATCH 18/30] Updated tracking-race-player.md (markdown) --- .../sailinganalytics/tracking-race-player.md | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md b/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md index 7fff1d076e8..16989fc0150 100644 --- a/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md +++ b/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md @@ -1,6 +1,32 @@ The video below gives an excellent overview of the main functionality of the SAP Race Player which is accessible on a per-race basis via the "Races/Tracking" Tab of a regatta. -â–¶ Watch the Video +
+ + From 943f60cbd904e18a1e71c95553b30d288f0af0f7 Mon Sep 17 00:00:00 2001 From: Masha Kashirina Date: Thu, 3 Jul 2025 14:51:33 +0000 Subject: [PATCH 19/30] Updated tracking-race-player.md (markdown) --- .../sailinganalytics/tracking-race-player.md | 57 +++++++++++-------- 1 file changed, 32 insertions(+), 25 deletions(-) diff --git a/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md b/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md index 16989fc0150..052cbfcbbc5 100644 --- a/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md +++ b/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md @@ -1,33 +1,40 @@ The video below gives an excellent overview of the main functionality of the SAP Race Player which is accessible on a per-race basis via the "Races/Tracking" Tab of a regatta. -
- +
+ + + \ No newline at end of file From 8341068f13e37688c2951e7b0140540b40830fc7 Mon Sep 17 00:00:00 2001 From: Masha Kashirina Date: Thu, 3 Jul 2025 14:53:37 +0000 Subject: [PATCH 20/30] Updated tracking-race-player.md (markdown) --- .../sailinganalytics/tracking-race-player.md | 27 +++++-------------- 1 file changed, 6 insertions(+), 21 deletions(-) diff --git a/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md b/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md index 052cbfcbbc5..9467fdc1a6c 100644 --- a/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md +++ b/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md @@ -1,24 +1,15 @@ The video below gives an excellent overview of the main functionality of the SAP Race Player which is accessible on a per-race basis via the "Races/Tracking" Tab of a regatta. - - - - YouTube IFrame API Example - - -
- + - // 3. Autoplay when ready - function onPlayerReady(event) { - event.target.playVideo(); - } - - - - \ No newline at end of file From 29426d962ca2adb7553c02e13ee137cc7de7f3ef Mon Sep 17 00:00:00 2001 From: Masha Kashirina Date: Thu, 3 Jul 2025 14:54:35 +0000 Subject: [PATCH 21/30] Updated tracking-race-player.md (markdown) --- .../sailinganalytics/tracking-race-player.md | 29 ++++++++++++++----- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md b/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md index 9467fdc1a6c..e9629b056bf 100644 --- a/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md +++ b/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md @@ -3,23 +3,38 @@ The video below gives an excellent overview of the main functionality of the SAP -
- + From 954bc65149c6ede10395fed11e789ad406071f87 Mon Sep 17 00:00:00 2001 From: Masha Kashirina Date: Thu, 3 Jul 2025 14:59:02 +0000 Subject: [PATCH 22/30] Updated tracking-race-player.md (markdown) --- .../sailinganalytics/tracking-race-player.md | 40 ++----------------- 1 file changed, 3 insertions(+), 37 deletions(-) diff --git a/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md b/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md index e9629b056bf..289fd71ece8 100644 --- a/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md +++ b/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md @@ -1,40 +1,6 @@ The video below gives an excellent overview of the main functionality of the SAP Race Player which is accessible on a per-race basis via the "Races/Tracking" Tab of a regatta. - - - - -
- - +Here is a helpful video: + + From c1c324f40aa598f010dd4641f575905990a5a91c Mon Sep 17 00:00:00 2001 From: Masha Kashirina Date: Thu, 3 Jul 2025 15:00:58 +0000 Subject: [PATCH 23/30] Updated tracking-race-player.md (markdown) --- .../howto/tutorials/sailinganalytics/tracking-race-player.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md b/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md index 289fd71ece8..165e83cf399 100644 --- a/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md +++ b/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md @@ -1,6 +1 @@ The video below gives an excellent overview of the main functionality of the SAP Race Player which is accessible on a per-race basis via the "Races/Tracking" Tab of a regatta. -Here is a helpful video: - - - - From dc2138f5e840476ed3f858ee1a23333f62f55f7d Mon Sep 17 00:00:00 2001 From: Masha Kashirina Date: Thu, 3 Jul 2025 15:08:16 +0000 Subject: [PATCH 24/30] Updated tracking-race-player.md (markdown) --- .../howto/tutorials/sailinganalytics/tracking-race-player.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md b/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md index 165e83cf399..e76bc054b64 100644 --- a/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md +++ b/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md @@ -1 +1,6 @@ The video below gives an excellent overview of the main functionality of the SAP Race Player which is accessible on a per-race basis via the "Races/Tracking" Tab of a regatta. + + \ No newline at end of file From 106bcf2eedc776d4c5394e41ae8d2ffe393bf462 Mon Sep 17 00:00:00 2001 From: Masha Kashirina Date: Thu, 3 Jul 2025 15:10:58 +0000 Subject: [PATCH 25/30] Updated tracking-race-player.md (markdown) --- wiki/howto/tutorials/sailinganalytics/tracking-race-player.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md b/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md index e76bc054b64..5c75fc6022c 100644 --- a/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md +++ b/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md @@ -1,6 +1,6 @@ The video below gives an excellent overview of the main functionality of the SAP Race Player which is accessible on a per-race basis via the "Races/Tracking" Tab of a regatta. \ No newline at end of file From 4c2b113d6624707c0ff2874d5f342ac18bd9684d Mon Sep 17 00:00:00 2001 From: Masha Kashirina Date: Thu, 3 Jul 2025 15:11:10 +0000 Subject: [PATCH 26/30] Updated tracking-race-player.md (markdown) From 79977956fe31ef3eb72420d0a9053818ef0bd0d4 Mon Sep 17 00:00:00 2001 From: Masha Kashirina Date: Thu, 3 Jul 2025 15:15:31 +0000 Subject: [PATCH 27/30] Updated tracking-race-player.md (markdown) --- .../howto/tutorials/sailinganalytics/tracking-race-player.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md b/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md index 5c75fc6022c..9c5fc862883 100644 --- a/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md +++ b/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md @@ -1,6 +1,3 @@ The video below gives an excellent overview of the main functionality of the SAP Race Player which is accessible on a per-race basis via the "Races/Tracking" Tab of a regatta. - \ No newline at end of file +[![IMAGE ALT TEXT HERE](https://img.youtube.com/vi/A2Z86lYV7CE/0.jpg)](https://www.youtube.com/watch?v=A2Z86lYV7CE) \ No newline at end of file From 8671c65353574e6b303581dd2f7ed79c1d2429a3 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Thu, 3 Jul 2025 17:16:39 +0200 Subject: [PATCH 28/30] bug6135: fixed launch config merge conflicts --- .../SailingServer (No Proxy OSX).launch | 246 ------------------ .../SailingServer (No Proxy, Axel).launch | 246 ------------------ ...ailingServer (No Proxy, Cached MTB).launch | 245 ----------------- .../SailingServer (No Proxy, Java11).launch | 246 ------------------ ...r (No Proxy, Java11, JFR Recording).launch | 246 ------------------ ...ingServer (No Proxy, Jetty on 8889).launch | 246 ------------------ ...o Proxy, Jetty on 8889, Cached MTB).launch | 246 ------------------ ...on 8889, auto-replicate SS and SSD).launch | 246 ------------------ ... Jetty on 8889, auto-replicate dev).launch | 246 ------------------ ...oxy, Jetty on 8889, auto-replicate).launch | 246 ------------------ ...ingServer (No Proxy, Jetty on 8890).launch | 246 ------------------ ...uto-replicate from replica at 8889).launch | 246 ------------------ ...ver (No Proxy, Remote Debug SAP VM).launch | 246 ------------------ ...erver (No Proxy, debranding active).launch | 246 ------------------ ...ilingServer (No Proxy, winddb Axel).launch | 246 ------------------ ...gServer (No Proxy, winddbTest Axel).launch | 246 ------------------ 16 files changed, 3935 deletions(-) diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy OSX).launch b/java/com.sap.sailing.server/SailingServer (No Proxy OSX).launch index a131ceb93a5..5bcf70b4d84 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy OSX).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy OSX).launch @@ -250,252 +250,6 @@
-<<<<<<< HEAD -======= - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->>>>>>> 3912c3f6342... bug6127: removed junit "vintage" from target platform after JUnit5 migration -======= ->>>>>>> main diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Axel).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Axel).launch index ac605fed7a8..3bdfefc507a 100644 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Axel).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Axel).launch @@ -256,252 +256,6 @@ -<<<<<<< HEAD -======= - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->>>>>>> 3912c3f6342... bug6127: removed junit "vintage" from target platform after JUnit5 migration -======= ->>>>>>> main diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Cached MTB).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Cached MTB).launch index 4ea6a2148ed..9df8b044c74 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Cached MTB).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Cached MTB).launch @@ -249,252 +249,7 @@ -<<<<<<< HEAD -======= - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->>>>>>> 3912c3f6342... bug6127: removed junit "vintage" from target platform after JUnit5 migration -======= ->>>>>>> main diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Java11).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Java11).launch index 79016c5fb53..9d1b0744ef8 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Java11).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Java11).launch @@ -254,252 +254,6 @@ -<<<<<<< HEAD -======= - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->>>>>>> 3912c3f6342... bug6127: removed junit "vintage" from target platform after JUnit5 migration -======= ->>>>>>> main diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Java11, JFR Recording).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Java11, JFR Recording).launch index e8d57c9e714..7fc9a472812 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Java11, JFR Recording).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Java11, JFR Recording).launch @@ -253,252 +253,6 @@ -<<<<<<< HEAD -======= - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->>>>>>> 3912c3f6342... bug6127: removed junit "vintage" from target platform after JUnit5 migration -======= ->>>>>>> main diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889).launch index 7e468121fa3..37e49dfcbc4 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889).launch @@ -247,252 +247,6 @@ -<<<<<<< HEAD -======= - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->>>>>>> 3912c3f6342... bug6127: removed junit "vintage" from target platform after JUnit5 migration -======= ->>>>>>> main diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, Cached MTB).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, Cached MTB).launch index 083cc350ba3..7b6d1c054b7 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, Cached MTB).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, Cached MTB).launch @@ -243,252 +243,6 @@ -<<<<<<< HEAD -======= - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->>>>>>> 3912c3f6342... bug6127: removed junit "vintage" from target platform after JUnit5 migration -======= ->>>>>>> main diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate SS and SSD).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate SS and SSD).launch index afa1f61d0c0..e038c96c64b 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate SS and SSD).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate SS and SSD).launch @@ -249,252 +249,6 @@ -<<<<<<< HEAD -======= - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->>>>>>> 3912c3f6342... bug6127: removed junit "vintage" from target platform after JUnit5 migration -======= ->>>>>>> main diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate dev).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate dev).launch index bdee223961f..d555ad3097d 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate dev).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate dev).launch @@ -247,252 +247,6 @@ -<<<<<<< HEAD -======= - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->>>>>>> 3912c3f6342... bug6127: removed junit "vintage" from target platform after JUnit5 migration -======= ->>>>>>> main diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate).launch index 4f9cb028842..1d78953b1ae 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8889, auto-replicate).launch @@ -249,252 +249,6 @@ -<<<<<<< HEAD -======= - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->>>>>>> 3912c3f6342... bug6127: removed junit "vintage" from target platform after JUnit5 migration -======= ->>>>>>> main diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8890).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8890).launch index 37dbad85f68..3cc6e62995b 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8890).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8890).launch @@ -247,252 +247,6 @@ -<<<<<<< HEAD -======= - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->>>>>>> 3912c3f6342... bug6127: removed junit "vintage" from target platform after JUnit5 migration -======= ->>>>>>> main diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8890, auto-replicate from replica at 8889).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8890, auto-replicate from replica at 8889).launch index 7aad7f4ac03..84d91ae9b0c 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8890, auto-replicate from replica at 8889).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Jetty on 8890, auto-replicate from replica at 8889).launch @@ -247,252 +247,6 @@ -<<<<<<< HEAD -======= - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->>>>>>> 3912c3f6342... bug6127: removed junit "vintage" from target platform after JUnit5 migration -======= ->>>>>>> main diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Remote Debug SAP VM).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Remote Debug SAP VM).launch index 156e20cdce8..fada308753f 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, Remote Debug SAP VM).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Remote Debug SAP VM).launch @@ -243,252 +243,6 @@ -<<<<<<< HEAD -======= - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->>>>>>> 3912c3f6342... bug6127: removed junit "vintage" from target platform after JUnit5 migration -======= ->>>>>>> main diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, debranding active).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, debranding active).launch index 0077ede00f2..d3c6341cc08 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, debranding active).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, debranding active).launch @@ -252,252 +252,6 @@ -<<<<<<< HEAD -======= - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->>>>>>> 3912c3f6342... bug6127: removed junit "vintage" from target platform after JUnit5 migration -======= ->>>>>>> main diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, winddb Axel).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, winddb Axel).launch index 4a4f2f1e0b4..c4a5d225273 100644 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, winddb Axel).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, winddb Axel).launch @@ -249,252 +249,6 @@ -<<<<<<< HEAD -======= - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->>>>>>> 3912c3f6342... bug6127: removed junit "vintage" from target platform after JUnit5 migration -======= ->>>>>>> main diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, winddbTest Axel).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, winddbTest Axel).launch index 15301ebe5ee..bbde08cf964 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy, winddbTest Axel).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy, winddbTest Axel).launch @@ -249,252 +249,6 @@ -<<<<<<< HEAD -======= - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ->>>>>>> 3912c3f6342... bug6127: removed junit "vintage" from target platform after JUnit5 migration -======= ->>>>>>> main From 2b7a58ef2c7305d69c4b0a694a3d2aa1f70afcb6 Mon Sep 17 00:00:00 2001 From: Masha Kashirina Date: Thu, 3 Jul 2025 15:26:37 +0000 Subject: [PATCH 29/30] Updated tracking-race-player.md (markdown) --- wiki/howto/tutorials/sailinganalytics/tracking-race-player.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md b/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md index 9c5fc862883..462f07f4b8c 100644 --- a/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md +++ b/wiki/howto/tutorials/sailinganalytics/tracking-race-player.md @@ -1,3 +1,4 @@ The video below gives an excellent overview of the main functionality of the SAP Race Player which is accessible on a per-race basis via the "Races/Tracking" Tab of a regatta. -[![IMAGE ALT TEXT HERE](https://img.youtube.com/vi/A2Z86lYV7CE/0.jpg)](https://www.youtube.com/watch?v=A2Z86lYV7CE) \ No newline at end of file +[![tracking race player](https://i.vimeocdn.com/video/1580518450-d061bcba753035fe130227e4b1c3ac735440041fabb61c3a14e289b9cd102dd5-d?mw=640&q=85)](https://player.vimeo.com/video/786236240?h=5837f0d8b3) + From 39d60ec69fbd29994f03475469a9ce581844a5d7 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Thu, 3 Jul 2025 19:27:50 +0200 Subject: [PATCH 30/30] bug6135: made waiting for MDI progress more resilient to timing issues --- .../server/replication/test/MediaReplicationTest.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/MediaReplicationTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/MediaReplicationTest.java index 24b240b915c..f7c05285803 100644 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/MediaReplicationTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/MediaReplicationTest.java @@ -336,7 +336,10 @@ public class MediaReplicationTest extends AbstractServerReplicationTest { // ---Asserts--- final Iterable targetTracksMaster = master.getAllMediaTracks(); compareTracks(trackOnSource, targetTracksMaster); - Wait.wait(()->replica.getDataImportLock().getProgress(randomUUID).getOverallProgressPct() >= 1.0, Optional.of(Duration.ONE_SECOND.times(5)), Duration.ONE_SECOND); + Wait.wait(()->replica.getDataImportLock() != null + && replica.getDataImportLock().getProgress(randomUUID) != null + && replica.getDataImportLock().getProgress(randomUUID).getOverallProgressPct() >= 1.0, + Optional.of(Duration.ONE_SECOND.times(5)), Duration.ONE_SECOND); final Iterable targetTracksReplica = replica.getAllMediaTracks(); compareTracks(trackOnSource, targetTracksReplica); }