func run()

in dns/jsonify/main.go [79:132]


func run() error {
	var benchmarkDirPath, jsonDirPath, benchmarkName string
	flag.CommandLine = flag.NewFlagSet(os.Args[0], flag.ExitOnError)
	flag.StringVar(&benchmarkDirPath, "benchmarkDirPath", ".", "benchmark results directory path")
	flag.StringVar(&jsonDirPath, "jsonDirPath", ".", "json results directory path")
	flag.StringVar(&benchmarkName, "benchmarkName", ".", "benchmark name")

	if err := flag.CommandLine.Parse(os.Args[1:]); err != nil {
		return fmt.Errorf("flag parse failed: %v", err)
	}

	glog.Infof("benchmarkDirPath: %v\n", benchmarkDirPath)
	glog.Infof("jsonDirPath: %v\n", jsonDirPath)
	glog.Infof("benchmarkName: %v\n", benchmarkName)

	latency := perftype.PerfData{Version: "v1"}
	latencyPerc := perftype.PerfData{Version: "v1"}
	queries := perftype.PerfData{Version: "v1"}
	qps := perftype.PerfData{Version: "v1"}

	fileList, err := getFileList(benchmarkDirPath)
	if err != nil {
		return fmt.Errorf("listing files error: %v", err)
	}

	for _, file := range fileList {
		glog.Infof("processing %s\n", file)
		result, err := readBenchmarkResult(filepath.Join(benchmarkDirPath, file))
		if err != nil {
			return err
		}
		labels := createLabels(&result.Params)
		latency.DataItems = appendLatency(latency.DataItems, labels, result)
		latencyPerc.DataItems = appendLatencyPerc(latencyPerc.DataItems, labels, result)
		queries.DataItems = appendQueries(queries.DataItems, labels, result)
		qps.DataItems = appendQPS(qps.DataItems, labels, result)
	}

	timeString := time.Now().Format(time.RFC3339)
	if err = saveMetric(&latency, filepath.Join(jsonDirPath, "Latency_"+benchmarkName+"_"+timeString+".json")); err != nil {
		return err
	}
	if err = saveMetric(&latencyPerc, filepath.Join(jsonDirPath, "LatencyPerc_"+benchmarkName+"_"+timeString+".json")); err != nil {
		return err
	}
	if err = saveMetric(&queries, filepath.Join(jsonDirPath, "Queries_"+benchmarkName+"_"+timeString+".json")); err != nil {
		return err
	}
	if err = saveMetric(&qps, filepath.Join(jsonDirPath, "QPS_"+benchmarkName+"_"+timeString+".json")); err != nil {
		return err
	}

	return nil
}