From 996f410bace32c20928ddec92a183f4a625857ab Mon Sep 17 00:00:00 2001 From: asolovyev Date: Wed, 6 Nov 2019 21:49:59 +0300 Subject: [PATCH] CYB-416 Added test with fullnodes over smash fullnodes. Task 416 completed --- simulator/tests/randpa_finality_tests.cpp | 162 ++++++++++++---------- 1 file changed, 87 insertions(+), 75 deletions(-) diff --git a/simulator/tests/randpa_finality_tests.cpp b/simulator/tests/randpa_finality_tests.cpp index 8eaa0980df5..4ef6268d375 100644 --- a/simulator/tests/randpa_finality_tests.cpp +++ b/simulator/tests/randpa_finality_tests.cpp @@ -32,93 +32,63 @@ TEST(randpa_finality, fullnodes_over_fullnodes) { auto runner = TestRunner(9); vector nodetypes {node_type::FN, node_type::FN, node_type::BP, node_type::BP, node_type::BP, node_type::FN, node_type::FN, node_type::FN, node_type::FN}; runner.load_nodetypes(nodetypes); - vector > v0{{1, 10}}; - vector > v1{{2, 10}}; - vector > v2{{3, 20}, {4, 20}}; - vector > v3{{4, 20}, {5, 30}}; - vector > v4{{7, 10}}; - vector > v5{{6, 30}}; - vector > v7{{8, 10}}; - graph_type g(9); - g[0] = v0; - g[1] = v1; - g[2] = v2; - g[3] = v3; - g[4] = v4; - g[5] = v5; - g[7] = v7; + graph_type g; + g.push_back({{1, 10}}); + g.push_back({{2, 10}}); + g.push_back({{3, 20}, {4, 20}}); + g.push_back({{4, 20}, {5, 30}}); + g.push_back({{7, 10}}); + g.push_back({{6, 30}}); + g.push_back({{}}); + g.push_back({{8, 10}}); + g.push_back({{}}); runner.load_graph(g); runner.add_stop_task(8 * runner.get_slot_ms()); runner.run(); - EXPECT_EQ(get_block_height(runner.get_db(0).last_irreversible_block_id()), 7); - EXPECT_EQ(get_block_height(runner.get_db(1).last_irreversible_block_id()), 7); - EXPECT_EQ(get_block_height(runner.get_db(2).last_irreversible_block_id()), 7); - EXPECT_EQ(get_block_height(runner.get_db(3).last_irreversible_block_id()), 7); - EXPECT_EQ(get_block_height(runner.get_db(4).last_irreversible_block_id()), 7); - EXPECT_EQ(get_block_height(runner.get_db(5).last_irreversible_block_id()), 7); + for (auto i = 0; i<6; ++i) { + EXPECT_EQ(get_block_height(runner.get_db(i).last_irreversible_block_id()), 7); + } EXPECT_EQ(get_block_height(runner.get_db(7).last_irreversible_block_id()), 7); } TEST(randpa_finality, fullnodes_over_five_fullnodes) { size_t nodes_amount = 18; auto runner = TestRunner(nodes_amount); - vector temp_nodetypes{1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; - vector nodetypes; - for (auto t : temp_nodetypes) - nodetypes.push_back(t ? node_type::FN : node_type::BP); + + vector nodetypes(18, node_type::FN); + nodetypes[5] = node_type::BP; + nodetypes[6] = node_type::BP; + nodetypes[7] = node_type::BP; runner.load_nodetypes(nodetypes); - vector > v0{{1, 10}}; - vector > v1{{2, 20}}; - vector > v2{{3, 10}}; - vector > v3{{4, 30}}; - vector > v4{{5, 10}}; - vector > v5{{6, 15}, {7, 20}}; - vector > v6{{7, 30}, {8, 20}}; - vector > v8{{9, 10}}; - vector > v9{{10, 10}}; - vector > v10{{11, 10}}; - vector > v11{{12, 10}}; - vector > v7{{13, 30}}; - vector > v13{{14, 10}}; - vector > v14{{15, 10}}; - vector > v15{{16, 10}}; - vector > v16{{17, 10}}; - graph_type g(nodes_amount); - g[0] = v0; - g[1] = v1; - g[2] = v2; - g[3] = v3; - g[4] = v4; - g[5] = v5; - g[6] = v6; - g[8] = v8; - g[9] = v9; - g[10] = v10; - g[11] = v11; - g[7] = v7; - g[13] = v13; - g[14] = v14; - g[15] = v15; - g[16] = v16; + + graph_type g; + g.push_back({{1, 10}}); + g.push_back({{2, 20}}); + g.push_back({{3, 10}}); + g.push_back({{4, 30}}); + g.push_back({{5, 10}}); + g.push_back({{6, 15}, {7, 20}}); + g.push_back({{7, 30}, {8, 20}}); + g.push_back({{13, 30}}); + g.push_back({{9, 10}}); + g.push_back({{10, 10}}); + g.push_back({{11, 10}}); + g.push_back({{12, 10}}); + g.push_back({{}}); + g.push_back({{14, 10}}); + g.push_back({{15, 10}}); + g.push_back({{16, 10}}); + g.push_back({{17, 10}}); + g.push_back({{}}); + runner.load_graph(g); runner.add_stop_task(14 * runner.get_slot_ms()); runner.run(); - EXPECT_EQ(get_block_height(runner.get_db(0).last_irreversible_block_id()), 13); - EXPECT_EQ(get_block_height(runner.get_db(1).last_irreversible_block_id()), 13); - EXPECT_EQ(get_block_height(runner.get_db(2).last_irreversible_block_id()), 13); - EXPECT_EQ(get_block_height(runner.get_db(3).last_irreversible_block_id()), 13); - EXPECT_EQ(get_block_height(runner.get_db(4).last_irreversible_block_id()), 13); - EXPECT_EQ(get_block_height(runner.get_db(5).last_irreversible_block_id()), 13); - EXPECT_EQ(get_block_height(runner.get_db(6).last_irreversible_block_id()), 13); - EXPECT_EQ(get_block_height(runner.get_db(8).last_irreversible_block_id()), 13); - EXPECT_EQ(get_block_height(runner.get_db(9).last_irreversible_block_id()), 13); - EXPECT_EQ(get_block_height(runner.get_db(10).last_irreversible_block_id()), 13); - EXPECT_EQ(get_block_height(runner.get_db(11).last_irreversible_block_id()), 13); - EXPECT_EQ(get_block_height(runner.get_db(7).last_irreversible_block_id()), 13); - EXPECT_EQ(get_block_height(runner.get_db(13).last_irreversible_block_id()), 13); - EXPECT_EQ(get_block_height(runner.get_db(14).last_irreversible_block_id()), 13); - EXPECT_EQ(get_block_height(runner.get_db(15).last_irreversible_block_id()), 13); - EXPECT_EQ(get_block_height(runner.get_db(16).last_irreversible_block_id()), 13); + for (auto i = 0; i<17; ++i) { + if (i != 12) { + EXPECT_EQ(get_block_height(runner.get_db(i).last_irreversible_block_id()), 13); + } + } } TEST(randpa_finality, fullnodes_over_round_ring) { @@ -140,7 +110,7 @@ TEST(randpa_finality, fullnodes_over_round_ring) { g.push_back({{2, 20}}); g.push_back({{3, 10}}); g.push_back({{4, 30}}); - for (auto i = 4; i < nodes_amount-3; i += 3) { // 4->5,4->7; 5->6 // ... // 61->4,61->62; 62->63 + for (auto i = 4; i < nodes_amount-3; i += 3) { g.push_back({{ i+1, random() }, { i+3, random() }}); g.push_back({{ i+2, random() }}); g.push_back(empty_vector); @@ -159,6 +129,48 @@ TEST(randpa_finality, fullnodes_over_round_ring) { } } +TEST(randpa_finality, fullnodes_over_smash_ring) { + size_t nodes_amount = 64; + auto runner = TestRunner(nodes_amount); + vector nodetypes(nodes_amount, node_type::FN); + nodetypes[3] = node_type::BP; + for (auto i = 4; i > empty_vector; + g.push_back({{1, 10}}); + g.push_back({{2, 20}}); + g.push_back({{3, 10}}); + g.push_back({{4, 30}}); + for (auto i = 4; i < nodes_amount-3; i += 3) { + vector> pairs{{3, random()}, {i+1, random()}}; + for (auto j = i+3; j < nodes_amount; j +=3) { + pairs.push_back({j, random()}); + } + g.push_back(pairs); + g.push_back({{ i+2, random() }}); + g.push_back(empty_vector); + } + g.push_back({{62, 30}}); + g.push_back({{63, 30}}); + g.push_back(empty_vector); + + runner.load_graph(g); + runner.add_stop_task(24 * runner.get_slot_ms()); + runner.run(); + for (auto i = 0; i > v0{{1, 2}, {2, 10}};