# 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
Provenance Repository:
  provenance rollover time: 1 min
  implementation: org.apache.nifi.provenance.MiNiFiPersistentProvenanceRepository
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: {}
