Re: [kvm-unit-tests PATCH 1/3] s390x: Beautify sthyi report strings

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 19.02.19 15:16, David Hildenbrand wrote:
> On 19.02.19 09:49, Janosch Frank wrote:
>> Tests like the register odd check in r1 and r2 were not
>> destinguishable and the reports were hard to read in total.
>>
>> Signed-off-by: Janosch Frank <frankja@xxxxxxxxxxxxx>
>> ---
>>  s390x/sthyi.c | 45 +++++++++++++++++++++++++++++----------------
>>  1 file changed, 29 insertions(+), 16 deletions(-)
>>
>> diff --git a/s390x/sthyi.c b/s390x/sthyi.c
>> index 16b8c14..aaf13af 100644
>> --- a/s390x/sthyi.c
>> +++ b/s390x/sthyi.c
>> @@ -52,10 +52,12 @@ static void test_exception_addr(void)
>>  
>>  static void test_exception_reg_odd(void)
>>  {
>> -	report_prefix_push("Register check odd");
>> +	report_prefix_push("Register check odd R1");
>>  	expect_pgm_int();
>>  	sthyi((uint64_t)pagebuf, 0, NULL, 1, 2);
>>  	check_pgm_int_code(PGM_INT_CODE_SPECIFICATION);
>> +	report_prefix_pop();
>> +	report_prefix_push("Register check odd R2");
> 
> I was wondering if we should convert/add "check_pgm_int_code" to pass
> accept a string message. That would help as long as no other, unexpect
> message is triggered (e.g. EXTERNAL instead of PGM). Something that is
> unlikely.
> 
> This would be similar to simple "report(condition ..., "message").
> 
> Like "report_pgm_int_code(PGM_INT_CODE_SPECIFICATION, "R1 odd").
> 
> Not sure if that would be better in some cases.

Yes, that might be a help.

> 
>>  	expect_pgm_int();
>>  	sthyi((uint64_t)pagebuf, 0, NULL, 0, 3);
>>  	check_pgm_int_code(PGM_INT_CODE_SPECIFICATION);
>> @@ -76,52 +78,59 @@ static void test_function_code(uint64_t addr)
>>  	uint64_t urc = 0;
>>  	int cc = sthyi((uint64_t)pagebuf, 42, &urc, 0, 2);
>>  
>> -	report("Ill. fcode", cc == 3 && urc == CODE_UNSUPP);
>> +	report("Illegal fcode", cc == 3 && urc == CODE_UNSUPP);
>>  }
>>  
>>  static void test_fcode0_hdr(struct sthyi_hdr_sctn *hdr)
>>  {
>> -	report("HDR length", (hdr->INFHDLN >= sizeof(*hdr)
>> +	report_prefix_push("Header");
>> +
>> +	report("length", (hdr->INFHDLN >= sizeof(*hdr)
>>  			      && !(hdr->INFHDLN % 8)));
>> -	report("MACH sctn length", (hdr->INFMLEN >= sizeof(struct sthyi_mach_sctn)
>> +	report("Machine sctn length", (hdr->INFMLEN >= sizeof(struct sthyi_mach_sctn)
>>  				    && !(hdr->INFMLEN % 8)));
>> -	report("PAR sctn length", (hdr->INFPLEN >= sizeof(struct sthyi_par_sctn)
>> +	report("Partition section length", (hdr->INFPLEN >= sizeof(struct sthyi_par_sctn)
>>  				   && !(hdr->INFPLEN % 8)));
>>  
>> -	report("MACH offset", hdr->INFMOFF >= hdr->INFHDLN);
>> -	report("PAR offset", hdr->INFPOFF >= hdr->INFHDLN);
>> +	report("Machine offset", hdr->INFMOFF >= hdr->INFHDLN);
>> +	report("Partition offset", hdr->INFPOFF >= hdr->INFHDLN);
>> +	report_prefix_pop();
>>  }
>>  
>>  static void test_fcode0_mach(struct sthyi_mach_sctn *mach)
>>  {
>>  	int sum = mach->INFMSCPS + mach->INFMDCPS + mach->INFMSIFL + mach->INFMDIFL;
>>  
>> +	report_prefix_push("Machine");
>>  	if (mach->INFMVAL1 & MACH_ID_VLD) {
>> -		report("MACH type", memcmp(mach->INFMTYPE, null_buf, sizeof(mach->INFMTYPE)));
>> -		report("MACH manu", memcmp(mach->INFMMANU, null_buf, sizeof(mach->INFMMANU)));
>> -		report("MACH seq", memcmp(mach->INFMSEQ, null_buf, sizeof(mach->INFMSEQ)));
>> -		report("MACH plant", memcmp(mach->INFMPMAN, null_buf, sizeof(mach->INFMPMAN)));
>> +		report("type", memcmp(mach->INFMTYPE, null_buf, sizeof(mach->INFMTYPE)));
>> +		report("manufacturer", memcmp(mach->INFMMANU, null_buf, sizeof(mach->INFMMANU)));
>> +		report("sequence", memcmp(mach->INFMSEQ, null_buf, sizeof(mach->INFMSEQ)));
>> +		report("plant", memcmp(mach->INFMPMAN, null_buf, sizeof(mach->INFMPMAN)));
>>  	}
>>  
>>  	if (mach->INFMVAL1 & MACH_NAME_VLD)
>> -		report("MACH name", memcmp(mach->INFMNAME, null_buf,
>> +		report("name", memcmp(mach->INFMNAME, null_buf,
>>  					   sizeof(mach->INFMNAME)));
>>  
>>  	if (mach->INFMVAL1 & MACH_CNT_VLD)
>> -		report("MACH core counts", sum);
>> +		report("core counts", sum);
>> +	report_prefix_pop();
>>  }
>>  
>>  static void test_fcode0_par(struct sthyi_par_sctn *par)
>>  {
>>  	int sum = par->INFPSCPS + par->INFPDCPS + par->INFPSIFL + par->INFPDIFL;
>>  
>> +	report_prefix_push("Partition");
>>  	if (par->INFPVAL1 & PART_CNT_VLD)
>> -		report("PAR core counts", sum);
>> +		report("core counts", sum);
>>  
>>  	if (par->INFPVAL1 & PART_STSI_SUC) {
>> -		report("PAR number", par->INFPPNUM);
>> -		report("PAR name", memcmp(par->INFPPNAM, null_buf, sizeof(par->INFPPNAM)));
>> +		report("number", par->INFPPNUM);
>> +		report("name", memcmp(par->INFPPNAM, null_buf, sizeof(par->INFPPNAM)));
>>  	}
>> +	report_prefix_pop();
>>  }
>>  
>>  static void test_fcode0(void)
>> @@ -133,6 +142,7 @@ static void test_fcode0(void)
>>  	/* Zero destination memory. */
>>  	memset(pagebuf, 0, PAGE_SIZE);
>>  
>> +	report_prefix_push("fcode 0");
>>  	sthyi((uint64_t)pagebuf, 0, NULL, 0, 2);
>>  	hdr = (void *)pagebuf;
>>  	mach = (void *)pagebuf + hdr->INFMOFF;
>> @@ -141,6 +151,7 @@ static void test_fcode0(void)
>>  	test_fcode0_hdr(hdr);
>>  	test_fcode0_mach(mach);
>>  	test_fcode0_par(par);
>> +	report_prefix_pop();
>>  }
>>  
>>  int main(void)
>> @@ -156,10 +167,12 @@ int main(void)
>>  	}
>>  
>>  	/* Test register/argument checking. */
>> +	report_prefix_push("Instruction");
>>  	test_exception_addr();
>>  	test_exception_reg_odd();
>>  	test_exception_reg_equal();
>>  	test_function_code((uint64_t) pagebuf);
>> +	report_prefix_pop();
>>  
>>  	/* Test function code 0 - CP and IFL Capacity Information */
>>  	test_fcode0();
>>
> 
> 


Attachment: signature.asc
Description: OpenPGP digital signature


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Kernel Development]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Info]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Linux Media]     [Device Mapper]

  Powered by Linux