From: Igor Fedotov Date: Fri, 20 May 2016 14:59:37 +0000 (+0300) Subject: os/store_test: Fixes dump_mismatch_bl to avoid assert on lengths mismatch. Starts... X-Git-Tag: v11.0.0~359^2~36 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=f4c8d845e6f7a7ec6dcdc347218c32279c447310;p=ceph.git os/store_test: Fixes dump_mismatch_bl to avoid assert on lengths mismatch. Starts using it for BufferCacheTest Signed-off-by: Igor Fedotov --- 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 {