diff options
author | Romain Forlot <romain.forlot@iot.bzh> | 2017-06-20 10:24:05 +0000 |
---|---|---|
committer | Romain Forlot <romain.forlot@iot.bzh> | 2017-06-20 10:24:05 +0000 |
commit | 32e25cbca210a359b09768537b6f443fe90a3070 (patch) | |
tree | 3309794c15d8a8f8e9c1c08cad072ee1378813ba /CAN-binder/libs/nanopb/tests/io_errors | |
parent | 76c43dec62b2e21cd6446360c00d4fe6b437533f (diff) |
Separation Generator to a dedicated repo
Change-Id: Id94831651c3266861435272a6e36c7884bef2c45
Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
Diffstat (limited to 'CAN-binder/libs/nanopb/tests/io_errors')
-rw-r--r-- | CAN-binder/libs/nanopb/tests/io_errors/SConscript | 15 | ||||
-rw-r--r-- | CAN-binder/libs/nanopb/tests/io_errors/alltypes.options | 3 | ||||
-rw-r--r-- | CAN-binder/libs/nanopb/tests/io_errors/io_errors.c | 140 |
3 files changed, 0 insertions, 158 deletions
diff --git a/CAN-binder/libs/nanopb/tests/io_errors/SConscript b/CAN-binder/libs/nanopb/tests/io_errors/SConscript deleted file mode 100644 index 60146cc0..00000000 --- a/CAN-binder/libs/nanopb/tests/io_errors/SConscript +++ /dev/null @@ -1,15 +0,0 @@ -# Simulate io errors when encoding and decoding - -Import("env") - -c = Copy("$TARGET", "$SOURCE") -env.Command("alltypes.proto", "#alltypes/alltypes.proto", c) - -env.NanopbProto(["alltypes", "alltypes.options"]) - -ioerr = env.Program(["io_errors.c", "alltypes.pb.c", - "$COMMON/pb_encode.o", "$COMMON/pb_decode.o", "$COMMON/pb_common.o"]) - -env.RunTest("io_errors.output", [ioerr, "$BUILD/alltypes/encode_alltypes.output"]) - - diff --git a/CAN-binder/libs/nanopb/tests/io_errors/alltypes.options b/CAN-binder/libs/nanopb/tests/io_errors/alltypes.options deleted file mode 100644 index 0d5ab12b..00000000 --- a/CAN-binder/libs/nanopb/tests/io_errors/alltypes.options +++ /dev/null @@ -1,3 +0,0 @@ -* max_size:16 -* max_count:5 -*.*fbytes fixed_length:true max_size:4 diff --git a/CAN-binder/libs/nanopb/tests/io_errors/io_errors.c b/CAN-binder/libs/nanopb/tests/io_errors/io_errors.c deleted file mode 100644 index 76f35b08..00000000 --- a/CAN-binder/libs/nanopb/tests/io_errors/io_errors.c +++ /dev/null @@ -1,140 +0,0 @@ -/* Simulate IO errors after each byte in a stream. - * Verifies proper error propagation. - */ - -#include <stdio.h> -#include <pb_decode.h> -#include <pb_encode.h> -#include "alltypes.pb.h" -#include "test_helpers.h" - -typedef struct -{ - uint8_t *buffer; - size_t fail_after; -} faulty_stream_t; - -bool read_callback(pb_istream_t *stream, uint8_t *buf, size_t count) -{ - faulty_stream_t *state = stream->state; - - while (count--) - { - if (state->fail_after == 0) - PB_RETURN_ERROR(stream, "simulated"); - state->fail_after--; - *buf++ = *state->buffer++; - } - - return true; -} -bool write_callback(pb_ostream_t *stream, const uint8_t *buf, size_t count) -{ - faulty_stream_t *state = stream->state; - - while (count--) - { - if (state->fail_after == 0) - PB_RETURN_ERROR(stream, "simulated"); - state->fail_after--; - *state->buffer++ = *buf++; - } - - return true; -} - -int main() -{ - uint8_t buffer[2048]; - size_t msglen; - AllTypes msg = AllTypes_init_zero; - - /* Get some base data to run the tests with */ - SET_BINARY_MODE(stdin); - msglen = fread(buffer, 1, sizeof(buffer), stdin); - - /* Test IO errors on decoding */ - { - bool status; - pb_istream_t stream = {&read_callback, NULL, SIZE_MAX}; - faulty_stream_t fs; - size_t i; - - for (i = 0; i < msglen; i++) - { - stream.bytes_left = msglen; - stream.state = &fs; - fs.buffer = buffer; - fs.fail_after = i; - - status = pb_decode(&stream, AllTypes_fields, &msg); - if (status != false) - { - fprintf(stderr, "Unexpected success in decode\n"); - return 2; - } - else if (strcmp(stream.errmsg, "simulated") != 0) - { - fprintf(stderr, "Wrong error in decode: %s\n", stream.errmsg); - return 3; - } - } - - stream.bytes_left = msglen; - stream.state = &fs; - fs.buffer = buffer; - fs.fail_after = msglen; - status = pb_decode(&stream, AllTypes_fields, &msg); - - if (!status) - { - fprintf(stderr, "Decoding failed: %s\n", stream.errmsg); - return 4; - } - } - - /* Test IO errors on encoding */ - { - bool status; - pb_ostream_t stream = {&write_callback, NULL, SIZE_MAX, 0}; - faulty_stream_t fs; - size_t i; - - for (i = 0; i < msglen; i++) - { - stream.max_size = msglen; - stream.bytes_written = 0; - stream.state = &fs; - fs.buffer = buffer; - fs.fail_after = i; - - status = pb_encode(&stream, AllTypes_fields, &msg); - if (status != false) - { - fprintf(stderr, "Unexpected success in encode\n"); - return 5; - } - else if (strcmp(stream.errmsg, "simulated") != 0) - { - fprintf(stderr, "Wrong error in encode: %s\n", stream.errmsg); - return 6; - } - } - - stream.max_size = msglen; - stream.bytes_written = 0; - stream.state = &fs; - fs.buffer = buffer; - fs.fail_after = msglen; - status = pb_encode(&stream, AllTypes_fields, &msg); - - if (!status) - { - fprintf(stderr, "Encoding failed: %s\n", stream.errmsg); - return 7; - } - } - - return 0; -} - |