Corda Enterprise выдает «net.corda.core.node.services.VaultQueryException» для пользовательской схемы при выполнении тестовых случаев - PullRequest
0 голосов
/ 10 октября 2018

В соответствии с корпоративной документацией Corda мы добавили пользовательскую схему, как показано ниже:

fun setup() {
        network = MockNetwork(cordappPackages = listOf("com.xxx.service", "com.xxx.yyy", "com.xxx.zzzz", "com.xxx.kkk", "com.xxx.ttt", "com.xxx.yyyy.schema"))
}

или

fun setup() {
        network = MockNetwork(listOf("com.xxx.service", "com.xxx.yyy", "com.xxx.zzzz", "com.xxx.kkk", "com.xxx.ttt", "com.xxx.yyyy.schema"))
}

Во время выполнения тестов мы сталкиваемся со следующими проблемами:

[INFO] 12:11:35,213 [main] cordapp.CordappLoader.scanCordapp - Scanning CorDapp in file:/C:/Users/************/generated-test-cordapps/com.xxx.service-c7ab4ac5-fd21-40ae-86e6-18cc219b3179.jar
[INFO] 12:11:35,862 [main] hikari.HikariDataSource.<init> - HikariPool-1 - Started.
[WARN] 12:11:37,726 [main] persistence.SchemaMigration.doRunMigration - No migration defined for schema: com.xxx.yyy.schema.yyyy v1
[WARN] 12:11:37,733 [main] persistence.SchemaMigration.doRunMigration - No migration defined for schema: com.xxx.yyy.schema.xxxStateSchema v1
[INFO] 12:11:40,127 [main] persistence.SchemaMigration.doRunMigration - defaultSchemaName=PUBLIC



 net.corda.core.node.services.VaultQueryException: 
                    Please register the entity 'com.xxx.yyyy.schema.XXXXSchemaV1$XXXX'
                    See https://docs.corda.net/api-persistence.html#custom-schema-registration for more information

Требуется помощь.

1 Ответ

0 голосов
/ 16 октября 2018

В Corda Enterprise класс схемы должен иметь соответствующий скрипт миграции Liquibase с определением таблиц.Этот скрипт создаст таблицу поддержки.Ошибка

persistence.SchemaMigration.doRunMigration - No migration defined for schema: com.xxx.yyy.schema.yyyy v1* 

подсказывает это, но вы можете также неправильно указать имя файла скрипта.Если класс схемы не переопределяет поле igrationResource , тогда имя файла со схемой Liquibase должно соответствовать шаблону, верхний регистр - это переход на нижний регистр, предшествующий дефису, например, для класса

com.example.MyMappedSchema

ожидается, что соответствующий файл сценария будет

my-mapped-schema.changelog-master.XXX , где XXX может быть xml , sql , yml или json

Файл должен быть размещен в resources /igration исходная папка, которая будет скопирована в Cordapp JAR (или найдена для тестирования).Если ваш класс схемы имеет igrationResource , тогда сценарий Liquibase все еще должен находиться в папке resources /igration .

...