def testMergeSelfserve(self):
        "Test that having Self-serve in the request reason disables coalescing"
        b1 = makeBuilder("b1")
        r1 = makeRequest(b1)
        r2 = makeRequest(b1, reason="Retriggered via Self-serve")

        self.assertFalse(misc.mergeRequests(b1, r1, r2))
        self.assertFalse(misc.mergeRequests(b1, r2, r1))
    def testMergeNightly(self):
        "Test that jobs with the 'nightly_build' property set to True don't get merged"
        b1 = makeBuilder("b1")
        r1 = makeRequest(b1)
        r2 = makeRequest(b1)
        r2.properties.setProperty('nightly_build', True, 'testharness')

        self.assertFalse(misc.mergeRequests(b1, r1, r2))
        self.assertFalse(misc.mergeRequests(b1, r2, r1))
    def testNoMergeBuilders(self):
        "Tests that nomergeBuilders works"
        b1 = makeBuilder("b1")
        r1 = makeRequest(b1)
        r2 = makeRequest(b1)
        misc.nomergeBuilders = set()

        # b1 isn't in nomergeBuilders, so we can merge the requests
        self.assertTrue(misc.mergeRequests(b1, r1, r2))

        # When b1 is in nomergeBuilders, they're not mergeable
        misc.nomergeBuilders = set(["b1"])
        self.assertFalse(misc.mergeRequests(b1, r1, r2))
    def testMergeLimits(self):
        "Tests that merge limits work"
        b1 = makeBuilder("b1")
        b2 = makeBuilder("b2")

        r1 = makeRequest(b1)
        r2 = makeRequest(b1)
        r3 = makeRequest(b2)
        r4 = makeRequest(b1)
        r5 = makeRequest(b1)

        # We can merge these two (count = 2)
        self.assertTrue(misc.mergeRequests(b1, r1, r2))
        # r3 is on a different builder, so can't merge
        self.assertFalse(misc.mergeRequests(b1, r1, r3))
        # We can merge one more (count = 3)
        self.assertTrue(misc.mergeRequests(b1, r1, r4))
        # Can't merge more than 3
        self.assertFalse(misc.mergeRequests(b1, r1, r5))
    def testResetState(self):
        """Tests that state is reset properly when we're looking at different
        requests"""
        b1 = makeBuilder("b1")
        r1 = makeRequest(b1)
        r2 = makeRequest(b1)
        r3 = makeRequest(b1)

        misc.mergeRequests(b1, r1, r2)
        self.assertEquals(misc._mergeId, r1.id)
        self.assertEquals(misc._mergeCount, 2)

        misc.mergeRequests(b1, r1, r3)
        self.assertEquals(misc._mergeId, r1.id)
        self.assertEquals(misc._mergeCount, 3)

        misc.mergeRequests(b1, r2, r3)
        self.assertEquals(misc._mergeId, r2.id)
        self.assertEquals(misc._mergeCount, 2)