如何在同一用例中访问交叉数据存储序列生成的ID

时间:2018-05-18 17:22:42

标签: end-to-end endly

我正在进行一个端到端的测试场景,我需要一个用户记录perf map使用一个键,它是同一个用例中meta_table id的引用。

当用户数据存储在NoSQL数据库中时,meta_table存储在RDBMS中并使用自动生成的id,因此每次我只运行一个测试工作流程 相同用例的meta_table正在生成全新的id。

以下是我的数据设置工作流程:

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 :(得分:0)

您想要使用

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

dsunit,因为那是根

{tagId} _meta_table,因为这是你表的关键

[0]因为该表可以有多行