def get_durations(raw_data, get_duration, is_successful):
    """Retrieve the benchmark duration data from a list of records.

    :parameter raw_data: list of records
    :parameter get_duration: function that retrieves the duration data from
                             a given record
    :parameter is_successful: function that returns True if the record contains
                              a successful benchmark result, False otherwise

    :returns: list of float values corresponding to benchmark durations
    """
    data = [get_duration(run) for run in raw_data if is_successful(run)]
    return data