【问题标题】:How to use `migration.jar` in Corda Enterprise 4 to run tests?如何在 Corda Enterprise 4 中使用 `migration.jar` 运行测试?
【发布时间】:2020-07-27 13:53:31
【问题描述】:

在使用 Corda Enterprise 4.2 时,我们设法创建了一个 biz-generated-migration....jar 这似乎是一切的先决条件,甚至 使用 H2 数据库时。我们无法使用这个.jar 文件 在执行我们的测试时,即使引用这个全新的.jar 测试设置中的文件,如下所示:

  val BIZ_COMPONENT_VERSION="1.0.0"
  val DEFAULT_MOCK_NETWORK = MockNetwork(
          cordappPackages = listOf(
                  "package.subpkg-infra.cd.contract",
                  "package.subpkg-infra.contract",
                  "package.subpkg-infra.flow",
                  "package.subpkg-infra.cd.flow",
                  "package.subpkg-infra.cd.pend.flow",
                  "package.subpkg-infra.schema",
                  "package.subpkg-cordapp:biz-generated-migration:$BIZ_COMPONENT_VERSION",
                  "package.subpkg-cordapp:biz-component-base:$BIZ_COMPONENT_VERSION",
                  "package.subpkg-cordapp:biz-component-core:$BIZ_COMPONENT_VERSION",
                  "package.subpkg-cordapp:biz-component-interact:$BIZ_COMPONENT_VERSION"
          ),
          notarySpecs = listOf(MockNetworkNotarySpec(DUMMY_NOTARY_NAME)))

每次测试都失败,抱怨找不到迁移 架构。

我们如何使用这个生成的migration.jar 文件来完成 启用我们的测试?还是这种方法完全被滥用了?

【问题讨论】:

  • 您是否已将此 migration.jar 添加到 cordapps 目录?相反,问题可能是生成的migration.jar 保存在哪个文件夹中。同样,一旦您生成了迁移脚本,您是否触发了以下命令来生成 migration.jar.jar cvf /path/to/node/cordapps/biz-generated-migration.jar 迁移
  • 嗨,斯内哈。要点是,在执行测试阶段时,我们根本不需要 cordapps 文件夹。我们所有的努力都是以某种反复试验的方式进行的。在 3.X 企业版中,我们可以创建测试而无需使用 cordapps 文件夹。从 4.X 企业版开始,我们需要在项目资源中添加一些 .sql,由 DatabaseMigration 工具生成。它解决了测试阶段,但是随着这个文件被集成到生成的 cordapp 中,我们得到了 h2 模式。
  • 为了将生成的 cordapp 切换到任何其他后备数据库,我们需要从该 cordapp 中手动删除 .sql 文件,这将破坏其 SHA256 哈希并迫使我们始终清理生成的数据库在节点启动之前。
  • 您能否确认以下几点: 1. 您是否覆盖了 MappedSchema 类的“migrationResourse”=“migration/filename”。 2. 确保正确的 XML,所以这不是 H2 特定的。 3. 你也可以尝试使用下面的 network = MockNetwork(MockNetworkParameters(listOf( findCordapp("com.deqode.contracts"), findCordapp("com.deqode.flows"))) ) 而不是 cordappPackages。 4.能否确认您使用的是Windows
  • 你好,斯内哈。 1.我们实际上并没有改变这个设置; 2.所有的JPA映射都是通过注解完成的,我们没有使用任何xml映射; 4.我们同时使用Windows和Linux进行开发/编译/测试; 3. 一旦我们可以尝试您的建议,我们会尽快回复您。

标签: corda


【解决方案1】:

建议使用以下选项来解决此问题。

  1. 您是否覆盖了 MappedSchema 类的“migrationResourse”="migration/filename"。

  2. 确保使用正确的 XML,因此这不是 H2 特定的。

  3. 您也可以尝试使用下面的 network = MockNetwork(MockNetworkParameters(listOf( findCordapp("com.deqode.contracts"), findCordapp("com.deqode.flows"))) ) 而不是 cordappPackages。

  4. 您能否确认您是否使用的是 Windows

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-03
    • 1970-01-01
    • 2011-05-31
    • 2021-12-22
    • 1970-01-01
    • 2018-08-07
    • 1970-01-01
    • 2018-02-26
    相关资源
    最近更新 更多