123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243 |
- /**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- #include "../task-controller.h"
- #define HADOOP_CONF_DIR "/tmp"
- int write_config_file(char *file_name) {
- FILE *file;
- char const *str =
- "mapreduce.cluster.local.dir=/tmp/testing1,/tmp/testing2,/tmp/testing3,/tmp/testing4\n";
- file = fopen(file_name, "w");
- if (file == NULL) {
- printf("Failed to open %s.\n", file_name);
- return EXIT_FAILURE;
- }
- fwrite(str, 1, strlen(str), file);
- fclose(file);
- return 0;
- }
- void test_check_variable_against_config() {
- // A temporary configuration directory
- char *conf_dir_templ = "/tmp/test-task-controller-conf-dir-XXXXXX";
- // To accomodate "/conf/taskcontroller.cfg"
- char template[strlen(conf_dir_templ) + strlen("/conf/taskcontroller.cfg")];
- strcpy(template, conf_dir_templ);
- char *temp_dir = mkdtemp(template);
- if (temp_dir == NULL) {
- printf("Couldn't create a temporary dir for conf.\n");
- goto cleanup;
- }
- // Set the configuration directory
- hadoop_conf_dir = strdup(temp_dir);
- // create the configuration directory
- strcat(template, "/conf");
- char *conf_dir = strdup(template);
- mkdir(conf_dir, S_IRWXU);
- // create the configuration file
- strcat(template, "/taskcontroller.cfg");
- if (write_config_file(template) != 0) {
- printf("Couldn't write the configuration file.\n");
- goto cleanup;
- }
- // Test obtaining a value for a key from the config
- char *config_values[4] = { "/tmp/testing1", "/tmp/testing2",
- "/tmp/testing3", "/tmp/testing4" };
- char *value = (char *) get_value("mapreduce.cluster.local.dir");
- if (strcmp(value, "/tmp/testing1,/tmp/testing2,/tmp/testing3,/tmp/testing4")
- != 0) {
- printf("Obtaining a value for a key from the config failed.\n");
- goto cleanup;
- }
- // Test the parsing of a multiple valued key from the config
- char **values = (char **)get_values("mapreduce.cluster.local.dir");
- char **values_ptr = values;
- int i = 0;
- while (*values_ptr != NULL) {
- printf(" value : %s\n", *values_ptr);
- if (strcmp(*values_ptr, config_values[i++]) != 0) {
- printf("Configured values are not read out properly. Test failed!");
- goto cleanup;;
- }
- values_ptr++;
- }
- if (check_variable_against_config("mapreduce.cluster.local.dir", "/tmp/testing5") == 0) {
- printf("Configuration should not contain /tmp/testing5! \n");
- goto cleanup;
- }
- if (check_variable_against_config("mapreduce.cluster.local.dir", "/tmp/testing4") != 0) {
- printf("Configuration should contain /tmp/testing4! \n");
- goto cleanup;
- }
- cleanup: if (value != NULL) {
- free(value);
- }
- if (values != NULL) {
- free(values);
- }
- if (hadoop_conf_dir != NULL) {
- free(hadoop_conf_dir);
- }
- unlink(template);
- rmdir(conf_dir);
- rmdir(hadoop_conf_dir);
- }
- void test_get_user_directory() {
- char *user_dir = (char *) get_user_directory("/tmp", "user");
- printf("user_dir obtained is %s\n", user_dir);
- int ret = 0;
- if (strcmp(user_dir, "/tmp/taskTracker/user") != 0) {
- ret = -1;
- }
- free(user_dir);
- assert(ret == 0);
- }
- void test_get_job_directory() {
- char *job_dir = (char *) get_job_directory("/tmp", "user",
- "job_200906101234_0001");
- printf("job_dir obtained is %s\n", job_dir);
- int ret = 0;
- if (strcmp(job_dir, "/tmp/taskTracker/user/jobcache/job_200906101234_0001")
- != 0) {
- ret = -1;
- }
- free(job_dir);
- assert(ret == 0);
- }
- void test_get_attempt_directory() {
- char *job_dir = (char *) get_job_directory("/tmp", "user",
- "job_200906101234_0001");
- printf("job_dir obtained is %s\n", job_dir);
- char *attempt_dir = (char *) get_attempt_directory(job_dir,
- "attempt_200906101234_0001_m_000000_0");
- printf("attempt_dir obtained is %s\n", attempt_dir);
- int ret = 0;
- if (strcmp(
- attempt_dir,
- "/tmp/taskTracker/user/jobcache/job_200906101234_0001/attempt_200906101234_0001_m_000000_0")
- != 0) {
- ret = -1;
- }
- free(job_dir);
- free(attempt_dir);
- assert(ret == 0);
- }
- void test_get_task_launcher_file() {
- char *job_dir = (char *) get_job_directory("/tmp", "user",
- "job_200906101234_0001");
- char *task_file = (char *) get_task_launcher_file(job_dir,
- "attempt_200906112028_0001_m_000000_0");
- printf("task_file obtained is %s\n", task_file);
- int ret = 0;
- if (strcmp(
- task_file,
- "/tmp/taskTracker/user/jobcache/job_200906101234_0001/attempt_200906112028_0001_m_000000_0/taskjvm.sh")
- != 0) {
- ret = -1;
- }
- free(task_file);
- assert(ret == 0);
- }
- void test_get_job_log_dir() {
- char *logdir = (char *) get_job_log_dir("/tmp/testing",
- "job_200906101234_0001");
- printf("logdir obtained is %s\n", logdir);
- int ret = 0;
- if (strcmp(logdir, "/tmp/testing/userlogs/job_200906101234_0001") != 0) {
- ret = -1;
- }
- free(logdir);
- assert(ret == 0);
- }
- void test_get_job_acls_file() {
- char *job_acls_file = (char *) get_job_acls_file(
- "/tmp/testing/userlogs/job_200906101234_0001");
- printf("job acls file obtained is %s\n", job_acls_file);
- int ret = 0;
- if (strcmp(job_acls_file,
- "/tmp/testing/userlogs/job_200906101234_0001/job-acls.xml") != 0) {
- ret = -1;
- }
- free(job_acls_file);
- assert(ret == 0);
- }
- void test_get_task_log_dir() {
- char *logdir = (char *) get_task_log_dir("/tmp/testing",
- "job_200906101234_0001", "attempt_200906112028_0001_m_000000_0");
- printf("logdir obtained is %s\n", logdir);
- int ret = 0;
- if (strcmp(logdir,
- "/tmp/testing/userlogs/job_200906101234_0001/attempt_200906112028_0001_m_000000_0")
- != 0) {
- ret = -1;
- }
- free(logdir);
- assert(ret == 0);
- }
- int main(int argc, char **argv) {
- printf("\nStarting tests\n");
- LOGFILE = stdout;
- printf("\nTesting check_variable_against_config()\n");
- test_check_variable_against_config();
- printf("\nTesting get_user_directory()\n");
- test_get_user_directory();
- printf("\nTesting get_job_directory()\n");
- test_get_job_directory();
- printf("\nTesting get_attempt_directory()\n");
- test_get_attempt_directory();
- printf("\nTesting get_task_launcher_file()\n");
- test_get_task_launcher_file();
- printf("\nTesting get_job_log_dir()\n");
- test_get_job_log_dir();
- printf("\nTesting get_job_acls_file()\n");
- test_get_job_acls_file();
- printf("\nTesting get_task_log_dir()\n");
- test_get_task_log_dir();
- printf("\nFinished tests\n");
- return 0;
- }
|