@SmallTest
  @Feature({"Android-AppBase"})
  public void testFindAndUploadAllCrashes() throws IOException {
    // Setup prerequisites.
    final AtomicInteger numServiceStarts = new AtomicInteger(0);
    final File[] minidumpFiles = {
      new File(mCrashDir, "chromium_renderer-111.dmp1"),
      new File(mCrashDir, "chromium_renderer-222.dmp2"),
      new File(mCrashDir, "chromium_renderer-333.dmp3"),
    };
    MinidumpPreparationContext context =
        new MinidumpPreparationContext(getInstrumentation().getTargetContext()) {
          @Override
          public ComponentName startService(Intent intentToCheck) {
            String filePath =
                intentToCheck.getStringExtra(MinidumpUploadService.FILE_TO_UPLOAD_KEY);
            // Assuming numServicesStart value corresponds to minidumpFiles index.
            assertEquals(
                "Minidump path should be the absolute path",
                minidumpFiles[numServiceStarts.intValue()].getAbsolutePath(),
                filePath);
            assertTrue(
                "Should not call service more than number of files",
                numServiceStarts.incrementAndGet() <= minidumpFiles.length);
            assertEquals(
                "Action should be correct",
                MinidumpUploadService.ACTION_UPLOAD,
                intentToCheck.getAction());
            return new ComponentName(getPackageName(), MinidumpUploadService.class.getName());
          }
        };
    MinidumpUploadService service = new TestMinidumpUploadService(context);
    for (File minidumpFile : minidumpFiles) {
      setUpMinidumpFile(minidumpFile, BOUNDARY);
    }

    // Run test.
    Intent findAndUploadAllCrashesIntent =
        MinidumpUploadService.createFindAndUploadAllCrashesIntent(context);
    findAndUploadAllCrashesIntent.putExtra(
        MinidumpUploadService.FINISHED_LOGCAT_EXTRACTION_KEY, true);
    service.onCreate();
    service.onHandleIntent(findAndUploadAllCrashesIntent);

    // Verify.
    for (File minidumpFile : minidumpFiles) {
      assertTrue("Minidump file should exist: " + minidumpFile, minidumpFile.isFile());
    }
    assertEquals(
        "Should have called startService() same number of times as there are files",
        minidumpFiles.length,
        numServiceStarts.intValue());
  }