Skip to content
This repository has been archived by the owner on Apr 24, 2023. It is now read-only.

Add COOK_INSTANCE_NUM environment variable #1203

Merged
merged 1 commit into from Sep 4, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
26 changes: 26 additions & 0 deletions integration/tests/cook/test_basic.py
Expand Up @@ -2913,3 +2913,29 @@ def test_command_length_limit(self):
in str(resp.content))
finally:
util.kill_jobs(self.cook_url, [job_uuid], assert_response=False)


@unittest.skipUnless(util.supports_exit_code() and not util.has_one_agent(), "Requires exit code support and multiple agents")
def test_cook_instance_num(self):
command = 'bash -c \'exit $(($COOK_INSTANCE_NUM + 1))\''
job_uuid, resp = util.submit_job(self.cook_url, command=command, max_retries=2)
try:
def query():
jobs = util.query_jobs(self.cook_url, True, uuid=[job_uuid]).json()
self.logger.info(f'Found jobs: {jobs}')
return jobs[0]
def predicate(job):
if job['status'] != 'completed':
return False
for instance in job['instances']:
if 'exit_code' not in instance:
return False
return True
job = util.wait_until(query, predicate)
self.assertEqual(2, len(job['instances']), job)
exit_codes = [i['exit_code'] for i in job['instances']]
exit_codes.sort()
self.assertEqual([1, 2], exit_codes, job)
finally:
util.kill_jobs(self.cook_url, [job_uuid], assert_response=False)

10 changes: 4 additions & 6 deletions integration/tests/cook/util.py
Expand Up @@ -1453,9 +1453,7 @@ def using_mesos():
return _get_compute_cluster_factory_fn() == 'cook.mesos.mesos-compute-cluster/factory-fn'

def has_one_agent():
# TODO: Actually check the number of agents.
cook_url = retrieve_cook_url()
_wait_for_cook(cook_url)
init_cook_session(cook_url)
compute_clusters = settings(cook_url)['compute-clusters']
return compute_clusters[0]['config']['compute-cluster-name'] == 'minikube'
return node_count() == 1

def supports_exit_code():
return using_kubernetes() or is_cook_executor_in_use()
11 changes: 0 additions & 11 deletions scheduler/bin/run-local-kubernetes.sh
Expand Up @@ -20,14 +20,6 @@ SCHEDULER_DIR="$( dirname ${DIR} )"

NAME=cook-scheduler-${COOK_PORT}

SCHEDULER_EXECUTOR_DIR=${SCHEDULER_DIR}/resources/public

EXECUTOR_DIR="$(dirname ${SCHEDULER_DIR})/executor"
EXECUTOR_NAME=cook-executor-local
COOK_EXECUTOR_COMMAND="${EXECUTOR_DIR}/dist/${EXECUTOR_NAME}/${EXECUTOR_NAME}"
SCHEDULER_EXECUTOR_DIR=${SCHEDULER_DIR}/resources/public

${EXECUTOR_DIR}/bin/prepare-executor.sh local ${SCHEDULER_EXECUTOR_DIR}

if [ "${COOK_ZOOKEEPER_LOCAL}" = false ] ; then
COOK_ZOOKEEPER="${ZOOKEEPER_IP}:2181"
Expand All @@ -54,9 +46,6 @@ FLASK_APP=${INTEGRATION_DIR}/src/data_locality/service.py flask run -p 35847 &
echo "Creating environment variables..."
export COOK_DATOMIC_URI="${COOK_DATOMIC_URI}"
export COOK_FRAMEWORK_ID="${COOK_FRAMEWORK_ID}"
export COOK_EXECUTOR=""
export COOK_EXECUTOR_COMMAND="${COOK_EXECUTOR_COMMAND}"
export COOK_EXECUTOR_PORTION=1
export COOK_ONE_USER_AUTH=$(whoami)
export COOK_HOSTNAME="cook-scheduler-${COOK_PORT}"
export COOK_LOG_FILE="log/cook-${COOK_PORT}.log"
Expand Down
6 changes: 3 additions & 3 deletions scheduler/src/cook/mesos/task.clj
Expand Up @@ -136,7 +136,9 @@
executor (executor-key->executor executor-key)
resources (util/job-ent->resources job-ent)
group-uuid (util/job-ent->group-uuid job-ent)
instance-num (str (count (:job/instance job-ent)))
environment (cond-> (assoc (util/job-ent->env job-ent)
"COOK_INSTANCE_NUM" instance-num
"COOK_INSTANCE_UUID" task-id
"COOK_JOB_UUID" (-> job-ent :job/uuid str))
group-uuid (assoc "COOK_JOB_GROUP_UUID" (str group-uuid))
Expand All @@ -154,9 +156,7 @@
data (.getBytes
(if cook-executor?
(json/write-str {"command" (:job/command job-ent)})
(pr-str
;;TODO this data is a race-condition
{:instance (str (count (:job/instance job-ent)))}))
(pr-str {:instance instance-num}))
"UTF-8")]
(when (and (= :executor/cook (:job/executor job-ent))
(not= executor-key :cook-executor))
Expand Down
27 changes: 18 additions & 9 deletions scheduler/test/cook/test/mesos/task.clj
Expand Up @@ -353,7 +353,8 @@
db (d/db conn)
job-ent (d/entity db job)
framework-id {:value "framework-id"}
environment {"COOK_INSTANCE_UUID" task-id
environment {"COOK_INSTANCE_NUM" "0"
"COOK_INSTANCE_UUID" task-id
"COOK_JOB_CPUS" "1.0"
"COOK_JOB_MEM_MB" "10.0"
"COOK_JOB_UUID" (-> job-ent :job/uuid str)}]
Expand Down Expand Up @@ -398,7 +399,8 @@
job-ent (d/entity db job)
group-ent (d/entity db group-ent-id)
framework-id {:value "framework-id"}
environment {"COOK_INSTANCE_UUID" task-id
environment {"COOK_INSTANCE_NUM" "0"
"COOK_INSTANCE_UUID" task-id
"COOK_JOB_CPUS" "1.0"
"COOK_JOB_GROUP_UUID" (-> group-ent :group/uuid str)
"COOK_JOB_MEM_MB" "10.0"
Expand All @@ -424,7 +426,8 @@
db (d/db conn)
job-ent (d/entity db job)
framework-id {:value "framework-id"}
environment {"COOK_INSTANCE_UUID" task-id
environment {"COOK_INSTANCE_NUM" "0"
"COOK_INSTANCE_UUID" task-id
"COOK_JOB_CPUS" "1.0"
"COOK_JOB_MEM_MB" "10.0"
"COOK_JOB_UUID" (-> job-ent :job/uuid str)}
Expand All @@ -449,7 +452,8 @@
db (d/db conn)
job-ent (d/entity db job)
framework-id {:value "framework-id"}
environment {"COOK_INSTANCE_UUID" task-id
environment {"COOK_INSTANCE_NUM" "0"
"COOK_INSTANCE_UUID" task-id
"COOK_JOB_CPUS" "1.0"
"COOK_JOB_MEM_MB" "10.0"
"COOK_JOB_UUID" (-> job-ent :job/uuid str)
Expand Down Expand Up @@ -484,7 +488,8 @@
group-ent (d/entity db group-ent-id)
job-ent (d/entity db job)
framework-id {:value "framework-id"}
environment {"COOK_INSTANCE_UUID" task-id
environment {"COOK_INSTANCE_NUM" "0"
"COOK_INSTANCE_UUID" task-id
"COOK_JOB_CPUS" "1.0"
"COOK_JOB_GROUP_UUID" (-> group-ent :group/uuid str)
"COOK_JOB_GPUS" "1000.0"
Expand Down Expand Up @@ -519,7 +524,8 @@
db (d/db conn)
job-ent (d/entity db job)
framework-id {:value "framework-id"}
environment {"COOK_INSTANCE_UUID" task-id
environment {"COOK_INSTANCE_NUM" "0"
"COOK_INSTANCE_UUID" task-id
"COOK_JOB_CPUS" "1.0"
"COOK_JOB_MEM_MB" "10.0"
"COOK_JOB_UUID" (-> job-ent :job/uuid str)}
Expand Down Expand Up @@ -555,7 +561,8 @@
db (d/db conn)
job-ent (d/entity db job)
framework-id {:value "framework-id"}
environment {"COOK_INSTANCE_UUID" task-id
environment {"COOK_INSTANCE_NUM" "0"
"COOK_INSTANCE_UUID" task-id
"COOK_JOB_CPUS" "1.0"
"COOK_JOB_MEM_MB" "10.0"
"COOK_JOB_UUID" (-> job-ent :job/uuid str)}
Expand Down Expand Up @@ -594,7 +601,8 @@
db (d/db conn)
job-ent (d/entity db job)
framework-id {:value "framework-id"}
environment {"COOK_INSTANCE_UUID" task-id
environment {"COOK_INSTANCE_NUM" "0"
"COOK_INSTANCE_UUID" task-id
"COOK_JOB_CPUS" "1.0"
"COOK_JOB_MEM_MB" "200.0"
"COOK_JOB_UUID" (-> job-ent :job/uuid str)}
Expand Down Expand Up @@ -634,7 +642,8 @@
db (d/db conn)
job-ent (d/entity db job)
framework-id {:value "framework-id"}
environment {"COOK_INSTANCE_UUID" task-id
environment {"COOK_INSTANCE_NUM" "0"
"COOK_INSTANCE_UUID" task-id
"COOK_JOB_CPUS" "1.0"
"COOK_JOB_MEM_MB" "200.0"
"COOK_JOB_UUID" (-> job-ent :job/uuid str)
Expand Down