perf_unittest.c revision fb3766f18a2c18b6f4798a6a631fdb88fcacd1dc
1fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 2fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* 3fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Copyright 2001-2008 Texas Instruments - http://www.ti.com/ 4fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 5fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Licensed under the Apache License, Version 2.0 (the "License"); 6fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * you may not use this file except in compliance with the License. 7fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * You may obtain a copy of the License at 8fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 9fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * http://www.apache.org/licenses/LICENSE-2.0 10fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * 11fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * Unless required by applicable law or agreed to in writing, software 12fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * distributed under the License is distributed on an "AS IS" BASIS, 13fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * See the License for the specific language governing permissions and 15fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin * limitations under the License. 16fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 17fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef __PERF_UNIT_TEST__ 18fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 19fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #include "perf.h" 20fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #include "perf_config.h" 21fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #include <assert.h> 22fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin #include <math.h> 23fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 24fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* unit test for the TIME macros */ 25fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid time_unit_test() 26fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 27fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin TIME_STRUCT t1, t2; 28fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 29fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin TIME_SET(t1, 1, 999999); 30fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin TIME_SET(t2, 2, 123456); 31fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 32fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (TIME_MICROSECONDS(t1) == 999999) 33fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { /* we carry microseconds */ 34fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin assert(TIME_MICROSECONDS(t1) == 999999); /* MICROSECONDS */ 35fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin assert(TIME_SECONDS(t1) == 1); /* SECONDS */ 36fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 37fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin assert(TIME_DELTA(t2, t1) == 123457); /* DELTA */ 38fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 39fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin TIME_COPY(t2, t1); /* COPY */ 40fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin assert(TIME_MICROSECONDS(t2) == 999999); 41fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin assert(TIME_SECONDS(t2) == 1); 42fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 43fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin TIME_INCREASE(t1, 4294967295u); /* INCREASE */ 44fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin assert(TIME_SECONDS(t1) == 4296); 45fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin assert(TIME_MICROSECONDS(t1) == 967294); 46fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 47fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else if (TIME_MICROSECONDS(t1) == 0) 48fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { /* we only carry seconds */ 49fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin assert(TIME_MICROSECONDS(t1) == 0); /* MICROSECONDS */ 50fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin assert(TIME_SECONDS(t1) == 1); /* SECONDS */ 51fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 52fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin assert(TIME_DELTA(t2, t1) == 1000000); /* DELTA */ 53fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 54fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin TIME_COPY(t2, t1); /* COPY */ 55fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin assert(TIME_MICROSECONDS(t2) == 0); 56fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin assert(TIME_SECONDS(t2) == 1); 57fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 58fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin TIME_INCREASE(t1, 4294967295u); /* INCREASE */ 59fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin assert(TIME_SECONDS(t1) == 4295); 60fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin assert(TIME_MICROSECONDS(t1) == 0); 61fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 62fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 63fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else 64fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 65fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin assert(!"unknown TIME structure"); 66fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 67fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 68fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 69fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* calculate how fast TIME_GET is */ 70fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid time_get_test() 71fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 72fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin TIME_STRUCT t1, t2, t3; 73fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin unsigned long count = 0, delta; 74fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin float sum_d = 0, sum_dd = 0; 75fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 76fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* get time */ 77fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin TIME_GET(t1); 78fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 79fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* measure how much TIME's resolution is */ 80fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin for (count = 0; count < 1000; count++) 81fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { /* take 1000 measurements */ 82fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin do 83fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 84fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin TIME_GET(t2); 85fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 86fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin while (TIME_SECONDS(t1) == TIME_SECONDS(t2) && 87fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin TIME_MICROSECONDS(t1) == TIME_MICROSECONDS(t2)); 88fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 89fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin delta = TIME_DELTA(t2, t1); 90fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin sum_d += delta; 91fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin sum_dd += delta * delta; 92fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 93fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin TIME_COPY(t1, t2); 94fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 95fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 96fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin sum_d /= count; 97fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin sum_dd /= count; 98fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 99fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fprintf(stderr, "GET_TIME resolution: %g +- %g us\n", 100fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin sum_d, sqrt(sum_dd - sum_d * sum_d)); 101fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 102fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* measure how fast TIME_GET is */ 103fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 104fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* wait until the next second */ 105fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin do 106fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 107fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin TIME_GET(t2); 108fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 109fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin while (TIME_SECONDS(t1) == TIME_SECONDS(t2)); 110fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 111fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* count how many times we can get the time in a second */ 112fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin do 113fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 114fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin TIME_GET(t3); 115fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin count++; 116fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 117fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin while (TIME_SECONDS(t3) == TIME_SECONDS(t2)); 118fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 119fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fprintf(stderr, "We can get the time %lu times a second (get time takes" 120fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin " %6lg us-s)\n[%lu.%06lu, %lu.%06lu, %lu.%06lu]\n", 121fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin count, 122fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 1000000.0/count, 123fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin TIME_SECONDS(t1), TIME_MICROSECONDS(t1), 124fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin TIME_SECONDS(t2), TIME_MICROSECONDS(t2), 125fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin TIME_SECONDS(t3), TIME_MICROSECONDS(t3)); 126fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 127fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 128fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* Internal unit tests 129fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 130fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin TIME arithmetics 131fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin TIME speed 132fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin */ 133fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 134fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid internal_unit_test() 135fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 136fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin time_unit_test(); 137fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 138fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* measure TIME_GET 3 times */ 139fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin time_get_test(); 140fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin time_get_test(); 141fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin time_get_test(); 142fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 143fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 144fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* PERF test run - does not halt if it fails! */ 145fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid perf_test() 146fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 147fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin float audioTime, videoTime; 148fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 149fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* create performance objects */ 150fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_OBJHANDLE perfAVD = PERF_Create(PERF_FOURCC('M','P','l','a'), 151fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ModuleAudioDecode | 152fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ModuleVideoDecode | 153fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ModuleLLMM); 154fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_OBJHANDLE perfAVE = PERF_Create(PERF_FOURCC('C','A','M',' '), 155fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ModuleAudioEncode | 156fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ModuleVideoEncode | 157fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ModuleHLMM); 158fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_OBJHANDLE perfI = PERF_Create(PERF_FOURCC('I','M','G',' '), 159fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ModuleImageDecode | 160fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ModuleImageEncode | 161fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ModuleAlgorithm); 162fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 163fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_Boundary(perfAVD, PERF_BoundarySetup | PERF_BoundaryStart); 164fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_Boundary(perfAVE, PERF_BoundarySteadyState | PERF_BoundaryComplete); 165fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_Boundary(perfI, PERF_BoundaryCleanup | PERF_BoundaryStart); 166fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 167fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_SendingBuffer(perfAVD, 0x12340001, 0x0FFFFFFF, PERF_ModuleApplication); 168fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_SendingFrame(perfAVE, 0x56780001, 0x0FFFFFFE, PERF_ModuleHardware); 169fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_SendingBuffers(perfAVD, 0x12340002, 0x1234fff2, 0x01234567, 170fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ModuleHLMM); 171fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_SendingFrames(perfAVE, 0x56780002, 0x5678FFF2, 0x07654321, 172fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ModuleSocketNode); 173fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 174fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_SendingCommand(perfI, 0xFADEDACE, 0x00112233, PERF_ModuleMax); 175fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 176fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_XferingBuffer(perfAVD, 0x12340001, 0x0FFFFFFF, PERF_ModuleApplication, PERF_ModuleMemory); 177fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_XferingFrame(perfAVE, 0x56780001, 0x0FFFFFFE, PERF_ModuleHardware, PERF_ModuleCommonLayer); 178fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_XferingBuffers(perfAVD, 0x12340002, 0x1234fff2, 0x01234567, 179fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ModuleHLMM, PERF_ModuleAlgorithm); 180fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_XferingFrames(perfAVE, 0x56780002, 0x5678FFF2, 0x07654321, 181fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ModuleSocketNode, PERF_ModuleHardware); 182fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 183fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_SendingCommand(perfI, 0xFADEDACE, 0x00112233, PERF_ModuleMax); 184fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 185fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ReceivedBuffer(perfAVD, 0x56780001, 0x0FFFFFFE, PERF_ModuleLLMM); 186fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ReceivedFrame(perfAVE, 0x12340001, 0x0FFFFFFF, PERF_ModuleMax); 187fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ReceivedBuffers(perfAVD, 0x56780002, 0x5678FFF2, 0x07654321, 188fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ModuleAlgorithm); 189fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ReceivedFrames(perfAVE, 0x12340002, 0x1234FFF2, 0x01234567, 190fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ModuleHLMM); 191fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 192fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ReceivedCommand(perfI, 0xABADDEED, 0x778899AA, PERF_ModuleHardware); 193fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 194fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin audioTime = 0.01f; videoTime = 0.001f; 195fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_SyncAV(perfAVD, audioTime, videoTime, PERF_SyncOpNone); 196fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin audioTime = 1.23f; videoTime = 2.345f; 197fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_SyncAV(perfAVD, audioTime, videoTime, PERF_SyncOpDropVideoFrame); 198fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin audioTime = 34.56f; videoTime = 35.678f; 199fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_SyncAV(perfAVE, audioTime, videoTime, PERF_SyncOpMax); 200fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 201fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_ThreadCreated(perfI, 919, PERF_FOURCC('O','M','X','B')); 202fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 203fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_Log(perfAVD, 0xFEDCBA98, 0x7654321F, 0xDB97531F); 204fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 205fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* delete performance objects */ 206fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_Done(perfAVD); 207fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_Done(perfAVE); 208fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_Done(perfI); 209fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 210fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin assert(perfAVD == NULL); 211fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin assert(perfAVE == NULL); 212fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin assert(perfI == NULL); 213fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 214fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 215fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin/* 216fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 217fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin Features to be tested: 218fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 219fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 220fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin4) Log only customizable mode 221fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin log interface gets created - needs to hand verify 222fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 223fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin*/ 224fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 225fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid create_config_file(char *content) 226fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 227fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin FILE *f = fopen(PERF_CONFIG_FILE, "wt"); 228fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin if (f) 229fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 230fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fprintf(f, "%s", content); 231fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fclose(f); 232fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 233fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin else 234fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin { 235fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin printf("Could not create config file\n"); 236fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin exit(1); 237fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin } 238fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 239fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 240fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid delete_config_file() 241fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 242fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin unlink(PERF_CONFIG_FILE); 243fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 244fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 245fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid test_PERF(char *description) 246fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 247fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fprintf(stderr,"-- START -- %s --\n", description); 248fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fprintf(stdout,"-- START -- %s --\n", description); 249fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 250fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin perf_test(); 251fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 252fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fprintf(stderr,"-- END -- %s --\n", description); 253fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin fprintf(stdout,"-- END -- %s --\n", description); 254fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 255fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 256fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#ifdef _WIN32 257fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define INVALID_PATH "iNvAlId_dIr\\" 258fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#else 259fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#define INVALID_PATH "iNvAlId_dIr/" 260fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 261fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 262fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid test_PERF_creation() 263fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 264fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* No PERF object is created - e.g. if logging, no "X blocks created" message 265fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin will be displayed at the end of the unit test */ 266fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 267fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* no config file */ 268fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin delete_config_file(); 269fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin test_PERF("no config file"); 270fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 271fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* mask is 0 */ 272fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin create_config_file("mask = 1\n\t\tmask= \t0\t\t\n"); 273fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin test_PERF("not enabled"); 274fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 275fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* no trace_file, debug or log_file is specified (e.g. only replay_file) */ 276fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin create_config_file("replay_file = replay this\nlog_file=NULL\nmask = 0xFFFFFFFF\n"); 277fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin test_PERF("not enabled"); 278fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 279fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* trace_file cannot be created (e.g. invalid directory), and no other file was specified */ 280fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin create_config_file("trace_file = " INVALID_PATH "trace\nmask = 0xFFFFFFFF\n"); 281fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin test_PERF("invalid trace file"); 282fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 283fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* trace_file cannot be created but delayed_open is enabled (object should 284fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin get created, but no output should be written, and 0 buffers should be 285fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin generated */ 286fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin create_config_file("trace_file = " INVALID_PATH "trace\ndelayed_open = 1\nmask = 0xFFFFFFFF\n"); 287fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin test_PERF("invalid trace file + delayed open"); 288fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 289fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* buffer_size is too large */ 290fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin create_config_file("mask = 0xFFFFFFFF\nbuffer_size = 0x7FFFFFFF\ntrace_file = ut_trace1\n"); 291fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin test_PERF("large trace buffer size"); 292fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 293fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 294fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid test_PERF_output() 295fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 296fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* STDOUT csv non-detailed */ 297fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin create_config_file("mask = 0xFFFFFFFF\ndebug = true\ncsv = 1\n"); 298fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin test_PERF("STDOUT non-detailed debug CSV"); 299fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 300fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* STDOUT detailed */ 301fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin create_config_file("mask = 0xFFFFFFFF\nlog_file = STDOUT\ncsv = 0\n"); 302fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin test_PERF("STDOUT detailed debug"); 303fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 304fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* log_file cannot be created (e.g. invalid directory), it will be printed to STDOUT */ 305fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin create_config_file("log_file = " INVALID_PATH "log\nmask = 0xFFFFFFFF\n"); 306fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin test_PERF("STDOUT because invalid log file"); 307fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 308fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* STDERR non-csv detailed */ 309fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin create_config_file("mask = 0xFFFFFFFF\ndetailed_debug = true\ncsv = 0\n"); 310fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin test_PERF("STDERR detailed debug"); 311fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 312fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* STDERR detailed CSV*/ 313fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin create_config_file("mask = 0xFFFFFFFF\nlog_file = STDERR\ncsv = enabled\n"); 314fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin test_PERF("STDERR detailed CSV debug"); 315fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 316fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* FILE output */ 317fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin create_config_file("mask = 0xFFFFFFFF\nlog_file = ut_log1\n"); 318fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin test_PERF("FILE"); 319fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 320fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* trace output */ 321fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin create_config_file("mask = 0xFFFFFFFF\ntrace_file = ut_trace2\n"); 322fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin test_PERF("TRACE"); 323fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 324fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* trace, FILE and debug output */ 325fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin create_config_file("mask = 0xFFFFFFFF\nlog_file = ut_log2\ntrace_file = ut_trace3\ndebug = on\ndetailed_debug = off\ndelayed_open = 1\n"); 326fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin test_PERF("FILE, TRACE and DEBUG"); 327fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 328fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 329fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinvoid test_PERF_config() 330fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 331fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_Config config; 332fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 333fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_Config_Init(&config); 334fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 335fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* test string and numerical values + reassignment */ 336fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin create_config_file("log_file = string1\n" 337fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin "log_file = string1 string2 \n" 338fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin "trace_file = NULL \t\n" 339fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin "mask = 0xFFFFFFFF\n" 340fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin "detailed_debug = $1234567A\n" 341fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin "debug = 4294967295\n" 342fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin "csv = on\n" 343fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin "delayed_open = true\n" 344fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin "test.csv = off\n" 345fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin "buffer_size = -2\n"); 346fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 347fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_Config_Read(&config, 0); 348fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin assert(config.mask == 0xFFFFFFFF); 349fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin assert(config.detailed_debug = 0x1234567A); 350fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin assert(config.debug = 0xFFFFFFFF); 351fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin assert(config.buffer_size = 0xFFFFFFFE); 352fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin assert(config.csv); 353fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin assert(config.delayed_open); 354fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin assert(!strcmp(config.log_file, "string1 string2")); 355fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin assert(!config.trace_file); 356fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 357fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin /* test remaining numerical (boolean) values */ 358fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin config.delayed_open = 0; 359fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin create_config_file("delayed_open = enabled\n" 360fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin "detailed_debug = off\n" 361fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin "debug = true\n" 362fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin "test.debug = false\n" 363fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin "test2.debug = true\n" 364fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin "csv = disabled\n"); 365fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_Config_Read(&config, "test"); 366fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin assert(!config.debug); 367fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin assert(!config.detailed_debug); 368fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin assert(!config.csv); 369fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin assert(config.delayed_open); 370fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 371fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin PERF_Config_Release(&config); 372fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 373fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 374fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavinint main (int argc, char **argv) 375fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin{ 376fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin internal_unit_test(); 377fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 378fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin test_PERF_config(); 379fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 380fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin test_PERF_creation(); 381fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin test_PERF_output(); 382fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 383fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin return(0); 384fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin} 385fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 386fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin#endif 387fb3766f18a2c18b6f4798a6a631fdb88fcacd1dcRebecca Schultz Zavin 388