From 25bf363d2cacf1770978a080cbe303b4d53ed045 Mon Sep 17 00:00:00 2001
From: Pradyumna Kaushik <pkaushi1@binghamton.edu>
Date: Wed, 14 Feb 2018 06:28:59 +0000
Subject: [PATCH] Merged in tasksToScheduleWindow (pull request #5)

TasksToScheduleWindow

Approved-by: Akash Kothawale <akothaw1@binghamton.edu>
---
 schedulers/MaxGreedyMins.go | 4 ++++
 schedulers/MaxMin.go        | 4 ++++
 schedulers/bin-packing.go   | 4 ++++
 schedulers/first-fit.go     | 4 ++++
 4 files changed, 16 insertions(+)

diff --git a/schedulers/MaxGreedyMins.go b/schedulers/MaxGreedyMins.go
index 3a1ef12..b7c03c6 100644
--- a/schedulers/MaxGreedyMins.go
+++ b/schedulers/MaxGreedyMins.go
@@ -171,6 +171,10 @@ func (s *MaxGreedyMins) ConsumeOffers(spc SchedPolicyContext, driver sched.Sched
 
 	// Switch scheduling policy only if feature enabled from CLI
 	if baseSchedRef.schedPolSwitchEnabled {
+		// Need to recompute the schedWindow for the next offer cycle.
+		// The next scheduling policy will schedule at max schedWindow number of tasks.
+		baseSchedRef.curSchedWindow = baseSchedRef.schedWindowResStrategy.Apply(
+			func() interface{} { return baseSchedRef.tasks })
 		// Switching to a random scheduling policy.
 		// TODO: Switch based on some criteria.
 		index := rand.Intn(len(SchedPolicies))
diff --git a/schedulers/MaxMin.go b/schedulers/MaxMin.go
index 6cb59b8..90d533d 100644
--- a/schedulers/MaxMin.go
+++ b/schedulers/MaxMin.go
@@ -165,6 +165,10 @@ func (s *MaxMin) ConsumeOffers(spc SchedPolicyContext, driver sched.SchedulerDri
 
 	// Switch scheduling policy only if feature enabled from CLI
 	if baseSchedRef.schedPolSwitchEnabled {
+		// Need to recompute the schedWindow for the next offer cycle.
+		// The next scheduling policy will schedule at max schedWindow number of tasks.
+		baseSchedRef.curSchedWindow = baseSchedRef.schedWindowResStrategy.Apply(
+			func() interface{} { return baseSchedRef.tasks })
 		// Switching to a random scheduling policy.
 		// TODO: Switch based on some criteria.
 		index := rand.Intn(len(SchedPolicies))
diff --git a/schedulers/bin-packing.go b/schedulers/bin-packing.go
index c39c8b3..02e0067 100644
--- a/schedulers/bin-packing.go
+++ b/schedulers/bin-packing.go
@@ -115,6 +115,10 @@ func (s *BinPackSortedWatts) ConsumeOffers(spc SchedPolicyContext, driver sched.
 
 	// Switch scheduling policy only if feature enabled from CLI
 	if baseSchedRef.schedPolSwitchEnabled {
+		// Need to recompute the schedWindow for the next offer cycle.
+		// The next scheduling policy will schedule at max schedWindow number of tasks.
+		baseSchedRef.curSchedWindow = baseSchedRef.schedWindowResStrategy.Apply(
+			func() interface{} { return baseSchedRef.tasks })
 		// Switching to a random scheduling policy.
 		// TODO: Switch based on some criteria.
 		index := rand.Intn(len(SchedPolicies))
diff --git a/schedulers/first-fit.go b/schedulers/first-fit.go
index 4e9713c..3c21a39 100644
--- a/schedulers/first-fit.go
+++ b/schedulers/first-fit.go
@@ -101,6 +101,10 @@ func (s *FirstFit) ConsumeOffers(spc SchedPolicyContext, driver sched.SchedulerD
 
 	// Switch scheduling policy only if feature enabled from CLI
 	if baseSchedRef.schedPolSwitchEnabled {
+		// Need to recompute the schedWindow for the next offer cycle.
+		// The next scheduling policy will schedule at max schedWindow number of tasks.
+		baseSchedRef.curSchedWindow = baseSchedRef.schedWindowResStrategy.Apply(
+			func() interface{} { return baseSchedRef.tasks })
 		// Switching to a random scheduling policy.
 		// TODO: Switch based on some criteria.
 		index := rand.Intn(len(SchedPolicies))