Эта страница предназначена для разработчиков, знакомых с Java, JanusGraph и Maven, желающих получить информацию о том, как запустить набор тестов JanusGraph.
JanusGraph выполняет все тесты с помощью JUnit. Чтобы скомпилировать, упаковать и запустить базовый набор тестов для JanusGraph, используйте стандартную команду mvn clean install
.
JanusGraph имеет специализированные тесты, отключенные по умолчанию, которые предназначены для генерации базовых метрик производительности или стрессового тестирования его кэш-структур при давлении на память. В следующем разделе описано, как внутренне категоризируются тесты JanusGraph и какие опции Maven включают/отключают категории тестов.
JanusGraph использует непрерывную интеграцию через GitHub Actions; см. панель управления для текущего состояния.
Все тесты 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.
@FeatureFlag(feature = JanusGraphFeature.UnorderedScan)
public void testRequiresUnorderedScanOnDatabase(){}
Флаг возможности | Требуемая возможность |
---|---|
UnorderedScan | StoreFeatures.hasUnorderedScan() |
OrderedScan | StoreFeatures.hasOrderedScan() |
CellTtl | StoreFeatures.hasCellTtl() |
Стандартный вариант плагина 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 требует 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 требует 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 требует 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.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
Файл janusgraph-cql/src/test/resources/docker/docker-compose.yml
можно использовать для генерации новых файлов конфигурации.
Для этого вам потребуется запустить экземпляр Cassandra с помощью docker-compose up
.
После этого вы сможете извлечь конфигурацию, которая находится в следующем файле /etc/cassandra/cassandra.yaml
.
Примечание: Выполнение тестов HBase требует наличия Docker.
Системные свойства для настройки выполнения тестов HBase:
Свойство | Описание | Значение по умолчанию |
---|---|---|
hbase.docker.version |
Версия HBase, используемая в образе контейнера Docker. | 2.6.0 |
hbase.docker.uid |
UID, используемый внутри контейнера HBase. | 1000 |
hbase.docker.gid |
GID, используемый внутри контейнера HBase. | 1000 |
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )