DiskWriteThreadPoolTest.cpp 2.49 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
#include "castor/tape/tapeserver/daemon/DiskWriteThreadPool.hpp"
#include "castor/tape/tapeserver/daemon/RecallTaskInjector.hpp"
#include "castor/tape/tapeserver/daemon/RecallReportPacker.hpp"
#include "castor/tape/tapegateway/FileToRecallStruct.hpp"
#include "castor/tape/tapeserver/daemon/ReportPackerInterface.hpp"
#include "castor/tape/tapeserver/client/ClientInterface.hpp"
#include "castor/tape/tapeserver/client/FakeClient.hpp"
#include "castor/tape/tapeserver/client/ClientInterface.hpp"
#include "castor/log/LogContext.hpp"
#include "castor/log/StringLogger.hpp"
11
12
#include "castor/tape/tapeserver/daemon/MigrationMemoryManager.hpp"
#include "castor/tape/tapeserver/daemon/MemBlock.hpp"
13
14
15
#include <gtest/gtest.h>

namespace unitTests{
16
17
  using namespace castor::tape::tapeserver::daemon;
  using namespace castor::tape::tapeserver::client;
18
  struct MockRecallReportPacker : public RecallReportPacker {
David COME's avatar
David COME committed
19
    MOCK_METHOD2(reportCompletedJob,void(const FileStruct&,unsigned long));
20
21
22
    MOCK_METHOD3(reportFailedJob, void(const FileStruct& ,const std::string&,int));
    MOCK_METHOD0(reportEndOfSession, void());
    MOCK_METHOD2(reportEndOfSessionWithErrors, void(const std::string,int));
23
    MockRecallReportPacker(ClientInterface& client,castor::log::LogContext lc):
24
    RecallReportPacker(client,1,lc){}
25
26
  };
  
27
  struct MockTaskInjector : public RecallTaskInjector{
28
29
30
31
32
33
34
35
36
37
    MOCK_METHOD3(requestInjection, void(int maxFiles, int maxBlocks, bool lastCall));
  };
  
  TEST(castor_tape_tapeserver_daemon, DiskWriteThreadPoolTest){
    using ::testing::_;
    MockClient client;
    castor::log::StringLogger log("castor_tape_tapeserver_daemon_DiskWriteThreadPoolTest");
    castor::log::LogContext lc(log);
    
    MockRecallReportPacker report(client,lc);
David COME's avatar
David COME committed
38
    EXPECT_CALL(report,reportCompletedJob(_,_)).Times(5);
39
40
41
    //EXPECT_CALL(tskInjectorl,requestInjection(_,_,_)).Times(2);
    EXPECT_CALL(report,reportEndOfSession()).Times(1);     
    
42
    RecallMemoryManager mm(10,100,lc);
43
    
Eric Cano's avatar
Eric Cano committed
44
    DiskWriteThreadPool dwtp(2,report,lc);
45
46
    dwtp.startThreads();
    
47
    castor::tape::tapegateway::FileToRecallStruct file;
48
49
50
51
    file.setPath("/dev/null");
    file.setBlockId3(1);
       
     for(int i=0;i<5;++i){
52
53
       DiskWriteTask* t=new DiskWriteTask(dynamic_cast<tapegateway::FileToRecallStruct*>(file.clone()),mm);
       MemBlock* mb=mm.getFreeBlock();
54
55
56
57
58
59
60
61
62
63
64
65
       mb->m_fileid=0;
       mb->m_fileBlock=0;
       t->pushDataBlock(mb);
       t->pushDataBlock(NULL);
       dwtp.push(t);
     }
     
    dwtp.finish();
    dwtp.waitThreads(); 
  }
}