Firmware: chunked sending
This commit is contained in:
@@ -117,6 +117,7 @@ void testSessionChunkSerialization()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void testSession() {
|
||||
const uint32_t SESSION_SIZE = 128;
|
||||
typedef MeasurementSession<uint16_t, MockStorageReader, MockStorageWriter, SESSION_SIZE> MockSession;
|
||||
@@ -144,6 +145,47 @@ void testSession() {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void testPartialSessionSerialization() {
|
||||
const uint32_t SESSION_SIZE = 128;
|
||||
typedef MeasurementSession<uint16_t, MockStorageReader, MockStorageWriter, SESSION_SIZE> MockSession;
|
||||
|
||||
const uint32_t startTime = 194842;
|
||||
const uint_t fillSize = SESSION_SIZE * 4 + 7;
|
||||
|
||||
MockSession session;
|
||||
session.init(startTime);
|
||||
for (uint16_t i = 0; i < fillSize; ++i) {
|
||||
session.addPoint(i);
|
||||
}
|
||||
|
||||
std::vector<uint8_t> data;
|
||||
VectorAdaptor adaptor( &data );
|
||||
|
||||
StreamingMsgPackEncoder<VectorAdaptor> encoder(&adaptor);
|
||||
encoder.setSizeCountMode(true);
|
||||
session.serialize(encoder, 0);
|
||||
auto totalSize = encoder.getContentLength();
|
||||
|
||||
std::vector<uint32_t> splits = {16, 32, 128, 256, 512, 721, 1024, totalSize};
|
||||
uint32_t written = 0;
|
||||
data.clear();
|
||||
for(auto & split : splits) {
|
||||
ChunkedStreamingMsgPackEncoder<VectorAdaptor> encoder(&adaptor, written, split);
|
||||
session.serialize(encoder, 0);
|
||||
written = encoder.sentBytes();
|
||||
}
|
||||
|
||||
uint32_t readStartTime=0;
|
||||
uint32_t readStartIndex=0;
|
||||
auto result = parseMessagePack<uint16_t>(&data[0], readStartTime, readStartIndex);
|
||||
TEST_ASSERT_MESSAGE(readStartIndex == 0 && startTime == readStartTime, "");
|
||||
TEST_ASSERT_MESSAGE(result.size() == fillSize, "Wrong result array size");
|
||||
for( uint16_t i=0; i < fillSize; ++i) {
|
||||
TEST_ASSERT_MESSAGE(result[i] == i, "Wrong array contents");
|
||||
}
|
||||
}
|
||||
|
||||
void allTests()
|
||||
{
|
||||
UNITY_BEGIN();
|
||||
@@ -151,6 +193,7 @@ void allTests()
|
||||
RUN_TEST(testSessionChunkGetterSetter);
|
||||
RUN_TEST(testSessionChunkSerialization);
|
||||
RUN_TEST(testSession);
|
||||
RUN_TEST(testPartialSessionSerialization);
|
||||
UNITY_END();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user