// Path: src/main/java/com/presidentio/testdatagenerator/OneTimeGenerator.java
// public class OneTimeGenerator extends AbstractGenerator {
// 
//     private boolean async = false;
//     private Integer threadCount = Runtime.getRuntime().availableProcessors();
// 
//     @Override
//     public void generate(Context context, Schema schema) {
//         InitTask initTask = new InitTask(context, schema.getRoot());
//         initTask.setSinkFactory(getSinkFactory());
//         initTask.setValueProviderFactory(getValueProviderFactory());
//         initTask.setAsync(async);
//         if (async) {
//             ForkJoinPool forkJoinPool = new ForkJoinPool(threadCount);
//             forkJoinPool.invoke(initTask);
//         } else {
//             initTask.compute();
//         }
//     }
// 
//     public boolean isAsync() {
//         return async;
//     }
// 
//     public void setAsync(boolean async) {
//         this.async = async;
//     }
// 
//     public Integer getThreadCount() {
//         return threadCount;
//     }
// 
//     public void setThreadCount(Integer threadCount) {
//         this.threadCount = threadCount;
//     }
// }
// 
// Path: src/main/java/com/presidentio/testdatagenerator/model/Schema.java
// public class Schema {
// 
//     private List<Template> templates = new ArrayList<>();
// 
//     private List<String> root = new ArrayList<>();
// 
//     private List<Variable> variables = new ArrayList<>();
// 
//     private Output output;
// 
//     public List<Template> getTemplates() {
//         return templates;
//     }
// 
//     public void setTemplates(List<Template> templates) {
//         this.templates = templates;
//     }
// 
//     public List<String> getRoot() {
//         return root;
//     }
// 
//     public void setRoot(List<String> root) {
//         this.root = root;
//     }
// 
//     public List<Variable> getVariables() {
//         return variables;
//     }
// 
//     public void setVariables(List<Variable> variables) {
//         this.variables = variables;
//     }
// 
//     public Output getOutput() {
//         return output;
//     }
// 
//     public void setOutput(Output output) {
//         this.output = output;
//     }
// }
// 
// Path: src/main/java/com/presidentio/testdatagenerator/parser/SchemaBuilder.java
// public class SchemaBuilder {
// 
//     private List<Schema> schemas = new ArrayList<>();
// 
//     public SchemaBuilder fromResource(String resource) {
//         SchemaSerializer schemaSerializer = new JsonSchemaSerializer();
//         try {
//             Schema schema = schemaSerializer.deserialize(
//                     SchemaBuilder.class.getClassLoader().getResourceAsStream(resource));
//             schemas.add(schema);
//             return this;
//         } catch (IOException e) {
//             throw new IllegalStateException(e);
//         }
//     }
// 
//     public SchemaBuilder fromFile(String file) {
//         SchemaSerializer schemaSerializer = new JsonSchemaSerializer();
//         try {
//             Schema schema = schemaSerializer.deserialize(new FileInputStream(file));
//             schemas.add(schema);
//             return this;
//         } catch (IOException e) {
//             throw new IllegalStateException(e);
//         }
//     }
// 
//     public Schema build() {
//         Schema schema = null;
//         for (Schema schema1 : schemas) {
//             if (schema == null) {
//                 schema = schema1;
//             } else {
//                 schema = merge(schema, schema1);
//             }
//         }
//         if (schema != null) {
//             for (Template template : schema.getTemplates()) {
//                 if (template.getExtend() != null) {
//                     for (Template parentTemplate : schema.getTemplates()) {
//                         if (parentTemplate.getId().equals(template.getExtend())) {
//                             template.setExtendTemplate(parentTemplate);
//                             break;
//                         }
//                     }
//                 }
//             }
//         }
//         return schema;
//     }
// 
//     private Schema merge(Schema schema1, Schema schema2) {
//         schema1.getTemplates().addAll(schema2.getTemplates());
//         schema1.getRoot().addAll(schema2.getRoot());
//         schema1.getVariables().addAll(schema2.getVariables());
//         if (schema1.getOutput() != null && schema2.getOutput() != null) {
//             throw new IllegalArgumentException("Can't merge two outputs");
//         }
//         if (schema1.getOutput() == null) {
//             schema1.setOutput(schema2.getOutput());
//         }
//         return schema1;
//     }
// 
// }


import com.presidentio.testdatagenerator.OneTimeGenerator;
import com.presidentio.testdatagenerator.model.Schema;
import com.presidentio.testdatagenerator.parser.SchemaBuilder;
import org.openjdk.jmh.annotations.*;
import java.util.Arrays;
package com.presidentio.testdatagenerator.benchmark;



/**
 * Created by Vitalii_Gergel on 3/17/2015.
 */
public class EsFileBenchmark {

    @Fork(1)
    @Warmup(iterations = 3)
    @Benchmark
    public void measureEsDirect() {
        SchemaBuilder schemaBuilder = new SchemaBuilder();
// Path: src/main/java/com/presidentio/testdatagenerator/OneTimeGenerator.java
// public class OneTimeGenerator extends AbstractGenerator {
// 
//     private boolean async = false;
//     private Integer threadCount = Runtime.getRuntime().availableProcessors();
// 
//     @Override
//     public void generate(Context context, Schema schema) {
//         InitTask initTask = new InitTask(context, schema.getRoot());
//         initTask.setSinkFactory(getSinkFactory());
//         initTask.setValueProviderFactory(getValueProviderFactory());
//         initTask.setAsync(async);
//         if (async) {
//             ForkJoinPool forkJoinPool = new ForkJoinPool(threadCount);
//             forkJoinPool.invoke(initTask);
//         } else {
//             initTask.compute();
//         }
//     }
// 
//     public boolean isAsync() {
//         return async;
//     }
// 
//     public void setAsync(boolean async) {
//         this.async = async;
//     }
// 
//     public Integer getThreadCount() {
//         return threadCount;
//     }
// 
//     public void setThreadCount(Integer threadCount) {
//         this.threadCount = threadCount;
//     }
// }
// 
// Path: src/main/java/com/presidentio/testdatagenerator/model/Schema.java
// public class Schema {
// 
//     private List<Template> templates = new ArrayList<>();
// 
//     private List<String> root = new ArrayList<>();
// 
//     private List<Variable> variables = new ArrayList<>();
// 
//     private Output output;
// 
//     public List<Template> getTemplates() {
//         return templates;
//     }
// 
//     public void setTemplates(List<Template> templates) {
//         this.templates = templates;
//     }
// 
//     public List<String> getRoot() {
//         return root;
//     }
// 
//     public void setRoot(List<String> root) {
//         this.root = root;
//     }
// 
//     public List<Variable> getVariables() {
//         return variables;
//     }
// 
//     public void setVariables(List<Variable> variables) {
//         this.variables = variables;
//     }
// 
//     public Output getOutput() {
//         return output;
//     }
// 
//     public void setOutput(Output output) {
//         this.output = output;
//     }
// }
// 
// Path: src/main/java/com/presidentio/testdatagenerator/parser/SchemaBuilder.java
// public class SchemaBuilder {
// 
//     private List<Schema> schemas = new ArrayList<>();
// 
//     public SchemaBuilder fromResource(String resource) {
//         SchemaSerializer schemaSerializer = new JsonSchemaSerializer();
//         try {
//             Schema schema = schemaSerializer.deserialize(
//                     SchemaBuilder.class.getClassLoader().getResourceAsStream(resource));
//             schemas.add(schema);
//             return this;
//         } catch (IOException e) {
//             throw new IllegalStateException(e);
//         }
//     }
// 
//     public SchemaBuilder fromFile(String file) {
//         SchemaSerializer schemaSerializer = new JsonSchemaSerializer();
//         try {
//             Schema schema = schemaSerializer.deserialize(new FileInputStream(file));
//             schemas.add(schema);
//             return this;
//         } catch (IOException e) {
//             throw new IllegalStateException(e);
//         }
//     }
// 
//     public Schema build() {
//         Schema schema = null;
//         for (Schema schema1 : schemas) {
//             if (schema == null) {
//                 schema = schema1;
//             } else {
//                 schema = merge(schema, schema1);
//             }
//         }
//         if (schema != null) {
//             for (Template template : schema.getTemplates()) {
//                 if (template.getExtend() != null) {
//                     for (Template parentTemplate : schema.getTemplates()) {
//                         if (parentTemplate.getId().equals(template.getExtend())) {
//                             template.setExtendTemplate(parentTemplate);
//                             break;
//                         }
//                     }
//                 }
//             }
//         }
//         return schema;
//     }
// 
//     private Schema merge(Schema schema1, Schema schema2) {
//         schema1.getTemplates().addAll(schema2.getTemplates());
//         schema1.getRoot().addAll(schema2.getRoot());
//         schema1.getVariables().addAll(schema2.getVariables());
//         if (schema1.getOutput() != null && schema2.getOutput() != null) {
//             throw new IllegalArgumentException("Can't merge two outputs");
//         }
//         if (schema1.getOutput() == null) {
//             schema1.setOutput(schema2.getOutput());
//         }
//         return schema1;
//     }
// 
// }


// Path: src/main/java/com/presidentio/testdatagenerator/benchmark/EsFileBenchmark.java
import com.presidentio.testdatagenerator.OneTimeGenerator;
import com.presidentio.testdatagenerator.model.Schema;
import com.presidentio.testdatagenerator.parser.SchemaBuilder;
import org.openjdk.jmh.annotations.*;
import java.util.Arrays;

package com.presidentio.testdatagenerator.benchmark;



/**
 * Created by Vitalii_Gergel on 3/17/2015.
 */
public class EsFileBenchmark {

    @Fork(1)
    @Warmup(iterations = 3)
    @Benchmark
    public void measureEsDirect() {
        SchemaBuilder schemaBuilder = new SchemaBuilder();
        for (String resource : Arrays.asList("test-es-file-schema.json")) {