Repository: aurora Updated Branches: refs/heads/master 9825e054d -> dbe9a52a0
Add test case for regression of AURORA-1952 Reviewed at https://reviews.apache.org/r/63202/ Project: http://git-wip-us.apache.org/repos/asf/aurora/repo Commit: http://git-wip-us.apache.org/repos/asf/aurora/commit/dbe9a52a Tree: http://git-wip-us.apache.org/repos/asf/aurora/tree/dbe9a52a Diff: http://git-wip-us.apache.org/repos/asf/aurora/diff/dbe9a52a Branch: refs/heads/master Commit: dbe9a52a0315885eb478c6e9666bf89eb346349f Parents: 9825e05 Author: Bill Farner <[email protected]> Authored: Sat Oct 21 11:12:26 2017 -0700 Committer: Bill Farner <[email protected]> Committed: Sat Oct 21 11:12:26 2017 -0700 ---------------------------------------------------------------------- .../scheduler/offers/OfferManagerImplTest.java | 26 ++++++++++++++++++++ 1 file changed, 26 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/aurora/blob/dbe9a52a/src/test/java/org/apache/aurora/scheduler/offers/OfferManagerImplTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/aurora/scheduler/offers/OfferManagerImplTest.java b/src/test/java/org/apache/aurora/scheduler/offers/OfferManagerImplTest.java index 6c8434e..3d38a59 100644 --- a/src/test/java/org/apache/aurora/scheduler/offers/OfferManagerImplTest.java +++ b/src/test/java/org/apache/aurora/scheduler/offers/OfferManagerImplTest.java @@ -42,6 +42,7 @@ import org.apache.aurora.scheduler.testing.FakeStatsProvider; import org.apache.mesos.v1.Protos; import org.apache.mesos.v1.Protos.Filters; import org.apache.mesos.v1.Protos.Offer.Operation; +import org.apache.mesos.v1.Protos.OfferID; import org.apache.mesos.v1.Protos.TaskInfo; import org.apache.mesos.v1.Protos.TimeInfo; import org.apache.mesos.v1.Protos.Unavailability; @@ -545,4 +546,29 @@ public class OfferManagerImplTest extends EasyMockTest { assertEquals(0, statsProvider.getLongValue(OUTSTANDING_OFFERS)); assertEquals(0, statsProvider.getLongValue(STATICALLY_BANNED_OFFERS)); } + + @Test + public void testTwoOffersPerHost() { + // Test for regression of AURORA-1952, where a specific call order could cause OfferManager + // to violate its one-offer-per-host invariant. + + HostOffer sameAgent = new HostOffer( + OFFER_A.getOffer().toBuilder().setId(OfferID.newBuilder().setValue("sameAgent")).build(), + HOST_ATTRIBUTES_A); + HostOffer sameAgent2 = new HostOffer( + OFFER_A.getOffer().toBuilder().setId(OfferID.newBuilder().setValue("sameAgent2")).build(), + HOST_ATTRIBUTES_A); + + driver.declineOffer(OFFER_A_ID, OFFER_FILTER); + driver.declineOffer(sameAgent.getOffer().getId(), OFFER_FILTER); + + control.replay(); + + offerManager.banOffer(OFFER_A_ID); + offerManager.addOffer(OFFER_A); + offerManager.addOffer(sameAgent); + offerManager.cancelOffer(OFFER_A_ID); + offerManager.addOffer(sameAgent2); + assertEquals(ImmutableSet.of(sameAgent2), offerManager.getOffers()); + } }
