diff --git a/tests/test-gguf.cpp b/tests/test-gguf.cpp index 84b7f3bc49..8ebd16ba82 100644 --- a/tests/test-gguf.cpp +++ b/tests/test-gguf.cpp @@ -48,6 +48,7 @@ enum handcrafted_file_type { HANDCRAFTED_DATA_NOT_ENOUGH_DATA = 10 + offset_has_data, HANDCRAFTED_DATA_BAD_ALIGN = 15 + offset_has_data, HANDCRAFTED_DATA_INCONSISTENT_ALIGN = 20 + offset_has_data, + HANDCRAFTED_DATA_MEM_SIZE_OVERFLOW = 30 + offset_has_data, HANDCRAFTED_DATA_SUCCESS = 800 + offset_has_data, HANDCRAFTED_DATA_CUSTOM_ALIGN = 810 + offset_has_data, }; @@ -84,6 +85,7 @@ static std::string handcrafted_file_type_name(const enum handcrafted_file_type h case HANDCRAFTED_DATA_NOT_ENOUGH_DATA: return "DATA_NOT_ENOUGH_DATA"; case HANDCRAFTED_DATA_BAD_ALIGN: return "DATA_BAD_ALIGN"; case HANDCRAFTED_DATA_INCONSISTENT_ALIGN: return "DATA_INCONSISTENT_ALIGN"; + case HANDCRAFTED_DATA_MEM_SIZE_OVERFLOW: return "DATA_MEM_SIZE_OVERFLOW"; case HANDCRAFTED_DATA_SUCCESS: return "DATA_SUCCESS"; case HANDCRAFTED_DATA_CUSTOM_ALIGN: return "DATA_CUSTOM_ALIGN"; } @@ -196,6 +198,13 @@ static FILE * get_handcrafted_file(const unsigned int seed, const enum handcraft tensor_configs = get_tensor_configs(rng); } + if (hft == HANDCRAFTED_DATA_MEM_SIZE_OVERFLOW) { + tensor_configs.resize(2); + + tensor_configs[0] = { GGML_TYPE_I8, { 0x7FFFFFFFFFFFFFC0, 1, 1, 1 } }; + tensor_configs[1] = { GGML_TYPE_I8, { 0x7FFFFFFFFFFFFFC0, 1, 1, 1 } }; + } + if (hft == HANDCRAFTED_HEADER_BAD_N_TENSORS) { const uint64_t n_tensors = -1; helper_write(file, n_tensors); @@ -397,7 +406,8 @@ static FILE * get_handcrafted_file(const unsigned int seed, const enum handcraft for (uint32_t i = 1; i < n_dims; ++i) { ne *= shape[i]; } - offset += GGML_PAD(ggml_row_size(type, ne), alignment); + + offset += GGML_PAD(ggml_row_size(type, ne), (uint64_t) alignment); } while (ftell(file) % alignment != 0) { @@ -411,6 +421,9 @@ static FILE * get_handcrafted_file(const unsigned int seed, const enum handcraft if (hft == HANDCRAFTED_DATA_NOT_ENOUGH_DATA) { nbytes -= 1; } + if (hft == HANDCRAFTED_DATA_MEM_SIZE_OVERFLOW) { + nbytes = 32; + } for (uint64_t i = 0; i < nbytes; ++i) { const uint8_t random_byte = i % 256; helper_write(file, random_byte); @@ -704,6 +717,7 @@ static std::pair test_handcrafted_file(const unsigned int seed) { HANDCRAFTED_DATA_NOT_ENOUGH_DATA, HANDCRAFTED_DATA_BAD_ALIGN, HANDCRAFTED_DATA_INCONSISTENT_ALIGN, + HANDCRAFTED_DATA_MEM_SIZE_OVERFLOW, HANDCRAFTED_DATA_SUCCESS, HANDCRAFTED_DATA_CUSTOM_ALIGN, };