# 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-8d7b-be7ef83b8fee
  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:
    File Size: 0 KB
    Unique FlowFiles:
- name: RouteOnAttribute
  id: 397a4910-cc01-4c6b-88c9-e99b17b094e8
  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:
- name: UpdateAttribute
  id: 92557c76-f251-45a4-96a4-79057b24e832
  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: []
Connections:
- name: GenerateFlowFile/success/UpdateAttribute
  id: 0e6873cc-cb9d-4e98-92aa-a3319f4c1b02
  source id: 16a47794-5391-4ad2-8d7b-be7ef83b8fee
  source relationship names:
  - success
  destination id: 92557c76-f251-45a4-96a4-79057b24e832
  max work queue size: 200
  max work queue data size: 0 MB
  flowfile expiration: 0 sec
  queue prioritizer class: org.apache.nifi.prioritizer.FirstInFirstOutPrioritizer
- name: UpdateAttribute/success/RouteOnAttribute
  id: 4c53556e-eb46-458c-9e98-8329a8cf70fd
  source id: 92557c76-f251-45a4-96a4-79057b24e832
  source relationship names:
  - success
  destination id: 397a4910-cc01-4c6b-88c9-e99b17b094e8
  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: {}
