diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-10-02 14:38:37 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-10-02 14:38:37 +0000 |
| commit | 584af68e190898da1bc1676baf743288ba46af19 (patch) | |
| tree | e9391d53bb3a43568de4bd4161c4686989108c57 /test/DHTTaskExecutorTest.cc | |
| parent | 7375a778c4ad3acda07b138d8530974df490be29 (diff) | |
2010-10-02 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Execute 5 DHT tasks concurrently in each task queue.
* src/DHTTaskExecutor.cc
* src/DHTTaskExecutor.h
* src/DHTTaskQueueImpl.cc
* src/DHTTaskQueueImpl.h
* src/Makefile.am
* test/DHTTaskExecutorTest.cc
* test/Makefile.am
* test/MockDHTTask.h
Diffstat (limited to 'test/DHTTaskExecutorTest.cc')
| -rw-r--r-- | test/DHTTaskExecutorTest.cc | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/test/DHTTaskExecutorTest.cc b/test/DHTTaskExecutorTest.cc new file mode 100644 index 00000000..f66695bd --- /dev/null +++ b/test/DHTTaskExecutorTest.cc @@ -0,0 +1,48 @@ +#include "DHTTaskExecutor.h" + +#include <cppunit/extensions/HelperMacros.h> + +#include "MockDHTTask.h" +#include "array_fun.h" + +namespace aria2 { + +class DHTTaskExecutorTest:public CppUnit::TestFixture { + + CPPUNIT_TEST_SUITE(DHTTaskExecutorTest); + CPPUNIT_TEST(testUpdate); + CPPUNIT_TEST_SUITE_END(); +public: + void testUpdate(); +}; + +CPPUNIT_TEST_SUITE_REGISTRATION(DHTTaskExecutorTest); + +void DHTTaskExecutorTest::testUpdate() +{ + SharedHandle<DHTNode> rn; + DHTTaskExecutor tex(2); + SharedHandle<MockDHTTask> tasks[] = { + SharedHandle<MockDHTTask>(new MockDHTTask(rn)), + SharedHandle<MockDHTTask>(new MockDHTTask(rn)), + SharedHandle<MockDHTTask>(new MockDHTTask(rn)), + SharedHandle<MockDHTTask>(new MockDHTTask(rn)) + }; + tasks[1]->finished_ = true; + for(size_t i = 0; i < A2_ARRAY_LEN(tasks); ++i) { + tex.addTask(tasks[i]); + } + CPPUNIT_ASSERT_EQUAL((size_t)0, tex.getExecutingTaskSize()); + CPPUNIT_ASSERT_EQUAL((size_t)4, tex.getQueueSize()); + tex.update(); + CPPUNIT_ASSERT_EQUAL((size_t)2, tex.getExecutingTaskSize()); + CPPUNIT_ASSERT_EQUAL((size_t)1, tex.getQueueSize()); + tasks[0]->finished_ = true; + tasks[2]->finished_ = true; + tasks[3]->finished_ = true; + tex.update(); + CPPUNIT_ASSERT_EQUAL((size_t)0, tex.getExecutingTaskSize()); + CPPUNIT_ASSERT_EQUAL((size_t)0, tex.getQueueSize()); +} + +} // namespace aria2 |
