# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the \"License\"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an \"AS IS\" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

MiNiFi Config Version: 3
Flow Controller:
  name: StressTestFramework
  comment: ''
Core Properties:
  flow controller graceful shutdown period: 10 sec
  flow service write delay interval: 500 ms
  administrative yield duration: 30 sec
  bored yield duration: 10 millis
  max concurrent threads: 1
  variable registry properties: ''
FlowFile Repository:
  partitions: 256
  checkpoint interval: 2 mins
  always sync: false
  Swap:
    threshold: 20000
    in period: 5 sec
    in threads: 1
    out period: 5 sec
    out threads: 4
Content Repository:
  content claim max appendable size: 10 MB
  content claim max flow files: 100
  always sync: false
  content repository archive max retention period: 12 hours
  content repository archive max usage percentage: 50%
  content repository archive enabled: false
Provenance Repository:
  provenance rollover time: 1 min
  implementation: org.apache.nifi.provenance.MiNiFiPersistentProvenanceRepository
  provenance max storage time: 24 hours
  provenance max storage size: 1 GB
  provenance index shard size: 500 MB
  provenance buffer size: 10000
Component Status Repository:
  buffer size: 1440
  snapshot frequency: 1 min
Security Properties:
  keystore: ''
  keystore type: ''
  keystore password: ''
  key password: ''
  truststore: ''
  truststore type: ''
  truststore password: ''
  ssl protocol: ''
  Sensitive Props:
    key:
    algorithm: PBEWITHMD5AND256BITAES-CBC-OPENSSL
    provider: BC
Processors:
- name: GenerateFlowFile
  id: 16a47794-5391-4ad2-0000-000000000000
  class: org.apache.nifi.processors.standard.GenerateFlowFile
  max concurrent tasks: 1
  scheduling strategy: TIMER_DRIVEN
  scheduling period: 0 sec
  penalization period: 30 sec
  yield period: 1 sec
  run duration nanos: 0
  auto-terminated relationships list: []
  Properties:
    Batch Size: '100'
    Data Format: Binary
    File Size: 0 KB
    Unique FlowFiles: 'false'
- name: GenerateFlowFile
  id: 4ad21391-16a4-1794-0000-000000000000
  class: org.apache.nifi.processors.standard.GenerateFlowFile
  max concurrent tasks: 1
  scheduling strategy: TIMER_DRIVEN
  scheduling period: 0 sec
  penalization period: 30 sec
  yield period: 1 sec
  run duration nanos: 0
  auto-terminated relationships list: []
  Properties:
    Batch Size: '100'
    Data Format: Binary
    File Size: 0 KB
    Unique FlowFiles: 'false'
- name: GenerateFlowFile
  id: 53914ad2-7794-16a4-0000-000000000000
  class: org.apache.nifi.processors.standard.GenerateFlowFile
  max concurrent tasks: 1
  scheduling strategy: TIMER_DRIVEN
  scheduling period: 0 sec
  penalization period: 30 sec
  yield period: 1 sec
  run duration nanos: 0
  auto-terminated relationships list: []
  Properties:
    Batch Size: '100'
    Data Format: Binary
    File Size: 0 KB
    Unique FlowFiles: 'false'
- name: GenerateFlowFile
  id: 779416a4-4ad2-1391-0000-000000000000
  class: org.apache.nifi.processors.standard.GenerateFlowFile
  max concurrent tasks: 1
  scheduling strategy: TIMER_DRIVEN
  scheduling period: 0 sec
  penalization period: 30 sec
  yield period: 1 sec
  run duration nanos: 0
  auto-terminated relationships list: []
  Properties:
    Batch Size: '100'
    Data Format: Binary
    File Size: 0 KB
    Unique FlowFiles: 'false'
- name: RouteOnAttribute
  id: 397a4910-cc01-4c6b-0000-000000000000
  class: org.apache.nifi.processors.standard.RouteOnAttribute
  max concurrent tasks: 2
  scheduling strategy: TIMER_DRIVEN
  scheduling period: 0 sec
  penalization period: 30 sec
  yield period: 1 sec
  run duration nanos: 50000
  auto-terminated relationships list:
  - unmatched
  Properties:
    Routing Strategy: Route to Property name
- name: UpdateAttribute
  id: 92557c76-f251-45a4-0000-000000000000
  class: org.apache.nifi.processors.attributes.UpdateAttribute
  max concurrent tasks: 2
  scheduling strategy: TIMER_DRIVEN
  scheduling period: 0 sec
  penalization period: 30 sec
  yield period: 1 sec
  run duration nanos: 100000
  auto-terminated relationships list: []
  Properties:
    Delete Attributes Expression:
    property 1: value 1
    property 2: value 2 ${nextInt()}
Controller Services: []
Process Groups: []
Input Ports: []
Output Ports: []
Funnels:
- id: 4ad21392-16a4-1794-0000-000000000000
Connections:
- name: 4ad21392-16a4-1794-0000-000000000000//UpdateAttribute
  id: 4ad21397-16a4-1794-0000-000000000000
  source id: 4ad21392-16a4-1794-0000-000000000000
  source relationship names: []
  destination id: 92557c76-f251-45a4-0000-000000000000
  max work queue size: 10000
  max work queue data size: 1 GB
  flowfile expiration: 0 sec
  queue prioritizer class: ''
- name: GenerateFlowFile/success/4ad21392-16a4-1794-0000-000000000000
  id: 4ad21393-16a4-1794-0000-000000000000
  source id: 16a47794-5391-4ad2-0000-000000000000
  source relationship names:
  - success
  destination id: 4ad21392-16a4-1794-0000-000000000000
  max work queue size: 10000
  max work queue data size: 1 GB
  flowfile expiration: 0 sec
  queue prioritizer class: ''
- name: GenerateFlowFile/success/4ad21392-16a4-1794-0000-000000000000
  id: 4ad21394-16a4-1794-0000-000000000000
  source id: 53914ad2-7794-16a4-0000-000000000000
  source relationship names:
  - success
  destination id: 4ad21392-16a4-1794-0000-000000000000
  max work queue size: 10000
  max work queue data size: 1 GB
  flowfile expiration: 0 sec
  queue prioritizer class: ''
- name: GenerateFlowFile/success/4ad21392-16a4-1794-0000-000000000000
  id: 4ad21395-16a4-1794-0000-000000000000
  source id: 779416a4-4ad2-1391-0000-000000000000
  source relationship names:
  - success
  destination id: 4ad21392-16a4-1794-0000-000000000000
  max work queue size: 10000
  max work queue data size: 1 GB
  flowfile expiration: 0 sec
  queue prioritizer class: ''
- name: GenerateFlowFile/success/4ad21392-16a4-1794-0000-000000000000
  id: 4ad21396-16a4-1794-0000-000000000000
  source id: 4ad21391-16a4-1794-0000-000000000000
  source relationship names:
  - success
  destination id: 4ad21392-16a4-1794-0000-000000000000
  max work queue size: 10000
  max work queue data size: 1 GB
  flowfile expiration: 0 sec
  queue prioritizer class: ''
- name: UpdateAttribute/success/RouteOnAttribute
  id: 4c53556e-eb46-458c-0000-000000000000
  source id: 92557c76-f251-45a4-0000-000000000000
  source relationship names:
  - success
  destination id: 397a4910-cc01-4c6b-0000-000000000000
  max work queue size: 2000
  max work queue data size: 0 MB
  flowfile expiration: 0 sec
  queue prioritizer class: org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer
Remote Process Groups: []
NiFi Properties Overrides: {}
