Il y a une fonction `unpredictableFunc()`, qui doit être enveloppée pour s'exécuter avec un délai d'expiration (par exemple, 1 seconde) et enregistrer le temps d'exécution.
// Il y a une fonction qui fonctionne indéfiniment et retourne un nombre.
// Son corps ne peut pas être modifié (supposons qu'il s'agit d'une requête réseau à l'intérieur).
func unpredictableFunc() int64 {
rnd := rand.Int63n(5000)
time.Sleep(time.Duration(rnd) * time.Millisecond)
return rnd
}
// Il faut modifier la fonction d'enveloppement, qui fonctionnera avec un délai défini (par exemple, 1 seconde).
// Si la "longue" fonction s'est exécutée dans ce temps, c'est parfait, on retourne le résultat.
// Sinon, on retourne une erreur. Le résultat de cette exécution n'est pas important.
//
// De plus, il faut mesurer combien de temps cette fonction a été en exécution (simplement l'afficher dans le log).
// La signature de la fonction d'enveloppement peut être modifiée.
func predictableFunc() int64 {
return unpredictableFunc()
}