diff --git a/tests/shared/src/BitVectorHelperTests.cpp b/tests/shared/src/BitVectorHelperTests.cpp index c99c85d3779..8232394c038 100644 --- a/tests/shared/src/BitVectorHelperTests.cpp +++ b/tests/shared/src/BitVectorHelperTests.cpp @@ -34,7 +34,7 @@ static void readWriteHelper(const std::vector& src) { int numBits = (int)src.size(); int numBytes = calcBitVectorSize(numBits); uint8_t* bytes = new uint8_t[numBytes]; - memset(bytes, numBytes, sizeof(uint8_t)); + memset(bytes, 0, numBytes); int numBytesWritten = writeBitVector(bytes, numBits, [&](int i) { return src[i]; }); @@ -53,6 +53,8 @@ static void readWriteHelper(const std::vector& src) { bool b = dst[i]; QCOMPARE(a, b); } + + delete[] bytes; } void BitVectorHelperTests::readWriteTest() { diff --git a/tests/shared/src/FileCacheTests.cpp b/tests/shared/src/FileCacheTests.cpp index b7c21038176..d90e01d590c 100644 --- a/tests/shared/src/FileCacheTests.cpp +++ b/tests/shared/src/FileCacheTests.cpp @@ -132,6 +132,11 @@ void FileCacheTests::testFreeSpacePreservation() { cache->setMinFreeSize(targetFreeSpace); QCOMPARE(cache->getNumCachedFiles(), (size_t)5); QCOMPARE(cache->getNumTotalFiles(), (size_t)5); + qDebug() << "Free space: " << getFreeSpace(); + qDebug() << "Target : " << targetFreeSpace; + + qInfo() << "The following test may fail if free disk space was changed by another program during the test's runtime"; + QVERIFY(getFreeSpace() >= targetFreeSpace); for (int i = 0; i < 95; ++i) { std::string key = getFileKey(i); diff --git a/tests/shared/src/MovingPercentileTests.cpp b/tests/shared/src/MovingPercentileTests.cpp index daf96ca1886..c2be130c64f 100644 --- a/tests/shared/src/MovingPercentileTests.cpp +++ b/tests/shared/src/MovingPercentileTests.cpp @@ -18,6 +18,7 @@ #include #include #include +#include QTEST_MAIN(MovingPercentileTests) @@ -41,70 +42,67 @@ void MovingPercentileTests::testRunningMedian() { int64_t MovingPercentileTests::random() { - return ((int64_t) rand() << 48) ^ - ((int64_t) rand() << 32) ^ - ((int64_t) rand() << 16) ^ - ((int64_t) rand()); + return QRandomGenerator64::global()->generate(); } void MovingPercentileTests::testRunningMinForN (int n) { // Stores the last n samples QQueue samples; - + MovingPercentile movingMin (n, 0.0f); - + for (int s = 0; s < 3 * n; ++s) { int64_t sample = random(); - + samples.push_back(sample); if (samples.size() > n) samples.pop_front(); - + if (samples.size() == 0) { QFAIL_WITH_MESSAGE("\n\n\n\tWTF\n\tsamples.size() = " << samples.size() << ", n = " << n); } - + movingMin.updatePercentile(sample); - + // Calculate the minimum of the moving samples int64_t expectedMin = std::numeric_limits::max(); - + int prevSize = samples.size(); for (auto val : samples) { expectedMin = std::min(val, expectedMin); } QCOMPARE(samples.size(), prevSize); - + QVERIFY(movingMin.getValueAtPercentile() - expectedMin == 0L); } } void MovingPercentileTests::testRunningMaxForN (int n) { - + // Stores the last n samples QQueue samples; - + MovingPercentile movingMax (n, 1.0f); - + for (int s = 0; s < 10000; ++s) { int64_t sample = random(); - + samples.push_back(sample); if (samples.size() > n) { samples.pop_front(); } - + if (samples.size() == 0) { QFAIL_WITH_MESSAGE("\n\n\n\tWTF\n\tsamples.size() = " << samples.size() << ", n = " << n); } - + movingMax.updatePercentile(sample); - + // Calculate the maximum of the moving samples int64_t expectedMax = std::numeric_limits::min(); for (auto val : samples) expectedMax = std::max(val, expectedMax); - + QVERIFY(movingMax.getValueAtPercentile() - expectedMax == 0L); } } @@ -112,34 +110,34 @@ void MovingPercentileTests::testRunningMaxForN (int n) { void MovingPercentileTests::testRunningMedianForN (int n) { // Stores the last n samples QQueue samples; - + MovingPercentile movingMedian (n, 0.5f); - + for (int s = 0; s < 10000; ++s) { int64_t sample = random(); - + samples.push_back(sample); if (samples.size() > n) samples.pop_front(); - + if (samples.size() == 0) { QFAIL_WITH_MESSAGE("\n\n\n\tWTF\n\tsamples.size() = " << samples.size() << ", n = " << n); } - + movingMedian.updatePercentile(sample); auto median = movingMedian.getValueAtPercentile(); - + // Check the number of samples that are > or < median int samplesGreaterThan = 0; int samplesLessThan = 0; - + for (auto value : samples) { if (value < median) ++samplesGreaterThan; else if (value > median) ++samplesLessThan; } - + QCOMPARE_WITH_LAMBDA(samplesLessThan, n / 2, [=]() { return samplesLessThan <= n / 2; });