| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | /*************************************** | ||
| 2 | Auteur : Pierre Aubert | ||
| 3 | Mail : pierre.aubert@lapp.in2p3.fr | ||
| 4 | Licence : CeCILL-C | ||
| 5 | ****************************************/ | ||
| 6 | |||
| 7 | #include <iostream> | ||
| 8 | |||
| 9 | #include "data_stream_assert.h" | ||
| 10 | #include "data_stream_check_value.h" | ||
| 11 | #include "PMockBackendFile.h" | ||
| 12 | |||
| 13 | ///Create the mock with the server | ||
| 14 | /** @param hostName : name of the host to be used | ||
| 15 | * @param port : port to be used | ||
| 16 | * @param nbMessage : number of message to be sent | ||
| 17 | */ | ||
| 18 | 1 | void createMockServer(const std::string & hostName, size_t port, size_t nbMessage){ | |
| 19 |
1/1✓ Branch 0 (2→3) taken 1 times.
|
1 | PMockBackendFile backend; |
| 20 |
2/2✓ Branch 0 (3→4) taken 1 times.
✓ Branch 2 (4→5) taken 1 times.
|
1 | PMockBackendFile::Socket socket, otherSocket; |
| 21 |
8/11✓ Branch 0 (7→8) taken 1 times.
✓ Branch 2 (10→11) taken 1 times.
✓ Branch 4 (13→14) taken 1 times.
✓ Branch 6 (14→15) 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 (19→20) not taken.
✓ Branch 15 (19→21) taken 1 times.
✗ Branch 16 (112→113) not taken.
✗ Branch 17 (112→114) not taken.
|
5 | data_stream_assert(backend.createServerSocket(socket, PSocketParam{hostName, port}, PMockBackendFile::server())); |
| 22 |
1/1✓ Branch 0 (27→28) taken 1 times.
|
1 | socket.setIsMockRecord(true); |
| 23 |
2/2✓ Branch 0 (30→31) taken 1 times.
✓ Branch 2 (31→32) taken 1 times.
|
2 | socket.setMockPrefix("file_"); |
| 24 |
5/5✓ Branch 0 (36→37) taken 1 times.
✓ Branch 2 (39→40) taken 1 times.
✓ Branch 4 (42→43) taken 1 times.
✓ Branch 6 (43→44) taken 1 times.
✓ Branch 8 (44→45) taken 1 times.
|
5 | data_stream_assert(socket.isConnected()); |
| 25 |
2/2✓ Branch 0 (75→52) taken 10 times.
✓ Branch 1 (75→76) taken 1 times.
|
11 | for(size_t i(0lu); i < nbMessage; ++i){ |
| 26 | 10 | PMockBackendFile::Message msg; | |
| 27 |
1/1✓ Branch 0 (53→54) taken 10 times.
|
10 | msg.push_back(1lu); |
| 28 |
1/1✓ Branch 0 (54→55) taken 10 times.
|
10 | msg.push_back(2lu); |
| 29 |
1/1✓ Branch 0 (55→56) taken 10 times.
|
10 | msg.push_back(3lu); |
| 30 |
5/5✓ Branch 0 (58→59) taken 10 times.
✓ Branch 2 (61→62) taken 10 times.
✓ Branch 4 (64→65) taken 10 times.
✓ Branch 6 (65→66) taken 10 times.
✓ Branch 8 (66→67) taken 10 times.
|
50 | data_stream_assert(socket.sendMsg(msg, PSendFlag::BLOCK) == PSendStatus::OK); |
| 31 | 10 | } | |
| 32 |
1/1✓ Branch 0 (76→77) taken 1 times.
|
1 | socket.close(); |
| 33 | |||
| 34 |
8/11✓ Branch 0 (79→80) taken 1 times.
✓ Branch 2 (82→83) taken 1 times.
✓ Branch 4 (85→86) taken 1 times.
✓ Branch 6 (88→89) taken 1 times.
✓ Branch 8 (91→92) taken 1 times.
✓ Branch 10 (92→93) taken 1 times.
✓ Branch 12 (93→94) taken 1 times.
✗ Branch 14 (95→96) not taken.
✓ Branch 15 (95→97) taken 1 times.
✗ Branch 16 (185→186) not taken.
✗ Branch 17 (185→187) not taken.
|
9 | data_stream_assert(phoenix_createMockBackend(otherSocket, PSocketParam{"host", 4444})); |
| 35 | 1 | } | |
| 36 | |||
| 37 | ///Check a recv message | ||
| 38 | /** @param[out] socket : Socket to be used | ||
| 39 | */ | ||
| 40 | 11 | void checkRecvMessage(PMockBackendFile::Socket & socket){ | |
| 41 | 11 | PMockBackendFile::Message msg; | |
| 42 |
5/5✓ Branch 0 (5→6) taken 11 times.
✓ Branch 2 (8→9) taken 11 times.
✓ Branch 4 (11→12) taken 11 times.
✓ Branch 6 (12→13) taken 11 times.
✓ Branch 8 (13→14) taken 11 times.
|
66 | data_stream_assert(socket.recvMsg(msg, PRecvFlag::BLOCK) == PRecvStatus::OK); |
| 43 |
6/6✓ Branch 0 (22→23) taken 11 times.
✓ Branch 2 (25→26) taken 11 times.
✓ Branch 4 (28→29) taken 11 times.
✓ Branch 6 (32→33) taken 11 times.
✓ Branch 8 (33→34) taken 11 times.
✓ Branch 10 (34→35) taken 11 times.
|
88 | data_stream_assert(checkValue("checkRecvMessage::message size", msg.size(), 3lu)); |
| 44 | |||
| 45 |
6/6✓ Branch 0 (45→46) taken 11 times.
✓ Branch 2 (48→49) taken 11 times.
✓ Branch 4 (51→52) taken 11 times.
✓ Branch 6 (55→56) taken 11 times.
✓ Branch 8 (56→57) taken 11 times.
✓ Branch 10 (57→58) taken 11 times.
|
88 | data_stream_assert(checkValue("checkRecvMessage::message[0]", msg[0], (PMockBackendFile::Message::value_type)1lu)); |
| 46 |
6/6✓ Branch 0 (68→69) taken 11 times.
✓ Branch 2 (71→72) taken 11 times.
✓ Branch 4 (74→75) taken 11 times.
✓ Branch 6 (78→79) taken 11 times.
✓ Branch 8 (79→80) taken 11 times.
✓ Branch 10 (80→81) taken 11 times.
|
88 | data_stream_assert(checkValue("checkRecvMessage::message[1]", msg[1], (PMockBackendFile::Message::value_type)2lu)); |
| 47 |
6/6✓ Branch 0 (91→92) taken 11 times.
✓ Branch 2 (94→95) taken 11 times.
✓ Branch 4 (97→98) taken 11 times.
✓ Branch 6 (101→102) taken 11 times.
✓ Branch 8 (102→103) taken 11 times.
✓ Branch 10 (103→104) taken 11 times.
|
77 | data_stream_assert(checkValue("checkRecvMessage::message[2]", msg[2], (PMockBackendFile::Message::value_type)3lu)); |
| 48 | 11 | } | |
| 49 | |||
| 50 | ///Create the mock with the client | ||
| 51 | /** @param hostName : name of the host to be used | ||
| 52 | * @param port : port to be used | ||
| 53 | * @param nbMessage : number of message to be sent | ||
| 54 | */ | ||
| 55 | 1 | void createMockClient(const std::string & hostName, size_t port, size_t nbMessage){ | |
| 56 |
1/1✓ Branch 0 (2→3) taken 1 times.
|
1 | PMockBackendFile backend; |
| 57 |
1/1✓ Branch 0 (3→4) taken 1 times.
|
1 | PMockBackendFile::Socket socket; |
| 58 |
8/11✓ 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 (14→15) taken 1 times.
✓ Branch 10 (15→16) taken 1 times.
✓ Branch 12 (16→17) taken 1 times.
✗ Branch 14 (18→19) not taken.
✓ Branch 15 (18→20) taken 1 times.
✗ Branch 16 (61→62) not taken.
✗ Branch 17 (61→63) not taken.
|
5 | data_stream_assert(backend.createClientSocket(socket, PSocketParam{hostName, port}, PMockBackendFile::client())); |
| 59 |
1/1✓ Branch 0 (26→27) taken 1 times.
|
1 | socket.setIsMockRecord(false); |
| 60 |
2/2✓ Branch 0 (29→30) taken 1 times.
✓ Branch 2 (30→31) taken 1 times.
|
2 | socket.setMockPrefix("file_"); |
| 61 |
5/5✓ Branch 0 (35→36) taken 1 times.
✓ Branch 2 (38→39) taken 1 times.
✓ Branch 4 (41→42) taken 1 times.
✓ Branch 6 (42→43) taken 1 times.
✓ Branch 8 (43→44) taken 1 times.
|
5 | data_stream_assert(socket.isConnected()); |
| 62 |
2/2✓ Branch 0 (53→51) taken 10 times.
✓ Branch 1 (53→54) taken 1 times.
|
11 | for(size_t i(0lu); i < nbMessage; ++i){ |
| 63 |
1/1✓ Branch 0 (51→52) taken 10 times.
|
10 | checkRecvMessage(socket); |
| 64 | } | ||
| 65 |
1/1✓ Branch 0 (54→55) taken 1 times.
|
1 | checkRecvMessage(socket); //Just to make it loop |
| 66 |
1/1✓ Branch 0 (55→56) taken 1 times.
|
1 | socket.close(); |
| 67 | 1 | } | |
| 68 | |||
| 69 | ///Check file backend edges cases | ||
| 70 | 1 | void testFileBackendEdgeCases(){ | |
| 71 |
1/1✓ Branch 0 (2→3) taken 1 times.
|
1 | PMockBackendFile backend; |
| 72 |
1/1✓ Branch 0 (3→4) taken 1 times.
|
1 | PMockBackendFile::Socket socket; |
| 73 | // Test with an invalid path | ||
| 74 |
8/11✓ 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 (20→21) not taken.
✓ Branch 15 (20→22) taken 1 times.
✗ Branch 16 (58→59) not taken.
✗ Branch 17 (58→60) not taken.
|
8 | data_stream_assert(backend.createClientSocket(socket, PSocketParam{"localhost", 8888}, PMockBackendFile::client())); |
| 75 |
2/2✓ Branch 0 (31→32) taken 1 times.
✓ Branch 2 (32→33) taken 1 times.
|
1 | socket.setMockPrefix("invalid/path/"); |
| 76 |
1/1✓ Branch 0 (35→36) taken 1 times.
|
1 | socket.setIsMockRecord(true); |
| 77 | |||
| 78 | // Test isConnected with uninitialized socket | ||
| 79 |
5/5✓ Branch 0 (38→39) taken 1 times.
✓ Branch 2 (41→42) taken 1 times.
✓ Branch 4 (44→45) taken 1 times.
✓ Branch 6 (45→46) taken 1 times.
✓ Branch 8 (46→47) taken 1 times.
|
5 | data_stream_assert(socket.isConnected()); |
| 80 | 1 | } | |
| 81 | |||
| 82 | ///Test the PMockBackendFile | ||
| 83 | 1 | void testMockBackendFile(){ | |
| 84 | 1 | size_t nbMessage(10lu), port(3390lu); | |
| 85 |
1/1✓ Branch 0 (4→5) taken 1 times.
|
1 | std::string hostName("localhost"); |
| 86 |
1/1✓ Branch 0 (6→7) taken 1 times.
|
1 | createMockServer(hostName, port, nbMessage); |
| 87 |
1/1✓ Branch 0 (7→8) taken 1 times.
|
1 | createMockClient(hostName, port, nbMessage); |
| 88 |
1/1✓ Branch 0 (8→9) taken 1 times.
|
1 | testFileBackendEdgeCases(); |
| 89 | 1 | } | |
| 90 | |||
| 91 | ///Test creating a valid socket and sending messages | ||
| 92 | 1 | void testCreateValidSocket(){ | |
| 93 |
1/1✓ Branch 0 (2→3) taken 1 times.
|
1 | PMockBackendFile backend; |
| 94 |
1/1✓ Branch 0 (3→4) taken 1 times.
|
1 | PMockBackendFile::Socket validSocket; |
| 95 |
8/11✓ 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 (20→21) not taken.
✓ Branch 15 (20→22) taken 1 times.
✗ Branch 16 (80→81) not taken.
✗ Branch 17 (80→82) not taken.
|
8 | data_stream_assert(backend.createClientSocket(validSocket, PSocketParam{"localhost", 5555}, PMockBackendFile::client())); |
| 96 |
2/2✓ Branch 0 (31→32) taken 1 times.
✓ Branch 2 (32→33) taken 1 times.
|
1 | validSocket.setMockPrefix("test_error_"); |
| 97 |
1/1✓ Branch 0 (35→36) taken 1 times.
|
1 | validSocket.setIsMockRecord(true); |
| 98 | 1 | PMockBackendFile::Message testMsg; | |
| 99 |
1/1✓ Branch 0 (37→38) taken 1 times.
|
1 | testMsg.push_back(1lu); |
| 100 |
1/1✓ Branch 0 (38→39) taken 1 times.
|
1 | testMsg.push_back(2lu); |
| 101 |
5/5✓ Branch 0 (41→42) taken 1 times.
✓ Branch 2 (44→45) taken 1 times.
✓ Branch 4 (47→48) taken 1 times.
✓ Branch 6 (48→49) taken 1 times.
✓ Branch 8 (49→50) taken 1 times.
|
6 | data_stream_assert(validSocket.sendMsg(testMsg, PSendFlag::BLOCK) == PSendStatus::OK); |
| 102 |
5/5✓ Branch 0 (58→59) taken 1 times.
✓ Branch 2 (61→62) taken 1 times.
✓ Branch 4 (64→65) taken 1 times.
✓ Branch 6 (65→66) taken 1 times.
✓ Branch 8 (66→67) taken 1 times.
|
5 | data_stream_assert(validSocket.sendMsg(testMsg, PSendFlag::BLOCK) == PSendStatus::OK); |
| 103 |
1/1✓ Branch 0 (73→74) taken 1 times.
|
1 | validSocket.close(); |
| 104 | 1 | } | |
| 105 | |||
| 106 | ///Test creating a valid socket | ||
| 107 | 1 | void testCreateValidSocketEdgeCases(){ | |
| 108 |
1/1✓ Branch 0 (2→3) taken 1 times.
|
1 | PMockBackendFile backend; |
| 109 |
1/1✓ Branch 0 (3→4) taken 1 times.
|
1 | PMockBackendFile::Socket readSocket; |
| 110 |
8/11✓ 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 (20→21) not taken.
✓ Branch 15 (20→22) taken 1 times.
✗ Branch 16 (150→151) not taken.
✗ Branch 17 (150→152) not taken.
|
8 | data_stream_assert(backend.createClientSocket(readSocket, PSocketParam{"localhost", 5555}, PMockBackendFile::client())); |
| 111 |
2/2✓ Branch 0 (31→32) taken 1 times.
✓ Branch 2 (32→33) taken 1 times.
|
1 | readSocket.setMockPrefix("test_error_"); |
| 112 |
1/1✓ Branch 0 (35→36) taken 1 times.
|
1 | readSocket.setIsMockRecord(false); |
| 113 | 1 | PMockBackendFile::Message receivedMsg; | |
| 114 |
5/5✓ Branch 0 (39→40) taken 1 times.
✓ Branch 2 (42→43) taken 1 times.
✓ Branch 4 (45→46) taken 1 times.
✓ Branch 6 (46→47) taken 1 times.
✓ Branch 8 (47→48) taken 1 times.
|
6 | data_stream_assert(readSocket.recvMsg(receivedMsg, PRecvFlag::BLOCK) == PRecvStatus::OK); |
| 115 |
5/5✓ Branch 0 (56→57) taken 1 times.
✓ Branch 2 (59→60) taken 1 times.
✓ Branch 4 (62→63) taken 1 times.
✓ Branch 6 (63→64) taken 1 times.
✓ Branch 8 (64→65) taken 1 times.
|
6 | data_stream_assert(readSocket.recvMsg(receivedMsg, PRecvFlag::BLOCK) == PRecvStatus::OK); |
| 116 | // Try to recv again to trigger the edge case (lines 101-104) | ||
| 117 |
5/5✓ Branch 0 (73→74) taken 1 times.
✓ Branch 2 (76→77) taken 1 times.
✓ Branch 4 (79→80) taken 1 times.
✓ Branch 6 (80→81) taken 1 times.
✓ Branch 8 (81→82) taken 1 times.
|
5 | data_stream_assert(readSocket.recvMsg(receivedMsg, PRecvFlag::BLOCK) == PRecvStatus::OK); |
| 118 | // Test send with overflowing eventIndex (lines 110-115) | ||
| 119 | 1 | PMockBackendFile::Message sendMsg; | |
| 120 |
1/1✓ Branch 0 (89→90) taken 1 times.
|
1 | sendMsg.push_back(1lu); |
| 121 |
1/1✓ Branch 0 (90→91) taken 1 times.
|
1 | sendMsg.push_back(2lu); |
| 122 |
5/5✓ Branch 0 (93→94) taken 1 times.
✓ Branch 2 (96→97) taken 1 times.
✓ Branch 4 (99→100) taken 1 times.
✓ Branch 6 (100→101) taken 1 times.
✓ Branch 8 (101→102) taken 1 times.
|
6 | data_stream_assert(readSocket.sendMsg(sendMsg, PSendFlag::BLOCK) == PSendStatus::OK); |
| 123 |
5/5✓ Branch 0 (110→111) taken 1 times.
✓ Branch 2 (113→114) taken 1 times.
✓ Branch 4 (116→117) taken 1 times.
✓ Branch 6 (117→118) taken 1 times.
✓ Branch 8 (118→119) taken 1 times.
|
6 | data_stream_assert(readSocket.sendMsg(sendMsg, PSendFlag::BLOCK) == PSendStatus::OK); |
| 124 |
5/5✓ Branch 0 (127→128) taken 1 times.
✓ Branch 2 (130→131) taken 1 times.
✓ Branch 4 (133→134) taken 1 times.
✓ Branch 6 (134→135) taken 1 times.
✓ Branch 8 (135→136) taken 1 times.
|
5 | data_stream_assert(readSocket.sendMsg(sendMsg, PSendFlag::BLOCK) == PSendStatus::OK); |
| 125 |
1/1✓ Branch 0 (142→143) taken 1 times.
|
1 | readSocket.close(); |
| 126 | 1 | } | |
| 127 | |||
| 128 | 1 | int main(int argc, char **argv){ | |
| 129 | 1 | testMockBackendFile(); | |
| 130 | 1 | testCreateValidSocket(); | |
| 131 | 1 | testCreateValidSocketEdgeCases(); | |
| 132 | 1 | return 0; | |
| 133 | } | ||
| 134 |