mobile/android/tests/background/junit3/src/sync/helpers/DefaultFetchDelegate.java

Wed, 31 Dec 2014 07:22:50 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 07:22:50 +0100
branch
TOR_BUG_3246
changeset 4
fc2d59ddac77
permissions
-rw-r--r--

Correct previous dual key logic pending first delivery installment.

     1 /* Any copyright is dedicated to the Public Domain.
     2    http://creativecommons.org/publicdomain/zero/1.0/ */
     4 package org.mozilla.gecko.background.sync.helpers;
     6 import static junit.framework.Assert.assertEquals;
     7 import static junit.framework.Assert.assertTrue;
     8 import static junit.framework.Assert.fail;
    10 import java.util.ArrayList;
    11 import java.util.HashMap;
    12 import java.util.HashSet;
    13 import java.util.Set;
    14 import java.util.concurrent.ExecutorService;
    16 import junit.framework.AssertionFailedError;
    18 import org.mozilla.gecko.background.common.log.Logger;
    19 import org.mozilla.gecko.sync.repositories.delegates.DeferredRepositorySessionFetchRecordsDelegate;
    20 import org.mozilla.gecko.sync.repositories.delegates.RepositorySessionFetchRecordsDelegate;
    21 import org.mozilla.gecko.sync.repositories.domain.Record;
    23 public class DefaultFetchDelegate extends DefaultDelegate implements RepositorySessionFetchRecordsDelegate {
    25   private static final String LOG_TAG = "DefaultFetchDelegate";
    26   public ArrayList<Record> records = new ArrayList<Record>();
    27   public Set<String> ignore = new HashSet<String>();
    29   @Override
    30   public void onFetchFailed(Exception ex, Record record) {
    31     performNotify("Fetch failed.", ex);
    32   }
    34   protected void onDone(ArrayList<Record> records, HashMap<String, Record> expected, long end) {
    35     Logger.debug(LOG_TAG, "onDone.");
    36     Logger.debug(LOG_TAG, "End timestamp is " + end);
    37     Logger.debug(LOG_TAG, "Expected is " + expected);
    38     Logger.debug(LOG_TAG, "Records is " + records);
    39     Set<String> foundGuids = new HashSet<String>();
    40     try {
    41       int expectedCount = 0;
    42       int expectedFound = 0;
    43       Logger.debug(LOG_TAG, "Counting expected keys.");
    44       for (String key : expected.keySet()) {
    45         if (!ignore.contains(key)) {
    46           expectedCount++;
    47         }
    48       }
    49       Logger.debug(LOG_TAG, "Expected keys: " + expectedCount);
    50       for (Record record : records) {
    51         Logger.debug(LOG_TAG, "Record.");
    52         Logger.debug(LOG_TAG, record.guid);
    54         // Ignore special GUIDs (e.g., for bookmarks).
    55         if (!ignore.contains(record.guid)) {
    56           if (foundGuids.contains(record.guid)) {
    57             fail("Found duplicate guid " + record.guid);
    58           }
    59           Record expect = expected.get(record.guid);
    60           if (expect == null) {
    61             fail("Do not expect to get back a record with guid: " + record.guid); // Caught below
    62           }
    63           Logger.debug(LOG_TAG, "Checking equality.");
    64           try {
    65             assertTrue(expect.equalPayloads(record)); // Caught below
    66           } catch (Exception e) {
    67             Logger.error(LOG_TAG, "ONOZ!", e);
    68           }
    69           Logger.debug(LOG_TAG, "Checked equality.");
    70           expectedFound += 1;
    71           // Track record once we've found it.
    72           foundGuids.add(record.guid);
    73         }
    74       }
    75       assertEquals(expectedCount, expectedFound); // Caught below
    76       Logger.debug(LOG_TAG, "Notifying success.");
    77       performNotify();
    78     } catch (AssertionFailedError e) {
    79       Logger.error(LOG_TAG, "Notifying assertion failure.");
    80       performNotify(e);
    81     } catch (Exception e) {
    82       Logger.error(LOG_TAG, "No!");
    83       performNotify();
    84     }
    85   }
    87   public int recordCount() {
    88     return (this.records == null) ? 0 : this.records.size();
    89   }
    91   @Override
    92   public void onFetchedRecord(Record record) {
    93     Logger.debug(LOG_TAG, "onFetchedRecord(" + record.guid + ")");
    94     records.add(record);
    95   }
    97   @Override
    98   public void onFetchCompleted(final long fetchEnd) {
    99     Logger.debug(LOG_TAG, "onFetchCompleted. Doing nothing.");
   100   }
   102   @Override
   103   public RepositorySessionFetchRecordsDelegate deferredFetchDelegate(final ExecutorService executor) {
   104     return new DeferredRepositorySessionFetchRecordsDelegate(this, executor);
   105   }
   106 }

mercurial