2010-02-11 11:15:57 +01:00
|
|
|
#include "testutil.hh"
|
|
|
|
#include <cxxtest/TestSuite.h>
|
|
|
|
|
2010-02-15 20:39:08 +01:00
|
|
|
#include "measurement.hh"
|
|
|
|
|
2010-02-11 11:15:57 +01:00
|
|
|
#include <fstream>
|
2010-02-15 20:39:08 +01:00
|
|
|
#include <sstream>
|
|
|
|
#include <boost/tr1/unordered_map.hpp>
|
2010-02-11 11:15:57 +01:00
|
|
|
|
|
|
|
using namespace std ;
|
2010-02-15 20:39:08 +01:00
|
|
|
using std::tr1::unordered_map ;
|
|
|
|
|
|
|
|
vector<AccessPoint> TestUtil::aps ;
|
|
|
|
vector<Mobile> TestUtil::mobiles ;
|
|
|
|
vector<Request> TestUtil::requests ;
|
|
|
|
|
|
|
|
|
|
|
|
void TestUtil::tear_down()
|
|
|
|
{
|
|
|
|
aps.clear() ;
|
|
|
|
mobiles.clear() ;
|
|
|
|
requests.clear() ;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void TestUtil::set_up()
|
|
|
|
{
|
|
|
|
tear_down() ;
|
|
|
|
|
|
|
|
// Create mobile list
|
|
|
|
mobiles.push_back(Mobile("192.168.0.42", "aa:bb:cc:dd:ee:ff")) ;
|
|
|
|
mobiles.push_back(Mobile("192.168.1.87", "aa:bb:cc:dd:ee:77")) ;
|
|
|
|
|
|
|
|
// Create AP list
|
|
|
|
aps.push_back(AccessPoint(Point3D(1,2,3), "10.0.0.1", "11:22:33:44:55:01")) ;
|
|
|
|
aps.push_back(AccessPoint(Point3D(4,5,6), "10.0.0.2", "11:22:33:44:55:02")) ;
|
|
|
|
aps.push_back(AccessPoint(Point3D(7,8,9), "10.0.0.3", "11:22:33:44:55:03")) ;
|
|
|
|
|
|
|
|
// Create measurement list
|
|
|
|
vector < unordered_map<string,Measurement> > measurements(3) ;
|
|
|
|
Measurement measurement1 ;
|
|
|
|
|
|
|
|
measurement1.add_ss(-58) ;
|
|
|
|
measurement1.add_ss(-55) ;
|
|
|
|
measurement1.set_ap(&aps[0]) ;
|
|
|
|
measurements[0][aps[0].get_mac_addr()] = measurement1 ;
|
|
|
|
measurement1.clear() ;
|
|
|
|
measurement1.add_ss(-50) ;
|
|
|
|
measurement1.set_ap(&aps[2]) ;
|
|
|
|
measurements[0][aps[2].get_mac_addr()] = measurement1 ;
|
|
|
|
measurement1.clear() ;
|
|
|
|
measurement1.add_ss(-42) ;
|
|
|
|
measurement1.add_ss(-37) ;
|
|
|
|
measurement1.set_ap(&aps[1]) ;
|
|
|
|
measurements[0][aps[1].get_mac_addr()] = measurement1 ;
|
|
|
|
|
|
|
|
measurement1.clear() ;
|
|
|
|
measurement1.add_ss(-51) ;
|
|
|
|
measurement1.add_ss(-19) ;
|
|
|
|
measurement1.set_ap(&aps[0]) ;
|
|
|
|
measurements[1][aps[0].get_mac_addr()] = measurement1 ;
|
|
|
|
measurement1.clear() ;
|
|
|
|
measurement1.add_ss(-70) ;
|
|
|
|
measurement1.add_ss(-21) ;
|
|
|
|
measurement1.set_ap(&aps[1]) ;
|
|
|
|
measurements[1][aps[1].get_mac_addr()] = measurement1 ;
|
|
|
|
measurement1.clear() ;
|
|
|
|
measurement1.add_ss(-59) ;
|
|
|
|
measurement1.set_ap(&aps[2]) ;
|
|
|
|
measurements[1][aps[2].get_mac_addr()] = measurement1 ;
|
|
|
|
|
|
|
|
measurement1.clear() ;
|
|
|
|
measurement1.add_ss(-54) ;
|
|
|
|
measurement1.add_ss(-32) ;
|
|
|
|
measurement1.set_ap(&aps[0]) ;
|
|
|
|
measurements[2][aps[0].get_mac_addr()] = measurement1 ;
|
|
|
|
measurement1.clear() ;
|
|
|
|
measurement1.add_ss(-45) ;
|
|
|
|
measurement1.add_ss(-23) ;
|
|
|
|
measurement1.set_ap(&aps[1]) ;
|
|
|
|
measurements[2][aps[1].get_mac_addr()] = measurement1 ;
|
|
|
|
measurement1.clear() ;
|
|
|
|
measurement1.add_ss(-56) ;
|
|
|
|
measurement1.set_ap(&aps[2]) ;
|
|
|
|
measurements[2][aps[2].get_mac_addr()] = measurement1 ;
|
|
|
|
|
|
|
|
// Create timestamp list
|
|
|
|
vector<Timestamp> timestamps ;
|
|
|
|
timestamps.push_back(Timestamp(1265120910725)) ;
|
|
|
|
timestamps.push_back(Timestamp(1265120911234)) ;
|
|
|
|
timestamps.push_back(Timestamp(1265120912345)) ;
|
|
|
|
|
|
|
|
// Create request list
|
|
|
|
requests.push_back(Request(timestamps[0], measurements[0])) ;
|
|
|
|
requests.push_back(Request(timestamps[1], measurements[1])) ;
|
|
|
|
requests.push_back(Request(timestamps[2], measurements[2])) ;
|
|
|
|
}
|
2010-02-11 11:15:57 +01:00
|
|
|
|
|
|
|
|
|
|
|
// Create the file output_file_name and fill it with the contents of
|
|
|
|
// output_lines
|
|
|
|
void TestUtil::fill_file(const string &output_file_name,
|
|
|
|
const vector<string> output_lines)
|
|
|
|
{
|
|
|
|
// Open the file
|
|
|
|
std::ofstream output_file ;
|
|
|
|
output_file.open(output_file_name.c_str()) ;
|
|
|
|
if (! output_file)
|
|
|
|
TS_FAIL("Cannot open test file `"+ output_file_name
|
|
|
|
+"` for creation!") ;
|
|
|
|
|
|
|
|
// Write contents to the file
|
|
|
|
for (std::vector<std::string>::const_iterator i = output_lines.begin() ;
|
|
|
|
i != output_lines.end() ; ++i)
|
|
|
|
output_file << *i ;
|
|
|
|
|
|
|
|
output_file.close() ;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void TestUtil::remove_file(const string &file_name)
|
|
|
|
{
|
|
|
|
if (remove(file_name.c_str()) == -1)
|
|
|
|
TS_WARN("Cannot remove test file `"+ file_name +"`!") ;
|
|
|
|
}
|
2010-02-12 16:45:04 +01:00
|
|
|
|
|
|
|
|
2010-02-15 20:39:08 +01:00
|
|
|
void TestUtil::
|
|
|
|
create_test_csv_file(const string &file_name, bool with_spaces)
|
2010-02-12 16:45:04 +01:00
|
|
|
{
|
|
|
|
// Fill name and contents of the test CSV file
|
|
|
|
vector<string> csv_lines ;
|
2010-02-15 20:39:08 +01:00
|
|
|
ostringstream line ;
|
|
|
|
|
|
|
|
if (with_spaces)
|
|
|
|
line << "\n \n " ;
|
|
|
|
line << mobiles[0].get_mac_addr() ;
|
|
|
|
line << ';' ;
|
|
|
|
line << requests[0].get_timestamp().get_timestamp_ms() ;
|
|
|
|
line << ";0;0;0;0;" ;
|
|
|
|
line << aps[0].get_mac_addr() ;
|
|
|
|
line << ";" ;
|
|
|
|
line << requests[0].get_measurements().at(aps[0].get_mac_addr())
|
|
|
|
.get_ss_list()[0] ;
|
|
|
|
line << ";" ;
|
|
|
|
line << aps[2].get_mac_addr() ;
|
|
|
|
line << ";" ;
|
|
|
|
line << requests[0].get_measurements().at(aps[2].get_mac_addr())
|
|
|
|
.get_ss_list()[0] ;
|
|
|
|
line << ";" ;
|
|
|
|
line << aps[1].get_mac_addr() ;
|
|
|
|
line << ";" ;
|
|
|
|
line << requests[0].get_measurements().at(aps[1].get_mac_addr())
|
|
|
|
.get_ss_list()[0] ;
|
|
|
|
line << ";" ;
|
|
|
|
line << aps[0].get_mac_addr() ;
|
|
|
|
line << ";" ;
|
|
|
|
line << requests[0].get_measurements().at(aps[0].get_mac_addr())
|
|
|
|
.get_ss_list()[1] ;
|
|
|
|
line << ";" ;
|
|
|
|
line << aps[1].get_mac_addr() ;
|
|
|
|
line << ";" ;
|
|
|
|
line << requests[0].get_measurements().at(aps[1].get_mac_addr())
|
|
|
|
.get_ss_list()[1] ;
|
|
|
|
line << '\n' ;
|
|
|
|
csv_lines.push_back(line.str()) ;
|
|
|
|
|
|
|
|
line.str("") ;
|
|
|
|
line << mobiles[1].get_mac_addr() ;
|
|
|
|
line << ';' ;
|
|
|
|
line << requests[1].get_timestamp().get_timestamp_ms() ;
|
|
|
|
line << ";0;0;0;0;" ;
|
|
|
|
line << aps[2].get_mac_addr() ;
|
|
|
|
line << ";" ;
|
|
|
|
line << requests[1].get_measurements().at(aps[2].get_mac_addr())
|
|
|
|
.get_ss_list()[0] ;
|
|
|
|
line << ";" ;
|
|
|
|
line << aps[0].get_mac_addr() ;
|
|
|
|
line << ";" ;
|
|
|
|
line << requests[1].get_measurements().at(aps[0].get_mac_addr())
|
|
|
|
.get_ss_list()[0] ;
|
|
|
|
line << ";" ;
|
|
|
|
line << aps[1].get_mac_addr() ;
|
|
|
|
line << ";" ;
|
|
|
|
line << requests[1].get_measurements().at(aps[1].get_mac_addr())
|
|
|
|
.get_ss_list()[0] ;
|
|
|
|
line << ";" ;
|
|
|
|
line << aps[1].get_mac_addr() ;
|
|
|
|
line << ";" ;
|
|
|
|
line << requests[1].get_measurements().at(aps[1].get_mac_addr())
|
|
|
|
.get_ss_list()[1] ;
|
|
|
|
line << ";" ;
|
|
|
|
line << aps[0].get_mac_addr() ;
|
|
|
|
line << ";" ;
|
|
|
|
line << requests[1].get_measurements().at(aps[0].get_mac_addr())
|
|
|
|
.get_ss_list()[1] ;
|
|
|
|
line << '\n' ;
|
|
|
|
if (with_spaces)
|
|
|
|
line << " \n\
|
2010-02-12 16:45:04 +01:00
|
|
|
\n\t\n\
|
|
|
|
\n \t \n\
|
2010-02-15 20:39:08 +01:00
|
|
|
\n" ;
|
|
|
|
csv_lines.push_back(line.str()) ;
|
|
|
|
|
|
|
|
line.str("") ;
|
|
|
|
if (with_spaces)
|
|
|
|
line << '\t' ;
|
|
|
|
line << mobiles[0].get_mac_addr() ;
|
|
|
|
line << ';' ;
|
|
|
|
line << requests[2].get_timestamp().get_timestamp_ms() ;
|
|
|
|
line << ";0;0;0;0;" ;
|
|
|
|
line << aps[2].get_mac_addr() ;
|
|
|
|
line << ";" ;
|
|
|
|
line << requests[2].get_measurements().at(aps[2].get_mac_addr())
|
|
|
|
.get_ss_list()[0] ;
|
|
|
|
line << ";" ;
|
|
|
|
line << aps[1].get_mac_addr() ;
|
|
|
|
line << ";" ;
|
|
|
|
line << requests[2].get_measurements().at(aps[1].get_mac_addr())
|
|
|
|
.get_ss_list()[0] ;
|
|
|
|
line << ";" ;
|
|
|
|
line << aps[0].get_mac_addr() ;
|
|
|
|
line << ";" ;
|
|
|
|
line << requests[2].get_measurements().at(aps[0].get_mac_addr())
|
|
|
|
.get_ss_list()[0] ;
|
|
|
|
line << ";" ;
|
|
|
|
line << aps[1].get_mac_addr() ;
|
|
|
|
line << ";" ;
|
|
|
|
line << requests[2].get_measurements().at(aps[1].get_mac_addr())
|
|
|
|
.get_ss_list()[1] ;
|
|
|
|
line << ";" ;
|
|
|
|
line << aps[0].get_mac_addr() ;
|
|
|
|
line << ";" ;
|
|
|
|
line << requests[2].get_measurements().at(aps[0].get_mac_addr())
|
|
|
|
.get_ss_list()[1] ;
|
|
|
|
line << '\n' ;
|
|
|
|
if (with_spaces)
|
|
|
|
line << "\n\t\n" ;
|
|
|
|
csv_lines.push_back(line.str()) ;
|
2010-02-12 16:45:04 +01:00
|
|
|
|
|
|
|
// Create and fill the test CSV file
|
|
|
|
fill_file(file_name, csv_lines) ;
|
|
|
|
}
|