Skip to content

Commit a44f194

Browse files
author
Alexandre jublot
committed
tests: added end to end tests for session transfer
1 parent c335b85 commit a44f194

2 files changed

Lines changed: 155 additions & 0 deletions

File tree

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
/*
2+
** EPITECH PROJECT, 2022
3+
** TcpToUdp.cpp
4+
** File description:
5+
** TcpToUdp.cpp
6+
*/
7+
8+
#include <gtest/gtest.h>
9+
#include "Polymorph/Network/tcp/Server.hpp"
10+
#include "Polymorph/Network/tcp/Client.hpp"
11+
#include "../utils.hpp"
12+
#include "Polymorph/Network/dto/SessionTransferRequestDto.hpp"
13+
#include "Polymorph/Network/dto/SessionTransferResponseDto.hpp"
14+
#include "Polymorph/Network/udp/Server.hpp"
15+
#include "Polymorph/Network/udp/Client.hpp"
16+
17+
TEST(sessionTransferE2E, TcpToUdp)
18+
{
19+
using namespace polymorph::network;
20+
21+
//checks
22+
SessionTransferRequestDto request;
23+
24+
25+
// Server Setup
26+
SessionStore serverStore;
27+
tcp::Server tcpServer(4242, serverStore);
28+
tcpServer.start();
29+
30+
// Client Setup
31+
tcp::Client tcpClient("127.0.0.1", 4242);
32+
33+
// Client Infos
34+
SessionId id;
35+
bool tcpConnected = false;
36+
37+
std::atomic<bool> authKeyReceived(false);
38+
AuthorizationKey authKey;
39+
40+
tcpClient.connect([&id, &tcpConnected](bool authorized, SessionId sId) {
41+
id = sId;
42+
tcpConnected = true;
43+
});
44+
45+
PNL_WAIT_COND_LOOP(!tcpConnected, PNL_TIME_OUT, 5)
46+
ASSERT_TRUE(tcpConnected);
47+
tcpClient.registerReceiveHandler<SessionTransferResponseDto>(SessionTransferResponseDto::opId, [&authKey, &authKeyReceived](const PacketHeader &, const SessionTransferResponseDto &response) {
48+
authKey = response.authKey;
49+
authKeyReceived = true;
50+
return true;
51+
});
52+
tcpClient.send(SessionTransferRequestDto::opId, request);
53+
PNL_WAIT(PNL_TIME_OUT)
54+
ASSERT_TRUE(authKeyReceived);
55+
56+
// Server Setup
57+
std::map<OpId, bool> safeties;
58+
udp::Server udpServer(4242, safeties, serverStore);
59+
auto serverConnector = std::make_shared<udp::Connector>(udpServer);
60+
udpServer.setConnector(serverConnector);
61+
serverConnector->start();
62+
63+
// Client Setup
64+
udp::Client udpClient("127.0.0.1", 4242, safeties);
65+
auto clientConnector = std::make_shared<udp::Connector>(udpClient);
66+
udpClient.setConnector(clientConnector);
67+
clientConnector->start();
68+
69+
// Client Infos
70+
bool udpConnected = false;
71+
72+
udpClient.connectWithSession(id, authKey, [&udpConnected](bool authorized, SessionId) {
73+
udpConnected = authorized;
74+
});
75+
PNL_WAIT(PNL_TIME_OUT)
76+
ASSERT_TRUE(udpConnected);
77+
}
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
/*
2+
** EPITECH PROJECT, 2022
3+
** TcpToUdp.cpp
4+
** File description:
5+
** TcpToUdp.cpp
6+
*/
7+
8+
#include <gtest/gtest.h>
9+
#include "Polymorph/Network/tcp/Server.hpp"
10+
#include "Polymorph/Network/tcp/Client.hpp"
11+
#include "../utils.hpp"
12+
#include "Polymorph/Network/dto/SessionTransferRequestDto.hpp"
13+
#include "Polymorph/Network/dto/SessionTransferResponseDto.hpp"
14+
#include "Polymorph/Network/udp/Server.hpp"
15+
#include "Polymorph/Network/udp/Client.hpp"
16+
17+
TEST(sessionTransferE2E, UdpToTcp)
18+
{
19+
using namespace polymorph::network;
20+
21+
//checks
22+
SessionTransferRequestDto request;
23+
std::atomic<bool> authKeyReceived(false);
24+
AuthorizationKey authKey;
25+
26+
// Server Setup
27+
std::map<OpId, bool> safeties;
28+
SessionStore serverStore;
29+
udp::Server udpServer(4242, safeties, serverStore);
30+
auto serverConnector = std::make_shared<udp::Connector>(udpServer);
31+
udpServer.setConnector(serverConnector);
32+
serverConnector->start();
33+
34+
// Client Setup
35+
udp::Client udpClient("127.0.0.1", 4242, safeties);
36+
auto clientConnector = std::make_shared<udp::Connector>(udpClient);
37+
udpClient.setConnector(clientConnector);
38+
clientConnector->start();
39+
40+
// Client Infos
41+
bool udpConnected = false;
42+
SessionId id;
43+
44+
udpClient.connect([&udpConnected, &id](bool authorized, SessionId sId) {
45+
udpConnected = authorized;
46+
id = sId;
47+
});
48+
49+
PNL_WAIT_COND_LOOP(!udpConnected, PNL_TIME_OUT, 5)
50+
ASSERT_TRUE(udpConnected);
51+
52+
udpClient.registerReceiveHandler<SessionTransferResponseDto>(SessionTransferResponseDto::opId, [&authKey, &authKeyReceived](const PacketHeader &, const SessionTransferResponseDto &response) {
53+
authKey = response.authKey;
54+
authKeyReceived = true;
55+
});
56+
udpClient.send(SessionTransferRequestDto::opId, request);
57+
58+
PNL_WAIT(PNL_TIME_OUT)
59+
ASSERT_TRUE(authKeyReceived);
60+
61+
62+
// Server Setup
63+
tcp::Server tcpServer(4242, serverStore);
64+
tcpServer.start();
65+
66+
// Client Setup
67+
tcp::Client tcpClient("127.0.0.1", 4242);
68+
69+
bool tcpConnected = false;
70+
71+
72+
tcpClient.connectWithSession(id, authKey, [&tcpConnected](bool authorized, SessionId sId) {
73+
tcpConnected = true;
74+
});
75+
76+
PNL_WAIT(PNL_TIME_OUT)
77+
ASSERT_TRUE(tcpConnected);
78+
}

0 commit comments

Comments
 (0)