Er is een functie `unpredictableFunc()`, die moet worden omhuld zodat deze wordt uitgevoerd met een timeout (bijvoorbeeld 1 seconde) en de uitvoeringstijd wordt gelogd.
// Er is een functie die ononderbroken werkt en een getal retourneert.
// De inhoud ervan mag niet worden gewijzigd (stel dat er een netwerkverzoek binnenin is).
func unpredictableFunc() int64 {
rnd := rand.Int63n(5000)
time.Sleep(time.Duration(rnd) * time.Millisecond)
return rnd
}
// De wrapperfunctie moet worden aangepast, zodat deze werkt met een ingestelde timeout (bijvoorbeeld 1 seconde).
// Als de "lange" functie binnen die tijd klaar is, is dat geweldig, we geven het resultaat terug.
// Zo niet, dan geven we een fout terug. Het resultaat van deze uitvoering is in dat geval niet belangrijk.
//
// Daarnaast moet worden gemeten hoe lang deze functie heeft geduurd (gewoon in de log zetten).
// De handtekening van de wrapperfunctie mag worden gewijzigd.
func predictableFunc() int64 {
return unpredictableFunc()
}