| /* |
| * 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.lucene.benchmark.byTask.programmatic; |
| |
| import java.util.Properties; |
| import org.apache.lucene.benchmark.byTask.PerfRunData; |
| import org.apache.lucene.benchmark.byTask.tasks.AddDocTask; |
| import org.apache.lucene.benchmark.byTask.tasks.CloseIndexTask; |
| import org.apache.lucene.benchmark.byTask.tasks.CreateIndexTask; |
| import org.apache.lucene.benchmark.byTask.tasks.RepSumByNameTask; |
| import org.apache.lucene.benchmark.byTask.tasks.TaskSequence; |
| import org.apache.lucene.benchmark.byTask.utils.Config; |
| |
| /** Sample performance test written programmatically - no algorithm file is needed here. */ |
| public class Sample { |
| |
| public static void main(String[] args) throws Exception { |
| Properties p = initProps(); |
| Config conf = new Config(p); |
| PerfRunData runData = new PerfRunData(conf); |
| |
| // 1. top sequence |
| TaskSequence top = new TaskSequence(runData, null, null, false); // top level, not parallel |
| |
| // 2. task to create the index |
| CreateIndexTask create = new CreateIndexTask(runData); |
| top.addTask(create); |
| |
| // 3. task seq to add 500 docs (order matters - top to bottom - add seq to top, only then add to |
| // seq) |
| TaskSequence seq1 = new TaskSequence(runData, "AddDocs", top, false); |
| seq1.setRepetitions(500); |
| seq1.setNoChildReport(); |
| top.addTask(seq1); |
| |
| // 4. task to add the doc |
| AddDocTask addDoc = new AddDocTask(runData); |
| // addDoc.setParams("1200"); // doc size limit if supported |
| seq1.addTask(addDoc); // order matters 9see comment above) |
| |
| // 5. task to close the index |
| CloseIndexTask close = new CloseIndexTask(runData); |
| top.addTask(close); |
| |
| // task to report |
| RepSumByNameTask rep = new RepSumByNameTask(runData); |
| top.addTask(rep); |
| |
| // print algorithm |
| System.out.println(top.toString()); |
| |
| // execute |
| top.doLogic(); |
| } |
| |
| // Sample programmatic settings. Could also read from file. |
| private static Properties initProps() { |
| Properties p = new Properties(); |
| p.setProperty("task.max.depth.log", "3"); |
| p.setProperty("max.buffered", "buf:10:10:100:100:10:10:100:100"); |
| p.setProperty("doc.maker", "org.apache.lucene.benchmark.byTask.feeds.ReutersContentSource"); |
| p.setProperty("log.step", "2000"); |
| p.setProperty("doc.delete.step", "8"); |
| p.setProperty("analyzer", "org.apache.lucene.analysis.standard.StandardAnalyzer"); |
| p.setProperty("doc.term.vector", "false"); |
| p.setProperty("directory", "FSDirectory"); |
| p.setProperty("query.maker", "org.apache.lucene.benchmark.byTask.feeds.ReutersQueryMaker"); |
| p.setProperty("doc.stored", "true"); |
| p.setProperty("docs.dir", "reuters-out"); |
| p.setProperty("compound", "cmpnd:true:true:true:true:false:false:false:false"); |
| p.setProperty("doc.tokenized", "true"); |
| p.setProperty("merge.factor", "mrg:10:100:10:100:10:100:10:100"); |
| return p; |
| } |
| } |