TrackerWatcherCommandTest.cc 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. #include "TrackerWatcherCommand.h"
  2. #include "TorrentConsoleDownloadEngine.h"
  3. #include "MetaFileUtil.h"
  4. #include "Exception.h"
  5. #include "prefs.h"
  6. #include "HttpInitiateConnectionCommand.h"
  7. #include "ByteArrayDiskWriter.h"
  8. #include "DefaultBtContext.h"
  9. #include "DefaultBtAnnounce.h"
  10. #include "DefaultPieceStorage.h"
  11. #include "DefaultPeerStorage.h"
  12. #include "BtRegistry.h"
  13. #include "RequestFactory.h"
  14. #include "CUIDCounter.h"
  15. #include <cppunit/extensions/HelperMacros.h>
  16. using namespace std;
  17. class TrackerWatcherCommandTest:public CppUnit::TestFixture {
  18. CPPUNIT_TEST_SUITE(TrackerWatcherCommandTest);
  19. CPPUNIT_TEST(testCreateCommand);
  20. CPPUNIT_TEST_SUITE_END();
  21. private:
  22. Option op;
  23. public:
  24. TrackerWatcherCommandTest()
  25. {
  26. }
  27. void setUp()
  28. {
  29. CUIDCounterHandle counter = new CUIDCounter();
  30. CUIDCounterSingletonHolder::instance(counter);
  31. op.put(PREF_TRACKER_MAX_TRIES, "10");
  32. RequestFactoryHandle requestFactory = new RequestFactory();
  33. requestFactory->setOption(&op);
  34. RequestFactorySingletonHolder::instance(requestFactory);
  35. }
  36. void testCreateCommand();
  37. };
  38. CPPUNIT_TEST_SUITE_REGISTRATION( TrackerWatcherCommandTest );
  39. void TrackerWatcherCommandTest::testCreateCommand() {
  40. try {
  41. BtContextHandle btContext(new DefaultBtContext());
  42. btContext->load("test.torrent");
  43. BtRuntimeHandle btRuntime;
  44. BtRegistry::registerBtRuntime(btContext->getInfoHashAsString(), btRuntime);
  45. PieceStorageHandle pieceStorage(new DefaultPieceStorage(btContext, &op));
  46. BtRegistry::registerPieceStorage(btContext->getInfoHashAsString(),
  47. pieceStorage);
  48. PeerStorageHandle peerStorage(new DefaultPeerStorage(btContext, &op));
  49. BtRegistry::registerPeerStorage(btContext->getInfoHashAsString(),
  50. peerStorage);
  51. BtAnnounceHandle btAnnounce(new DefaultBtAnnounce(btContext, &op));
  52. BtRegistry::registerBtAnnounce(btContext->getInfoHashAsString(), btAnnounce);
  53. TorrentConsoleDownloadEngine* te = new TorrentConsoleDownloadEngine();
  54. te->option = &op;
  55. te->_requestGroupMan = new RequestGroupMan();
  56. TrackerWatcherCommand command(1, te, btContext);
  57. RequestFactorySingletonHolder::instance()->createHttpAuthResolver();
  58. CPPUNIT_ASSERT(dynamic_cast<HttpInitiateConnectionCommand*>(command.createCommand()));
  59. //cerr << btAnnounce->getAnnounceUrl() << endl;
  60. btAnnounce->announceSuccess();
  61. btAnnounce->resetAnnounce();
  62. te->_requestGroupMan = new RequestGroupMan();
  63. btRuntime->setHalt(true);
  64. CPPUNIT_ASSERT(dynamic_cast<HttpInitiateConnectionCommand*>(command.createCommand()));
  65. //cerr << btAnnounce->getAnnounceUrl() << endl;
  66. btAnnounce->announceSuccess();
  67. btAnnounce->resetAnnounce();
  68. te->_requestGroupMan = new RequestGroupMan();
  69. CPPUNIT_ASSERT(btAnnounce->noMoreAnnounce());
  70. } catch(Exception* e) {
  71. cerr << e->getMsg() << endl;
  72. delete e;
  73. }
  74. }