Commit f224398e authored by Davis King's avatar Davis King

Added tests for the bridge.

--HG--
extra : convert_revision : svn%3Afdd8eb12-d10e-0410-9acb-85c331704f74/trunk%404276
parent 995d0216
......@@ -26,6 +26,7 @@ set (tests
binary_search_tree_kernel_2a.cpp
binary_search_tree_mm1.cpp
binary_search_tree_mm2.cpp
bridge.cpp
byte_orderer.cpp
cmd_line_parser.cpp
cmd_line_parser_wchar_t.cpp
......
// Copyright (C) 2011 Davis E. King (davis@dlib.net)
// License: Boost Software License See LICENSE.txt for the full license.
#include <sstream>
#include <string>
#include <cstdlib>
#include <ctime>
#include <dlib/bridge.h>
#include <dlib/type_safe_union.h>
#include "tester.h"
namespace
{
using namespace test;
using namespace dlib;
using namespace std;
logger dlog("test.bridge");
const unsigned short testing_port = 41238;
void do_test1()
{
dlib::pipe<int> in(0), out(0);
bridge b1(connect_to_ip_and_port("127.0.0.1",testing_port), receive(in));
bridge b2(listen_on_port(testing_port), transmit(out));
for (int i = 0; i < 100; ++i)
{
int val = i;
out.enqueue(val);
val = 0;
in.dequeue(val);
DLIB_TEST(val == i);
}
}
void do_test2()
{
dlib::pipe<int> in(0), out(0), echo_pipe(0);
bridge b2(listen_on_port(testing_port), transmit(out), receive(in));
bridge echo(connect_to_ip_and_port("127.0.0.1",testing_port), receive(echo_pipe), transmit(echo_pipe));
for (int i = 0; i < 100; ++i)
{
int val = i;
out.enqueue(val);
val = 0;
in.dequeue(val);
DLIB_TEST(val == i);
}
}
void do_test3()
{
dlib::pipe<int> in(10), out(10), echo_pipe(10);
bridge b2(listen_on_port(testing_port), transmit(out), receive(in));
bridge echo(connect_to_ip_and_port("127.0.0.1",testing_port), receive(echo_pipe), transmit(echo_pipe));
b2.reconfigure(listen_on_port(testing_port), transmit(out), receive(in));
for (int i = 0; i < 100; ++i)
{
int val = i;
out.enqueue(val);
val = 0;
in.dequeue(val);
DLIB_TEST(val == i);
}
}
void do_test4()
{
dlib::pipe<int> in(0), out(0), echo_pipe(0);
bridge b2, echo;
b2.reconfigure(listen_on_port(testing_port), receive(in), transmit(out));
echo.reconfigure(connect_to_ip_and_port("127.0.0.1",testing_port), transmit(echo_pipe), receive(echo_pipe));
for (int i = 0; i < 100; ++i)
{
int val = i;
out.enqueue(val);
val = 0;
in.dequeue(val);
DLIB_TEST(val == i);
}
}
void do_test5(int pipe_size)
{
typedef type_safe_union<int, bridge_status> tsu_type;
dlib::pipe<tsu_type> out(pipe_size);
dlib::pipe<tsu_type> in(pipe_size);
dlib::pipe<bridge_status> out_status(pipe_size);
bridge b1(connect_to_ip_and_port("127.0.0.1",testing_port), receive(in));
tsu_type msg;
{
bridge b2(listen_on_port(testing_port), transmit(out), receive(out_status));
in.dequeue(msg);
DLIB_TEST(msg.contains<bridge_status>() == true);
DLIB_TEST(msg.get<bridge_status>().is_connected == true);
DLIB_TEST(msg.get<bridge_status>().foreign_ip == "127.0.0.1");
DLIB_TEST(msg.get<bridge_status>().foreign_port == testing_port);
bridge_status temp;
out_status.dequeue(temp);
DLIB_TEST(temp.is_connected == true);
DLIB_TEST(temp.foreign_ip == "127.0.0.1");
for (int i = 0; i < 100; ++i)
{
msg = i;
out.enqueue(msg);
msg.get<int>() = 0;
in.dequeue(msg);
DLIB_TEST(msg.contains<int>() == true);
DLIB_TEST(msg.get<int>() == i);
}
}
in.dequeue(msg);
DLIB_TEST(msg.contains<bridge_status>() == true);
DLIB_TEST(msg.get<bridge_status>().is_connected == false);
DLIB_TEST(msg.get<bridge_status>().foreign_ip == "127.0.0.1");
DLIB_TEST(msg.get<bridge_status>().foreign_port == testing_port);
}
void do_test6()
{
dlib::pipe<int> in(0), out(300);
bridge b1(connect_to_ip_and_port("127.0.0.1",testing_port), receive(in));
bridge b2(listen_on_port(testing_port), transmit(out));
for (int i = 0; i < 100; ++i)
{
int val = i;
out.enqueue(val);
}
int val = 10;
in.dequeue(val);
DLIB_TEST(val == 0);
dlib::sleep(100);
in.dequeue(val);
DLIB_TEST(val == 1);
dlib::sleep(100);
}
class test_bridge : public tester
{
public:
test_bridge (
) :
tester ("test_bridge",
"Runs tests on the bridge component.")
{}
void perform_test (
)
{
dlog << LINFO << "testing bridge, using local port number of " << testing_port;
print_spinner();
do_test1();
print_spinner();
do_test2();
print_spinner();
do_test3();
print_spinner();
do_test4();
print_spinner();
for (int i = 0; i < 5; ++i)
do_test5(i);
print_spinner();
do_test6();
}
} a;
}
......@@ -36,6 +36,7 @@ SRC += binary_search_tree_kernel_1a.cpp
SRC += binary_search_tree_kernel_2a.cpp
SRC += binary_search_tree_mm1.cpp
SRC += binary_search_tree_mm2.cpp
SRC += bridge.cpp
SRC += byte_orderer.cpp
SRC += cmd_line_parser.cpp
SRC += cmd_line_parser_wchar_t.cpp
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment