ACK: [PATCH] acpi: autobrightness: make error reporting far less verbose (LP: #1257782)

IvanHu ivan.hu at canonical.com
Mon Dec 9 03:26:25 UTC 2013


On 12/04/2013 11:27 PM, Colin King wrote:
> From: Colin Ian King <colin.king at canonical.com>
>
> The autobrightness failure messages for test 2 are way too verbose. This patch
> fixes this to be more concise and just report the range of failed brightness
> levels, for example:
>
> FAILED [MEDIUM] BrightnessMismatch: Test 2, 10 brightness levels did not match
> the brightnesss level just set for backlight intel_backlight.
> The failed brightness levels were: 1-5 8 12-15.
>
> Signed-off-by: Colin Ian King <colin.king at canonical.com>
> ---
>   src/acpi/brightness/autobrightness.c | 58 ++++++++++++++++++++++++++++--------
>   1 file changed, 45 insertions(+), 13 deletions(-)
>
> diff --git a/src/acpi/brightness/autobrightness.c b/src/acpi/brightness/autobrightness.c
> index 6ac8bcc..0bb04f5 100644
> --- a/src/acpi/brightness/autobrightness.c
> +++ b/src/acpi/brightness/autobrightness.c
> @@ -99,7 +99,8 @@ static int auto_brightness_test2(fwts_framework *fw)
>   	rewinddir(brightness_dir);
>   	do {
>   		int i;
> -		bool failed = false;
> +		int failures = 0;
> +		bool *brightness_fail;
>
>   		entry = readdir(brightness_dir);
>   		if (entry == NULL || entry->d_name[0] == '.')
> @@ -129,34 +130,65 @@ static int auto_brightness_test2(fwts_framework *fw)
>   			continue;
>   		}
>
> +		brightness_fail = calloc(sizeof(bool), max_brightness + 1);
> +		if (brightness_fail == NULL) {
> +			fwts_log_error(fw, "Cannot allocate brightness table.");
> +			continue;
> +		}
>
>   		for (i = 0; i <= max_brightness; i++) {
>   			brightness_set_setting(entry->d_name, "brightness", i);
>   			if (brightness_get_setting(entry->d_name, "actual_brightness", &actual_brightness) != FWTS_OK) {
>   				fwts_log_info(fw, "Cannot get brightness setting %d for backlight %s.", i, entry->d_name);
> -				failed = true;
> +				failures++;
> +				brightness_fail[i] = true;
>   				continue;
>   			}
> -
>   			if (actual_brightness != i) {
> -				fwts_log_info(fw,
> -					"Actual brightness %d does not match the brightnesss "
> -					"level %d just set for backlight %s.",
> -					actual_brightness, i, entry->d_name);
> -				failed = true;
> +				failures++;
> +				brightness_fail[i] = true;
> +			} else {
> +				brightness_fail[i] = false;
>   			}
>   		}
>
> -		if (failed)
> +		if (failures) {
> +			char *msg = NULL;
> +			char buf[40];
> +
> +			/* Find the ranges of the failed levels */
> +			for (i = 0; i <= max_brightness; i++) {
> +				int j, end = i;
> +
> +				if (brightness_fail[i]) {
> +					/* Scan until we don't find a failure */
> +					for (j = i; j <= max_brightness && brightness_fail[j]; j++)
> +						end = j;
> +
> +					if (i == end) {
> +						/* Just one failure */
> +						snprintf(buf, sizeof(buf), " %d", i);
> +					} else {
> +						/* A contiguous range of failures */
> +						snprintf(buf, sizeof(buf), " %d-%d", i, end);
> +						i = end;
> +					}
> +					msg = fwts_realloc_strcat(msg, buf);
> +				}
> +			}
>   			fwts_failed(fw, LOG_LEVEL_MEDIUM,
>   				"BrightnessMismatch",
> -				"Actual brightness %d does not match the brightnesss level "
> -				"%d just set for backlight %s.",
> -				actual_brightness, i, entry->d_name);
> -		else
> +				"%d brightness levels did not match the brightnesss level "
> +				"just set for backlight %s.",
> +				failures, entry->d_name);
> +			fwts_log_info(fw, "The failed brightness levels were:%s.", msg);
> +			free(msg);
> +		} else
>   			fwts_passed(fw, "Actual brightness matches the brightnesss level for "
>   				"all %d levels for backlight %s.", max_brightness, entry->d_name);
>
> +		free(brightness_fail);
> +
>   		/* Restore original setting */
>   		brightness_set_setting(entry->d_name, "brightness", saved_brightness);
>   	} while (entry);
>

Acked-by: Ivan Hu <ivan.hu at canonical.com>



More information about the fwts-devel mailing list