Deal with duplicates correctly rather than randomly fail.

BUG=None
TEST=manual run of --board=x86-generic

Change-Id: Ie9590b5d7b4d92eaa518ae4a13ecea3de848a04f
Reviewed-on: http://gerrit.chromium.org/gerrit/7476
Reviewed-by: Chris Sosa <sosa@chromium.org>
Tested-by: Chris Sosa <sosa@chromium.org>
diff --git a/ctest/ctest.py b/ctest/ctest.py
index 93b5715..4c089a5 100755
--- a/ctest/ctest.py
+++ b/ctest/ctest.py
@@ -154,6 +154,7 @@
     cmd.append('--board=%s' % self.board)
     if full:
       cmd.append('--full_suite')
+      cmd.append('--nplus1')
       if self.sign_payloads:
         cmd.append('--public_key=%s' % self.public_key)
         cmd.append('--private_key=%s' % self.private_key)
diff --git a/generate_test_payloads/cros_generate_test_payloads.py b/generate_test_payloads/cros_generate_test_payloads.py
index b4b57e8..e21edd4 100755
--- a/generate_test_payloads/cros_generate_test_payloads.py
+++ b/generate_test_payloads/cros_generate_test_payloads.py
@@ -36,6 +36,22 @@
     self.target = target
     self.key = key
 
+  def __str__(self):
+    my_repr = self.target
+    if self.base:
+      my_repr = self.base + '->' + my_repr
+
+    if self.key:
+      my_repr = my_repr + '+' + self.key
+
+    return my_repr
+
+  def __eq__(self, other):
+    return str(self) == str(other)
+
+  def __hash__(self):
+    return hash(str(self))
+
 
 class UpdatePayloadGenerator(object):
   """Class responsible for generating update payloads."""
@@ -62,13 +78,13 @@
     # Affect what payloads we create.
     self.board = options.board
     self.full_suite = options.full_suite
-    self.payloads = []
+    self.payloads = set([])
     self.nplus1 = options.nplus1
     self.vm = options.vm
 
   def _AddUpdatePayload(self, target, base, key=None):
     """Adds a new required update payload.  If base is None, a full payload."""
-    self.payloads.append(UpdatePayload(target, base, key))
+    self.payloads.add(UpdatePayload(target, base, key))
 
   def GenerateImagesForTesting(self):
     # All vm testing requires a VM'ized target.