Skip to content

Commit 0228f10

Browse files
Merge pull request #1287 from smartdevicelink/bugfix/issue_1276
Bugfix/issue 1276
2 parents a69bcbc + a0f34b2 commit 0228f10

1 file changed

Lines changed: 99 additions & 128 deletions

File tree

android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/file/FileManagerTests.java

Lines changed: 99 additions & 128 deletions
Original file line numberDiff line numberDiff line change
@@ -136,21 +136,6 @@ public Void answer(InvocationOnMock invocation) {
136136
}
137137
};
138138

139-
private Answer<Void> onListFilesFailure = new Answer<Void>() {
140-
@Override
141-
public Void answer(InvocationOnMock invocation) {
142-
Object[] args = invocation.getArguments();
143-
RPCRequest message = (RPCRequest) args[0];
144-
if(message instanceof ListFiles){
145-
int correlationId = message.getCorrelationID();
146-
ListFilesResponse listFilesResponse = new ListFilesResponse();
147-
listFilesResponse.setSuccess(false);
148-
message.getOnRPCResponseListener().onResponse(correlationId, listFilesResponse);
149-
}
150-
return null;
151-
}
152-
};
153-
154139
private Answer<Void> onPutFileSuccess = new Answer<Void>() {
155140
@Override
156141
public Void answer(InvocationOnMock invocation) {
@@ -182,59 +167,69 @@ public Void answer(InvocationOnMock invocation) {
182167
}
183168
};
184169

185-
private Answer<Void> onSendRequestsSuccess = new Answer<Void>() {
170+
private Answer<Void> onListDeleteRequestSuccess = new Answer<Void>() {
186171
@Override
187172
public Void answer(InvocationOnMock invocation) {
188173
Object[] args = invocation.getArguments();
189174
List<RPCRequest> rpcs = (List<RPCRequest>) args[0];
190175
OnMultipleRequestListener listener = (OnMultipleRequestListener) args[1];
191-
if(rpcs.get(0) instanceof PutFile){
192-
for(RPCRequest message : rpcs){
176+
if (rpcs.get(0) instanceof DeleteFile) {
177+
for (RPCRequest message : rpcs) {
193178
int correlationId = message.getCorrelationID();
194179
listener.addCorrelationId(correlationId);
195-
PutFileResponse putFileResponse = new PutFileResponse();
196-
putFileResponse.setSuccess(true);
197-
listener.onResponse(correlationId, putFileResponse);
180+
DeleteFileResponse deleteFileResponse = new DeleteFileResponse();
181+
deleteFileResponse.setSuccess(true);
182+
listener.onResponse(correlationId, deleteFileResponse);
198183
}
184+
listener.onFinished();
199185
}
200186
return null;
201187
}
202188
};
203189

204-
private Answer<Void> onListDeleteRequestSuccess = new Answer<Void>() {
190+
private Answer<Void> onListDeleteRequestFail = new Answer<Void>() {
205191
@Override
206192
public Void answer(InvocationOnMock invocation) {
207193
Object[] args = invocation.getArguments();
208194
List<RPCRequest> rpcs = (List<RPCRequest>) args[0];
209195
OnMultipleRequestListener listener = (OnMultipleRequestListener) args[1];
210196
if (rpcs.get(0) instanceof DeleteFile) {
197+
Result resultCode = Result.REJECTED;
211198
for (RPCRequest message : rpcs) {
212199
int correlationId = message.getCorrelationID();
213200
listener.addCorrelationId(correlationId);
214201
DeleteFileResponse deleteFileResponse = new DeleteFileResponse();
215202
deleteFileResponse.setSuccess(true);
216-
listener.onResponse(correlationId, deleteFileResponse);
203+
listener.onError(correlationId, resultCode, "Binary data empty");
217204
}
218205
listener.onFinished();
219206
}
220207
return null;
221208
}
222209
};
223210

224-
private Answer<Void> onListDeleteRequestFail = new Answer<Void>() {
211+
private Answer<Void> onSendRequestsFailPartialOnError = new Answer<Void>() {
225212
@Override
226-
public Void answer(InvocationOnMock invocation) {
213+
public Void answer(InvocationOnMock invocation) throws Throwable {
227214
Object[] args = invocation.getArguments();
228215
List<RPCRequest> rpcs = (List<RPCRequest>) args[0];
229216
OnMultipleRequestListener listener = (OnMultipleRequestListener) args[1];
230-
if (rpcs.get(0) instanceof DeleteFile) {
217+
if (rpcs.get(0) instanceof PutFile) {
231218
Result resultCode = Result.REJECTED;
219+
boolean flip = false;
232220
for (RPCRequest message : rpcs) {
233221
int correlationId = message.getCorrelationID();
234222
listener.addCorrelationId(correlationId);
235-
DeleteFileResponse deleteFileResponse = new DeleteFileResponse();
236-
deleteFileResponse.setSuccess(true);
237-
listener.onError(correlationId, resultCode, "Binary data empty");
223+
PutFileResponse putFileResponse = new PutFileResponse();
224+
if (flip) {
225+
putFileResponse.setSuccess(true);
226+
flip = false;
227+
listener.onResponse(correlationId, putFileResponse);
228+
} else {
229+
flip = true;
230+
putFileResponse.setSuccess(false);
231+
listener.onError(correlationId, resultCode, "Binary data empty");
232+
}
238233
}
239234
listener.onFinished();
240235
}
@@ -436,12 +431,16 @@ public void onComplete(Map<String, String> errors) {
436431
verify(internalInterface, times(5)).sendRequests(any(List.class),any(OnMultipleRequestListener.class));
437432
}
438433

439-
public void testInitializationSuccess(){
434+
/**
435+
* Testing the initialization of FileManager
436+
*/
437+
public void testInitializationSuccess() {
440438
ISdl internalInterface = mock(ISdl.class);
441439

442-
doAnswer(onListFilesSuccess).when(internalInterface).sendRPCRequest(any(ListFiles.class));
440+
doAnswer(onListFilesSuccess).when(internalInterface).sendRPC(any(ListFiles.class));
443441

444-
final FileManager fileManager = new FileManager(internalInterface, mTestContext);
442+
FileManagerConfig fileManagerConfig = new FileManagerConfig();
443+
final FileManager fileManager = new FileManager(internalInterface, mTestContext, fileManagerConfig);
445444
fileManager.start(new CompletionListener() {
446445
@Override
447446
public void onComplete(boolean success) {
@@ -453,22 +452,6 @@ public void onComplete(boolean success) {
453452
});
454453
}
455454

456-
public void testInitializationFailure(){
457-
ISdl internalInterface = mock(ISdl.class);
458-
459-
doAnswer(onListFilesFailure).when(internalInterface).sendRPCRequest(any(ListFiles.class));
460-
461-
final FileManager fileManager = new FileManager(internalInterface, mTestContext);
462-
fileManager.start(new CompletionListener() {
463-
@Override
464-
public void onComplete(boolean success) {
465-
assertFalse(success);
466-
assertEquals(fileManager.getState(), BaseSubManager.ERROR);
467-
assertEquals(BaseFileManager.SPACE_AVAILABLE_MAX_VALUE, fileManager.getBytesAvailable());
468-
}
469-
});
470-
}
471-
472455
/**
473456
* Test file upload, success
474457
*/
@@ -498,13 +481,17 @@ public void onComplete(boolean success) {
498481
assertEquals(Test.GENERAL_INT, fileManager.getBytesAvailable());
499482
}
500483

484+
/**
485+
* Testing failed file upload.
486+
*/
501487
public void testFileUploadFailure() {
502488
ISdl internalInterface = mock(ISdl.class);
503489

504-
doAnswer(onListFilesSuccess).when(internalInterface).sendRPCRequest(any(ListFiles.class));
505-
doAnswer(onPutFileFailure).when(internalInterface).sendRPCRequest(any(PutFile.class));
490+
doAnswer(onListFilesSuccess).when(internalInterface).sendRPC(any(ListFiles.class));
491+
doAnswer(onPutFileFailure).when(internalInterface).sendRPC(any(PutFile.class));
506492

507-
final FileManager fileManager = new FileManager(internalInterface, mTestContext);
493+
FileManagerConfig fileManagerConfig = new FileManagerConfig();
494+
final FileManager fileManager = new FileManager(internalInterface, mTestContext, fileManagerConfig);
508495
fileManager.start(new CompletionListener() {
509496
@Override
510497
public void onComplete(boolean success) {
@@ -610,12 +597,16 @@ public void onComplete(Map<String, String> errors) {
610597
verify(internalInterface, times(1)).sendRequests(any(List.class), any(OnMultipleRequestListener.class));
611598
}
612599

613-
public void testInvalidSdlFileInput(){
600+
/**
601+
* Test to make sure you cannot upload an SdlFile with invalid data
602+
*/
603+
public void testInvalidSdlFileInput() {
614604
ISdl internalInterface = mock(ISdl.class);
615605

616-
doAnswer(onListFilesSuccess).when(internalInterface).sendRPCRequest(any(ListFiles.class));
606+
doAnswer(onListFilesSuccess).when(internalInterface).sendRPC(any(ListFiles.class));
617607

618-
final FileManager fileManager = new FileManager(internalInterface, mTestContext);
608+
FileManagerConfig fileManagerConfig = new FileManagerConfig();
609+
final FileManager fileManager = new FileManager(internalInterface, mTestContext, fileManagerConfig);
619610
fileManager.start(new CompletionListener() {
620611
@Override
621612
public void onComplete(boolean success) {
@@ -646,6 +637,12 @@ public void onComplete(boolean success) {
646637
});
647638
}
648639

640+
/**
641+
* Used to try and upload SdlFiles with invalid data, throw an assert error if file uploads
642+
*
643+
* @param fileManager - FileManager used to manage and upload files
644+
* @param sdlFile - SdlFile with invalid data to test uploading
645+
*/
649646
private void checkForUploadFailure(FileManager fileManager, SdlFile sdlFile){
650647
boolean error = false;
651648

@@ -661,6 +658,10 @@ public void onComplete(boolean success) {}
661658
assertTrue(error);
662659
}
663660

661+
/**
662+
* Test Invalid SdlArtWork FileTypes
663+
* SdlArtwork FileTypes can only be: GRAPHIC_BMP, GRAPHIC_PNG or GRAPHIC_JPEG
664+
*/
664665
public void testInvalidSdlArtworkInput(){
665666
SdlArtwork sdlArtwork = new SdlArtwork();
666667
// Set invalid type
@@ -715,99 +716,65 @@ public void onComplete(Map<String, String> errors) {
715716
});
716717
}
717718

718-
public void testMultipleFileUploadPartialFailure(){
719-
final String failureReason = "No space available";
720-
719+
/**
720+
* Testing uploading multiple files with some failing.
721+
*/
722+
public void testMultipleFileUploadPartialFailure() {
721723
ISdl internalInterface = mock(ISdl.class);
722724

723-
doAnswer(onListFilesSuccess).when(internalInterface).sendRPCRequest(any(ListFiles.class));
725+
doAnswer(onListFilesSuccess).when(internalInterface).sendRPC(any(ListFiles.class));
726+
doAnswer(onSendRequestsFailPartialOnError).when(internalInterface).sendRequests(any(List.class), any(OnMultipleRequestListener.class));
724727

725-
Answer<Void> onSendRequestsFailure = new Answer<Void>() {
726-
private int responseNum = 0;
727-
@Override
728-
public Void answer(InvocationOnMock invocation) {
729-
Object[] args = invocation.getArguments();
730-
List<RPCRequest> rpcs = (List<RPCRequest>) args[0];
731-
OnMultipleRequestListener listener = (OnMultipleRequestListener) args[1];
732-
if(rpcs.get(0) instanceof PutFile){
733-
for(RPCRequest message : rpcs){
734-
int correlationId = message.getCorrelationID();
735-
listener.addCorrelationId(correlationId);
736-
PutFileResponse putFileResponse = new PutFileResponse();
737-
if(responseNum++ % 2 == 0){
738-
listener.onError(correlationId, Result.OUT_OF_MEMORY, failureReason);
739-
}else{
740-
putFileResponse.setSuccess(true);
741-
listener.onResponse(correlationId, putFileResponse);
742-
}
743-
}
744-
}
745-
return null;
746-
}
747-
};
748-
doAnswer(onSendRequestsFailure).when(internalInterface).sendRequests(any(List.class), any(OnMultipleRequestListener.class));
728+
SdlFile validFile2 = new SdlFile();
729+
validFile2.setName(Test.GENERAL_STRING + "2");
730+
validFile2.setFileData(Test.GENERAL_BYTE_ARRAY);
731+
validFile2.setPersistent(false);
732+
validFile2.setType(FileType.GRAPHIC_JPEG);
749733

750-
final FileManager fileManager = new FileManager(internalInterface, mTestContext);
751-
fileManager.start(new CompletionListener() {
752-
@Override
753-
public void onComplete(boolean success) {
754-
assertTrue(success);
755-
final String baseFileName = "file";
756-
int fileNum = 0;
757-
final List<SdlFile> filesToUpload = new ArrayList<>();
758-
SdlFile sdlFile = new SdlFile();
759-
sdlFile.setName(baseFileName + fileNum++);
760-
Uri uri = Uri.parse("android.resource://" + mTestContext.getPackageName() + "/drawable/ic_sdl");
761-
sdlFile.setUri(uri);
762-
filesToUpload.add(sdlFile);
734+
SdlFile validFile3 = new SdlFile();
735+
validFile3.setName(Test.GENERAL_STRING + "3");
736+
validFile3.setFileData(Test.GENERAL_BYTE_ARRAY);
737+
validFile3.setPersistent(false);
738+
validFile3.setType(FileType.GRAPHIC_JPEG);
763739

764-
sdlFile = new SdlFile();
765-
sdlFile.setName(baseFileName + fileNum++);
766-
sdlFile.setResourceId(com.smartdevicelink.test.R.drawable.ic_sdl);
767-
filesToUpload.add(sdlFile);
740+
validFile.setType(FileType.AUDIO_WAVE);
768741

769-
sdlFile = new SdlFile();
770-
sdlFile.setName(baseFileName + fileNum++);
771-
sdlFile.setFileData(Test.GENERAL_BYTE_ARRAY);
772-
sdlFile.setPersistent(true);
773-
sdlFile.setType(FileType.BINARY);
774-
filesToUpload.add(sdlFile);
742+
final List<SdlFile> filesToUpload = new ArrayList<>();
743+
filesToUpload.add(validFile);
744+
filesToUpload.add(validFile2);
745+
filesToUpload.add(validFile3);
775746

747+
FileManagerConfig fileManagerConfig = new FileManagerConfig();
748+
fileManagerConfig.setArtworkRetryCount(0);
749+
fileManagerConfig.setFileRetryCount(0);
750+
final FileManager fileManager = new FileManager(internalInterface, mTestContext, fileManagerConfig);
751+
fileManager.start(new CompletionListener() {
752+
@Override
753+
public void onComplete(boolean success) {
776754
fileManager.uploadFiles(filesToUpload,
777755
new MultipleFileCompletionListener() {
778756
@Override
779757
public void onComplete(Map<String, String> errors) {
780-
assertNotNull(errors);
781-
for(int i = 0; i < filesToUpload.size(); i++){
782-
if(i % 2 == 0){
783-
assertTrue(errors.containsKey(filesToUpload.get(i).getName()));
784-
assertEquals(FileManager.buildErrorString(Result.OUT_OF_MEMORY,
785-
failureReason), errors.get(filesToUpload.get(i).getName()));
786-
}else{
787-
assertFalse(errors.containsKey(filesToUpload.get(i).getName()));
788-
}
789-
}
790-
List <String> uploadedFileNames = fileManager.getRemoteFileNames();
791-
for(int i = 0; i < filesToUpload.size(); i++){
792-
if(i % 2 == 0){
793-
assertFalse(uploadedFileNames.contains(filesToUpload.get(i).getName()));
794-
}else{
795-
assertTrue(uploadedFileNames.contains(filesToUpload.get(i).getName()));
796-
}
797-
}
758+
assertTrue(errors.size() == 2);
798759
}
799760
});
800761
}
801762
});
763+
assertFalse(fileManager.hasUploadedFile(validFile) && fileManager.hasUploadedFile(validFile3));
764+
assertTrue(fileManager.hasUploadedFile(validFile2));
802765
}
803766

767+
/**
768+
* Testing uploading multiple SdlArtwork files.
769+
*/
804770
public void testMultipleArtworkUploadSuccess(){
805771
ISdl internalInterface = mock(ISdl.class);
806772

807-
doAnswer(onListFilesSuccess).when(internalInterface).sendRPCRequest(any(ListFiles.class));
808-
doAnswer(onSendRequestsSuccess).when(internalInterface).sendRequests(any(List.class), any(OnMultipleRequestListener.class));
773+
doAnswer(onListFilesSuccess).when(internalInterface).sendRPC(any(ListFiles.class));
774+
doAnswer(onListFileUploadSuccess).when(internalInterface).sendRequests(any(List.class), any(OnMultipleRequestListener.class));
809775

810-
final FileManager fileManager = new FileManager(internalInterface, mTestContext);
776+
FileManagerConfig fileManagerConfig = new FileManagerConfig();
777+
final FileManager fileManager = new FileManager(internalInterface, mTestContext, fileManagerConfig);
811778
fileManager.start(new CompletionListener() {
812779
@Override
813780
public void onComplete(boolean success) {
@@ -843,16 +810,20 @@ public void onComplete(Map<String, String> errors) {
843810
});
844811
}
845812

813+
/**
814+
* Testing uploading persistent SdlFile
815+
*/
846816
public void testPersistentFileUploaded(){
847817
ISdl internalInterface = mock(ISdl.class);
848818

849-
doAnswer(onListFilesSuccess).when(internalInterface).sendRPCRequest(any(ListFiles.class));
819+
doAnswer(onListFilesSuccess).when(internalInterface).sendRPC(any(ListFiles.class));
850820

851821
final SdlFile file = new SdlFile();
852822
file.setName(Test.GENERAL_STRING_LIST.get(0));
853823
file.setPersistent(true);
854824

855-
final FileManager fileManager = new FileManager(internalInterface, mTestContext);
825+
FileManagerConfig fileManagerConfig = new FileManagerConfig();
826+
final FileManager fileManager = new FileManager(internalInterface, mTestContext, fileManagerConfig);
856827
fileManager.start(new CompletionListener() {
857828
@Override
858829
public void onComplete(boolean success) {

0 commit comments

Comments
 (0)