[mongodb] Fix MongoDBPersistenceServiceTest fails on CPU without AVX support (#17049)

Fixes #17046

Signed-off-by: René Ulbricht <rene_ulbricht@outlook.com>
This commit is contained in:
ulbi 2024-07-14 10:01:35 +02:00 committed by GitHub
parent 35add30e0c
commit ffee091c78
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 24 additions and 3 deletions

View File

@ -15,6 +15,9 @@ package org.openhab.persistence.mongodb.internal;
import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.ZonedDateTime; import java.time.ZonedDateTime;
import java.util.ArrayList; import java.util.ArrayList;
@ -224,6 +227,26 @@ public class DataCreationHelper {
new QuantityType<>("25.00 °F")))); new QuantityType<>("25.00 °F"))));
} }
/**
* Checks if the current system supports AVX (Advanced Vector Extensions).
* AVX is a set of CPU instructions that can greatly improve performance for certain operations.
*
* @return true if AVX is supported, false otherwise
*/
public static boolean isAVXSupported() {
try (BufferedReader reader = new BufferedReader(new FileReader("/proc/cpuinfo"))) {
String line;
while ((line = reader.readLine()) != null) {
if (line.toLowerCase().contains("avx")) {
return true;
}
}
} catch (IOException e) {
return false;
}
return false;
}
/** /**
* Provides a stream of arguments to be used for parameterized tests. * Provides a stream of arguments to be used for parameterized tests.
* *
@ -234,7 +257,7 @@ public class DataCreationHelper {
* @return A stream of Arguments, each containing a DatabaseTestContainer instance. * @return A stream of Arguments, each containing a DatabaseTestContainer instance.
*/ */
public static Stream<Arguments> provideDatabaseBackends() { public static Stream<Arguments> provideDatabaseBackends() {
if (DockerClientFactory.instance().isDockerAvailable()) { if (DockerClientFactory.instance().isDockerAvailable() && isAVXSupported()) {
// If Docker is available, create a stream of Arguments with all backends // If Docker is available, create a stream of Arguments with all backends
return Stream.of( return Stream.of(
// Create a DatabaseTestContainer with a MemoryBackend // Create a DatabaseTestContainer with a MemoryBackend

View File

@ -29,7 +29,6 @@ import java.util.stream.Collectors;
import org.bson.Document; import org.bson.Document;
import org.bson.types.ObjectId; import org.bson.types.ObjectId;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.MethodSource; import org.junit.jupiter.params.provider.MethodSource;
@ -63,7 +62,6 @@ import de.bwaldvogel.mongo.backend.memory.MemoryBackend;
* *
* @author René Ulbricht - Initial contribution * @author René Ulbricht - Initial contribution
*/ */
@Disabled("Fails on CPUs without AVX support, see: https://github.com/openhab/openhab-addons/issues/17046")
public class MongoDBPersistenceServiceTest { public class MongoDBPersistenceServiceTest {
/** /**