提交 f7e050de 编写于 作者: P Paul Calabrese

Fix bug in message buffer class. Add new unit test for this case. Re-enable unit tests.

上级 f2bcd951
......@@ -214,9 +214,9 @@ namespace eosio {
/*
* Reads size bytes from the buffer chain starting at the supplied index.
* The read pointer is not advanced.
* The supplied index is advanced, but the read pointer is unaffected.
*/
bool peek(void* s, uint32_t size, index_t index) {
bool peek(void* s, uint32_t size, index_t& index) {
if (bytes_to_read() < size) {
return false;
}
......
......@@ -18,13 +18,14 @@ include_directories("${CMAKE_SOURCE_DIR}/contracts")
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/tests/config.hpp.in ${CMAKE_CURRENT_SOURCE_DIR}/tests/config.hpp ESCAPE_QUOTES)
file(GLOB UNIT_TESTS "chain_tests/*.cpp" "api_tests/*.cpp" "tests/abi_tests.cpp" "tests/database_tests.cpp" "tests/misc_tests.cpp" "wasm_tests/*.cpp")
file(GLOB UNIT_TESTS "chain_tests/*.cpp" "api_tests/*.cpp" "tests/abi_tests.cpp" "tests/database_tests.cpp" "tests/misc_tests.cpp" "wasm_tests/*.cpp" "tests/message_buffer_tests.cpp")
add_executable( chain_test ${UNIT_TESTS} ${WASM_UNIT_TESTS} common/main.cpp )
target_link_libraries( chain_test eosio_testing eosio_chain chainbase eos_utilities eos_egenesis_none chain_plugin abi_generator fc ${PLATFORM_SPECIFIC_LIBS} )
target_include_directories( chain_test PUBLIC ${CMAKE_BINARY_DIR}/contracts ${CMAKE_CURRENT_BINARY_DIR}/tests/contracts )
target_include_directories( chain_test PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/wasm_tests )
target_include_directories( chain_test PUBLIC ${CMAKE_SOURCE_DIR}/plugins/net_plugin/include )
add_dependencies(chain_test asserter test_api currency proxy identity identity_test stltest infinite)
......
......@@ -3,7 +3,7 @@
* @copyright defined in eos/LICENSE.txt
*/
#include <eos/net_plugin/message_buffer.hpp>
#include <eosio/net_plugin/message_buffer.hpp>
#include <boost/test/unit_test.hpp>
#include <iostream>
......@@ -28,8 +28,8 @@ BOOST_AUTO_TEST_CASE(message_buffer_construction)
auto mbs = mb.get_buffer_sequence_for_boost_async_read();
auto mbsi = mbs.begin();
BOOST_CHECK_EQUAL(boost::asio::detail::buffer_size_helper(*mbsi), def_buffer_size);
BOOST_CHECK_EQUAL(boost::asio::detail::buffer_cast_helper(*mbsi), mb.write_ptr());
BOOST_CHECK_EQUAL(mbsi->size(), def_buffer_size);
BOOST_CHECK_EQUAL(mbsi->data(), mb.write_ptr());
mbsi++;
BOOST_CHECK(mbsi == mbs.end());
}
......@@ -50,12 +50,12 @@ BOOST_AUTO_TEST_CASE(message_buffer_growth)
{
auto mbs = mb.get_buffer_sequence_for_boost_async_read();
auto mbsi = mbs.begin();
BOOST_CHECK_EQUAL(boost::asio::detail::buffer_size_helper(*mbsi), def_buffer_size);
BOOST_CHECK_EQUAL(boost::asio::detail::buffer_cast_helper(*mbsi), mb.write_ptr());
BOOST_CHECK_EQUAL(mbsi->size(), def_buffer_size);
BOOST_CHECK_EQUAL(mbsi->data(), mb.write_ptr());
mbsi++;
BOOST_CHECK(mbsi != mbs.end());
BOOST_CHECK_EQUAL(boost::asio::detail::buffer_size_helper(*mbsi), def_buffer_size);
BOOST_CHECK_NE(boost::asio::detail::buffer_cast_helper(*mbsi), nullptr);
BOOST_CHECK_EQUAL(mbsi->size(), def_buffer_size);
BOOST_CHECK_NE(mbsi->data(), nullptr);
mbsi++;
BOOST_CHECK(mbsi == mbs.end());
}
......@@ -71,12 +71,12 @@ BOOST_AUTO_TEST_CASE(message_buffer_growth)
{
auto mbs = mb.get_buffer_sequence_for_boost_async_read();
auto mbsi = mbs.begin();
BOOST_CHECK_EQUAL(boost::asio::detail::buffer_size_helper(*mbsi), def_buffer_size - 100);
BOOST_CHECK_EQUAL(boost::asio::detail::buffer_cast_helper(*mbsi), mb.write_ptr());
BOOST_CHECK_EQUAL(mbsi->size(), def_buffer_size - 100);
BOOST_CHECK_EQUAL(mbsi->data(), mb.write_ptr());
mbsi++;
BOOST_CHECK(mbsi != mbs.end());
BOOST_CHECK_EQUAL(boost::asio::detail::buffer_size_helper(*mbsi), def_buffer_size);
BOOST_CHECK_NE(boost::asio::detail::buffer_cast_helper(*mbsi), nullptr);
BOOST_CHECK_EQUAL(mbsi->size(), def_buffer_size);
BOOST_CHECK_NE(mbsi->data(), nullptr);
mbsi++;
BOOST_CHECK(mbsi == mbs.end());
}
......@@ -168,7 +168,8 @@ BOOST_AUTO_TEST_CASE(message_buffer_peek_read)
char buffer[100];
auto index = mb.read_index();
mb.peek(buffer, 100, index);
mb.peek(buffer, 50, index);
mb.peek(buffer+50, 50, index);
for (int i=0; i < 100; i++) {
BOOST_CHECK_EQUAL(i, buffer[i]);
}
......@@ -227,8 +228,8 @@ BOOST_AUTO_TEST_CASE(message_buffer_write_ptr_to_end)
auto mbs = mb.get_buffer_sequence_for_boost_async_read();
auto mbsi = mbs.begin();
BOOST_CHECK_EQUAL(boost::asio::detail::buffer_size_helper(*mbsi), small);
BOOST_CHECK_EQUAL(boost::asio::detail::buffer_cast_helper(*mbsi), mb.write_ptr());
BOOST_CHECK_EQUAL(mbsi->size(), small);
BOOST_CHECK_EQUAL(mbsi->data(), mb.write_ptr());
BOOST_CHECK_EQUAL(mb.read_ptr()+small, mb.write_ptr());
mbsi++;
BOOST_CHECK(mbsi == mbs.end());
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册