func main()

in colors-e2e/colors-be/main.go [15:68]


func main() {
	color := "red" // default color
	overrideColor := os.Getenv("OverrideColor")
	hostname := os.Getenv("HOSTNAME")
	faultPercentString := os.Getenv("FaultPercent")
	faultPercent := 0
	if faultPercentString != "" {
		parsedPercent, err := strconv.ParseInt(faultPercentString, 10, 32)
		if err != nil {
			log.Fatalf("cannot parse fault perecent %v: %v", faultPercent, err)
		}
		faultPercent = int(parsedPercent)
	}
	if overrideColor != "" {
		color = overrideColor
	}
	scvData, err := GetSerivceMetadata()
	if err != nil {
		log.Fatalf("cannot get service metadata: %v", err)
	}

	requestLogger, err := NewRequestLogger(context.Background(), scvData)
	if err != nil {
		log.Fatalf("cannot setup request logger")
	}

	createConstantLoad(context.Background(), "http://colors-be-scv:8080/color", 1)
	http.HandleFunc("/color", func(w http.ResponseWriter, r *http.Request) {
		var responseStatusGood bool = true
		result := struct {
			Color string `json:"color"`
			Name  string `json:"name"`
		}{
			Color: color,
			Name:  hostname,
		}
		if rand.Intn(101) < faultPercent {
			responseStatusGood = false
			w.WriteHeader(500)
		} else {
			err := json.NewEncoder(w).Encode(result)
			if err != nil {
				log.Printf("error encoding response: %v\n", err)
				w.WriteHeader(500)
				responseStatusGood = false
			}
		}

		requestLogger.LogRequest(r.Context(), responseStatusGood)
	})

	// Listen on port 8080.
	http.ListenAndServe(":8080", nil)
}