Appearance
Data sampler
Generates test data: for every message on Input it creates a new record of the output connection's type and fills its properties with (optionally seeded) random values. Use it to exercise a flow without a real data source, for example Timer → Data sampler → the flow under test.
Pins
| Pin | Kind | Types | Description |
|---|---|---|---|
| Input | input | any | Trigger. Each message produces one sample; the payload is ignored. |
| Output | output | the type of the outgoing connection | A new record of that type filled with random values. Set the type on the outgoing connection; it decides what is generated. |
Configuration
| Field | Type | Default | Description |
|---|---|---|---|
Seed | string | Seed text. The same seed and the same (sequential) input sequence produce the same data. Empty = different data every run. | |
NullProbability | integer (0-100) | 10 | Percent chance that a nullable property (reference types such as string, and Nullable<T>) is set to null. Properties marked required in the type are never null. |
NumberMin | number | 0 | Lower bound for numeric properties. |
NumberMax | number | 10000 | Upper bound for numeric properties. |
CollectionMinItems | integer (0-10000) | 0 | Minimum number of items in generated lists, arrays and dictionaries. |
CollectionMaxItems | integer (0-10000) | 5 | Maximum number of items in generated lists, arrays and dictionaries. |
Behaviour
- On start the generator for the output type is built once. If the output pin has no connection/type, nothing is generated and input messages are ignored.
- Generated values:
string: 8-32 random letters and digits;char: one letter or digit;bool: random.- numbers (
byte...ulong,float,double,decimal): betweenNumberMinandNumberMax, clamped to the range of the property type. DateTime,DateTimeOffset(UTC),DateOnly: between 1970-01-01 and 2100-01-01;TimeOnly,TimeSpan: within one day.Guid(version 4),IPAddress(IPv4), enums (one of the defined values),byte[].- lists, arrays and dictionaries (string or value-type keys) with
CollectionMinItems-CollectionMaxItemsitems; duplicate dictionary keys are dropped. - nested complex types are filled recursively up to 4 levels deep; deeper levels are
null. The root record is nevernull.
- Constraints declared on flow type properties are respected: minimum / maximum length for strings and
byte[], minimum / maximum value for numbers (the declared range wins overNumberMin/NumberMaxif they do not overlap). Regex validators are not honoured (a warning is shown). - Unsupported property types (
object, interfaces, abstract classes, streams, types without a parameterless constructor) are left at their default value with a warning. Read-only and system properties are skipped. - The metadata of the input message is passed through to the output.
Notes
NumberMinmust not be greater thanNumberMax,CollectionMinItemsnot greater thanCollectionMaxItems; otherwise the configuration is rejected. A numeric range that contains no valid value for a property type (for exampleNumberMax=-1for abyteproperty) makes the flow fail to start.- Reproducibility with
Seedholds only for sequential input; parallel callers (Fork, parallel ForEach) interleave the random sequence.
Example
json
{ "Seed": "test-1", "NullProbability": 0, "NumberMin": 1, "NumberMax": 100, "CollectionMinItems": 1, "CollectionMaxItems": 3 }Timer → Data sampler (output connection type MyFlow.Order) → Data mapper → ...