bug6060: moved measurement suppor to new bundle com.sap.sse.testutils; use in branding tests to measure client-side script size

This commit is contained in:
Axel Uhl committed 2025-08-26 16:47:42 +02:00
1 parent 3afefaefa0
commit a6301dc0ed
29 files changed
+261 -19

No files matched your search

@@ -45,7 +45,8 @@ Require-Bundle: com.sap.sailing.domain,
com.sap.sse.operationaltransformation
Export-Package: com.sap.sailing.domain.test,
com.sap.sailing.domain.test.mock
Import-Package: org.apache.commons.math;version="2.1.0",
Import-Package: com.sap.sse.testutils,
org.apache.commons.math;version="2.1.0",
org.apache.commons.math.analysis.polynomials;version="2.1.0",
org.osgi.util.tracker
Automatic-Module-Name: com.sap.sailing.domain.test
@@ -11,12 +11,12 @@ import java.util.concurrent.locks.Lock;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import com.sap.sailing.domain.test.measurements.Measurement;
import com.sap.sailing.domain.test.measurements.MeasurementCase;
import com.sap.sailing.domain.test.measurements.MeasurementXMLFile;
import com.sap.sse.common.Util;
import com.sap.sse.concurrent.LockUtil;
import com.sap.sse.concurrent.NamedReentrantReadWriteLock;
import com.sap.sse.testutils.Measurement;
import com.sap.sse.testutils.MeasurementCase;
import com.sap.sse.testutils.MeasurementXMLFile;
public class LockTraceTest {
private static class LockingThread extends Thread {
@@ -21,10 +21,10 @@ import com.sap.sailing.domain.common.impl.BoundsImpl;
import com.sap.sailing.domain.common.impl.DegreePosition;
import com.sap.sailing.domain.common.quadtree.QuadTree;
import com.sap.sailing.domain.common.quadtree.impl.Node;
import com.sap.sailing.domain.test.measurements.Measurement;
import com.sap.sailing.domain.test.measurements.MeasurementCase;
import com.sap.sailing.domain.test.measurements.MeasurementXMLFile;
import com.sap.sse.common.Util;
import com.sap.sse.testutils.Measurement;
import com.sap.sse.testutils.MeasurementCase;
import com.sap.sse.testutils.MeasurementXMLFile;
public class QuadTreeTest {
private class GLatLngQuadTree extends QuadTree<Position> {
@@ -33,15 +33,15 @@ import com.sap.sailing.domain.markpassingcalculation.MarkPassingCalculator;
import com.sap.sailing.domain.markpassingcalculation.impl.CandidateChooserImpl;
import com.sap.sailing.domain.markpassingcalculation.impl.CandidateFinderImpl;
import com.sap.sailing.domain.test.OnlineTracTracBasedTest;
import com.sap.sailing.domain.test.measurements.Measurement;
import com.sap.sailing.domain.test.measurements.MeasurementCase;
import com.sap.sailing.domain.test.measurements.MeasurementXMLFile;
import com.sap.sailing.domain.tracking.MarkPassing;
import com.sap.sailing.domain.tractracadapter.ReceiverType;
import com.sap.sse.common.TimePoint;
import com.sap.sse.common.Util;
import com.sap.sse.common.impl.DegreeBearingImpl;
import com.sap.sse.common.impl.MillisecondsTimePoint;
import com.sap.sse.testutils.Measurement;
import com.sap.sse.testutils.MeasurementCase;
import com.sap.sse.testutils.MeasurementXMLFile;
public abstract class AbstractMarkPassingTest extends OnlineTracTracBasedTest {
private static final Logger logger = Logger.getLogger(AbstractMarkPassingTest.class.getName());
@@ -22,13 +22,13 @@ import com.sap.sailing.domain.markpassingcalculation.CandidateFinder;
import com.sap.sailing.domain.markpassingcalculation.impl.CandidateChooserImpl;
import com.sap.sailing.domain.markpassingcalculation.impl.CandidateFinderImpl;
import com.sap.sailing.domain.markpassingcalculation.impl.CandidateImpl;
import com.sap.sailing.domain.test.measurements.Measurement;
import com.sap.sailing.domain.test.measurements.MeasurementCase;
import com.sap.sailing.domain.test.measurements.MeasurementXMLFile;
import com.sap.sse.common.TimePoint;
import com.sap.sse.common.Util;
import com.sap.sse.common.impl.DegreeBearingImpl;
import com.sap.sse.common.impl.MillisecondsTimePoint;
import com.sap.sse.testutils.Measurement;
import com.sap.sse.testutils.MeasurementCase;
import com.sap.sse.testutils.MeasurementXMLFile;
public class MarkPassingCalculatorPerformanceTest extends AbstractMockedRaceMarkPassingTest {
@@ -25,9 +25,6 @@ import com.sap.sailing.domain.markpassingcalculation.MarkPassingCalculator;
import com.sap.sailing.domain.markpassingcalculation.impl.CandidateChooserImpl;
import com.sap.sailing.domain.markpassingcalculation.impl.CandidateChooserImpl.Stats;
import com.sap.sailing.domain.markpassingcalculation.impl.CandidateChooserImpl.Stats.CompetitorStats;
import com.sap.sailing.domain.test.measurements.Measurement;
import com.sap.sailing.domain.test.measurements.MeasurementCase;
import com.sap.sailing.domain.test.measurements.MeasurementXMLFile;
import com.sap.sailing.domain.tracking.MarkPassing;
import com.sap.sailing.domain.tracking.impl.DynamicTrackedRaceImpl;
import com.sap.sailing.domain.tracking.impl.TrackedRaceImpl;
@@ -35,6 +32,9 @@ import com.sap.sse.common.Duration;
import com.sap.sse.common.TimePoint;
import com.sap.sse.common.Util;
import com.sap.sse.common.impl.MillisecondsTimePoint;
import com.sap.sse.testutils.Measurement;
import com.sap.sse.testutils.MeasurementCase;
import com.sap.sse.testutils.MeasurementXMLFile;
public class MarkPassingCalculatorWithTrackersOnStartBoatTest extends AbstractExportedPositionsBasedTest {
private DynamicTrackedRaceImpl trackedRace;
+11
View File
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src">
<attributes>
<attribute name="test" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="bin"/>
</classpath>
+28
View File
@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>com.sap.sse.branding.test</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.ManifestBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.SchemaBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.pde.PluginNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
@@ -0,0 +1,2 @@
eclipse.preferences.version=1
encoding/<project>=UTF-8
@@ -0,0 +1,7 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.release=disabled
org.eclipse.jdt.core.compiler.source=1.8
@@ -0,0 +1,3 @@
eclipse.preferences.version=1
pluginProject.extensions=false
resolve.requirebundle=false
@@ -0,0 +1,16 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Test
Bundle-SymbolicName: com.sap.sse.branding.test
Bundle-Version: 1.0.0.qualifier
Bundle-Vendor: SAP
Fragment-Host: com.sap.sse.branding
Require-Bundle: junit-jupiter-api,
org.mockito.mockito-core;bundle-version="4.8.1",
net.bytebuddy.byte-buddy;bundle-version="1.14.12",
net.bytebuddy.byte-buddy-agent;bundle-version="1.14.12",
org.objenesis;bundle-version="3.3.0"
Automatic-Module-Name: com.sap.sse.branding.test
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Import-Package: com.sap.sse.branding.sap,
com.sap.sse.testutils
@@ -0,0 +1,4 @@
source.. = src/
output.. = bin/
bin.includes = META-INF/,\
.
+12
View File
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>root</artifactId>
<groupId>com.sap.sailing</groupId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>com.sap.sse.branding.test</artifactId>
<packaging>eclipse-test-plugin</packaging>
</project>
@@ -0,0 +1,75 @@
package com.sap.sse.branding.impl;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import java.io.IOException;
import java.util.Dictionary;
import java.util.Map;
import java.util.Optional;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.ArgumentMatchers;
import org.osgi.framework.BundleContext;
import org.osgi.framework.Filter;
import org.osgi.framework.InvalidSyntaxException;
import org.osgi.framework.ServiceReference;
import org.osgi.util.tracker.ServiceTracker;
import com.sap.sse.branding.BrandingConfigurationService;
import com.sap.sse.branding.sap.SAPBrandingConfiguration;
import com.sap.sse.branding.shared.BrandingConfiguration;
import com.sap.sse.testutils.Measurement;
import com.sap.sse.testutils.MeasurementCase;
import com.sap.sse.testutils.MeasurementXMLFile;
public class TestAndMeasureSizeOfSAPBranding {
private BrandingConfiguration brandingConfiguration;
private BrandingConfigurationService brandingConfigurationService;
private static MeasurementXMLFile measurementFile;
private static MeasurementCase measurementCase;
@BeforeAll
public static void beforeAll() {
measurementFile = new MeasurementXMLFile(TestAndMeasureSizeOfSAPBranding.class);
measurementCase = measurementFile.addCase(TestAndMeasureSizeOfSAPBranding.class.getSimpleName());
}
@AfterAll
public static void afterAll() throws IOException {
measurementFile.write();
}
@SuppressWarnings("unchecked")
@BeforeEach
public void setUp() throws InvalidSyntaxException {
final BundleContext dummyBundleContext = mock(BundleContext.class);
final Filter dummyFilter = mock(Filter.class);
when(dummyFilter.match((Dictionary<String, ?>) ArgumentMatchers.any())).thenReturn(true);
when(dummyBundleContext.createFilter(ArgumentMatchers.anyString())).thenReturn(dummyFilter);
brandingConfiguration = new SAPBrandingConfiguration();
final ServiceTracker<BrandingConfiguration, BrandingConfiguration> tracker = mock(ServiceTracker.class);
when(tracker.getService()).thenReturn(brandingConfiguration);
when(tracker.getService(ArgumentMatchers.any(ServiceReference.class))).thenReturn(brandingConfiguration);
final ServiceReference<BrandingConfiguration>[] serviceReferences = new ServiceReference[] { mock(ServiceReference.class) };
when(tracker.getServiceReferences()).thenReturn(serviceReferences);
brandingConfigurationService = new BrandingConfigurationServiceImpl(dummyBundleContext, tracker);
brandingConfigurationService.setActiveBrandingConfigurationById(brandingConfiguration.getId());
}
@Test
public void testBrandingServiceAvailability() {
assertEquals(brandingConfiguration.getId(), brandingConfigurationService.getActiveBrandingConfiguration().getId());
}
@Test
public void measureBrandingClientScriptSize() {
final Map<String, Object> brandingProperties = brandingConfigurationService.getBrandingConfigurationPropertiesForJspContext(Optional.empty());
final String script = (String) brandingProperties.get(BrandingConfigurationService.BrandingConfigurationProperty.SCRIPT_FOR_CLIENT_CONFIGURATION_CONTEXT_TO_DOCUMENT_JSP_PROPERTY_NAME.getPropertyName());
measurementCase.addMeasurement(new Measurement("Branding client script size in bytes", script.length()));
}
}
@@ -51,6 +51,13 @@ public class BrandingConfigurationServiceImpl implements BrandingConfigurationSe
brandingConfigurationsByIdAndLocale = new ConcurrentHashMap<>();
}
BrandingConfigurationServiceImpl(BundleContext bundleContext, ServiceTracker<BrandingConfiguration, BrandingConfiguration> brandingConfigurationTracker) {
// for testing only
this.bundleContext = bundleContext;
this.brandingConfigurationTracker = brandingConfigurationTracker;
this.brandingConfigurationsByIdAndLocale = new ConcurrentHashMap<>();
}
@Override
public boolean isBrandingActive() {
return activeBrandingConfiguration != null;
@@ -178,6 +178,7 @@ public class ClientConfiguration implements BrandingConfiguration {
public String getSailingAnalyticsReadMoreText(Optional<String> locale) {
return sailingAnalyticsReadMoreText;
}
public String getSailingAnalyticsSapSailing(Optional<String> locale) {
return sailingAnalyticsSapSailing;
}
+7
View File
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>
+28
View File
@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>com.sap.sse.testutils</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.ManifestBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.SchemaBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.pde.PluginNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
@@ -0,0 +1,2 @@
eclipse.preferences.version=1
encoding/<project>=UTF-8
@@ -0,0 +1,7 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.release=disabled
org.eclipse.jdt.core.compiler.source=1.8
@@ -0,0 +1,3 @@
eclipse.preferences.version=1
pluginProject.extensions=false
resolve.requirebundle=false
@@ -0,0 +1,10 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Testutils
Bundle-SymbolicName: com.sap.sse.testutils
Bundle-Version: 1.0.0.qualifier
Export-Package: com.sap.sse.testutils
Bundle-Vendor: SAP
Automatic-Module-Name: com.sap.sse.testutils
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Import-Package: com.sap.sse.common
@@ -0,0 +1,4 @@
source.. = src/
output.. = bin/
bin.includes = META-INF/,\
.
+12
View File
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>root</artifactId>
<groupId>com.sap.sailing</groupId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>com.sap.sse.testutils</artifactId>
<packaging>eclipse-plugin</packaging>
</project>
@@ -1,4 +1,4 @@
package com.sap.sailing.domain.test.measurements;
package com.sap.sse.testutils;
/**
* Create an instance of this class and {@link MeasurementCase#addMeasurement(Measurement) add it} to a
@@ -1,4 +1,4 @@
package com.sap.sailing.domain.test.measurements;
package com.sap.sse.testutils;
import java.util.LinkedHashSet;
import java.util.Set;
@@ -1,4 +1,4 @@
package com.sap.sailing.domain.test.measurements;
package com.sap.sse.testutils;
import java.io.BufferedWriter;
import java.io.File;
+2
View File
@@ -90,6 +90,7 @@
<module>org.hamcrest.core</module>
<module>com.sap.sse</module>
<module>com.sap.sse.test</module>
<module>com.sap.sse.testutils</module>
<module>com.sap.sse.aicore</module>
<module>com.sap.sse.aicore.test</module>
<module>com.sap.sse.landscape.common</module>
@@ -215,6 +216,7 @@
<module>com.sap.sailing.feature.runtime</module>
<module>com.sap.sailing.gwt.ui</module>
<module>com.sap.sse.branding</module>
<module>com.sap.sse.branding.test</module>
<module>com.sap.sse.branding.sap</module>
<module>com.sap.sailing.domain.test</module>
<module>com.sap.sse.replication.testsupport</module>