@@ -167,4 +167,120 @@ TEST(SessionStoreTests, UdpExceptSessionStoreId)
167167 store.registerClient (endpoint3);
168168 auto excepted = store.udpEndpointsOfExcept (session);
169169 ASSERT_EQ (excepted.size (), 2 );
170+ }
171+
172+ TEST (SessionStoreTests, Copy)
173+ {
174+ using namespace polymorph ::network;
175+ SessionStore store;
176+ auto endpoint1 = asio::ip::udp::endpoint (asio::ip::make_address_v4 (" 127.0.0.1" ), 1 );
177+ auto endpoint2 = asio::ip::tcp::endpoint (asio::ip::make_address_v4 (" 127.0.0.2" ), 2 );
178+ auto endpoint3 = asio::ip::udp::endpoint (asio::ip::make_address_v4 (" 127.0.0.3" ), 3 );
179+ auto endpoint4 = asio::ip::tcp::endpoint (asio::ip::make_address_v4 (" 127.0.0.4" ), 4 );
180+ auto session1 = store.registerClient (endpoint1);
181+ auto session2 = store.registerClient (endpoint2);
182+ auto session3 = store.registerClient (endpoint3);
183+ auto session4 = store.registerClient (endpoint4);
184+ SessionStore copy = store;
185+ ASSERT_EQ (copy.sessionOf (endpoint1), session1);
186+ ASSERT_EQ (copy.sessionOf (endpoint2), session2);
187+ ASSERT_EQ (copy.sessionOf (endpoint3), session3);
188+ ASSERT_EQ (copy.sessionOf (endpoint4), session4);
189+ }
190+
191+ TEST (SessionStoreTests, CopyTcpSessions)
192+ {
193+ using namespace polymorph ::network;
194+ SessionStore store;
195+ SessionStore copy = store;
196+ auto endpoint1 = asio::ip::udp::endpoint (asio::ip::make_address_v4 (" 127.0.0.1" ), 1 );
197+ auto endpoint2 = asio::ip::tcp::endpoint (asio::ip::make_address_v4 (" 127.0.0.2" ), 2 );
198+ auto endpoint3 = asio::ip::udp::endpoint (asio::ip::make_address_v4 (" 127.0.0.3" ), 3 );
199+ auto endpoint4 = asio::ip::tcp::endpoint (asio::ip::make_address_v4 (" 127.0.0.4" ), 4 );
200+ store.registerClient (endpoint1);
201+ auto session2 = store.registerClient (endpoint2);
202+ store.registerClient (endpoint3);
203+ auto session4 = store.registerClient (endpoint4);
204+ copy.copyTcpSessionsFrom (store);
205+ ASSERT_EQ (copy.sessionOf (endpoint2), session2);
206+ ASSERT_EQ (copy.sessionOf (endpoint4), session4);
207+ try {
208+ copy.sessionOf (endpoint1);
209+ FAIL ();
210+ } catch (const exceptions::UnknownSessionException&) {}
211+ try {
212+ copy.sessionOf (endpoint3);
213+ FAIL ();
214+ } catch (const exceptions::UnknownSessionException&) {}
215+
216+ }
217+
218+ TEST (SessionStoreTests, CopyUdpSessions)
219+ {
220+ using namespace polymorph ::network;
221+ SessionStore store;
222+ SessionStore copy = store;
223+ auto endpoint1 = asio::ip::udp::endpoint (asio::ip::make_address_v4 (" 127.0.0.1" ), 1 );
224+ auto endpoint2 = asio::ip::tcp::endpoint (asio::ip::make_address_v4 (" 127.0.0.2" ), 2 );
225+ auto endpoint3 = asio::ip::udp::endpoint (asio::ip::make_address_v4 (" 127.0.0.3" ), 3 );
226+ auto endpoint4 = asio::ip::tcp::endpoint (asio::ip::make_address_v4 (" 127.0.0.4" ), 4 );
227+ auto session1 = store.registerClient (endpoint1);
228+ store.registerClient (endpoint2);
229+ auto session3 = store.registerClient (endpoint3);
230+ store.registerClient (endpoint4);
231+ copy.copyUdpSessionsFrom (store);
232+ ASSERT_EQ (copy.sessionOf (endpoint1), session1);
233+ ASSERT_EQ (copy.sessionOf (endpoint3), session3);
234+ try {
235+ copy.sessionOf (endpoint2);
236+ FAIL ();
237+ } catch (const exceptions::UnknownSessionException&) {}
238+ try {
239+ copy.sessionOf (endpoint4);
240+ FAIL ();
241+ } catch (const exceptions::UnknownSessionException&) {}
242+ }
243+
244+ TEST (SessionStoreTests, CopyUdpAuthorizationKeys)
245+ {
246+ using namespace polymorph ::network;
247+ SessionStore store;
248+ SessionStore copy = store;
249+ auto endpoint1 = asio::ip::udp::endpoint (asio::ip::make_address_v4 (" 127.0.0.1" ), 1 );
250+ auto endpoint2 = asio::ip::tcp::endpoint (asio::ip::make_address_v4 (" 127.0.0.2" ), 2 );
251+ auto endpoint3 = asio::ip::udp::endpoint (asio::ip::make_address_v4 (" 127.0.0.3" ), 3 );
252+ auto endpoint4 = asio::ip::tcp::endpoint (asio::ip::make_address_v4 (" 127.0.0.4" ), 4 );
253+ auto session2 = store.registerClient (endpoint2);
254+ auto session4 = store.registerClient (endpoint4);
255+ auto key2 = store.generateUdpAuthorizationKey (session2);
256+ auto key4 = store.generateUdpAuthorizationKey (session4);
257+ copy.copyUdpAuthorizationKeysFrom (store);
258+ ASSERT_NO_THROW ({
259+ copy.registerAuthoredClient (endpoint1, session2, key2);
260+ });
261+ ASSERT_NO_THROW ({
262+ copy.registerAuthoredClient (endpoint3, session4, key4);
263+ });
264+ }
265+
266+ TEST (SessionStoreTests, CopyTcpAuthorizationKeys)
267+ {
268+ using namespace polymorph ::network;
269+ SessionStore store;
270+ SessionStore copy = store;
271+ auto endpoint1 = asio::ip::udp::endpoint (asio::ip::make_address_v4 (" 127.0.0.1" ), 1 );
272+ auto endpoint2 = asio::ip::tcp::endpoint (asio::ip::make_address_v4 (" 127.0.0.2" ), 2 );
273+ auto endpoint3 = asio::ip::udp::endpoint (asio::ip::make_address_v4 (" 127.0.0.3" ), 3 );
274+ auto endpoint4 = asio::ip::tcp::endpoint (asio::ip::make_address_v4 (" 127.0.0.4" ), 4 );
275+ auto session1 = store.registerClient (endpoint1);
276+ auto session3 = store.registerClient (endpoint3);
277+ auto key1 = store.generateTcpAuthorizationKey (session1);
278+ auto key3 = store.generateTcpAuthorizationKey (session3);
279+ copy.copyTcpAuthorizationKeysFrom (store);
280+ ASSERT_NO_THROW ({
281+ copy.registerAuthoredClient (endpoint2, session1, key1);
282+ });
283+ ASSERT_NO_THROW ({
284+ copy.registerAuthoredClient (endpoint4, session3, key3);
285+ });
170286}
0 commit comments