Skip to content

Commit 829dd70

Browse files
authored
Merge pull request #1803 from EOSIO/DAWN-672
DAWN 672/ GitHub#1767 - Succinct error reports from ctest/jenkins
2 parents b022408 + 8c5a10a commit 829dd70

File tree

5 files changed

+78
-71
lines changed

5 files changed

+78
-71
lines changed

libraries/chain/chain_controller.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -415,9 +415,9 @@ void chain_controller::_apply_cycle_trace( const cycle_trace& res )
415415
("a", ar.act.account)
416416
("n", ar.act.name)
417417
("r", ar.receiver));
418-
std::cerr << prefix << ": CONSOLE OUTPUT BEGIN =====================" << std::endl;
419-
std::cerr << ar.console;
420-
std::cerr << prefix << ": CONSOLE OUTPUT END =====================" << std::endl;
418+
ilog(prefix + ": CONSOLE OUTPUT BEGIN =====================");
419+
ilog(ar.console);
420+
ilog(prefix + ": CONSOLE OUTPUT END =====================");
421421
}
422422
}
423423
}

tests/CMakeLists.txt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,9 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/nodeos_run_remote_test.py ${CMAKE_CUR
4343
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/consensus-validation-malicious-producers.py ${CMAKE_CURRENT_BINARY_DIR}/consensus-validation-malicious-producers.py COPYONLY)
4444

4545
#Manually run chain_test for all supported runtimes
46-
add_test(NAME chain_test_binaryen COMMAND chain_test --report_level=detailed -- --binaryen)
47-
add_test(NAME chain_test_wavm COMMAND chain_test --report_level=detailed -- --wavm)
46+
#To run chain_test with all log from blockchain displayed, put --verbose after --, i.e. chain_test -- --verbose
47+
add_test(NAME chain_test_binaryen COMMAND chain_test --report_level=detailed --color_output -- --binaryen)
48+
add_test(NAME chain_test_wavm COMMAND chain_test --report_level=detailed --color_output -- --wavm)
4849
add_test(NAME nodeos_run_test COMMAND tests/nodeos_run_test.py -v --dump-error-detail WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
4950
add_test(NAME nodeos_run_remote_test COMMAND tests/nodeos_run_remote_test.py --dump-error-detail WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
5051
add_test(NAME p2p_dawn515_test COMMAND tests/p2p_tests/dawn_515/test.sh WORKING_DIRECTORY ${CMAKE_BINARY_DIR})

tests/api_tests/api_tests.cpp

Lines changed: 49 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ string U128Str(unsigned __int128 i)
121121
}
122122

123123
template <typename T>
124-
void CallAction(tester& test, T ac, const vector<account_name>& scope = {N(testapi)}) {
124+
transaction_trace CallAction(tester& test, T ac, const vector<account_name>& scope = {N(testapi)}) {
125125
signed_transaction trx;
126126

127127
auto pl = vector<permission_level>{{scope[0], config::active_name}};
@@ -138,10 +138,11 @@ void CallAction(tester& test, T ac, const vector<account_name>& scope = {N(testa
138138
auto res = test.push_transaction(trx);
139139
BOOST_CHECK_EQUAL(res.status, transaction_receipt::executed);
140140
test.produce_block();
141+
return res;
141142
}
142143

143144
template <typename T>
144-
void CallFunction(tester& test, T ac, const vector<char>& data, const vector<account_name>& scope = {N(testapi)}) {
145+
transaction_trace CallFunction(tester& test, T ac, const vector<char>& data, const vector<account_name>& scope = {N(testapi)}) {
145146
{
146147
signed_transaction trx;
147148

@@ -160,6 +161,7 @@ void CallFunction(tester& test, T ac, const vector<char>& data, const vector<acc
160161
auto res = test.push_transaction(trx);
161162
BOOST_CHECK_EQUAL(res.status, transaction_receipt::executed);
162163
test.produce_block();
164+
return res;
163165
}
164166
}
165167

@@ -223,23 +225,6 @@ struct MySink : public bio::sink
223225
};
224226
uint32_t last_fnc_err = 0;
225227

226-
#define CAPTURE(STREAM, EXEC) \
227-
{\
228-
capture.clear(); \
229-
bio::stream_buffer<MySink> sb; sb.open(MySink()); \
230-
std::streambuf *oldbuf = std::STREAM.rdbuf(&sb); \
231-
EXEC; \
232-
std::STREAM.rdbuf(oldbuf); \
233-
}
234-
235-
#define CAPTURE_AND_PRE_TEST_PRINT(METHOD) \
236-
{ \
237-
BOOST_TEST_MESSAGE( "Running test_print::" << METHOD ); \
238-
CAPTURE( cerr, CALL_TEST_FUNCTION( *this, "test_print", METHOD, {} ) ); \
239-
BOOST_CHECK_EQUAL( capture.size(), 7 ); \
240-
captured = capture[3]; \
241-
}
242-
243228
/*************************************************************************************
244229
* action_tests test case
245230
*************************************************************************************/
@@ -625,10 +610,9 @@ BOOST_FIXTURE_TEST_CASE(transaction_tests, tester) { try {
625610

626611
// test test_read_transaction
627612
// this is a bit rough, but I couldn't figure out a better way to compare the hashes
628-
CAPTURE( cerr, CALL_TEST_FUNCTION( *this, "test_transaction", "test_read_transaction", {} ) );
629-
BOOST_CHECK_EQUAL( capture.size(), 7 );
613+
auto tx_trace = CALL_TEST_FUNCTION( *this, "test_transaction", "test_read_transaction", {} );
630614
string sha_expect = "bdeb5b58dda272e4b23ee7d2a5f0ff034820c156364893b758892e06fa39e7fe";
631-
BOOST_CHECK_EQUAL(capture[3] == sha_expect, true);
615+
BOOST_CHECK_EQUAL(tx_trace.action_traces.front().console == sha_expect, true);
632616
// test test_tapos_block_num
633617
CALL_TEST_FUNCTION(*this, "test_transaction", "test_tapos_block_num", fc::raw::pack(control->head_block_num()) );
634618

@@ -755,7 +739,7 @@ BOOST_FIXTURE_TEST_CASE(db_tests, tester) { try {
755739
CALL_TEST_FUNCTION( *this, "test_db", "idx64_general", {});
756740
CALL_TEST_FUNCTION( *this, "test_db", "idx64_lowerbound", {});
757741
CALL_TEST_FUNCTION( *this, "test_db", "idx64_upperbound", {});
758-
742+
759743
} FC_LOG_AND_RETHROW() }
760744
/*************************************************************************************
761745
* multi_index_tests test case
@@ -1032,41 +1016,48 @@ BOOST_FIXTURE_TEST_CASE(print_tests, tester) { try {
10321016
string captured = "";
10331017

10341018
// test prints
1035-
CAPTURE_AND_PRE_TEST_PRINT("test_prints");
1036-
BOOST_CHECK_EQUAL(captured == "abcefg", true);
1037-
1038-
// test prints_l
1039-
CAPTURE_AND_PRE_TEST_PRINT("test_prints_l");
1040-
BOOST_CHECK_EQUAL(captured == "abatest", true);
1041-
1042-
// test printi
1043-
CAPTURE_AND_PRE_TEST_PRINT("test_printi");
1044-
BOOST_CHECK_EQUAL( captured.substr(0,1), I64Str(0) );
1045-
BOOST_CHECK_EQUAL( captured.substr(1,6), I64Str(556644) );
1046-
BOOST_CHECK_EQUAL( captured.substr(7, capture[3].size()), I64Str(-1) );
1047-
1048-
// test printui
1049-
CAPTURE_AND_PRE_TEST_PRINT("test_printui");
1050-
BOOST_CHECK_EQUAL( captured.substr(0,1), U64Str(0) );
1051-
BOOST_CHECK_EQUAL( captured.substr(1,6), U64Str(556644) );
1052-
BOOST_CHECK_EQUAL( captured.substr(7, capture[3].size()), U64Str(-1) ); // "18446744073709551615"
1053-
1054-
// test printn
1055-
CAPTURE_AND_PRE_TEST_PRINT("test_printn");
1056-
BOOST_CHECK_EQUAL( captured.substr(0,5), "abcde" );
1057-
BOOST_CHECK_EQUAL( captured.substr(5, 5), "ab.de" );
1058-
BOOST_CHECK_EQUAL( captured.substr(10, 6), "1q1q1q");
1059-
BOOST_CHECK_EQUAL( captured.substr(16, 11), "abcdefghijk");
1060-
BOOST_CHECK_EQUAL( captured.substr(27, 12), "abcdefghijkl");
1061-
BOOST_CHECK_EQUAL( captured.substr(39, 13), "abcdefghijkl1");
1062-
BOOST_CHECK_EQUAL( captured.substr(52, 13), "abcdefghijkl1");
1063-
BOOST_CHECK_EQUAL( captured.substr(65, 13), "abcdefghijkl1");
1064-
1065-
// test printi128
1066-
CAPTURE_AND_PRE_TEST_PRINT("test_printi128");
1067-
BOOST_CHECK_EQUAL( captured.substr(0, 39), U128Str(-1) );
1068-
BOOST_CHECK_EQUAL( captured.substr(39, 1), U128Str(0) );
1069-
BOOST_CHECK_EQUAL( captured.substr(40, 11), U128Str(87654323456) );
1019+
auto tx1_trace = CALL_TEST_FUNCTION( *this, "test_print", "test_prints", {} );
1020+
auto tx1_act_cnsl = tx1_trace.action_traces.front().console;
1021+
BOOST_CHECK_EQUAL(tx1_act_cnsl == "abcefg", true);
1022+
1023+
// test prints_l
1024+
auto tx2_trace = CALL_TEST_FUNCTION( *this, "test_print", "test_prints_l", {} );
1025+
auto tx2_act_cnsl = tx2_trace.action_traces.front().console;
1026+
BOOST_CHECK_EQUAL(tx2_act_cnsl == "abatest", true);
1027+
1028+
1029+
// test printi
1030+
auto tx3_trace = CALL_TEST_FUNCTION( *this, "test_print", "test_printi", {} );
1031+
auto tx3_act_cnsl = tx3_trace.action_traces.front().console;
1032+
BOOST_CHECK_EQUAL( tx3_act_cnsl.substr(0,1), I64Str(0) );
1033+
BOOST_CHECK_EQUAL( tx3_act_cnsl.substr(1,6), I64Str(556644) );
1034+
BOOST_CHECK_EQUAL( tx3_act_cnsl.substr(7, std::string::npos), I64Str(-1) );
1035+
1036+
// test printui
1037+
auto tx4_trace = CALL_TEST_FUNCTION( *this, "test_print", "test_printui", {} );
1038+
auto tx4_act_cnsl = tx4_trace.action_traces.front().console;
1039+
BOOST_CHECK_EQUAL( tx4_act_cnsl.substr(0,1), U64Str(0) );
1040+
BOOST_CHECK_EQUAL( tx4_act_cnsl.substr(1,6), U64Str(556644) );
1041+
BOOST_CHECK_EQUAL( tx4_act_cnsl.substr(7, std::string::npos), U64Str(-1) ); // "18446744073709551615"
1042+
1043+
// test printn
1044+
auto tx5_trace = CALL_TEST_FUNCTION( *this, "test_print", "test_printn", {} );
1045+
auto tx5_act_cnsl = tx5_trace.action_traces.front().console;
1046+
BOOST_CHECK_EQUAL( tx5_act_cnsl.substr(0,5), "abcde" );
1047+
BOOST_CHECK_EQUAL( tx5_act_cnsl.substr(5, 5), "ab.de" );
1048+
BOOST_CHECK_EQUAL( tx5_act_cnsl.substr(10, 6), "1q1q1q");
1049+
BOOST_CHECK_EQUAL( tx5_act_cnsl.substr(16, 11), "abcdefghijk");
1050+
BOOST_CHECK_EQUAL( tx5_act_cnsl.substr(27, 12), "abcdefghijkl");
1051+
BOOST_CHECK_EQUAL( tx5_act_cnsl.substr(39, 13), "abcdefghijkl1");
1052+
BOOST_CHECK_EQUAL( tx5_act_cnsl.substr(52, 13), "abcdefghijkl1");
1053+
BOOST_CHECK_EQUAL( tx5_act_cnsl.substr(65, 13), "abcdefghijkl1");
1054+
1055+
// test printi128
1056+
auto tx6_trace = CALL_TEST_FUNCTION( *this, "test_print", "test_printi128", {} );
1057+
auto tx6_act_cnsl = tx6_trace.action_traces.front().console;
1058+
BOOST_CHECK_EQUAL( tx6_act_cnsl.substr(0, 39), U128Str(-1) );
1059+
BOOST_CHECK_EQUAL( tx6_act_cnsl.substr(39, 1), U128Str(0) );
1060+
BOOST_CHECK_EQUAL( tx6_act_cnsl.substr(40, 11), U128Str(87654323456) );
10701061

10711062
} FC_LOG_AND_RETHROW() }
10721063

tests/common/main.cpp

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,24 @@
55
#include <cstdlib>
66
#include <iostream>
77
#include <boost/test/included/unit_test.hpp>
8-
8+
#include <fc/log/logger.hpp>
99
//extern uint32_t EOS_TESTING_GENESIS_TIMESTAMP;
1010

11+
12+
1113
boost::unit_test::test_suite* init_unit_test_suite(int argc, char* argv[]) {
14+
// Turn off blockchain logging if no --verbose parameter is not added
15+
// To have verbose enabled, call "tests/chain_test --report_level=detailed -- --verbose"
16+
bool is_verbose = false;
17+
std::string verbose_arg = "--verbose";
18+
for (int i = 0; i < argc; i++) {
19+
if (verbose_arg == argv[i]) {
20+
is_verbose = true;
21+
break;
22+
}
23+
}
24+
if(!is_verbose) fc::logger::get(DEFAULT_LOGGER).set_log_level(fc::log_level::off);
25+
1226
std::srand(time(NULL));
1327
std::cout << "Random number generator seeded to " << time(NULL) << std::endl;
1428
/*

tests/tests/abi_tests.cpp

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,14 @@
1212
#include <fc/variant.hpp>
1313
#include <fc/io/json.hpp>
1414
#include <fc/exception/exception.hpp>
15+
#include <fc/log/logger.hpp>
1516

1617
#include <eosio/chain/contracts/chain_initializer.hpp>
1718
#include <eosio/chain/contracts/abi_serializer.hpp>
1819
#include <eosio/abi_generator/abi_generator.hpp>
1920

2021
#include "config.hpp"
21-
22+
#include <boost/test/framework.hpp>
2223
using namespace eosio;
2324
using namespace chain;
2425
using namespace chain::contracts;
@@ -34,8 +35,6 @@ fc::variant verify_byte_round_trip_conversion( const abi_serializer& abis, const
3435

3536
std::string r = fc::json::to_string(var2);
3637

37-
std::cout << r << std::endl;
38-
3938
auto bytes2 = abis.variant_to_binary(type, var2);
4039

4140
BOOST_TEST( fc::to_hex(bytes) == fc::to_hex(bytes2) );
@@ -64,7 +63,6 @@ fc::variant verify_type_round_trip_conversion( const abi_serializer& abis, const
6463

6564
std::string r = fc::json::to_string(var2);
6665

67-
std::cout << r << std::endl;
6866

6967
auto bytes2 = abis.variant_to_binary(type, var2);
7068

@@ -414,8 +412,9 @@ struct abi_gen_helper {
414412
auto e = fc::to_hex(fc::raw::pack(abi1)) == fc::to_hex(fc::raw::pack(output));
415413

416414
if(!e) {
417-
std::cout << "expected: " << std::endl << fc::json::to_pretty_string(abi1) << std::endl << std::endl;
418-
std::cout << "generated: " << std::endl << fc::json::to_pretty_string(output) << std::endl << std::endl;
415+
BOOST_TEST_MESSAGE("Generate ABI:\n" <<
416+
"expected: \n" << fc::json::to_pretty_string(abi1) << "\n" <<
417+
"generated: \n" << fc::json::to_pretty_string(output));
419418
}
420419

421420
return e;
@@ -1898,7 +1897,9 @@ BOOST_AUTO_TEST_CASE(abi_cycle)
18981897
auto abi = chain_initializer::eos_contract_abi(fc::json::from_string(typedef_cycle_abi).as<abi_def>());
18991898
abi_serializer abis(abi);
19001899

1901-
auto is_assert_exception = [](fc::assert_exception const & e) -> bool { std::cout << e.to_string() << std::endl; return true; };
1900+
auto is_assert_exception = [](fc::assert_exception const & e) -> bool {
1901+
wlog(e.to_string()); return true;
1902+
};
19021903
BOOST_CHECK_EXCEPTION( abis.validate(), fc::assert_exception, is_assert_exception );
19031904

19041905
abi = fc::json::from_string(struct_cycle_abi).as<abi_def>();

0 commit comments

Comments
 (0)