Github user MikeThomsen commented on a diff in the pull request:

    https://github.com/apache/nifi/pull/2813#discussion_r199637841
  
    --- Diff: 
nifi-nar-bundles/nifi-data-generation-bundle/nifi-data-generation-processors/src/main/java/org/apache/nifi/processors/generation/GenerateRecord.java
 ---
    @@ -0,0 +1,209 @@
    +/*
    + * 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.
    + */
    +
    +package org.apache.nifi.processors.generation;
    +
    +import io.confluent.avro.random.generator.Generator;
    +import org.apache.avro.Schema;
    +import org.apache.avro.generic.GenericData;
    +import org.apache.nifi.annotation.behavior.InputRequirement;
    +import org.apache.nifi.annotation.lifecycle.OnScheduled;
    +import org.apache.nifi.avro.AvroTypeUtil;
    +import org.apache.nifi.components.PropertyDescriptor;
    +import org.apache.nifi.components.Validator;
    +import org.apache.nifi.expression.ExpressionLanguageScope;
    +import org.apache.nifi.flowfile.FlowFile;
    +import org.apache.nifi.processor.AbstractProcessor;
    +import org.apache.nifi.processor.ProcessContext;
    +import org.apache.nifi.processor.ProcessSession;
    +import org.apache.nifi.processor.Relationship;
    +import org.apache.nifi.processor.exception.ProcessException;
    +import org.apache.nifi.processor.util.StandardValidators;
    +import org.apache.nifi.schema.access.SchemaNotFoundException;
    +import org.apache.nifi.serialization.RecordSetWriter;
    +import org.apache.nifi.serialization.RecordSetWriterFactory;
    +import org.apache.nifi.serialization.record.MapRecord;
    +import org.apache.nifi.serialization.record.Record;
    +import org.apache.nifi.serialization.record.RecordSchema;
    +
    +import java.util.ArrayList;
    +import java.util.Collections;
    +import java.util.HashSet;
    +import java.util.List;
    +import java.util.Map;
    +import java.util.Random;
    +import java.util.Set;
    +
    +@InputRequirement(InputRequirement.Requirement.INPUT_ALLOWED)
    +public class GenerateRecord extends AbstractProcessor {
    +    static final PropertyDescriptor WRITER = new 
PropertyDescriptor.Builder()
    +        .name("generate-record-writer")
    +        .displayName("Record Writer")
    +        .identifiesControllerService(RecordSetWriterFactory.class)
    +        .description("The record writer to use for serializing generated 
records.")
    +        .required(true)
    +        .build();
    +
    +    static final PropertyDescriptor SCHEMA = new 
PropertyDescriptor.Builder()
    --- End diff --
    
    I'll be honest, I didn't deep dive into too many options. So I didn't know 
about avro-mocker, for instance. Might be worth checking out.
    
    I did check out JFairy and Faker (Java version), and neither of them have 
particularly good performance. I am kinda thinking about working on that 
library from Confluent to let it integrate with them optionally.
    
    FWIW, you can use the regexes to generate ip strings, etc. AFAIK, this 
would do IPv4 IPs:
    
    `[\d]{,3}\.[\d]{,3}\.[\d]{,3}\.[\d]{,3}`


---

Reply via email to