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