This looks pretty good, except that testPoolAssignment fails when I run the unit tests. I think the problem is with job4, where you set "mapred.fairscheduler.poolnameproperty" in the job's Configuration (jobConf2), not in the fair scheduler's configuration. You need to set the poolNameProperty when you create the fair scheduler object. That's what the code used to do with the POOL_PROPERTY string at the top, but you can't set the pool name property to mapred.fairscheduler.pool, because that wouldn't be testing anything. I'd suggest leaving the POOL_PROPERTY as "pool" and trying to set job4's pool through that.
Also, for sanity, in job1 (where you set mapred.fairscheduler.pool directly), you should say the "pool" property to something other than poolA to make sure it isn't used.
Finally, two small nitpicks:
- In the test line with assertEquals(scheduler.getPoolManager().getPoolName(job2), "poolA"), you should switch the two parameters (put "poolA" first); the first parameter is always supposed to be the value expected.
- Regarding the comment on getPoolName - the pool name property used by default is "user.name", not "project". I think I forgot to fix that comment a while back.