From 72e2d8083c228670f9fa7dbc48a5051b07ac0bc0 Mon Sep 17 00:00:00 2001 From: Chris Piker Date: Sun, 25 Feb 2024 17:30:32 -0600 Subject: [PATCH] Added CDF compression & CDF unittest --- buildfiles/Linux.mak | 12 ++-- test/ex12_sounder_xyz.cdf | Bin 0 -> 144630 bytes utilities/das3_cdf.c | 127 +++++++++++++++++++++++++------------- 3 files changed, 92 insertions(+), 47 deletions(-) create mode 100644 test/ex12_sounder_xyz.cdf diff --git a/buildfiles/Linux.mak b/buildfiles/Linux.mak index dc859cd..b854d75 100644 --- a/buildfiles/Linux.mak +++ b/buildfiles/Linux.mak @@ -198,13 +198,15 @@ test: $(BD) $(BD)/$(TARG).a $(BUILD_TEST_PROGS) $(BULID_UTIL_PROGS) @$(BD)/LoadStream @echo "INFO: Running unit test for credentials manager, $(BD)/TestCredMngr..." @$(BD)/TestCredMngr $(BD) - @echo "INFO: All test programs completed without errors" - - -test3:$(BD) $(BD)/das3_cdf $(BD)/$(TARG).a @echo "INFO: Running unit test for basic das v3.0 stream parsing, $(BD)/TestV3Read..." $(BD)/TestV3Read - $(BD)/das3_cdf -i test/ex12_sounder_xyz.d3t -o $(BD) -r + @echo "INFO: All test programs completed without errors" + +test_cdf:$(BD) $(BD)/das3_cdf $(BD)/$(TARG).a + @echo "INFO: Testing CDF creation" + $(BD)/das3_cdf -l warning -i test/ex12_sounder_xyz.d3t -o $(BD) -r + cmp $(BD)/ex12_sounder_xyz.cdf test/ex12_sounder_xyz.cdf + @echo "INFO: Good, CDF matches expected output." test_spice:$(BD) $(BD)/$(TARG).a $(BUILD_TEST_PROGS) $(BULID_UTIL_PROGS) @echo "INFO: Running unit test for spice error redirect, $(BD)/TestSpice..." diff --git a/test/ex12_sounder_xyz.cdf b/test/ex12_sounder_xyz.cdf new file mode 100644 index 0000000000000000000000000000000000000000..35632888c353860b664214945fe5ebeb18d7214d GIT binary patch literal 144630 zcmeFYbyOYAvNw#o6C^mnodChzU4kdL1b4S=T!KT8-~>%@2*KSYXmEE8?ripcH%Xpz zo_o)^Yu)$#{`uBA>9wY-x~qC-x~lqDJ+o(jJBNaXf&zn~eimq62!XU83$!Stf`uH2 zkOSd242~-!)oF3 z#+23G*u|LD!oeLy-O?PXbH)s}24BCxzj<`YlIz zG~HkPZ~Bu!bN0CXQwA*w>4f_whx7SGVP+xpw}1XYe~EtAzuf|Mv~_U(FM|Kfh6H5V z@c(VfA9axZl=c0uI4UQ#`c_Mzr@f+5Q_ARM+|^aO33ls)%gCu`hU{LrSh}< zbt*{Xr>p+fhLUo0Ftz-x_n%6B$FKjd`Tsr4;cx$DlSdo>!+!tlhi`-Mk8lM4Xje^T zISuuH3jb3%e#pd;e@!068$uuL#`&xLGgg0_{1NDX6?>Oo(!X0D>Aze5XOutc|2`9h zAPPaMe^_5j?4_ZGuBy~O<^Pe~BT)Zk{Vx#y(QbcP9}U9)i}inJBSSMt(uBw#RrDa$ zZS@(AoTr zxwE;wsrj!l|4H@WncV5``I12BBiR3y2p(#Kap=j&~Kd0o!lU+&Fg31e`NJ&lbpvT^S@huPy!JB-=Txy0pTCVKl<>m z<@Yb%SCW0qZ;$0~?#HNtwEuGdBmIAHKgK0w+~3?EDhO#qZs;fdpWOd@&xi5)QS%?D z>+t4{i}`=#?)%YQs{a@6|J&lns(!Q~(Ie}1d&JW$Iy8k`M(VvTZr!OyaD0<9y(Awgg<+J(f=uQes4u^G9bDz zE)H(?X6DY2-I}YLv;D8p|6%o`4{{*KPw@EP1IXXEZ%=*!_AkRdp6}70KOcC0bv@R& zKuGl%DSzL-aXd=?gNrC+?!R;JPb)my?QuOk#^_^=KicbOdGyO;`L9s-cOU$v`IA2S z;Afmaj`^nq&mY47cON|er~E&X6NAk9?>>06+h0C-?Ee=Z{P(@)->~$j0sq3%#}hps z|8j!A@4=-Z3V*-)qw-%@$M|=HwG22Y>FX zAX)LL7iO7vOk5e8eut5lv=^~41zf}Zal=8nv#Y^l$lq|yY{;_D4#sg?YctR*Z=-%r zcB}|4IKCbp%-PGy6npJL0?;lb?Tu#1tJ#n~Ay3jhjr{`La7ZDNX(1mOKmL|7p@PSd z$Ml)&W>ls3bd<0DyvT~Q$oK$bbppo;wEYmGBPf$`|G{Wf8^oUsus?H1E5#MdmV7^v zFVuBAZAi5%|C$A~yoTW$xoE=tu4Xe5zO5jcps_e96*{x=0Pg5Qd-MMGM-Hw2hGp=P z+q|_?l(70+=^-}1+L#j5-J^@ z=9stE6HrWBEaDUN3nqKA?TY!&T_PY50k~MO&m%Hsm000uji(rWBYR(ewC?P51Cu3s zHFn5xN92nh&5e)wxs8J0&DzG-a{{iU$%WC_$)c@}hCsK(`r zj=<%%`d|@gf~O;!?oz}4D96v~U)d<28rT-Z9A{5-ak7meFT@0vYoUGMa=`4}F|d6QUq8Z)nA#>F znbB#IE;Xb)c9kZvXviJk(dIRl%oad%9fKRc%Y{=_9`Cx3TV2?cuo=M3FE7772V_r8 zoKX76TF^e#eOf6!j57a`G{@}~bc8%PY>G`=oX@gFJr1hW<{M$kmG|NSBe($_A?BMZ z70SV*qqf9 zaxmQaSpf=J51S=GUY(lrgn7nVs^EL9o~_gmi9$T4{mCP~%e}Ansm)pXZjXh!mjKg9 z_8g=)-?+j*U~Cd<)0MBHYm9m+RAk1X}OChU&h*3T#aw9 z91Zhywl&*V>n-%t1I#h{Xq|As@nA#urXZbn+$r3H?|_4V;Rx+wv34Pgi789Tua|Ax z85%Dr&oMf`hw_J?UiH-(bE?^WqiF5F-tnbf=^GjNNI1zLbr@6;^wAvptDcq2XMB~z zY2@V|A`kCzAQN(golH$0_xEaJIuiQbu*F%UVNE$nr%dA$E+I5LaHgnXV*rMrwdfYk zi^i*MG$db^kQTt3brMohazqJNHiwY6 p&%8OH&#aLW3cjx9-jBa>rE;vX6O7t9% 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
M?3Y?kUf#mMl5Sg-(_wm5&$YpTL26Clo0d_lP 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 literal 0 HcmV?d00001 diff --git a/utilities/das3_cdf.c b/utilities/das3_cdf.c index dd11c35..467c32e 100644 --- a/utilities/das3_cdf.c +++ b/utilities/das3_cdf.c @@ -29,7 +29,12 @@ #include #include #include - +#ifdef _WIN32 +#define strcasecmp _stricmp +#define strncasecmp _strnicmp +#else +#include +#endif #include @@ -67,7 +72,7 @@ /* The default memory threshold, don't write data to disk until a dateset is bigger then this (except onClose) */ -size_t g_nMemBufThreshold = 16777216; /* 16 MBytes */ +#define DEF_FLUSH_BYTES 16777216; /* 16 MBytes */ #define THRESH "16 MB" @@ -191,25 +196,37 @@ void prnHelp() " Set the location where server authentication tokens (if any)\n" " are saved. Defaults to %s%s%s\n" "\n" -" -U MEGS,--mem-use=MEGS\n" +" -u,-uncompressed\n" +" Disables zlib compression. All variables are written uncompressed\n" +" This is needed for any CDF files submitted to the Planetary Data\n" +" system. Per ISTP rules, Epoch variables are not compressed.\n" +"\n" +" -m MEGS,--memory=MEGS\n" " To avoid constant writes, " PROG " buffers datasets in memory\n" " until they are " THRESH " or larger and then they are written\n" " to disk. Use this parameter to change the threshold. Using\n" -" a large value can increase performance for large datasets.\n" +" a large value can increase performance for large datasets. The\n" +" special values 'inf', 'infinite' or '∞' can be used to only write\n" +" record data after the stream completes." "\n", HOME_VAR_STR, DAS_DSEPS, DEF_AUTH_FILE); printf( "EXAMPLES\n" -" 1. Convert a local das stream file to a CDF file:\n" +" 1. Convert a local das stream file to a CDF file.\n" "\n" " cat my_data.d3b | " PROG " -o my_data.cdf\n" "\n" " 2. Read from a remote das server and write data to the current directory,\n" -" auto-generating the CDF file name:\n" +" auto-generating the CDF file name.\n" "\n" " " PROG " -i https://college.edu/mission/inst?beg=2014&end=2015 -o ./\n" -"\n"); +"\n" +" 3. Create a PDS archive file. Compression is disabled and records are\n" +" buffered in RAM before writing a single continuous block per variable.\n" +"\n" +" cat my_pds_data.d3b " PROG " -o my_pds_data.cdf -u -m infinite\n" +); printf( "AUTHOR\n" @@ -280,7 +297,9 @@ static bool _getArgVal( } typedef struct program_optitons{ - bool bRmFirst; + bool bRmFirst; /* remove output before writing */ + bool bUncompressed; /* don't compress data */ + size_t uMemThreshold; char aTpltFile[256]; /* Template CDF */ char aSource[1024]; /* Input source, http://, file:// etc. */ char aOutFile[256]; /* Non-filter: output */ @@ -289,13 +308,14 @@ typedef struct program_optitons{ char aCredFile[256]; } popts_t; - #define FIELD_SZ(type, field) (sizeof(((type*)NULL)->field)) int parseArgs(int argc, char** argv, popts_t* pOpts) { memset(pOpts, 0, sizeof(popts_t)); pOpts->bRmFirst = false; + pOpts->bUncompressed = false; + pOpts->uMemThreshold = DEF_FLUSH_BYTES; char sMemThresh[32] = {'\0'}; @@ -325,8 +345,12 @@ int parseArgs(int argc, char** argv, popts_t* pOpts) pOpts->bRmFirst = true; continue; } + if(_isArg(argv[i], "-u", "--uncompressed", NULL)){ + pOpts->bUncompressed = true; + continue; + } if(_getArgVal( - sMemThresh, 32, argv, argc, &i, "-U", "--mem-use=" + sMemThresh, 32, argv, argc, &i, "-m", "--memory=" )) continue; if(_getArgVal( @@ -360,11 +384,14 @@ int parseArgs(int argc, char** argv, popts_t* pOpts) float fMemUse; if(sMemThresh[0] != '\0'){ - if((sscanf(sMemThresh, "%f", &fMemUse) != 1)||(fMemUse < 1)){ - return das_error(PERR, "Invalid memory usage argument, '%s' MB", sMemThresh); + if((strncmp(sMemThresh, "inf", 3)==0)||(strcmp(sMemThresh, "∞") == 0)){ + pOpts->uMemThreshold = (sizeof(size_t) == 4 ? 0xFFFFFFFF : 0xFFFFFFFFFFFFFFuLL); } else{ - g_nMemBufThreshold = (size_t)fMemUse; + if((sscanf(sMemThresh, "%f", &fMemUse) != 1)||(fMemUse < 1)) + return das_error(PERR, "Invalid memory usage argument, '%s' MB", sMemThresh); + else + pOpts->uMemThreshold = ((size_t)fMemUse) * 1048576ull ; } } @@ -374,13 +401,13 @@ int parseArgs(int argc, char** argv, popts_t* pOpts) /* ************************************************************************* */ struct context { + bool bCompress; + size_t uFlushSz; /* How big to let internal memory grow before a CDF flush */ CDFid nCdfId; char* sTpltFile; /* An empty template CDF to put data in */ char* sWriteTo; /* DasTime dtBeg; */ /* Start point for initial query, if known */ /* double rInterval; */ /* Size of original query, if known */ - - uint32_t uFlushSz; /* How big to let internal memory grow before a CDF flush */ }; /* sending CDF message to the log ****************************************** */ @@ -606,7 +633,7 @@ void* DasProp_cdfEntValues(const DasProp* pProp, long iEntry){ return NULL; } -DasErrCode writeGlobalProp(CDFid iCdf, const DasProp* pProp) +DasErrCode writeGlobalProp(struct context* pCtx, const DasProp* pProp) { CDFstatus iStatus = CDF_OK; /* Also used by _OK macro */ @@ -620,13 +647,13 @@ DasErrCode writeGlobalProp(CDFid iCdf, const DasProp* pProp) /* Get attribute number or make a new (why can't CDFlib use "const", is it really so hard? */ - if((iAttr = CDFgetAttrNum(iCdf, (char*)sName)) <= 0){ - if(!_OK(CDFcreateAttr(iCdf, sName, GLOBAL_SCOPE, &iAttr))) + if((iAttr = CDFgetAttrNum(pCtx->nCdfId, (char*)sName)) <= 0){ + if(!_OK(CDFcreateAttr(pCtx->nCdfId, sName, GLOBAL_SCOPE, &iAttr))) return PERR; } iStatus = CDFputAttrgEntry( - iCdf, + pCtx->nCdfId, iAttr, iEntry, DasProp_cdfType(pProp), @@ -640,7 +667,7 @@ DasErrCode writeGlobalProp(CDFid iCdf, const DasProp* pProp) return DAS_OKAY; } -DasErrCode writeVarProp(CDFid iCdf, long iVarNum, const DasProp* pProp) +DasErrCode writeVarProp(struct context* pCtx, long iVarNum, const DasProp* pProp) { CDFstatus iStatus; /* Used by _OK macro */ @@ -649,13 +676,13 @@ DasErrCode writeVarProp(CDFid iCdf, long iVarNum, const DasProp* pProp) const char* sName = DasProp_cdfName(pProp); - if((iAttr = CDFattrId(iCdf, sName)) < 0){ - if(! _OK(CDFcreateAttr(iCdf,sName,VARIABLE_SCOPE,&iAttr))) + if((iAttr = CDFattrId(pCtx->nCdfId, sName)) < 0){ + if(! _OK(CDFcreateAttr(pCtx->nCdfId,sName,VARIABLE_SCOPE,&iAttr))) return PERR; } if(!_OK(CDFputAttrzEntry( - iCdf, + pCtx->nCdfId, iAttr, iVarNum, DasProp_cdfType(pProp), @@ -668,7 +695,7 @@ DasErrCode writeVarProp(CDFid iCdf, long iVarNum, const DasProp* pProp) } DasErrCode writeVarStrAttr( - CDFid iCdf, long iVarNum, const char* sName, const char* sValue + struct context* pCtx, long iVarNum, const char* sName, const char* sValue ){ CDFstatus iStatus; /* Used by _OK macro */ @@ -680,13 +707,13 @@ DasErrCode writeVarStrAttr( /* If the attribute doesn't exist, we'll need to create it first */ long iAttr; - if((iAttr = CDFattrId(iCdf, sName)) < 0){ - if(! _OK(CDFcreateAttr(iCdf, sName, VARIABLE_SCOPE, &iAttr ))) + if((iAttr = CDFattrId(pCtx->nCdfId, sName)) < 0){ + if(! _OK(CDFcreateAttr(pCtx->nCdfId, sName, VARIABLE_SCOPE, &iAttr ))) return PERR; } if(! _OK(CDFputAttrzEntry( - iCdf, + pCtx->nCdfId, iAttr, iVarNum, CDF_CHAR, @@ -749,7 +776,7 @@ DasErrCode onStream(StreamDesc* pSd, void* pUser){ if(strcmp(DasProp_name(pProp), "CDF_NAME") == 0) continue; - if(writeGlobalProp(pCtx->nCdfId, pProp) != DAS_OKAY) + if(writeGlobalProp(pCtx, pProp) != DAS_OKAY) return PERR; } @@ -1157,7 +1184,7 @@ long DasVar_cdfNonRecDims( } DasErrCode makeCdfVar( - CDFid nCdfId, DasDim* pDim, DasVar* pVar, int nDsRank, ptrdiff_t* pDsShape, + struct context* pCtx, DasDim* pDim, DasVar* pVar, int nDsRank, ptrdiff_t* pDsShape, char* sNameBuf ){ ptrdiff_t aMin[DASIDX_MAX] = {0}; @@ -1219,7 +1246,7 @@ DasErrCode makeCdfVar( DasVar_cdfName(pDim, pVar, sNameBuf, DAS_MAX_ID_BUFSZ - 1); CDFstatus iStatus = CDFcreatezVar( - nCdfId, /* CDF File ID */ + pCtx->nCdfId, /* CDF File ID */ sNameBuf, /* Varible's name */ DasVar_cdfType(pVar), /* CDF Data type of variable */ (nIntrRank > 0) ? (long) aIntr[0] : 1L, /* Character length, if needed */ @@ -1232,6 +1259,20 @@ DasErrCode makeCdfVar( if(!_cdfOkayish(iStatus)) return PERR; + /* If the data types is not TT2000 or doesn't start with 'Epoch' go ahead + and compress it if we're able */ + if( (pCtx->bCompress) && (DasVar_cdfType(pVar) != CDF_TIME_TT2000) + && ( strncasecmp(sNameBuf, "epoch", 5) != 0) + ){ + long cType = GZIP_COMPRESSION; + long cParams[CDF_MAX_PARMS]; + cParams[0] = 6L; + if(!_OK(CDFsetzVarCompression( + pCtx->nCdfId, DasVar_cdfId(pVar), cType, cParams + ))) + return PERR; + } + /* If the is a record varying varible and it has an array, mark that array as one we'll clear after each batch of data is written */ if(nRecVary == VARY){ @@ -1296,7 +1337,7 @@ DasErrCode makeCdfVar( } iStatus = CDFhyperPutzVarData( - nCdfId, /* CDF File ID */ + pCtx->nCdfId, /* CDF File ID */ DasVar_cdfId(pVar), /* Shamelessly use point as an long int storage */ 0, /* record start */ 1, /* number for records to write */ @@ -1316,7 +1357,7 @@ DasErrCode makeCdfVar( } DasErrCode writeVarProps( - CDFid nCdfId, DasDim* pDim, DasVar* pVar, VarInfo* pCoords, size_t uCoords + struct context* pCtx, DasDim* pDim, DasVar* pVar, VarInfo* pCoords, size_t uCoords ){ char sAttrName[64] = {'\0'}; @@ -1355,7 +1396,7 @@ DasErrCode writeVarProps( if((pCoords + u)->iDep == iIdx){ snprintf(sAttrName, 15, "DEPEND_%d", iIdx); writeVarStrAttr( - nCdfId, + pCtx, DasVar_cdfId(pVar), sAttrName, (pCoords+u)->sCdfName /* CDF name of the coordinate */ @@ -1396,12 +1437,12 @@ DasErrCode writeVarProps( } } - writeVarStrAttr(nCdfId, DasVar_cdfId(pVar), "UNITS", sUnits); + writeVarStrAttr(pCtx, DasVar_cdfId(pVar), "UNITS", sUnits); if(pDim->dtype == DASDIM_COORD) - writeVarStrAttr(nCdfId, DasVar_cdfId(pVar), "VAR_TYPE", "support_data"); + writeVarStrAttr(pCtx, DasVar_cdfId(pVar), "VAR_TYPE", "support_data"); else - writeVarStrAttr(nCdfId, DasVar_cdfId(pVar), "VAR_TYPE", "data"); + writeVarStrAttr(pCtx, DasVar_cdfId(pVar), "VAR_TYPE", "data"); return DAS_OKAY; } @@ -1453,7 +1494,7 @@ DasErrCode onDataSet(StreamDesc* pSd, DasDs* pDs, void* pUser) if(strcmp(DasProp_name(pProp), "CDF_NAME") == 0) continue; - if(writeGlobalProp(pCtx->nCdfId, pProp) != DAS_OKAY) + if(writeGlobalProp(pCtx, pProp) != DAS_OKAY) return PERR; } @@ -1469,11 +1510,11 @@ DasErrCode onDataSet(StreamDesc* pSd, DasDs* pDs, void* pUser) VarInfo* pVi = (pCdfCoords + u); if((nRet = makeCdfVar( - pCtx->nCdfId, pVi->pDim, pVi->pVar, nDsRank, aDsShape, pVi->sCdfName + pCtx, pVi->pDim, pVi->pVar, nDsRank, aDsShape, pVi->sCdfName )) != DAS_OKAY) return nRet; - nRet = writeVarProps(pCtx->nCdfId, pVi->pDim, pVi->pVar, pCdfCoords, uCoords); + nRet = writeVarProps(pCtx, pVi->pDim, pVi->pVar, pCdfCoords, uCoords); if(nRet != DAS_OKAY) return nRet; } @@ -1489,11 +1530,11 @@ DasErrCode onDataSet(StreamDesc* pSd, DasDs* pDs, void* pUser) for(size_t v = 0; v < uVars; ++v){ DasVar* pVar = (DasVar*) DasDim_getVarByIdx(pDim, v); - nRet = makeCdfVar(pCtx->nCdfId, pDim, pVar, nDsRank, aDsShape, sNameBuf); + nRet = makeCdfVar(pCtx, pDim, pVar, nDsRank, aDsShape, sNameBuf); if(nRet != DAS_OKAY) return nRet; - nRet = writeVarProps(pCtx->nCdfId, pDim, pVar, pCdfCoords, uCoords); + nRet = writeVarProps(pCtx, pDim, pVar, pCdfCoords, uCoords); if(nRet != DAS_OKAY) return nRet; } @@ -1684,7 +1725,7 @@ DasErrCode onData(StreamDesc* pSd, DasDs* pDs, void* pUser) daslog_debug_v("Dataset memory indexed: %zu bytes", DasDs_memIndexed(pDs)); } - if(DasDs_memUsed(pDs) > g_nMemBufThreshold) + if(DasDs_memUsed(pDs) > pCtx->uFlushSz) return writeAndClearData(pDs, pCtx); return DAS_OKAY; @@ -1808,6 +1849,8 @@ int main(int argc, char** argv) memset(&ctx, 0, sizeof(struct context)); ctx.sWriteTo = sWriteTo; ctx.sTpltFile = opts.aTpltFile; + ctx.bCompress = !opts.bUncompressed; + ctx.uFlushSz = opts.uMemThreshold; /* Figure out where we're gonna write before potentially contacting servers */ bool bReStream = false;