From f4c8d845e6f7a7ec6dcdc347218c32279c447310 Mon Sep 17 00:00:00 2001 From: Igor Fedotov Date: Fri, 20 May 2016 17:59:37 +0300 Subject: [PATCH] os/store_test: Fixes dump_mismatch_bl to avoid assert on lengths mismatch. Starts using it for BufferCacheTest Signed-off-by: Igor Fedotov --- src/test/objectstore/store_test.cc | 43 +++++++++++++++--------------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/src/test/objectstore/store_test.cc b/src/test/objectstore/store_test.cc index 38636aab2bb..388d97beb20 100644 --- a/src/test/objectstore/store_test.cc +++ b/src/test/objectstore/store_test.cc @@ -37,6 +37,8 @@ typedef boost::mt11213b gen_type; #if GTEST_HAS_PARAM_TEST +static void dump_bl_mismatch(bufferlist& expected, bufferlist& actual); + template int apply_transaction( T &store, @@ -625,11 +627,7 @@ TEST_P(StoreTest, BufferCacheReadTest) { expected.append(bl2); if (!newdata.contents_equal(expected)){ - cout << "expected:\n"; - expected.hexdump(cout); - cout << "actual:\n"; - newdata.hexdump(cout); - cout << std::endl; + dump_bl_mismatch(expected, newdata); } ASSERT_TRUE(newdata.contents_equal(expected)); } @@ -661,11 +659,7 @@ TEST_P(StoreTest, BufferCacheReadTest) { expected.append(bl2); if (!newdata.contents_equal(expected)){ - cout << "expected:\n"; - expected.hexdump(cout); - cout << "actual:\n"; - newdata.hexdump(cout); - cout << std::endl; + dump_bl_mismatch(expected, newdata); } ASSERT_TRUE(newdata.contents_equal(expected)); } @@ -2206,19 +2200,26 @@ static void dump_bl_mismatch(bufferlist& expected, bufferlist& actual) { cout << __func__ << std::endl; unsigned first = 0; - while (expected[first] == actual[first]) + if(expected.length() != actual.length()) { + cout << "--- buffer lengths mismatch " << std::hex + << "expected 0x" << expected.length() << " != actual 0x" + << actual.length() << std::dec << std::endl; + } + auto len = MIN(expected.length(), actual.length()); + while ( first 0 && expected[last-1] == actual[last-1]) --last; - cout << "--- buffer mismatch between offset 0x" << std::hex << first - << " and 0x" << last+1 << ", total 0x" << expected.length() << std::dec - << std::endl; - cout << "--- expected:\n"; - expected.hexdump(cout); - cout << "--- actual:\n"; - actual.hexdump(cout); + if(len > 0) { + cout << "--- buffer mismatch between offset 0x" << std::hex << first + << " and 0x" << last << ", total 0x" << len << std::dec + << std::endl; + cout << "--- expected:\n"; + expected.hexdump(cout); + cout << "--- actual:\n"; + actual.hexdump(cout); + } } class SyntheticWorkloadState { -- 2.47.3