1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-JanusGraph_old1

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
TESTING.md 15 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 11.03.2025 00:34 c4c6660

Проверка JanusGraph

Аудитория данного документа

Эта страница предназначена для разработчиков, знакомых с Java, JanusGraph и Maven, желающих получить информацию о том, как запустить набор тестов JanusGraph.

Обзор

JanusGraph выполняет все тесты с помощью JUnit. Чтобы скомпилировать, упаковать и запустить базовый набор тестов для JanusGraph, используйте стандартную команду mvn clean install.

JanusGraph имеет специализированные тесты, отключенные по умолчанию, которые предназначены для генерации базовых метрик производительности или стрессового тестирования его кэш-структур при давлении на память. В следующем разделе описано, как внутренне категоризируются тесты JanusGraph и какие опции Maven включают/отключают категории тестов.

Непрерывная интеграция

JanusGraph использует непрерывную интеграцию через GitHub Actions; см. панель управления для текущего состояния.

JUnit

Теги тестов JUnit

Все тесты JanusGraph написаны для JUnit. Тесты JUnit JanusGraph аннотированы следующими тегами JUnit:

Категория Maven свойство По умолчанию Примечание
MEMORY_TESTS test.skip.mem true (выключен) Тесты, предназначенные для создания давления на память
PERFORMANCE_TESTS test.skip.perf true (выключен) Тесты, написанные как простые тесты скорости
(Без тега) test.skip.default false (включен) Тесты без аннотаций тегов

Maven свойство выше — это булевое значение свойства pom.xml, которое пропускает связанный тег теста при положительном значении и выполняет связанный тег теста при отрицательном значении. Значения по умолчанию, заданные в pom.xml, могут быть переопределены на командной строке обычным образом Maven, например mvn -Dtest.skip.mem=false test. Примечание реализации. Шаблон названий свойств Maven "test.skip.x=boolean" является излишнеVerbose, что является грехом для командной строки. Более компактная альтернатива могла бы выглядеть как "test.x", где отрицательное значение логического значения используется для отрицания. Однако это усложняет конфигурацию файла pom.xml для плагина Surefire, поскольку исключает прямое использование тега конфигурации <skip> плагина Surefire, такого как <skip>${test.skip.perf}</skip>. Не кажется существовать простого способа отрицания логического значения или иначе сделать это удобным, хотя без использования профилей или кастомного плагина. Возможно, я чего-то недопонимаю. Также шаблон уже установлен свойством Surefire "maven.test.skip", хотя это имеет немного другую семантику интерпретации по сравнению со свойствами выше.### Отмечание тестов как непредсказуемыхЕсли тест следует пометить как непредсказуемый, сначала откройте проблему, где вы можете добавить информацию о непредсказуемом тесте, которая может быть полезна позже для других для понимания, почему тест отмечен как непредсказуемый и, возможно, для его исправления. После этого добавьте аннотацию к тесту и ссылку на созданную вами проблему:

// непредсказуемый тест: https://github.com/JanusGraph/janusgraph/issues/[NUMBER_ЗАДАЧИ]
@RepeatedIfExceptionsTest(repeats = OnClickListener.REPEATABILITY_UNLIMITED)
public void testFlakyFailsSometimes(){}

Отмечание тестов для использования определённых возможностей от StoreManager

Тест можно аннотировать таким образом, чтобы он выполнялся только при наличии определённой возможности у StoreManager.

@FeatureFlag(feature = JanusGraphFeature.UnorderedScan)
public void testRequiresUnorderedScanOnDatabase(){}
Флаг возможности Требуемая возможность
UnorderedScan StoreFeatures.hasUnorderedScan()
OrderedScan StoreFeatures.hasOrderedScan()
CellTtl StoreFeatures.hasCellTtl()

Выполнение одного теста через Maven

Стандартный вариант плагина maven-surefire-plugin применим для большинства тестов:

mvn test -Dtest=полное.или.частичное.имя.класса#имя.метода
```Однако категории MEMORY_TESTS и PERFORMANCE_TESTS по умолчанию отключены, независимо от того, какой `-Dtest=...` параметр указан. При выполнении одного MemoryTest или PerformanceTest следует указывать `-Dtest.mem=true` или `-Dtest.perf=true`, в зависимости от типа теста.Пример конкретного выполнения:

```bash
# Выполняет ни одного теста, так как категория MEMORY_TESTS по умолчанию отключена
mvn test -Dtest=BerkeleyJEGraphPerformanceMemoryTest
# Выполняет указанный тест
mvn test -Dtest=BerkeleyJEGraphPerformanceMemoryTest -Dtest.skip.mem=false

Выполнение тестов Solr

Примечание: Выполнение тестов Solr требует Docker.

Тесты Solr выполняются против внешнего экземпляра Solr. По умолчанию версия теста будет такой же, как и версия клиента Solr.

mvn clean install -pl janusgraph-solr

Дополнительные профили Maven определены для тестирования против основных версий поддерживаемых Solr. (На данный момент поддерживаются только Solr 8.)

mvn clean install -pl janusgraph-solr -Psolr8

Наконец, свойство solr.docker.version можно использовать для тестирования против произвольных версий Solr.

mvn clean install -pl janusgraph-solr -Dsolr.docker.version=8.0.0

Запуск тестов Elasticsearch

Примечание: Запуск тестов Elasticsearch требует Docker.

Тесты Elasticsearch выполняются против внешнего экземпляра Elasticsearch. По умолчанию версия теста будет такой же, как версия клиента Elasticsearch.

mvn clean install -pl janusgraph-es

Дополнительные профили Maven определены для тестирования против основных выпусков Elasticsearch, поддерживаемых по умолчанию.

mvn clean install -pl janusgraph-es -Pelasticsearch5
```Наконец, свойство `elasticsearch.docker.version` можно использовать для тестирования против произвольных версий Elasticsearch ≥ `5.0.0`. Это более сложное задание, однако, из-за различий между основными версиями в необходимых настройках сервера и названиях образов Docker. Примеры ниже иллюстрируют эти различия на основе основной версии Elasticsearch.```bash
mvn clean install -pl janusgraph-es -Delasticsearch.docker.version=5.3.2
mvn clean install -pl janusgraph-es -Delasticsearch.docker.image=elasticsearch
mvn clean install -pl janusgraph-es -Delasticsearch.docker.version=6.0.0 -Delasticsearch.docker.image=elasticsearch

Запуск тестов CQL

Примечание: Запуск тестов CQL требует Docker.

Тесты CQL выполняются с помощью testcontainers-java. Тесты CQL могут быть выполнены против Cassandra 3 с использованием профиля cassandra3, или против Scylla 3 с использованием профиля scylladb.

mvn clean install -pl janusgraph-cql -Pcassandra3-murmur
mvn clean install -pl janusgraph-cql -Pscylladb

Особые версии CassandraСистемные свойства для конфигурации выполнения тестов CQL:

Свойство Описание Значение по умолчанию
cassandra.docker.image Docker образ для запуска. cassandra
cassandra.docker.version Тэг docker образа для запуска 3.11.10
cassandra.docker.partitioner Устанавливает partitioner Cassandra. Поддерживаемые partitioner: murmur или byteordered. murmur
cassandra.docker.useSSL Активировать SSL Примечание: Это свойство в настоящее время работает только при установке partitioner на значение murmur. false
cassandra.docker.useDefaultConfigFromImage Если установлено значение true, используются дефолтные конфигурации из образа. Примечание: значения cassandra.docker.partitioner и cassandra.docker.useSSL игнорируются. false

Приведённые ниже примеры показывают возможные комбинации конфигураций.```bash mvn clean install -pl janusgraph-cql -Dcassandra.docker.version=2.2.14 mvn clean install -pl janusgraph-cql -Dcassandra.docker.image=cassandra mvn clean install -pl janusgraph-cql -Dcassandra.docker.image=cassandra -Dcassandra.docker.version=3.11.2


### Тесты TinkerPop

CQL-интерфейс проверяется с помощью тестов TinkerPop следующей командой.

**Примечание:** Профили не поддерживаются при выполнении тестов TinkerPop.
Если вы хотите использовать другую конфигурацию вместо стандартной, вы можете установить `cassandra.docker.image`, `cassandra.docker.version` или `cassandra.docker.partitioner`.

```bash
mvn clean install -Dtest.skip.tp=false -DskipTests=true -pl janusgraph-cql \
  -Dcassandra.docker.partitioner=murmur -Dcassandra.docker.version=2.2.14

Создание новых файлов конфигурации для новых версий Cassandra

Файл janusgraph-cql/src/test/resources/docker/docker-compose.yml можно использовать для генерации новых файлов конфигурации. Для этого вам потребуется запустить экземпляр Cassandra с помощью docker-compose up. После этого вы сможете извлечь конфигурацию, которая находится в следующем файле /etc/cassandra/cassandra.yaml.

Выполнение тестов HBase

Примечание: Выполнение тестов HBase требует наличия Docker.

Определённые версии HBase

Системные свойства для настройки выполнения тестов HBase:

Свойство Описание Значение по умолчанию
hbase.docker.version Версия HBase, используемая в образе контейнера Docker. 2.6.0
hbase.docker.uid UID, используемый внутри контейнера HBase. 1000
hbase.docker.gid GID, используемый внутри контейнера HBase. 1000

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/mirrors-JanusGraph_old1.git
git@api.gitlife.ru:oschina-mirror/mirrors-JanusGraph_old1.git
oschina-mirror
mirrors-JanusGraph_old1
mirrors-JanusGraph_old1
master