Skip to content

v3.3 Configuration

Andrey Kurilov edited this page Mar 28, 2017 · 8 revisions

Overview

All the configuration values have the default values which may be seen in the file <MONGOOSE_DIR>/config/defaults.json

To configure the run an user should use the corresponding CLI arguments to override the default values. A CLI argument is parsed as a JSON path:

--item-data-size=100KB

is parsed to point to the following JSON node:

"item" : {
    "data" : {
        "size" : "100KB"
    }
}

Structure

Name Type Default Value Description
item-data-content-file Path null The source file for the content generation
item-data-content-seed String 7a42d9c483244167 The initial value for the random data generation
item-data-content-ringSize Fixed Size 4MB The size of the content source ring buffer
item-data-ranges-fixed Byte Range list null The fixed byte ranges to update or read (depends on the specified load type)
item-data-ranges-random Integer >= 0 or Byte Range 0 The count of the random ranges to update or read
item-data-ranges-threshold Size 0 The size threshold to enable multipart upload if supported by the configured storage driver
item-data-size Size 1MB The size of the data items to process. Doesn't have any effect if item.type=container
item-data-verify Flag false Specifies whether to verify the content while reading the data items or not. Doesn't have any effect if load-type != read
item-input-file Path null The source file for the items to process. If null the behavior depends on the load type.
item-input-path String null The source path which may be used as items input if not "item-input-file" is specified. Also used for the copy mode as the path containing the items to be copied into the output path.
item-naming-type Enum random Specifies the new items naming order. Has effect only in the case of create load. "asc": the new items are named in the ascending order, "desc": the new items are named in the descending order, "random": the new items are named randomly
item-naming-prefix String null The name prefix for the processed items. A correct value is neccessary to pass the content verification in the case of read load.
item-naming-radix Integer >= 2 36 The radix for the item ids. May be in the range of 2..36. A correct value is neccessary to pass the content verification in the case of read load.
item-naming-offset Integer >= 0 0 The start id for the new item ids
item-naming-length Integer > 0 13 The name length for the new items. Has effect only in the case of create (if not partial) load
item-output-delay Integer >= 0 0 The minimum delay between the subsequent I/O operations for each item (chain load). 0 means no delay.
item-output-file Path null Specified the target file for the items processed successfully. If null the items info is not saved.
item-output-path String null The target path. Null (default) value leads to path name generation and pre-creation.
item-type Enum data The type of the item to use, the possible values are: "data", "container". In case of filesystem "data" means files and "container" means directories
load-circular Flag false Specifies whether to process the items multiple times (again and again) or not
load-generator-shuffle Flag false Defines whether to shuffle or not the items got from the item input, what should make the order of the I/O tasks execution randomized
load-queue-size Integer >= 1 1000000 The maximum number of the unique items processed in the case of the circular load
load-type Enum create The operation to process the items, may be "create", "update", "read" or "delete"
storage-auth-file Path null The path to a credentials list file, containing the lines of comma-separated user ids and secret keys
storage-auth-uid String null The authentication identifier
storage-auth-secret String null The authentication secret
storage-auth-token String null S3: no effect, Atmos: subtenant, Swift: token
storage-driver-addrs List of strings 127.0.0.1 Distributed mode: the list of the storage drivers IPs or hostnames, may include port numbers to override the default port number value
storage-driver-concurrency Integer > 0 1 The concurrency level. In case of filesystem the number of open files at any moment. In case of HTTP the number of the active connections at any moment.
storage-driver-impl List The list of the registered storage driver implementations
storage-driver-io-workers Integer 0 The desired count of I/O threads per storage driver. Value < 1 means that the count will be equal to the CPU cores count.
storage-driver-port Integer > 0 1099 Distributed mode: the common port number to start the storage driver services
storage-driver-remote Flag false Distributed mode: the flag to enable using remote storage drivers
storage-driver-type String s3 The identifier pointing to the one of the registered storage driver implementations to use
storage-mock-capacity Integer > 0 1000000 WS mock: the maximum count of the items to be stored in the storage mock which are may be to read back
storage-mock-container-capacity Integer > 0 1000000 WS mock: the maximum count of the items to be stored in the container which are may be to read back
storage-mock-countLimit Integer > 0 1000000 WS mock: the maximum count of the containers to be stored in the storage mock
storage-mock-node Flag false Start the storage mock cluster node with local network auto discovery
storage-net-timeoutMilliSec Integer >= 0 1000000 The socket timeout
storage-net-reuseAddr Flag true
storage-net-keepAlive Flag true
storage-net-tcpNoDelay Flag true
storage-net-linger Integer >= 0 0
storage-net-bindBacklogSize Integer >= 0 0
storage-net-interestOpQueued Flag false
storage-net-selectInterval Integer > 0 100
storage-net-ssl Flag false The flag to enable the load through SSL/TLS. Currently only HTTPS implementation is available. Have no effect if configured storage type is filesystem.
storage-net-http-fsAccess Flag false Specifies whether filesystem access is enabled or not in the case of S3 or Atmos API
storage-net-http-headers Map { "Connection" : "keep-alive", "User-Agent" : "mongoose/3.0.0" } Custom HTTP headers section. An user may place here a key-value pair which will be used as HTTP header.
storage-net-http-namespace String null The HTTP storage namespace. WARNING: the default value (null) will not work in the case of Swift API
storage-net-http-versioning Flag false Specifies whether the versioning storage feature is used or not
storage-net-node-addrs List of strings 127.0.0.1 The list of the storage node IPs or hostnames to use for HTTP load. May include port numbers.
storage-net-node-port Integer > 0 9020 The common port number to access the storage nodes, may be overriden adding the port number to the storage-driver-addrs, for example: "127.0.0.1:9020,127.0.0.1:9022,..."
test-scenario-file Path null The default JSON scenario to run, null means invoking the default.json scenario bundled into the distribution
test-step-limit-count Integer >= 0 0 The maximum number of the items to process for any load step. 0 means infinite
test-step-limit-rate Float >= 0 0 The maximum number of the items to process per second (throughput limit). 0 means no rate limit.
test-step-limit-size Fixed size >= 0 0 The maximum size of the data items to process. 0 means no size limit.
test-step-limit-time Time >= 0 0 The maximum time to perform a load step. 0 means no time limit
test-step-metrics-period Time 10s The time period for the load step's metrics console output. 0 means to not to output the metrics at all
test-step-metrics-threshold 0 <= Float <= 1 0 The concurrency threshold to enable intermediate statistics calculation
test-step-name String null The load step name for this launch. Generated automatically if not specified (null). Specifies also the log directory path: log/<JOB_NAME>/
test-step-precondition Flag false Enabling precondition mode disables the metrics output for a load step to the perf*.csv log files
version String next The Mongoose version

Special Types

Time

The configuration parameters supporting the time type:

  • test-step-limit-time
  • test-step-metrics-period
Value Effect
0 Infinite/not set
-1 Invalid value
1 1 second
"1s" 1 second
"2m" 2 minutes
"3h" 3 hours
"4d" 4 days
"5w" Invalid value
"6M" Invalid value
"7y" Invalid value

Size

The configuration parameters supporting the time type:

  • item-data-content-ringSize
  • item-data-size
  • test-step-limit-size
Value Effect
-1 Invalid Value
0 0 bytes (Infinity in case of load.limit.size)
1 1 bytes
1024 1024 bytes or 1KB
"0B" 0 bytes (Infinity in case of load.limit.size)
"1024B" 1024 bytes or 1KB
"1KB" 1024 bytes or 1KB
"2MB" 2MB
"6EB" 6EB (exobytes)
"7YB" Invalid Value

Parametrization

The configuration value is usually fixed. However, it's possible to define a dynamic value changing in the runtime. Each next value may be taken in a synchronous either asynchronous way.

Synchronous Supply

The next value is recalculated for each take attempt. The synchronous input is useful if the recalculation complexity is low either different value on each take attempt is strictly required.

Asynchronous Supply

The next value is being recalculated in the background continuously. Taking the value frequently is expected to yield a sequence of the same value. The asynchronous input is most useful when the recalculation cost is relatively high and the values consumer doesn't require different value each time.

Syntax

The common pattern syntax (excluding path format pattern) has the following general layout:

%<TYPE_LETTER>(<SEED>){<FORMAT>}[<RANGE>]

Where:

  • TYPE_LETTER defines the value type, may be "d", "f", "D" ("p" has a bit different syntax, see below)
  • SEED is optional, the initial value for the random number generator used to obtain each next value
  • FORMAT is optional, the pattern to convert the value to a string
  • RANGE is optional, describes the value range as <FROM>-<TO> (TO value is exclusive)

For the number values (configured with "d" or "f") the format may be described using the Java's DecimalFormat syntax: https://docs.oracle.com/javase/8/docs/api/java/text/DecimalFormat.html

Available Formats

Integer

Generates random 64-bit signed integer value in the specified range (optional).

Examples:

  • %d: any integer value from java.lang.Long.MIN_VALUE to java.lang.Long.MAX_VALUE
  • %d{##########}: as above, but with padding with leading zeroes to make the result string length = 10
  • %d[0-100]: any integer value from 0 to 99
  • %d{###}[0-100]: any integer value from 00 to 99
  • %d(123456789){###}[0-100]: any integer value from 00 to 99, internal PRNG will be initialized using the specified seed

Floating Point Number

Examples:

  • %f: any floating point value from 0 to 1 (exclusive)
  • %f[1.23-4.56]: any floating point value from 1.23 (inclusive) to 4.56 (exclusive)
  • %f{#.#######}: any floating point value formatted using the specified format (3.1415926 for example)
  • %f{#.##}[2.71828182846-3.1415926]: any floating point value from e to pi (exclusive)

Date

Generates random date in the specified format (mandatory) in the specified range (optional).

Examples:

  • %D: any date time between Unix zero date time and now
  • %D{yyyy-MM-dd'T'HH:mm:ss}[2013/10/30-2017/02/09]: any date time between the specified dates
  • %D{yyyy-MM-dd'T'HH:mm:ss}: any date time between Unix zero date time and now in the specified format
  • %D{yyyy-MM-dd'T'HH:mm:ss}[2013/10/30-2017/02/09]: any date time between the specified dates in the specified format

Note:

  • Range boundary dates should be in yyyy/MM/dd or yyyy/MM/dd'T'HH:mm:ss format

Path

Generates the path hierarchy elements using specified hierarchy "width" and "depth".

The synchronous implementation is only available.

Also, has different layout:

%p{<WIDTH>;<DEPTH>} or %p(<SEED>){<WIDTH>;<DEPTH>}

List Of Parameterizable Configuration Parameters

  • item-output-path
  • storage-auth-uid
  • storage-net-http-headers-*

Aliasing

General

Alias Target Parameter Default Value
load-threads storage-driver-concurrency *
run-id test-step-name *
noop load-type noop
create load-type create
read load-type read
update load-type update
delete load-type delete

Atmos

Alias Target Parameter Default Value
atmos-subtenant storage-auth-token *

S3

Alias Target Parameter Default Value
s3-input-bucket item-input-path *
s3-output-bucket item-output-path *

Swift

Alias Target Parameter Default Value
swift-input-container item-input-path *
swift-input-container item-output-path *
Clone this wiki locally