You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
184 lines
8.0 KiB
C
184 lines
8.0 KiB
C
2 years ago
|
#include <tau/tau.h>
|
||
|
#include <libmseed.h>
|
||
|
|
||
|
TEST (trace, read)
|
||
|
{
|
||
|
MS3TraceList *mstl = NULL;
|
||
|
MS3TraceID *id = NULL;
|
||
|
nstime_t starttime;
|
||
|
nstime_t endtime;
|
||
|
uint32_t flags = 0;
|
||
|
int rv;
|
||
|
|
||
|
char *path = "data/testdata-oneseries-mixedlengths-mixedorder.mseed2";
|
||
|
|
||
|
starttime = ms_timestr2nstime ("2010-02-27T06:50:00.069539Z");
|
||
|
endtime = ms_timestr2nstime ("2010-02-27T07:55:51.069539Z");
|
||
|
|
||
|
flags = MSF_UNPACKDATA;
|
||
|
rv = ms3_readtracelist (&mstl, path, NULL, 0, flags, 0);
|
||
|
|
||
|
CHECK (rv == MS_NOERROR, "ms3_readtracelist() did not return expected MS_NOERROR");
|
||
|
REQUIRE (mstl != NULL, "ms3_readtracelist() did not populate 'mstl'");
|
||
|
CHECK (mstl->numtraceids == 1, "mstl->numtraceids is not expected 1");
|
||
|
|
||
|
id = mstl->traces.next[0];
|
||
|
|
||
|
REQUIRE (id != NULL, "mstl->traces.next[0] is not populated");
|
||
|
REQUIRE (id->first != NULL, "id->first is not populated");
|
||
|
CHECK_STREQ (id->sid, "FDSN:XX_TEST_00_L_H_Z");
|
||
|
CHECK (id->earliest == starttime, "Earliest time is not expected '2010-02-27T06:50:00.069539Z'");
|
||
|
CHECK (id->latest == endtime, "Latest time is not expected '2010-02-27T07:55:51.069539Z'");
|
||
|
CHECK (id->pubversion == 1, "id->pubversion is not expected 1");
|
||
|
CHECK (id->numsegments == 1, "id->numsegments is not expected 1");
|
||
|
CHECK (id->first->starttime == starttime, "Segment start is not expected '2010-02-27T06:50:00.069539Z'");
|
||
|
CHECK (id->first->endtime == endtime, "Segment start is not expected '2010-02-27T07:55:51.069539Z'");
|
||
|
CHECK (id->first->samplecnt == 3952, "id->first->samplecnt is not expected 3952");
|
||
|
CHECK (id->first->sampletype == 'i', "id->first->sampletype is not expected 'i'");
|
||
|
CHECK (id->first->numsamples == 3952, "id->first->numsamples is not expected 3952");
|
||
|
CHECK (id->next[0] == NULL, "id->next[0] is not expected NULL");
|
||
|
CHECK (id->first->next == NULL, "id->first->next is not expected NULL");
|
||
|
CHECK (id->first == id->last, "id->first is not equal to id->last as expected");
|
||
|
|
||
|
mstl3_free (&mstl, 1);
|
||
|
}
|
||
|
|
||
|
TEST (read, recptr_file)
|
||
|
{
|
||
|
MS3TraceList *mstl = NULL;
|
||
|
MS3TraceID *id = NULL;
|
||
|
MS3RecordPtr *recptr = NULL;
|
||
|
nstime_t endtime;
|
||
|
int64_t unpacked;
|
||
|
uint32_t flags = 0;
|
||
|
int32_t *int32s;
|
||
|
int rv;
|
||
|
|
||
|
char *path = "data/testdata-oneseries-mixedlengths-mixedorder.mseed2";
|
||
|
|
||
|
endtime = ms_timestr2nstime ("2010-02-27T07:55:51.069539Z");
|
||
|
|
||
|
/* Set bit flag to build a record list */
|
||
|
flags = MSF_RECORDLIST;
|
||
|
|
||
|
rv = ms3_readtracelist (&mstl, path, NULL, 0, flags, 0);
|
||
|
|
||
|
CHECK (rv == MS_NOERROR, "ms3_readtracelist() did not return expected MS_NOERROR");
|
||
|
REQUIRE (mstl != NULL, "ms3_readtracelist() did not populate 'mstl'");
|
||
|
CHECK (mstl->numtraceids == 1, "mstl->numtraceids is not expected 1");
|
||
|
|
||
|
id = mstl->traces.next[0];
|
||
|
|
||
|
REQUIRE (id != NULL, "mstl->traces.next[0] is not populated");
|
||
|
REQUIRE (id->first != NULL, "id->first is not populated");
|
||
|
REQUIRE (id->first->recordlist != NULL, "id->first->recordlist is not populated");
|
||
|
CHECK (id->first->samplecnt == 3952, "id->first->samplecnt is not expected 3952");
|
||
|
|
||
|
/* No data has been decoded */
|
||
|
CHECK (id->first->sampletype == 0, "id->first->sampletype is not expected 0");
|
||
|
CHECK (id->first->datasamples == NULL, "id->first->datasamples is not expected NULL");
|
||
|
CHECK (id->first->numsamples == 0, "id->first->numsamples is not expected 0");
|
||
|
|
||
|
recptr = id->first->recordlist->last;
|
||
|
CHECK (recptr->filename != NULL, "recptr->filename is unexpected NULL"); /* Record is in a file */
|
||
|
CHECK (recptr->bufferptr == NULL, "recptr->bufferptr is not expected NULL"); /* Record is not in a buffer */
|
||
|
CHECK (recptr->fileptr == NULL, "recptr->fileptr is not expected NULL"); /* File is not currently open, closed by read routine */
|
||
|
CHECK (recptr->fileoffset == 1152, "recptr->fileoffset is not expected 1152");
|
||
|
CHECK (recptr->msr != NULL, "recptr->msr is not expected NULL");
|
||
|
CHECK (recptr->endtime == endtime, "recptr->endtime is not expected '2010-02-27T07:55:51.069539Z'");
|
||
|
CHECK (recptr->dataoffset == 64, "recptr->dataoffset is not expected 64");
|
||
|
CHECK (recptr->next == NULL, "recptr->next is not exected NULL");
|
||
|
|
||
|
/* Decode data */
|
||
|
unpacked = mstl3_unpack_recordlist (id, id->first, NULL, 0, 0);
|
||
|
|
||
|
CHECK (unpacked == id->first->samplecnt, "Return from mstl3_unpack_recordlist is not expected id->first->samplecnt");
|
||
|
CHECK (id->first->sampletype == 'i', "id->first->sampletype is not expected 'i'");
|
||
|
CHECK (id->first->datasamples != NULL, "id->first->datasamples is unexpected NULL");
|
||
|
CHECK (id->first->numsamples == 3952, "id->first->numsamples is not expected 3952");
|
||
|
|
||
|
int32s = (int32_t *)id->first->datasamples;
|
||
|
CHECK (int32s[3948] == 28067, "Decoded sample value mismatch");
|
||
|
CHECK (int32s[3949] == -9565, "Decoded sample value mismatch");
|
||
|
CHECK (int32s[3950] == -71961, "Decoded sample value mismatch");
|
||
|
CHECK (int32s[3951] == -146622, "Decoded sample value mismatch");
|
||
|
|
||
|
mstl3_free (&mstl, 1);
|
||
|
}
|
||
|
|
||
|
TEST (read, recptr_buffer)
|
||
|
{
|
||
|
char buffer[16256];
|
||
|
FILE *fp = NULL;
|
||
|
|
||
|
MS3TraceList *mstl = NULL;
|
||
|
MS3TraceID *id = NULL;
|
||
|
MS3RecordPtr *recptr = NULL;
|
||
|
nstime_t endtime;
|
||
|
int64_t unpacked;
|
||
|
uint32_t flags = 0;
|
||
|
int32_t *int32s;
|
||
|
size_t rv;
|
||
|
|
||
|
char *path = "data/testdata-oneseries-mixedlengths-mixedorder.mseed2";
|
||
|
|
||
|
/* Read test data into buffer */
|
||
|
fp = fopen (path, "rb");
|
||
|
REQUIRE (fp != NULL, "File pointer is unexpected NULL");
|
||
|
|
||
|
rv = fread (buffer, sizeof(buffer), 1, fp);
|
||
|
REQUIRE (rv == 1, "fread() did not read entire file");
|
||
|
|
||
|
fclose (fp);
|
||
|
|
||
|
endtime = ms_timestr2nstime ("2010-02-27T07:55:51.069539Z");
|
||
|
|
||
|
/* Set bit flag to build a record list */
|
||
|
flags = MSF_RECORDLIST;
|
||
|
|
||
|
rv = mstl3_readbuffer (&mstl, buffer, sizeof(buffer), 0, flags, 0, 0);
|
||
|
|
||
|
CHECK (rv == 7, "mstl3_readbuffer did not return expected 7");
|
||
|
CHECK (mstl != NULL, "mstl3_readbuffer did not populate 'mstl'");
|
||
|
CHECK (mstl->numtraceids == 1, "mstl->numtraceids is not expected 1");
|
||
|
|
||
|
id = mstl->traces.next[0];
|
||
|
|
||
|
REQUIRE (id != NULL, "mstl->traces.next[0] is not populated");
|
||
|
REQUIRE (id->first != NULL, "id->first is unexpected NULL");
|
||
|
REQUIRE (id->first->recordlist, "id->first->recordlist is unexpected NULL");
|
||
|
CHECK (id->first->samplecnt == 3952, "id->first->samplecnt is not expected 3952");
|
||
|
|
||
|
/* No data has been decoded */
|
||
|
CHECK (id->first->sampletype == 0, "id->first->sampletype is not expected 0");
|
||
|
CHECK (id->first->datasamples == NULL, "id->first->datasamples is unexpected NULL");
|
||
|
CHECK (id->first->numsamples == 0, "id->first->numsamples is not expected 0");
|
||
|
|
||
|
recptr = id->first->recordlist->last;
|
||
|
CHECK (recptr != NULL, "id->first->recordlist->last is unexpected NULL");
|
||
|
CHECK (recptr->filename == NULL, "recptr->filename is not expected NULL"); /* Record is not in a file */
|
||
|
CHECK (recptr->bufferptr != NULL, "recptr->bufferptr is unexpected NULL"); /* Record is in a buffer */
|
||
|
CHECK (recptr->fileptr == NULL, "recptr->fileptr is not expected NULL"); /* File is not currently open, closed by read routine */
|
||
|
|
||
|
CHECK (recptr->fileoffset == 0, "recptr->fileoffset is not expected 0");
|
||
|
CHECK (recptr->msr != NULL, "recptr->msr is not expected NULL");
|
||
|
CHECK (recptr->endtime == endtime, "recptr->endtime is not expected '2010-02-27T07:55:51.069539Z'");
|
||
|
CHECK (recptr->dataoffset == 64, "recptr->dataoffset is not expected 64");
|
||
|
CHECK (recptr->next == NULL, "recptr->next is not expected NULL");
|
||
|
|
||
|
/* Decode data */
|
||
|
unpacked = mstl3_unpack_recordlist (id, id->first, NULL, 0, 0);
|
||
|
|
||
|
CHECK (unpacked == id->first->samplecnt, "Return from mstl3_unpack_recordlist is not expected id->first->samplecnt");
|
||
|
CHECK (id->first->sampletype == 'i', "id->first->sampletype is not expected 'i'");
|
||
|
CHECK (id->first->datasamples != NULL, "id->first->datasamples is unexpected NULL");
|
||
|
CHECK (id->first->numsamples == 3952, "id->first->numsamples is not expected 3952");
|
||
|
|
||
|
int32s = (int32_t *)id->first->datasamples;
|
||
|
CHECK (int32s[3948] == 28067, "Decoded sample value mismatch");
|
||
|
CHECK (int32s[3949] == -9565, "Decoded sample value mismatch");
|
||
|
CHECK (int32s[3950] == -71961, "Decoded sample value mismatch");
|
||
|
CHECK (int32s[3951] == -146622, "Decoded sample value mismatch");
|
||
|
|
||
|
mstl3_free (&mstl, 1);
|
||
|
}
|