func ProcessSingleTest()

in compare/src/scraper.go [39:104]


func ProcessSingleTest(scanner *bufio.Scanner, buildNumber int) (map[string]*e2e.LogsSizeDataSummary, map[string]*e2e.ResourceUsageSummary, map[string]*e2e.MetricsForE2E) {
	buff := &bytes.Buffer{}
	logSummary := make(map[string]*e2e.LogsSizeDataSummary)
	resourceSummary := make(map[string]*e2e.ResourceUsageSummary)
	metricsSummary := make(map[string]*e2e.MetricsForE2E)
	state := defaultState
	oldTestSeparator := "[It] [Performance] "
	testSeparator := "[It] [Feature:Performance] "
	testName := ""
	for scanner.Scan() {
		line := scanner.Text()
		if state == defaultState {
			separator := ""
			if strings.Contains(line, testSeparator) {
				separator = testSeparator
			} else if strings.Contains(line, oldTestSeparator) {
				separator = oldTestSeparator
			}
			if separator != "" {
				testName = strings.Trim(strings.Split(line, separator)[1], " ")
				buff.Reset()
			}
		}
		if strings.Contains(line, "Finished") {
			if state == readingLogs {
				logSummary[testName] = &e2e.LogsSizeDataSummary{}
				state = defaultState
				if err := json.Unmarshal(buff.Bytes(), logSummary[testName]); err != nil {
					glog.V(0).Infof("error parsing LogsSizeDataSummary JSON in build %d: %v %s\n", buildNumber, err, buff.String())
					continue
				}
			}
			if state == readingResources {
				resourceSummary[testName] = &e2e.ResourceUsageSummary{}
				state = defaultState
				if err := json.Unmarshal(buff.Bytes(), resourceSummary[testName]); err != nil {
					glog.V(0).Infof("error parsing ResourceUsageSummary JSON in build %d: %v %s\n", buildNumber, err, buff.String())
					continue
				}
			}
			if state == readingMetrics {
				metricsSummary[testName] = &e2e.MetricsForE2E{}
				state = defaultState
				if err := json.Unmarshal(buff.Bytes(), metricsSummary[testName]); err != nil {
					glog.V(0).Infof("error parsing MetricsForE2E JSON in build %d: %v %s\n", buildNumber, err, buff.String())
					continue
				}
			}
			buff.Reset()
		}
		if state != defaultState {
			dataStartIndex := strings.Index(line, "]")
			buff.WriteString(line[dataStartIndex+1:] + " ")
		}
		if strings.Contains(line, "LogsSizeDataSummary JSON") {
			state = readingLogs
		}
		if strings.Contains(line, "ResourceUsageSummary JSON") {
			state = readingResources
		}
		if strings.Contains(line, "MetricsForE2E JSON") {
			state = readingMetrics
		}
	}
	return logSummary, resourceSummary, metricsSummary
}