| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 | #include "ServerStatMan.h"#include <iostream>#include <cppunit/extensions/HelperMacros.h>#include "ServerStat.h"#include "Exception.h"#include "util.h"#include "BufferedFile.h"#include "TestUtil.h"namespace aria2 {class ServerStatManTest:public CppUnit::TestFixture {  CPPUNIT_TEST_SUITE(ServerStatManTest);  CPPUNIT_TEST(testAddAndFind);  CPPUNIT_TEST(testSave);  CPPUNIT_TEST(testLoad);  CPPUNIT_TEST(testRemoveStaleServerStat);  CPPUNIT_TEST_SUITE_END();public:  void setUp() {}  void tearDown() {}  void testAddAndFind();  void testSave();  void testLoad();  void testRemoveStaleServerStat();};CPPUNIT_TEST_SUITE_REGISTRATION(ServerStatManTest);void ServerStatManTest::testAddAndFind(){  SharedHandle<ServerStat> localhost_http(new ServerStat("localhost", "http"));  SharedHandle<ServerStat> localhost_ftp(new ServerStat("localhost", "ftp"));  SharedHandle<ServerStat> mirror(new ServerStat("mirror", "http"));  ServerStatMan ssm;  CPPUNIT_ASSERT(ssm.add(localhost_http));  CPPUNIT_ASSERT(!ssm.add(localhost_http));  CPPUNIT_ASSERT(ssm.add(localhost_ftp));  CPPUNIT_ASSERT(ssm.add(mirror));  {    SharedHandle<ServerStat> r = ssm.find("localhost", "http");    CPPUNIT_ASSERT(r);    CPPUNIT_ASSERT_EQUAL(std::string("localhost"), r->getHostname());    CPPUNIT_ASSERT_EQUAL(std::string("http"), r->getProtocol());  }  {    SharedHandle<ServerStat> r = ssm.find("mirror", "ftp");    CPPUNIT_ASSERT(!r);  }}void ServerStatManTest::testSave(){  SharedHandle<ServerStat> localhost_http(new ServerStat("localhost", "http"));  localhost_http->setDownloadSpeed(25000);  localhost_http->setSingleConnectionAvgSpeed(100);  localhost_http->setMultiConnectionAvgSpeed(101);  localhost_http->setCounter(5);  localhost_http->setLastUpdated(Time(1210000000));  SharedHandle<ServerStat> localhost_ftp(new ServerStat("localhost", "ftp"));  localhost_ftp->setDownloadSpeed(30000);  localhost_ftp->setLastUpdated(Time(1210000001));  SharedHandle<ServerStat> mirror(new ServerStat("mirror", "http"));  mirror->setDownloadSpeed(0);  mirror->setStatus(ServerStat::A2_ERROR);  mirror->setLastUpdated(Time(1210000002));  ServerStatMan ssm;  CPPUNIT_ASSERT(ssm.add(localhost_http));  CPPUNIT_ASSERT(ssm.add(localhost_ftp));  CPPUNIT_ASSERT(ssm.add(mirror));  const char* filename = A2_TEST_OUT_DIR"/aria2_ServerStatManTest_testSave";  CPPUNIT_ASSERT(ssm.save(filename));  CPPUNIT_ASSERT_EQUAL    (std::string     ("host=localhost, protocol=ftp,"      " dl_speed=30000,"      " sc_avg_speed=0,"      " mc_avg_speed=0,"      " last_updated=1210000001,"      " counter=0,"      " status=OK\n"      "host=localhost, protocol=http,"      " dl_speed=25000,"      " sc_avg_speed=100,"      " mc_avg_speed=101,"      " last_updated=1210000000,"      " counter=5,"      " status=OK\n"      "host=mirror, protocol=http,"      " dl_speed=0,"      " sc_avg_speed=0,"      " mc_avg_speed=0,"      " last_updated=1210000002,"      " counter=0,"      " status=ERROR\n"),     readFile(filename));}void ServerStatManTest::testLoad(){  const char* filename = A2_TEST_OUT_DIR"/aria2_ServerStatManTest_testLoad";  std::string in =    "host=localhost, protocol=ftp, dl_speed=30000, last_updated=1210000001, status=OK\n"    "host=localhost, protocol=http, dl_speed=25000, sc_avg_speed=101, mc_avg_speed=102, last_updated=1210000000, counter=6, status=OK\n"    "host=mirror, protocol=http, dl_speed=0, last_updated=1210000002, status=ERROR\n";  BufferedFile fp(filename, BufferedFile::WRITE);  CPPUNIT_ASSERT_EQUAL((size_t)in.size(), fp.write(in.data(), in.size()));  CPPUNIT_ASSERT(fp.close() != EOF);  ServerStatMan ssm;  CPPUNIT_ASSERT(ssm.load(filename));  SharedHandle<ServerStat> localhost_http = ssm.find("localhost", "http");  CPPUNIT_ASSERT(localhost_http);  CPPUNIT_ASSERT_EQUAL(std::string("localhost"), localhost_http->getHostname());  CPPUNIT_ASSERT_EQUAL(std::string("http"), localhost_http->getProtocol());  CPPUNIT_ASSERT_EQUAL(25000, localhost_http->getDownloadSpeed());  CPPUNIT_ASSERT_EQUAL(101, localhost_http->getSingleConnectionAvgSpeed());  CPPUNIT_ASSERT_EQUAL(102, localhost_http->getMultiConnectionAvgSpeed());  CPPUNIT_ASSERT_EQUAL(6, localhost_http->getCounter());  CPPUNIT_ASSERT_EQUAL(static_cast<time_t>(1210000000),                       localhost_http->getLastUpdated().getTime());  CPPUNIT_ASSERT_EQUAL(ServerStat::OK, localhost_http->getStatus());  SharedHandle<ServerStat> mirror = ssm.find("mirror", "http");  CPPUNIT_ASSERT(mirror);  CPPUNIT_ASSERT_EQUAL(ServerStat::A2_ERROR, mirror->getStatus());}void ServerStatManTest::testRemoveStaleServerStat(){  Time now;  SharedHandle<ServerStat> localhost_http(new ServerStat("localhost", "http"));  localhost_http->setDownloadSpeed(25000);  localhost_http->setLastUpdated(now);  SharedHandle<ServerStat> localhost_ftp(new ServerStat("localhost", "ftp"));  localhost_ftp->setDownloadSpeed(30000);  localhost_ftp->setLastUpdated(Time(1210000001));  SharedHandle<ServerStat> mirror(new ServerStat("mirror", "http"));  mirror->setDownloadSpeed(0);  mirror->setStatus(ServerStat::A2_ERROR);  mirror->setLastUpdated(Time(1210000002));  ServerStatMan ssm;  CPPUNIT_ASSERT(ssm.add(localhost_http));  CPPUNIT_ASSERT(ssm.add(localhost_ftp));  CPPUNIT_ASSERT(ssm.add(mirror));  ssm.removeStaleServerStat(24*60*60);  CPPUNIT_ASSERT(ssm.find("localhost", "http"));  CPPUNIT_ASSERT(!ssm.find("localhost", "ftp"));  CPPUNIT_ASSERT(!ssm.find("mirror", "http"));}} // namespace aria2
 |