18 #include <gmock/gmock.h> 19 #include <gtest/gtest.h> 23 #include <aws/core/Aws.h> 24 #include <aws/s3/S3Client.h> 30 #include <file_uploader_msgs/UploadFilesAction.h> 39 using ::testing::Return;
41 using ::testing::ContainerEq;
42 using ::testing::Invoke;
47 file_uploader_msgs::UploadFilesGoal
goal;
62 executor(0), nh(
"~"), action_client(nh,
"UploadFiles"),
64 successful_outcome(Model::PutObjectResult())
70 bool message_received =
false;
73 ASSERT_TRUE(client_connected);
76 if (gh.getCommState() == actionlib::CommState::StateEnum::DONE){
77 EXPECT_EQ(goal_terminal_state, gh.getTerminalState().state_);
78 message_received =
true;
82 auto gh = action_client.
sendGoal(goal, transition_call_back);
84 ASSERT_TRUE(message_received);
92 SanityGoalCheck(actionlib::TerminalState::StateEnum::SUCCEEDED);
97 size_t files_count = 1000;
98 std::vector<UploadDescription> uploads(files_count);
99 goal.upload_location =
"/my/upload/dir";
100 for (
size_t i = 0; i < files_count; i++) {
101 goal.files.push_back(
"test_file" + i);
102 uploads.at(i) = {goal.files[i],
GenerateObjectKey(goal.files[i], goal.upload_location)};
105 EXPECT_CALL(*upload_manager, IsAvailable())
106 .WillRepeatedly(Return(
true));
107 EXPECT_CALL(*upload_manager, UploadFiles(ContainerEq(uploads),_,_))
108 .WillOnce(Return(successful_outcome));
111 SanityGoalCheck(actionlib::TerminalState::StateEnum::SUCCEEDED);
116 EXPECT_CALL(*upload_manager, IsAvailable())
117 .WillRepeatedly(Return(
true));
120 nh.deleteParam(
"spinner_thread_count");
121 nh.deleteParam(
"s3_bucket");
123 file_uploader.
Spin();
126 nh.setParam(
"spinner_thread_count", 1);
127 file_uploader.
Spin();
130 int main(
int argc,
char** argv)
133 Aws::InitAPI(options);
134 ::testing::InitGoogleTest(&argc, argv);
136 auto result = RUN_ALL_TESTS();
138 Aws::ShutdownAPI(options);
std::unique_ptr< MockS3UploadManager > upload_manager
file_uploader_msgs::UploadFilesGoal goal
int main(int argc, char **argv)
ROSCPP_DECL void init(int &argc, char **argv, const std::string &name, uint32_t options=0)
bool waitForActionServerToStart(const ros::Duration &timeout=ros::Duration(0, 0))
Model::PutObjectOutcome successful_outcome
UploadFilesActionClient action_client
TEST_F(S3UploaderTest, TestActionSucceedsNoUploadManagerProvided)
GoalHandle sendGoal(const Goal &goal, TransitionCallback transition_cb=TransitionCallback(), FeedbackCallback feedback_cb=FeedbackCallback())
ros::AsyncSpinner executor
void SanityGoalCheck(actionlib::TerminalState::StateEnum goal_terminal_state)
UploadFilesActionClient::GoalHandle goal_handle
std::string GenerateObjectKey(const std::string &file_path, const std::string &prefix)
ROSCPP_DECL void shutdown()