hce-node application  1.4.3
HCE Hierarchical Cluster Engine node application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
DRCETaskReducersManagerTest.cpp
Go to the documentation of this file.
1 #include <gtest/gtest.h>
3 #include "DRCEResultData.hpp"
5 
12 
13 static void buildDRCEResultData( DRCEResultData& drceResultData ) {
14  drceResultData.clear();
15 
16  DRCEResultDataItem item1;
17  item1.setStdoutStream( "standard stream 1" );
18  item1.setStderrStream( "standard error 1" );
19  item1.setNodeName( "node_1" );
20  item1.setTime( ::time( 0 ) );
21  item1.setExitStatus( 0 );
22  item1.addFileItem( "file1.txt", "test data 1", 4 );
23  item1.addFileItem( "file2.txt", "test data 2", 1 );
24  drceResultData.addDataItem( item1 );
25 
26  DRCEResultDataItem item2;
27  item2.setStdoutStream( "standard stream 2" );
28  item2.setStderrStream( "standard error 2" );
29  item2.setNodeName( "node_2" );
30  item2.setTime( ::time( 0 ) );
31  item2.setExitStatus( 0 );
32  item1.addFileItem( "file3.txt", "test data 3", 4 );
33  item1.addFileItem( "file4.txt", "test data 4", 1 );
34 
35  drceResultData.addDataItem( item2 );
36 }
37 
38 static std::string buildDRCEResultDataJson() {
39  DRCEResultData drceResultData;
40  buildDRCEResultData( drceResultData );
41 
42  DRCEResultDataSerializator serializator( drceResultData );
43 
44  std::string json;
45 
46  serializator.serialize( json );
47 
48  return json;
49 }
50 class DRCETaskReducersManagerTest: public ::testing::Test {
51 public:
52  virtual void SetUp() {
53  reduceTaskId = 1;
54  }
55 
56  virtual void Destroy() {
57  }
58 
60  unsigned long long reduceTaskId;
61 };
62 
63 TEST_F( DRCETaskReducersManagerTest, ReduceTaskNotExist ) {
64  EXPECT_FALSE( drceTaskReducersMgr.isReducerExist( reduceTaskId ) );
65 }
66 
68  EXPECT_FALSE( drceTaskReducersMgr.isReducerExist( reduceTaskId ) );
69  drceTaskReducersMgr.createReducer( reduceTaskId );
70  EXPECT_TRUE( drceTaskReducersMgr.isReducerExist( reduceTaskId ) );
71 }
72 
74  drceTaskReducersMgr.createReducer( reduceTaskId );
75  EXPECT_TRUE( drceTaskReducersMgr.isReducerExist( reduceTaskId ) );
76  drceTaskReducersMgr.deleteReducerBy( reduceTaskId );
77 }
78 
79 TEST_F( DRCETaskReducersManagerTest, DeleteNotExistReducer ) {
80  EXPECT_FALSE( drceTaskReducersMgr.isReducerExist( reduceTaskId ) );
81  EXPECT_THROW( drceTaskReducersMgr.deleteReducerBy( reduceTaskId ), NotFoundByKeyException );
82 }
83 
84 TEST_F( DRCETaskReducersManagerTest, AddNonJsonData ) {
85  drceTaskReducersMgr.createReducer( reduceTaskId );
86  EXPECT_THROW( drceTaskReducersMgr.addDataInReducer( reduceTaskId, "balala..."), WrongJSONStructureException );
87 }
88 
89 TEST_F( DRCETaskReducersManagerTest, AddEmptyResultData ) {
90  drceTaskReducersMgr.createReducer( reduceTaskId );
91  drceTaskReducersMgr.addDataInReducer( reduceTaskId, "[]");
92  EXPECT_EQ( drceTaskReducersMgr.runReduceTaskForTaskId( reduceTaskId ), "[]");
93 }
94 
95 TEST_F( DRCETaskReducersManagerTest, ReduceEmptyResult ) {
96  drceTaskReducersMgr.createReducer( reduceTaskId );
97  std::string json = drceTaskReducersMgr.runReduceTaskForTaskId( reduceTaskId );
98  EXPECT_EQ( json, "[]");
99 }
100 
101 TEST_F( DRCETaskReducersManagerTest, ReduceNonEmptyResult ) {
102  std::string json = buildDRCEResultDataJson();
103 
104  drceTaskReducersMgr.createReducer( reduceTaskId );
105  drceTaskReducersMgr.addDataInReducer( reduceTaskId, json );
106  drceTaskReducersMgr.addDataInReducer( reduceTaskId, json );
107  drceTaskReducersMgr.runReduceTaskForTaskId( reduceTaskId );
108  std::string json1 = drceTaskReducersMgr.runReduceTaskForTaskId( reduceTaskId );
109  EXPECT_EQ( json.substr( 1, json.size() - 2 ) + "," + json.substr( 1, json.size() - 2 ), json1.substr( 1, json1.size() - 2 ));
110 }