@@ -242,6 +242,39 @@ public Void answer(InvocationOnMock invocation) {
242242 }
243243 };
244244
245+ /**
246+ * Flips between calling onError and onResponse.
247+ * simulating uploading files, with some failing to upload
248+ */
249+ private Answer <Void > onSendRequestsFailPartialOnError = new Answer <Void >() {
250+ @ Override
251+ public Void answer (InvocationOnMock invocation ) throws Throwable {
252+ Object [] args = invocation .getArguments ();
253+ List <RPCRequest > rpcs = (List <RPCRequest >) args [0 ];
254+ OnMultipleRequestListener listener = (OnMultipleRequestListener ) args [1 ];
255+ if (rpcs .get (0 ) instanceof PutFile ) {
256+ Result resultCode = Result .REJECTED ;
257+ boolean flip = false ;
258+ for (RPCRequest message : rpcs ) {
259+ int correlationId = message .getCorrelationID ();
260+ listener .addCorrelationId (correlationId );
261+ PutFileResponse putFileResponse = new PutFileResponse ();
262+ if (flip ) {
263+ putFileResponse .setSuccess (true );
264+ flip = false ;
265+ listener .onResponse (correlationId , putFileResponse );
266+ } else {
267+ flip = true ;
268+ putFileResponse .setSuccess (false );
269+ listener .onError (correlationId , resultCode , "Binary data empty" );
270+ }
271+ }
272+ listener .onFinished ();
273+ }
274+ return null ;
275+ }
276+ };
277+
245278 // TESTS
246279
247280 /**
@@ -733,90 +766,52 @@ public void onComplete(Map<String, String> errors) {
733766 });
734767 }
735768
736- public void testMultipleFileUploadPartialFailure (){
737- final String failureReason = "No space available" ;
738-
769+ /**
770+ * Testing uploading multiple files with some failing.
771+ */
772+ public void testMultipleFileUploadPartialFailure () {
739773 ISdl internalInterface = mock (ISdl .class );
740774
741- doAnswer (onListFilesSuccess ).when (internalInterface ).sendRPCRequest (any (ListFiles .class ));
775+ doAnswer (onListFilesSuccess ).when (internalInterface ).sendRPC (any (ListFiles .class ));
776+ doAnswer (onSendRequestsFailPartialOnError ).when (internalInterface ).sendRequests (any (List .class ), any (OnMultipleRequestListener .class ));
742777
743- Answer <Void > onSendRequestsFailure = new Answer <Void >() {
744- private int responseNum = 0 ;
745- @ Override
746- public Void answer (InvocationOnMock invocation ) {
747- Object [] args = invocation .getArguments ();
748- List <RPCRequest > rpcs = (List <RPCRequest >) args [0 ];
749- OnMultipleRequestListener listener = (OnMultipleRequestListener ) args [1 ];
750- if (rpcs .get (0 ) instanceof PutFile ){
751- for (RPCRequest message : rpcs ){
752- int correlationId = message .getCorrelationID ();
753- listener .addCorrelationId (correlationId );
754- PutFileResponse putFileResponse = new PutFileResponse ();
755- if (responseNum ++ % 2 == 0 ){
756- listener .onError (correlationId , Result .OUT_OF_MEMORY , failureReason );
757- }else {
758- putFileResponse .setSuccess (true );
759- listener .onResponse (correlationId , putFileResponse );
760- }
761- }
762- }
763- return null ;
764- }
765- };
766- doAnswer (onSendRequestsFailure ).when (internalInterface ).sendRequests (any (List .class ), any (OnMultipleRequestListener .class ));
778+ SdlFile validFile2 = new SdlFile ();
779+ validFile2 .setName (Test .GENERAL_STRING + "2" );
780+ validFile2 .setFileData (Test .GENERAL_BYTE_ARRAY );
781+ validFile2 .setPersistent (false );
782+ validFile2 .setType (FileType .GRAPHIC_JPEG );
767783
768- final FileManager fileManager = new FileManager (internalInterface , mTestContext );
769- fileManager .start (new CompletionListener () {
770- @ Override
771- public void onComplete (boolean success ) {
772- assertTrue (success );
773- final String baseFileName = "file" ;
774- int fileNum = 0 ;
775- final List <SdlFile > filesToUpload = new ArrayList <>();
776- SdlFile sdlFile = new SdlFile ();
777- sdlFile .setName (baseFileName + fileNum ++);
778- Uri uri = Uri .parse ("android.resource://" + mTestContext .getPackageName () + "/drawable/ic_sdl" );
779- sdlFile .setUri (uri );
780- filesToUpload .add (sdlFile );
784+ SdlFile validFile3 = new SdlFile ();
785+ validFile3 .setName (Test .GENERAL_STRING + "3" );
786+ validFile3 .setFileData (Test .GENERAL_BYTE_ARRAY );
787+ validFile3 .setPersistent (false );
788+ validFile3 .setType (FileType .GRAPHIC_JPEG );
781789
782- sdlFile = new SdlFile ();
783- sdlFile .setName (baseFileName + fileNum ++);
784- sdlFile .setResourceId (com .smartdevicelink .test .R .drawable .ic_sdl );
785- filesToUpload .add (sdlFile );
790+ validFile .setType (FileType .AUDIO_WAVE );
786791
787- sdlFile = new SdlFile ();
788- sdlFile .setName (baseFileName + fileNum ++);
789- sdlFile .setFileData (Test .GENERAL_BYTE_ARRAY );
790- sdlFile .setPersistent (true );
791- sdlFile .setType (FileType .BINARY );
792- filesToUpload .add (sdlFile );
792+ final List <SdlFile > filesToUpload = new ArrayList <>();
793+ filesToUpload .add (validFile );
794+ filesToUpload .add (validFile2 );
795+ filesToUpload .add (validFile3 );
793796
797+ FileManagerConfig fileManagerConfig = new FileManagerConfig ();
798+ fileManagerConfig .setArtworkRetryCount (0 );
799+ fileManagerConfig .setFileRetryCount (0 );
800+ final FileManager fileManager = new FileManager (internalInterface , mTestContext , fileManagerConfig );
801+ fileManager .start (new CompletionListener () {
802+ @ Override
803+ public void onComplete (boolean success ) {
794804 fileManager .uploadFiles (filesToUpload ,
795805 new MultipleFileCompletionListener () {
796806 @ Override
797807 public void onComplete (Map <String , String > errors ) {
798- assertNotNull (errors );
799- for (int i = 0 ; i < filesToUpload .size (); i ++){
800- if (i % 2 == 0 ){
801- assertTrue (errors .containsKey (filesToUpload .get (i ).getName ()));
802- assertEquals (FileManager .buildErrorString (Result .OUT_OF_MEMORY ,
803- failureReason ), errors .get (filesToUpload .get (i ).getName ()));
804- }else {
805- assertFalse (errors .containsKey (filesToUpload .get (i ).getName ()));
806- }
807- }
808- List <String > uploadedFileNames = fileManager .getRemoteFileNames ();
809- for (int i = 0 ; i < filesToUpload .size (); i ++){
810- if (i % 2 == 0 ){
811- assertFalse (uploadedFileNames .contains (filesToUpload .get (i ).getName ()));
812- }else {
813- assertTrue (uploadedFileNames .contains (filesToUpload .get (i ).getName ()));
814- }
815- }
808+ assertTrue (errors .size () == 2 );
816809 }
817810 });
818811 }
819812 });
813+ assertFalse (fileManager .hasUploadedFile (validFile ) && fileManager .hasUploadedFile (validFile3 ));
814+ assertTrue (fileManager .hasUploadedFile (validFile2 ));
820815 }
821816
822817 public void testMultipleArtworkUploadSuccess (){
0 commit comments