# apidApigeeSync Mock Server

## Overview

This Mock Server is used during unit tests of apidApigeeSync and has been designed to be run standalone
for stand-alone development use as well as performance and load testing. 

## Build

From the apidApigeeSync base dir: 
 
    glide install

From apidApigeeSync/cmd/mockServer:

    go build
    
You should now have an executable named "mockServer". 

## Execute

Execute with the -h flag to see flags: 

    ./mockServer -h
    Usage of ./mockServer:
      -addDevEach duration
            add a developer each duration [0s]
      -numDeps int
            number of deployments in snapshot [2] (default 2)
      -numDevs int
            number of developers in snapshot [2] (default 2)
      -reliable
            if false, server will often send 500 errors [true] (default true)
      -upDepEach duration
            update (replace) a deployment each duration [0s]
      -upDevEach duration
            update a developer each duration [0s]
         
Note: Nothing is required. 

The following are the values used by default by the Mock Server: 

    ReliableAPI: true
    ClusterID: "cluster"
    TokenKey: "key"
    TokenSecret: "secret"
    Scope: "scope"
    Organization: "org"
    Environment: "test"
    NumDevelopers: 2
    AddDeveloperEvery: 0
    UpdateDeveloperEvery: 0
    NumDeployments: 2
    ReplaceDeploymentEvery: 0
    Port: 9001

## Put it to use

Set your apid configuration to point toward the Mock Server and have correct cluster, key, and secret values. 

For example:

    api_port: 9000
    api_expvar_path: /expvar
    events_buffer_size: 5
    log_level: debug
    apigeesync_proxy_server_base: http://localhost:9001
    apigeesync_snapshot_server_base: http://localhost:9001
    apigeesync_change_server_base: http://localhost:9001
    apigeesync_consumer_key: key
    apigeesync_consumer_secret: secret
    apigeesync_cluster_id: cluster
    #data_trace_log_level: debug
    data_source: file:%s?_busy_timeout=20000

Now start apid. It should download the snapshot and changes as you configured for the Mock Server.

Try out a couple of APIs to verify:

    curl -i -d "action=verify&key=1&uriPath=/&scopeuuid=scope" :9000/verifiers/apikey
    
    curl -i :9000/deployments

## Notes

Under high loads (eg. a large snapshot), apid may get timeout errors from sqlite. 
If you see this, you can work around it by increasing the _busy_timeout by adding a config item to your apid config:

    data_source: file:%s?_busy_timeout=10000

The _busy_timeout value is in milliseconds, so the above value is 10s.
