Как получить доступ к сгенерированному идентификатору последовательности хранилища данных в одном и том же сценарии использования - PullRequest
0 голосов
/ 18 мая 2018

Я работаю над сценарием сквозного тестирования, в котором мне нужна карта перфокарт пользовательской записи, использующая ключ, который является ссылкой на идентификатор meta_table в том же сценарии использования.

В то время как пользовательские данные хранятся в базе данных NoSQL, meta_table хранится в RDBMS и использует автоматически сгенерированный идентификатор, поэтому каждый раз, когда я запускаю только тестовый рабочий процесс meta_table для тех же самых случаев использования, генерируется совершенно новый идентификатор.

Вот мой рабочий процесс настройки данных:

pipeline:
  db1:
    register:
      action: dsunit:register
      datastore: db1
      config:
        driverName: mysql
        descriptor: '[username]:[password]@tcp(127.0.0.1:3306)/[dbname]?parseTime=true'
        credentials: $mysqlCredentials
        parameters:
          dbname: db1
    prepare:
      sequence:
        datastore: db1
        action: dsunit.sequence
        tables:
        - meta_table
        post:
        - seq = $Sequences
      data:
        action: nop
        init:
        - db1key = data.db1.setup
        - db1Setup = $AsTableRecords($db1key)
      setup:
        datastore: db1
        action: dsunit:prepare
        data: $db1Setup
  db2:
    register:
      action: dsunit:register
      datastore: db2
      config:
        driverName: aerospike
        descriptor: tcp([host]:3000)/[namespace]
        parameters:
          namespace: test
          host: 127.0.0.1
          port: 3000
    prepare:
      data:
        action: nop
        init:
        - db2key = data.db2.setup
        - db2Setup = $AsTableRecords($db2key)
      setup:
        datastore: db2
        action: dsunit:prepare
        data: $db2Setup

И вот мои файлы данных:

@db1_setup.json

[
  {
    "Table": "meta_table",
    "Value": {
      "id": "$seq.meta_table",
      "name": "Name 1",
      "type_id": 1
    },
    "PostIncrement": [
      "seq.meta_table"
    ],
    "Key": "${tagId}_meta_table"
  }
]



@db2_setup.json

[
  {
    "Table": "user",
    "Value": {
      "id": "$userID",
      "email": "user@abc.com",
      "perf": {
        "??meta_table.id here??": "$timestamp"
      }
    },
    "AutoGenerate": {
      "userID": "uuid.next"
    },
    "Key": "${tagId}_user"
  }
]

Я ищу правильное выражение для замены:

"??meta_table.id here??" 

для расширения до meta_table.id,

Я пробовал следующее, но ничего не получалось:

  • $ meta_table.id
  • $ {meta_table.id}

1 Ответ

0 голосов
/ 25 мая 2018

Вы хотите использовать

${dsunit.${tagId}_meta_table[0].id}

dsunit, так как это корень

{tagId} _meta_table, поскольку это ключ к вашей таблице

[0], так кактаблица может иметь несколько строк

...