xref: /openbmc/libcper/tests/test-utils.cpp (revision 255bd81a)
1 /**
2  * Defines utility functions for testing CPER-JSON IR output from the cper-parse library.
3  *
4  * Author: Lawrence.Tang@arm.com
5  **/
6 
7 #include <cstdio>
8 #include <cstdlib>
9 #include "test-utils.hpp"
10 
11 #include "../edk/BaseTypes.h"
12 #include "../generator/cper-generate.h"
13 
14 //Returns a ready-for-use memory stream containing a CPER record with the given sections inside.
15 FILE *generate_record_memstream(const char **types, UINT16 num_types,
16 				char **buf, size_t *buf_size,
17 				int single_section)
18 {
19 	//Open a memory stream.
20 	FILE *stream = open_memstream(buf, buf_size);
21 
22 	//Generate a section to the stream, close & return.
23 	if (!single_section) {
24 		generate_cper_record(const_cast<char **>(types), num_types,
25 				     stream);
26 	} else {
27 		generate_single_section_record(const_cast<char *>(types[0]),
28 					       stream);
29 	}
30 	fclose(stream);
31 
32 	//Return fmemopen() buffer for reading.
33 	return fmemopen(*buf, *buf_size, "r");
34 }
35