Mercurial > hg
view contrib/fuzz/fuzzutil.cc @ 41793:2e92624c3613 stable
test: update test-sparse-revlog.t output
This test is skipped unless a large artefact is pre-build. It seems like nobody
ran it in a while. Changeset 3764330f76a6 changed the expected output but
nobody noticed.
This changeset focus on the first and simpler step: putting the expected output
back to what one would get by running this test.
However this test changes highlight a couple of deeper issues:
1) Even if the revision content did not changed, a change in the delta
contained in the bundle affected the delta stored in the final revlog, changing
the test result. Since we are testing the delta computation strategy with
sparse, we should not blindly reuse the delta-base from the bundled delta.
2) A change in the format of the repository used to generate the bundle changed
the delta stored in the bundle. We should get a more stable output to avoid
future instabilities of this test.
3) The test is it not run by CI or developer.
We'll try to address all this issues in the coming changesets.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Sun, 24 Feb 2019 19:56:57 +0100 |
parents | a1c0873a9990 |
children |
line wrap: on
line source
#include "fuzzutil.h" #include <cstring> #include <utility> contrib::optional<two_inputs> SplitInputs(const uint8_t *Data, size_t Size) { if (!Size) { return contrib::nullopt; } // figure out a random point in [0, Size] to split our input. size_t left_size = (Data[0] / 255.0) * (Size - 1); // Copy inputs to new allocations so if bdiff over-reads // AddressSanitizer can detect it. std::unique_ptr<char[]> left(new char[left_size]); std::memcpy(left.get(), Data + 1, left_size); // right starts at the next byte after left ends size_t right_size = Size - (left_size + 1); std::unique_ptr<char[]> right(new char[right_size]); std::memcpy(right.get(), Data + 1 + left_size, right_size); LOG(2) << "inputs are " << left_size << " and " << right_size << " bytes" << std::endl; two_inputs result = {std::move(right), right_size, std::move(left), left_size}; return result; }