| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | /*************************************** | ||
| 2 | Auteur : Pierre Aubert | ||
| 3 | Mail : pierre.aubert@lapp.in2p3.fr | ||
| 4 | Licence : CeCILL-C | ||
| 5 | ****************************************/ | ||
| 6 | |||
| 7 | #include <fstream> | ||
| 8 | #include <iostream> | ||
| 9 | #include <thread> | ||
| 10 | |||
| 11 | #include "data_stream_assert.h" | ||
| 12 | #include "PGenericSocketManager.h" | ||
| 13 | |||
| 14 | |||
| 15 | typedef PGenericSocketManager<std::string, PEmptyBackend, PMockBackend> SocketManager; | ||
| 16 | typedef SocketManager::Backend Backend; | ||
| 17 | typedef SocketManager::Mock Mock; | ||
| 18 | |||
| 19 | |||
| 20 | ///Send messages on socket | ||
| 21 | /** @param mode : mode of the mock to be used | ||
| 22 | * @param nbMessage : number of message to be sent | ||
| 23 | * @param address : address of the socket | ||
| 24 | * @param port : connection port to be used | ||
| 25 | */ | ||
| 26 | 1 | void threadSendData(PSocketMode::PSocketMode mode, size_t nbMessage, const std::string & address, size_t port){ | |
| 27 |
1/1✓ Branch 0 (2→3) taken 1 times.
|
1 | SocketManager manager(mode); //Mock mode |
| 28 |
11/14✓ Branch 0 (5→6) taken 1 times.
✓ Branch 2 (8→9) taken 1 times.
✓ Branch 4 (11→12) taken 1 times.
✓ Branch 6 (12→13) taken 1 times.
✓ Branch 8 (15→16) taken 1 times.
✓ Branch 10 (16→17) taken 1 times.
✓ Branch 12 (17→18) taken 1 times.
✓ Branch 14 (20→21) taken 1 times.
✓ Branch 16 (21→22) taken 1 times.
✓ Branch 18 (22→23) taken 1 times.
✗ Branch 20 (26→27) not taken.
✓ Branch 21 (26→28) taken 1 times.
✗ Branch 22 (121→122) not taken.
✗ Branch 23 (121→123) not taken.
|
10 | data_stream_assert(manager.addServerSocket("Alice", PSocketParam{address, port}, Backend::server(), "", Mock::server())); |
| 29 |
6/6✓ Branch 0 (38→39) taken 1 times.
✓ Branch 2 (41→42) taken 1 times.
✓ Branch 4 (44→45) taken 1 times.
✓ Branch 6 (47→48) taken 1 times.
✓ Branch 8 (48→49) taken 1 times.
✓ Branch 10 (49→50) taken 1 times.
|
8 | data_stream_assert(manager.isConnected("Alice")); |
| 30 |
7/7✓ Branch 0 (60→61) taken 1 times.
✓ Branch 2 (63→64) taken 1 times.
✓ Branch 4 (66→67) taken 1 times.
✓ Branch 6 (69→70) taken 1 times.
✓ Branch 8 (70→71) taken 1 times.
✓ Branch 10 (71→72) taken 1 times.
✓ Branch 12 (72→73) taken 1 times.
|
7 | data_stream_assert(manager.getSocket("Alice")->waitUntilConnection(100lu, 50lu)); // Wait until the client is connected |
| 31 |
2/2✓ Branch 0 (110→82) taken 10 times.
✓ Branch 1 (110→111) taken 1 times.
|
11 | for(size_t i(0lu); i < nbMessage; ++i){ |
| 32 |
6/6✓ Branch 0 (84→85) taken 10 times.
✓ Branch 2 (87→88) taken 10 times.
✓ Branch 4 (90→91) taken 10 times.
✓ Branch 6 (93→94) taken 10 times.
✓ Branch 8 (94→95) taken 10 times.
✓ Branch 10 (95→96) taken 10 times.
|
70 | data_stream_assert(manager.sendData("Alice", i) == PSendStatus::OK); |
| 33 |
5/5✓ Branch 0 (104→105) taken 10 times.
✓ Branch 2 (105→106) taken 10 times.
✓ Branch 4 (106→107) taken 10 times.
✓ Branch 6 (107→108) taken 10 times.
✓ Branch 8 (108→109) taken 10 times.
|
10 | std::cout << "message n°"<<i<<", Send value " << i << std::endl; |
| 34 | } | ||
| 35 | 1 | } | |
| 36 | |||
| 37 | ///Received messages on socket | ||
| 38 | /** @param mode : mode of the mock to be used | ||
| 39 | * @param address : address of the socket | ||
| 40 | * @param nbMessage : number of message to be read | ||
| 41 | * @param port : connection port to be used | ||
| 42 | */ | ||
| 43 | 1 | void threadReceivedData(PSocketMode::PSocketMode mode, const std::string & address, size_t nbMessage, size_t port){ | |
| 44 |
1/1✓ Branch 0 (2→3) taken 1 times.
|
1 | SocketManager manager(mode); //Mock mode |
| 45 |
11/14✓ Branch 0 (5→6) taken 1 times.
✓ Branch 2 (8→9) taken 1 times.
✓ Branch 4 (11→12) taken 1 times.
✓ Branch 6 (12→13) taken 1 times.
✓ Branch 8 (15→16) taken 1 times.
✓ Branch 10 (16→17) taken 1 times.
✓ Branch 12 (17→18) taken 1 times.
✓ Branch 14 (20→21) taken 1 times.
✓ Branch 16 (21→22) taken 1 times.
✓ Branch 18 (22→23) taken 1 times.
✗ Branch 20 (26→27) not taken.
✓ Branch 21 (26→28) taken 1 times.
✗ Branch 22 (94→95) not taken.
✗ Branch 23 (94→96) not taken.
|
10 | data_stream_assert(manager.addClientSocket("Bob", PSocketParam{address, port}, Backend::client(), "", Mock::client())); |
| 46 |
7/7✓ Branch 0 (38→39) taken 1 times.
✓ Branch 2 (41→42) taken 1 times.
✓ Branch 4 (44→45) taken 1 times.
✓ Branch 6 (47→48) taken 1 times.
✓ Branch 8 (48→49) taken 1 times.
✓ Branch 10 (49→50) taken 1 times.
✓ Branch 12 (50→51) taken 1 times.
|
7 | data_stream_assert(manager.getSocket("Bob")->waitUntilConnection(100lu, 50lu)); |
| 47 | 1 | size_t i(0lu); | |
| 48 |
2/2✓ Branch 0 (83→60) taken 10 times.
✓ Branch 1 (83→84) taken 1 times.
|
11 | while(i < nbMessage){ |
| 49 | 10 | size_t value(0lu); | |
| 50 |
6/6✓ Branch 0 (62→63) taken 10 times.
✓ Branch 2 (65→66) taken 10 times.
✓ Branch 4 (68→69) taken 10 times.
✓ Branch 6 (71→72) taken 10 times.
✓ Branch 8 (72→73) taken 10 times.
✓ Branch 10 (73→74) taken 10 times.
|
70 | data_stream_assert(manager.recvData("Bob", value) == PRecvStatus::OK); |
| 51 | 10 | ++i; | |
| 52 | } | ||
| 53 | 1 | } | |
| 54 | |||
| 55 | ///Launch the process | ||
| 56 | 1 | void testMockSocket(){ | |
| 57 | 1 | size_t nbMessage(10lu), port(3390lu); | |
| 58 |
1/1✓ Branch 0 (4→5) taken 1 times.
|
1 | std::string hostName("localhost"); |
| 59 |
1/1✓ Branch 0 (6→7) taken 1 times.
|
1 | threadSendData(PSocketMode::MOCK_RECORD, nbMessage, hostName, port); |
| 60 |
1/1✓ Branch 0 (7→8) taken 1 times.
|
1 | threadReceivedData(PSocketMode::MOCK, hostName, nbMessage, port); |
| 61 | 1 | } | |
| 62 | |||
| 63 | |||
| 64 | ///Send messages on socket | ||
| 65 | /** @param mode : mode of the mock to be used | ||
| 66 | * @param nbMessage : number of message to be sent | ||
| 67 | * @param address : address of the socket | ||
| 68 | * @param port : connection port to be used | ||
| 69 | */ | ||
| 70 | 1 | void threadSendMessage(PSocketMode::PSocketMode mode, size_t nbMessage, const std::string & address, size_t port){ | |
| 71 |
1/1✓ Branch 0 (2→3) taken 1 times.
|
1 | SocketManager manager(mode); //Mock mode |
| 72 |
1/1✓ Branch 0 (3→4) taken 1 times.
|
1 | manager.setMode(PSocketMode::MOCK_RECORD); |
| 73 |
11/14✓ Branch 0 (6→7) taken 1 times.
✓ Branch 2 (9→10) taken 1 times.
✓ Branch 4 (12→13) taken 1 times.
✓ Branch 6 (13→14) taken 1 times.
✓ Branch 8 (16→17) taken 1 times.
✓ Branch 10 (17→18) taken 1 times.
✓ Branch 12 (18→19) taken 1 times.
✓ Branch 14 (21→22) taken 1 times.
✓ Branch 16 (22→23) taken 1 times.
✓ Branch 18 (23→24) taken 1 times.
✗ Branch 20 (27→28) not taken.
✓ Branch 21 (27→29) taken 1 times.
✗ Branch 22 (104→105) not taken.
✗ Branch 23 (104→106) not taken.
|
10 | data_stream_assert(manager.addServerSocket("Alice", PSocketParam{address, port}, Backend::server(), "./testMessage/", Mock::server())); |
| 74 |
6/6✓ Branch 0 (39→40) taken 1 times.
✓ Branch 2 (42→43) taken 1 times.
✓ Branch 4 (45→46) taken 1 times.
✓ Branch 6 (48→49) taken 1 times.
✓ Branch 8 (49→50) taken 1 times.
✓ Branch 10 (50→51) taken 1 times.
|
7 | data_stream_assert(manager.isConnected("Alice")); |
| 75 |
2/2✓ Branch 0 (93→60) taken 10 times.
✓ Branch 1 (93→94) taken 1 times.
|
11 | for(size_t i(0lu); i < nbMessage; ++i){ |
| 76 | 10 | Backend::Message msg; | |
| 77 |
1/1✓ Branch 0 (61→62) taken 10 times.
|
10 | msg.push_back(i + 1); |
| 78 |
1/1✓ Branch 0 (62→63) taken 10 times.
|
10 | msg.push_back(i + 2); |
| 79 |
1/1✓ Branch 0 (63→64) taken 10 times.
|
10 | msg.push_back(i + 3); |
| 80 | |||
| 81 |
6/6✓ Branch 0 (66→67) taken 10 times.
✓ Branch 2 (69→70) taken 10 times.
✓ Branch 4 (72→73) taken 10 times.
✓ Branch 6 (75→76) taken 10 times.
✓ Branch 8 (76→77) taken 10 times.
✓ Branch 10 (77→78) taken 10 times.
|
70 | data_stream_assert(manager.sendMsg("Alice", msg) == PSendStatus::OK); |
| 82 |
5/5✓ Branch 0 (86→87) taken 10 times.
✓ Branch 2 (87→88) taken 10 times.
✓ Branch 4 (88→89) taken 10 times.
✓ Branch 6 (89→90) taken 10 times.
✓ Branch 8 (90→91) taken 10 times.
|
10 | std::cout << "message n°"<<i<<", Send message " << i << std::endl; |
| 83 | 10 | } | |
| 84 | 1 | } | |
| 85 | |||
| 86 | ///Received messages on socket | ||
| 87 | /** @param mode : mode of the mock to be used | ||
| 88 | * @param address : address of the socket | ||
| 89 | * @param nbMessage : number of message to be read | ||
| 90 | * @param port : connection port to be used | ||
| 91 | */ | ||
| 92 | 1 | void threadReceivedMessage(PSocketMode::PSocketMode mode, const std::string & address, size_t nbMessage, size_t port){ | |
| 93 |
1/1✓ Branch 0 (2→3) taken 1 times.
|
1 | SocketManager manager(mode); //Mock mode |
| 94 |
11/14✓ Branch 0 (5→6) taken 1 times.
✓ Branch 2 (8→9) taken 1 times.
✓ Branch 4 (11→12) taken 1 times.
✓ Branch 6 (12→13) taken 1 times.
✓ Branch 8 (15→16) taken 1 times.
✓ Branch 10 (16→17) taken 1 times.
✓ Branch 12 (17→18) taken 1 times.
✓ Branch 14 (20→21) taken 1 times.
✓ Branch 16 (21→22) taken 1 times.
✓ Branch 18 (22→23) taken 1 times.
✗ Branch 20 (26→27) not taken.
✓ Branch 21 (26→28) taken 1 times.
✗ Branch 22 (139→140) not taken.
✗ Branch 23 (139→141) not taken.
|
9 | data_stream_assert(manager.addClientSocket("Bob", PSocketParam{address, port}, Backend::client(), "./testMessage/", Mock::client())); |
| 95 | 1 | size_t i(0lu); | |
| 96 |
2/2✓ Branch 0 (128→37) taken 10 times.
✓ Branch 1 (128→129) taken 1 times.
|
11 | while(i < nbMessage){ |
| 97 | 10 | Backend::Message msg; | |
| 98 |
6/6✓ Branch 0 (40→41) taken 10 times.
✓ Branch 2 (43→44) taken 10 times.
✓ Branch 4 (46→47) taken 10 times.
✓ Branch 6 (49→50) taken 10 times.
✓ Branch 8 (50→51) taken 10 times.
✓ Branch 10 (51→52) taken 10 times.
|
80 | data_stream_assert(manager.recvMsg("Bob", msg) == PRecvStatus::OK); |
| 99 |
5/5✓ Branch 0 (62→63) taken 10 times.
✓ Branch 2 (65→66) taken 10 times.
✓ Branch 4 (68→69) taken 10 times.
✓ Branch 6 (69→70) taken 10 times.
✓ Branch 8 (70→71) taken 10 times.
|
50 | data_stream_assert(Backend::msgSize(msg) == 3lu); |
| 100 | |||
| 101 |
1/1✓ Branch 0 (77→78) taken 10 times.
|
10 | DataStreamIter data = Backend::msgData(msg); |
| 102 |
4/4✓ Branch 0 (80→81) taken 10 times.
✓ Branch 2 (83→84) taken 10 times.
✓ Branch 4 (86→87) taken 10 times.
✓ Branch 6 (87→88) taken 10 times.
|
60 | data_stream_assert(data[0] == (char)i + 1); |
| 103 |
4/4✓ Branch 0 (96→97) taken 10 times.
✓ Branch 2 (99→100) taken 10 times.
✓ Branch 4 (102→103) taken 10 times.
✓ Branch 6 (103→104) taken 10 times.
|
60 | data_stream_assert(data[1] == (char)i + 2); |
| 104 |
4/4✓ Branch 0 (112→113) taken 10 times.
✓ Branch 2 (115→116) taken 10 times.
✓ Branch 4 (118→119) taken 10 times.
✓ Branch 6 (119→120) taken 10 times.
|
50 | data_stream_assert(data[2] == (char)i + 3); |
| 105 | 10 | ++i; | |
| 106 | 10 | } | |
| 107 | 1 | } | |
| 108 | |||
| 109 | ///Launch the process | ||
| 110 | 1 | void testMockSocketMessage(){ | |
| 111 | 1 | size_t nbMessage(10lu), port(3390lu); | |
| 112 |
1/1✓ Branch 0 (4→5) taken 1 times.
|
1 | std::string hostName("localhost"); |
| 113 |
1/1✓ Branch 0 (6→7) taken 1 times.
|
1 | threadSendMessage(PSocketMode::MOCK_RECORD, nbMessage, hostName, port); |
| 114 |
1/1✓ Branch 0 (7→8) taken 1 times.
|
1 | threadReceivedMessage(PSocketMode::MOCK, hostName, nbMessage, port); |
| 115 | 1 | } | |
| 116 | |||
| 117 | 1 | int main(int argc, char **argv){ | |
| 118 | 1 | testMockSocket(); | |
| 119 | 1 | testMockSocketMessage(); | |
| 120 | 1 | return 0; | |
| 121 | } | ||
| 122 |