Skip to content

Instantly share code, notes, and snippets.

@nareddyt
Created July 19, 2017 19:14
Show Gist options
  • Save nareddyt/c2f782b9f6eebd2e7cc15bcc558af255 to your computer and use it in GitHub Desktop.
Save nareddyt/c2f782b9f6eebd2e7cc15bcc558af255 to your computer and use it in GitHub Desktop.

Revisions

  1. nareddyt created this gist Jul 19, 2017.
    84 changes: 84 additions & 0 deletions example.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,84 @@
    'use strict'

    const autocannon = require('autocannon');
    let jsf = require('json-schema-faker');

    let schema = {
    type: 'object',
    properties: {
    id: -1,
    Info: {
    foo: 'bar',
    zap: 'zah',
    Address: {
    name: 'James',
    street: 'Spear Street',
    number: '125',
    city: 'San Fransisco'
    },
    Dog: {
    type: 'string',
    chance: {
    weighted: [
    ['poodle', 'Golden Retreiver', 'Black Lab'],
    [1, 1, 3]
    ]
    }
    }
    },
    John: {
    First: 'John',
    Last: {
    type: 'string',
    chance: {'last': {}}
    },
    Friends: {
    type: 'array',
    minItems: 2,
    maxItems: 5,
    items: {
    First: {
    type: 'string',
    chance: {'first': {}}
    },
    Last: {
    type: 'string',
    chance: {'last': {}}
    },
    Age: 52
    }
    }
    }
    },
    required: ['id', 'Info', 'John'],
    };

    const instance = autocannon({
    headers: {
    'Authorization': 'Bearer dotUZ92uyrjxGhbuy5VpUVqVUPdEZkx86wNlHfgE1LrTtOsxZvkcCqngaUzLgkJGio68KcWMGhtHFhXAd40V6B',
    'Content-Type': 'application/json'
    },
    url: 'https://ingestion-iog7rg5sc3lf.dev.sfdc-matrix.net/streams/teju_endpoint001/teju_ic001/event',
    body: JSON.stringify(schema),
    method: 'POST',
    pipelining: 2,
    duration: 300,
    overallRate: 50000,
    connections: 1000,
    // setupClient: setupClient
    }, (err, result) => handleResults(result));

    // results passed to the callback are the same as those emitted from the done events
    instance.on('done', handleResults)

    instance.on('response', handleResponse)

    function handleResponse(client, statusCode, resBytes, responseTime) {
    jsf.resolve(schema).then(function (sample) {
    client.setBody(JSON.stringify(sample));
    });
    }

    function handleResults(result) {
    console.log(result);
    }