|
20 | 20 |
|
21 | 21 | LOGGER = logging.getLogger(__name__)
|
22 | 22 | THIS_DIR = os.path.dirname(os.path.abspath(__file__))
|
| 23 | +SPARK_PI_FW_NAME = "Spark Pi" |
| 24 | +CNI_TEST_NUM_EXECUTORS = 1 |
23 | 25 |
|
24 | 26 |
|
25 | 27 | def setup_module(module):
|
@@ -113,6 +115,49 @@ def test_cni():
|
113 | 115 | "--class", "org.apache.spark.examples.SparkPi"])
|
114 | 116 |
|
115 | 117 |
|
| 118 | +@pytest.mark.skip("Enable when SPARK-21694 is merged and released in DC/OS Spark") |
| 119 | +@pytest.mark.sanity |
| 120 | +def test_cni_labels(): |
| 121 | + SPARK_EXAMPLES="http://downloads.mesosphere.com/spark/assets/spark-examples_2.11-2.0.1.jar" |
| 122 | + driver_task_id = utils.submit_job(SPARK_EXAMPLES, |
| 123 | + "3000", # Long enough to examine the Driver's & Executor's task infos |
| 124 | + ["--conf", "spark.mesos.network.name=dcos", |
| 125 | + "--conf", "spark.mesos.network.labels=key1:val1,key2:val2", |
| 126 | + "--conf", "spark.cores.max={}".format(CNI_TEST_NUM_EXECUTORS), |
| 127 | + "--class", "org.apache.spark.examples.SparkPi"]) |
| 128 | + |
| 129 | + # Wait until executors are running |
| 130 | + utils.wait_for_executors_running(SPARK_PI_FW_NAME, CNI_TEST_NUM_EXECUTORS) |
| 131 | + |
| 132 | + # Check for network name / labels in Driver task info |
| 133 | + driver_task = shakedown.get_task(driver_task_id, completed=False) |
| 134 | + _check_task_network_info(driver_task) |
| 135 | + |
| 136 | + # Check for network name / labels in Executor task info |
| 137 | + executor_task = shakedown.get_service_tasks(SPARK_PI_FW_NAME)[0] |
| 138 | + _check_task_network_info(executor_task) |
| 139 | + |
| 140 | + # Check job output |
| 141 | + utils.check_job_output(driver_task_id, "Pi is roughly 3") |
| 142 | + |
| 143 | + |
| 144 | +def _check_task_network_info(task): |
| 145 | + # Expected: "network_infos":[{ |
| 146 | + # "name":"dcos", |
| 147 | + # "labels":{ |
| 148 | + # "labels":[ |
| 149 | + # {"key":"key1","value":"val1"}, |
| 150 | + # {"key":"key2","value":"val2"}]}}] |
| 151 | + network_info = task['container']['network_infos'][0] |
| 152 | + assert network_info['name'] == "dcos" |
| 153 | + labels = network_info['labels']['labels'] |
| 154 | + assert len(labels) == 2 |
| 155 | + assert labels[0]['key'] == "key1" |
| 156 | + assert labels[0]['value'] == "val1" |
| 157 | + assert labels[1]['key'] == "key2" |
| 158 | + assert labels[1]['value'] == "val2" |
| 159 | + |
| 160 | + |
116 | 161 | @pytest.mark.sanity
|
117 | 162 | def test_s3():
|
118 | 163 | linecount_path = os.path.join(THIS_DIR, 'resources', 'linecount.txt')
|
|
0 commit comments