@@ -34,7 +34,8 @@ import scala.collection.mutable.ArrayBuffer
3434import scala .util .Random
3535
3636class MesosSchedulerBackendSuite extends FunSuite with LocalSparkContext with EasyMockSugar {
37- test(" mesos resource offer is launching tasks" ) {
37+
38+ test(" mesos resource offers result in launching tasks" ) {
3839 def createOffer (id : Int , mem : Int , cpu : Int ) = {
3940 val builder = Offer .newBuilder()
4041 builder.addResourcesBuilder()
@@ -53,34 +54,38 @@ class MesosSchedulerBackendSuite extends FunSuite with LocalSparkContext with Ea
5354 val taskScheduler = EasyMock .createMock(classOf [TaskSchedulerImpl ])
5455
5556 val sc = EasyMock .createMock(classOf [SparkContext ])
56-
5757 EasyMock .expect(sc.executorMemory).andReturn(100 ).anyTimes()
5858 EasyMock .expect(sc.getSparkHome()).andReturn(Option (" /path" )).anyTimes()
5959 EasyMock .expect(sc.executorEnvs).andReturn(new mutable.HashMap ).anyTimes()
6060 EasyMock .expect(sc.conf).andReturn(new SparkConf ).anyTimes()
6161 EasyMock .replay(sc)
62+
6263 val minMem = MemoryUtils .calculateTotalMemory(sc).toInt
6364 val minCpu = 4
65+
6466 val offers = new java.util.ArrayList [Offer ]
6567 offers.add(createOffer(1 , minMem, minCpu))
6668 offers.add(createOffer(2 , minMem - 1 , minCpu))
6769 offers.add(createOffer(3 , minMem, minCpu))
70+
6871 val backend = new MesosSchedulerBackend (taskScheduler, sc, " master" )
69- val workerOffers = new ArrayBuffer [WorkerOffer ](2 )
70- workerOffers.append(new WorkerOffer (
72+
73+ val expectedWorkerOffers = new ArrayBuffer [WorkerOffer ](2 )
74+ expectedWorkerOffers.append(new WorkerOffer (
7175 offers.get(0 ).getSlaveId.getValue,
7276 offers.get(0 ).getHostname,
7377 2
7478 ))
75- workerOffers .append(new WorkerOffer (
79+ expectedWorkerOffers .append(new WorkerOffer (
7680 offers.get(2 ).getSlaveId.getValue,
7781 offers.get(2 ).getHostname,
7882 2
7983 ))
8084 val taskDesc = new TaskDescription (1L , " s1" , " n1" , 0 , ByteBuffer .wrap(new Array [Byte ](0 )))
81- EasyMock .expect(taskScheduler.resourceOffers(EasyMock .eq(workerOffers ))).andReturn(Seq (Seq (taskDesc)))
85+ EasyMock .expect(taskScheduler.resourceOffers(EasyMock .eq(expectedWorkerOffers ))).andReturn(Seq (Seq (taskDesc)))
8286 EasyMock .expect(taskScheduler.CPUS_PER_TASK ).andReturn(2 ).anyTimes()
8387 EasyMock .replay(taskScheduler)
88+
8489 val capture = new Capture [util.Collection [TaskInfo ]]
8590 EasyMock .expect(
8691 driver.launchTasks(
@@ -95,8 +100,10 @@ class MesosSchedulerBackendSuite extends FunSuite with LocalSparkContext with Ea
95100 backend.resourceOffers(driver, offers)
96101 EasyMock .verify(driver)
97102 assert(capture.getValue.size() == 1 )
103+
98104 val taskInfo = capture.getValue.iterator().next()
99105 assert(taskInfo.getName.equals(" n1" ))
106+
100107 val cpus = taskInfo.getResourcesList.get(0 )
101108 assert(cpus.getName.equals(" cpus" ))
102109 assert(cpus.getScalar.getValue.equals(2.0 ))
0 commit comments