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

activities.baselines.http-rest-timeseries.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 run driver=http yaml=http-rest-timeseries tags=phase:schema host=my_stargate_host stargate_host=my_stargate_host auth_token=$AUTH_TOKEN
description: |
  This workload emulates a time-series data model and access patterns.
  This should be identical to the cql variant except for:
  - We can't specify the write timestamp to make the write idempotent like we can with cql.
  - The `time` binding has to have a StringDateWrapper to get the exact format that the REST API needs; See https://github.com/stargate/stargate/issues/532.
  - We need to URLEncode the `data` binding because newlines can't be sent in REST calls.
  - Schema creation is cql of the lack of being able to define compaction strategy in the REST API.
  - There is no instrumentation with the http driver.
  - There is no async mode with the http driver.

scenarios:
  default:
    - run driver=cql 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();

  machine_id: Mod(<>); ToHashedUUID() -> java.util.UUID
  sensor_name: HashedLineToString('data/variable_words.txt')
  time: Mul(<>L); Div(<>L); StringDateWrapper("yyyy-MM-dd'T'hh:mm:ss'Z");
  sensor_value: Normal(0.0,5.0); Add(100.0) -> double
  station_id: Div(<>);Mod(<>); ToHashedUUID() -> java.util.UUID
  data: HashedFileExtractToString('data/lorem_ipsum_full.txt',800,1200); URLEncode();
blocks:
  - tags:
      phase: schema
    params:
      prepared: false
    statements:
     - create-keyspace: |
        create keyspace if not exists <>
        WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '<>'}
        AND durable_writes = true;
       tags:
         name: create-keyspace
     - create-table : |
        create table if not exists <>.<> (
        machine_id UUID,     // source machine
        sensor_name text,    // sensor name
        time timestamp,      // timestamp of collection
        sensor_value double, //
        station_id UUID,     // source location
        data text,
        PRIMARY KEY ((machine_id, sensor_name), time)
        ) WITH CLUSTERING ORDER BY (time DESC)
         AND compression = { 'sstable_compression' : '<>' }
         AND compaction = {
         'class': 'TimeWindowCompactionStrategy',
         'compaction_window_size': <>,
         'compaction_window_unit': 'MINUTES'
        };
       tags:
         name: create-table
     - truncate-table: |
         truncate table <>.<>;
       tags:
         name: truncate-table
  - tags:
      phase: schema-astra
    params:
      prepared: false
    statements:
     - create-table-astra : |
        create table if not exists <>.<> (
        machine_id UUID,     // source machine
        sensor_name text,    // sensor name
        time timestamp,      // timestamp of collection
        sensor_value double, //
        station_id UUID,     // source location
        data text,
        PRIMARY KEY ((machine_id, sensor_name), time)
        ) WITH CLUSTERING ORDER BY (time DESC);
       tags:
         name: create-table-astra
  - name: rampup
    tags:
      phase: rampup
    statements:
      - rampup-insert: POST <>://{weighted_hosts}:<><>/v2/keyspaces/<>/<>
        Accept: "application/json"
        X-Cassandra-Request-Id: "{request_id}"
        X-Cassandra-Token: "<>"
        Content-Type: "application/json"
        body: |
          {
            "machine_id": "{machine_id}",
            "sensor_name": "{sensor_name}",
            "time": "{time}",
            "sensor_value": "{sensor_value}",
            "station_id": "{station_id}",
            "data": "{data}"
          }
        tags:
          name: rampup-insert
  - name: main-read
    tags:
      phase: main
      type: read
    params:
      ratio: <>
    statements:
      - main-select: GET <>://{weighted_hosts}:<><>/v2/keyspaces/<>/<>?where=E[[{"machine_id":{"$eq":"{machine_id}"},"sensor_name":{"$eq":"{sensor_name}"}}]]&page-size=<>
        Accept: "application/json"
        X-Cassandra-Request-Id: "{request_id}"
        X-Cassandra-Token: "<>"
        Content-Type: "application/json"
        tags:
          name: main-select
  - name: main-write
    tags:
      phase: main
      type: write
    params:
      ratio: <>
    statements:
      - main-write: POST <>://{weighted_hosts}:<><>/v2/keyspaces/<>/<>
        Accept: "application/json"
        X-Cassandra-Request-Id: "{request_id}"
        X-Cassandra-Token: "<>"
        Content-Type: "application/json"
        body: |
          {
            "machine_id": "{machine_id}",
            "sensor_name": "{sensor_name}",
            "time": "{time}",
            "sensor_value": "{sensor_value}",
            "station_id": "{station_id}",
            "data": "{data}"
          }
        tags:
          name: main-write




© 2015 - 2025 Weber Informatics LLC | Privacy Policy