Changeset 6190
- Timestamp:
- Jan 25, 2006, 12:18:00 PM (20 years ago)
- Location:
- trunk/psLib
- Files:
-
- 1 added
- 4 edited
-
src/types/psMetadataConfig.c (modified) (7 diffs)
-
test/types/mdcfgwrt.verified (added)
-
test/types/tst_psMetadata_07.c (modified) (3 diffs)
-
test/types/verified/tst_psMetadata_07.stderr (modified) (1 diff)
-
test/types/verified/tst_psMetadata_07.stdout (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/types/psMetadataConfig.c
r6189 r6190 10 10 * @author Eric Van Alst, MHPCC 11 11 * 12 * @version $Revision: 1.5 0$ $Name: not supported by cvs2svn $13 * @date $Date: 2006-01-25 03:02:47$12 * @version $Revision: 1.51 $ $Name: not supported by cvs2svn $ 13 * @date $Date: 2006-01-25 22:18:00 $ 14 14 * 15 15 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 1221 1221 } 1222 1222 1223 1224 /* 1223 1225 psString psMetadataConfigFormat(psMetadata *md) 1224 1226 { 1225 1227 PS_ASSERT_PTR_NON_NULL(md, NULL); 1226 1228 1227 1229 psString newString = NULL; 1228 1230 psString newStr = NULL; … … 1238 1240 strcpy(content, "\0"); 1239 1241 strcpy(mdString, "\0"); 1240 1242 1241 1243 while ( (item = psMetadataGetAndIncrement(iter)) ) { 1242 1244 type = item->type; … … 1256 1258 type = PS_DATA_UNKNOWN; 1257 1259 } 1258 1260 1259 1261 switch (type) { 1260 1262 case PS_DATA_BOOL: … … 1343 1345 snprintf(content, MAXSTR, "\n%s METADATA ", item->name); 1344 1346 strncat(mdString, content, MAXSTR); 1345 1347 1346 1348 newStr = psMetadataConfigFormat(item->data.md); 1347 1349 strncpy(buffer, (char *)newStr, MAXSTR); … … 1379 1381 } 1380 1382 strncat(mdString, content, MAXSTR); 1381 1383 1382 1384 snprintf(content, MAXSTR, "%ld, ", (long)((psTime*)(item->data.V))->sec); 1383 1385 strncat(mdString, content, MAXSTR); … … 1465 1467 return newString; 1466 1468 } 1469 */ 1470 1471 psString psMetadataConfigFormat(psMetadata *md) 1472 { 1473 PS_ASSERT_PTR_NON_NULL(md, NULL); 1474 1475 psString mdString = NULL; 1476 psString content = NULL; 1477 1478 psMetadataItem *item = NULL; 1479 psMetadataIterator *iter = psMetadataIteratorAlloc(md, PS_LIST_HEAD, NULL); 1480 1481 while ( (item = psMetadataGetAndIncrement(iter)) ) { 1482 if (item == NULL) { 1483 // XXX : this is probably not the right error value 1484 psError(PS_ERR_BAD_PARAMETER_VALUE, true, PS_ERRORTEXT_psMetadata_METATYPE_INVALID, PS_DATA_UNKNOWN); 1485 psFree(iter); 1486 return NULL; 1487 } 1488 1489 // In this block, the single item is used to build 'content' 1490 switch (item->type) { 1491 case PS_DATA_BOOL: 1492 psStringAppend (&content, "%s BOOL ", item->name); 1493 if ( item->data.B ) { 1494 psStringAppend(&content, "TRUE"); 1495 } else { 1496 psStringAppend(&content, "FALSE"); 1497 } 1498 if ( item->comment != NULL ) { 1499 psStringAppend(&content, " #%s", item->comment); 1500 } 1501 psStringAppend(&content, " \n", item->comment); 1502 break; 1503 case PS_DATA_S32: 1504 psStringAppend(&content, "%s S32 ", item->name); 1505 psStringAppend(&content, "%d ", item->data.S32); 1506 if ( strncmp(item->comment,"",2) ) { 1507 psStringAppend(&content, " #%s", item->comment); 1508 } 1509 psStringAppend(&content, " \n"); 1510 break; 1511 case PS_DATA_F32: 1512 psStringAppend(&content, "%s F32 ", item->name); 1513 psStringAppend(&content, "%.15g ", item->data.F32); 1514 if ( strncmp(item->comment,"",2) ) { 1515 psStringAppend(&content, " #%s", item->comment); 1516 } 1517 psStringAppend(&content, " \n"); 1518 break; 1519 case PS_DATA_F64: 1520 psStringAppend(&content, "%s F64 ", item->name); 1521 psStringAppend(&content, "%.15g ", item->data.F64); 1522 if ( strncmp(item->comment,"",2) ) { 1523 psStringAppend(&content, " #%s", item->comment); 1524 } 1525 psStringAppend(&content, " \n"); 1526 break; 1527 case PS_DATA_STRING: 1528 psStringAppend(&content, "%s STR ", item->name); 1529 psStringAppend(&content, "%s ", ((char *)(item->data.V))); 1530 if ( strncmp(item->comment,"",2) ) { 1531 psStringAppend(&content, " #%s", item->comment); 1532 } 1533 psStringAppend(&content, " \n"); 1534 break; 1535 case PS_DATA_METADATA: 1536 psStringAppend(&content, "\n%s METADATA ", item->name); 1537 psString newStr = psMetadataConfigFormat(item->data.md); 1538 // XXX need to check for NULL return value, implying error 1539 // from a lower level 1540 1541 // add 3 extra spaces to each metadata folder item 1542 char *buffer2 = strtok(newStr, "\n"); 1543 while( buffer2 != NULL ) { 1544 psStringAppend(&content, "\n %s", buffer2); 1545 buffer2 = strtok(NULL, "\n"); 1546 } 1547 if ( strncmp(item->comment,"",2) ) { 1548 psStringAppend(&content, "\nEND #%s\n\n", item->comment); 1549 } else { 1550 psStringAppend(&content, "\nEND\n\n"); 1551 } 1552 psFree(newStr); 1553 break; 1554 case PS_DATA_TIME: 1555 psStringAppend(&content, "%s ", item->name); 1556 psTime *time = item->data.V; 1557 if ( time->type == PS_TIME_UTC ) 1558 psStringAppend(&content, "PS_TIME_UTC "); 1559 else if ( time->type == PS_TIME_TAI ) 1560 psStringAppend(&content, "PS_TIME_TAI "); 1561 else if ( time->type == PS_TIME_UT1 ) 1562 psStringAppend(&content, "PS_TIME_UT1 "); 1563 else if ( time->type == PS_TIME_TT ) 1564 psStringAppend(&content, "PS_TIME_TT "); 1565 else { 1566 psError(PS_ERR_BAD_PARAMETER_VALUE, true, PS_ERRORTEXT_psMetadata_METATYPE_INVALID, time->type); 1567 // XXX memory leak: should free content and mdString before returning 1568 psFree(iter); 1569 return NULL; 1570 } 1571 1572 psStringAppend(&content, "%ld, ", (long)time->sec); 1573 psStringAppend(&content, "%u, ", time->nsec); 1574 if ( time->leapsecond ) 1575 psStringAppend(&content, "T "); 1576 else 1577 psStringAppend(&content, "F "); 1578 if ( strncmp(item->comment,"",2) ) { 1579 psStringAppend(&content, " #%s", item->comment); 1580 } 1581 psStringAppend(&content, " \n"); 1582 break; 1583 case PS_DATA_VECTOR: 1584 psStringAppend(&content, "@%s ", item->name); 1585 psVector *vector = item->data.V; 1586 1587 switch (vector->type.type) { 1588 case PS_DATA_S32: 1589 psStringAppend(&content, "S32 "); 1590 for (int i = 0; i < vector->n; i++) { 1591 psStringAppend(&content, "%d ", vector->data.S32[i]); 1592 } 1593 break; 1594 case PS_DATA_F32: 1595 psStringAppend(&content, "F32 ", MAXSTR); 1596 for (int i = 0; i < vector->n; i++) { 1597 psStringAppend(&content, "%.15g ", vector->data.F32[i]); 1598 } 1599 break; 1600 case PS_DATA_F64: 1601 psStringAppend(&content, "F64 ", MAXSTR); 1602 for (int i = 0; i < vector->n; i++) { 1603 psStringAppend(&content, "%.15g", vector->data.F64[i]); 1604 } 1605 break; 1606 case PS_DATA_UNKNOWN: 1607 default: 1608 psError(PS_ERR_BAD_PARAMETER_VALUE, true, 1609 PS_ERRORTEXT_psMetadata_METATYPE_INVALID, vector->type.type); 1610 psFree(iter); 1611 // XXX memory leak: should free content and mdString before returning 1612 return NULL; 1613 } 1614 if ( strncmp(item->comment,"",2) ) { 1615 psStringAppend(&content, " #%s", item->comment); 1616 } 1617 psStringAppend(&content, " \n"); 1618 break; 1619 case PS_DATA_UNKNOWN: 1620 default: 1621 psError(PS_ERR_BAD_PARAMETER_VALUE, true, 1622 PS_ERRORTEXT_psMetadata_METATYPE_INVALID, item->type); 1623 psFree(iter); 1624 // XXX memory leak: should free content and mdString before returning 1625 return NULL; 1626 } 1627 psStringAppend(&mdString, content); 1628 psFree(content); 1629 content = NULL; 1630 } 1631 psFree(iter); 1632 return mdString; 1633 } 1634 1467 1635 1468 1636 bool psMetadataConfigWrite(psMetadata *md, 1469 1637 const char *filename) 1470 1638 { 1639 PS_ASSERT_PTR_NON_NULL(md, NULL); 1640 PS_ASSERT_PTR_NON_NULL(filename, NULL); 1471 1641 psString fileString = NULL; 1642 fileString = psMetadataConfigFormat(md); 1643 if (fileString == NULL) { 1644 psError(PS_ERR_BAD_PARAMETER_NULL, false, 1645 "psMetadataConfigFormat returned NULL.\n"); 1646 return false; 1647 } 1472 1648 FILE *file; 1473 file = fopen(filename, "w"); 1474 fileString = psMetadataConfigFormat(md); 1649 if ( !(file = fopen(filename, "w")) ) { 1650 psError(PS_ERR_IO, true, 1651 "Failed to open specified file, %s\n", filename); 1652 psFree(fileString); 1653 return false; 1654 } 1475 1655 fprintf(file, "%s", fileString); 1476 1656 fclose(file); -
trunk/psLib/test/types/tst_psMetadata_07.c
r6187 r6190 16 16 * @author David Robbins, MHPCC 17 17 * 18 * @version $Revision: 1.1 7$ $Name: not supported by cvs2svn $19 * @date $Date: 2006-01-2 3 23:52:15$18 * @version $Revision: 1.18 $ $Name: not supported by cvs2svn $ 19 * @date $Date: 2006-01-25 22:18:00 $ 20 20 * 21 21 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 58 58 vec->data.S32[i] = i+1; 59 59 } 60 vec->n = 5; 60 61 time->sec = 1000; 61 62 time->nsec = 25; … … 137 138 { 138 139 psMetadata *newMD = NULL; 140 //Return false for NULL input metadata 141 psLogMsg(__func__,PS_LOG_INFO,"Following should generate error message"); 142 if (psMetadataConfigWrite(newMD, "mdcfgwrt.out")) { 143 psError(PS_ERR_BAD_PARAMETER_NULL, false, 144 "psMetadataConfigWrite failed to return false for NULL input metadata.\n"); 145 return 1; 146 } 139 147 newMD = setupMeta(); 140 printPositiveTestHeader(stdout, "psMetadata", "Test E - psMetadataConfigWrite"); 148 //Return false for NULL input filename 149 psLogMsg(__func__,PS_LOG_INFO,"Following should generate error message"); 150 if (psMetadataConfigWrite(newMD, NULL)) { 151 psError(PS_ERR_BAD_PARAMETER_NULL, false, 152 "psMetadataConfigWrite failed to return false for NULL input filename.\n"); 153 return 2; 154 } 155 //Return false for bad input filename 156 psLogMsg(__func__,PS_LOG_INFO,"Following should generate error message"); 157 if (psMetadataConfigWrite(newMD, "temp")) { 158 psError(PS_ERR_BAD_PARAMETER_NULL, false, 159 "psMetadataConfigWrite failed to return false for bad input filename.\n"); 160 return 3; 161 } 162 //Return true for valid inputs 141 163 if ( !psMetadataConfigWrite(newMD, "mdcfgwrt.out") ) { 142 164 fprintf(stderr, "Failed test point E - Failed to write metadata to file. \n"); 143 } 144 145 printFooter(stdout, "psMetadata", "Test E - psMetadataConfigWrite", true); 165 return 4; 166 } 167 168 //Make sure the output file matches the verified file output. 169 FILE *verified; 170 FILE *output; 171 verified = fopen("mdcfgwrt.verified", "r"); 172 output = fopen("mdcfgwrt.out", "r"); 173 char buffer1[100]; 174 char buffer2[100]; 175 while ( fscanf(verified, "%s", buffer1) != EOF ) { 176 if (fscanf(output, "%s", buffer2) == EOF) { 177 psError(PS_ERR_BAD_PARAMETER_SIZE, false, 178 "Output file is smaller than the expected output file.\n"); 179 return 5; 180 } 181 if (strncmp(buffer1, buffer2, 100) ) { 182 psError(PS_ERR_BAD_PARAMETER_VALUE, false, 183 "Output file contents do not match the expected output.\n"); 184 return 6; 185 } 186 } 187 if (fscanf(output, "%s", buffer2) != EOF) { 188 psError(PS_ERR_BAD_PARAMETER_SIZE, false, 189 "Output file is larger than the expected output file.\n"); 190 return 7; 191 } 192 fclose(verified); 193 fclose(output); 194 146 195 psFree(newMD); 147 196 return 0; -
trunk/psLib/test/types/verified/tst_psMetadata_07.stderr
r6187 r6190 14 14 \**********************************************************************************/ 15 15 16 <DATE><TIME>|<HOST>|I|testMetaWrite 17 Following should generate error message 18 <DATE><TIME>|<HOST>|E|psMetadataConfigWrite (FILE:LINENO) 19 Unallowable operation: md is NULL. 20 <DATE><TIME>|<HOST>|I|testMetaWrite 21 Following should generate error message 22 <DATE><TIME>|<HOST>|E|psMetadataConfigWrite (FILE:LINENO) 23 Unallowable operation: filename is NULL. 24 <DATE><TIME>|<HOST>|I|testMetaWrite 25 Following should generate error message 26 <DATE><TIME>|<HOST>|E|psMetadataConfigWrite (FILE:LINENO) 27 Failed to open specified file, temp 16 28 17 29 ---> TESTPOINT PASSED (psMetadata_07{Test psMetadataConfigWrite} | tst_psMetadata_07.c) -
trunk/psLib/test/types/verified/tst_psMetadata_07.stdout
r6187 r6190 35 35 ---> TESTPOINT PASSED (psMetadata{Test D - Get and Decrement Iterator} | tst_psMetadata_07.c) 36 36 37 /***************************** TESTPOINT ******************************************\38 * TestFile: tst_psMetadata_07.c *39 * TestPoint: psMetadata{Test E - psMetadataConfigWrite} *40 * TestType: Positive *41 \**********************************************************************************/42 43 44 ---> TESTPOINT PASSED (psMetadata{Test E - psMetadataConfigWrite} | tst_psMetadata_07.c)45
Note:
See TracChangeset
for help on using the changeset viewer.
