22 from file_uploader_msgs.msg
import UploadFilesAction, UploadFilesGoal
28 from s3_client
import S3Client
30 ACTION =
'/s3_file_uploader/UploadFiles' 31 TEST_NODE_NAME =
'upload_files_action_client' 32 AWS_DEFAULT_REGION =
'us-west-2' 38 rospy.init_node(TEST_NODE_NAME, log_level=rospy.DEBUG)
40 s3_bucket_name = rospy.get_param(
'/s3_file_uploader/s3_bucket')
41 s3.create_bucket(s3_bucket_name)
42 s3.wait_for_bucket_create(s3_bucket_name)
47 s3_bucket_name = rospy.get_param(
'/s3_file_uploader/s3_bucket')
48 s3.delete_bucket(s3_bucket_name)
52 s3_region = rospy.get_param(
53 '/s3_file_uploader/aws_client_configuration/region')
55 return AWS_DEFAULT_REGION
60 self.
s3_bucket = rospy.get_param(
'/s3_file_uploader/s3_bucket')
61 self.
s3_region = S3FileUploaderTestBase.extract_s3_region()
72 contents = self.s3_client.list_objects(self.
s3_bucket)
73 objects_to_delete = map(
74 lambda content: content[
'Key'],
80 if len(objects_to_delete) > 0:
81 self.s3_client.delete_objects(self.
s3_bucket, objects_to_delete)
85 res = self.action_client.wait_for_server()
86 self.assertTrue(res,
'Failed to connect to action server')
89 goal = UploadFilesGoal(
93 self.action_client.send_goal(goal)
94 self.action_client.wait_for_result(rospy.Duration.from_sec(15.0))
95 return self.action_client.get_result()
99 len(result.files_uploaded),
100 len(temp_file_names),
101 'Found %d files' % len(result.files_uploaded)
103 for uploaded_file_name, temp_file_name
in zip(result.files_uploaded, temp_file_names):
111 self.objects_to_delete.append(uploaded_s3_file_path)
112 uploaded_s3_key_prefix, uploaded_s3_key = os.path.split(
113 uploaded_s3_file_path)
115 uploaded_s3_key_prefix,
117 'File uploaded to unexpected location in s3')
120 os.path.basename(temp_file_name),
121 'Uploaded file name mismatch')
125 with tempfile.NamedTemporaryFile()
as f:
126 self.s3_client.download_file(self.
s3_bucket, s3_key, f.name)
128 filecmp.cmp(f.name, temp_file_name),
129 'Local file content did not match uploaded content')
def _create_upload_files_action_client(self)
def extract_s3_region(cls)
def _assert_uploaded_content(self, s3_key, temp_file_name)
def _upload_temp_files(self, temp_file_names)
def _assert_successful_file_upload(self, uploaded_s3_file_path, temp_file_name)
def _assert_successful_upload(self, result, temp_file_names)