@Test(timeout = 10000)
public void testDestroyAndReturn() throws Exception {
HiveConf conf = createConf();
MockQam qam = new MockQam();
WorkloadManager wm = new WorkloadManagerForTest("test", conf, 2, qam);
wm.start();
WmTezSession session = (WmTezSession) wm.getSession(null, mappingInput("user"), conf);
assertEquals(1.0, session.getClusterFraction(), EPSILON);
qam.assertWasCalledAndReset();
WmTezSession session2 = (WmTezSession) wm.getSession(null, mappingInput("user"), conf);
assertEquals(0.5, session.getClusterFraction(), EPSILON);
assertEquals(0.5, session2.getClusterFraction(), EPSILON);
qam.assertWasCalledAndReset();
assertNotSame(session, session2);
session.destroy();
assertEquals(1.0, session2.getClusterFraction(), EPSILON);
assertFalse(session.hasClusterFraction());
qam.assertWasCalledAndReset();
session = (WmTezSession) wm.getSession(null, mappingInput("user"), conf);
session.returnToSessionManager();
assertEquals(1.0, session2.getClusterFraction(), EPSILON);
assertFalse(session.hasClusterFraction());
qam.assertWasCalledAndReset();
}