All Downloads are FREE. Search and download functionalities are using the official Maven repository.

activities.graphql-cql-first.http-graphql-cql-tabular.yaml Maven / Gradle / Ivy

Go to download

A HTTP nosqlbench ActivityType (AT) driver module; This provides the ability to generate HTTP requests with nosqlbench

The newest version!
# nb -v http-graphql-cql-tabular rampup-cycles=1E6 main-cycles=1E9 stargate_host=my_stargate_host host=my_stargate_host auth_token=$AUTH_TOKEN
description: |
  This workload emulates a tabular workload with partitions, clusters, and data fields.
  This should be identical to the cql variant except for:
  - We need to URLEncode the `data` and `data_write` bindings because newlines can't be sent in REST calls.
  - There is no instrumentation with the http driver.
  - There is no async mode with the http driver.
  Note that stargate_port should reflect the port where GraphQL API is exposed (defaults to 8080).

scenarios:
  default:
    - run driver=http tags==phase:schema threads==1 cycles==UNDEF
    - run driver=http tags==phase:rampup cycles===TEMPLATE(rampup-cycles,10000000) threads=auto
    - run driver=http tags==phase:main cycles===TEMPLATE(main-cycles,10000000) threads=auto
bindings:
  # To enable an optional weighted set of hosts in place of a load balancer
  # Examples
  #   single host: stargate_host=host1
  #   multiple hosts: stargate_host=host1,host2,host3
  #   multiple weighted hosts: stargate_host=host1:3,host2:7
  weighted_hosts: WeightedStrings('<>')
  # http request id
  request_id: ToHashedUUID(); ToString();
  # for ramp-up and verify
  part_layout: Div(<>); ToString() -> String
  clust_layout: Mod(<>); ToString() -> String
  data: HashedFileExtractToString('data/lorem_ipsum_full.txt',50,150); URLEncode();
  # for read
  limit: Uniform(1,10) -> int
  part_read: Uniform(0,<>)->int; ToString() -> String
  clust_read: Add(1); Uniform(0,<>)->int; ToString() -> String
  # for write
  part_write: Hash(); Uniform(0,<>)->int; ToString() -> String
  clust_write: Hash(); Add(1); Uniform(0,<>)->int; ToString() -> String
  data_write: Hash(); HashedFileExtractToString('data/lorem_ipsum_full.txt',50,150); URLEncode();

blocks:
  - name: schema
    tags:
      phase: schema
    statements:
      - create-keyspace: POST <>://{weighted_hosts}:<><>/graphql-schema
        Accept: "application/json"
        X-Cassandra-Request-Id: "{request_id}"
        X-Cassandra-Token: "<>"
        Content-Type: "application/json"
        body: |
          {"query":"mutation {\n  createKeyspace(name:\"<>\", replicas: <>, ifNotExists: true)\n}"}
        tags:
          name: create-keyspace
      - create-table: POST <>://{weighted_hosts}:<><>/graphql-schema
        Accept: "application/json"
        X-Cassandra-Request-Id: "{request_id}"
        X-Cassandra-Token: "<>"
        Content-Type: "application/json"
        body: |
          {"query":"mutation {\n  createTable(\n    keyspaceName: \"<>\"\n    tableName: \"<>\"\n    partitionKeys: [{ name: \"part\", type: { basic: TEXT } }]\n    clusteringKeys: [{ name: \"clust\", type: { basic: TEXT } }]\n    values: [{ name: \"data\", type: { basic: TEXT } }]\n    ifNotExists: true\n  )\n}\n"}
        tags:
          name: create-table
  - tags:
      phase: schema-astra
    statements:
      - create-table-astra: POST <>://{weighted_hosts}:<><>/graphql-schema
        Accept: "application/json"
        X-Cassandra-Request-Id: "{request_id}"
        X-Cassandra-Token: "<>"
        Content-Type: "application/json"
        body: |
          {"query":"mutation {\n  createTable(\n    keyspaceName: \"<>\"\n    tableName: \"<>\"\n    partitionKeys: [{ name: \"part\", type: { basic: TEXT } }]\n    clusteringKeys: [{ name: \"clust\", type: { basic: TEXT } }]\n    values: [{ name: \"data\", type: { basic: TEXT } }]\n    ifNotExists: true\n  )\n}\n"}
        tags:
          name: create-table-astra
  - name: rampup
    tags:
      phase: rampup
    statements:
      - rampup-insert: POST <>://{weighted_hosts}:<><>/graphql/<>
        Accept: "application/json"
        X-Cassandra-Request-Id: "{request_id}"
        X-Cassandra-Token: "<>"
        Content-Type: "application/json"
        body: |
          {"query":"mutation {\n  insert<>( value: {part: \"{part_layout}\", clust: \"{clust_layout}\", data: \"{data}\"}) {value {part, clust, data}}}"}
        tags:
          name: rampup-insert
  - name: main-read
    tags:
      phase: main
      type: read
    params:
      ratio: 5
    statements:
      - main-select: POST <>://{weighted_hosts}:<><>/graphql/<>
        Accept: "application/json"
        X-Cassandra-Request-Id: "{request_id}"
        X-Cassandra-Token: "<>"
        Content-Type: "application/json"
        body: |
          {"query":"{<>(value: {part: \"{part_read}\"}, options: { pageSize: <> }) {values {part, clust, data}}}"}
        tags:
          name: main-select
  - name: main-write
    tags:
      phase: main
      type: write
    params:
      ratio: 5
    statements:
      - main-write: POST <>://{weighted_hosts}:<><>/graphql/<>
        Accept: "application/json"
        X-Cassandra-Request-Id: "{request_id}"
        X-Cassandra-Token: "<>"
        Content-Type: "application/json"
        body: |
          {"query":"mutation {\n  insert<>( value: {part: \"{part_write}\", clust: \"{clust_write}\", data: \"{data_write}\"}) {value {part, clust, data}}}"}
        tags:
          name: main-write




© 2015 - 2025 Weber Informatics LLC | Privacy Policy